5 lines
109 KiB
JavaScript
Executable file
5 lines
109 KiB
JavaScript
Executable file
// Version 1.41.14 three-forcegraph - https://github.com/vasturiano/three-forcegraph
|
|
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("three")):"function"==typeof define&&define.amd?define(["three"],n):(t="undefined"!=typeof globalThis?globalThis:t||self).ThreeForceGraph=n(t.THREE)}(this,(function(t){"use strict";function n(t,n,r){return n=f(n),function(t,n){if(n&&("object"==typeof n||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return h(t)}(t,e()?Reflect.construct(n,r||[],f(t).constructor):n.apply(t,r))}function e(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(e=function(){return!!t})()}function r(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,r)}return e}function o(t){for(var n=1;n<arguments.length;n++){var e=null!=arguments[n]?arguments[n]:{};n%2?r(Object(e),!0).forEach((function(n){s(t,n,e[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):r(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}))}return t}function i(t){var n=function(t,n){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(t)}(t,"string");return"symbol"==typeof n?n:String(n)}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function u(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,i(r.key),r)}}function s(t,n,e){return(n=i(n))in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}function f(t){return f=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},f(t)}function l(t,n){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,n){return t.__proto__=n,t},l(t,n)}function c(t,n){if(null==t)return{};var e,r,o=function(t,n){if(null==t)return{};var e,r,o={},i=Object.keys(t);for(r=0;r<i.length;r++)e=i[r],n.indexOf(e)>=0||(o[e]=t[e]);return o}(t,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)e=i[r],n.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}function h(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function d(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,n){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var r,o,i,a,u=[],s=!0,f=!1;try{if(i=(e=e.call(t)).next,0===n){if(Object(e)!==e)return;s=!1}else for(;!(s=(r=i.call(e)).done)&&(u.push(r.value),u.length!==n);s=!0);}catch(t){f=!0,o=t}finally{try{if(!s&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}(t,n)||g(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(t){return function(t){if(Array.isArray(t))return v(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||g(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(t,n){if(t){if("string"==typeof t)return v(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?v(t,n):void 0}}function v(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e<n;e++)r[e]=t[e];return r}function y(t,n,e){var r,o=1;function i(){var i,a,u=r.length,s=0,f=0,l=0;for(i=0;i<u;++i)s+=(a=r[i]).x||0,f+=a.y||0,l+=a.z||0;for(s=(s/u-t)*o,f=(f/u-n)*o,l=(l/u-e)*o,i=0;i<u;++i)a=r[i],s&&(a.x-=s),f&&(a.y-=f),l&&(a.z-=l)}return null==t&&(t=0),null==n&&(n=0),null==e&&(e=0),i.initialize=function(t){r=t},i.x=function(n){return arguments.length?(t=+n,i):t},i.y=function(t){return arguments.length?(n=+t,i):n},i.z=function(t){return arguments.length?(e=+t,i):e},i.strength=function(t){return arguments.length?(o=+t,i):o},i}function b(t,n,e){if(isNaN(n))return t;var r,o,i,a,u,s,f=t._root,l={data:e},c=t._x0,h=t._x1;if(!f)return t._root=l,t;for(;f.length;)if((a=n>=(o=(c+h)/2))?c=o:h=o,r=f,!(f=f[u=+a]))return r[u]=l,t;if(n===(i=+t._x.call(null,f.data)))return l.next=f,r?r[u]=l:t._root=l,t;do{r=r?r[u]=new Array(2):t._root=new Array(2),(a=n>=(o=(c+h)/2))?c=o:h=o}while((u=+a)==(s=+(i>=o)));return r[s]=f,r[u]=l,t}function m(t,n,e){this.node=t,this.x0=n,this.x1=e}function _(t){return t[0]}function x(t,n){var e=new w(null==n?_:n,NaN,NaN);return null==t?e:e.addAll(t)}function w(t,n,e){this._x=t,this._x0=n,this._x1=e,this._root=void 0}function k(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var O=x.prototype=w.prototype;function M(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var o,i,a,u,s,f,l,c,h,d=t._root,p={data:r},g=t._x0,v=t._y0,y=t._x1,b=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((f=n>=(i=(g+y)/2))?g=i:y=i,(l=e>=(a=(v+b)/2))?v=a:b=a,o=d,!(d=d[c=l<<1|f]))return o[c]=p,t;if(u=+t._x.call(null,d.data),s=+t._y.call(null,d.data),n===u&&e===s)return p.next=d,o?o[c]=p:t._root=p,t;do{o=o?o[c]=new Array(4):t._root=new Array(4),(f=n>=(i=(g+y)/2))?g=i:y=i,(l=e>=(a=(v+b)/2))?v=a:b=a}while((c=l<<1|f)==(h=(s>=a)<<1|u>=i));return o[h]=d,o[c]=p,t}function j(t,n,e,r,o){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=o}function A(t){return t[0]}function S(t){return t[1]}function P(t,n,e){var r=new N(null==n?A:n,null==e?S:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function N(t,n,e,r,o,i){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=o,this._y1=i,this._root=void 0}function E(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}O.copy=function(){var t,n,e=new w(this._x,this._x0,this._x1),r=this._root;if(!r)return e;if(!r.length)return e._root=k(r),e;for(t=[{source:r,target:e._root=new Array(2)}];r=t.pop();)for(var o=0;o<2;++o)(n=r.source[o])&&(n.length?t.push({source:n,target:r.target[o]=new Array(2)}):r.target[o]=k(n));return e},O.add=function(t){const n=+this._x.call(null,t);return b(this.cover(n),n,t)},O.addAll=function(t){Array.isArray(t)||(t=Array.from(t));const n=t.length,e=new Float64Array(n);let r=1/0,o=-1/0;for(let i,a=0;a<n;++a)isNaN(i=+this._x.call(null,t[a]))||(e[a]=i,i<r&&(r=i),i>o&&(o=i));if(r>o)return this;this.cover(r).cover(o);for(let r=0;r<n;++r)b(this,e[r],t[r]);return this},O.cover=function(t){if(isNaN(t=+t))return this;var n=this._x0,e=this._x1;if(isNaN(n))e=(n=Math.floor(t))+1;else{for(var r,o,i=e-n||1,a=this._root;n>t||t>=e;)switch(o=+(t<n),(r=new Array(2))[o]=a,a=r,i*=2,o){case 0:e=n+i;break;case 1:n=e-i}this._root&&this._root.length&&(this._root=a)}return this._x0=n,this._x1=e,this},O.data=function(){var t=[];return this.visit((function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)})),t},O.extent=function(t){return arguments.length?this.cover(+t[0][0]).cover(+t[1][0]):isNaN(this._x0)?void 0:[[this._x0],[this._x1]]},O.find=function(t,n){var e,r,o,i,a,u=this._x0,s=this._x1,f=[],l=this._root;for(l&&f.push(new m(l,u,s)),null==n?n=1/0:(u=t-n,s=t+n);i=f.pop();)if(!(!(l=i.node)||(r=i.x0)>s||(o=i.x1)<u))if(l.length){var c=(r+o)/2;f.push(new m(l[1],c,o),new m(l[0],r,c)),(a=+(t>=c))&&(i=f[f.length-1],f[f.length-1]=f[f.length-1-a],f[f.length-1-a]=i)}else{var h=Math.abs(t-+this._x.call(null,l.data));h<n&&(n=h,u=t-h,s=t+h,e=l.data)}return e},O.remove=function(t){if(isNaN(i=+this._x.call(null,t)))return this;var n,e,r,o,i,a,u,s,f,l=this._root,c=this._x0,h=this._x1;if(!l)return this;if(l.length)for(;;){if((u=i>=(a=(c+h)/2))?c=a:h=a,n=l,!(l=l[s=+u]))return this;if(!l.length)break;n[s+1&1]&&(e=n,f=s)}for(;l.data!==t;)if(r=l,!(l=l.next))return this;return(o=l.next)&&delete l.next,r?(o?r.next=o:delete r.next,this):n?(o?n[s]=o:delete n[s],(l=n[0]||n[1])&&l===(n[1]||n[0])&&!l.length&&(e?e[f]=l:this._root=l),this):(this._root=o,this)},O.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},O.root=function(){return this._root},O.size=function(){var t=0;return this.visit((function(n){if(!n.length)do{++t}while(n=n.next)})),t},O.visit=function(t){var n,e,r,o,i=[],a=this._root;for(a&&i.push(new m(a,this._x0,this._x1));n=i.pop();)if(!t(a=n.node,r=n.x0,o=n.x1)&&a.length){var u=(r+o)/2;(e=a[1])&&i.push(new m(e,u,o)),(e=a[0])&&i.push(new m(e,r,u))}return this},O.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new m(this._root,this._x0,this._x1));n=e.pop();){var o=n.node;if(o.length){var i,a=n.x0,u=n.x1,s=(a+u)/2;(i=o[0])&&e.push(new m(i,a,s)),(i=o[1])&&e.push(new m(i,s,u))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.x1);return this},O.x=function(t){return arguments.length?(this._x=t,this):this._x};var C=P.prototype=N.prototype;function B(t,n,e,r,o){if(isNaN(n)||isNaN(e)||isNaN(r))return t;var i,a,u,s,f,l,c,h,d,p,g,v,y=t._root,b={data:o},m=t._x0,_=t._y0,x=t._z0,w=t._x1,k=t._y1,O=t._z1;if(!y)return t._root=b,t;for(;y.length;)if((h=n>=(a=(m+w)/2))?m=a:w=a,(d=e>=(u=(_+k)/2))?_=u:k=u,(p=r>=(s=(x+O)/2))?x=s:O=s,i=y,!(y=y[g=p<<2|d<<1|h]))return i[g]=b,t;if(f=+t._x.call(null,y.data),l=+t._y.call(null,y.data),c=+t._z.call(null,y.data),n===f&&e===l&&r===c)return b.next=y,i?i[g]=b:t._root=b,t;do{i=i?i[g]=new Array(8):t._root=new Array(8),(h=n>=(a=(m+w)/2))?m=a:w=a,(d=e>=(u=(_+k)/2))?_=u:k=u,(p=r>=(s=(x+O)/2))?x=s:O=s}while((g=p<<2|d<<1|h)==(v=(c>=s)<<2|(l>=u)<<1|f>=a));return i[v]=y,i[g]=b,t}function z(t,n,e,r,o,i,a){this.node=t,this.x0=n,this.y0=e,this.z0=r,this.x1=o,this.y1=i,this.z1=a}function T(t){return t[0]}function $(t){return t[1]}function I(t){return t[2]}function D(t,n,e,r){var o=new F(null==n?T:n,null==e?$:e,null==r?I:r,NaN,NaN,NaN,NaN,NaN,NaN);return null==t?o:o.addAll(t)}function F(t,n,e,r,o,i,a,u,s){this._x=t,this._y=n,this._z=e,this._x0=r,this._y0=o,this._z0=i,this._x1=a,this._y1=u,this._z1=s,this._root=void 0}function L(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}C.copy=function(){var t,n,e=new N(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=E(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var o=0;o<4;++o)(n=r.source[o])&&(n.length?t.push({source:n,target:r.target[o]=new Array(4)}):r.target[o]=E(n));return e},C.add=function(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return M(this.cover(n,e),n,e,t)},C.addAll=function(t){var n,e,r,o,i=t.length,a=new Array(i),u=new Array(i),s=1/0,f=1/0,l=-1/0,c=-1/0;for(e=0;e<i;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(o=+this._y.call(null,n))||(a[e]=r,u[e]=o,r<s&&(s=r),r>l&&(l=r),o<f&&(f=o),o>c&&(c=o));if(s>l||f>c)return this;for(this.cover(s,f).cover(l,c),e=0;e<i;++e)M(this,a[e],u[e],t[e]);return this},C.cover=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,o=this._x1,i=this._y1;if(isNaN(e))o=(e=Math.floor(t))+1,i=(r=Math.floor(n))+1;else{for(var a,u,s=o-e||1,f=this._root;e>t||t>=o||r>n||n>=i;)switch(u=(n<r)<<1|t<e,(a=new Array(4))[u]=f,f=a,s*=2,u){case 0:o=e+s,i=r+s;break;case 1:e=o-s,i=r+s;break;case 2:o=e+s,r=i-s;break;case 3:e=o-s,r=i-s}this._root&&this._root.length&&(this._root=f)}return this._x0=e,this._y0=r,this._x1=o,this._y1=i,this},C.data=function(){var t=[];return this.visit((function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)})),t},C.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},C.find=function(t,n,e){var r,o,i,a,u,s,f,l=this._x0,c=this._y0,h=this._x1,d=this._y1,p=[],g=this._root;for(g&&p.push(new j(g,l,c,h,d)),null==e?e=1/0:(l=t-e,c=n-e,h=t+e,d=n+e,e*=e);s=p.pop();)if(!(!(g=s.node)||(o=s.x0)>h||(i=s.y0)>d||(a=s.x1)<l||(u=s.y1)<c))if(g.length){var v=(o+a)/2,y=(i+u)/2;p.push(new j(g[3],v,y,a,u),new j(g[2],o,y,v,u),new j(g[1],v,i,a,y),new j(g[0],o,i,v,y)),(f=(n>=y)<<1|t>=v)&&(s=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=s)}else{var b=t-+this._x.call(null,g.data),m=n-+this._y.call(null,g.data),_=b*b+m*m;if(_<e){var x=Math.sqrt(e=_);l=t-x,c=n-x,h=t+x,d=n+x,r=g.data}}return r},C.remove=function(t){if(isNaN(i=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var n,e,r,o,i,a,u,s,f,l,c,h,d=this._root,p=this._x0,g=this._y0,v=this._x1,y=this._y1;if(!d)return this;if(d.length)for(;;){if((f=i>=(u=(p+v)/2))?p=u:v=u,(l=a>=(s=(g+y)/2))?g=s:y=s,n=d,!(d=d[c=l<<1|f]))return this;if(!d.length)break;(n[c+1&3]||n[c+2&3]||n[c+3&3])&&(e=n,h=c)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(o=d.next)&&delete d.next,r?(o?r.next=o:delete r.next,this):n?(o?n[c]=o:delete n[c],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=o,this)},C.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},C.root=function(){return this._root},C.size=function(){var t=0;return this.visit((function(n){if(!n.length)do{++t}while(n=n.next)})),t},C.visit=function(t){var n,e,r,o,i,a,u=[],s=this._root;for(s&&u.push(new j(s,this._x0,this._y0,this._x1,this._y1));n=u.pop();)if(!t(s=n.node,r=n.x0,o=n.y0,i=n.x1,a=n.y1)&&s.length){var f=(r+i)/2,l=(o+a)/2;(e=s[3])&&u.push(new j(e,f,l,i,a)),(e=s[2])&&u.push(new j(e,r,l,f,a)),(e=s[1])&&u.push(new j(e,f,o,i,l)),(e=s[0])&&u.push(new j(e,r,o,f,l))}return this},C.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new j(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var o=n.node;if(o.length){var i,a=n.x0,u=n.y0,s=n.x1,f=n.y1,l=(a+s)/2,c=(u+f)/2;(i=o[0])&&e.push(new j(i,a,u,l,c)),(i=o[1])&&e.push(new j(i,l,u,s,c)),(i=o[2])&&e.push(new j(i,a,c,l,f)),(i=o[3])&&e.push(new j(i,l,c,s,f))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},C.x=function(t){return arguments.length?(this._x=t,this):this._x},C.y=function(t){return arguments.length?(this._y=t,this):this._y};var R=D.prototype=F.prototype;function q(t){return function(){return t}}function U(t){return 1e-6*(t()-.5)}function V(t){return t.index}function G(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}function H(t){var n,e,r,o,i,a,u,s=V,f=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},l=q(30),c=1;function h(r){for(var i=0,s=t.length;i<c;++i)for(var f,l,h,d,p,g=0,v=0,y=0,b=0;g<s;++g)l=(f=t[g]).source,v=(h=f.target).x+h.vx-l.x-l.vx||U(u),o>1&&(y=h.y+h.vy-l.y-l.vy||U(u)),o>2&&(b=h.z+h.vz-l.z-l.vz||U(u)),v*=d=((d=Math.sqrt(v*v+y*y+b*b))-e[g])/d*r*n[g],y*=d,b*=d,h.vx-=v*(p=a[g]),o>1&&(h.vy-=y*p),o>2&&(h.vz-=b*p),l.vx+=v*(p=1-p),o>1&&(l.vy+=y*p),o>2&&(l.vz+=b*p)}function d(){if(r){var o,u,f=r.length,l=t.length,c=new Map(r.map(((t,n)=>[s(t,n,r),t])));for(o=0,i=new Array(f);o<l;++o)(u=t[o]).index=o,"object"!=typeof u.source&&(u.source=G(c,u.source)),"object"!=typeof u.target&&(u.target=G(c,u.target)),i[u.source.index]=(i[u.source.index]||0)+1,i[u.target.index]=(i[u.target.index]||0)+1;for(o=0,a=new Array(l);o<l;++o)u=t[o],a[o]=i[u.source.index]/(i[u.source.index]+i[u.target.index]);n=new Array(l),p(),e=new Array(l),g()}}function p(){if(r)for(var e=0,o=t.length;e<o;++e)n[e]=+f(t[e],e,t)}function g(){if(r)for(var n=0,o=t.length;n<o;++n)e[n]=+l(t[n],n,t)}return null==t&&(t=[]),h.initialize=function(t,...n){r=t,u=n.find((t=>"function"==typeof t))||Math.random,o=n.find((t=>[1,2,3].includes(t)))||2,d()},h.links=function(n){return arguments.length?(t=n,d(),h):t},h.id=function(t){return arguments.length?(s=t,h):s},h.iterations=function(t){return arguments.length?(c=+t,h):c},h.strength=function(t){return arguments.length?(f="function"==typeof t?t:q(+t),p(),h):f},h.distance=function(t){return arguments.length?(l="function"==typeof t?t:q(+t),g(),h):l},h}R.copy=function(){var t,n,e=new F(this._x,this._y,this._z,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1),r=this._root;if(!r)return e;if(!r.length)return e._root=L(r),e;for(t=[{source:r,target:e._root=new Array(8)}];r=t.pop();)for(var o=0;o<8;++o)(n=r.source[o])&&(n.length?t.push({source:n,target:r.target[o]=new Array(8)}):r.target[o]=L(n));return e},R.add=function(t){const n=+this._x.call(null,t),e=+this._y.call(null,t),r=+this._z.call(null,t);return B(this.cover(n,e,r),n,e,r,t)},R.addAll=function(t){Array.isArray(t)||(t=Array.from(t));const n=t.length,e=new Float64Array(n),r=new Float64Array(n),o=new Float64Array(n);let i=1/0,a=1/0,u=1/0,s=-1/0,f=-1/0,l=-1/0;for(let c,h,d,p,g=0;g<n;++g)isNaN(h=+this._x.call(null,c=t[g]))||isNaN(d=+this._y.call(null,c))||isNaN(p=+this._z.call(null,c))||(e[g]=h,r[g]=d,o[g]=p,h<i&&(i=h),h>s&&(s=h),d<a&&(a=d),d>f&&(f=d),p<u&&(u=p),p>l&&(l=p));if(i>s||a>f||u>l)return this;this.cover(i,a,u).cover(s,f,l);for(let i=0;i<n;++i)B(this,e[i],r[i],o[i],t[i]);return this},R.cover=function(t,n,e){if(isNaN(t=+t)||isNaN(n=+n)||isNaN(e=+e))return this;var r=this._x0,o=this._y0,i=this._z0,a=this._x1,u=this._y1,s=this._z1;if(isNaN(r))a=(r=Math.floor(t))+1,u=(o=Math.floor(n))+1,s=(i=Math.floor(e))+1;else{for(var f,l,c=a-r||1,h=this._root;r>t||t>=a||o>n||n>=u||i>e||e>=s;)switch(l=(e<i)<<2|(n<o)<<1|t<r,(f=new Array(8))[l]=h,h=f,c*=2,l){case 0:a=r+c,u=o+c,s=i+c;break;case 1:r=a-c,u=o+c,s=i+c;break;case 2:a=r+c,o=u-c,s=i+c;break;case 3:r=a-c,o=u-c,s=i+c;break;case 4:a=r+c,u=o+c,i=s-c;break;case 5:r=a-c,u=o+c,i=s-c;break;case 6:a=r+c,o=u-c,i=s-c;break;case 7:r=a-c,o=u-c,i=s-c}this._root&&this._root.length&&(this._root=h)}return this._x0=r,this._y0=o,this._z0=i,this._x1=a,this._y1=u,this._z1=s,this},R.data=function(){var t=[];return this.visit((function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)})),t},R.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1],+t[0][2]).cover(+t[1][0],+t[1][1],+t[1][2]):isNaN(this._x0)?void 0:[[this._x0,this._y0,this._z0],[this._x1,this._y1,this._z1]]},R.find=function(t,n,e,r){var o,i,a,u,s,f,l,c,h,d=this._x0,p=this._y0,g=this._z0,v=this._x1,y=this._y1,b=this._z1,m=[],_=this._root;for(_&&m.push(new z(_,d,p,g,v,y,b)),null==r?r=1/0:(d=t-r,p=n-r,g=e-r,v=t+r,y=n+r,b=e+r,r*=r);c=m.pop();)if(!(!(_=c.node)||(i=c.x0)>v||(a=c.y0)>y||(u=c.z0)>b||(s=c.x1)<d||(f=c.y1)<p||(l=c.z1)<g))if(_.length){var x=(i+s)/2,w=(a+f)/2,k=(u+l)/2;m.push(new z(_[7],x,w,k,s,f,l),new z(_[6],i,w,k,x,f,l),new z(_[5],x,a,k,s,w,l),new z(_[4],i,a,k,x,w,l),new z(_[3],x,w,u,s,f,k),new z(_[2],i,w,u,x,f,k),new z(_[1],x,a,u,s,w,k),new z(_[0],i,a,u,x,w,k)),(h=(e>=k)<<2|(n>=w)<<1|t>=x)&&(c=m[m.length-1],m[m.length-1]=m[m.length-1-h],m[m.length-1-h]=c)}else{var O=t-+this._x.call(null,_.data),M=n-+this._y.call(null,_.data),j=e-+this._z.call(null,_.data),A=O*O+M*M+j*j;if(A<r){var S=Math.sqrt(r=A);d=t-S,p=n-S,g=e-S,v=t+S,y=n+S,b=e+S,o=_.data}}return o},R.remove=function(t){if(isNaN(i=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t))||isNaN(u=+this._z.call(null,t)))return this;var n,e,r,o,i,a,u,s,f,l,c,h,d,p,g,v=this._root,y=this._x0,b=this._y0,m=this._z0,_=this._x1,x=this._y1,w=this._z1;if(!v)return this;if(v.length)for(;;){if((c=i>=(s=(y+_)/2))?y=s:_=s,(h=a>=(f=(b+x)/2))?b=f:x=f,(d=u>=(l=(m+w)/2))?m=l:w=l,n=v,!(v=v[p=d<<2|h<<1|c]))return this;if(!v.length)break;(n[p+1&7]||n[p+2&7]||n[p+3&7]||n[p+4&7]||n[p+5&7]||n[p+6&7]||n[p+7&7])&&(e=n,g=p)}for(;v.data!==t;)if(r=v,!(v=v.next))return this;return(o=v.next)&&delete v.next,r?(o?r.next=o:delete r.next,this):n?(o?n[p]=o:delete n[p],(v=n[0]||n[1]||n[2]||n[3]||n[4]||n[5]||n[6]||n[7])&&v===(n[7]||n[6]||n[5]||n[4]||n[3]||n[2]||n[1]||n[0])&&!v.length&&(e?e[g]=v:this._root=v),this):(this._root=o,this)},R.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},R.root=function(){return this._root},R.size=function(){var t=0;return this.visit((function(n){if(!n.length)do{++t}while(n=n.next)})),t},R.visit=function(t){var n,e,r,o,i,a,u,s,f=[],l=this._root;for(l&&f.push(new z(l,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1));n=f.pop();)if(!t(l=n.node,r=n.x0,o=n.y0,i=n.z0,a=n.x1,u=n.y1,s=n.z1)&&l.length){var c=(r+a)/2,h=(o+u)/2,d=(i+s)/2;(e=l[7])&&f.push(new z(e,c,h,d,a,u,s)),(e=l[6])&&f.push(new z(e,r,h,d,c,u,s)),(e=l[5])&&f.push(new z(e,c,o,d,a,h,s)),(e=l[4])&&f.push(new z(e,r,o,d,c,h,s)),(e=l[3])&&f.push(new z(e,c,h,i,a,u,d)),(e=l[2])&&f.push(new z(e,r,h,i,c,u,d)),(e=l[1])&&f.push(new z(e,c,o,i,a,h,d)),(e=l[0])&&f.push(new z(e,r,o,i,c,h,d))}return this},R.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new z(this._root,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1));n=e.pop();){var o=n.node;if(o.length){var i,a=n.x0,u=n.y0,s=n.z0,f=n.x1,l=n.y1,c=n.z1,h=(a+f)/2,d=(u+l)/2,p=(s+c)/2;(i=o[0])&&e.push(new z(i,a,u,s,h,d,p)),(i=o[1])&&e.push(new z(i,h,u,s,f,d,p)),(i=o[2])&&e.push(new z(i,a,d,s,h,l,p)),(i=o[3])&&e.push(new z(i,h,d,s,f,l,p)),(i=o[4])&&e.push(new z(i,a,u,p,h,d,c)),(i=o[5])&&e.push(new z(i,h,u,p,f,d,c)),(i=o[6])&&e.push(new z(i,a,d,p,h,l,c)),(i=o[7])&&e.push(new z(i,h,d,p,f,l,c))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.z0,n.x1,n.y1,n.z1);return this},R.x=function(t){return arguments.length?(this._x=t,this):this._x},R.y=function(t){return arguments.length?(this._y=t,this):this._y},R.z=function(t){return arguments.length?(this._z=t,this):this._z};var W={value:()=>{}};function Q(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new X(r)}function X(t){this._=t}function J(t,n){for(var e,r=0,o=t.length;r<o;++r)if((e=t[r]).name===n)return e.value}function Y(t,n,e){for(var r=0,o=t.length;r<o;++r)if(t[r].name===n){t[r]=W,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}X.prototype=Q.prototype={constructor:X,on:function(t,n){var e,r,o=this._,i=(r=o,(t+"").trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");if(e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))),a=-1,u=i.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++a<u;)if(e=(t=i[a]).type)o[e]=Y(o[e],t.name,n);else if(null==n)for(e in o)o[e]=Y(o[e],t.name,null);return this}for(;++a<u;)if((e=(t=i[a]).type)&&(e=J(o[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new X(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,o=new Array(e),i=0;i<e;++i)o[i]=arguments[i+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(i=0,e=(r=this._[t]).length;i<e;++i)r[i].value.apply(n,o)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],o=0,i=r.length;o<i;++o)r[o].value.apply(n,e)}};var K,Z,tt=0,nt=0,et=0,rt=1e3,ot=0,it=0,at=0,ut="object"==typeof performance&&performance.now?performance:Date,st="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function ft(){return it||(st(lt),it=ut.now()+at)}function lt(){it=0}function ct(){this._call=this._time=this._next=null}function ht(t,n,e){var r=new ct;return r.restart(t,n,e),r}function dt(){it=(ot=ut.now())+at,tt=nt=0;try{!function(){ft(),++tt;for(var t,n=K;n;)(t=it-n._time)>=0&&n._call.call(void 0,t),n=n._next;--tt}()}finally{tt=0,function(){var t,n,e=K,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:K=n);Z=t,gt(r)}(),it=0}}function pt(){var t=ut.now(),n=t-ot;n>rt&&(at-=n,ot=t)}function gt(t){tt||(nt&&(nt=clearTimeout(nt)),t-it>24?(t<1/0&&(nt=setTimeout(dt,t-ut.now()-at)),et&&(et=clearInterval(et))):(et||(ot=ut.now(),et=setInterval(pt,rt)),tt=1,st(dt)))}ct.prototype=ht.prototype={constructor:ct,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?ft():+e)+(null==n?0:+n),this._next||Z===this||(Z?Z._next=this:K=this,Z=this),this._call=t,this._time=e,gt()},stop:function(){this._call&&(this._call=null,this._time=1/0,gt())}};const vt=1664525,yt=1013904223,bt=4294967296;function mt(t){return t.x}function _t(t){return t.y}function xt(t){return t.z}var wt=Math.PI*(3-Math.sqrt(5)),kt=20*Math.PI/(9+Math.sqrt(221));function Ot(t,n){n=n||2;var e,r=Math.min(3,Math.max(1,Math.round(n))),o=1,i=.001,a=1-Math.pow(i,1/300),u=0,s=.6,f=new Map,l=ht(d),c=Q("tick","end"),h=function(){let t=1;return()=>(t=(vt*t+yt)%bt)/bt}();function d(){p(),c.call("tick",e),o<i&&(l.stop(),c.call("end",e))}function p(n){var i,l,c=t.length;void 0===n&&(n=1);for(var h=0;h<n;++h)for(o+=(u-o)*a,f.forEach((function(t){t(o)})),i=0;i<c;++i)null==(l=t[i]).fx?l.x+=l.vx*=s:(l.x=l.fx,l.vx=0),r>1&&(null==l.fy?l.y+=l.vy*=s:(l.y=l.fy,l.vy=0)),r>2&&(null==l.fz?l.z+=l.vz*=s:(l.z=l.fz,l.vz=0));return e}function g(){for(var n,e=0,o=t.length;e<o;++e){if((n=t[e]).index=e,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),null!=n.fz&&(n.z=n.fz),isNaN(n.x)||r>1&&isNaN(n.y)||r>2&&isNaN(n.z)){var i=10*(r>2?Math.cbrt(.5+e):r>1?Math.sqrt(.5+e):e),a=e*wt,u=e*kt;1===r?n.x=i:2===r?(n.x=i*Math.cos(a),n.y=i*Math.sin(a)):(n.x=i*Math.sin(a)*Math.cos(u),n.y=i*Math.cos(a),n.z=i*Math.sin(a)*Math.sin(u))}(isNaN(n.vx)||r>1&&isNaN(n.vy)||r>2&&isNaN(n.vz))&&(n.vx=0,r>1&&(n.vy=0),r>2&&(n.vz=0))}}function v(n){return n.initialize&&n.initialize(t,h,r),n}return null==t&&(t=[]),g(),e={tick:p,restart:function(){return l.restart(d),e},stop:function(){return l.stop(),e},numDimensions:function(t){return arguments.length?(r=Math.min(3,Math.max(1,Math.round(t))),f.forEach(v),e):r},nodes:function(n){return arguments.length?(t=n,g(),f.forEach(v),e):t},alpha:function(t){return arguments.length?(o=+t,e):o},alphaMin:function(t){return arguments.length?(i=+t,e):i},alphaDecay:function(t){return arguments.length?(a=+t,e):+a},alphaTarget:function(t){return arguments.length?(u=+t,e):u},velocityDecay:function(t){return arguments.length?(s=1-t,e):1-s},randomSource:function(t){return arguments.length?(h=t,f.forEach(v),e):h},force:function(t,n){return arguments.length>1?(null==n?f.delete(t):f.set(t,v(n)),e):f.get(t)},find:function(){var n,e,o,i,a,u,s=Array.prototype.slice.call(arguments),f=s.shift()||0,l=(r>1?s.shift():null)||0,c=(r>2?s.shift():null)||0,h=s.shift()||1/0,d=0,p=t.length;for(h*=h,d=0;d<p;++d)(i=(n=f-(a=t[d]).x)*n+(e=l-(a.y||0))*e+(o=c-(a.z||0))*o)<h&&(u=a,h=i);return u},on:function(t,n){return arguments.length>1?(c.on(t,n),e):c.on(t)}}}function Mt(){var t,n,e,r,o,i,a=q(-30),u=1,s=1/0,f=.81;function l(r){var i,a=t.length,u=(1===n?x(t,mt):2===n?P(t,mt,_t):3===n?D(t,mt,_t,xt):null).visitAfter(h);for(o=r,i=0;i<a;++i)e=t[i],u.visit(d)}function c(){if(t){var n,e,r=t.length;for(i=new Array(r),n=0;n<r;++n)e=t[n],i[e.index]=+a(e,n,t)}}function h(t){var e,r,o,a,u,s,f=0,l=0,c=t.length;if(c){for(o=a=u=s=0;s<c;++s)(e=t[s])&&(r=Math.abs(e.value))&&(f+=e.value,l+=r,o+=r*(e.x||0),a+=r*(e.y||0),u+=r*(e.z||0));f*=Math.sqrt(4/c),t.x=o/l,n>1&&(t.y=a/l),n>2&&(t.z=u/l)}else{(e=t).x=e.data.x,n>1&&(e.y=e.data.y),n>2&&(e.z=e.data.z);do{f+=i[e.data.index]}while(e=e.next)}t.value=f}function d(t,a,l,c,h){if(!t.value)return!0;var d=[l,c,h][n-1],p=t.x-e.x,g=n>1?t.y-e.y:0,v=n>2?t.z-e.z:0,y=d-a,b=p*p+g*g+v*v;if(y*y/f<b)return b<s&&(0===p&&(b+=(p=U(r))*p),n>1&&0===g&&(b+=(g=U(r))*g),n>2&&0===v&&(b+=(v=U(r))*v),b<u&&(b=Math.sqrt(u*b)),e.vx+=p*t.value*o/b,n>1&&(e.vy+=g*t.value*o/b),n>2&&(e.vz+=v*t.value*o/b)),!0;if(!(t.length||b>=s)){(t.data!==e||t.next)&&(0===p&&(b+=(p=U(r))*p),n>1&&0===g&&(b+=(g=U(r))*g),n>2&&0===v&&(b+=(v=U(r))*v),b<u&&(b=Math.sqrt(u*b)));do{t.data!==e&&(y=i[t.data.index]*o/b,e.vx+=p*y,n>1&&(e.vy+=g*y),n>2&&(e.vz+=v*y))}while(t=t.next)}}return l.initialize=function(e,...o){t=e,r=o.find((t=>"function"==typeof t))||Math.random,n=o.find((t=>[1,2,3].includes(t)))||2,c()},l.strength=function(t){return arguments.length?(a="function"==typeof t?t:q(+t),c(),l):a},l.distanceMin=function(t){return arguments.length?(u=t*t,l):Math.sqrt(u)},l.distanceMax=function(t){return arguments.length?(s=t*t,l):Math.sqrt(s)},l.theta=function(t){return arguments.length?(f=t*t,l):Math.sqrt(f)},l}function jt(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var At=function(t){!function(t){if(!t)throw new Error("Eventify cannot use falsy object as events subject");for(var n=["on","fire","off"],e=0;e<n.length;++e)if(t.hasOwnProperty(n[e]))throw new Error("Subject cannot be eventified, since it already has property '"+n[e]+"'")}(t);var n=function(t){var n=Object.create(null);return{on:function(e,r,o){if("function"!=typeof r)throw new Error("callback is expected to be a function");var i=n[e];return i||(i=n[e]=[]),i.push({callback:r,ctx:o}),t},off:function(e,r){if(void 0===e)return n=Object.create(null),t;if(n[e])if("function"!=typeof r)delete n[e];else for(var o=n[e],i=0;i<o.length;++i)o[i].callback===r&&o.splice(i,1);return t},fire:function(e){var r,o=n[e];if(!o)return t;arguments.length>1&&(r=Array.prototype.splice.call(arguments,1));for(var i=0;i<o.length;++i){var a=o[i];a.callback.apply(a.ctx,r)}return t}}}(t);return t.on=n.on,t.off=n.off,t.fire=n.fire,t};var St=function(t){"uniqueLinkId"in(t=t||{})&&(console.warn("ngraph.graph: Starting from version 0.14 `uniqueLinkId` is deprecated.\nUse `multigraph` option instead\n","\n","Note: there is also change in default behavior: From now on each graph\nis considered to be not a multigraph by default (each edge is unique)."),t.multigraph=t.uniqueLinkId);void 0===t.multigraph&&(t.multigraph=!1);if("function"!=typeof Map)throw new Error("ngraph.graph requires `Map` to be defined. Please polyfill it before using ngraph");var n=new Map,e=new Map,r={},o=0,i=t.multigraph?function(t,n,e){var o=Bt(t,n),i=r.hasOwnProperty(o);if(i||_(t,n)){i||(r[o]=0);var a="@"+ ++r[o];o=Bt(t+a,n+a)}return new Ct(t,n,e,o)}:function(t,n,r){var o=Bt(t,n),i=e.get(o);if(i)return i.data=r,i;return new Ct(t,n,r,o)},a=[],u=x,s=x,f=x,l=x,c={version:20,addNode:p,addLink:function(t,n,r){f();var o=g(t)||p(t),a=g(n)||p(n),s=i(t,n,r),c=e.has(s.id);e.set(s.id,s),Et(o,s),t!==n&&Et(a,s);return u(s,c?"update":"add"),l(),s},removeLink:function(t,n){void 0!==n&&(t=_(t,n));return m(t)},removeNode:v,getNode:g,getNodeCount:y,getLinkCount:b,getEdgeCount:b,getLinksCount:b,getNodesCount:y,getLinks:function(t){var n=g(t);return n?n.links:null},forEachNode:O,forEachLinkedNode:function(t,e,r){var o=g(t);if(o&&o.links&&"function"==typeof e)return r?function(t,e,r){var o=t.values(),i=o.next();for(;!i.done;){var a=i.value;if(a.fromId===e&&r(n.get(a.toId),a))return!0;i=o.next()}}(o.links,t,e):function(t,e,r){var o=t.values(),i=o.next();for(;!i.done;){var a=i.value,u=a.fromId===e?a.toId:a.fromId;if(r(n.get(u),a))return!0;i=o.next()}}(o.links,t,e)},forEachLink:function(t){if("function"==typeof t)for(var n=e.values(),r=n.next();!r.done;){if(t(r.value))return!0;r=n.next()}},beginUpdate:f,endUpdate:l,clear:function(){f(),O((function(t){v(t.id)})),l()},hasLink:_,hasNode:g,getLink:_};return Pt(c),function(){var t=c.on;function n(){return c.beginUpdate=f=w,c.endUpdate=l=k,u=h,s=d,c.on=t,t.apply(c,arguments)}c.on=n}(),c;function h(t,n){a.push({link:t,changeType:n})}function d(t,n){a.push({node:t,changeType:n})}function p(t,e){if(void 0===t)throw new Error("Invalid node identifier");f();var r=g(t);return r?(r.data=e,s(r,"update")):(r=new Nt(t,e),s(r,"add")),n.set(t,r),l(),r}function g(t){return n.get(t)}function v(t){var e=g(t);if(!e)return!1;f();var r=e.links;return r&&(r.forEach(m),e.links=null),n.delete(t),s(e,"remove"),l(),!0}function y(){return n.size}function b(){return e.size}function m(t){if(!t)return!1;if(!e.get(t.id))return!1;f(),e.delete(t.id);var n=g(t.fromId),r=g(t.toId);return n&&n.links.delete(t),r&&r.links.delete(t),u(t,"remove"),l(),!0}function _(t,n){if(void 0!==t&&void 0!==n)return e.get(Bt(t,n))}function x(){}function w(){o+=1}function k(){0===(o-=1)&&a.length>0&&(c.fire("changed",a),a.length=0)}function O(t){if("function"!=typeof t)throw new Error("Function is expected to iterate over graph nodes. You passed "+t);for(var e=n.values(),r=e.next();!r.done;){if(t(r.value))return!0;r=e.next()}}},Pt=At;function Nt(t,n){this.id=t,this.links=null,this.data=n}function Et(t,n){t.links?t.links.add(n):t.links=new Set([n])}function Ct(t,n,e,r){this.fromId=t,this.toId=n,this.data=e,this.id=r}function Bt(t,n){return t.toString()+"👉 "+n.toString()}var zt=jt(St),Tt={exports:{}},$t={exports:{}},It=function(t){return 0===t?"x":1===t?"y":2===t?"z":"c"+(t+1)};const Dt=It;var Ft=function(t){return function(n,e){let r=e&&e.indent||0,o=e&&void 0!==e.join?e.join:"\n",i=Array(r+1).join(" "),a=[];for(let e=0;e<t;++e){let t=Dt(e),r=0===e?"":i;a.push(r+n.replace(/{var}/g,t))}return a.join(o)}};const Lt=Ft;function Rt(t,n){return`\n${Ut(t,n)}\n${qt(t)}\nreturn {Body: Body, Vector: Vector};\n`}function qt(t){let n=Lt(t),e=n("{var}",{join:", "});return`\nfunction Body(${e}) {\n this.isPinned = false;\n this.pos = new Vector(${e});\n this.force = new Vector();\n this.velocity = new Vector();\n this.mass = 1;\n\n this.springCount = 0;\n this.springLength = 0;\n}\n\nBody.prototype.reset = function() {\n this.force.reset();\n this.springCount = 0;\n this.springLength = 0;\n}\n\nBody.prototype.setPosition = function (${e}) {\n ${n("this.pos.{var} = {var} || 0;",{indent:2})}\n};`}function Ut(t,n){let e=Lt(t),r="";return n&&(r=`${e("\n var v{var};\nObject.defineProperty(this, '{var}', {\n set: function(v) { \n if (!Number.isFinite(v)) throw new Error('Cannot set non-numbers to {var}');\n v{var} = v; \n },\n get: function() { return v{var}; }\n});")}`),`function Vector(${e("{var}",{join:", "})}) {\n ${r}\n if (typeof arguments[0] === 'object') {\n // could be another vector\n let v = arguments[0];\n ${e('if (!Number.isFinite(v.{var})) throw new Error("Expected value is not a finite number at Vector constructor ({var})");',{indent:4})}\n ${e("this.{var} = v.{var};",{indent:4})}\n } else {\n ${e('this.{var} = typeof {var} === "number" ? {var} : 0;',{indent:4})}\n }\n }\n \n Vector.prototype.reset = function () {\n ${e("this.{var} = ",{join:""})}0;\n };`}$t.exports=function(t,n){let e=Rt(t,n),{Body:r}=new Function(e)();return r},$t.exports.generateCreateBodyFunctionBody=Rt,$t.exports.getVectorCode=Ut,$t.exports.getBodyCode=qt;var Vt=$t.exports,Gt={exports:{}};const Ht=Ft,Wt=It;function Qt(t){let n=Ht(t),e=Math.pow(2,t);return`\n${Zt()}\n${Kt(t)}\n${Xt(t)}\n${Yt(t)}\n${Jt(t)}\n\nfunction createQuadTree(options, random) {\n options = options || {};\n options.gravity = typeof options.gravity === 'number' ? options.gravity : -1;\n options.theta = typeof options.theta === 'number' ? options.theta : 0.8;\n\n var gravity = options.gravity;\n var updateQueue = [];\n var insertStack = new InsertStack();\n var theta = options.theta;\n\n var nodesCache = [];\n var currentInCache = 0;\n var root = newNode();\n\n return {\n insertBodies: insertBodies,\n\n /**\n * Gets root node if it is present\n */\n getRoot: function() {\n return root;\n },\n\n updateBodyForce: update,\n\n options: function(newOptions) {\n if (newOptions) {\n if (typeof newOptions.gravity === 'number') {\n gravity = newOptions.gravity;\n }\n if (typeof newOptions.theta === 'number') {\n theta = newOptions.theta;\n }\n\n return this;\n }\n\n return {\n gravity: gravity,\n theta: theta\n };\n }\n };\n\n function newNode() {\n // To avoid pressure on GC we reuse nodes.\n var node = nodesCache[currentInCache];\n if (node) {\n${function(t){let n=[];for(let r=0;r<e;++r)n.push(`${t}quad${r} = null;`);return n.join("\n")}(" node.")}\n node.body = null;\n node.mass = ${n("node.mass_{var} = ",{join:""})}0;\n ${n("node.min_{var} = node.max_{var} = ",{join:""})}0;\n } else {\n node = new QuadNode();\n nodesCache[currentInCache] = node;\n }\n\n ++currentInCache;\n return node;\n }\n\n function update(sourceBody) {\n var queue = updateQueue;\n var v;\n ${n("var d{var};",{indent:4})}\n var r; \n ${n("var f{var} = 0;",{indent:4})}\n var queueLength = 1;\n var shiftIdx = 0;\n var pushIdx = 1;\n\n queue[0] = root;\n\n while (queueLength) {\n var node = queue[shiftIdx];\n var body = node.body;\n\n queueLength -= 1;\n shiftIdx += 1;\n var differentBody = (body !== sourceBody);\n if (body && differentBody) {\n // If the current node is a leaf node (and it is not source body),\n // calculate the force exerted by the current node on body, and add this\n // amount to body's net force.\n ${n("d{var} = body.pos.{var} - sourceBody.pos.{var};",{indent:8})}\n r = Math.sqrt(${n("d{var} * d{var}",{join:" + "})});\n\n if (r === 0) {\n // Poor man's protection against zero distance.\n ${n("d{var} = (random.nextDouble() - 0.5) / 50;",{indent:10})}\n r = Math.sqrt(${n("d{var} * d{var}",{join:" + "})});\n }\n\n // This is standard gravitation force calculation but we divide\n // by r^3 to save two operations when normalizing force vector.\n v = gravity * body.mass * sourceBody.mass / (r * r * r);\n ${n("f{var} += v * d{var};",{indent:8})}\n } else if (differentBody) {\n // Otherwise, calculate the ratio s / r, where s is the width of the region\n // represented by the internal node, and r is the distance between the body\n // and the node's center-of-mass\n ${n("d{var} = node.mass_{var} / node.mass - sourceBody.pos.{var};",{indent:8})}\n r = Math.sqrt(${n("d{var} * d{var}",{join:" + "})});\n\n if (r === 0) {\n // Sorry about code duplication. I don't want to create many functions\n // right away. Just want to see performance first.\n ${n("d{var} = (random.nextDouble() - 0.5) / 50;",{indent:10})}\n r = Math.sqrt(${n("d{var} * d{var}",{join:" + "})});\n }\n // If s / r < θ, treat this internal node as a single body, and calculate the\n // force it exerts on sourceBody, and add this amount to sourceBody's net force.\n if ((node.max_${Wt(0)} - node.min_${Wt(0)}) / r < theta) {\n // in the if statement above we consider node's width only\n // because the region was made into square during tree creation.\n // Thus there is no difference between using width or height.\n v = gravity * node.mass * sourceBody.mass / (r * r * r);\n ${n("f{var} += v * d{var};",{indent:10})}\n } else {\n // Otherwise, run the procedure recursively on each of the current node's children.\n\n // I intentionally unfolded this loop, to save several CPU cycles.\n${function(){let t=Array(11).join(" "),n=[];for(let r=0;r<e;++r)n.push(t+`if (node.quad${r}) {`),n.push(t+` queue[pushIdx] = node.quad${r};`),n.push(t+" queueLength += 1;"),n.push(t+" pushIdx += 1;"),n.push(t+"}");return n.join("\n")}()}\n }\n }\n }\n\n ${n("sourceBody.force.{var} += f{var};",{indent:4})}\n }\n\n function insertBodies(bodies) {\n ${n("var {var}min = Number.MAX_VALUE;",{indent:4})}\n ${n("var {var}max = Number.MIN_VALUE;",{indent:4})}\n var i = bodies.length;\n\n // To reduce quad tree depth we are looking for exact bounding box of all particles.\n while (i--) {\n var pos = bodies[i].pos;\n ${n("if (pos.{var} < {var}min) {var}min = pos.{var};",{indent:6})}\n ${n("if (pos.{var} > {var}max) {var}max = pos.{var};",{indent:6})}\n }\n\n // Makes the bounds square.\n var maxSideLength = -Infinity;\n ${n("if ({var}max - {var}min > maxSideLength) maxSideLength = {var}max - {var}min ;",{indent:4})}\n\n currentInCache = 0;\n root = newNode();\n ${n("root.min_{var} = {var}min;",{indent:4})}\n ${n("root.max_{var} = {var}min + maxSideLength;",{indent:4})}\n\n i = bodies.length - 1;\n if (i >= 0) {\n root.body = bodies[i];\n }\n while (i--) {\n insert(bodies[i], root);\n }\n }\n\n function insert(newBody) {\n insertStack.reset();\n insertStack.push(root, newBody);\n\n while (!insertStack.isEmpty()) {\n var stackItem = insertStack.pop();\n var node = stackItem.node;\n var body = stackItem.body;\n\n if (!node.body) {\n // This is internal node. Update the total mass of the node and center-of-mass.\n ${n("var {var} = body.pos.{var};",{indent:8})}\n node.mass += body.mass;\n ${n("node.mass_{var} += body.mass * {var};",{indent:8})}\n\n // Recursively insert the body in the appropriate quadrant.\n // But first find the appropriate quadrant.\n var quadIdx = 0; // Assume we are in the 0's quad.\n ${n("var min_{var} = node.min_{var};",{indent:8})}\n ${n("var max_{var} = (min_{var} + node.max_{var}) / 2;",{indent:8})}\n\n${function(n){let e=[],r=Array(n+1).join(" ");for(let n=0;n<t;++n)e.push(r+`if (${Wt(n)} > max_${Wt(n)}) {`),e.push(r+` quadIdx = quadIdx + ${Math.pow(2,n)};`),e.push(r+` min_${Wt(n)} = max_${Wt(n)};`),e.push(r+` max_${Wt(n)} = node.max_${Wt(n)};`),e.push(r+"}");return e.join("\n")}(8)}\n\n var child = getChild(node, quadIdx);\n\n if (!child) {\n // The node is internal but this quadrant is not taken. Add\n // subnode to it.\n child = newNode();\n ${n("child.min_{var} = min_{var};",{indent:10})}\n ${n("child.max_{var} = max_{var};",{indent:10})}\n child.body = body;\n\n setChild(node, quadIdx, child);\n } else {\n // continue searching in this quadrant.\n insertStack.push(child, body);\n }\n } else {\n // We are trying to add to the leaf node.\n // We have to convert current leaf into internal node\n // and continue adding two nodes.\n var oldBody = node.body;\n node.body = null; // internal nodes do not cary bodies\n\n if (isSamePosition(oldBody.pos, body.pos)) {\n // Prevent infinite subdivision by bumping one node\n // anywhere in this quadrant\n var retriesCount = 3;\n do {\n var offset = random.nextDouble();\n ${n("var d{var} = (node.max_{var} - node.min_{var}) * offset;",{indent:12})}\n\n ${n("oldBody.pos.{var} = node.min_{var} + d{var};",{indent:12})}\n retriesCount -= 1;\n // Make sure we don't bump it out of the box. If we do, next iteration should fix it\n } while (retriesCount > 0 && isSamePosition(oldBody.pos, body.pos));\n\n if (retriesCount === 0 && isSamePosition(oldBody.pos, body.pos)) {\n // This is very bad, we ran out of precision.\n // if we do not return from the method we'll get into\n // infinite loop here. So we sacrifice correctness of layout, and keep the app running\n // Next layout iteration should get larger bounding box in the first step and fix this\n return;\n }\n }\n // Next iteration should subdivide node further.\n insertStack.push(node, oldBody);\n insertStack.push(node, body);\n }\n }\n }\n}\nreturn createQuadTree;\n\n`}function Xt(t){let n=Ht(t);return`\n function isSamePosition(point1, point2) {\n ${n("var d{var} = Math.abs(point1.{var} - point2.{var});",{indent:2})}\n \n return ${n("d{var} < 1e-8",{join:" && "})};\n } \n`}function Jt(t){var n=Math.pow(2,t);return`\nfunction setChild(node, idx, child) {\n ${function(){let t=[];for(let e=0;e<n;++e){let n=0===e?" ":" else ";t.push(`${n}if (idx === ${e}) node.quad${e} = child;`)}return t.join("\n")}()}\n}`}function Yt(t){return`function getChild(node, idx) {\n${function(){let n=[],e=Math.pow(2,t);for(let t=0;t<e;++t)n.push(` if (idx === ${t}) return node.quad${t};`);return n.join("\n")}()}\n return null;\n}`}function Kt(t){let n=Ht(t),e=Math.pow(2,t);return`\nfunction QuadNode() {\n // body stored inside this node. In quad tree only leaf nodes (by construction)\n // contain bodies:\n this.body = null;\n\n // Child nodes are stored in quads. Each quad is presented by number:\n // 0 | 1\n // -----\n // 2 | 3\n${function(t){let n=[];for(let r=0;r<e;++r)n.push(`${t}quad${r} = null;`);return n.join("\n")}(" this.")}\n\n // Total mass of current node\n this.mass = 0;\n\n // Center of mass coordinates\n ${n("this.mass_{var} = 0;",{indent:2})}\n\n // bounding box coordinates\n ${n("this.min_{var} = 0;",{indent:2})}\n ${n("this.max_{var} = 0;",{indent:2})}\n}\n`}function Zt(){return"\n/**\n * Our implementation of QuadTree is non-recursive to avoid GC hit\n * This data structure represent stack of elements\n * which we are trying to insert into quad tree.\n */\nfunction InsertStack () {\n this.stack = [];\n this.popIdx = 0;\n}\n\nInsertStack.prototype = {\n isEmpty: function() {\n return this.popIdx === 0;\n },\n push: function (node, body) {\n var item = this.stack[this.popIdx];\n if (!item) {\n // we are trying to avoid memory pressure: create new element\n // only when absolutely necessary\n this.stack[this.popIdx] = new InsertStackElement(node, body);\n } else {\n item.node = node;\n item.body = body;\n }\n ++this.popIdx;\n },\n pop: function () {\n if (this.popIdx > 0) {\n return this.stack[--this.popIdx];\n }\n },\n reset: function () {\n this.popIdx = 0;\n }\n};\n\nfunction InsertStackElement(node, body) {\n this.node = node; // QuadTree node\n this.body = body; // physical body which needs to be inserted to node\n}\n"}Gt.exports=function(t){let n=Qt(t);return new Function(n)()},Gt.exports.generateQuadTreeFunctionBody=Qt,Gt.exports.getInsertStackCode=Zt,Gt.exports.getQuadNodeCode=Kt,Gt.exports.isSamePosition=Xt,Gt.exports.getChildBodyCode=Yt,Gt.exports.setChildBodyCode=Jt;var tn=Gt.exports,nn={exports:{}};nn.exports=function(t){let n=rn(t);return new Function("bodies","settings","random",n)},nn.exports.generateFunctionBody=rn;const en=Ft;function rn(t){let n=en(t);return`\n var boundingBox = {\n ${n("min_{var}: 0, max_{var}: 0,",{indent:4})}\n };\n\n return {\n box: boundingBox,\n\n update: updateBoundingBox,\n\n reset: resetBoundingBox,\n\n getBestNewPosition: function (neighbors) {\n var ${n("base_{var} = 0",{join:", "})};\n\n if (neighbors.length) {\n for (var i = 0; i < neighbors.length; ++i) {\n let neighborPos = neighbors[i].pos;\n ${n("base_{var} += neighborPos.{var};",{indent:10})}\n }\n\n ${n("base_{var} /= neighbors.length;",{indent:8})}\n } else {\n ${n("base_{var} = (boundingBox.min_{var} + boundingBox.max_{var}) / 2;",{indent:8})}\n }\n\n var springLength = settings.springLength;\n return {\n ${n("{var}: base_{var} + (random.nextDouble() - 0.5) * springLength,",{indent:8})}\n };\n }\n };\n\n function updateBoundingBox() {\n var i = bodies.length;\n if (i === 0) return; // No bodies - no borders.\n\n ${n("var max_{var} = -Infinity;",{indent:4})}\n ${n("var min_{var} = Infinity;",{indent:4})}\n\n while(i--) {\n // this is O(n), it could be done faster with quadtree, if we check the root node bounds\n var bodyPos = bodies[i].pos;\n ${n("if (bodyPos.{var} < min_{var}) min_{var} = bodyPos.{var};",{indent:6})}\n ${n("if (bodyPos.{var} > max_{var}) max_{var} = bodyPos.{var};",{indent:6})}\n }\n\n ${n("boundingBox.min_{var} = min_{var};",{indent:4})}\n ${n("boundingBox.max_{var} = max_{var};",{indent:4})}\n }\n\n function resetBoundingBox() {\n ${n("boundingBox.min_{var} = boundingBox.max_{var} = 0;",{indent:4})}\n }\n`}var on=nn.exports,an={exports:{}};const un=Ft;function sn(t){return`\n if (!Number.isFinite(options.dragCoefficient)) throw new Error('dragCoefficient is not a finite number');\n\n return {\n update: function(body) {\n ${un(t)("body.force.{var} -= options.dragCoefficient * body.velocity.{var};",{indent:6})}\n }\n };\n`}an.exports=function(t){let n=sn(t);return new Function("options",n)},an.exports.generateCreateDragForceFunctionBody=sn;var fn=an.exports,ln={exports:{}};const cn=Ft;function hn(t){let n=cn(t);return`\n if (!Number.isFinite(options.springCoefficient)) throw new Error('Spring coefficient is not a number');\n if (!Number.isFinite(options.springLength)) throw new Error('Spring length is not a number');\n\n return {\n /**\n * Updates forces acting on a spring\n */\n update: function (spring) {\n var body1 = spring.from;\n var body2 = spring.to;\n var length = spring.length < 0 ? options.springLength : spring.length;\n ${n("var d{var} = body2.pos.{var} - body1.pos.{var};",{indent:6})}\n var r = Math.sqrt(${n("d{var} * d{var}",{join:" + "})});\n\n if (r === 0) {\n ${n("d{var} = (random.nextDouble() - 0.5) / 50;",{indent:8})}\n r = Math.sqrt(${n("d{var} * d{var}",{join:" + "})});\n }\n\n var d = r - length;\n var coefficient = ((spring.coefficient > 0) ? spring.coefficient : options.springCoefficient) * d / r;\n\n ${n("body1.force.{var} += coefficient * d{var}",{indent:6})};\n body1.springCount += 1;\n body1.springLength += r;\n\n ${n("body2.force.{var} -= coefficient * d{var}",{indent:6})};\n body2.springCount += 1;\n body2.springLength += r;\n }\n };\n`}ln.exports=function(t){let n=hn(t);return new Function("options","random",n)},ln.exports.generateCreateSpringForceFunctionBody=hn;var dn=ln.exports,pn={exports:{}};const gn=Ft;function vn(t){let n=gn(t);return`\n var length = bodies.length;\n if (length === 0) return 0;\n\n ${n("var d{var} = 0, t{var} = 0;",{indent:2})}\n\n for (var i = 0; i < length; ++i) {\n var body = bodies[i];\n if (body.isPinned) continue;\n\n if (adaptiveTimeStepWeight && body.springCount) {\n timeStep = (adaptiveTimeStepWeight * body.springLength/body.springCount);\n }\n\n var coeff = timeStep / body.mass;\n\n ${n("body.velocity.{var} += coeff * body.force.{var};",{indent:4})}\n ${n("var v{var} = body.velocity.{var};",{indent:4})}\n var v = Math.sqrt(${n("v{var} * v{var}",{join:" + "})});\n\n if (v > 1) {\n // We normalize it so that we move within timeStep range. \n // for the case when v <= 1 - we let velocity to fade out.\n ${n("body.velocity.{var} = v{var} / v;",{indent:6})}\n }\n\n ${n("d{var} = timeStep * body.velocity.{var};",{indent:4})}\n\n ${n("body.pos.{var} += d{var};",{indent:4})}\n\n ${n("t{var} += Math.abs(d{var});",{indent:4})}\n }\n\n return (${n("t{var} * t{var}",{join:" + "})})/length;\n`}pn.exports=function(t){let n=vn(t);return new Function("bodies","timeStep","adaptiveTimeStepWeight",n)},pn.exports.generateIntegratorFunctionBody=vn;var yn,bn,mn,_n,xn=pn.exports;var wn,kn={exports:{}};var On=function(t){var n=bn?yn:(bn=1,yn=function(t,n,e,r){this.from=t,this.to=n,this.length=e,this.coefficient=r}),e=(_n||(_n=1,mn=function t(n,e){var r;if(n||(n={}),e)for(r in e)if(e.hasOwnProperty(r)){var o=n.hasOwnProperty(r),i=typeof e[r];o&&typeof n[r]===i?"object"===i&&(n[r]=t(n[r],e[r])):n[r]=e[r]}return n}),mn),r=At;if(t){if(void 0!==t.springCoeff)throw new Error("springCoeff was renamed to springCoefficient");if(void 0!==t.dragCoeff)throw new Error("dragCoeff was renamed to dragCoefficient")}t=e(t,{springLength:10,springCoefficient:.8,gravity:-12,theta:.8,dragCoefficient:.9,timeStep:.5,adaptiveTimeStepWeight:0,dimensions:2,debug:!1});var o=En[t.dimensions];if(!o){var i=t.dimensions;o={Body:Mn(i,t.debug),createQuadTree:jn(i),createBounds:An(i),createDragForce:Sn(i),createSpringForce:Pn(i),integrate:Nn(i)},En[i]=o}var a=o.Body,u=o.createQuadTree,s=o.createBounds,f=o.createDragForce,l=o.createSpringForce,c=o.integrate,h=function(){if(wn)return kn.exports;function t(t){return new n("number"==typeof t?t:+new Date)}function n(t){this.seed=t}function e(t){return Math.sqrt(2*Math.PI/t)*Math.pow(1/Math.E*(t+1/(12*t-1/(10*t))),t)}function r(){var t=this.seed;return t=4294967295&(3042594569^(t=4251993797+(t=4294967295&(3550635116+(t=374761393+(t=4294967295&(3345072700^(t=t+2127912214+(t<<12)&4294967295)^t>>>19))+(t<<5)&4294967295)^t<<9))+(t<<3)&4294967295)^t>>>16),this.seed=t,(268435455&t)/268435456}return wn=1,kn.exports=t,kn.exports.random=t,kn.exports.randomIterator=function(n,e){var r=e||t();if("function"!=typeof r.next)throw new Error("customRandom does not match expected API: next() function is missing");return{forEach:function(t){var e,o,i;for(e=n.length-1;e>0;--e)o=r.next(e+1),i=n[o],n[o]=n[e],n[e]=i,t(i);n.length&&t(n[0])},shuffle:function(){var t,e,o;for(t=n.length-1;t>0;--t)e=r.next(t+1),o=n[e],n[e]=n[t],n[t]=o;return n}}},n.prototype.next=function(t){return Math.floor(this.nextDouble()*t)},n.prototype.nextDouble=r,n.prototype.uniform=r,n.prototype.gaussian=function(){var t,n,e;do{t=(n=2*this.nextDouble()-1)*n+(e=2*this.nextDouble()-1)*e}while(t>=1||0===t);return n*Math.sqrt(-2*Math.log(t)/t)},n.prototype.levy=function(){var t=1.5,n=Math.pow(e(2.5)*Math.sin(Math.PI*t/2)/(e(1.25)*t*Math.pow(2,.25)),1/t);return this.gaussian()*n/Math.pow(Math.abs(this.gaussian()),1/t)},kn.exports}().random(42),d=[],p=[],g=u(t,h),v=s(d,t,h),y=l(t,h),b=f(t),m=[],_=new Map,x=0;O("nbody",(function(){if(0===d.length)return;g.insertBodies(d);var t=d.length;for(;t--;){var n=d[t];n.isPinned||(n.reset(),g.updateBodyForce(n),b.update(n))}})),O("spring",(function(){var t=p.length;for(;t--;)y.update(p[t])}));var w={bodies:d,quadTree:g,springs:p,settings:t,addForce:O,removeForce:function(t){var n=m.indexOf(_.get(t));if(n<0)return;m.splice(n,1),_.delete(t)},getForces:function(){return _},step:function(){for(var n=0;n<m.length;++n)m[n](x);var e=c(d,t.timeStep,t.adaptiveTimeStepWeight);return x+=1,e},addBody:function(t){if(!t)throw new Error("Body is required");return d.push(t),t},addBodyAt:function(t){if(!t)throw new Error("Body position is required");var n=(t=>new a(t))(t);return d.push(n),n},removeBody:function(t){if(t){var n=d.indexOf(t);if(!(n<0))return d.splice(n,1),0===d.length&&v.reset(),!0}},addSpring:function(t,e,r,o){if(!t||!e)throw new Error("Cannot add null spring to force simulator");"number"!=typeof r&&(r=-1);var i=new n(t,e,r,o>=0?o:-1);return p.push(i),i},getTotalMovement:function(){return 0},removeSpring:function(t){if(t){var n=p.indexOf(t);return n>-1?(p.splice(n,1),!0):void 0}},getBestNewBodyPosition:function(t){return v.getBestNewPosition(t)},getBBox:k,getBoundingBox:k,invalidateBBox:function(){console.warn("invalidateBBox() is deprecated, bounds always recomputed on `getBBox()` call")},gravity:function(n){return void 0!==n?(t.gravity=n,g.options({gravity:n}),this):t.gravity},theta:function(n){return void 0!==n?(t.theta=n,g.options({theta:n}),this):t.theta},random:h};return function(t,n){for(var e in t)Cn(t,n,e)}(t,w),r(w),w;function k(){return v.update(),v.box}function O(t,n){if(_.has(t))throw new Error("Force "+t+" is already added");_.set(t,n),m.push(n)}},Mn=Vt,jn=tn,An=on,Sn=fn,Pn=dn,Nn=xn,En={};function Cn(t,n,e){if(t.hasOwnProperty(e)&&"function"!=typeof n[e]){var r=Number.isFinite(t[e]);n[e]=r?function(r){if(void 0!==r){if(!Number.isFinite(r))throw new Error("Value of "+e+" should be a valid number.");return t[e]=r,n}return t[e]}:function(r){return void 0!==r?(t[e]=r,n):t[e]}}}Tt.exports=function(t,n){if(!t)throw new Error("Graph structure cannot be undefined");var e=(n&&n.createSimulator||On)(n);if(Array.isArray(n))throw new Error("Physics settings is expected to be an object");var r=t.version>19?function(n){var e=t.getLinks(n);return e?1+e.size/3:1}:function(n){var e=t.getLinks(n);return e?1+e.length/3:1};n&&"function"==typeof n.nodeMass&&(r=n.nodeMass);var o=new Map,i={},a=0,u=e.settings.springTransform||zn;a=0,t.forEachNode((function(t){d(t.id),a+=1})),t.forEachLink(g),t.on("changed",h);var s=!1,f={step:function(){if(0===a)return l(!0),!0;var t=e.step();f.lastMove=t,f.fire("step");var n=t/a<=.01;return l(n),n},getNodePosition:function(t){return b(t).pos},setNodePosition:function(t){var n=b(t);n.setPosition.apply(n,Array.prototype.slice.call(arguments,1))},getLinkPosition:function(t){var n=i[t];if(n)return{from:n.from.pos,to:n.to.pos}},getGraphRect:function(){return e.getBBox()},forEachBody:c,pinNode:function(t,n){b(t.id).isPinned=!!n},isNodePinned:function(t){return b(t.id).isPinned},dispose:function(){t.off("changed",h),f.fire("disposed")},getBody:function(t){return o.get(t)},getSpring:function(n,e){var r;if(void 0===e)r="object"!=typeof n?n:n.id;else{var o=t.hasLink(n,e);if(!o)return;r=o.id}return i[r]},getForceVectorLength:function(){var t=0,n=0;return c((function(e){t+=Math.abs(e.force.x),n+=Math.abs(e.force.y)})),Math.sqrt(t*t+n*n)},simulator:e,graph:t,lastMove:0};return Bn(f),f;function l(t){var n;s!==t&&(s=t,n=t,f.fire("stable",n))}function c(t){o.forEach(t)}function h(n){for(var e=0;e<n.length;++e){var r=n[e];"add"===r.changeType?(r.node&&d(r.node.id),r.link&&g(r.link)):"remove"===r.changeType&&(r.node&&p(r.node),r.link&&v(r.link))}a=t.getNodesCount()}function d(n){var r=o.get(n);if(!r){var i=t.getNode(n);if(!i)throw new Error("initBody() was called with unknown node id");var a=i.position;if(!a){var u=function(t){var n=[];if(!t.links)return n;for(var e=Math.min(t.links.length,2),r=0;r<e;++r){var i=t.links[r],a=i.fromId!==t.id?o.get(i.fromId):o.get(i.toId);a&&a.pos&&n.push(a)}return n}(i);a=e.getBestNewBodyPosition(u)}(r=e.addBodyAt(a)).id=n,o.set(n,r),y(n),function(t){return t&&(t.isPinned||t.data&&t.data.isPinned)}(i)&&(r.isPinned=!0)}}function p(t){var n=t.id,r=o.get(n);r&&(o.delete(n),e.removeBody(r))}function g(t){y(t.fromId),y(t.toId);var n=o.get(t.fromId),r=o.get(t.toId),a=e.addSpring(n,r,t.length);u(t,a),i[t.id]=a}function v(n){var r=i[n.id];if(r){var o=t.getNode(n.fromId),a=t.getNode(n.toId);o&&y(o.id),a&&y(a.id),delete i[n.id],e.removeSpring(r)}}function y(t){var n=o.get(t);if(n.mass=r(t),Number.isNaN(n.mass))throw new Error("Node mass should be a number")}function b(t){var n=o.get(t);return n||(d(t),n=o.get(t)),n}},Tt.exports.simulator=On;var Bn=At;function zn(){}var Tn=jt(Tt.exports);function $n(t){var n=typeof t;return null!=t&&("object"==n||"function"==n)}var In="object"==typeof global&&global&&global.Object===Object&&global,Dn="object"==typeof self&&self&&self.Object===Object&&self,Fn=In||Dn||Function("return this")(),Ln=function(){return Fn.Date.now()},Rn=/\s/;var qn=/^\s+/;function Un(t){return t?t.slice(0,function(t){for(var n=t.length;n--&&Rn.test(t.charAt(n)););return n}(t)+1).replace(qn,""):t}var Vn=Fn.Symbol,Gn=Object.prototype,Hn=Gn.hasOwnProperty,Wn=Gn.toString,Qn=Vn?Vn.toStringTag:void 0;var Xn=Object.prototype.toString;var Jn="[object Null]",Yn="[object Undefined]",Kn=Vn?Vn.toStringTag:void 0;function Zn(t){return null==t?void 0===t?Yn:Jn:Kn&&Kn in Object(t)?function(t){var n=Hn.call(t,Qn),e=t[Qn];try{t[Qn]=void 0;var r=!0}catch(t){}var o=Wn.call(t);return r&&(n?t[Qn]=e:delete t[Qn]),o}(t):function(t){return Xn.call(t)}(t)}var te="[object Symbol]";var ne=NaN,ee=/^[-+]0x[0-9a-f]+$/i,re=/^0b[01]+$/i,oe=/^0o[0-7]+$/i,ie=parseInt;function ae(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return null!=t&&"object"==typeof t}(t)&&Zn(t)==te}(t))return ne;if($n(t)){var n="function"==typeof t.valueOf?t.valueOf():t;t=$n(n)?n+"":n}if("string"!=typeof t)return 0===t?t:+t;t=Un(t);var e=re.test(t);return e||oe.test(t)?ie(t.slice(2),e?2:8):ee.test(t)?ne:+t}var ue="Expected a function",se=Math.max,fe=Math.min;function le(t,n,e){var r,o,i,a,u,s,f=0,l=!1,c=!1,h=!0;if("function"!=typeof t)throw new TypeError(ue);function d(n){var e=r,i=o;return r=o=void 0,f=n,a=t.apply(i,e)}function p(t){var e=t-s;return void 0===s||e>=n||e<0||c&&t-f>=i}function g(){var t=Ln();if(p(t))return v(t);u=setTimeout(g,function(t){var e=n-(t-s);return c?fe(e,i-(t-f)):e}(t))}function v(t){return u=void 0,h&&r?d(t):(r=o=void 0,a)}function y(){var t=Ln(),e=p(t);if(r=arguments,o=this,s=t,e){if(void 0===u)return function(t){return f=t,u=setTimeout(g,n),l?d(t):a}(s);if(c)return clearTimeout(u),u=setTimeout(g,n),d(s)}return void 0===u&&(u=setTimeout(g,n)),a}return n=ae(n)||0,$n(e)&&(l=!!e.leading,i=(c="maxWait"in e)?se(ae(e.maxWait)||0,n):i,h="trailing"in e?!!e.trailing:h),y.cancel=function(){void 0!==u&&clearTimeout(u),f=0,r=s=o=u=void 0},y.flush=function(){return void 0===u?a:v(Ln())},y}function ce(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,(o=r.key,i=void 0,"symbol"==typeof(i=function(t,n){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(t)}(o,"string"))?i:String(i)),r)}var o,i}function he(t,n,e){return n&&ce(t.prototype,n),e&&ce(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function de(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,n){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var r,o,i,a,u=[],s=!0,f=!1;try{if(i=(e=e.call(t)).next,0===n){if(Object(e)!==e)return;s=!1}else for(;!(s=(r=i.call(e)).done)&&(u.push(r.value),u.length!==n);s=!0);}catch(t){f=!0,o=t}finally{try{if(!s&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}(t,n)||function(t,n){if(!t)return;if("string"==typeof t)return pe(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);"Object"===e&&t.constructor&&(e=t.constructor.name);if("Map"===e||"Set"===e)return Array.from(t);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return pe(t,n)}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pe(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e<n;e++)r[e]=t[e];return r}var ge=he((function t(n,e){var r=e.default,o=void 0===r?null:r,i=e.triggerUpdate,a=void 0===i||i,u=e.onChange,s=void 0===u?function(t,n){}:u;!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t),this.name=n,this.defaultVal=o,this.triggerUpdate=a,this.onChange=s}));var ve=function(t){return"function"==typeof t?t:"string"==typeof t?function(n){return n[t]}:function(n){return t}};class ye extends Map{constructor(t,n=me){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const[n,e]of t)this.set(n,e)}get(t){return super.get(be(this,t))}has(t){return super.has(be(this,t))}set(t,n){return super.set(function({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):(t.set(r,e),e)}(this,t),n)}delete(t){return super.delete(function({_intern:t,_key:n},e){const r=n(e);t.has(r)&&(e=t.get(r),t.delete(r));return e}(this,t))}}function be({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):e}function me(t){return null!==t&&"object"==typeof t?t.valueOf():t}function _e(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e<n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let o of t)null!=(o=n(o,++r,t))&&(e<o||void 0===e&&o>=o)&&(e=o)}return e}function xe(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e>n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let o of t)null!=(o=n(o,++r,t))&&(e>o||void 0===e&&o>=o)&&(e=o)}return e}function we(t,n){if(null==t)return{};var e,r,o=function(t,n){if(null==t)return{};var e,r,o={},i=Object.keys(t);for(r=0;r<i.length;r++)e=i[r],n.indexOf(e)>=0||(o[e]=t[e]);return o}(t,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)e=i[r],n.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}function ke(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,n){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var r,o,i,a,u=[],s=!0,f=!1;try{if(i=(e=e.call(t)).next,0===n){if(Object(e)!==e)return;s=!1}else for(;!(s=(r=i.call(e)).done)&&(u.push(r.value),u.length!==n);s=!0);}catch(t){f=!0,o=t}finally{try{if(!s&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}(t,n)||Me(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Oe(t){return function(t){if(Array.isArray(t))return je(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Me(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Me(t,n){if(t){if("string"==typeof t)return je(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?je(t,n):void 0}}function je(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e<n;e++)r[e]=t[e];return r}function Ae(t){var n=function(t,n){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(t)}(t,"string");return"symbol"==typeof n?n:String(n)}var Se=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=(n instanceof Array?n.length?n:[void 0]:[n]).map((function(t){return{keyAccessor:t,isProp:!(t instanceof Function)}})),i=t.reduce((function(t,n){var r=t,i=n;return o.forEach((function(t,n){var a,u=t.keyAccessor;if(t.isProp){var s=i,f=s[u],l=we(s,[u].map(Ae));a=f,i=l}else a=u(i,n);n+1<o.length?(r.hasOwnProperty(a)||(r[a]={}),r=r[a]):e?(r.hasOwnProperty(a)||(r[a]=[]),r[a].push(i)):r[a]=i})),t}),{});e instanceof Function&&function t(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;r===o.length?Object.keys(n).forEach((function(t){return n[t]=e(n[t])})):Object.values(n).forEach((function(n){return t(n,r+1)}))}(i);var a=i;return r&&(a=[],function t(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];e.length===o.length?a.push({keys:e,vals:n}):Object.entries(n).forEach((function(n){var r=ke(n,2),o=r[0],i=r[1];return t(i,[].concat(Oe(e),[o]))}))}(i),n instanceof Array&&0===n.length&&1===a.length&&(a[0].keys=[])),a};function Pe(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,r)}return e}function Ne(t,n,e){return(n=function(t){var n=function(t,n){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(t)}(t,"string");return"symbol"==typeof n?n:String(n)}(n))in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}function Ee(t,n){if(null==t)return{};var e,r,o=function(t,n){if(null==t)return{};var e,r,o={},i=Object.keys(t);for(r=0;r<i.length;r++)e=i[r],n.indexOf(e)>=0||(o[e]=t[e]);return o}(t,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)e=i[r],n.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}function Ce(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,n){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var r,o,i,a,u=[],s=!0,f=!1;try{if(i=(e=e.call(t)).next,0===n){if(Object(e)!==e)return;s=!1}else for(;!(s=(r=i.call(e)).done)&&(u.push(r.value),u.length!==n);s=!0);}catch(t){f=!0,o=t}finally{try{if(!s&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}(t,n)||ze(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Be(t){return function(t){if(Array.isArray(t))return Te(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||ze(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ze(t,n){if(t){if("string"==typeof t)return Te(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Te(t,n):void 0}}function Te(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e<n;e++)r[e]=t[e];return r}var $e=["createObj","updateObj","exitObj","objBindAttr","dataBindAttr"];function Ie(t,n,e){var r=e.objBindAttr,o=void 0===r?"__obj":r,i=e.dataBindAttr,a=void 0===i?"__data":i,u=e.idAccessor,s=e.purge,f=void 0!==s&&s,l=function(t){return t.hasOwnProperty(a)},c=n.filter((function(t){return!l(t)})),h=n.filter(l).map((function(t){return t[a]})),d=f?{enter:t,exit:h,update:[]}:function(t,n,e){var r={enter:[],update:[],exit:[]};if(e){var o=Se(t,e,!1),i=Se(n,e,!1),a=Object.assign({},o,i);Object.entries(a).forEach((function(t){var n=Ce(t,2),e=n[0],a=n[1],u=o.hasOwnProperty(e)?i.hasOwnProperty(e)?"update":"exit":"enter";r[u].push("update"===u?[o[e],i[e]]:a)}))}else{var u=new Set(t),s=new Set(n);new Set([].concat(Be(u),Be(s))).forEach((function(t){var n=u.has(t)?s.has(t)?"update":"exit":"enter";r[n].push("update"===n?[t,t]:t)}))}return r}(h,t,u);return d.update=d.update.map((function(t){var n=Ce(t,2),e=n[0],r=n[1];return e!==r&&(r[o]=e[o],r[o][a]=r),r})),d.exit=d.exit.concat(c.map((function(t){return Ne({},o,t)}))),d}function De(t,n,e,r,o){var i=o.createObj,a=void 0===i?function(t){return{}}:i,u=o.updateObj,s=void 0===u?function(t,n){}:u,f=o.exitObj,l=void 0===f?function(t){}:f,c=o.objBindAttr,h=void 0===c?"__obj":c,d=o.dataBindAttr,p=void 0===d?"__data":d,g=Ee(o,$e),v=Ie(t,n,function(t){for(var n=1;n<arguments.length;n++){var e=null!=arguments[n]?arguments[n]:{};n%2?Pe(Object(e),!0).forEach((function(n){Ne(t,n,e[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Pe(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}))}return t}({objBindAttr:h,dataBindAttr:p},g)),y=v.enter,b=v.update;v.exit.forEach((function(t){var n=t[h];delete t[h],l(n),r(n)}));var m=function(t){var n=[];return t.forEach((function(t){var e=a(t);e&&(e[p]=t,t[h]=e,n.push(e))})),n}(y);!function(t){t.forEach((function(t){var n=t[h];n&&(n[p]=t,s(n,t))}))}([].concat(Be(y),Be(b))),m.forEach(e)}var Fe=function t(n){n instanceof Array?n.forEach(t):(n.map&&n.map.dispose(),n.dispose())},Le=function t(n){n.geometry&&n.geometry.dispose(),n.material&&Fe(n.material),n.texture&&n.texture.dispose(),n.children&&n.children.forEach(t)},Re=function(t){for(;t.children.length;){var n=t.children[0];t.remove(n),Le(n)}},qe=["objFilter"];function Ue(t,n){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=e.objFilter,i=void 0===r?function(){return!0}:r,a=c(e,qe);return De(t,n.children.filter(i),(function(t){return n.add(t)}),(function(t){n.remove(t),Re(t)}),o({objBindAttr:"__threeObj"},a))}function Ve(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}const Ge=Symbol("implicit");var He=function(t){for(var n=t.length/6|0,e=new Array(n),r=0;r<n;)e[r]="#"+t.slice(6*r,6*++r);return e}("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928");function We(t){return We="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},We(t)}var Qe=/^\s+/,Xe=/\s+$/;function Je(t,n){if(n=n||{},(t=t||"")instanceof Je)return t;if(!(this instanceof Je))return new Je(t,n);var e=function(t){var n={r:0,g:0,b:0},e=1,r=null,o=null,i=null,a=!1,u=!1;"string"==typeof t&&(t=function(t){t=t.replace(Qe,"").replace(Xe,"").toLowerCase();var n,e=!1;if(dr[t])t=dr[t],e=!0;else if("transparent"==t)return{r:0,g:0,b:0,a:0,format:"name"};if(n=jr.rgb.exec(t))return{r:n[1],g:n[2],b:n[3]};if(n=jr.rgba.exec(t))return{r:n[1],g:n[2],b:n[3],a:n[4]};if(n=jr.hsl.exec(t))return{h:n[1],s:n[2],l:n[3]};if(n=jr.hsla.exec(t))return{h:n[1],s:n[2],l:n[3],a:n[4]};if(n=jr.hsv.exec(t))return{h:n[1],s:n[2],v:n[3]};if(n=jr.hsva.exec(t))return{h:n[1],s:n[2],v:n[3],a:n[4]};if(n=jr.hex8.exec(t))return{r:br(n[1]),g:br(n[2]),b:br(n[3]),a:wr(n[4]),format:e?"name":"hex8"};if(n=jr.hex6.exec(t))return{r:br(n[1]),g:br(n[2]),b:br(n[3]),format:e?"name":"hex"};if(n=jr.hex4.exec(t))return{r:br(n[1]+""+n[1]),g:br(n[2]+""+n[2]),b:br(n[3]+""+n[3]),a:wr(n[4]+""+n[4]),format:e?"name":"hex8"};if(n=jr.hex3.exec(t))return{r:br(n[1]+""+n[1]),g:br(n[2]+""+n[2]),b:br(n[3]+""+n[3]),format:e?"name":"hex"};return!1}(t));"object"==We(t)&&(Ar(t.r)&&Ar(t.g)&&Ar(t.b)?(s=t.r,f=t.g,l=t.b,n={r:255*vr(s,255),g:255*vr(f,255),b:255*vr(l,255)},a=!0,u="%"===String(t.r).substr(-1)?"prgb":"rgb"):Ar(t.h)&&Ar(t.s)&&Ar(t.v)?(r=_r(t.s),o=_r(t.v),n=function(t,n,e){t=6*vr(t,360),n=vr(n,100),e=vr(e,100);var r=Math.floor(t),o=t-r,i=e*(1-n),a=e*(1-o*n),u=e*(1-(1-o)*n),s=r%6,f=[e,a,i,i,u,e][s],l=[u,e,e,a,i,i][s],c=[i,i,u,e,e,a][s];return{r:255*f,g:255*l,b:255*c}}(t.h,r,o),a=!0,u="hsv"):Ar(t.h)&&Ar(t.s)&&Ar(t.l)&&(r=_r(t.s),i=_r(t.l),n=function(t,n,e){var r,o,i;function a(t,n,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?t+6*(n-t)*e:e<.5?n:e<2/3?t+(n-t)*(2/3-e)*6:t}if(t=vr(t,360),n=vr(n,100),e=vr(e,100),0===n)r=o=i=e;else{var u=e<.5?e*(1+n):e+n-e*n,s=2*e-u;r=a(s,u,t+1/3),o=a(s,u,t),i=a(s,u,t-1/3)}return{r:255*r,g:255*o,b:255*i}}(t.h,r,i),a=!0,u="hsl"),t.hasOwnProperty("a")&&(e=t.a));var s,f,l;return e=gr(e),{ok:a,format:t.format||u,r:Math.min(255,Math.max(n.r,0)),g:Math.min(255,Math.max(n.g,0)),b:Math.min(255,Math.max(n.b,0)),a:e}}(t);this._originalInput=t,this._r=e.r,this._g=e.g,this._b=e.b,this._a=e.a,this._roundA=Math.round(100*this._a)/100,this._format=n.format||e.format,this._gradientType=n.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=e.ok}function Ye(t,n,e){t=vr(t,255),n=vr(n,255),e=vr(e,255);var r,o,i=Math.max(t,n,e),a=Math.min(t,n,e),u=(i+a)/2;if(i==a)r=o=0;else{var s=i-a;switch(o=u>.5?s/(2-i-a):s/(i+a),i){case t:r=(n-e)/s+(n<e?6:0);break;case n:r=(e-t)/s+2;break;case e:r=(t-n)/s+4}r/=6}return{h:r,s:o,l:u}}function Ke(t,n,e){t=vr(t,255),n=vr(n,255),e=vr(e,255);var r,o,i=Math.max(t,n,e),a=Math.min(t,n,e),u=i,s=i-a;if(o=0===i?0:s/i,i==a)r=0;else{switch(i){case t:r=(n-e)/s+(n<e?6:0);break;case n:r=(e-t)/s+2;break;case e:r=(t-n)/s+4}r/=6}return{h:r,s:o,v:u}}function Ze(t,n,e,r){var o=[mr(Math.round(t).toString(16)),mr(Math.round(n).toString(16)),mr(Math.round(e).toString(16))];return r&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)?o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0):o.join("")}function tr(t,n,e,r){return[mr(xr(r)),mr(Math.round(t).toString(16)),mr(Math.round(n).toString(16)),mr(Math.round(e).toString(16))].join("")}function nr(t,n){n=0===n?0:n||10;var e=Je(t).toHsl();return e.s-=n/100,e.s=yr(e.s),Je(e)}function er(t,n){n=0===n?0:n||10;var e=Je(t).toHsl();return e.s+=n/100,e.s=yr(e.s),Je(e)}function rr(t){return Je(t).desaturate(100)}function or(t,n){n=0===n?0:n||10;var e=Je(t).toHsl();return e.l+=n/100,e.l=yr(e.l),Je(e)}function ir(t,n){n=0===n?0:n||10;var e=Je(t).toRgb();return e.r=Math.max(0,Math.min(255,e.r-Math.round(-n/100*255))),e.g=Math.max(0,Math.min(255,e.g-Math.round(-n/100*255))),e.b=Math.max(0,Math.min(255,e.b-Math.round(-n/100*255))),Je(e)}function ar(t,n){n=0===n?0:n||10;var e=Je(t).toHsl();return e.l-=n/100,e.l=yr(e.l),Je(e)}function ur(t,n){var e=Je(t).toHsl(),r=(e.h+n)%360;return e.h=r<0?360+r:r,Je(e)}function sr(t){var n=Je(t).toHsl();return n.h=(n.h+180)%360,Je(n)}function fr(t,n){if(isNaN(n)||n<=0)throw new Error("Argument to polyad must be a positive number");for(var e=Je(t).toHsl(),r=[Je(t)],o=360/n,i=1;i<n;i++)r.push(Je({h:(e.h+i*o)%360,s:e.s,l:e.l}));return r}function lr(t){var n=Je(t).toHsl(),e=n.h;return[Je(t),Je({h:(e+72)%360,s:n.s,l:n.l}),Je({h:(e+216)%360,s:n.s,l:n.l})]}function cr(t,n,e){n=n||6,e=e||30;var r=Je(t).toHsl(),o=360/e,i=[Je(t)];for(r.h=(r.h-(o*n>>1)+720)%360;--n;)r.h=(r.h+o)%360,i.push(Je(r));return i}function hr(t,n){n=n||6;for(var e=Je(t).toHsv(),r=e.h,o=e.s,i=e.v,a=[],u=1/n;n--;)a.push(Je({h:r,s:o,v:i})),i=(i+u)%1;return a}Je.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var t,n,e,r=this.toRgb();return t=r.r/255,n=r.g/255,e=r.b/255,.2126*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.7152*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))+.0722*(e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))},setAlpha:function(t){return this._a=gr(t),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var t=Ke(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=Ke(this._r,this._g,this._b),n=Math.round(360*t.h),e=Math.round(100*t.s),r=Math.round(100*t.v);return 1==this._a?"hsv("+n+", "+e+"%, "+r+"%)":"hsva("+n+", "+e+"%, "+r+"%, "+this._roundA+")"},toHsl:function(){var t=Ye(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=Ye(this._r,this._g,this._b),n=Math.round(360*t.h),e=Math.round(100*t.s),r=Math.round(100*t.l);return 1==this._a?"hsl("+n+", "+e+"%, "+r+"%)":"hsla("+n+", "+e+"%, "+r+"%, "+this._roundA+")"},toHex:function(t){return Ze(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHex8:function(t){return function(t,n,e,r,o){var i=[mr(Math.round(t).toString(16)),mr(Math.round(n).toString(16)),mr(Math.round(e).toString(16)),mr(xr(r))];if(o&&i[0].charAt(0)==i[0].charAt(1)&&i[1].charAt(0)==i[1].charAt(1)&&i[2].charAt(0)==i[2].charAt(1)&&i[3].charAt(0)==i[3].charAt(1))return i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0)+i[3].charAt(0);return i.join("")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return"#"+this.toHex8(t)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(100*vr(this._r,255))+"%",g:Math.round(100*vr(this._g,255))+"%",b:Math.round(100*vr(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+Math.round(100*vr(this._r,255))+"%, "+Math.round(100*vr(this._g,255))+"%, "+Math.round(100*vr(this._b,255))+"%)":"rgba("+Math.round(100*vr(this._r,255))+"%, "+Math.round(100*vr(this._g,255))+"%, "+Math.round(100*vr(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(pr[Ze(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var n="#"+tr(this._r,this._g,this._b,this._a),e=n,r=this._gradientType?"GradientType = 1, ":"";if(t){var o=Je(t);e="#"+tr(o._r,o._g,o._b,o._a)}return"progid:DXImageTransform.Microsoft.gradient("+r+"startColorstr="+n+",endColorstr="+e+")"},toString:function(t){var n=!!t;t=t||this._format;var e=!1,r=this._a<1&&this._a>=0;return n||!r||"hex"!==t&&"hex6"!==t&&"hex3"!==t&&"hex4"!==t&&"hex8"!==t&&"name"!==t?("rgb"===t&&(e=this.toRgbString()),"prgb"===t&&(e=this.toPercentageRgbString()),"hex"!==t&&"hex6"!==t||(e=this.toHexString()),"hex3"===t&&(e=this.toHexString(!0)),"hex4"===t&&(e=this.toHex8String(!0)),"hex8"===t&&(e=this.toHex8String()),"name"===t&&(e=this.toName()),"hsl"===t&&(e=this.toHslString()),"hsv"===t&&(e=this.toHsvString()),e||this.toHexString()):"name"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return Je(this.toString())},_applyModification:function(t,n){var e=t.apply(null,[this].concat([].slice.call(n)));return this._r=e._r,this._g=e._g,this._b=e._b,this.setAlpha(e._a),this},lighten:function(){return this._applyModification(or,arguments)},brighten:function(){return this._applyModification(ir,arguments)},darken:function(){return this._applyModification(ar,arguments)},desaturate:function(){return this._applyModification(nr,arguments)},saturate:function(){return this._applyModification(er,arguments)},greyscale:function(){return this._applyModification(rr,arguments)},spin:function(){return this._applyModification(ur,arguments)},_applyCombination:function(t,n){return t.apply(null,[this].concat([].slice.call(n)))},analogous:function(){return this._applyCombination(cr,arguments)},complement:function(){return this._applyCombination(sr,arguments)},monochromatic:function(){return this._applyCombination(hr,arguments)},splitcomplement:function(){return this._applyCombination(lr,arguments)},triad:function(){return this._applyCombination(fr,[3])},tetrad:function(){return this._applyCombination(fr,[4])}},Je.fromRatio=function(t,n){if("object"==We(t)){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[r]="a"===r?t[r]:_r(t[r]));t=e}return Je(t,n)},Je.equals=function(t,n){return!(!t||!n)&&Je(t).toRgbString()==Je(n).toRgbString()},Je.random=function(){return Je.fromRatio({r:Math.random(),g:Math.random(),b:Math.random()})},Je.mix=function(t,n,e){e=0===e?0:e||50;var r=Je(t).toRgb(),o=Je(n).toRgb(),i=e/100;return Je({r:(o.r-r.r)*i+r.r,g:(o.g-r.g)*i+r.g,b:(o.b-r.b)*i+r.b,a:(o.a-r.a)*i+r.a})},
|
|
// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)
|
|
// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)
|
|
Je.readability=function(t,n){var e=Je(t),r=Je(n);return(Math.max(e.getLuminance(),r.getLuminance())+.05)/(Math.min(e.getLuminance(),r.getLuminance())+.05)},Je.isReadable=function(t,n,e){var r,o,i=Je.readability(t,n);switch(o=!1,(r=function(t){var n,e;n=((t=t||{level:"AA",size:"small"}).level||"AA").toUpperCase(),e=(t.size||"small").toLowerCase(),"AA"!==n&&"AAA"!==n&&(n="AA");"small"!==e&&"large"!==e&&(e="small");return{level:n,size:e}}(e)).level+r.size){case"AAsmall":case"AAAlarge":o=i>=4.5;break;case"AAlarge":o=i>=3;break;case"AAAsmall":o=i>=7}return o},Je.mostReadable=function(t,n,e){var r,o,i,a,u=null,s=0;o=(e=e||{}).includeFallbackColors,i=e.level,a=e.size;for(var f=0;f<n.length;f++)(r=Je.readability(t,n[f]))>s&&(s=r,u=Je(n[f]));return Je.isReadable(t,u,{level:i,size:a})||!o?u:(e.includeFallbackColors=!1,Je.mostReadable(t,["#fff","#000"],e))};var dr=Je.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},pr=Je.hexNames=function(t){var n={};for(var e in t)t.hasOwnProperty(e)&&(n[t[e]]=e);return n}(dr);function gr(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function vr(t,n){(function(t){return"string"==typeof t&&-1!=t.indexOf(".")&&1===parseFloat(t)})(t)&&(t="100%");var e=function(t){return"string"==typeof t&&-1!=t.indexOf("%")}(t);return t=Math.min(n,Math.max(0,parseFloat(t))),e&&(t=parseInt(t*n,10)/100),Math.abs(t-n)<1e-6?1:t%n/parseFloat(n)}function yr(t){return Math.min(1,Math.max(0,t))}function br(t){return parseInt(t,16)}function mr(t){return 1==t.length?"0"+t:""+t}function _r(t){return t<=1&&(t=100*t+"%"),t}function xr(t){return Math.round(255*parseFloat(t)).toString(16)}function wr(t){return br(t)/255}var kr,Or,Mr,jr=(Or="[\\s|\\(]+("+(kr="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+kr+")[,|\\s]+("+kr+")\\s*\\)?",Mr="[\\s|\\(]+("+kr+")[,|\\s]+("+kr+")[,|\\s]+("+kr+")[,|\\s]+("+kr+")\\s*\\)?",{CSS_UNIT:new RegExp(kr),rgb:new RegExp("rgb"+Or),rgba:new RegExp("rgba"+Mr),hsl:new RegExp("hsl"+Or),hsla:new RegExp("hsla"+Mr),hsv:new RegExp("hsv"+Or),hsva:new RegExp("hsva"+Mr),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function Ar(t){return!!jr.CSS_UNIT.exec(t)}var Sr=function(t){return isNaN(t)?parseInt(Je(t).toHex(),16):t},Pr=function(t){return isNaN(t)?Je(t).getAlpha():1},Nr=function t(){var n=new ye,e=[],r=[],o=Ge;function i(t){let i=n.get(t);if(void 0===i){if(o!==Ge)return o;n.set(t,i=e.push(t)-1)}return r[i%r.length]}return i.domain=function(t){if(!arguments.length)return e.slice();e=[],n=new ye;for(const r of t)n.has(r)||n.set(r,e.push(r)-1);return i},i.range=function(t){return arguments.length?(r=Array.from(t),i):r.slice()},i.unknown=function(t){return arguments.length?(o=t,i):o},i.copy=function(){return t(e,r).unknown(o)},Ve.apply(i,arguments),i}(He);function Er(t,n,e){n&&"string"==typeof e&&t.filter((function(t){return!t[e]})).forEach((function(t){t[e]=Nr(n(t))}))}var Cr,Br,zr,Tr,$r,Ir,Dr,Fr,Lr,Rr,qr,Ur,Vr,Gr,Hr=window.THREE?window.THREE:{Group:t.Group,Mesh:t.Mesh,MeshLambertMaterial:t.MeshLambertMaterial,Color:t.Color,BufferGeometry:t.BufferGeometry,BufferAttribute:t.BufferAttribute,Matrix4:t.Matrix4,Vector3:t.Vector3,SphereGeometry:t.SphereGeometry,CylinderGeometry:t.CylinderGeometry,TubeGeometry:t.TubeGeometry,ConeGeometry:t.ConeGeometry,Line:t.Line,LineBasicMaterial:t.LineBasicMaterial,QuadraticBezierCurve3:t.QuadraticBezierCurve3,CubicBezierCurve3:t.CubicBezierCurve3,Box3:t.Box3},Wr={graph:zt,forcelayout:Tn},Qr=(new Hr.BufferGeometry).setAttribute?"setAttribute":"addAttribute",Xr=(new Hr.BufferGeometry).applyMatrix4?"applyMatrix4":"applyMatrix",Jr=(Cr={props:{jsonUrl:{onChange:function(t,n){var e=this;t&&!n.fetchingJson&&(n.fetchingJson=!0,n.onLoading(),fetch(t).then((function(t){return t.json()})).then((function(t){n.fetchingJson=!1,n.onFinishLoading(t),e.graphData(t)})))},triggerUpdate:!1},graphData:{default:{nodes:[],links:[]},onChange:function(t,n){n.engineRunning=!1}},numDimensions:{default:3,onChange:function(t,n){var e=n.d3ForceLayout.force("charge");function r(t,n){t.forEach((function(t){delete t[n],delete t["v".concat(n)]}))}e&&e.strength(t>2?-60:-30),t<3&&r(n.graphData.nodes,"z"),t<2&&r(n.graphData.nodes,"y")}},dagMode:{onChange:function(t,n){!t&&"d3"===n.forceEngine&&(n.graphData.nodes||[]).forEach((function(t){return t.fx=t.fy=t.fz=void 0}))}},dagLevelDistance:{},dagNodeFilter:{default:function(t){return!0}},onDagError:{triggerUpdate:!1},nodeRelSize:{default:4},nodeId:{default:"id"},nodeVal:{default:"val"},nodeResolution:{default:8},nodeColor:{default:"color"},nodeAutoColorBy:{},nodeOpacity:{default:.75},nodeVisibility:{default:!0},nodeThreeObject:{},nodeThreeObjectExtend:{default:!1},nodePositionUpdate:{triggerUpdate:!1},linkSource:{default:"source"},linkTarget:{default:"target"},linkVisibility:{default:!0},linkColor:{default:"color"},linkAutoColorBy:{},linkOpacity:{default:.2},linkWidth:{},linkResolution:{default:6},linkCurvature:{default:0,triggerUpdate:!1},linkCurveRotation:{default:0,triggerUpdate:!1},linkMaterial:{},linkThreeObject:{},linkThreeObjectExtend:{default:!1},linkPositionUpdate:{triggerUpdate:!1},linkDirectionalArrowLength:{default:0},linkDirectionalArrowColor:{},linkDirectionalArrowRelPos:{default:.5,triggerUpdate:!1},linkDirectionalArrowResolution:{default:8},linkDirectionalParticles:{default:0},linkDirectionalParticleSpeed:{default:.01,triggerUpdate:!1},linkDirectionalParticleWidth:{default:.5},linkDirectionalParticleColor:{},linkDirectionalParticleResolution:{default:4},forceEngine:{default:"d3"},d3AlphaMin:{default:0},d3AlphaDecay:{default:.0228,triggerUpdate:!1,onChange:function(t,n){n.d3ForceLayout.alphaDecay(t)}},d3AlphaTarget:{default:0,triggerUpdate:!1,onChange:function(t,n){n.d3ForceLayout.alphaTarget(t)}},d3VelocityDecay:{default:.4,triggerUpdate:!1,onChange:function(t,n){n.d3ForceLayout.velocityDecay(t)}},ngraphPhysics:{default:{timeStep:20,gravity:-1.2,theta:.8,springLength:30,springCoefficient:8e-4,dragCoefficient:.02}},warmupTicks:{default:0,triggerUpdate:!1},cooldownTicks:{default:1/0,triggerUpdate:!1},cooldownTime:{default:15e3,triggerUpdate:!1},onLoading:{default:function(){},triggerUpdate:!1},onFinishLoading:{default:function(){},triggerUpdate:!1},onUpdate:{default:function(){},triggerUpdate:!1},onFinishUpdate:{default:function(){},triggerUpdate:!1},onEngineTick:{default:function(){},triggerUpdate:!1},onEngineStop:{default:function(){},triggerUpdate:!1}},methods:{refresh:function(t){return t._flushObjects=!0,t._rerender(),this},d3Force:function(t,n,e){return void 0===e?t.d3ForceLayout.force(n):(t.d3ForceLayout.force(n,e),this)},d3ReheatSimulation:function(t){return t.d3ForceLayout.alpha(1),this.resetCountdown(),this},resetCountdown:function(t){return t.cntTicks=0,t.startTickTime=new Date,t.engineRunning=!0,this},tickFrame:function(t){var n,r,o,i,a="ngraph"!==t.forceEngine;return t.engineRunning&&function(){++t.cntTicks>t.cooldownTicks||new Date-t.startTickTime>t.cooldownTime||a&&t.d3AlphaMin>0&&t.d3ForceLayout.alpha()<t.d3AlphaMin?(t.engineRunning=!1,t.onEngineStop()):(t.layout[a?"tick":"step"](),t.onEngineTick());var n=ve(t.nodeThreeObjectExtend);t.graphData.nodes.forEach((function(e){var r=e.__threeObj;if(r){var o=a?e:t.layout.getNodePosition(e[t.nodeId]),i=n(e);t.nodePositionUpdate&&t.nodePositionUpdate(i?r.children[0]:r,{x:o.x,y:o.y,z:o.z},e)&&!i||(r.position.x=o.x,r.position.y=o.y||0,r.position.z=o.z||0)}}));var e=ve(t.linkWidth),r=ve(t.linkCurvature),o=ve(t.linkCurveRotation),i=ve(t.linkThreeObjectExtend);function u(n){var e=a?n:t.layout.getLinkPosition(t.layout.graph.getLink(n.source,n.target).id),i=e[a?"source":"from"],u=e[a?"target":"to"];if(i&&u&&i.hasOwnProperty("x")&&u.hasOwnProperty("x")){var s=r(n);if(s){var f,l=new Hr.Vector3(i.x,i.y||0,i.z||0),c=new Hr.Vector3(u.x,u.y||0,u.z||0),h=l.distanceTo(c),d=o(n);if(h>0){var p=u.x-i.x,g=u.y-i.y||0,v=(new Hr.Vector3).subVectors(c,l),y=v.clone().multiplyScalar(s).cross(0!==p||0!==g?new Hr.Vector3(0,0,1):new Hr.Vector3(0,1,0)).applyAxisAngle(v.normalize(),d).add((new Hr.Vector3).addVectors(l,c).divideScalar(2));f=new Hr.QuadraticBezierCurve3(l,y,c)}else{var b=70*s,m=-d,_=m+Math.PI/2;f=new Hr.CubicBezierCurve3(l,new Hr.Vector3(b*Math.cos(_),b*Math.sin(_),0).add(l),new Hr.Vector3(b*Math.cos(m),b*Math.sin(m),0).add(l),c)}n.__curve=f}else n.__curve=null}}t.graphData.links.forEach((function(n){var r=n.__lineObj;if(r){var o=a?n:t.layout.getLinkPosition(t.layout.graph.getLink(n.source,n.target).id),s=o[a?"source":"from"],f=o[a?"target":"to"];if(s&&f&&s.hasOwnProperty("x")&&f.hasOwnProperty("x")){u(n);var l=i(n);if(!t.linkPositionUpdate||!t.linkPositionUpdate(l?r.children[1]:r,{start:{x:s.x,y:s.y,z:s.z},end:{x:f.x,y:f.y,z:f.z}},n)||l){var c=30,h=n.__curve,d=r.children.length?r.children[0]:r;if("Line"===d.type){if(h)d.geometry.setFromPoints(h.getPoints(c));else{var p=d.geometry.getAttribute("position");p&&p.array&&6===p.array.length||d.geometry[Qr]("position",p=new Hr.BufferAttribute(new Float32Array(6),3)),p.array[0]=s.x,p.array[1]=s.y||0,p.array[2]=s.z||0,p.array[3]=f.x,p.array[4]=f.y||0,p.array[5]=f.z||0,p.needsUpdate=!0}d.geometry.computeBoundingSphere()}else if("Mesh"===d.type)if(h){d.geometry.type.match(/^Tube(Buffer)?Geometry$/)||(d.position.set(0,0,0),d.rotation.set(0,0,0),d.scale.set(1,1,1));var g=Math.ceil(10*e(n))/10/2,v=new Hr.TubeGeometry(h,c,g,t.linkResolution,!1);d.geometry.dispose(),d.geometry=v}else{if(!d.geometry.type.match(/^Cylinder(Buffer)?Geometry$/)){var y=Math.ceil(10*e(n))/10/2,b=new Hr.CylinderGeometry(y,y,1,t.linkResolution,1,!1);b[Xr]((new Hr.Matrix4).makeTranslation(0,.5,0)),b[Xr]((new Hr.Matrix4).makeRotationX(Math.PI/2)),d.geometry.dispose(),d.geometry=b}var m=new Hr.Vector3(s.x,s.y||0,s.z||0),_=new Hr.Vector3(f.x,f.y||0,f.z||0),x=m.distanceTo(_);d.position.x=m.x,d.position.y=m.y,d.position.z=m.z,d.scale.z=x,d.parent.localToWorld(_),d.lookAt(_)}}}}}))}(),n=ve(t.linkDirectionalArrowRelPos),r=ve(t.linkDirectionalArrowLength),o=ve(t.nodeVal),t.graphData.links.forEach((function(i){var u=i.__arrowObj;if(u){var s=a?i:t.layout.getLinkPosition(t.layout.graph.getLink(i.source,i.target).id),f=s[a?"source":"from"],c=s[a?"target":"to"];if(f&&c&&f.hasOwnProperty("x")&&c.hasOwnProperty("x")){var h=Math.cbrt(Math.max(0,o(f)||1))*t.nodeRelSize,d=Math.cbrt(Math.max(0,o(c)||1))*t.nodeRelSize,g=r(i),v=n(i),y=i.__curve?function(t){return i.__curve.getPoint(t)}:function(t){var n=function(t,n,e,r){return n[t]+(e[t]-n[t])*r||0};return{x:n("x",f,c,t),y:n("y",f,c,t),z:n("z",f,c,t)}},b=i.__curve?i.__curve.getLength():Math.sqrt(["x","y","z"].map((function(t){return Math.pow((c[t]||0)-(f[t]||0),2)})).reduce((function(t,n){return t+n}),0)),m=h+g+(b-h-d-g)*v,_=y(m/b),x=y((m-g)/b);["x","y","z"].forEach((function(t){return u.position[t]=x[t]}));var w=function(t,n,r){if(e())return Reflect.construct.apply(null,arguments);var o=[null];o.push.apply(o,n);var i=new(t.bind.apply(t,o));return r&&l(i,r.prototype),i}(Hr.Vector3,p(["x","y","z"].map((function(t){return _[t]}))));u.parent.localToWorld(w),u.lookAt(w)}}})),i=ve(t.linkDirectionalParticleSpeed),t.graphData.links.forEach((function(n){var e=n.__photonsObj&&n.__photonsObj.children,r=n.__singleHopPhotonsObj&&n.__singleHopPhotonsObj.children;if(r&&r.length||e&&e.length){var o=a?n:t.layout.getLinkPosition(t.layout.graph.getLink(n.source,n.target).id),u=o[a?"source":"from"],s=o[a?"target":"to"];if(u&&s&&u.hasOwnProperty("x")&&s.hasOwnProperty("x")){var f=i(n),l=n.__curve?function(t){return n.__curve.getPoint(t)}:function(t){var n=function(t,n,e,r){return n[t]+(e[t]-n[t])*r||0};return{x:n("x",u,s,t),y:n("y",u,s,t),z:n("z",u,s,t)}};[].concat(p(e||[]),p(r||[])).forEach((function(t,n){var r="singleHopPhotons"===t.parent.__linkThreeObjType;if(t.hasOwnProperty("__progressRatio")||(t.__progressRatio=r?0:n/e.length),t.__progressRatio+=f,t.__progressRatio>=1){if(r)return t.parent.remove(t),void Re(t);t.__progressRatio=t.__progressRatio%1}var o=t.__progressRatio,i=l(o);["x","y","z"].forEach((function(n){return t.position[n]=i[n]}))}))}}})),this},emitParticle:function(t,n){if(n&&t.graphData.links.includes(n)){if(!n.__singleHopPhotonsObj){var e=new Hr.Group;e.__linkThreeObjType="singleHopPhotons",n.__singleHopPhotonsObj=e,t.graphScene.add(e)}var r=ve(t.linkDirectionalParticleWidth),o=Math.ceil(10*r(n))/10/2,i=t.linkDirectionalParticleResolution,a=new Hr.SphereGeometry(o,i,i),u=ve(t.linkColor),s=ve(t.linkDirectionalParticleColor)(n)||u(n)||"#f0f0f0",f=new Hr.Color(Sr(s)),l=3*t.linkOpacity,c=new Hr.MeshLambertMaterial({color:f,transparent:!0,opacity:l});n.__singleHopPhotonsObj.add(new Hr.Mesh(a,c))}return this},getGraphBbox:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){return!0};if(!t.initialised)return null;var e=function t(e){var r=[];if(e.geometry){e.geometry.computeBoundingBox();var o=new Hr.Box3;o.copy(e.geometry.boundingBox).applyMatrix4(e.matrixWorld),r.push(o)}return r.concat.apply(r,p((e.children||[]).filter((function(t){return!t.hasOwnProperty("__graphObjType")||"node"===t.__graphObjType&&n(t.__data)})).map(t)))}(t.graphScene);return e.length?Object.assign.apply(Object,p(["x","y","z"].map((function(t){return s({},t,[xe(e,(function(n){return n.min[t]})),_e(e,(function(n){return n.max[t]}))])})))):null}},stateInit:function(){return{d3ForceLayout:Ot().force("link",H()).force("charge",Mt()).force("center",y()).force("dagRadial",null).stop(),engineRunning:!1}},init:function(t,n){n.graphScene=t},update:function(t,n){var e=function(t){return t.some((function(t){return n.hasOwnProperty(t)}))};if(t.engineRunning=!1,t.onUpdate(),null!==t.nodeAutoColorBy&&e(["nodeAutoColorBy","graphData","nodeColor"])&&Er(t.graphData.nodes,ve(t.nodeAutoColorBy),t.nodeColor),null!==t.linkAutoColorBy&&e(["linkAutoColorBy","graphData","linkColor"])&&Er(t.graphData.links,ve(t.linkAutoColorBy),t.linkColor),t._flushObjects||e(["graphData","nodeThreeObject","nodeThreeObjectExtend","nodeVal","nodeColor","nodeVisibility","nodeRelSize","nodeResolution","nodeOpacity"])){var r=ve(t.nodeThreeObject),i=ve(t.nodeThreeObjectExtend),u=ve(t.nodeVal),f=ve(t.nodeColor),l=ve(t.nodeVisibility),c={},h={};Ue(t.graphData.nodes.filter(l),t.graphScene,{purge:t._flushObjects||e(["nodeThreeObject","nodeThreeObjectExtend"]),objFilter:function(t){return"node"===t.__graphObjType},createObj:function(n){var e,o=r(n),a=i(n);return o&&t.nodeThreeObject===o&&(o=o.clone()),o&&!a?e=o:((e=new Hr.Mesh).__graphDefaultObj=!0,o&&a&&e.add(o)),e.__graphObjType="node",e},updateObj:function(n,e){if(n.__graphDefaultObj){var r=u(e)||1,o=Math.cbrt(r)*t.nodeRelSize,i=t.nodeResolution;n.geometry.type.match(/^Sphere(Buffer)?Geometry$/)&&n.geometry.parameters.radius===o&&n.geometry.parameters.widthSegments===i||(c.hasOwnProperty(r)||(c[r]=new Hr.SphereGeometry(o,i,i)),n.geometry.dispose(),n.geometry=c[r]);var a=f(e),s=new Hr.Color(Sr(a||"#ffffaa")),l=t.nodeOpacity*Pr(a);"MeshLambertMaterial"===n.material.type&&n.material.color.equals(s)&&n.material.opacity===l||(h.hasOwnProperty(a)||(h[a]=new Hr.MeshLambertMaterial({color:s,transparent:!0,opacity:l})),n.material.dispose(),n.material=h[a])}}})}if(t._flushObjects||e(["graphData","linkThreeObject","linkThreeObjectExtend","linkMaterial","linkColor","linkWidth","linkVisibility","linkResolution","linkOpacity","linkDirectionalArrowLength","linkDirectionalArrowColor","linkDirectionalArrowResolution","linkDirectionalParticles","linkDirectionalParticleWidth","linkDirectionalParticleColor","linkDirectionalParticleResolution"])){var g=ve(t.linkThreeObject),v=ve(t.linkThreeObjectExtend),y=ve(t.linkMaterial),b=ve(t.linkVisibility),m=ve(t.linkColor),_=ve(t.linkWidth),x={},w={},k={},O=t.graphData.links.filter(b);if(Ue(O,t.graphScene,{objBindAttr:"__lineObj",purge:t._flushObjects||e(["linkThreeObject","linkThreeObjectExtend","linkWidth"]),objFilter:function(t){return"link"===t.__graphObjType},exitObj:function(t){var n=t.__data&&t.__data.__singleHopPhotonsObj;n&&(n.parent.remove(n),Re(n),delete t.__data.__singleHopPhotonsObj)},createObj:function(n){var e,r,o=g(n),i=v(n);if(o&&t.linkThreeObject===o&&(o=o.clone()),!o||i)if(_(n))e=new Hr.Mesh;else{var a=new Hr.BufferGeometry;a[Qr]("position",new Hr.BufferAttribute(new Float32Array(6),3)),e=new Hr.Line(a)}return o?i?((r=new Hr.Group).__graphDefaultObj=!0,r.add(e),r.add(o)):r=o:(r=e).__graphDefaultObj=!0,r.renderOrder=10,r.__graphObjType="link",r},updateObj:function(n,e){if(n.__graphDefaultObj){var r=n.children.length?n.children[0]:n,o=Math.ceil(10*_(e))/10,i=!!o;if(i){var a=o/2,u=t.linkResolution;if(!r.geometry.type.match(/^Cylinder(Buffer)?Geometry$/)||r.geometry.parameters.radiusTop!==a||r.geometry.parameters.radialSegments!==u){if(!x.hasOwnProperty(o)){var s=new Hr.CylinderGeometry(a,a,1,u,1,!1);s[Xr]((new Hr.Matrix4).makeTranslation(0,.5,0)),s[Xr]((new Hr.Matrix4).makeRotationX(Math.PI/2)),x[o]=s}r.geometry.dispose(),r.geometry=x[o]}}var f=y(e);if(f)r.material=f;else{var l=m(e),c=new Hr.Color(Sr(l||"#f0f0f0")),h=t.linkOpacity*Pr(l),d=i?"MeshLambertMaterial":"LineBasicMaterial";if(r.material.type!==d||!r.material.color.equals(c)||r.material.opacity!==h){var p=i?w:k;p.hasOwnProperty(l)||(p[l]=new Hr[d]({color:c,transparent:h<1,opacity:h,depthWrite:h>=1})),r.material.dispose(),r.material=p[l]}}}}}),t.linkDirectionalArrowLength||n.hasOwnProperty("linkDirectionalArrowLength")){var M=ve(t.linkDirectionalArrowLength),j=ve(t.linkDirectionalArrowColor);Ue(O.filter(M),t.graphScene,{objBindAttr:"__arrowObj",objFilter:function(t){return"arrow"===t.__linkThreeObjType},createObj:function(){var t=new Hr.Mesh(void 0,new Hr.MeshLambertMaterial({transparent:!0}));return t.__linkThreeObjType="arrow",t},updateObj:function(n,e){var r=M(e),o=t.linkDirectionalArrowResolution;if(!n.geometry.type.match(/^Cone(Buffer)?Geometry$/)||n.geometry.parameters.height!==r||n.geometry.parameters.radialSegments!==o){var i=new Hr.ConeGeometry(.25*r,r,o);i.translate(0,r/2,0),i.rotateX(Math.PI/2),n.geometry.dispose(),n.geometry=i}var a=j(e)||m(e)||"#f0f0f0";n.material.color=new Hr.Color(Sr(a)),n.material.opacity=3*t.linkOpacity*Pr(a)}})}if(t.linkDirectionalParticles||n.hasOwnProperty("linkDirectionalParticles")){var A=ve(t.linkDirectionalParticles),S=ve(t.linkDirectionalParticleWidth),P=ve(t.linkDirectionalParticleColor),N={},E={};Ue(O.filter(A),t.graphScene,{objBindAttr:"__photonsObj",objFilter:function(t){return"photons"===t.__linkThreeObjType},createObj:function(){var t=new Hr.Group;return t.__linkThreeObjType="photons",t},updateObj:function(n,e){var r,o=Math.round(Math.abs(A(e))),i=!!n.children.length&&n.children[0],a=Math.ceil(10*S(e))/10/2,u=t.linkDirectionalParticleResolution;i&&i.geometry.parameters.radius===a&&i.geometry.parameters.widthSegments===u?r=i.geometry:(E.hasOwnProperty(a)||(E[a]=new Hr.SphereGeometry(a,u,u)),r=E[a],i&&i.geometry.dispose());var s,f=P(e)||m(e)||"#f0f0f0",l=new Hr.Color(Sr(f)),c=3*t.linkOpacity;i&&i.material.color.equals(l)&&i.material.opacity===c?s=i.material:(N.hasOwnProperty(f)||(N[f]=new Hr.MeshLambertMaterial({color:l,transparent:!0,opacity:c})),s=N[f],i&&i.material.dispose()),Ue(p(new Array(o)).map((function(t,n){return{idx:n}})),n,{idAccessor:function(t){return t.idx},createObj:function(){return new Hr.Mesh(r,s)},updateObj:function(t){t.geometry=r,t.material=s}})}})}}if(t._flushObjects=!1,e(["graphData","nodeId","linkSource","linkTarget","numDimensions","forceEngine","dagMode","dagNodeFilter","dagLevelDistance"])){t.engineRunning=!1,t.graphData.links.forEach((function(n){n.source=n[t.linkSource],n.target=n[t.linkTarget]}));var C,B="ngraph"!==t.forceEngine;if(B){(C=t.d3ForceLayout).stop().alpha(1).numDimensions(t.numDimensions).nodes(t.graphData.nodes);var z=t.d3ForceLayout.force("link");z&&z.id((function(n){return n[t.nodeId]})).links(t.graphData.links);var T=t.dagMode&&function(t,n){var e=t.nodes,r=t.links,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=o.nodeFilter,u=void 0===i?function(){return!0}:i,f=o.onLoopError,l=void 0===f?function(t){throw"Invalid DAG structure! Found cycle in node path: ".concat(t.join(" -> "),".")}:f,c={};e.forEach((function(t){return c[n(t)]={data:t,out:[],depth:-1,skip:!u(t)}})),r.forEach((function(t){var e=t.source,r=t.target,o=f(e),i=f(r);if(!c.hasOwnProperty(o))throw"Missing source node with id: ".concat(o);if(!c.hasOwnProperty(i))throw"Missing target node with id: ".concat(i);var u=c[o],s=c[i];function f(t){return"object"===a(t)?n(t):t}u.out.push(s)}));var h=[];return function t(e){for(var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=function(){var i=e[a];if(-1!==r.indexOf(i)){var u=[].concat(p(r.slice(r.indexOf(i))),[i]).map((function(t){return n(t.data)}));return h.some((function(t){return t.length===u.length&&t.every((function(t,n){return t===u[n]}))}))||(h.push(u),l(u)),1}o>i.depth&&(i.depth=o,t(i.out,[].concat(p(r),[i]),o+(i.skip?0:1)))},a=0,u=e.length;a<u;a++)i()}(Object.values(c)),Object.assign.apply(Object,[{}].concat(p(Object.entries(c).filter((function(t){return!d(t,2)[1].skip})).map((function(t){var n=d(t,2);return s({},n[0],n[1].depth)})))))}(t.graphData,(function(n){return n[t.nodeId]}),{nodeFilter:t.dagNodeFilter,onLoopError:t.onDagError||void 0}),$=Math.max.apply(Math,p(Object.values(T||[]))),I=t.dagLevelDistance||t.graphData.nodes.length/($||1)*2*(-1!==["radialin","radialout"].indexOf(t.dagMode)?.7:1);if(t.dagMode){var D=function(n,e){return function(r){return n?(T[r[t.nodeId]]-$/2)*I*(e?-1:1):void 0}},F=D(-1!==["lr","rl"].indexOf(t.dagMode),"rl"===t.dagMode),L=D(-1!==["td","bu"].indexOf(t.dagMode),"td"===t.dagMode),R=D(-1!==["zin","zout"].indexOf(t.dagMode),"zout"===t.dagMode);t.graphData.nodes.filter(t.dagNodeFilter).forEach((function(t){t.fx=F(t),t.fy=L(t),t.fz=R(t)}))}t.d3ForceLayout.force("dagRadial",-1!==["radialin","radialout"].indexOf(t.dagMode)?function(t,n,e,r){var o,i,a,u,s=q(.1);function f(t){for(var s=0,f=o.length;s<f;++s){var l=o[s],c=l.x-n||1e-6,h=(l.y||0)-e||1e-6,d=(l.z||0)-r||1e-6,p=Math.sqrt(c*c+h*h+d*d),g=(u[s]-p)*a[s]*t/p;l.vx+=c*g,i>1&&(l.vy+=h*g),i>2&&(l.vz+=d*g)}}function l(){if(o){var n,e=o.length;for(a=new Array(e),u=new Array(e),n=0;n<e;++n)u[n]=+t(o[n],n,o),a[n]=isNaN(u[n])?0:+s(o[n],n,o)}}return"function"!=typeof t&&(t=q(+t)),null==n&&(n=0),null==e&&(e=0),null==r&&(r=0),f.initialize=function(t,...n){o=t,i=n.find((t=>[1,2,3].includes(t)))||2,l()},f.strength=function(t){return arguments.length?(s="function"==typeof t?t:q(+t),l(),f):s},f.radius=function(n){return arguments.length?(t="function"==typeof n?n:q(+n),l(),f):t},f.x=function(t){return arguments.length?(n=+t,f):n},f.y=function(t){return arguments.length?(e=+t,f):e},f.z=function(t){return arguments.length?(r=+t,f):r},f}((function(n){var e=T[n[t.nodeId]]||-1;return("radialin"===t.dagMode?$-e:e)*I})).strength((function(n){return t.dagNodeFilter(n)?1:0})):null)}else{var U=Wr.graph();t.graphData.nodes.forEach((function(n){U.addNode(n[t.nodeId])})),t.graphData.links.forEach((function(t){U.addLink(t.source,t.target)})),(C=Wr.forcelayout(U,o({dimensions:t.numDimensions},t.ngraphPhysics))).graph=U}for(var V=0;V<t.warmupTicks&&!(B&&t.d3AlphaMin>0&&t.d3ForceLayout.alpha()<t.d3AlphaMin);V++)C[B?"tick":"step"]();t.layout=C,this.resetCountdown()}t.engineRunning=!0,t.onFinishUpdate()}},Br=Cr.stateInit,zr=void 0===Br?function(){return{}}:Br,Tr=Cr.props,$r=void 0===Tr?{}:Tr,Ir=Cr.methods,Dr=void 0===Ir?{}:Ir,Fr=Cr.aliases,Lr=void 0===Fr?{}:Fr,Rr=Cr.init,qr=void 0===Rr?function(){}:Rr,Ur=Cr.update,Vr=void 0===Ur?function(){}:Ur,Gr=Object.keys($r).map((function(t){return new ge(t,$r[t])})),function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign({},zr instanceof Function?zr(t):zr,{initialised:!1}),e={};function r(n){return o(n,t),i(),r}var o=function(t,e){qr.call(r,t,n,e),n.initialised=!0},i=le((function(){n.initialised&&(Vr.call(r,n,e),e={})}),1);return Gr.forEach((function(t){r[t.name]=function(t){var o=t.name,a=t.triggerUpdate,u=void 0!==a&&a,s=t.onChange,f=void 0===s?function(t,n){}:s,l=t.defaultVal,c=void 0===l?null:l;return function(t){var a=n[o];if(!arguments.length)return a;var s=void 0===t?c:t;return n[o]=s,f.call(r,s,n,a),!e.hasOwnProperty(o)&&(e[o]=a),u&&i(),r}}(t)})),Object.keys(Dr).forEach((function(t){r[t]=function(){for(var e,o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];return(e=Dr[t]).call.apply(e,[r,n].concat(i))}})),Object.entries(Lr).forEach((function(t){var n=de(t,2),e=n[0],o=n[1];return r[e]=r[o]})),r.resetProps=function(){return Gr.forEach((function(t){r[t.name](t.defaultVal)})),r},r.resetProps(),n._rerender=i,r});var Yr=function(t){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=function(r){function o(){var r;!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,o);for(var i=arguments.length,a=new Array(i),u=0;u<i;u++)a[u]=arguments[u];return(r=n(this,o,[].concat(a))).__kapsuleInstance=t().apply(void 0,[].concat(p(e?[h(r)]:[]),a)),r}return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),n&&l(t,n)}(o,r),i=o,a&&u(i.prototype,a),s&&u(i,s),Object.defineProperty(i,"prototype",{writable:!1}),i;var i,a,s}(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Object);return Object.keys(t()).forEach((function(t){return r.prototype[t]=function(){var n,e=(n=this.__kapsuleInstance)[t].apply(n,arguments);return e===this.__kapsuleInstance?this:e}})),r}(Jr,(window.THREE?window.THREE:{Group:t.Group}).Group,!0);return Yr}));
|