@cosmos.gl/graph 2.2.1 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/dco.yml +4 -0
- package/README.md +7 -7
- package/dist/config.d.ts +16 -0
- package/dist/helper.d.ts +13 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.js +5777 -5149
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +63 -53
- package/dist/index.min.js.map +1 -1
- package/dist/modules/Points/index.d.ts +5 -0
- package/dist/variables.d.ts +2 -0
- package/package.json +3 -1
- package/src/config.ts +21 -0
- package/src/helper.ts +22 -0
- package/src/index.ts +81 -5
- package/src/modules/Lines/draw-curve-line.frag +2 -1
- package/src/modules/Lines/draw-curve-line.vert +9 -3
- package/src/modules/Lines/index.ts +1 -0
- package/src/modules/Points/draw-highlighted.vert +2 -1
- package/src/modules/Points/draw-points.vert +2 -1
- package/src/modules/Points/index.ts +43 -0
- package/src/stories/2. configuration.mdx +2 -0
- package/src/stories/3. api-reference.mdx +55 -18
- package/src/stories/clusters/worm.ts +22 -1
- package/src/variables.ts +2 -0
package/dist/index.min.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
(function(Ct,Tn){typeof exports=="object"&&typeof module<"u"?Tn(exports):typeof define=="function"&&define.amd?define(["exports"],Tn):(Ct=typeof globalThis<"u"?globalThis:Ct||self,Tn(Ct.Cosmos={}))})(this,function(Ct){"use strict";var Tn="http://www.w3.org/1999/xhtml";const Ia={svg:"http://www.w3.org/2000/svg",xhtml:Tn,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Vr(t){var e=t+="",n=e.indexOf(":");return n>=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),Ia.hasOwnProperty(e)?{space:Ia[e],local:t}:t}function gl(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===Tn&&e.documentElement.namespaceURI===Tn?e.createElement(t):e.createElementNS(n,t)}}function yl(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Ra(t){var e=Vr(t);return(e.local?yl:gl)(e)}function xl(){}function eo(t){return t==null?xl:function(){return this.querySelector(t)}}function bl(t){typeof t!="function"&&(t=eo(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],u=o.length,s=r[i]=new Array(u),f,l,v=0;v<u;++v)(f=o[v])&&(l=t.call(f,f.__data__,v,o))&&("__data__"in f&&(l.__data__=f.__data__),s[v]=l);return new zt(r,this._parents)}function _l(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function Sl(){return[]}function Da(t){return t==null?Sl:function(){return this.querySelectorAll(t)}}function wl(t){return function(){return _l(t.apply(this,arguments))}}function Tl(t){typeof t=="function"?t=wl(t):t=Da(t);for(var e=this._groups,n=e.length,r=[],i=[],o=0;o<n;++o)for(var u=e[o],s=u.length,f,l=0;l<s;++l)(f=u[l])&&(r.push(t.call(f,f.__data__,l,u)),i.push(f));return new zt(r,i)}function Ma(t){return function(){return this.matches(t)}}function Oa(t){return function(e){return e.matches(t)}}var Al=Array.prototype.find;function El(t){return function(){return Al.call(this.children,t)}}function Pl(){return this.firstElementChild}function Cl(t){return this.select(t==null?Pl:El(typeof t=="function"?t:Oa(t)))}var kl=Array.prototype.filter;function Fl(){return Array.from(this.children)}function Ll(t){return function(){return kl.call(this.children,t)}}function zl(t){return this.selectAll(t==null?Fl:Ll(typeof t=="function"?t:Oa(t)))}function Il(t){typeof t!="function"&&(t=Ma(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],u=o.length,s=r[i]=[],f,l=0;l<u;++l)(f=o[l])&&t.call(f,f.__data__,l,o)&&s.push(f);return new zt(r,this._parents)}function Ga(t){return new Array(t.length)}function Rl(){return new zt(this._enter||this._groups.map(Ga),this._parents)}function $r(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}$r.prototype={constructor:$r,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function Dl(t){return function(){return t}}function Ml(t,e,n,r,i,o){for(var u=0,s,f=e.length,l=o.length;u<l;++u)(s=e[u])?(s.__data__=o[u],r[u]=s):n[u]=new $r(t,o[u]);for(;u<f;++u)(s=e[u])&&(i[u]=s)}function Ol(t,e,n,r,i,o,u){var s,f,l=new Map,v=e.length,b=o.length,S=new Array(v),D;for(s=0;s<v;++s)(f=e[s])&&(S[s]=D=u.call(f,f.__data__,s,e)+"",l.has(D)?i[s]=f:l.set(D,f));for(s=0;s<b;++s)D=u.call(t,o[s],s,o)+"",(f=l.get(D))?(r[s]=f,f.__data__=o[s],l.delete(D)):n[s]=new $r(t,o[s]);for(s=0;s<v;++s)(f=e[s])&&l.get(S[s])===f&&(i[s]=f)}function Gl(t){return t.__data__}function Nl(t,e){if(!arguments.length)return Array.from(this,Gl);var n=e?Ol:Ml,r=this._parents,i=this._groups;typeof t!="function"&&(t=Dl(t));for(var o=i.length,u=new Array(o),s=new Array(o),f=new Array(o),l=0;l<o;++l){var v=r[l],b=i[l],S=b.length,D=Bl(t.call(v,v&&v.__data__,l,r)),Z=D.length,we=s[l]=new Array(Z),Se=u[l]=new Array(Z),ae=f[l]=new Array(S);n(v,b,we,Se,ae,D,e);for(var Ne=0,je=0,W,ce;Ne<Z;++Ne)if(W=we[Ne]){for(Ne>=je&&(je=Ne+1);!(ce=Se[je])&&++je<Z;);W._next=ce||null}}return u=new zt(u,r),u._enter=s,u._exit=f,u}function Bl(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Vl(){return new zt(this._exit||this._groups.map(Ga),this._parents)}function $l(t,e,n){var r=this.enter(),i=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),n==null?o.remove():n(o),r&&i?r.merge(i).order():i}function Ul(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,o=r.length,u=Math.min(i,o),s=new Array(i),f=0;f<u;++f)for(var l=n[f],v=r[f],b=l.length,S=s[f]=new Array(b),D,Z=0;Z<b;++Z)(D=l[Z]||v[Z])&&(S[Z]=D);for(;f<i;++f)s[f]=n[f];return new zt(s,this._parents)}function jl(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r=t[e],i=r.length-1,o=r[i],u;--i>=0;)(u=r[i])&&(o&&u.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(u,o),o=u);return this}function Xl(t){t||(t=Hl);function e(b,S){return b&&S?t(b.__data__,S.__data__):!b-!S}for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var u=n[o],s=u.length,f=i[o]=new Array(s),l,v=0;v<s;++v)(l=u[v])&&(f[v]=l);f.sort(e)}return new zt(i,this._parents).order()}function Hl(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function ql(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Wl(){return Array.from(this)}function Yl(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var u=r[i];if(u)return u}return null}function Zl(){let t=0;for(const e of this)++t;return t}function Ql(){return!this.node()}function Kl(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i=e[n],o=0,u=i.length,s;o<u;++o)(s=i[o])&&t.call(s,s.__data__,o,i);return this}function Jl(t){return function(){this.removeAttribute(t)}}function ec(t){return function(){this.removeAttributeNS(t.space,t.local)}}function tc(t,e){return function(){this.setAttribute(t,e)}}function nc(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function rc(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}function ic(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function oc(t,e){var n=Vr(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((e==null?n.local?ec:Jl:typeof e=="function"?n.local?ic:rc:n.local?nc:tc)(n,e))}function Na(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function ac(t){return function(){this.style.removeProperty(t)}}function sc(t,e,n){return function(){this.style.setProperty(t,e,n)}}function uc(t,e,n){return function(){var r=e.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function fc(t,e,n){return arguments.length>1?this.each((e==null?ac:typeof e=="function"?uc:sc)(t,e,n??"")):Xn(this.node(),t)}function Xn(t,e){return t.style.getPropertyValue(e)||Na(t).getComputedStyle(t,null).getPropertyValue(e)}function lc(t){return function(){delete this[t]}}function cc(t,e){return function(){this[t]=e}}function hc(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function dc(t,e){return arguments.length>1?this.each((e==null?lc:typeof e=="function"?hc:cc)(t,e)):this.node()[t]}function Ba(t){return t.trim().split(/^|\s+/)}function to(t){return t.classList||new Va(t)}function Va(t){this._node=t,this._names=Ba(t.getAttribute("class")||"")}Va.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function $a(t,e){for(var n=to(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function Ua(t,e){for(var n=to(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function mc(t){return function(){$a(this,t)}}function pc(t){return function(){Ua(this,t)}}function vc(t,e){return function(){(e.apply(this,arguments)?$a:Ua)(this,t)}}function gc(t,e){var n=Ba(t+"");if(arguments.length<2){for(var r=to(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof e=="function"?vc:e?mc:pc)(n,e))}function yc(){this.textContent=""}function xc(t){return function(){this.textContent=t}}function bc(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function _c(t){return arguments.length?this.each(t==null?yc:(typeof t=="function"?bc:xc)(t)):this.node().textContent}function Sc(){this.innerHTML=""}function wc(t){return function(){this.innerHTML=t}}function Tc(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function Ac(t){return arguments.length?this.each(t==null?Sc:(typeof t=="function"?Tc:wc)(t)):this.node().innerHTML}function Ec(){this.nextSibling&&this.parentNode.appendChild(this)}function Pc(){return this.each(Ec)}function Cc(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function kc(){return this.each(Cc)}function Fc(t){var e=typeof t=="function"?t:Ra(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function Lc(){return null}function zc(t,e){var n=typeof t=="function"?t:Ra(t),r=e==null?Lc:typeof e=="function"?e:eo(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Ic(){var t=this.parentNode;t&&t.removeChild(this)}function Rc(){return this.each(Ic)}function Dc(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Mc(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Oc(t){return this.select(t?Mc:Dc)}function Gc(t){return arguments.length?this.property("__data__",t):this.node().__data__}function Nc(t){return function(e){t.call(this,e,this.__data__)}}function Bc(t){return t.trim().split(/^|\s+/).map(function(e){var n="",r=e.indexOf(".");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function Vc(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,o;n<i;++n)o=e[n],(!t.type||o.type===t.type)&&o.name===t.name?this.removeEventListener(o.type,o.listener,o.options):e[++r]=o;++r?e.length=r:delete this.__on}}}function $c(t,e,n){return function(){var r=this.__on,i,o=Nc(e);if(r){for(var u=0,s=r.length;u<s;++u)if((i=r[u]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=o,i.options=n),i.value=e;return}}this.addEventListener(t.type,o,n),i={type:t.type,name:t.name,value:e,listener:o,options:n},r?r.push(i):this.__on=[i]}}function Uc(t,e,n){var r=Bc(t+""),i,o=r.length,u;if(arguments.length<2){var s=this.node().__on;if(s){for(var f=0,l=s.length,v;f<l;++f)for(i=0,v=s[f];i<o;++i)if((u=r[i]).type===v.type&&u.name===v.name)return v.value}return}for(s=e?$c:Vc,i=0;i<o;++i)this.each(s(r[i],e,n));return this}function ja(t,e,n){var r=Na(t),i=r.CustomEvent;typeof i=="function"?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function jc(t,e){return function(){return ja(this,t,e)}}function Xc(t,e){return function(){return ja(this,t,e.apply(this,arguments))}}function Hc(t,e){return this.each((typeof e=="function"?Xc:jc)(t,e))}function*qc(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length,u;i<o;++i)(u=r[i])&&(yield u)}var Xa=[null];function zt(t,e){this._groups=t,this._parents=e}function cr(){return new zt([[document.documentElement]],Xa)}function Wc(){return this}zt.prototype=cr.prototype={constructor:zt,select:bl,selectAll:Tl,selectChild:Cl,selectChildren:zl,filter:Il,data:Nl,enter:Rl,exit:Vl,join:$l,merge:Ul,selection:Wc,order:jl,sort:Xl,call:ql,nodes:Wl,node:Yl,size:Zl,empty:Ql,each:Kl,attr:oc,style:fc,property:dc,classed:gc,text:_c,html:Ac,raise:Pc,lower:kc,append:Fc,insert:zc,remove:Rc,clone:Oc,datum:Gc,on:Uc,dispatch:Hc,[Symbol.iterator]:qc};function wt(t){return typeof t=="string"?new zt([[document.querySelector(t)]],[document.documentElement]):new zt([[t]],Xa)}function Yc(t){let e;for(;e=t.sourceEvent;)t=e;return t}function sn(t,e){if(t=Yc(t),e===void 0&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,r=r.matrixTransform(e.getScreenCTM().inverse()),[r.x,r.y]}if(e.getBoundingClientRect){var i=e.getBoundingClientRect();return[t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop]}}return[t.pageX,t.pageY]}var Zc={value:()=>{}};function Ur(){for(var t=0,e=arguments.length,n={},r;t<e;++t){if(!(r=arguments[t]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new jr(n)}function jr(t){this._=t}function Qc(t,e){return t.trim().split(/^|\s+/).map(function(n){var r="",i=n.indexOf(".");if(i>=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}jr.prototype=Ur.prototype={constructor:jr,on:function(t,e){var n=this._,r=Qc(t+"",n),i,o=-1,u=r.length;if(arguments.length<2){for(;++o<u;)if((i=(t=r[o]).type)&&(i=Kc(n[i],t.name)))return i;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++o<u;)if(i=(t=r[o]).type)n[i]=Ha(n[i],t.name,e);else if(e==null)for(i in n)n[i]=Ha(n[i],t.name,null);return this},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new jr(t)},call:function(t,e){if((i=arguments.length-2)>0)for(var n=new Array(i),r=0,i,o;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(e,n)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(e,n)}};function Kc(t,e){for(var n=0,r=t.length,i;n<r;++n)if((i=t[n]).name===e)return i.value}function Ha(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=Zc,t=t.slice(0,r).concat(t.slice(r+1));break}return n!=null&&t.push({name:e,value:n}),t}var Hn=0,hr=0,dr=0,qa=1e3,Xr,mr,Hr=0,An=0,qr=0,pr=typeof performance=="object"&&performance.now?performance:Date,Wa=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function no(){return An||(Wa(Jc),An=pr.now()+qr)}function Jc(){An=0}function Wr(){this._call=this._time=this._next=null}Wr.prototype=Ya.prototype={constructor:Wr,restart:function(t,e,n){if(typeof t!="function")throw new TypeError("callback is not a function");n=(n==null?no():+n)+(e==null?0:+e),!this._next&&mr!==this&&(mr?mr._next=this:Xr=this,mr=this),this._call=t,this._time=n,ro()},stop:function(){this._call&&(this._call=null,this._time=1/0,ro())}};function Ya(t,e,n){var r=new Wr;return r.restart(t,e,n),r}function eh(){no(),++Hn;for(var t=Xr,e;t;)(e=An-t._time)>=0&&t._call.call(null,e),t=t._next;--Hn}function Za(){An=(Hr=pr.now())+qr,Hn=hr=0;try{eh()}finally{Hn=0,nh(),An=0}}function th(){var t=pr.now(),e=t-Hr;e>qa&&(qr-=e,Hr=t)}function nh(){for(var t,e=Xr,n,r=1/0;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:Xr=n);mr=t,ro(r)}function ro(t){if(!Hn){hr&&(hr=clearTimeout(hr));var e=t-An;e>24?(t<1/0&&(hr=setTimeout(Za,t-pr.now()-qr)),dr&&(dr=clearInterval(dr))):(dr||(Hr=pr.now(),dr=setInterval(th,qa)),Hn=1,Wa(Za))}}function Qa(t,e,n){var r=new Wr;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}var rh=Ur("start","end","cancel","interrupt"),ih=[],Ka=0,Ja=1,io=2,Yr=3,es=4,oo=5,Zr=6;function Qr(t,e,n,r,i,o){var u=t.__transition;if(!u)t.__transition={};else if(n in u)return;oh(t,n,{name:e,index:r,group:i,on:rh,tween:ih,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Ka})}function ao(t,e){var n=Ut(t,e);if(n.state>Ka)throw new Error("too late; already scheduled");return n}function Jt(t,e){var n=Ut(t,e);if(n.state>Yr)throw new Error("too late; already running");return n}function Ut(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function oh(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=Ya(o,0,n.time);function o(l){n.state=Ja,n.timer.restart(u,n.delay,n.time),n.delay<=l&&u(l-n.delay)}function u(l){var v,b,S,D;if(n.state!==Ja)return f();for(v in r)if(D=r[v],D.name===n.name){if(D.state===Yr)return Qa(u);D.state===es?(D.state=Zr,D.timer.stop(),D.on.call("interrupt",t,t.__data__,D.index,D.group),delete r[v]):+v<e&&(D.state=Zr,D.timer.stop(),D.on.call("cancel",t,t.__data__,D.index,D.group),delete r[v])}if(Qa(function(){n.state===Yr&&(n.state=es,n.timer.restart(s,n.delay,n.time),s(l))}),n.state=io,n.on.call("start",t,t.__data__,n.index,n.group),n.state===io){for(n.state=Yr,i=new Array(S=n.tween.length),v=0,b=-1;v<S;++v)(D=n.tween[v].value.call(t,t.__data__,n.index,n.group))&&(i[++b]=D);i.length=b+1}}function s(l){for(var v=l<n.duration?n.ease.call(null,l/n.duration):(n.timer.restart(f),n.state=oo,1),b=-1,S=i.length;++b<S;)i[b].call(t,v);n.state===oo&&(n.on.call("end",t,t.__data__,n.index,n.group),f())}function f(){n.state=Zr,n.timer.stop(),delete r[e];for(var l in r)return;delete t.__transition}}function Kr(t,e){var n=t.__transition,r,i,o=!0,u;if(n){e=e==null?null:e+"";for(u in n){if((r=n[u]).name!==e){o=!1;continue}i=r.state>io&&r.state<oo,r.state=Zr,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[u]}o&&delete t.__transition}}function ah(t){return this.each(function(){Kr(this,t)})}function so(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function ts(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function vr(){}var gr=.7,Jr=1/gr,qn="\\s*([+-]?\\d+)\\s*",yr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",en="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",sh=/^#([0-9a-f]{3,8})$/,uh=new RegExp(`^rgb\\(${qn},${qn},${qn}\\)$`),fh=new RegExp(`^rgb\\(${en},${en},${en}\\)$`),lh=new RegExp(`^rgba\\(${qn},${qn},${qn},${yr}\\)$`),ch=new RegExp(`^rgba\\(${en},${en},${en},${yr}\\)$`),hh=new RegExp(`^hsl\\(${yr},${en},${en}\\)$`),dh=new RegExp(`^hsla\\(${yr},${en},${en},${yr}\\)$`),ns={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};so(vr,pn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:rs,formatHex:rs,formatHex8:mh,formatHsl:ph,formatRgb:is,toString:is});function rs(){return this.rgb().formatHex()}function mh(){return this.rgb().formatHex8()}function ph(){return fs(this).formatHsl()}function is(){return this.rgb().formatRgb()}function pn(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=sh.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?os(e):n===3?new kt(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?ei(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?ei(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=uh.exec(t))?new kt(e[1],e[2],e[3],1):(e=fh.exec(t))?new kt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=lh.exec(t))?ei(e[1],e[2],e[3],e[4]):(e=ch.exec(t))?ei(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=hh.exec(t))?us(e[1],e[2]/100,e[3]/100,1):(e=dh.exec(t))?us(e[1],e[2]/100,e[3]/100,e[4]):ns.hasOwnProperty(t)?os(ns[t]):t==="transparent"?new kt(NaN,NaN,NaN,0):null}function os(t){return new kt(t>>16&255,t>>8&255,t&255,1)}function ei(t,e,n,r){return r<=0&&(t=e=n=NaN),new kt(t,e,n,r)}function vh(t){return t instanceof vr||(t=pn(t)),t?(t=t.rgb(),new kt(t.r,t.g,t.b,t.opacity)):new kt}function uo(t,e,n,r){return arguments.length===1?vh(t):new kt(t,e,n,r??1)}function kt(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}so(kt,uo,ts(vr,{brighter(t){return t=t==null?Jr:Math.pow(Jr,t),new kt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?gr:Math.pow(gr,t),new kt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new kt(En(this.r),En(this.g),En(this.b),ti(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:as,formatHex:as,formatHex8:gh,formatRgb:ss,toString:ss}));function as(){return`#${Pn(this.r)}${Pn(this.g)}${Pn(this.b)}`}function gh(){return`#${Pn(this.r)}${Pn(this.g)}${Pn(this.b)}${Pn((isNaN(this.opacity)?1:this.opacity)*255)}`}function ss(){const t=ti(this.opacity);return`${t===1?"rgb(":"rgba("}${En(this.r)}, ${En(this.g)}, ${En(this.b)}${t===1?")":`, ${t})`}`}function ti(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function En(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Pn(t){return t=En(t),(t<16?"0":"")+t.toString(16)}function us(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new jt(t,e,n,r)}function fs(t){if(t instanceof jt)return new jt(t.h,t.s,t.l,t.opacity);if(t instanceof vr||(t=pn(t)),!t)return new jt;if(t instanceof jt)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),u=NaN,s=o-i,f=(o+i)/2;return s?(e===o?u=(n-r)/s+(n<r)*6:n===o?u=(r-e)/s+2:u=(e-n)/s+4,s/=f<.5?o+i:2-o-i,u*=60):s=f>0&&f<1?0:u,new jt(u,s,f,t.opacity)}function yh(t,e,n,r){return arguments.length===1?fs(t):new jt(t,e,n,r??1)}function jt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}so(jt,yh,ts(vr,{brighter(t){return t=t==null?Jr:Math.pow(Jr,t),new jt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?gr:Math.pow(gr,t),new jt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new kt(fo(t>=240?t-240:t+120,i,r),fo(t,i,r),fo(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new jt(ls(this.h),ni(this.s),ni(this.l),ti(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=ti(this.opacity);return`${t===1?"hsl(":"hsla("}${ls(this.h)}, ${ni(this.s)*100}%, ${ni(this.l)*100}%${t===1?")":`, ${t})`}`}}));function ls(t){return t=(t||0)%360,t<0?t+360:t}function ni(t){return Math.max(0,Math.min(1,t||0))}function fo(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const lo=t=>()=>t;function xh(t,e){return function(n){return t+n*e}}function bh(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function _h(t){return(t=+t)==1?cs:function(e,n){return n-e?bh(e,n,t):lo(isNaN(e)?n:e)}}function cs(t,e){var n=e-t;return n?xh(t,n):lo(isNaN(t)?e:t)}const ri=function t(e){var n=_h(e);function r(i,o){var u=n((i=uo(i)).r,(o=uo(o)).r),s=n(i.g,o.g),f=n(i.b,o.b),l=cs(i.opacity,o.opacity);return function(v){return i.r=u(v),i.g=s(v),i.b=f(v),i.opacity=l(v),i+""}}return r.gamma=t,r}(1);function Sh(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function wh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Th(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),u;for(u=0;u<r;++u)i[u]=mo(t[u],e[u]);for(;u<n;++u)o[u]=e[u];return function(s){for(u=0;u<r;++u)o[u]=i[u](s);return o}}function Ah(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Xt(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Eh(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=mo(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var co=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,ho=new RegExp(co.source,"g");function Ph(t){return function(){return t}}function Ch(t){return function(e){return t(e)+""}}function hs(t,e){var n=co.lastIndex=ho.lastIndex=0,r,i,o,u=-1,s=[],f=[];for(t=t+"",e=e+"";(r=co.exec(t))&&(i=ho.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),s[u]?s[u]+=o:s[++u]=o),(r=r[0])===(i=i[0])?s[u]?s[u]+=i:s[++u]=i:(s[++u]=null,f.push({i:u,x:Xt(r,i)})),n=ho.lastIndex;return n<e.length&&(o=e.slice(n),s[u]?s[u]+=o:s[++u]=o),s.length<2?f[0]?Ch(f[0].x):Ph(e):(e=f.length,function(l){for(var v=0,b;v<e;++v)s[(b=f[v]).i]=b.x(l);return s.join("")})}function mo(t,e){var n=typeof e,r;return e==null||n==="boolean"?lo(e):(n==="number"?Xt:n==="string"?(r=pn(e))?(e=r,ri):hs:e instanceof pn?ri:e instanceof Date?Ah:wh(e)?Sh:Array.isArray(e)?Th:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Eh:Xt)(t,e)}function kh(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var ds=180/Math.PI,po={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ms(t,e,n,r,i,o){var u,s,f;return(u=Math.sqrt(t*t+e*e))&&(t/=u,e/=u),(f=t*n+e*r)&&(n-=t*f,r-=e*f),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,f/=s),t*r<e*n&&(t=-t,e=-e,f=-f,u=-u),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*ds,skewX:Math.atan(f)*ds,scaleX:u,scaleY:s}}var ii;function Fh(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?po:ms(e.a,e.b,e.c,e.d,e.e,e.f)}function Lh(t){return t==null||(ii||(ii=document.createElementNS("http://www.w3.org/2000/svg","g")),ii.setAttribute("transform",t),!(t=ii.transform.baseVal.consolidate()))?po:(t=t.matrix,ms(t.a,t.b,t.c,t.d,t.e,t.f))}function ps(t,e,n,r){function i(l){return l.length?l.pop()+" ":""}function o(l,v,b,S,D,Z){if(l!==b||v!==S){var we=D.push("translate(",null,e,null,n);Z.push({i:we-4,x:Xt(l,b)},{i:we-2,x:Xt(v,S)})}else(b||S)&&D.push("translate("+b+e+S+n)}function u(l,v,b,S){l!==v?(l-v>180?v+=360:v-l>180&&(l+=360),S.push({i:b.push(i(b)+"rotate(",null,r)-2,x:Xt(l,v)})):v&&b.push(i(b)+"rotate("+v+r)}function s(l,v,b,S){l!==v?S.push({i:b.push(i(b)+"skewX(",null,r)-2,x:Xt(l,v)}):v&&b.push(i(b)+"skewX("+v+r)}function f(l,v,b,S,D,Z){if(l!==b||v!==S){var we=D.push(i(D)+"scale(",null,",",null,")");Z.push({i:we-4,x:Xt(l,b)},{i:we-2,x:Xt(v,S)})}else(b!==1||S!==1)&&D.push(i(D)+"scale("+b+","+S+")")}return function(l,v){var b=[],S=[];return l=t(l),v=t(v),o(l.translateX,l.translateY,v.translateX,v.translateY,b,S),u(l.rotate,v.rotate,b,S),s(l.skewX,v.skewX,b,S),f(l.scaleX,l.scaleY,v.scaleX,v.scaleY,b,S),l=v=null,function(D){for(var Z=-1,we=S.length,Se;++Z<we;)b[(Se=S[Z]).i]=Se.x(D);return b.join("")}}}var zh=ps(Fh,"px, ","px)","deg)"),Ih=ps(Lh,", ",")",")"),Rh=1e-12;function vs(t){return((t=Math.exp(t))+1/t)/2}function Dh(t){return((t=Math.exp(t))-1/t)/2}function Mh(t){return((t=Math.exp(2*t))-1)/(t+1)}const Oh=function t(e,n,r){function i(o,u){var s=o[0],f=o[1],l=o[2],v=u[0],b=u[1],S=u[2],D=v-s,Z=b-f,we=D*D+Z*Z,Se,ae;if(we<Rh)ae=Math.log(S/l)/e,Se=function(Me){return[s+Me*D,f+Me*Z,l*Math.exp(e*Me*ae)]};else{var Ne=Math.sqrt(we),je=(S*S-l*l+r*we)/(2*l*n*Ne),W=(S*S-l*l-r*we)/(2*S*n*Ne),ce=Math.log(Math.sqrt(je*je+1)-je),Le=Math.log(Math.sqrt(W*W+1)-W);ae=(Le-ce)/e,Se=function(Me){var Xe=Me*ae,et=vs(ce),nt=l/(n*Ne)*(et*Mh(e*Xe+ce)-Dh(ce));return[s+nt*D,f+nt*Z,l*et/vs(e*Xe+ce)]}}return Se.duration=ae*1e3*e/Math.SQRT2,Se}return i.rho=function(o){var u=Math.max(.001,+o),s=u*u,f=s*s;return t(u,s,f)},i}(Math.SQRT2,2,4);function Gh(t,e){var n,r;return function(){var i=Jt(this,t),o=i.tween;if(o!==n){r=n=o;for(var u=0,s=r.length;u<s;++u)if(r[u].name===e){r=r.slice(),r.splice(u,1);break}}i.tween=r}}function Nh(t,e,n){var r,i;if(typeof n!="function")throw new Error;return function(){var o=Jt(this,t),u=o.tween;if(u!==r){i=(r=u).slice();for(var s={name:e,value:n},f=0,l=i.length;f<l;++f)if(i[f].name===e){i[f]=s;break}f===l&&i.push(s)}o.tween=i}}function Bh(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r=Ut(this.node(),n).tween,i=0,o=r.length,u;i<o;++i)if((u=r[i]).name===t)return u.value;return null}return this.each((e==null?Gh:Nh)(n,t,e))}function vo(t,e,n){var r=t._id;return t.each(function(){var i=Jt(this,r);(i.value||(i.value={}))[e]=n.apply(this,arguments)}),function(i){return Ut(i,r).value[e]}}function gs(t,e){var n;return(typeof e=="number"?Xt:e instanceof pn?ri:(n=pn(e))?(e=n,ri):hs)(t,e)}function Vh(t){return function(){this.removeAttribute(t)}}function $h(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Uh(t,e,n){var r,i=n+"",o;return function(){var u=this.getAttribute(t);return u===i?null:u===r?o:o=e(r=u,n)}}function jh(t,e,n){var r,i=n+"",o;return function(){var u=this.getAttributeNS(t.space,t.local);return u===i?null:u===r?o:o=e(r=u,n)}}function Xh(t,e,n){var r,i,o;return function(){var u,s=n(this),f;return s==null?void this.removeAttribute(t):(u=this.getAttribute(t),f=s+"",u===f?null:u===r&&f===i?o:(i=f,o=e(r=u,s)))}}function Hh(t,e,n){var r,i,o;return function(){var u,s=n(this),f;return s==null?void this.removeAttributeNS(t.space,t.local):(u=this.getAttributeNS(t.space,t.local),f=s+"",u===f?null:u===r&&f===i?o:(i=f,o=e(r=u,s)))}}function qh(t,e){var n=Vr(t),r=n==="transform"?Ih:gs;return this.attrTween(t,typeof e=="function"?(n.local?Hh:Xh)(n,r,vo(this,"attr."+t,e)):e==null?(n.local?$h:Vh)(n):(n.local?jh:Uh)(n,r,e))}function Wh(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function Yh(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function Zh(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&Yh(t,o)),n}return i._value=e,i}function Qh(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&Wh(t,o)),n}return i._value=e,i}function Kh(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;var r=Vr(t);return this.tween(n,(r.local?Zh:Qh)(r,e))}function Jh(t,e){return function(){ao(this,t).delay=+e.apply(this,arguments)}}function ed(t,e){return e=+e,function(){ao(this,t).delay=e}}function td(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Jh:ed)(e,t)):Ut(this.node(),e).delay}function nd(t,e){return function(){Jt(this,t).duration=+e.apply(this,arguments)}}function rd(t,e){return e=+e,function(){Jt(this,t).duration=e}}function id(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?nd:rd)(e,t)):Ut(this.node(),e).duration}function od(t,e){if(typeof e!="function")throw new Error;return function(){Jt(this,t).ease=e}}function ad(t){var e=this._id;return arguments.length?this.each(od(e,t)):Ut(this.node(),e).ease}function sd(t,e){return function(){var n=e.apply(this,arguments);if(typeof n!="function")throw new Error;Jt(this,t).ease=n}}function ud(t){if(typeof t!="function")throw new Error;return this.each(sd(this._id,t))}function fd(t){typeof t!="function"&&(t=Ma(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],u=o.length,s=r[i]=[],f,l=0;l<u;++l)(f=o[l])&&t.call(f,f.__data__,l,o)&&s.push(f);return new un(r,this._parents,this._name,this._id)}function ld(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),u=new Array(r),s=0;s<o;++s)for(var f=e[s],l=n[s],v=f.length,b=u[s]=new Array(v),S,D=0;D<v;++D)(S=f[D]||l[D])&&(b[D]=S);for(;s<r;++s)u[s]=e[s];return new un(u,this._parents,this._name,this._id)}function cd(t){return(t+"").trim().split(/^|\s+/).every(function(e){var n=e.indexOf(".");return n>=0&&(e=e.slice(0,n)),!e||e==="start"})}function hd(t,e,n){var r,i,o=cd(e)?ao:Jt;return function(){var u=o(this,t),s=u.on;s!==r&&(i=(r=s).copy()).on(e,n),u.on=i}}function dd(t,e){var n=this._id;return arguments.length<2?Ut(this.node(),n).on.on(t):this.each(hd(n,t,e))}function md(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function pd(){return this.on("end.remove",md(this._id))}function vd(t){var e=this._name,n=this._id;typeof t!="function"&&(t=eo(t));for(var r=this._groups,i=r.length,o=new Array(i),u=0;u<i;++u)for(var s=r[u],f=s.length,l=o[u]=new Array(f),v,b,S=0;S<f;++S)(v=s[S])&&(b=t.call(v,v.__data__,S,s))&&("__data__"in v&&(b.__data__=v.__data__),l[S]=b,Qr(l[S],e,n,S,l,Ut(v,n)));return new un(o,this._parents,e,n)}function gd(t){var e=this._name,n=this._id;typeof t!="function"&&(t=Da(t));for(var r=this._groups,i=r.length,o=[],u=[],s=0;s<i;++s)for(var f=r[s],l=f.length,v,b=0;b<l;++b)if(v=f[b]){for(var S=t.call(v,v.__data__,b,f),D,Z=Ut(v,n),we=0,Se=S.length;we<Se;++we)(D=S[we])&&Qr(D,e,n,we,S,Z);o.push(S),u.push(v)}return new un(o,u,e,n)}var yd=cr.prototype.constructor;function xd(){return new yd(this._groups,this._parents)}function bd(t,e){var n,r,i;return function(){var o=Xn(this,t),u=(this.style.removeProperty(t),Xn(this,t));return o===u?null:o===n&&u===r?i:i=e(n=o,r=u)}}function ys(t){return function(){this.style.removeProperty(t)}}function _d(t,e,n){var r,i=n+"",o;return function(){var u=Xn(this,t);return u===i?null:u===r?o:o=e(r=u,n)}}function Sd(t,e,n){var r,i,o;return function(){var u=Xn(this,t),s=n(this),f=s+"";return s==null&&(f=s=(this.style.removeProperty(t),Xn(this,t))),u===f?null:u===r&&f===i?o:(i=f,o=e(r=u,s))}}function wd(t,e){var n,r,i,o="style."+e,u="end."+o,s;return function(){var f=Jt(this,t),l=f.on,v=f.value[o]==null?s||(s=ys(e)):void 0;(l!==n||i!==v)&&(r=(n=l).copy()).on(u,i=v),f.on=r}}function Td(t,e,n){var r=(t+="")=="transform"?zh:gs;return e==null?this.styleTween(t,bd(t,r)).on("end.style."+t,ys(t)):typeof e=="function"?this.styleTween(t,Sd(t,r,vo(this,"style."+t,e))).each(wd(this._id,t)):this.styleTween(t,_d(t,r,e),n).on("end.style."+t,null)}function Ad(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function Ed(t,e,n){var r,i;function o(){var u=e.apply(this,arguments);return u!==i&&(r=(i=u)&&Ad(t,u,n)),r}return o._value=e,o}function Pd(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;return this.tween(r,Ed(t,e,n??""))}function Cd(t){return function(){this.textContent=t}}function kd(t){return function(){var e=t(this);this.textContent=e??""}}function Fd(t){return this.tween("text",typeof t=="function"?kd(vo(this,"text",t)):Cd(t==null?"":t+""))}function Ld(t){return function(e){this.textContent=t.call(this,e)}}function zd(t){var e,n;function r(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&Ld(i)),e}return r._value=t,r}function Id(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,zd(t))}function Rd(){for(var t=this._name,e=this._id,n=xs(),r=this._groups,i=r.length,o=0;o<i;++o)for(var u=r[o],s=u.length,f,l=0;l<s;++l)if(f=u[l]){var v=Ut(f,e);Qr(f,t,n,l,u,{time:v.time+v.delay+v.duration,delay:0,duration:v.duration,ease:v.ease})}return new un(r,this._parents,t,n)}function Dd(){var t,e,n=this,r=n._id,i=n.size();return new Promise(function(o,u){var s={value:u},f={value:function(){--i===0&&o()}};n.each(function(){var l=Jt(this,r),v=l.on;v!==t&&(e=(t=v).copy(),e._.cancel.push(s),e._.interrupt.push(s),e._.end.push(f)),l.on=e}),i===0&&o()})}var Md=0;function un(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function xs(){return++Md}var fn=cr.prototype;un.prototype={constructor:un,select:vd,selectAll:gd,selectChild:fn.selectChild,selectChildren:fn.selectChildren,filter:fd,merge:ld,selection:xd,transition:Rd,call:fn.call,nodes:fn.nodes,node:fn.node,size:fn.size,empty:fn.empty,each:fn.each,on:dd,attr:qh,attrTween:Kh,style:Td,styleTween:Pd,text:Fd,textTween:Id,remove:pd,tween:Bh,delay:td,duration:id,ease:ad,easeVarying:ud,end:Dd,[Symbol.iterator]:fn[Symbol.iterator]};function Od(t){return t*t}function Gd(t){return t*(2-t)}function Nd(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function Bd(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var Vd={time:null,delay:0,duration:250,ease:Bd};function $d(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function Ud(t){var e,n;t instanceof un?(e=t._id,t=t._name):(e=xs(),(n=Vd).time=no(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var u=r[o],s=u.length,f,l=0;l<s;++l)(f=u[l])&&Qr(f,t,e,l,u,n||$d(f,e));return new un(r,this._parents,t,e)}cr.prototype.interrupt=ah,cr.prototype.transition=Ud;function go(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function jd(t){if(Object.prototype.hasOwnProperty.call(t,"__esModule"))return t;var e=t.default;if(typeof e=="function"){var n=function r(){return this instanceof r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(r){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}),n}var oi={exports:{}},Xd=oi.exports,bs;function Hd(){return bs||(bs=1,function(t,e){(function(n,r){t.exports=r()})(Xd,function(){var n=function(a){return a instanceof Uint8Array||a instanceof Uint16Array||a instanceof Uint32Array||a instanceof Int8Array||a instanceof Int16Array||a instanceof Int32Array||a instanceof Float32Array||a instanceof Float64Array||a instanceof Uint8ClampedArray},r=function(a,h){for(var _=Object.keys(h),R=0;R<_.length;++R)a[_[R]]=h[_[R]];return a},i=`
|
|
2
|
-
`;function o(a){return typeof atob<"u"?atob(a):"base64:"+a}function
|
|
3
|
-
`),
|
|
4
|
-
`).forEach(function(_){if(!(_.length<5)){var
|
|
5
|
-
`,"color:red;text-decoration:underline;font-weight:bold"),ie.lines.forEach(function(te){if(te.errors.length>0){K(ae(te.number,4)+"| ","background-color:yellow; font-weight:bold"),K(te.line+i,"color:red; background-color:yellow; font-weight:bold");var C=0;te.errors.forEach(function(O){var ee=O.message,ge=/^\s*'(.*)'\s*:\s*(.*)$/.exec(ee);if(ge){var q=ge[1];switch(ee=ge[2],q){case"assign":q="=";break}C=Math.max(te.line.indexOf(q,C),0)}else C=0;K(ae("| ",6)),K(ae("^^^",C+3)+i,"font-weight:bold"),K(ae("| ",6)),K(ee+i,"font-weight:bold")}),K(ae("| ",6)+i)}else K(ae(te.number,4)+"| "),K(te.line+i,"color:red")}),typeof document<"u"&&!window.chrome?(ue[0]=re.join("%c"),console.log.apply(console,ue)):console.log(re.join(""))}),s.raise("Error compiling "+N+" shader, "+Q[0].name)}}function ke(a,h,_,R,U){if(!a.getProgramParameter(h,a.LINK_STATUS)){var I=a.getProgramInfoLog(h),N=Me(_,U),Q=Me(R,U),Y='Error linking program with vertex shader, "'+Q[0].name+'", and fragment shader "'+N[0].name+'"';typeof document<"u"?console.log("%c"+Y+i+"%c"+I,"color:red;text-decoration:underline;font-weight:bold","color:red"):console.log(Y+i+I),s.raise(Y)}}function it(a){a._commandRef=ce()}function tt(a,h,_,R){it(a);function U(Y){return Y?R.id(Y):0}a._fragId=U(a.static.frag),a._vertId=U(a.static.vert);function I(Y,ne){Object.keys(ne).forEach(function(ie){Y[R.id(ie)]=!0})}var N=a._uniformSet={};I(N,h.static),I(N,h.dynamic);var Q=a._attributeSet={};I(Q,_.static),I(Q,_.dynamic),a._hasCount="count"in a.static||"count"in a.dynamic||"elements"in a.static||"elements"in a.dynamic}function G(a,h){var _=Le();u(a+" in command "+(h||ce())+(_==="unknown"?"":" called from "+_))}function Ae(a,h,_){a||G(h,_||ce())}function oe(a,h,_,R){a in h||G("unknown parameter ("+a+")"+f(_)+". possible values: "+Object.keys(h).join(),R||ce())}function Pe(a,h,_,R){b(a,h)||G("invalid parameter type"+f(_)+". expected "+h+", got "+typeof a,R||ce())}function Ue(a){a()}function Ve(a,h,_){a.texture?Z(a.texture._texture.internalformat,h,"unsupported texture format for attachment"):Z(a.renderbuffer._renderbuffer.format,_,"unsupported renderbuffer format for attachment")}var Ye=33071,rt=9728,ft=9984,Bt=9985,_t=9986,It=9987,Yt=5120,Rt=5121,Zt=5122,Sr=5123,C0=5124,k0=5125,hu=5126,du=32819,mu=32820,pu=33635,vu=34042,F0=36193,Dt={};Dt[Yt]=Dt[Rt]=1,Dt[Zt]=Dt[Sr]=Dt[F0]=Dt[pu]=Dt[du]=Dt[mu]=2,Dt[C0]=Dt[k0]=Dt[hu]=Dt[vu]=4;function gu(a,h){return a===mu||a===du||a===pu?2:a===vu?4:Dt[a]*h}function _i(a){return!(a&a-1)&&!!a}function L0(a,h,_){var R,U=h.width,I=h.height,N=h.channels;s(U>0&&U<=_.maxTextureSize&&I>0&&I<=_.maxTextureSize,"invalid texture shape"),(a.wrapS!==Ye||a.wrapT!==Ye)&&s(_i(U)&&_i(I),"incompatible wrap mode for texture, both width and height must be power of 2"),h.mipmask===1?U!==1&&I!==1&&s(a.minFilter!==ft&&a.minFilter!==_t&&a.minFilter!==Bt&&a.minFilter!==It,"min filter requires mipmap"):(s(_i(U)&&_i(I),"texture must be a square power of 2 to support mipmapping"),s(h.mipmask===(U<<1)-1,"missing or incomplete mipmap data")),h.type===hu&&(_.extensions.indexOf("oes_texture_float_linear")<0&&s(a.minFilter===rt&&a.magFilter===rt,"filter not supported, must enable oes_texture_float_linear"),s(!a.genMipmaps,"mipmap generation not supported with float textures"));var Q=h.images;for(R=0;R<16;++R)if(Q[R]){var Y=U>>R,ne=I>>R;s(h.mipmask&1<<R,"missing mipmap data");var ie=Q[R];if(s(ie.width===Y&&ie.height===ne,"invalid shape for mip images"),s(ie.format===h.format&&ie.internalformat===h.internalformat&&ie.type===h.type,"incompatible type for mip image"),!ie.compressed)if(ie.data){var re=Math.ceil(gu(ie.type,N)*Y/ie.unpackAlignment)*ie.unpackAlignment;s(ie.data.byteLength===re*ne,"invalid data for image, buffer size is inconsistent with image format")}else ie.element||ie.copy}else a.genMipmaps||s((h.mipmask&1<<R)===0,"extra mipmap data");h.compressed&&s(!a.genMipmaps,"mipmap generation for compressed images not supported")}function z0(a,h,_,R){var U=a.width,I=a.height,N=a.channels;s(U>0&&U<=R.maxTextureSize&&I>0&&I<=R.maxTextureSize,"invalid texture shape"),s(U===I,"cube map must be square"),s(h.wrapS===Ye&&h.wrapT===Ye,"wrap mode not supported by cube map");for(var Q=0;Q<_.length;++Q){var Y=_[Q];s(Y.width===U&&Y.height===I,"inconsistent cube map face shape"),h.genMipmaps&&(s(!Y.compressed,"can not generate mipmap for compressed textures"),s(Y.mipmask===1,"can not specify mipmaps and generate mipmaps"));for(var ne=Y.images,ie=0;ie<16;++ie){var re=ne[ie];if(re){var ue=U>>ie,K=I>>ie;s(Y.mipmask&1<<ie,"missing mipmap data"),s(re.width===ue&&re.height===K,"invalid shape for mip images"),s(re.format===a.format&&re.internalformat===a.internalformat&&re.type===a.type,"incompatible type for mip image"),re.compressed||(re.data?s(re.data.byteLength===ue*K*Math.max(gu(re.type,N),re.unpackAlignment),"invalid data for image, buffer size is inconsistent with image format"):re.element||re.copy)}}}}var d=r(s,{optional:Ue,raise:u,commandRaise:G,command:Ae,parameter:l,commandParameter:oe,constructor:Se,type:S,commandType:Pe,isTypedArray:v,nni:D,oneOf:Z,shaderError:nt,linkError:ke,callSite:Le,saveCommandRef:it,saveDrawInfo:tt,framebufferFormat:Ve,guessCommand:ce,texture2D:L0,textureCube:z0}),I0=0,R0=0,D0=5,M0=6;function Fn(a,h){this.id=I0++,this.type=a,this.data=h}function yu(a){return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function wr(a){if(a.length===0)return[];var h=a.charAt(0),_=a.charAt(a.length-1);if(a.length>1&&h===_&&(h==='"'||h==="'"))return['"'+yu(a.substr(1,a.length-2))+'"'];var R=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(a);if(R)return wr(a.substr(0,R.index)).concat(wr(R[1])).concat(wr(a.substr(R.index+R[0].length)));var U=a.split(".");if(U.length===1)return['"'+yu(a)+'"'];for(var I=[],N=0;N<U.length;++N)I=I.concat(wr(U[N]));return I}function xu(a){return"["+wr(a).join("][")+"]"}function O0(a,h){return new Fn(a,xu(h+""))}function G0(a){return typeof a=="function"&&!a._reglType||a instanceof Fn}function bu(a,h){if(typeof a=="function")return new Fn(R0,a);if(typeof a=="number"||typeof a=="boolean")return new Fn(D0,a);if(Array.isArray(a))return new Fn(M0,a.map(function(_,R){return bu(_,h+"["+R+"]")}));if(a instanceof Fn)return a;d(!1,"invalid option type in uniform "+h)}var Mt={DynamicVariable:Fn,define:O0,isDynamic:G0,unbox:bu,accessor:xu},Mo={next:typeof requestAnimationFrame=="function"?function(a){return requestAnimationFrame(a)}:function(a){return setTimeout(a,16)},cancel:typeof cancelAnimationFrame=="function"?function(a){return cancelAnimationFrame(a)}:clearTimeout},_u=typeof performance<"u"&&performance.now?function(){return performance.now()}:function(){return+new Date};function N0(){var a={"":0},h=[""];return{id:function(_){var R=a[_];return R||(R=a[_]=h.length,h.push(_),R)},str:function(_){return h[_]}}}function B0(a,h,_){var R=document.createElement("canvas");r(R.style,{border:0,margin:0,padding:0,top:0,left:0,width:"100%",height:"100%"}),a.appendChild(R),a===document.body&&(R.style.position="absolute",r(a.style,{margin:0,padding:0}));function U(){var Q=window.innerWidth,Y=window.innerHeight;if(a!==document.body){var ne=R.getBoundingClientRect();Q=ne.right-ne.left,Y=ne.bottom-ne.top}R.width=_*Q,R.height=_*Y}var I;a!==document.body&&typeof ResizeObserver=="function"?(I=new ResizeObserver(function(){setTimeout(U)}),I.observe(a)):window.addEventListener("resize",U,!1);function N(){I?I.disconnect():window.removeEventListener("resize",U),a.removeChild(R)}return U(),{canvas:R,onDestroy:N}}function V0(a,h){function _(R){try{return a.getContext(R,h)}catch{return null}}return _("webgl")||_("experimental-webgl")||_("webgl-experimental")}function $0(a){return typeof a.nodeName=="string"&&typeof a.appendChild=="function"&&typeof a.getBoundingClientRect=="function"}function U0(a){return typeof a.drawArrays=="function"||typeof a.drawElements=="function"}function Su(a){return typeof a=="string"?a.split():(d(Array.isArray(a),"invalid extension array"),a)}function wu(a){return typeof a=="string"?(d(typeof document<"u","not supported outside of DOM"),document.querySelector(a)):a}function j0(a){var h=a||{},_,R,U,I,N={},Q=[],Y=[],ne=typeof window>"u"?1:window.devicePixelRatio,ie=!1,re=function(te){te&&d.raise(te)},ue=function(){};if(typeof h=="string"?(d(typeof document<"u","selector queries only supported in DOM enviroments"),_=document.querySelector(h),d(_,"invalid query string for element")):typeof h=="object"?$0(h)?_=h:U0(h)?(I=h,U=I.canvas):(d.constructor(h),"gl"in h?I=h.gl:"canvas"in h?U=wu(h.canvas):"container"in h&&(R=wu(h.container)),"attributes"in h&&(N=h.attributes,d.type(N,"object","invalid context attributes")),"extensions"in h&&(Q=Su(h.extensions)),"optionalExtensions"in h&&(Y=Su(h.optionalExtensions)),"onDone"in h&&(d.type(h.onDone,"function","invalid or missing onDone callback"),re=h.onDone),"profile"in h&&(ie=!!h.profile),"pixelRatio"in h&&(ne=+h.pixelRatio,d(ne>0,"invalid pixel ratio"))):d.raise("invalid arguments to regl"),_&&(_.nodeName.toLowerCase()==="canvas"?U=_:R=_),!I){if(!U){d(typeof document<"u","must manually specify webgl context outside of DOM environments");var K=B0(R||document.body,re,ne);if(!K)return null;U=K.canvas,ue=K.onDestroy}N.premultipliedAlpha===void 0&&(N.premultipliedAlpha=!0),I=V0(U,N)}return I?{gl:I,canvas:U,container:R,extensions:Q,optionalExtensions:Y,pixelRatio:ne,profile:ie,onDone:re,onDestroy:ue}:(ue(),re("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"),null)}function X0(a,h){var _={};function R(N){d.type(N,"string","extension name must be string");var Q=N.toLowerCase(),Y;try{Y=_[Q]=a.getExtension(Q)}catch{}return!!Y}for(var U=0;U<h.extensions.length;++U){var I=h.extensions[U];if(!R(I))return h.onDestroy(),h.onDone('"'+I+'" extension is not supported by the current WebGL context, try upgrading your system or a different browser'),null}return h.optionalExtensions.forEach(R),{extensions:_,restore:function(){Object.keys(_).forEach(function(N){if(_[N]&&!R(N))throw new Error("(regl): error restoring extension "+N)})}}}function Ot(a,h){for(var _=Array(a),R=0;R<a;++R)_[R]=h(R);return _}var H0=5120,q0=5121,W0=5122,Y0=5123,Z0=5124,Q0=5125,K0=5126;function J0(a){for(var h=16;h<=1<<28;h*=16)if(a<=h)return h;return 0}function Tu(a){var h,_;return h=(a>65535)<<4,a>>>=h,_=(a>255)<<3,a>>>=_,h|=_,_=(a>15)<<2,a>>>=_,h|=_,_=(a>3)<<1,a>>>=_,h|=_,h|a>>1}function Au(){var a=Ot(8,function(){return[]});function h(I){var N=J0(I),Q=a[Tu(N)>>2];return Q.length>0?Q.pop():new ArrayBuffer(N)}function _(I){a[Tu(I.byteLength)>>2].push(I)}function R(I,N){var Q=null;switch(I){case H0:Q=new Int8Array(h(N),0,N);break;case q0:Q=new Uint8Array(h(N),0,N);break;case W0:Q=new Int16Array(h(2*N),0,N);break;case Y0:Q=new Uint16Array(h(2*N),0,N);break;case Z0:Q=new Int32Array(h(4*N),0,N);break;case Q0:Q=new Uint32Array(h(4*N),0,N);break;case K0:Q=new Float32Array(h(4*N),0,N);break;default:return null}return Q.length!==N?Q.subarray(0,N):Q}function U(I){_(I.buffer)}return{alloc:h,free:_,allocType:R,freeType:U}}var ht=Au();ht.zero=Au();var ev=3408,tv=3410,nv=3411,rv=3412,iv=3413,ov=3414,av=3415,sv=33901,uv=33902,fv=3379,lv=3386,cv=34921,hv=36347,dv=36348,mv=35661,pv=35660,vv=34930,gv=36349,yv=34076,xv=34024,bv=7936,_v=7937,Sv=7938,wv=35724,Tv=34047,Av=36063,Ev=34852,Si=3553,Eu=34067,Pv=34069,Cv=33984,Tr=6408,Oo=5126,Pu=5121,Go=36160,kv=36053,Fv=36064,Lv=16384,zv=function(a,h){var _=1;h.ext_texture_filter_anisotropic&&(_=a.getParameter(Tv));var R=1,U=1;h.webgl_draw_buffers&&(R=a.getParameter(Ev),U=a.getParameter(Av));var I=!!h.oes_texture_float;if(I){var N=a.createTexture();a.bindTexture(Si,N),a.texImage2D(Si,0,Tr,1,1,0,Tr,Oo,null);var Q=a.createFramebuffer();if(a.bindFramebuffer(Go,Q),a.framebufferTexture2D(Go,Fv,Si,N,0),a.bindTexture(Si,null),a.checkFramebufferStatus(Go)!==kv)I=!1;else{a.viewport(0,0,1,1),a.clearColor(1,0,0,1),a.clear(Lv);var Y=ht.allocType(Oo,4);a.readPixels(0,0,1,1,Tr,Oo,Y),a.getError()?I=!1:(a.deleteFramebuffer(Q),a.deleteTexture(N),I=Y[0]===1),ht.freeType(Y)}}var ne=typeof navigator<"u"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent)),ie=!0;if(!ne){var re=a.createTexture(),ue=ht.allocType(Pu,36);a.activeTexture(Cv),a.bindTexture(Eu,re),a.texImage2D(Pv,0,Tr,3,3,0,Tr,Pu,ue),ht.freeType(ue),a.bindTexture(Eu,null),a.deleteTexture(re),ie=!a.getError()}return{colorBits:[a.getParameter(tv),a.getParameter(nv),a.getParameter(rv),a.getParameter(iv)],depthBits:a.getParameter(ov),stencilBits:a.getParameter(av),subpixelBits:a.getParameter(ev),extensions:Object.keys(h).filter(function(K){return!!h[K]}),maxAnisotropic:_,maxDrawbuffers:R,maxColorAttachments:U,pointSizeDims:a.getParameter(sv),lineWidthDims:a.getParameter(uv),maxViewportDims:a.getParameter(lv),maxCombinedTextureUnits:a.getParameter(mv),maxCubeMapSize:a.getParameter(yv),maxRenderbufferSize:a.getParameter(xv),maxTextureUnits:a.getParameter(vv),maxTextureSize:a.getParameter(fv),maxAttributes:a.getParameter(cv),maxVertexUniforms:a.getParameter(hv),maxVertexTextureUnits:a.getParameter(pv),maxVaryingVectors:a.getParameter(dv),maxFragmentUniforms:a.getParameter(gv),glsl:a.getParameter(wv),renderer:a.getParameter(_v),vendor:a.getParameter(bv),version:a.getParameter(Sv),readFloat:I,npotTextureCube:ie}};function Qt(a){return!!a&&typeof a=="object"&&Array.isArray(a.shape)&&Array.isArray(a.stride)&&typeof a.offset=="number"&&a.shape.length===a.stride.length&&(Array.isArray(a.data)||n(a.data))}var Gt=function(a){return Object.keys(a).map(function(h){return a[h]})},wi={shape:Mv,flatten:Dv};function Iv(a,h,_){for(var R=0;R<h;++R)_[R]=a[R]}function Rv(a,h,_,R){for(var U=0,I=0;I<h;++I)for(var N=a[I],Q=0;Q<_;++Q)R[U++]=N[Q]}function Cu(a,h,_,R,U,I){for(var N=I,Q=0;Q<h;++Q)for(var Y=a[Q],ne=0;ne<_;++ne)for(var ie=Y[ne],re=0;re<R;++re)U[N++]=ie[re]}function ku(a,h,_,R,U){for(var I=1,N=_+1;N<h.length;++N)I*=h[N];var Q=h[_];if(h.length-_===4){var Y=h[_+1],ne=h[_+2],ie=h[_+3];for(N=0;N<Q;++N)Cu(a[N],Y,ne,ie,R,U),U+=I}else for(N=0;N<Q;++N)ku(a[N],h,_+1,R,U),U+=I}function Dv(a,h,_,R){var U=1;if(h.length)for(var I=0;I<h.length;++I)U*=h[I];else U=0;var N=R||ht.allocType(_,U);switch(h.length){case 0:break;case 1:Iv(a,h[0],N);break;case 2:Rv(a,h[0],h[1],N);break;case 3:Cu(a,h[0],h[1],h[2],N,0);break;default:ku(a,h,0,N,0)}return N}function Mv(a){for(var h=[],_=a;_.length;_=_[0])h.push(_.length);return h}var No={"[object Int8Array]":5120,"[object Int16Array]":5122,"[object Int32Array]":5124,"[object Uint8Array]":5121,"[object Uint8ClampedArray]":5121,"[object Uint16Array]":5123,"[object Uint32Array]":5125,"[object Float32Array]":5126,"[object Float64Array]":5121,"[object ArrayBuffer]":5121},Ov=5120,Gv=5122,Nv=5124,Bv=5121,Vv=5123,$v=5125,Uv=5126,jv=5126,Ln={int8:Ov,int16:Gv,int32:Nv,uint8:Bv,uint16:Vv,uint32:$v,float:Uv,float32:jv},Xv=35048,Hv=35040,Ti={dynamic:Xv,stream:Hv,static:35044},Bo=wi.flatten,Fu=wi.shape,Lu=35044,qv=35040,Vo=5121,$o=5126,gn=[];gn[5120]=1,gn[5122]=2,gn[5124]=4,gn[5121]=1,gn[5123]=2,gn[5125]=4,gn[5126]=4;function Ai(a){return No[Object.prototype.toString.call(a)]|0}function zu(a,h){for(var _=0;_<h.length;++_)a[_]=h[_]}function Iu(a,h,_,R,U,I,N){for(var Q=0,Y=0;Y<_;++Y)for(var ne=0;ne<R;++ne)a[Q++]=h[U*Y+I*ne+N]}function Wv(a,h,_,R){var U=0,I={};function N(C){this.id=U++,this.buffer=a.createBuffer(),this.type=C,this.usage=Lu,this.byteLength=0,this.dimension=1,this.dtype=Vo,this.persistentData=null,_.profile&&(this.stats={size:0})}N.prototype.bind=function(){a.bindBuffer(this.type,this.buffer)},N.prototype.destroy=function(){ue(this)};var Q=[];function Y(C,O){var ee=Q.pop();return ee||(ee=new N(C)),ee.bind(),re(ee,O,qv,0,1,!1),ee}function ne(C){Q.push(C)}function ie(C,O,ee){C.byteLength=O.byteLength,a.bufferData(C.type,O,ee)}function re(C,O,ee,ge,q,pe){var de;if(C.usage=ee,Array.isArray(O)){if(C.dtype=ge||$o,O.length>0){var Ce;if(Array.isArray(O[0])){de=Fu(O);for(var j=1,$=1;$<de.length;++$)j*=de[$];C.dimension=j,Ce=Bo(O,de,C.dtype),ie(C,Ce,ee),pe?C.persistentData=Ce:ht.freeType(Ce)}else if(typeof O[0]=="number"){C.dimension=q;var be=ht.allocType(C.dtype,O.length);zu(be,O),ie(C,be,ee),pe?C.persistentData=be:ht.freeType(be)}else n(O[0])?(C.dimension=O[0].length,C.dtype=ge||Ai(O[0])||$o,Ce=Bo(O,[O.length,O[0].length],C.dtype),ie(C,Ce,ee),pe?C.persistentData=Ce:ht.freeType(Ce)):d.raise("invalid buffer data")}}else if(n(O))C.dtype=ge||Ai(O),C.dimension=q,ie(C,O,ee),pe&&(C.persistentData=new Uint8Array(new Uint8Array(O.buffer)));else if(Qt(O)){de=O.shape;var fe=O.stride,J=O.offset,le=0,he=0,Oe=0,De=0;de.length===1?(le=de[0],he=1,Oe=fe[0],De=0):de.length===2?(le=de[0],he=de[1],Oe=fe[0],De=fe[1]):d.raise("invalid shape"),C.dtype=ge||Ai(O.data)||$o,C.dimension=he;var me=ht.allocType(C.dtype,le*he);Iu(me,O.data,le,he,Oe,De,J),ie(C,me,ee),pe?C.persistentData=me:ht.freeType(me)}else O instanceof ArrayBuffer?(C.dtype=Vo,C.dimension=q,ie(C,O,ee),pe&&(C.persistentData=new Uint8Array(new Uint8Array(O)))):d.raise("invalid buffer data")}function ue(C){h.bufferCount--,R(C);var O=C.buffer;d(O,"buffer must not be deleted already"),a.deleteBuffer(O),C.buffer=null,delete I[C.id]}function K(C,O,ee,ge){h.bufferCount++;var q=new N(O);I[q.id]=q;function pe(j){var $=Lu,be=null,fe=0,J=0,le=1;return Array.isArray(j)||n(j)||Qt(j)||j instanceof ArrayBuffer?be=j:typeof j=="number"?fe=j|0:j&&(d.type(j,"object","buffer arguments must be an object, a number or an array"),"data"in j&&(d(be===null||Array.isArray(be)||n(be)||Qt(be),"invalid data for buffer"),be=j.data),"usage"in j&&(d.parameter(j.usage,Ti,"invalid buffer usage"),$=Ti[j.usage]),"type"in j&&(d.parameter(j.type,Ln,"invalid buffer type"),J=Ln[j.type]),"dimension"in j&&(d.type(j.dimension,"number","invalid dimension"),le=j.dimension|0),"length"in j&&(d.nni(fe,"buffer length must be a nonnegative integer"),fe=j.length|0)),q.bind(),be?re(q,be,$,J,le,ge):(fe&&a.bufferData(q.type,fe,$),q.dtype=J||Vo,q.usage=$,q.dimension=le,q.byteLength=fe),_.profile&&(q.stats.size=q.byteLength*gn[q.dtype]),pe}function de(j,$){d($+j.byteLength<=q.byteLength,"invalid buffer subdata call, buffer is too small. Can't write data of size "+j.byteLength+" starting from offset "+$+" to a buffer of size "+q.byteLength),a.bufferSubData(q.type,$,j)}function Ce(j,$){var be=($||0)|0,fe;if(q.bind(),n(j)||j instanceof ArrayBuffer)de(j,be);else if(Array.isArray(j)){if(j.length>0)if(typeof j[0]=="number"){var J=ht.allocType(q.dtype,j.length);zu(J,j),de(J,be),ht.freeType(J)}else if(Array.isArray(j[0])||n(j[0])){fe=Fu(j);var le=Bo(j,fe,q.dtype);de(le,be),ht.freeType(le)}else d.raise("invalid buffer data")}else if(Qt(j)){fe=j.shape;var he=j.stride,Oe=0,De=0,me=0,ve=0;fe.length===1?(Oe=fe[0],De=1,me=he[0],ve=0):fe.length===2?(Oe=fe[0],De=fe[1],me=he[0],ve=he[1]):d.raise("invalid shape");var ze=Array.isArray(j.data)?q.dtype:Ai(j.data),Ge=ht.allocType(ze,Oe*De);Iu(Ge,j.data,Oe,De,me,ve,j.offset),de(Ge,be),ht.freeType(Ge)}else d.raise("invalid data for buffer subdata");return pe}return ee||pe(C),pe._reglType="buffer",pe._buffer=q,pe.subdata=Ce,_.profile&&(pe.stats=q.stats),pe.destroy=function(){ue(q)},pe}function te(){Gt(I).forEach(function(C){C.buffer=a.createBuffer(),a.bindBuffer(C.type,C.buffer),a.bufferData(C.type,C.persistentData||C.byteLength,C.usage)})}return _.profile&&(h.getTotalBufferSize=function(){var C=0;return Object.keys(I).forEach(function(O){C+=I[O].stats.size}),C}),{create:K,createStream:Y,destroyStream:ne,clear:function(){Gt(I).forEach(ue),Q.forEach(ue)},getBuffer:function(C){return C&&C._buffer instanceof N?C._buffer:null},restore:te,_initBuffer:re}}var Yv=0,Zv=0,Qv=1,Kv=1,Jv=4,eg=4,yn={points:Yv,point:Zv,lines:Qv,line:Kv,triangles:Jv,triangle:eg,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},tg=0,ng=1,Ar=4,rg=5120,Zn=5121,Ru=5122,Qn=5123,Du=5124,zn=5125,Uo=34963,ig=35040,og=35044;function ag(a,h,_,R){var U={},I=0,N={uint8:Zn,uint16:Qn};h.oes_element_index_uint&&(N.uint32=zn);function Q(te){this.id=I++,U[this.id]=this,this.buffer=te,this.primType=Ar,this.vertCount=0,this.type=0}Q.prototype.bind=function(){this.buffer.bind()};var Y=[];function ne(te){var C=Y.pop();return C||(C=new Q(_.create(null,Uo,!0,!1)._buffer)),re(C,te,ig,-1,-1,0,0),C}function ie(te){Y.push(te)}function re(te,C,O,ee,ge,q,pe){te.buffer.bind();var de;if(C){var Ce=pe;!pe&&(!n(C)||Qt(C)&&!n(C.data))&&(Ce=h.oes_element_index_uint?zn:Qn),_._initBuffer(te.buffer,C,O,Ce,3)}else a.bufferData(Uo,q,O),te.buffer.dtype=de||Zn,te.buffer.usage=O,te.buffer.dimension=3,te.buffer.byteLength=q;if(de=pe,!pe){switch(te.buffer.dtype){case Zn:case rg:de=Zn;break;case Qn:case Ru:de=Qn;break;case zn:case Du:de=zn;break;default:d.raise("unsupported type for element array")}te.buffer.dtype=de}te.type=de,d(de!==zn||!!h.oes_element_index_uint,"32 bit element buffers not supported, enable oes_element_index_uint first");var j=ge;j<0&&(j=te.buffer.byteLength,de===Qn?j>>=1:de===zn&&(j>>=2)),te.vertCount=j;var $=ee;if(ee<0){$=Ar;var be=te.buffer.dimension;be===1&&($=tg),be===2&&($=ng),be===3&&($=Ar)}te.primType=$}function ue(te){R.elementsCount--,d(te.buffer!==null,"must not double destroy elements"),delete U[te.id],te.buffer.destroy(),te.buffer=null}function K(te,C){var O=_.create(null,Uo,!0),ee=new Q(O._buffer);R.elementsCount++;function ge(q){if(!q)O(),ee.primType=Ar,ee.vertCount=0,ee.type=Zn;else if(typeof q=="number")O(q),ee.primType=Ar,ee.vertCount=q|0,ee.type=Zn;else{var pe=null,de=og,Ce=-1,j=-1,$=0,be=0;Array.isArray(q)||n(q)||Qt(q)?pe=q:(d.type(q,"object","invalid arguments for elements"),"data"in q&&(pe=q.data,d(Array.isArray(pe)||n(pe)||Qt(pe),"invalid data for element buffer")),"usage"in q&&(d.parameter(q.usage,Ti,"invalid element buffer usage"),de=Ti[q.usage]),"primitive"in q&&(d.parameter(q.primitive,yn,"invalid element buffer primitive"),Ce=yn[q.primitive]),"count"in q&&(d(typeof q.count=="number"&&q.count>=0,"invalid vertex count for elements"),j=q.count|0),"type"in q&&(d.parameter(q.type,N,"invalid buffer type"),be=N[q.type]),"length"in q?$=q.length|0:($=j,be===Qn||be===Ru?$*=2:(be===zn||be===Du)&&($*=4))),re(ee,pe,de,Ce,j,$,be)}return ge}return ge(te),ge._reglType="elements",ge._elements=ee,ge.subdata=function(q,pe){return O.subdata(q,pe),ge},ge.destroy=function(){ue(ee)},ge}return{create:K,createStream:ne,destroyStream:ie,getElements:function(te){return typeof te=="function"&&te._elements instanceof Q?te._elements:null},clear:function(){Gt(U).forEach(ue)}}}var Mu=new Float32Array(1),sg=new Uint32Array(Mu.buffer),ug=5123;function Ou(a){for(var h=ht.allocType(ug,a.length),_=0;_<a.length;++_)if(isNaN(a[_]))h[_]=65535;else if(a[_]===1/0)h[_]=31744;else if(a[_]===-1/0)h[_]=64512;else{Mu[0]=a[_];var R=sg[0],U=R>>>31<<15,I=(R<<1>>>24)-127,N=R>>13&1023;if(I<-24)h[_]=U;else if(I<-14){var Q=-14-I;h[_]=U+(N+1024>>Q)}else I>15?h[_]=U+31744:h[_]=U+(I+15<<10)+N}return h}function at(a){return Array.isArray(a)||n(a)}var Gu=function(a){return!(a&a-1)&&!!a},fg=34467,nn=3553,jo=34067,Ei=34069,In=6408,Xo=6406,Pi=6407,Er=6409,Ci=6410,Nu=32854,Ho=32855,Bu=36194,lg=32819,cg=32820,hg=33635,dg=34042,qo=6402,ki=34041,Wo=35904,Yo=35906,Kn=36193,Zo=33776,Qo=33777,Ko=33778,Jo=33779,Vu=35986,$u=35987,Uu=34798,ju=35840,Xu=35841,Hu=35842,qu=35843,Wu=36196,Jn=5121,ea=5123,ta=5125,Pr=5126,mg=10242,pg=10243,vg=10497,na=33071,gg=33648,yg=10240,xg=10241,ra=9728,bg=9729,ia=9984,Yu=9985,Zu=9986,oa=9987,_g=33170,Fi=4352,Sg=4353,wg=4354,Tg=34046,Ag=3317,Eg=37440,Pg=37441,Cg=37443,Qu=37444,Cr=33984,kg=[ia,Zu,Yu,oa],Li=[0,Er,Ci,Pi,In],Vt={};Vt[Er]=Vt[Xo]=Vt[qo]=1,Vt[ki]=Vt[Ci]=2,Vt[Pi]=Vt[Wo]=3,Vt[In]=Vt[Yo]=4;function er(a){return"[object "+a+"]"}var Ku=er("HTMLCanvasElement"),Ju=er("OffscreenCanvas"),ef=er("CanvasRenderingContext2D"),tf=er("ImageBitmap"),nf=er("HTMLImageElement"),rf=er("HTMLVideoElement"),Fg=Object.keys(No).concat([Ku,Ju,ef,tf,nf,rf]),tr=[];tr[Jn]=1,tr[Pr]=4,tr[Kn]=2,tr[ea]=2,tr[ta]=4;var Tt=[];Tt[Nu]=2,Tt[Ho]=2,Tt[Bu]=2,Tt[ki]=4,Tt[Zo]=.5,Tt[Qo]=.5,Tt[Ko]=1,Tt[Jo]=1,Tt[Vu]=.5,Tt[$u]=1,Tt[Uu]=1,Tt[ju]=.5,Tt[Xu]=.25,Tt[Hu]=.5,Tt[qu]=.25,Tt[Wu]=.5;function of(a){return Array.isArray(a)&&(a.length===0||typeof a[0]=="number")}function af(a){if(!Array.isArray(a))return!1;var h=a.length;return!(h===0||!at(a[0]))}function Rn(a){return Object.prototype.toString.call(a)}function sf(a){return Rn(a)===Ku}function uf(a){return Rn(a)===Ju}function Lg(a){return Rn(a)===ef}function zg(a){return Rn(a)===tf}function Ig(a){return Rn(a)===nf}function Rg(a){return Rn(a)===rf}function aa(a){if(!a)return!1;var h=Rn(a);return Fg.indexOf(h)>=0?!0:of(a)||af(a)||Qt(a)}function ff(a){return No[Object.prototype.toString.call(a)]|0}function Dg(a,h){var _=h.length;switch(a.type){case Jn:case ea:case ta:case Pr:var R=ht.allocType(a.type,_);R.set(h),a.data=R;break;case Kn:a.data=Ou(h);break;default:d.raise("unsupported texture type, must specify a typed array")}}function lf(a,h){return ht.allocType(a.type===Kn?Pr:a.type,h)}function cf(a,h){a.type===Kn?(a.data=Ou(h),ht.freeType(h)):a.data=h}function Mg(a,h,_,R,U,I){for(var N=a.width,Q=a.height,Y=a.channels,ne=N*Q*Y,ie=lf(a,ne),re=0,ue=0;ue<Q;++ue)for(var K=0;K<N;++K)for(var te=0;te<Y;++te)ie[re++]=h[_*K+R*ue+U*te+I];cf(a,ie)}function zi(a,h,_,R,U,I){var N;if(typeof Tt[a]<"u"?N=Tt[a]:N=Vt[a]*tr[h],I&&(N*=6),U){for(var Q=0,Y=_;Y>=1;)Q+=N*Y*Y,Y/=2;return Q}else return N*_*R}function Og(a,h,_,R,U,I,N){var Q={"don't care":Fi,"dont care":Fi,nice:wg,fast:Sg},Y={repeat:vg,clamp:na,mirror:gg},ne={nearest:ra,linear:bg},ie=r({mipmap:oa,"nearest mipmap nearest":ia,"linear mipmap nearest":Yu,"nearest mipmap linear":Zu,"linear mipmap linear":oa},ne),re={none:0,browser:Qu},ue={uint8:Jn,rgba4:lg,rgb565:hg,"rgb5 a1":cg},K={alpha:Xo,luminance:Er,"luminance alpha":Ci,rgb:Pi,rgba:In,rgba4:Nu,"rgb5 a1":Ho,rgb565:Bu},te={};h.ext_srgb&&(K.srgb=Wo,K.srgba=Yo),h.oes_texture_float&&(ue.float32=ue.float=Pr),h.oes_texture_half_float&&(ue.float16=ue["half float"]=Kn),h.webgl_depth_texture&&(r(K,{depth:qo,"depth stencil":ki}),r(ue,{uint16:ea,uint32:ta,"depth stencil":dg})),h.webgl_compressed_texture_s3tc&&r(te,{"rgb s3tc dxt1":Zo,"rgba s3tc dxt1":Qo,"rgba s3tc dxt3":Ko,"rgba s3tc dxt5":Jo}),h.webgl_compressed_texture_atc&&r(te,{"rgb atc":Vu,"rgba atc explicit alpha":$u,"rgba atc interpolated alpha":Uu}),h.webgl_compressed_texture_pvrtc&&r(te,{"rgb pvrtc 4bppv1":ju,"rgb pvrtc 2bppv1":Xu,"rgba pvrtc 4bppv1":Hu,"rgba pvrtc 2bppv1":qu}),h.webgl_compressed_texture_etc1&&(te["rgb etc1"]=Wu);var C=Array.prototype.slice.call(a.getParameter(fg));Object.keys(te).forEach(function(y){var M=te[y];C.indexOf(M)>=0&&(K[y]=M)});var O=Object.keys(K);_.textureFormats=O;var ee=[];Object.keys(K).forEach(function(y){var M=K[y];ee[M]=y});var ge=[];Object.keys(ue).forEach(function(y){var M=ue[y];ge[M]=y});var q=[];Object.keys(ne).forEach(function(y){var M=ne[y];q[M]=y});var pe=[];Object.keys(ie).forEach(function(y){var M=ie[y];pe[M]=y});var de=[];Object.keys(Y).forEach(function(y){var M=Y[y];de[M]=y});var Ce=O.reduce(function(y,M){var z=K[M];return z===Er||z===Xo||z===Er||z===Ci||z===qo||z===ki||h.ext_srgb&&(z===Wo||z===Yo)?y[z]=z:z===Ho||M.indexOf("rgba")>=0?y[z]=In:y[z]=Pi,y},{});function j(){this.internalformat=In,this.format=In,this.type=Jn,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=Qu,this.width=0,this.height=0,this.channels=0}function $(y,M){y.internalformat=M.internalformat,y.format=M.format,y.type=M.type,y.compressed=M.compressed,y.premultiplyAlpha=M.premultiplyAlpha,y.flipY=M.flipY,y.unpackAlignment=M.unpackAlignment,y.colorSpace=M.colorSpace,y.width=M.width,y.height=M.height,y.channels=M.channels}function be(y,M){if(!(typeof M!="object"||!M)){if("premultiplyAlpha"in M&&(d.type(M.premultiplyAlpha,"boolean","invalid premultiplyAlpha"),y.premultiplyAlpha=M.premultiplyAlpha),"flipY"in M&&(d.type(M.flipY,"boolean","invalid texture flip"),y.flipY=M.flipY),"alignment"in M&&(d.oneOf(M.alignment,[1,2,4,8],"invalid texture unpack alignment"),y.unpackAlignment=M.alignment),"colorSpace"in M&&(d.parameter(M.colorSpace,re,"invalid colorSpace"),y.colorSpace=re[M.colorSpace]),"type"in M){var z=M.type;d(h.oes_texture_float||!(z==="float"||z==="float32"),"you must enable the OES_texture_float extension in order to use floating point textures."),d(h.oes_texture_half_float||!(z==="half float"||z==="float16"),"you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures."),d(h.webgl_depth_texture||!(z==="uint16"||z==="uint32"||z==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),d.parameter(z,ue,"invalid texture type"),y.type=ue[z]}var xe=y.width,He=y.height,m=y.channels,c=!1;"shape"in M?(d(Array.isArray(M.shape)&&M.shape.length>=2,"shape must be an array"),xe=M.shape[0],He=M.shape[1],M.shape.length===3&&(m=M.shape[2],d(m>0&&m<=4,"invalid number of channels"),c=!0),d(xe>=0&&xe<=_.maxTextureSize,"invalid width"),d(He>=0&&He<=_.maxTextureSize,"invalid height")):("radius"in M&&(xe=He=M.radius,d(xe>=0&&xe<=_.maxTextureSize,"invalid radius")),"width"in M&&(xe=M.width,d(xe>=0&&xe<=_.maxTextureSize,"invalid width")),"height"in M&&(He=M.height,d(He>=0&&He<=_.maxTextureSize,"invalid height")),"channels"in M&&(m=M.channels,d(m>0&&m<=4,"invalid number of channels"),c=!0)),y.width=xe|0,y.height=He|0,y.channels=m|0;var w=!1;if("format"in M){var P=M.format;d(h.webgl_depth_texture||!(P==="depth"||P==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),d.parameter(P,K,"invalid texture format");var k=y.internalformat=K[P];y.format=Ce[k],P in ue&&("type"in M||(y.type=ue[P])),P in te&&(y.compressed=!0),w=!0}!c&&w?y.channels=Vt[y.format]:c&&!w?y.channels!==Li[y.format]&&(y.format=y.internalformat=Li[y.channels]):w&&c&&d(y.channels===Vt[y.format],"number of channels inconsistent with specified format")}}function fe(y){a.pixelStorei(Eg,y.flipY),a.pixelStorei(Pg,y.premultiplyAlpha),a.pixelStorei(Cg,y.colorSpace),a.pixelStorei(Ag,y.unpackAlignment)}function J(){j.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function le(y,M){var z=null;if(aa(M)?z=M:M&&(d.type(M,"object","invalid pixel data type"),be(y,M),"x"in M&&(y.xOffset=M.x|0),"y"in M&&(y.yOffset=M.y|0),aa(M.data)&&(z=M.data)),d(!y.compressed||z instanceof Uint8Array,"compressed texture data must be stored in a uint8array"),M.copy){d(!z,"can not specify copy and data field for the same texture");var xe=U.viewportWidth,He=U.viewportHeight;y.width=y.width||xe-y.xOffset,y.height=y.height||He-y.yOffset,y.needsCopy=!0,d(y.xOffset>=0&&y.xOffset<xe&&y.yOffset>=0&&y.yOffset<He&&y.width>0&&y.width<=xe&&y.height>0&&y.height<=He,"copy texture read out of bounds")}else if(!z)y.width=y.width||1,y.height=y.height||1,y.channels=y.channels||4;else if(n(z))y.channels=y.channels||4,y.data=z,!("type"in M)&&y.type===Jn&&(y.type=ff(z));else if(of(z))y.channels=y.channels||4,Dg(y,z),y.alignment=1,y.needsFree=!0;else if(Qt(z)){var m=z.data;!Array.isArray(m)&&y.type===Jn&&(y.type=ff(m));var c=z.shape,w=z.stride,P,k,A,T,E,p;c.length===3?(A=c[2],p=w[2]):(d(c.length===2,"invalid ndarray pixel data, must be 2 or 3D"),A=1,p=1),P=c[0],k=c[1],T=w[0],E=w[1],y.alignment=1,y.width=P,y.height=k,y.channels=A,y.format=y.internalformat=Li[A],y.needsFree=!0,Mg(y,m,T,E,p,z.offset)}else if(sf(z)||uf(z)||Lg(z))sf(z)||uf(z)?y.element=z:y.element=z.canvas,y.width=y.element.width,y.height=y.element.height,y.channels=4;else if(zg(z))y.element=z,y.width=z.width,y.height=z.height,y.channels=4;else if(Ig(z))y.element=z,y.width=z.naturalWidth,y.height=z.naturalHeight,y.channels=4;else if(Rg(z))y.element=z,y.width=z.videoWidth,y.height=z.videoHeight,y.channels=4;else if(af(z)){var x=y.width||z[0].length,g=y.height||z.length,L=y.channels;at(z[0][0])?L=L||z[0][0].length:L=L||1;for(var F=wi.shape(z),V=1,X=0;X<F.length;++X)V*=F[X];var se=lf(y,V);wi.flatten(z,F,"",se),cf(y,se),y.alignment=1,y.width=x,y.height=g,y.channels=L,y.format=y.internalformat=Li[L],y.needsFree=!0}y.type===Pr?d(_.extensions.indexOf("oes_texture_float")>=0,"oes_texture_float extension not enabled"):y.type===Kn&&d(_.extensions.indexOf("oes_texture_half_float")>=0,"oes_texture_half_float extension not enabled")}function he(y,M,z){var xe=y.element,He=y.data,m=y.internalformat,c=y.format,w=y.type,P=y.width,k=y.height;fe(y),xe?a.texImage2D(M,z,c,c,w,xe):y.compressed?a.compressedTexImage2D(M,z,m,P,k,0,He):y.needsCopy?(R(),a.copyTexImage2D(M,z,c,y.xOffset,y.yOffset,P,k,0)):a.texImage2D(M,z,c,P,k,0,c,w,He||null)}function Oe(y,M,z,xe,He){var m=y.element,c=y.data,w=y.internalformat,P=y.format,k=y.type,A=y.width,T=y.height;fe(y),m?a.texSubImage2D(M,He,z,xe,P,k,m):y.compressed?a.compressedTexSubImage2D(M,He,z,xe,w,A,T,c):y.needsCopy?(R(),a.copyTexSubImage2D(M,He,z,xe,y.xOffset,y.yOffset,A,T)):a.texSubImage2D(M,He,z,xe,A,T,P,k,c)}var De=[];function me(){return De.pop()||new J}function ve(y){y.needsFree&&ht.freeType(y.data),J.call(y),De.push(y)}function ze(){j.call(this),this.genMipmaps=!1,this.mipmapHint=Fi,this.mipmask=0,this.images=Array(16)}function Ge(y,M,z){var xe=y.images[0]=me();y.mipmask=1,xe.width=y.width=M,xe.height=y.height=z,xe.channels=y.channels=4}function qe(y,M){var z=null;if(aa(M))z=y.images[0]=me(),$(z,y),le(z,M),y.mipmask=1;else if(be(y,M),Array.isArray(M.mipmap))for(var xe=M.mipmap,He=0;He<xe.length;++He)z=y.images[He]=me(),$(z,y),z.width>>=He,z.height>>=He,le(z,xe[He]),y.mipmask|=1<<He;else z=y.images[0]=me(),$(z,y),le(z,M),y.mipmask=1;$(y,y.images[0]),y.compressed&&(y.internalformat===Zo||y.internalformat===Qo||y.internalformat===Ko||y.internalformat===Jo)&&d(y.width%4===0&&y.height%4===0,"for compressed texture formats, mipmap level 0 must have width and height that are a multiple of 4")}function st(y,M){for(var z=y.images,xe=0;xe<z.length;++xe){if(!z[xe])return;he(z[xe],M,xe)}}var ut=[];function Ze(){var y=ut.pop()||new ze;j.call(y),y.mipmask=0;for(var M=0;M<16;++M)y.images[M]=null;return y}function vt(y){for(var M=y.images,z=0;z<M.length;++z)M[z]&&ve(M[z]),M[z]=null;ut.push(y)}function ot(){this.minFilter=ra,this.magFilter=ra,this.wrapS=na,this.wrapT=na,this.anisotropic=1,this.genMipmaps=!1,this.mipmapHint=Fi}function mt(y,M){if("min"in M){var z=M.min;d.parameter(z,ie),y.minFilter=ie[z],kg.indexOf(y.minFilter)>=0&&!("faces"in M)&&(y.genMipmaps=!0)}if("mag"in M){var xe=M.mag;d.parameter(xe,ne),y.magFilter=ne[xe]}var He=y.wrapS,m=y.wrapT;if("wrap"in M){var c=M.wrap;typeof c=="string"?(d.parameter(c,Y),He=m=Y[c]):Array.isArray(c)&&(d.parameter(c[0],Y),d.parameter(c[1],Y),He=Y[c[0]],m=Y[c[1]])}else{if("wrapS"in M){var w=M.wrapS;d.parameter(w,Y),He=Y[w]}if("wrapT"in M){var P=M.wrapT;d.parameter(P,Y),m=Y[P]}}if(y.wrapS=He,y.wrapT=m,"anisotropic"in M){var k=M.anisotropic;d(typeof k=="number"&&k>=1&&k<=_.maxAnisotropic,"aniso samples must be between 1 and "),y.anisotropic=M.anisotropic}if("mipmap"in M){var A=!1;switch(typeof M.mipmap){case"string":d.parameter(M.mipmap,Q,"invalid mipmap hint"),y.mipmapHint=Q[M.mipmap],y.genMipmaps=!0,A=!0;break;case"boolean":A=y.genMipmaps=M.mipmap;break;case"object":d(Array.isArray(M.mipmap),"invalid mipmap type"),y.genMipmaps=!1,A=!0;break;default:d.raise("invalid mipmap type")}A&&!("min"in M)&&(y.minFilter=ia)}}function gt(y,M){a.texParameteri(M,xg,y.minFilter),a.texParameteri(M,yg,y.magFilter),a.texParameteri(M,mg,y.wrapS),a.texParameteri(M,pg,y.wrapT),h.ext_texture_filter_anisotropic&&a.texParameteri(M,Tg,y.anisotropic),y.genMipmaps&&(a.hint(_g,y.mipmapHint),a.generateMipmap(M))}var yt=0,St={},At=_.maxTextureUnits,lt=Array(At).map(function(){return null});function $e(y){j.call(this),this.mipmask=0,this.internalformat=In,this.id=yt++,this.refCount=1,this.target=y,this.texture=a.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new ot,N.profile&&(this.stats={size:0})}function Et(y){a.activeTexture(Cr),a.bindTexture(y.target,y.texture)}function Ke(){var y=lt[0];y?a.bindTexture(y.target,y.texture):a.bindTexture(nn,null)}function Fe(y){var M=y.texture;d(M,"must not double destroy texture");var z=y.unit,xe=y.target;z>=0&&(a.activeTexture(Cr+z),a.bindTexture(xe,null),lt[z]=null),a.deleteTexture(M),y.texture=null,y.params=null,y.pixels=null,y.refCount=0,delete St[y.id],I.textureCount--}r($e.prototype,{bind:function(){var y=this;y.bindCount+=1;var M=y.unit;if(M<0){for(var z=0;z<At;++z){var xe=lt[z];if(xe){if(xe.bindCount>0)continue;xe.unit=-1}lt[z]=y,M=z;break}M>=At&&d.raise("insufficient number of texture units"),N.profile&&I.maxTextureUnits<M+1&&(I.maxTextureUnits=M+1),y.unit=M,a.activeTexture(Cr+M),a.bindTexture(y.target,y.texture)}return M},unbind:function(){this.bindCount-=1},decRef:function(){--this.refCount<=0&&Fe(this)}});function We(y,M){var z=new $e(nn);St[z.id]=z,I.textureCount++;function xe(c,w){var P=z.texInfo;ot.call(P);var k=Ze();return typeof c=="number"?typeof w=="number"?Ge(k,c|0,w|0):Ge(k,c|0,c|0):c?(d.type(c,"object","invalid arguments to regl.texture"),mt(P,c),qe(k,c)):Ge(k,1,1),P.genMipmaps&&(k.mipmask=(k.width<<1)-1),z.mipmask=k.mipmask,$(z,k),d.texture2D(P,k,_),z.internalformat=k.internalformat,xe.width=k.width,xe.height=k.height,Et(z),st(k,nn),gt(P,nn),Ke(),vt(k),N.profile&&(z.stats.size=zi(z.internalformat,z.type,k.width,k.height,P.genMipmaps,!1)),xe.format=ee[z.internalformat],xe.type=ge[z.type],xe.mag=q[P.magFilter],xe.min=pe[P.minFilter],xe.wrapS=de[P.wrapS],xe.wrapT=de[P.wrapT],xe}function He(c,w,P,k){d(!!c,"must specify image data");var A=w|0,T=P|0,E=k|0,p=me();return $(p,z),p.width=0,p.height=0,le(p,c),p.width=p.width||(z.width>>E)-A,p.height=p.height||(z.height>>E)-T,d(z.type===p.type&&z.format===p.format&&z.internalformat===p.internalformat,"incompatible format for texture.subimage"),d(A>=0&&T>=0&&A+p.width<=z.width&&T+p.height<=z.height,"texture.subimage write out of bounds"),d(z.mipmask&1<<E,"missing mipmap data"),d(p.data||p.element||p.needsCopy,"missing image data"),Et(z),Oe(p,nn,A,T,E),Ke(),ve(p),xe}function m(c,w){var P=c|0,k=w|0||P;if(P===z.width&&k===z.height)return xe;xe.width=z.width=P,xe.height=z.height=k,Et(z);for(var A=0;z.mipmask>>A;++A){var T=P>>A,E=k>>A;if(!T||!E)break;a.texImage2D(nn,A,z.format,T,E,0,z.format,z.type,null)}return Ke(),N.profile&&(z.stats.size=zi(z.internalformat,z.type,P,k,!1,!1)),xe}return xe(y,M),xe.subimage=He,xe.resize=m,xe._reglType="texture2d",xe._texture=z,N.profile&&(xe.stats=z.stats),xe.destroy=function(){z.decRef()},xe}function Qe(y,M,z,xe,He,m){var c=new $e(jo);St[c.id]=c,I.cubeCount++;var w=new Array(6);function P(T,E,p,x,g,L){var F,V=c.texInfo;for(ot.call(V),F=0;F<6;++F)w[F]=Ze();if(typeof T=="number"||!T){var X=T|0||1;for(F=0;F<6;++F)Ge(w[F],X,X)}else if(typeof T=="object")if(E)qe(w[0],T),qe(w[1],E),qe(w[2],p),qe(w[3],x),qe(w[4],g),qe(w[5],L);else if(mt(V,T),be(c,T),"faces"in T){var se=T.faces;for(d(Array.isArray(se)&&se.length===6,"cube faces must be a length 6 array"),F=0;F<6;++F)d(typeof se[F]=="object"&&!!se[F],"invalid input for cube map face"),$(w[F],c),qe(w[F],se[F])}else for(F=0;F<6;++F)qe(w[F],T);else d.raise("invalid arguments to cube map");for($(c,w[0]),d.optional(function(){_.npotTextureCube||d(Gu(c.width)&&Gu(c.height),"your browser does not support non power or two texture dimensions")}),V.genMipmaps?c.mipmask=(w[0].width<<1)-1:c.mipmask=w[0].mipmask,d.textureCube(c,V,w,_),c.internalformat=w[0].internalformat,P.width=w[0].width,P.height=w[0].height,Et(c),F=0;F<6;++F)st(w[F],Ei+F);for(gt(V,jo),Ke(),N.profile&&(c.stats.size=zi(c.internalformat,c.type,P.width,P.height,V.genMipmaps,!0)),P.format=ee[c.internalformat],P.type=ge[c.type],P.mag=q[V.magFilter],P.min=pe[V.minFilter],P.wrapS=de[V.wrapS],P.wrapT=de[V.wrapT],F=0;F<6;++F)vt(w[F]);return P}function k(T,E,p,x,g){d(!!E,"must specify image data"),d(typeof T=="number"&&T===(T|0)&&T>=0&&T<6,"invalid face");var L=p|0,F=x|0,V=g|0,X=me();return $(X,c),X.width=0,X.height=0,le(X,E),X.width=X.width||(c.width>>V)-L,X.height=X.height||(c.height>>V)-F,d(c.type===X.type&&c.format===X.format&&c.internalformat===X.internalformat,"incompatible format for texture.subimage"),d(L>=0&&F>=0&&L+X.width<=c.width&&F+X.height<=c.height,"texture.subimage write out of bounds"),d(c.mipmask&1<<V,"missing mipmap data"),d(X.data||X.element||X.needsCopy,"missing image data"),Et(c),Oe(X,Ei+T,L,F,V),Ke(),ve(X),P}function A(T){var E=T|0;if(E!==c.width){P.width=c.width=E,P.height=c.height=E,Et(c);for(var p=0;p<6;++p)for(var x=0;c.mipmask>>x;++x)a.texImage2D(Ei+p,x,c.format,E>>x,E>>x,0,c.format,c.type,null);return Ke(),N.profile&&(c.stats.size=zi(c.internalformat,c.type,P.width,P.height,!1,!0)),P}}return P(y,M,z,xe,He,m),P.subimage=k,P.resize=A,P._reglType="textureCube",P._texture=c,N.profile&&(P.stats=c.stats),P.destroy=function(){c.decRef()},P}function ct(){for(var y=0;y<At;++y)a.activeTexture(Cr+y),a.bindTexture(nn,null),lt[y]=null;Gt(St).forEach(Fe),I.cubeCount=0,I.textureCount=0}N.profile&&(I.getTotalTextureSize=function(){var y=0;return Object.keys(St).forEach(function(M){y+=St[M].stats.size}),y});function on(){for(var y=0;y<At;++y){var M=lt[y];M&&(M.bindCount=0,M.unit=-1,lt[y]=null)}Gt(St).forEach(function(z){z.texture=a.createTexture(),a.bindTexture(z.target,z.texture);for(var xe=0;xe<32;++xe)if((z.mipmask&1<<xe)!==0)if(z.target===nn)a.texImage2D(nn,xe,z.internalformat,z.width>>xe,z.height>>xe,0,z.internalformat,z.type,null);else for(var He=0;He<6;++He)a.texImage2D(Ei+He,xe,z.internalformat,z.width>>xe,z.height>>xe,0,z.internalformat,z.type,null);gt(z.texInfo,z.target)})}function Vn(){for(var y=0;y<At;++y){var M=lt[y];M&&(M.bindCount=0,M.unit=-1,lt[y]=null),a.activeTexture(Cr+y),a.bindTexture(nn,null),a.bindTexture(jo,null)}}return{create2D:We,createCube:Qe,clear:ct,getTexture:function(y){return null},restore:on,refresh:Vn}}var xn=36161,Ii=32854,hf=32855,df=36194,mf=33189,pf=36168,vf=34041,gf=35907,yf=34836,xf=34842,bf=34843,Kt=[];Kt[Ii]=2,Kt[hf]=2,Kt[df]=2,Kt[mf]=2,Kt[pf]=1,Kt[vf]=4,Kt[gf]=4,Kt[yf]=16,Kt[xf]=8,Kt[bf]=6;function _f(a,h,_){return Kt[a]*h*_}var Gg=function(a,h,_,R,U){var I={rgba4:Ii,rgb565:df,"rgb5 a1":hf,depth:mf,stencil:pf,"depth stencil":vf};h.ext_srgb&&(I.srgba=gf),h.ext_color_buffer_half_float&&(I.rgba16f=xf,I.rgb16f=bf),h.webgl_color_buffer_float&&(I.rgba32f=yf);var N=[];Object.keys(I).forEach(function(K){var te=I[K];N[te]=K});var Q=0,Y={};function ne(K){this.id=Q++,this.refCount=1,this.renderbuffer=K,this.format=Ii,this.width=0,this.height=0,U.profile&&(this.stats={size:0})}ne.prototype.decRef=function(){--this.refCount<=0&&ie(this)};function ie(K){var te=K.renderbuffer;d(te,"must not double destroy renderbuffer"),a.bindRenderbuffer(xn,null),a.deleteRenderbuffer(te),K.renderbuffer=null,K.refCount=0,delete Y[K.id],R.renderbufferCount--}function re(K,te){var C=new ne(a.createRenderbuffer());Y[C.id]=C,R.renderbufferCount++;function O(ge,q){var pe=0,de=0,Ce=Ii;if(typeof ge=="object"&&ge){var j=ge;if("shape"in j){var $=j.shape;d(Array.isArray($)&&$.length>=2,"invalid renderbuffer shape"),pe=$[0]|0,de=$[1]|0}else"radius"in j&&(pe=de=j.radius|0),"width"in j&&(pe=j.width|0),"height"in j&&(de=j.height|0);"format"in j&&(d.parameter(j.format,I,"invalid renderbuffer format"),Ce=I[j.format])}else typeof ge=="number"?(pe=ge|0,typeof q=="number"?de=q|0:de=pe):ge?d.raise("invalid arguments to renderbuffer constructor"):pe=de=1;if(d(pe>0&&de>0&&pe<=_.maxRenderbufferSize&&de<=_.maxRenderbufferSize,"invalid renderbuffer size"),!(pe===C.width&&de===C.height&&Ce===C.format))return O.width=C.width=pe,O.height=C.height=de,C.format=Ce,a.bindRenderbuffer(xn,C.renderbuffer),a.renderbufferStorage(xn,Ce,pe,de),d(a.getError()===0,"invalid render buffer format"),U.profile&&(C.stats.size=_f(C.format,C.width,C.height)),O.format=N[C.format],O}function ee(ge,q){var pe=ge|0,de=q|0||pe;return pe===C.width&&de===C.height||(d(pe>0&&de>0&&pe<=_.maxRenderbufferSize&&de<=_.maxRenderbufferSize,"invalid renderbuffer size"),O.width=C.width=pe,O.height=C.height=de,a.bindRenderbuffer(xn,C.renderbuffer),a.renderbufferStorage(xn,C.format,pe,de),d(a.getError()===0,"invalid render buffer format"),U.profile&&(C.stats.size=_f(C.format,C.width,C.height))),O}return O(K,te),O.resize=ee,O._reglType="renderbuffer",O._renderbuffer=C,U.profile&&(O.stats=C.stats),O.destroy=function(){C.decRef()},O}U.profile&&(R.getTotalRenderbufferSize=function(){var K=0;return Object.keys(Y).forEach(function(te){K+=Y[te].stats.size}),K});function ue(){Gt(Y).forEach(function(K){K.renderbuffer=a.createRenderbuffer(),a.bindRenderbuffer(xn,K.renderbuffer),a.renderbufferStorage(xn,K.format,K.width,K.height)}),a.bindRenderbuffer(xn,null)}return{create:re,clear:function(){Gt(Y).forEach(ie)},restore:ue}},hn=36160,sa=36161,Dn=3553,Ri=34069,Sf=36064,wf=36096,Tf=36128,Af=33306,Ef=36053,Ng=36054,Bg=36055,Vg=36057,$g=36061,Ug=36193,jg=5121,Xg=5126,Pf=6407,Cf=6408,Hg=6402,qg=[Pf,Cf],ua=[];ua[Cf]=4,ua[Pf]=3;var Di=[];Di[jg]=1,Di[Xg]=4,Di[Ug]=2;var Wg=32854,Yg=32855,Zg=36194,Qg=33189,Kg=36168,kf=34041,Jg=35907,ey=34836,ty=34842,ny=34843,ry=[Wg,Yg,Zg,Jg,ty,ny,ey],nr={};nr[Ef]="complete",nr[Ng]="incomplete attachment",nr[Vg]="incomplete dimensions",nr[Bg]="incomplete, missing attachment",nr[$g]="unsupported";function iy(a,h,_,R,U,I){var N={cur:null,next:null,dirty:!1,setFBO:null},Q=["rgba"],Y=["rgba4","rgb565","rgb5 a1"];h.ext_srgb&&Y.push("srgba"),h.ext_color_buffer_half_float&&Y.push("rgba16f","rgb16f"),h.webgl_color_buffer_float&&Y.push("rgba32f");var ne=["uint8"];h.oes_texture_half_float&&ne.push("half float","float16"),h.oes_texture_float&&ne.push("float","float32");function ie(J,le,he){this.target=J,this.texture=le,this.renderbuffer=he;var Oe=0,De=0;le?(Oe=le.width,De=le.height):he&&(Oe=he.width,De=he.height),this.width=Oe,this.height=De}function re(J){J&&(J.texture&&J.texture._texture.decRef(),J.renderbuffer&&J.renderbuffer._renderbuffer.decRef())}function ue(J,le,he){if(J)if(J.texture){var Oe=J.texture._texture,De=Math.max(1,Oe.width),me=Math.max(1,Oe.height);d(De===le&&me===he,"inconsistent width/height for supplied texture"),Oe.refCount+=1}else{var ve=J.renderbuffer._renderbuffer;d(ve.width===le&&ve.height===he,"inconsistent width/height for renderbuffer"),ve.refCount+=1}}function K(J,le){le&&(le.texture?a.framebufferTexture2D(hn,J,le.target,le.texture._texture.texture,0):a.framebufferRenderbuffer(hn,J,sa,le.renderbuffer._renderbuffer.renderbuffer))}function te(J){var le=Dn,he=null,Oe=null,De=J;typeof J=="object"&&(De=J.data,"target"in J&&(le=J.target|0)),d.type(De,"function","invalid attachment data");var me=De._reglType;return me==="texture2d"?(he=De,d(le===Dn)):me==="textureCube"?(he=De,d(le>=Ri&&le<Ri+6,"invalid cube map target")):me==="renderbuffer"?(Oe=De,le=sa):d.raise("invalid regl object for attachment"),new ie(le,he,Oe)}function C(J,le,he,Oe,De){if(he){var me=R.create2D({width:J,height:le,format:Oe,type:De});return me._texture.refCount=0,new ie(Dn,me,null)}else{var ve=U.create({width:J,height:le,format:Oe});return ve._renderbuffer.refCount=0,new ie(sa,null,ve)}}function O(J){return J&&(J.texture||J.renderbuffer)}function ee(J,le,he){J&&(J.texture?J.texture.resize(le,he):J.renderbuffer&&J.renderbuffer.resize(le,he),J.width=le,J.height=he)}var ge=0,q={};function pe(){this.id=ge++,q[this.id]=this,this.framebuffer=a.createFramebuffer(),this.width=0,this.height=0,this.colorAttachments=[],this.depthAttachment=null,this.stencilAttachment=null,this.depthStencilAttachment=null}function de(J){J.colorAttachments.forEach(re),re(J.depthAttachment),re(J.stencilAttachment),re(J.depthStencilAttachment)}function Ce(J){var le=J.framebuffer;d(le,"must not double destroy framebuffer"),a.deleteFramebuffer(le),J.framebuffer=null,I.framebufferCount--,delete q[J.id]}function j(J){var le;a.bindFramebuffer(hn,J.framebuffer);var he=J.colorAttachments;for(le=0;le<he.length;++le)K(Sf+le,he[le]);for(le=he.length;le<_.maxColorAttachments;++le)a.framebufferTexture2D(hn,Sf+le,Dn,null,0);a.framebufferTexture2D(hn,Af,Dn,null,0),a.framebufferTexture2D(hn,wf,Dn,null,0),a.framebufferTexture2D(hn,Tf,Dn,null,0),K(wf,J.depthAttachment),K(Tf,J.stencilAttachment),K(Af,J.depthStencilAttachment);var Oe=a.checkFramebufferStatus(hn);!a.isContextLost()&&Oe!==Ef&&d.raise("framebuffer configuration not supported, status = "+nr[Oe]),a.bindFramebuffer(hn,N.next?N.next.framebuffer:null),N.cur=N.next,a.getError()}function $(J,le){var he=new pe;I.framebufferCount++;function Oe(me,ve){var ze;d(N.next!==he,"can not update framebuffer which is currently in use");var Ge=0,qe=0,st=!0,ut=!0,Ze=null,vt=!0,ot="rgba",mt="uint8",gt=1,yt=null,St=null,At=null,lt=!1;if(typeof me=="number")Ge=me|0,qe=ve|0||Ge;else if(!me)Ge=qe=1;else{d.type(me,"object","invalid arguments for framebuffer");var $e=me;if("shape"in $e){var Et=$e.shape;d(Array.isArray(Et)&&Et.length>=2,"invalid shape for framebuffer"),Ge=Et[0],qe=Et[1]}else"radius"in $e&&(Ge=qe=$e.radius),"width"in $e&&(Ge=$e.width),"height"in $e&&(qe=$e.height);("color"in $e||"colors"in $e)&&(Ze=$e.color||$e.colors,Array.isArray(Ze)&&d(Ze.length===1||h.webgl_draw_buffers,"multiple render targets not supported")),Ze||("colorCount"in $e&&(gt=$e.colorCount|0,d(gt>0,"invalid color buffer count")),"colorTexture"in $e&&(vt=!!$e.colorTexture,ot="rgba4"),"colorType"in $e&&(mt=$e.colorType,vt?(d(h.oes_texture_float||!(mt==="float"||mt==="float32"),"you must enable OES_texture_float in order to use floating point framebuffer objects"),d(h.oes_texture_half_float||!(mt==="half float"||mt==="float16"),"you must enable OES_texture_half_float in order to use 16-bit floating point framebuffer objects")):mt==="half float"||mt==="float16"?(d(h.ext_color_buffer_half_float,"you must enable EXT_color_buffer_half_float to use 16-bit render buffers"),ot="rgba16f"):(mt==="float"||mt==="float32")&&(d(h.webgl_color_buffer_float,"you must enable WEBGL_color_buffer_float in order to use 32-bit floating point renderbuffers"),ot="rgba32f"),d.oneOf(mt,ne,"invalid color type")),"colorFormat"in $e&&(ot=$e.colorFormat,Q.indexOf(ot)>=0?vt=!0:Y.indexOf(ot)>=0?vt=!1:d.optional(function(){vt?d.oneOf($e.colorFormat,Q,"invalid color format for texture"):d.oneOf($e.colorFormat,Y,"invalid color format for renderbuffer")}))),("depthTexture"in $e||"depthStencilTexture"in $e)&&(lt=!!($e.depthTexture||$e.depthStencilTexture),d(!lt||h.webgl_depth_texture,"webgl_depth_texture extension not supported")),"depth"in $e&&(typeof $e.depth=="boolean"?st=$e.depth:(yt=$e.depth,ut=!1)),"stencil"in $e&&(typeof $e.stencil=="boolean"?ut=$e.stencil:(St=$e.stencil,st=!1)),"depthStencil"in $e&&(typeof $e.depthStencil=="boolean"?st=ut=$e.depthStencil:(At=$e.depthStencil,st=!1,ut=!1))}var Ke=null,Fe=null,We=null,Qe=null;if(Array.isArray(Ze))Ke=Ze.map(te);else if(Ze)Ke=[te(Ze)];else for(Ke=new Array(gt),ze=0;ze<gt;++ze)Ke[ze]=C(Ge,qe,vt,ot,mt);d(h.webgl_draw_buffers||Ke.length<=1,"you must enable the WEBGL_draw_buffers extension in order to use multiple color buffers."),d(Ke.length<=_.maxColorAttachments,"too many color attachments, not supported"),Ge=Ge||Ke[0].width,qe=qe||Ke[0].height,yt?Fe=te(yt):st&&!ut&&(Fe=C(Ge,qe,lt,"depth","uint32")),St?We=te(St):ut&&!st&&(We=C(Ge,qe,!1,"stencil","uint8")),At?Qe=te(At):!yt&&!St&&ut&&st&&(Qe=C(Ge,qe,lt,"depth stencil","depth stencil")),d(!!yt+!!St+!!At<=1,"invalid framebuffer configuration, can specify exactly one depth/stencil attachment");var ct=null;for(ze=0;ze<Ke.length;++ze)if(ue(Ke[ze],Ge,qe),d(!Ke[ze]||Ke[ze].texture&&qg.indexOf(Ke[ze].texture._texture.format)>=0||Ke[ze].renderbuffer&&ry.indexOf(Ke[ze].renderbuffer._renderbuffer.format)>=0,"framebuffer color attachment "+ze+" is invalid"),Ke[ze]&&Ke[ze].texture){var on=ua[Ke[ze].texture._texture.format]*Di[Ke[ze].texture._texture.type];ct===null?ct=on:d(ct===on,"all color attachments much have the same number of bits per pixel.")}return ue(Fe,Ge,qe),d(!Fe||Fe.texture&&Fe.texture._texture.format===Hg||Fe.renderbuffer&&Fe.renderbuffer._renderbuffer.format===Qg,"invalid depth attachment for framebuffer object"),ue(We,Ge,qe),d(!We||We.renderbuffer&&We.renderbuffer._renderbuffer.format===Kg,"invalid stencil attachment for framebuffer object"),ue(Qe,Ge,qe),d(!Qe||Qe.texture&&Qe.texture._texture.format===kf||Qe.renderbuffer&&Qe.renderbuffer._renderbuffer.format===kf,"invalid depth-stencil attachment for framebuffer object"),de(he),he.width=Ge,he.height=qe,he.colorAttachments=Ke,he.depthAttachment=Fe,he.stencilAttachment=We,he.depthStencilAttachment=Qe,Oe.color=Ke.map(O),Oe.depth=O(Fe),Oe.stencil=O(We),Oe.depthStencil=O(Qe),Oe.width=he.width,Oe.height=he.height,j(he),Oe}function De(me,ve){d(N.next!==he,"can not resize a framebuffer which is currently in use");var ze=Math.max(me|0,1),Ge=Math.max(ve|0||ze,1);if(ze===he.width&&Ge===he.height)return Oe;for(var qe=he.colorAttachments,st=0;st<qe.length;++st)ee(qe[st],ze,Ge);return ee(he.depthAttachment,ze,Ge),ee(he.stencilAttachment,ze,Ge),ee(he.depthStencilAttachment,ze,Ge),he.width=Oe.width=ze,he.height=Oe.height=Ge,j(he),Oe}return Oe(J,le),r(Oe,{resize:De,_reglType:"framebuffer",_framebuffer:he,destroy:function(){Ce(he),de(he)},use:function(me){N.setFBO({framebuffer:Oe},me)}})}function be(J){var le=Array(6);function he(De){var me;d(le.indexOf(N.next)<0,"can not update framebuffer which is currently in use");var ve={color:null},ze=0,Ge=null,qe="rgba",st="uint8",ut=1;if(typeof De=="number")ze=De|0;else if(!De)ze=1;else{d.type(De,"object","invalid arguments for framebuffer");var Ze=De;if("shape"in Ze){var vt=Ze.shape;d(Array.isArray(vt)&&vt.length>=2,"invalid shape for framebuffer"),d(vt[0]===vt[1],"cube framebuffer must be square"),ze=vt[0]}else"radius"in Ze&&(ze=Ze.radius|0),"width"in Ze?(ze=Ze.width|0,"height"in Ze&&d(Ze.height===ze,"must be square")):"height"in Ze&&(ze=Ze.height|0);("color"in Ze||"colors"in Ze)&&(Ge=Ze.color||Ze.colors,Array.isArray(Ge)&&d(Ge.length===1||h.webgl_draw_buffers,"multiple render targets not supported")),Ge||("colorCount"in Ze&&(ut=Ze.colorCount|0,d(ut>0,"invalid color buffer count")),"colorType"in Ze&&(d.oneOf(Ze.colorType,ne,"invalid color type"),st=Ze.colorType),"colorFormat"in Ze&&(qe=Ze.colorFormat,d.oneOf(Ze.colorFormat,Q,"invalid color format for texture"))),"depth"in Ze&&(ve.depth=Ze.depth),"stencil"in Ze&&(ve.stencil=Ze.stencil),"depthStencil"in Ze&&(ve.depthStencil=Ze.depthStencil)}var ot;if(Ge)if(Array.isArray(Ge))for(ot=[],me=0;me<Ge.length;++me)ot[me]=Ge[me];else ot=[Ge];else{ot=Array(ut);var mt={radius:ze,format:qe,type:st};for(me=0;me<ut;++me)ot[me]=R.createCube(mt)}for(ve.color=Array(ot.length),me=0;me<ot.length;++me){var gt=ot[me];d(typeof gt=="function"&>._reglType==="textureCube","invalid cube map"),ze=ze||gt.width,d(gt.width===ze&>.height===ze,"invalid cube map shape"),ve.color[me]={target:Ri,data:ot[me]}}for(me=0;me<6;++me){for(var yt=0;yt<ot.length;++yt)ve.color[yt].target=Ri+me;me>0&&(ve.depth=le[0].depth,ve.stencil=le[0].stencil,ve.depthStencil=le[0].depthStencil),le[me]?le[me](ve):le[me]=$(ve)}return r(he,{width:ze,height:ze,color:ot})}function Oe(De){var me,ve=De|0;if(d(ve>0&&ve<=_.maxCubeMapSize,"invalid radius for cube fbo"),ve===he.width)return he;var ze=he.color;for(me=0;me<ze.length;++me)ze[me].resize(ve);for(me=0;me<6;++me)le[me].resize(ve);return he.width=he.height=ve,he}return he(J),r(he,{faces:le,resize:Oe,_reglType:"framebufferCube",destroy:function(){le.forEach(function(De){De.destroy()})}})}function fe(){N.cur=null,N.next=null,N.dirty=!0,Gt(q).forEach(function(J){J.framebuffer=a.createFramebuffer(),j(J)})}return r(N,{getFramebuffer:function(J){if(typeof J=="function"&&J._reglType==="framebuffer"){var le=J._framebuffer;if(le instanceof pe)return le}return null},create:$,createCube:be,clear:function(){Gt(q).forEach(Ce)},restore:fe})}var oy=5126,Ff=34962,Mi=34963,Lf=["attributes","elements","offset","count","primitive","instances"];function fa(){this.state=0,this.x=0,this.y=0,this.z=0,this.w=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=oy,this.offset=0,this.stride=0,this.divisor=0}function ay(a,h,_,R,U,I,N){for(var Q=_.maxAttributes,Y=new Array(Q),ne=0;ne<Q;++ne)Y[ne]=new fa;var ie=0,re={},ue={Record:fa,scope:{},state:Y,currentVAO:null,targetVAO:null,restore:te()?de:function(){},createVAO:Ce,getVAO:O,destroyBuffer:K,setVAO:te()?ee:ge,clear:te()?q:function(){}};function K(j){for(var $=0;$<Y.length;++$){var be=Y[$];be.buffer===j&&(a.disableVertexAttribArray($),be.buffer=null)}}function te(){return h.oes_vertex_array_object}function C(){return h.angle_instanced_arrays}function O(j){return typeof j=="function"&&j._vao?j._vao:null}function ee(j){if(j!==ue.currentVAO){var $=te();j?$.bindVertexArrayOES(j.vao):$.bindVertexArrayOES(null),ue.currentVAO=j}}function ge(j){if(j!==ue.currentVAO){if(j)j.bindAttrs();else{for(var $=C(),be=0;be<Y.length;++be){var fe=Y[be];fe.buffer?(a.enableVertexAttribArray(be),fe.buffer.bind(),a.vertexAttribPointer(be,fe.size,fe.type,fe.normalized,fe.stride,fe.offfset),$&&fe.divisor&&$.vertexAttribDivisorANGLE(be,fe.divisor)):(a.disableVertexAttribArray(be),a.vertexAttrib4f(be,fe.x,fe.y,fe.z,fe.w))}N.elements?a.bindBuffer(Mi,N.elements.buffer.buffer):a.bindBuffer(Mi,null)}ue.currentVAO=j}}function q(){Gt(re).forEach(function(j){j.destroy()})}function pe(){this.id=++ie,this.attributes=[],this.elements=null,this.ownsElements=!1,this.count=0,this.offset=0,this.instances=-1,this.primitive=4;var j=te();j?this.vao=j.createVertexArrayOES():this.vao=null,re[this.id]=this,this.buffers=[]}pe.prototype.bindAttrs=function(){for(var j=C(),$=this.attributes,be=0;be<$.length;++be){var fe=$[be];fe.buffer?(a.enableVertexAttribArray(be),a.bindBuffer(Ff,fe.buffer.buffer),a.vertexAttribPointer(be,fe.size,fe.type,fe.normalized,fe.stride,fe.offset),j&&fe.divisor&&j.vertexAttribDivisorANGLE(be,fe.divisor)):(a.disableVertexAttribArray(be),a.vertexAttrib4f(be,fe.x,fe.y,fe.z,fe.w))}for(var J=$.length;J<Q;++J)a.disableVertexAttribArray(J);var le=I.getElements(this.elements);le?a.bindBuffer(Mi,le.buffer.buffer):a.bindBuffer(Mi,null)},pe.prototype.refresh=function(){var j=te();j&&(j.bindVertexArrayOES(this.vao),this.bindAttrs(),ue.currentVAO=null,j.bindVertexArrayOES(null))},pe.prototype.destroy=function(){if(this.vao){var j=te();this===ue.currentVAO&&(ue.currentVAO=null,j.bindVertexArrayOES(null)),j.deleteVertexArrayOES(this.vao),this.vao=null}this.ownsElements&&(this.elements.destroy(),this.elements=null,this.ownsElements=!1),re[this.id]&&(delete re[this.id],R.vaoCount-=1)};function de(){var j=te();j&&Gt(re).forEach(function($){$.refresh()})}function Ce(j){var $=new pe;R.vaoCount+=1;function be(fe){var J;if(Array.isArray(fe))J=fe,$.elements&&$.ownsElements&&$.elements.destroy(),$.elements=null,$.ownsElements=!1,$.offset=0,$.count=0,$.instances=-1,$.primitive=4;else{if(d(typeof fe=="object","invalid arguments for create vao"),d("attributes"in fe,"must specify attributes for vao"),fe.elements){var le=fe.elements;$.ownsElements?typeof le=="function"&&le._reglType==="elements"?($.elements.destroy(),$.ownsElements=!1):($.elements(le),$.ownsElements=!1):I.getElements(fe.elements)?($.elements=fe.elements,$.ownsElements=!1):($.elements=I.create(fe.elements),$.ownsElements=!0)}else $.elements=null,$.ownsElements=!1;J=fe.attributes,$.offset=0,$.count=-1,$.instances=-1,$.primitive=4,$.elements&&($.count=$.elements._elements.vertCount,$.primitive=$.elements._elements.primType),"offset"in fe&&($.offset=fe.offset|0),"count"in fe&&($.count=fe.count|0),"instances"in fe&&($.instances=fe.instances|0),"primitive"in fe&&(d(fe.primitive in yn,"bad primitive type: "+fe.primitive),$.primitive=yn[fe.primitive]),d.optional(()=>{for(var st=Object.keys(fe),ut=0;ut<st.length;++ut)d(Lf.indexOf(st[ut])>=0,'invalid option for vao: "'+st[ut]+'" valid options are '+Lf)}),d(Array.isArray(J),"attributes must be an array")}d(J.length<Q,"too many attributes"),d(J.length>0,"must specify at least one attribute");var he={},Oe=$.attributes;Oe.length=J.length;for(var De=0;De<J.length;++De){var me=J[De],ve=Oe[De]=new fa,ze=me.data||me;if(Array.isArray(ze)||n(ze)||Qt(ze)){var Ge;$.buffers[De]&&(Ge=$.buffers[De],n(ze)&&Ge._buffer.byteLength>=ze.byteLength?Ge.subdata(ze):(Ge.destroy(),$.buffers[De]=null)),$.buffers[De]||(Ge=$.buffers[De]=U.create(me,Ff,!1,!0)),ve.buffer=U.getBuffer(Ge),ve.size=ve.buffer.dimension|0,ve.normalized=!1,ve.type=ve.buffer.dtype,ve.offset=0,ve.stride=0,ve.divisor=0,ve.state=1,he[De]=1}else U.getBuffer(me)?(ve.buffer=U.getBuffer(me),ve.size=ve.buffer.dimension|0,ve.normalized=!1,ve.type=ve.buffer.dtype,ve.offset=0,ve.stride=0,ve.divisor=0,ve.state=1):U.getBuffer(me.buffer)?(ve.buffer=U.getBuffer(me.buffer),ve.size=(+me.size||ve.buffer.dimension)|0,ve.normalized=!!me.normalized||!1,"type"in me?(d.parameter(me.type,Ln,"invalid buffer type"),ve.type=Ln[me.type]):ve.type=ve.buffer.dtype,ve.offset=(me.offset||0)|0,ve.stride=(me.stride||0)|0,ve.divisor=(me.divisor||0)|0,ve.state=1,d(ve.size>=1&&ve.size<=4,"size must be between 1 and 4"),d(ve.offset>=0,"invalid offset"),d(ve.stride>=0&&ve.stride<=255,"stride must be between 0 and 255"),d(ve.divisor>=0,"divisor must be positive"),d(!ve.divisor||!!h.angle_instanced_arrays,"ANGLE_instanced_arrays must be enabled to use divisor")):"x"in me?(d(De>0,"first attribute must not be a constant"),ve.x=+me.x||0,ve.y=+me.y||0,ve.z=+me.z||0,ve.w=+me.w||0,ve.state=2):d(!1,"invalid attribute spec for location "+De)}for(var qe=0;qe<$.buffers.length;++qe)!he[qe]&&$.buffers[qe]&&($.buffers[qe].destroy(),$.buffers[qe]=null);return $.refresh(),be}return be.destroy=function(){for(var fe=0;fe<$.buffers.length;++fe)$.buffers[fe]&&$.buffers[fe].destroy();$.buffers.length=0,$.ownsElements&&($.elements.destroy(),$.elements=null,$.ownsElements=!1),$.destroy()},be._vao=$,be._reglType="vao",be(j)}return ue}var zf=35632,sy=35633,uy=35718,fy=35721;function ly(a,h,_,R){var U={},I={};function N(C,O,ee,ge){this.name=C,this.id=O,this.location=ee,this.info=ge}function Q(C,O){for(var ee=0;ee<C.length;++ee)if(C[ee].id===O.id){C[ee].location=O.location;return}C.push(O)}function Y(C,O,ee){var ge=C===zf?U:I,q=ge[O];if(!q){var pe=h.str(O);q=a.createShader(C),a.shaderSource(q,pe),a.compileShader(q),d.shaderError(a,q,pe,C,ee),ge[O]=q}return q}var ne={},ie=[],re=0;function ue(C,O){this.id=re++,this.fragId=C,this.vertId=O,this.program=null,this.uniforms=[],this.attributes=[],this.refCount=1,R.profile&&(this.stats={uniformsCount:0,attributesCount:0})}function K(C,O,ee){var ge,q,pe=Y(zf,C.fragId),de=Y(sy,C.vertId),Ce=C.program=a.createProgram();if(a.attachShader(Ce,pe),a.attachShader(Ce,de),ee)for(ge=0;ge<ee.length;++ge){var j=ee[ge];a.bindAttribLocation(Ce,j[0],j[1])}a.linkProgram(Ce),d.linkError(a,Ce,h.str(C.fragId),h.str(C.vertId),O);var $=a.getProgramParameter(Ce,uy);R.profile&&(C.stats.uniformsCount=$);var be=C.uniforms;for(ge=0;ge<$;++ge)if(q=a.getActiveUniform(Ce,ge),q){if(q.size>1)for(var fe=0;fe<q.size;++fe){var J=q.name.replace("[0]","["+fe+"]");Q(be,new N(J,h.id(J),a.getUniformLocation(Ce,J),q))}var le=q.name;q.size>1&&(le=le.replace("[0]","")),Q(be,new N(le,h.id(le),a.getUniformLocation(Ce,le),q))}var he=a.getProgramParameter(Ce,fy);R.profile&&(C.stats.attributesCount=he);var Oe=C.attributes;for(ge=0;ge<he;++ge)q=a.getActiveAttrib(Ce,ge),q&&Q(Oe,new N(q.name,h.id(q.name),a.getAttribLocation(Ce,q.name),q))}R.profile&&(_.getMaxUniformsCount=function(){var C=0;return ie.forEach(function(O){O.stats.uniformsCount>C&&(C=O.stats.uniformsCount)}),C},_.getMaxAttributesCount=function(){var C=0;return ie.forEach(function(O){O.stats.attributesCount>C&&(C=O.stats.attributesCount)}),C});function te(){U={},I={};for(var C=0;C<ie.length;++C)K(ie[C],null,ie[C].attributes.map(function(O){return[O.location,O.name]}))}return{clear:function(){var C=a.deleteShader.bind(a);Gt(U).forEach(C),U={},Gt(I).forEach(C),I={},ie.forEach(function(O){a.deleteProgram(O.program)}),ie.length=0,ne={},_.shaderCount=0},program:function(C,O,ee,ge){d.command(C>=0,"missing vertex shader",ee),d.command(O>=0,"missing fragment shader",ee);var q=ne[O];q||(q=ne[O]={});var pe=q[C];if(pe&&(pe.refCount++,!ge))return pe;var de=new ue(O,C);return _.shaderCount++,K(de,ee,ge),pe||(q[C]=de),ie.push(de),r(de,{destroy:function(){if(de.refCount--,de.refCount<=0){a.deleteProgram(de.program);var Ce=ie.indexOf(de);ie.splice(Ce,1),_.shaderCount--}q[de.vertId].refCount<=0&&(a.deleteShader(I[de.vertId]),delete I[de.vertId],delete ne[de.fragId][de.vertId]),Object.keys(ne[de.fragId]).length||(a.deleteShader(U[de.fragId]),delete U[de.fragId],delete ne[de.fragId])}})},restore:te,shader:Y,frag:-1,vert:-1}}var cy=6408,kr=5121,hy=3333,Oi=5126;function dy(a,h,_,R,U,I,N){function Q(ie){var re;h.next===null?(d(U.preserveDrawingBuffer,'you must create a webgl context with "preserveDrawingBuffer":true in order to read pixels from the drawing buffer'),re=kr):(d(h.next.colorAttachments[0].texture!==null,"You cannot read from a renderbuffer"),re=h.next.colorAttachments[0].texture._texture.type,d.optional(function(){I.oes_texture_float?(d(re===kr||re===Oi,"Reading from a framebuffer is only allowed for the types 'uint8' and 'float'"),re===Oi&&d(N.readFloat,"Reading 'float' values is not permitted in your browser. For a fallback, please see: https://www.npmjs.com/package/glsl-read-float")):d(re===kr,"Reading from a framebuffer is only allowed for the type 'uint8'")}));var ue=0,K=0,te=R.framebufferWidth,C=R.framebufferHeight,O=null;n(ie)?O=ie:ie&&(d.type(ie,"object","invalid arguments to regl.read()"),ue=ie.x|0,K=ie.y|0,d(ue>=0&&ue<R.framebufferWidth,"invalid x offset for regl.read"),d(K>=0&&K<R.framebufferHeight,"invalid y offset for regl.read"),te=(ie.width||R.framebufferWidth-ue)|0,C=(ie.height||R.framebufferHeight-K)|0,O=ie.data||null),O&&(re===kr?d(O instanceof Uint8Array,"buffer must be 'Uint8Array' when reading from a framebuffer of type 'uint8'"):re===Oi&&d(O instanceof Float32Array,"buffer must be 'Float32Array' when reading from a framebuffer of type 'float'")),d(te>0&&te+ue<=R.framebufferWidth,"invalid width for read pixels"),d(C>0&&C+K<=R.framebufferHeight,"invalid height for read pixels"),_();var ee=te*C*4;return O||(re===kr?O=new Uint8Array(ee):re===Oi&&(O=O||new Float32Array(ee))),d.isTypedArray(O,"data buffer for regl.read() must be a typedarray"),d(O.byteLength>=ee,"data buffer for regl.read() too small"),a.pixelStorei(hy,4),a.readPixels(ue,K,te,C,cy,re,O),O}function Y(ie){var re;return h.setFBO({framebuffer:ie.framebuffer},function(){re=Q(ie)}),re}function ne(ie){return!ie||!("framebuffer"in ie)?Q(ie):Y(ie)}return ne}function rr(a){return Array.prototype.slice.call(a)}function ir(a){return rr(a).join("")}function my(){var a=0,h=[],_=[];function R(re){for(var ue=0;ue<_.length;++ue)if(_[ue]===re)return h[ue];var K="g"+a++;return h.push(K),_.push(re),K}function U(){var re=[];function ue(){re.push.apply(re,rr(arguments))}var K=[];function te(){var C="v"+a++;return K.push(C),arguments.length>0&&(re.push(C,"="),re.push.apply(re,rr(arguments)),re.push(";")),C}return r(ue,{def:te,toString:function(){return ir([K.length>0?"var "+K.join(",")+";":"",ir(re)])}})}function I(){var re=U(),ue=U(),K=re.toString,te=ue.toString;function C(O,ee){ue(O,ee,"=",re.def(O,ee),";")}return r(function(){re.apply(re,rr(arguments))},{def:re.def,entry:re,exit:ue,save:C,set:function(O,ee,ge){C(O,ee),re(O,ee,"=",ge,";")},toString:function(){return K()+te()}})}function N(){var re=ir(arguments),ue=I(),K=I(),te=ue.toString,C=K.toString;return r(ue,{then:function(){return ue.apply(ue,rr(arguments)),this},else:function(){return K.apply(K,rr(arguments)),this},toString:function(){var O=C();return O&&(O="else{"+O+"}"),ir(["if(",re,"){",te(),"}",O])}})}var Q=U(),Y={};function ne(re,ue){var K=[];function te(){var q="a"+K.length;return K.push(q),q}ue=ue||0;for(var C=0;C<ue;++C)te();var O=I(),ee=O.toString,ge=Y[re]=r(O,{arg:te,toString:function(){return ir(["function(",K.join(),"){",ee(),"}"])}});return ge}function ie(){var re=['"use strict";',Q,"return {"];Object.keys(Y).forEach(function(te){re.push('"',te,'":',Y[te].toString(),",")}),re.push("}");var ue=ir(re).replace(/;/g,`;
|
|
1
|
+
(function(Vt,tr){typeof exports=="object"&&typeof module<"u"?tr(exports):typeof define=="function"&&define.amd?define(["exports"],tr):(Vt=typeof globalThis<"u"?globalThis:Vt||self,tr(Vt.Cosmos={}))})(this,function(Vt){"use strict";var tr="http://www.w3.org/1999/xhtml";const ff={svg:"http://www.w3.org/2000/svg",xhtml:tr,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Bi(t){var e=t+="",n=e.indexOf(":");return n>=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),ff.hasOwnProperty(e)?{space:ff[e],local:t}:t}function Xc(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===tr&&e.documentElement.namespaceURI===tr?e.createElement(t):e.createElementNS(n,t)}}function Wc(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function uf(t){var e=Bi(t);return(e.local?Wc:Xc)(e)}function qc(){}function ya(t){return t==null?qc:function(){return this.querySelector(t)}}function Yc(t){typeof t!="function"&&(t=ya(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,f=r[i]=new Array(s),u,l,v=0;v<s;++v)(u=o[v])&&(l=t.call(u,u.__data__,v,o))&&("__data__"in u&&(l.__data__=u.__data__),f[v]=l);return new en(r,this._parents)}function Zc(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function Qc(){return[]}function lf(t){return t==null?Qc:function(){return this.querySelectorAll(t)}}function Kc(t){return function(){return Zc(t.apply(this,arguments))}}function Jc(t){typeof t=="function"?t=Kc(t):t=lf(t);for(var e=this._groups,n=e.length,r=[],i=[],o=0;o<n;++o)for(var s=e[o],f=s.length,u,l=0;l<f;++l)(u=s[l])&&(r.push(t.call(u,u.__data__,l,s)),i.push(u));return new en(r,i)}function cf(t){return function(){return this.matches(t)}}function hf(t){return function(e){return e.matches(t)}}var eh=Array.prototype.find;function th(t){return function(){return eh.call(this.children,t)}}function nh(){return this.firstElementChild}function rh(t){return this.select(t==null?nh:th(typeof t=="function"?t:hf(t)))}var ih=Array.prototype.filter;function oh(){return Array.from(this.children)}function ah(t){return function(){return ih.call(this.children,t)}}function sh(t){return this.selectAll(t==null?oh:ah(typeof t=="function"?t:hf(t)))}function fh(t){typeof t!="function"&&(t=cf(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,f=r[i]=[],u,l=0;l<s;++l)(u=o[l])&&t.call(u,u.__data__,l,o)&&f.push(u);return new en(r,this._parents)}function df(t){return new Array(t.length)}function uh(){return new en(this._enter||this._groups.map(df),this._parents)}function Ui(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}Ui.prototype={constructor:Ui,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function lh(t){return function(){return t}}function ch(t,e,n,r,i,o){for(var s=0,f,u=e.length,l=o.length;s<l;++s)(f=e[s])?(f.__data__=o[s],r[s]=f):n[s]=new Ui(t,o[s]);for(;s<u;++s)(f=e[s])&&(i[s]=f)}function hh(t,e,n,r,i,o,s){var f,u,l=new Map,v=e.length,b=o.length,S=new Array(v),D;for(f=0;f<v;++f)(u=e[f])&&(S[f]=D=s.call(u,u.__data__,f,e)+"",l.has(D)?i[f]=u:l.set(D,u));for(f=0;f<b;++f)D=s.call(t,o[f],f,o)+"",(u=l.get(D))?(r[f]=u,u.__data__=o[f],l.delete(D)):n[f]=new Ui(t,o[f]);for(f=0;f<v;++f)(u=e[f])&&l.get(S[f])===u&&(i[f]=u)}function dh(t){return t.__data__}function mh(t,e){if(!arguments.length)return Array.from(this,dh);var n=e?hh:ch,r=this._parents,i=this._groups;typeof t!="function"&&(t=lh(t));for(var o=i.length,s=new Array(o),f=new Array(o),u=new Array(o),l=0;l<o;++l){var v=r[l],b=i[l],S=b.length,D=ph(t.call(v,v&&v.__data__,l,r)),Y=D.length,Ee=f[l]=new Array(Y),Te=s[l]=new Array(Y),se=u[l]=new Array(S);n(v,b,Ee,Te,se,D,e);for(var Ue=0,He=0,H,fe;Ue<Y;++Ue)if(H=Ee[Ue]){for(Ue>=He&&(He=Ue+1);!(fe=Te[He])&&++He<Y;);H._next=fe||null}}return s=new en(s,r),s._enter=f,s._exit=u,s}function ph(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function vh(){return new en(this._exit||this._groups.map(df),this._parents)}function gh(t,e,n){var r=this.enter(),i=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),n==null?o.remove():n(o),r&&i?r.merge(i).order():i}function yh(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,o=r.length,s=Math.min(i,o),f=new Array(i),u=0;u<s;++u)for(var l=n[u],v=r[u],b=l.length,S=f[u]=new Array(b),D,Y=0;Y<b;++Y)(D=l[Y]||v[Y])&&(S[Y]=D);for(;u<i;++u)f[u]=n[u];return new en(f,this._parents)}function xh(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r=t[e],i=r.length-1,o=r[i],s;--i>=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function bh(t){t||(t=_h);function e(b,S){return b&&S?t(b.__data__,S.__data__):!b-!S}for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var s=n[o],f=s.length,u=i[o]=new Array(f),l,v=0;v<f;++v)(l=s[v])&&(u[v]=l);u.sort(e)}return new en(i,this._parents).order()}function _h(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function Sh(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Th(){return Array.from(this)}function wh(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var s=r[i];if(s)return s}return null}function Ah(){let t=0;for(const e of this)++t;return t}function Eh(){return!this.node()}function Ph(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i=e[n],o=0,s=i.length,f;o<s;++o)(f=i[o])&&t.call(f,f.__data__,o,i);return this}function Ch(t){return function(){this.removeAttribute(t)}}function kh(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Lh(t,e){return function(){this.setAttribute(t,e)}}function Fh(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Rh(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}function Ih(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Dh(t,e){var n=Bi(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((e==null?n.local?kh:Ch:typeof e=="function"?n.local?Ih:Rh:n.local?Fh:Lh)(n,e))}function mf(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function zh(t){return function(){this.style.removeProperty(t)}}function Oh(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Mh(t,e,n){return function(){var r=e.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Nh(t,e,n){return arguments.length>1?this.each((e==null?zh:typeof e=="function"?Mh:Oh)(t,e,n??"")):Cr(this.node(),t)}function Cr(t,e){return t.style.getPropertyValue(e)||mf(t).getComputedStyle(t,null).getPropertyValue(e)}function Gh(t){return function(){delete this[t]}}function Bh(t,e){return function(){this[t]=e}}function Uh(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Vh(t,e){return arguments.length>1?this.each((e==null?Gh:typeof e=="function"?Uh:Bh)(t,e)):this.node()[t]}function pf(t){return t.trim().split(/^|\s+/)}function xa(t){return t.classList||new vf(t)}function vf(t){this._node=t,this._names=pf(t.getAttribute("class")||"")}vf.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function gf(t,e){for(var n=xa(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function yf(t,e){for(var n=xa(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function $h(t){return function(){gf(this,t)}}function Hh(t){return function(){yf(this,t)}}function jh(t,e){return function(){(e.apply(this,arguments)?gf:yf)(this,t)}}function Xh(t,e){var n=pf(t+"");if(arguments.length<2){for(var r=xa(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof e=="function"?jh:e?$h:Hh)(n,e))}function Wh(){this.textContent=""}function qh(t){return function(){this.textContent=t}}function Yh(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function Zh(t){return arguments.length?this.each(t==null?Wh:(typeof t=="function"?Yh:qh)(t)):this.node().textContent}function Qh(){this.innerHTML=""}function Kh(t){return function(){this.innerHTML=t}}function Jh(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function ed(t){return arguments.length?this.each(t==null?Qh:(typeof t=="function"?Jh:Kh)(t)):this.node().innerHTML}function td(){this.nextSibling&&this.parentNode.appendChild(this)}function nd(){return this.each(td)}function rd(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function id(){return this.each(rd)}function od(t){var e=typeof t=="function"?t:uf(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function ad(){return null}function sd(t,e){var n=typeof t=="function"?t:uf(t),r=e==null?ad:typeof e=="function"?e:ya(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function fd(){var t=this.parentNode;t&&t.removeChild(this)}function ud(){return this.each(fd)}function ld(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function cd(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function hd(t){return this.select(t?cd:ld)}function dd(t){return arguments.length?this.property("__data__",t):this.node().__data__}function md(t){return function(e){t.call(this,e,this.__data__)}}function pd(t){return t.trim().split(/^|\s+/).map(function(e){var n="",r=e.indexOf(".");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function vd(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,o;n<i;++n)o=e[n],(!t.type||o.type===t.type)&&o.name===t.name?this.removeEventListener(o.type,o.listener,o.options):e[++r]=o;++r?e.length=r:delete this.__on}}}function gd(t,e,n){return function(){var r=this.__on,i,o=md(e);if(r){for(var s=0,f=r.length;s<f;++s)if((i=r[s]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=o,i.options=n),i.value=e;return}}this.addEventListener(t.type,o,n),i={type:t.type,name:t.name,value:e,listener:o,options:n},r?r.push(i):this.__on=[i]}}function yd(t,e,n){var r=pd(t+""),i,o=r.length,s;if(arguments.length<2){var f=this.node().__on;if(f){for(var u=0,l=f.length,v;u<l;++u)for(i=0,v=f[u];i<o;++i)if((s=r[i]).type===v.type&&s.name===v.name)return v.value}return}for(f=e?gd:vd,i=0;i<o;++i)this.each(f(r[i],e,n));return this}function xf(t,e,n){var r=mf(t),i=r.CustomEvent;typeof i=="function"?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function xd(t,e){return function(){return xf(this,t,e)}}function bd(t,e){return function(){return xf(this,t,e.apply(this,arguments))}}function _d(t,e){return this.each((typeof e=="function"?bd:xd)(t,e))}function*Sd(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length,s;i<o;++i)(s=r[i])&&(yield s)}var bf=[null];function en(t,e){this._groups=t,this._parents=e}function ni(){return new en([[document.documentElement]],bf)}function Td(){return this}en.prototype=ni.prototype={constructor:en,select:Yc,selectAll:Jc,selectChild:rh,selectChildren:sh,filter:fh,data:mh,enter:uh,exit:vh,join:gh,merge:yh,selection:Td,order:xh,sort:bh,call:Sh,nodes:Th,node:wh,size:Ah,empty:Eh,each:Ph,attr:Dh,style:Nh,property:Vh,classed:Xh,text:Zh,html:ed,raise:nd,lower:id,append:od,insert:sd,remove:ud,clone:hd,datum:dd,on:yd,dispatch:_d,[Symbol.iterator]:Sd};function Dt(t){return typeof t=="string"?new en([[document.querySelector(t)]],[document.documentElement]):new en([[t]],bf)}function wd(t){let e;for(;e=t.sourceEvent;)t=e;return t}function kn(t,e){if(t=wd(t),e===void 0&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,r=r.matrixTransform(e.getScreenCTM().inverse()),[r.x,r.y]}if(e.getBoundingClientRect){var i=e.getBoundingClientRect();return[t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop]}}return[t.pageX,t.pageY]}var Ad={value:()=>{}};function Vi(){for(var t=0,e=arguments.length,n={},r;t<e;++t){if(!(r=arguments[t]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new $i(n)}function $i(t){this._=t}function Ed(t,e){return t.trim().split(/^|\s+/).map(function(n){var r="",i=n.indexOf(".");if(i>=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}$i.prototype=Vi.prototype={constructor:$i,on:function(t,e){var n=this._,r=Ed(t+"",n),i,o=-1,s=r.length;if(arguments.length<2){for(;++o<s;)if((i=(t=r[o]).type)&&(i=Pd(n[i],t.name)))return i;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++o<s;)if(i=(t=r[o]).type)n[i]=_f(n[i],t.name,e);else if(e==null)for(i in n)n[i]=_f(n[i],t.name,null);return this},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new $i(t)},call:function(t,e){if((i=arguments.length-2)>0)for(var n=new Array(i),r=0,i,o;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(e,n)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(e,n)}};function Pd(t,e){for(var n=0,r=t.length,i;n<r;++n)if((i=t[n]).name===e)return i.value}function _f(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=Ad,t=t.slice(0,r).concat(t.slice(r+1));break}return n!=null&&t.push({name:e,value:n}),t}var kr=0,ri=0,ii=0,Sf=1e3,Hi,oi,ji=0,nr=0,Xi=0,ai=typeof performance=="object"&&performance.now?performance:Date,Tf=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function ba(){return nr||(Tf(Cd),nr=ai.now()+Xi)}function Cd(){nr=0}function Wi(){this._call=this._time=this._next=null}Wi.prototype=wf.prototype={constructor:Wi,restart:function(t,e,n){if(typeof t!="function")throw new TypeError("callback is not a function");n=(n==null?ba():+n)+(e==null?0:+e),!this._next&&oi!==this&&(oi?oi._next=this:Hi=this,oi=this),this._call=t,this._time=n,_a()},stop:function(){this._call&&(this._call=null,this._time=1/0,_a())}};function wf(t,e,n){var r=new Wi;return r.restart(t,e,n),r}function kd(){ba(),++kr;for(var t=Hi,e;t;)(e=nr-t._time)>=0&&t._call.call(null,e),t=t._next;--kr}function Af(){nr=(ji=ai.now())+Xi,kr=ri=0;try{kd()}finally{kr=0,Fd(),nr=0}}function Ld(){var t=ai.now(),e=t-ji;e>Sf&&(Xi-=e,ji=t)}function Fd(){for(var t,e=Hi,n,r=1/0;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:Hi=n);oi=t,_a(r)}function _a(t){if(!kr){ri&&(ri=clearTimeout(ri));var e=t-nr;e>24?(t<1/0&&(ri=setTimeout(Af,t-ai.now()-Xi)),ii&&(ii=clearInterval(ii))):(ii||(ji=ai.now(),ii=setInterval(Ld,Sf)),kr=1,Tf(Af))}}function Ef(t,e,n){var r=new Wi;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}var Rd=Vi("start","end","cancel","interrupt"),Id=[],Pf=0,Cf=1,Sa=2,qi=3,kf=4,Ta=5,Yi=6;function Zi(t,e,n,r,i,o){var s=t.__transition;if(!s)t.__transition={};else if(n in s)return;Dd(t,n,{name:e,index:r,group:i,on:Rd,tween:Id,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Pf})}function wa(t,e){var n=ln(t,e);if(n.state>Pf)throw new Error("too late; already scheduled");return n}function bn(t,e){var n=ln(t,e);if(n.state>qi)throw new Error("too late; already running");return n}function ln(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Dd(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=wf(o,0,n.time);function o(l){n.state=Cf,n.timer.restart(s,n.delay,n.time),n.delay<=l&&s(l-n.delay)}function s(l){var v,b,S,D;if(n.state!==Cf)return u();for(v in r)if(D=r[v],D.name===n.name){if(D.state===qi)return Ef(s);D.state===kf?(D.state=Yi,D.timer.stop(),D.on.call("interrupt",t,t.__data__,D.index,D.group),delete r[v]):+v<e&&(D.state=Yi,D.timer.stop(),D.on.call("cancel",t,t.__data__,D.index,D.group),delete r[v])}if(Ef(function(){n.state===qi&&(n.state=kf,n.timer.restart(f,n.delay,n.time),f(l))}),n.state=Sa,n.on.call("start",t,t.__data__,n.index,n.group),n.state===Sa){for(n.state=qi,i=new Array(S=n.tween.length),v=0,b=-1;v<S;++v)(D=n.tween[v].value.call(t,t.__data__,n.index,n.group))&&(i[++b]=D);i.length=b+1}}function f(l){for(var v=l<n.duration?n.ease.call(null,l/n.duration):(n.timer.restart(u),n.state=Ta,1),b=-1,S=i.length;++b<S;)i[b].call(t,v);n.state===Ta&&(n.on.call("end",t,t.__data__,n.index,n.group),u())}function u(){n.state=Yi,n.timer.stop(),delete r[e];for(var l in r)return;delete t.__transition}}function Qi(t,e){var n=t.__transition,r,i,o=!0,s;if(n){e=e==null?null:e+"";for(s in n){if((r=n[s]).name!==e){o=!1;continue}i=r.state>Sa&&r.state<Ta,r.state=Yi,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[s]}o&&delete t.__transition}}function zd(t){return this.each(function(){Qi(this,t)})}function Aa(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Lf(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function si(){}var fi=.7,Ki=1/fi,Lr="\\s*([+-]?\\d+)\\s*",ui="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",_n="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Od=/^#([0-9a-f]{3,8})$/,Md=new RegExp(`^rgb\\(${Lr},${Lr},${Lr}\\)$`),Nd=new RegExp(`^rgb\\(${_n},${_n},${_n}\\)$`),Gd=new RegExp(`^rgba\\(${Lr},${Lr},${Lr},${ui}\\)$`),Bd=new RegExp(`^rgba\\(${_n},${_n},${_n},${ui}\\)$`),Ud=new RegExp(`^hsl\\(${ui},${_n},${_n}\\)$`),Vd=new RegExp(`^hsla\\(${ui},${_n},${_n},${ui}\\)$`),Ff={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Aa(si,Un,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Rf,formatHex:Rf,formatHex8:$d,formatHsl:Hd,formatRgb:If,toString:If});function Rf(){return this.rgb().formatHex()}function $d(){return this.rgb().formatHex8()}function Hd(){return Nf(this).formatHsl()}function If(){return this.rgb().formatRgb()}function Un(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Od.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Df(e):n===3?new Zt(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Ji(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Ji(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Md.exec(t))?new Zt(e[1],e[2],e[3],1):(e=Nd.exec(t))?new Zt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Gd.exec(t))?Ji(e[1],e[2],e[3],e[4]):(e=Bd.exec(t))?Ji(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Ud.exec(t))?Mf(e[1],e[2]/100,e[3]/100,1):(e=Vd.exec(t))?Mf(e[1],e[2]/100,e[3]/100,e[4]):Ff.hasOwnProperty(t)?Df(Ff[t]):t==="transparent"?new Zt(NaN,NaN,NaN,0):null}function Df(t){return new Zt(t>>16&255,t>>8&255,t&255,1)}function Ji(t,e,n,r){return r<=0&&(t=e=n=NaN),new Zt(t,e,n,r)}function jd(t){return t instanceof si||(t=Un(t)),t?(t=t.rgb(),new Zt(t.r,t.g,t.b,t.opacity)):new Zt}function Ea(t,e,n,r){return arguments.length===1?jd(t):new Zt(t,e,n,r??1)}function Zt(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Aa(Zt,Ea,Lf(si,{brighter(t){return t=t==null?Ki:Math.pow(Ki,t),new Zt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?fi:Math.pow(fi,t),new Zt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Zt(rr(this.r),rr(this.g),rr(this.b),eo(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:zf,formatHex:zf,formatHex8:Xd,formatRgb:Of,toString:Of}));function zf(){return`#${ir(this.r)}${ir(this.g)}${ir(this.b)}`}function Xd(){return`#${ir(this.r)}${ir(this.g)}${ir(this.b)}${ir((isNaN(this.opacity)?1:this.opacity)*255)}`}function Of(){const t=eo(this.opacity);return`${t===1?"rgb(":"rgba("}${rr(this.r)}, ${rr(this.g)}, ${rr(this.b)}${t===1?")":`, ${t})`}`}function eo(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function rr(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ir(t){return t=rr(t),(t<16?"0":"")+t.toString(16)}function Mf(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new cn(t,e,n,r)}function Nf(t){if(t instanceof cn)return new cn(t.h,t.s,t.l,t.opacity);if(t instanceof si||(t=Un(t)),!t)return new cn;if(t instanceof cn)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,f=o-i,u=(o+i)/2;return f?(e===o?s=(n-r)/f+(n<r)*6:n===o?s=(r-e)/f+2:s=(e-n)/f+4,f/=u<.5?o+i:2-o-i,s*=60):f=u>0&&u<1?0:s,new cn(s,f,u,t.opacity)}function Wd(t,e,n,r){return arguments.length===1?Nf(t):new cn(t,e,n,r??1)}function cn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Aa(cn,Wd,Lf(si,{brighter(t){return t=t==null?Ki:Math.pow(Ki,t),new cn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?fi:Math.pow(fi,t),new cn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Zt(Pa(t>=240?t-240:t+120,i,r),Pa(t,i,r),Pa(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new cn(Gf(this.h),to(this.s),to(this.l),eo(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=eo(this.opacity);return`${t===1?"hsl(":"hsla("}${Gf(this.h)}, ${to(this.s)*100}%, ${to(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Gf(t){return t=(t||0)%360,t<0?t+360:t}function to(t){return Math.max(0,Math.min(1,t||0))}function Pa(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Ca=t=>()=>t;function qd(t,e){return function(n){return t+n*e}}function Yd(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Zd(t){return(t=+t)==1?Bf:function(e,n){return n-e?Yd(e,n,t):Ca(isNaN(e)?n:e)}}function Bf(t,e){var n=e-t;return n?qd(t,n):Ca(isNaN(t)?e:t)}const no=function t(e){var n=Zd(e);function r(i,o){var s=n((i=Ea(i)).r,(o=Ea(o)).r),f=n(i.g,o.g),u=n(i.b,o.b),l=Bf(i.opacity,o.opacity);return function(v){return i.r=s(v),i.g=f(v),i.b=u(v),i.opacity=l(v),i+""}}return r.gamma=t,r}(1);function Qd(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function Kd(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Jd(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),s;for(s=0;s<r;++s)i[s]=Fa(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(f){for(s=0;s<r;++s)o[s]=i[s](f);return o}}function em(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function hn(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function tm(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=Fa(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var ka=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,La=new RegExp(ka.source,"g");function nm(t){return function(){return t}}function rm(t){return function(e){return t(e)+""}}function Uf(t,e){var n=ka.lastIndex=La.lastIndex=0,r,i,o,s=-1,f=[],u=[];for(t=t+"",e=e+"";(r=ka.exec(t))&&(i=La.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),f[s]?f[s]+=o:f[++s]=o),(r=r[0])===(i=i[0])?f[s]?f[s]+=i:f[++s]=i:(f[++s]=null,u.push({i:s,x:hn(r,i)})),n=La.lastIndex;return n<e.length&&(o=e.slice(n),f[s]?f[s]+=o:f[++s]=o),f.length<2?u[0]?rm(u[0].x):nm(e):(e=u.length,function(l){for(var v=0,b;v<e;++v)f[(b=u[v]).i]=b.x(l);return f.join("")})}function Fa(t,e){var n=typeof e,r;return e==null||n==="boolean"?Ca(e):(n==="number"?hn:n==="string"?(r=Un(e))?(e=r,no):Uf:e instanceof Un?no:e instanceof Date?em:Kd(e)?Qd:Array.isArray(e)?Jd:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?tm:hn)(t,e)}function im(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var Vf=180/Math.PI,Ra={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function $f(t,e,n,r,i,o){var s,f,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(f=Math.sqrt(n*n+r*r))&&(n/=f,r/=f,u/=f),t*r<e*n&&(t=-t,e=-e,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*Vf,skewX:Math.atan(u)*Vf,scaleX:s,scaleY:f}}var ro;function om(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Ra:$f(e.a,e.b,e.c,e.d,e.e,e.f)}function am(t){return t==null||(ro||(ro=document.createElementNS("http://www.w3.org/2000/svg","g")),ro.setAttribute("transform",t),!(t=ro.transform.baseVal.consolidate()))?Ra:(t=t.matrix,$f(t.a,t.b,t.c,t.d,t.e,t.f))}function Hf(t,e,n,r){function i(l){return l.length?l.pop()+" ":""}function o(l,v,b,S,D,Y){if(l!==b||v!==S){var Ee=D.push("translate(",null,e,null,n);Y.push({i:Ee-4,x:hn(l,b)},{i:Ee-2,x:hn(v,S)})}else(b||S)&&D.push("translate("+b+e+S+n)}function s(l,v,b,S){l!==v?(l-v>180?v+=360:v-l>180&&(l+=360),S.push({i:b.push(i(b)+"rotate(",null,r)-2,x:hn(l,v)})):v&&b.push(i(b)+"rotate("+v+r)}function f(l,v,b,S){l!==v?S.push({i:b.push(i(b)+"skewX(",null,r)-2,x:hn(l,v)}):v&&b.push(i(b)+"skewX("+v+r)}function u(l,v,b,S,D,Y){if(l!==b||v!==S){var Ee=D.push(i(D)+"scale(",null,",",null,")");Y.push({i:Ee-4,x:hn(l,b)},{i:Ee-2,x:hn(v,S)})}else(b!==1||S!==1)&&D.push(i(D)+"scale("+b+","+S+")")}return function(l,v){var b=[],S=[];return l=t(l),v=t(v),o(l.translateX,l.translateY,v.translateX,v.translateY,b,S),s(l.rotate,v.rotate,b,S),f(l.skewX,v.skewX,b,S),u(l.scaleX,l.scaleY,v.scaleX,v.scaleY,b,S),l=v=null,function(D){for(var Y=-1,Ee=S.length,Te;++Y<Ee;)b[(Te=S[Y]).i]=Te.x(D);return b.join("")}}}var sm=Hf(om,"px, ","px)","deg)"),fm=Hf(am,", ",")",")"),um=1e-12;function jf(t){return((t=Math.exp(t))+1/t)/2}function lm(t){return((t=Math.exp(t))-1/t)/2}function cm(t){return((t=Math.exp(2*t))-1)/(t+1)}const hm=function t(e,n,r){function i(o,s){var f=o[0],u=o[1],l=o[2],v=s[0],b=s[1],S=s[2],D=v-f,Y=b-u,Ee=D*D+Y*Y,Te,se;if(Ee<um)se=Math.log(S/l)/e,Te=function(Ge){return[f+Ge*D,u+Ge*Y,l*Math.exp(e*Ge*se)]};else{var Ue=Math.sqrt(Ee),He=(S*S-l*l+r*Ee)/(2*l*n*Ue),H=(S*S-l*l-r*Ee)/(2*S*n*Ue),fe=Math.log(Math.sqrt(He*He+1)-He),Re=Math.log(Math.sqrt(H*H+1)-H);se=(Re-fe)/e,Te=function(Ge){var Ye=Ge*se,at=jf(fe),ut=l/(n*Ue)*(at*cm(e*Ye+fe)-lm(fe));return[f+ut*D,u+ut*Y,l*at/jf(e*Ye+fe)]}}return Te.duration=se*1e3*e/Math.SQRT2,Te}return i.rho=function(o){var s=Math.max(.001,+o),f=s*s,u=f*f;return t(s,f,u)},i}(Math.SQRT2,2,4);function dm(t,e){var n,r;return function(){var i=bn(this,t),o=i.tween;if(o!==n){r=n=o;for(var s=0,f=r.length;s<f;++s)if(r[s].name===e){r=r.slice(),r.splice(s,1);break}}i.tween=r}}function mm(t,e,n){var r,i;if(typeof n!="function")throw new Error;return function(){var o=bn(this,t),s=o.tween;if(s!==r){i=(r=s).slice();for(var f={name:e,value:n},u=0,l=i.length;u<l;++u)if(i[u].name===e){i[u]=f;break}u===l&&i.push(f)}o.tween=i}}function pm(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r=ln(this.node(),n).tween,i=0,o=r.length,s;i<o;++i)if((s=r[i]).name===t)return s.value;return null}return this.each((e==null?dm:mm)(n,t,e))}function Ia(t,e,n){var r=t._id;return t.each(function(){var i=bn(this,r);(i.value||(i.value={}))[e]=n.apply(this,arguments)}),function(i){return ln(i,r).value[e]}}function Xf(t,e){var n;return(typeof e=="number"?hn:e instanceof Un?no:(n=Un(e))?(e=n,no):Uf)(t,e)}function vm(t){return function(){this.removeAttribute(t)}}function gm(t){return function(){this.removeAttributeNS(t.space,t.local)}}function ym(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttribute(t);return s===i?null:s===r?o:o=e(r=s,n)}}function xm(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===r?o:o=e(r=s,n)}}function bm(t,e,n){var r,i,o;return function(){var s,f=n(this),u;return f==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=f+"",s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,f)))}}function _m(t,e,n){var r,i,o;return function(){var s,f=n(this),u;return f==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=f+"",s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,f)))}}function Sm(t,e){var n=Bi(t),r=n==="transform"?fm:Xf;return this.attrTween(t,typeof e=="function"?(n.local?_m:bm)(n,r,Ia(this,"attr."+t,e)):e==null?(n.local?gm:vm)(n):(n.local?xm:ym)(n,r,e))}function Tm(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function wm(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function Am(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&wm(t,o)),n}return i._value=e,i}function Em(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&Tm(t,o)),n}return i._value=e,i}function Pm(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;var r=Bi(t);return this.tween(n,(r.local?Am:Em)(r,e))}function Cm(t,e){return function(){wa(this,t).delay=+e.apply(this,arguments)}}function km(t,e){return e=+e,function(){wa(this,t).delay=e}}function Lm(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Cm:km)(e,t)):ln(this.node(),e).delay}function Fm(t,e){return function(){bn(this,t).duration=+e.apply(this,arguments)}}function Rm(t,e){return e=+e,function(){bn(this,t).duration=e}}function Im(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Fm:Rm)(e,t)):ln(this.node(),e).duration}function Dm(t,e){if(typeof e!="function")throw new Error;return function(){bn(this,t).ease=e}}function zm(t){var e=this._id;return arguments.length?this.each(Dm(e,t)):ln(this.node(),e).ease}function Om(t,e){return function(){var n=e.apply(this,arguments);if(typeof n!="function")throw new Error;bn(this,t).ease=n}}function Mm(t){if(typeof t!="function")throw new Error;return this.each(Om(this._id,t))}function Nm(t){typeof t!="function"&&(t=cf(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,f=r[i]=[],u,l=0;l<s;++l)(u=o[l])&&t.call(u,u.__data__,l,o)&&f.push(u);return new Ln(r,this._parents,this._name,this._id)}function Gm(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),s=new Array(r),f=0;f<o;++f)for(var u=e[f],l=n[f],v=u.length,b=s[f]=new Array(v),S,D=0;D<v;++D)(S=u[D]||l[D])&&(b[D]=S);for(;f<r;++f)s[f]=e[f];return new Ln(s,this._parents,this._name,this._id)}function Bm(t){return(t+"").trim().split(/^|\s+/).every(function(e){var n=e.indexOf(".");return n>=0&&(e=e.slice(0,n)),!e||e==="start"})}function Um(t,e,n){var r,i,o=Bm(e)?wa:bn;return function(){var s=o(this,t),f=s.on;f!==r&&(i=(r=f).copy()).on(e,n),s.on=i}}function Vm(t,e){var n=this._id;return arguments.length<2?ln(this.node(),n).on.on(t):this.each(Um(n,t,e))}function $m(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function Hm(){return this.on("end.remove",$m(this._id))}function jm(t){var e=this._name,n=this._id;typeof t!="function"&&(t=ya(t));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s<i;++s)for(var f=r[s],u=f.length,l=o[s]=new Array(u),v,b,S=0;S<u;++S)(v=f[S])&&(b=t.call(v,v.__data__,S,f))&&("__data__"in v&&(b.__data__=v.__data__),l[S]=b,Zi(l[S],e,n,S,l,ln(v,n)));return new Ln(o,this._parents,e,n)}function Xm(t){var e=this._name,n=this._id;typeof t!="function"&&(t=lf(t));for(var r=this._groups,i=r.length,o=[],s=[],f=0;f<i;++f)for(var u=r[f],l=u.length,v,b=0;b<l;++b)if(v=u[b]){for(var S=t.call(v,v.__data__,b,u),D,Y=ln(v,n),Ee=0,Te=S.length;Ee<Te;++Ee)(D=S[Ee])&&Zi(D,e,n,Ee,S,Y);o.push(S),s.push(v)}return new Ln(o,s,e,n)}var Wm=ni.prototype.constructor;function qm(){return new Wm(this._groups,this._parents)}function Ym(t,e){var n,r,i;return function(){var o=Cr(this,t),s=(this.style.removeProperty(t),Cr(this,t));return o===s?null:o===n&&s===r?i:i=e(n=o,r=s)}}function Wf(t){return function(){this.style.removeProperty(t)}}function Zm(t,e,n){var r,i=n+"",o;return function(){var s=Cr(this,t);return s===i?null:s===r?o:o=e(r=s,n)}}function Qm(t,e,n){var r,i,o;return function(){var s=Cr(this,t),f=n(this),u=f+"";return f==null&&(u=f=(this.style.removeProperty(t),Cr(this,t))),s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,f))}}function Km(t,e){var n,r,i,o="style."+e,s="end."+o,f;return function(){var u=bn(this,t),l=u.on,v=u.value[o]==null?f||(f=Wf(e)):void 0;(l!==n||i!==v)&&(r=(n=l).copy()).on(s,i=v),u.on=r}}function Jm(t,e,n){var r=(t+="")=="transform"?sm:Xf;return e==null?this.styleTween(t,Ym(t,r)).on("end.style."+t,Wf(t)):typeof e=="function"?this.styleTween(t,Qm(t,r,Ia(this,"style."+t,e))).each(Km(this._id,t)):this.styleTween(t,Zm(t,r,e),n).on("end.style."+t,null)}function ep(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function tp(t,e,n){var r,i;function o(){var s=e.apply(this,arguments);return s!==i&&(r=(i=s)&&ep(t,s,n)),r}return o._value=e,o}function np(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;return this.tween(r,tp(t,e,n??""))}function rp(t){return function(){this.textContent=t}}function ip(t){return function(){var e=t(this);this.textContent=e??""}}function op(t){return this.tween("text",typeof t=="function"?ip(Ia(this,"text",t)):rp(t==null?"":t+""))}function ap(t){return function(e){this.textContent=t.call(this,e)}}function sp(t){var e,n;function r(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&ap(i)),e}return r._value=t,r}function fp(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,sp(t))}function up(){for(var t=this._name,e=this._id,n=qf(),r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],f=s.length,u,l=0;l<f;++l)if(u=s[l]){var v=ln(u,e);Zi(u,t,n,l,s,{time:v.time+v.delay+v.duration,delay:0,duration:v.duration,ease:v.ease})}return new Ln(r,this._parents,t,n)}function lp(){var t,e,n=this,r=n._id,i=n.size();return new Promise(function(o,s){var f={value:s},u={value:function(){--i===0&&o()}};n.each(function(){var l=bn(this,r),v=l.on;v!==t&&(e=(t=v).copy(),e._.cancel.push(f),e._.interrupt.push(f),e._.end.push(u)),l.on=e}),i===0&&o()})}var cp=0;function Ln(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function qf(){return++cp}var Fn=ni.prototype;Ln.prototype={constructor:Ln,select:jm,selectAll:Xm,selectChild:Fn.selectChild,selectChildren:Fn.selectChildren,filter:Nm,merge:Gm,selection:qm,transition:up,call:Fn.call,nodes:Fn.nodes,node:Fn.node,size:Fn.size,empty:Fn.empty,each:Fn.each,on:Vm,attr:Sm,attrTween:Pm,style:Jm,styleTween:np,text:op,textTween:fp,remove:Hm,tween:pm,delay:Lm,duration:Im,ease:zm,easeVarying:Mm,end:lp,[Symbol.iterator]:Fn[Symbol.iterator]};function hp(t){return t*t}function dp(t){return t*(2-t)}function mp(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function pp(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var vp={time:null,delay:0,duration:250,ease:pp};function gp(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function yp(t){var e,n;t instanceof Ln?(e=t._id,t=t._name):(e=qf(),(n=vp).time=ba(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],f=s.length,u,l=0;l<f;++l)(u=s[l])&&Zi(u,t,e,l,s,n||gp(u,e));return new Ln(r,this._parents,t,e)}ni.prototype.interrupt=zd,ni.prototype.transition=yp;function Da(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function xp(t){if(Object.prototype.hasOwnProperty.call(t,"__esModule"))return t;var e=t.default;if(typeof e=="function"){var n=function r(){return this instanceof r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(r){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}),n}var io={exports:{}},bp=io.exports,Yf;function _p(){return Yf||(Yf=1,function(t,e){(function(n,r){t.exports=r()})(bp,function(){var n=function(a){return a instanceof Uint8Array||a instanceof Uint16Array||a instanceof Uint32Array||a instanceof Int8Array||a instanceof Int16Array||a instanceof Int32Array||a instanceof Float32Array||a instanceof Float64Array||a instanceof Uint8ClampedArray},r=function(a,h){for(var _=Object.keys(h),O=0;O<_.length;++O)a[_[O]]=h[_[O]];return a},i=`
|
|
2
|
+
`;function o(a){return typeof atob<"u"?atob(a):"base64:"+a}function s(a){var h=new Error("(regl) "+a);throw console.error(h),h}function f(a,h){a||s(h)}function u(a){return a?": "+a:""}function l(a,h,_){a in h||s("unknown parameter ("+a+")"+u(_)+". possible values: "+Object.keys(h).join())}function v(a,h){n(a)||s("invalid parameter type"+u(h)+". must be a typed array")}function b(a,h){switch(h){case"number":return typeof a=="number";case"object":return typeof a=="object";case"string":return typeof a=="string";case"boolean":return typeof a=="boolean";case"function":return typeof a=="function";case"undefined":return typeof a>"u";case"symbol":return typeof a=="symbol"}}function S(a,h,_){b(a,h)||s("invalid parameter type"+u(_)+". expected "+h+", got "+typeof a)}function D(a,h){a>=0&&(a|0)===a||s("invalid parameter type, ("+a+")"+u(h)+". must be a nonnegative integer")}function Y(a,h,_){h.indexOf(a)<0&&s("invalid value"+u(_)+". must be one of: "+h)}var Ee=["gl","canvas","container","attributes","pixelRatio","extensions","optionalExtensions","profile","onDone"];function Te(a){Object.keys(a).forEach(function(h){Ee.indexOf(h)<0&&s('invalid regl constructor argument "'+h+'". must be one of '+Ee)})}function se(a,h){for(a=a+"";a.length<h;)a=" "+a;return a}function Ue(){this.name="unknown",this.lines=[],this.index={},this.hasErrors=!1}function He(a,h){this.number=a,this.line=h,this.errors=[]}function H(a,h,_){this.file=a,this.line=h,this.message=_}function fe(){var a=new Error,h=(a.stack||a).toString(),_=/compileProcedure.*\n\s*at.*\((.*)\)/.exec(h);if(_)return _[1];var O=/compileProcedure.*\n\s*at\s+(.*)(\n|$)/.exec(h);return O?O[1]:"unknown"}function Re(){var a=new Error,h=(a.stack||a).toString(),_=/at REGLCommand.*\n\s+at.*\((.*)\)/.exec(h);if(_)return _[1];var O=/at REGLCommand.*\n\s+at\s+(.*)\n/.exec(h);return O?O[1]:"unknown"}function Ge(a,h){var _=a.split(`
|
|
3
|
+
`),O=1,j=0,z={unknown:new Ue,0:new Ue};z.unknown.name=z[0].name=h||fe(),z.unknown.lines.push(new He(0,""));for(var B=0;B<_.length;++B){var K=_[B],Q=/^\s*#\s*(\w+)\s+(.+)\s*$/.exec(K);if(Q)switch(Q[1]){case"line":var ie=/(\d+)(\s+\d+)?/.exec(Q[2]);ie&&(O=ie[1]|0,ie[2]&&(j=ie[2]|0,j in z||(z[j]=new Ue)));break;case"define":var ae=/SHADER_NAME(_B64)?\s+(.*)$/.exec(Q[2]);ae&&(z[j].name=ae[1]?o(ae[2]):ae[2]);break}z[j].lines.push(new He(O++,K))}return Object.keys(z).forEach(function(oe){var le=z[oe];le.lines.forEach(function(J){le.index[J.number]=J})}),z}function Ye(a){var h=[];return a.split(`
|
|
4
|
+
`).forEach(function(_){if(!(_.length<5)){var O=/^ERROR:\s+(\d+):(\d+):\s*(.*)$/.exec(_);O?h.push(new H(O[1]|0,O[2]|0,O[3].trim())):_.length>0&&h.push(new H("unknown",0,_))}}),h}function at(a,h){h.forEach(function(_){var O=a[_.file];if(O){var j=O.index[_.line];if(j){j.errors.push(_),O.hasErrors=!0;return}}a.unknown.hasErrors=!0,a.unknown.lines[0].errors.push(_)})}function ut(a,h,_,O,j){if(!a.getShaderParameter(h,a.COMPILE_STATUS)){var z=a.getShaderInfoLog(h),B=O===a.FRAGMENT_SHADER?"fragment":"vertex";ke(_,"string",B+" shader source must be a string",j);var K=Ge(_,j),Q=Ye(z);at(K,Q),Object.keys(K).forEach(function(ie){var ae=K[ie];if(!ae.hasErrors)return;var oe=[""],le=[""];function J(ne,k){oe.push(ne),le.push(k||"")}J("file number "+ie+": "+ae.name+`
|
|
5
|
+
`,"color:red;text-decoration:underline;font-weight:bold"),ae.lines.forEach(function(ne){if(ne.errors.length>0){J(se(ne.number,4)+"| ","background-color:yellow; font-weight:bold"),J(ne.line+i,"color:red; background-color:yellow; font-weight:bold");var k=0;ne.errors.forEach(function(G){var te=G.message,xe=/^\s*'(.*)'\s*:\s*(.*)$/.exec(te);if(xe){var Z=xe[1];switch(te=xe[2],Z){case"assign":Z="=";break}k=Math.max(ne.line.indexOf(Z,k),0)}else k=0;J(se("| ",6)),J(se("^^^",k+3)+i,"font-weight:bold"),J(se("| ",6)),J(te+i,"font-weight:bold")}),J(se("| ",6)+i)}else J(se(ne.number,4)+"| "),J(ne.line+i,"color:red")}),typeof document<"u"&&!window.chrome?(le[0]=oe.join("%c"),console.log.apply(console,le)):console.log(oe.join(""))}),f.raise("Error compiling "+B+" shader, "+K[0].name)}}function Ae(a,h,_,O,j){if(!a.getProgramParameter(h,a.LINK_STATUS)){var z=a.getProgramInfoLog(h),B=Ge(_,j),K=Ge(O,j),Q='Error linking program with vertex shader, "'+K[0].name+'", and fragment shader "'+B[0].name+'"';typeof document<"u"?console.log("%c"+Q+i+"%c"+z,"color:red;text-decoration:underline;font-weight:bold","color:red"):console.log(Q+i+z),f.raise(Q)}}function lt(a){a._commandRef=fe()}function it(a,h,_,O){lt(a);function j(Q){return Q?O.id(Q):0}a._fragId=j(a.static.frag),a._vertId=j(a.static.vert);function z(Q,ie){Object.keys(ie).forEach(function(ae){Q[O.id(ae)]=!0})}var B=a._uniformSet={};z(B,h.static),z(B,h.dynamic);var K=a._attributeSet={};z(K,_.static),z(K,_.dynamic),a._hasCount="count"in a.static||"count"in a.dynamic||"elements"in a.static||"elements"in a.dynamic}function N(a,h){var _=Re();s(a+" in command "+(h||fe())+(_==="unknown"?"":" called from "+_))}function Ce(a,h,_){a||N(h,_||fe())}function re(a,h,_,O){a in h||N("unknown parameter ("+a+")"+u(_)+". possible values: "+Object.keys(h).join(),O||fe())}function ke(a,h,_,O){b(a,h)||N("invalid parameter type"+u(_)+". expected "+h+", got "+typeof a,O||fe())}function Xe(a){a()}function je(a,h,_){a.texture?Y(a.texture._texture.internalformat,h,"unsupported texture format for attachment"):Y(a.renderbuffer._renderbuffer.format,_,"unsupported renderbuffer format for attachment")}var Qe=33071,Ze=9728,dt=9984,ct=9985,_t=9986,st=9987,$t=5120,Ht=5121,Qt=5122,zn=5123,wo=5124,Ao=5125,On=5126,sr=32819,Tn=32820,Ir=33635,Dr=34042,$n=36193,zt={};zt[$t]=zt[Ht]=1,zt[Qt]=zt[zn]=zt[$n]=zt[Ir]=zt[sr]=zt[Tn]=2,zt[wo]=zt[Ao]=zt[On]=zt[Dr]=4;function fr(a,h){return a===Tn||a===sr||a===Ir?2:a===Dr?4:zt[a]*h}function ur(a){return!(a&a-1)&&!!a}function Eo(a,h,_){var O,j=h.width,z=h.height,B=h.channels;f(j>0&&j<=_.maxTextureSize&&z>0&&z<=_.maxTextureSize,"invalid texture shape"),(a.wrapS!==Qe||a.wrapT!==Qe)&&f(ur(j)&&ur(z),"incompatible wrap mode for texture, both width and height must be power of 2"),h.mipmask===1?j!==1&&z!==1&&f(a.minFilter!==dt&&a.minFilter!==_t&&a.minFilter!==ct&&a.minFilter!==st,"min filter requires mipmap"):(f(ur(j)&&ur(z),"texture must be a square power of 2 to support mipmapping"),f(h.mipmask===(j<<1)-1,"missing or incomplete mipmap data")),h.type===On&&(_.extensions.indexOf("oes_texture_float_linear")<0&&f(a.minFilter===Ze&&a.magFilter===Ze,"filter not supported, must enable oes_texture_float_linear"),f(!a.genMipmaps,"mipmap generation not supported with float textures"));var K=h.images;for(O=0;O<16;++O)if(K[O]){var Q=j>>O,ie=z>>O;f(h.mipmask&1<<O,"missing mipmap data");var ae=K[O];if(f(ae.width===Q&&ae.height===ie,"invalid shape for mip images"),f(ae.format===h.format&&ae.internalformat===h.internalformat&&ae.type===h.type,"incompatible type for mip image"),!ae.compressed)if(ae.data){var oe=Math.ceil(fr(ae.type,B)*Q/ae.unpackAlignment)*ae.unpackAlignment;f(ae.data.byteLength===oe*ie,"invalid data for image, buffer size is inconsistent with image format")}else ae.element||ae.copy}else a.genMipmaps||f((h.mipmask&1<<O)===0,"extra mipmap data");h.compressed&&f(!a.genMipmaps,"mipmap generation for compressed images not supported")}function as(a,h,_,O){var j=a.width,z=a.height,B=a.channels;f(j>0&&j<=O.maxTextureSize&&z>0&&z<=O.maxTextureSize,"invalid texture shape"),f(j===z,"cube map must be square"),f(h.wrapS===Qe&&h.wrapT===Qe,"wrap mode not supported by cube map");for(var K=0;K<_.length;++K){var Q=_[K];f(Q.width===j&&Q.height===z,"inconsistent cube map face shape"),h.genMipmaps&&(f(!Q.compressed,"can not generate mipmap for compressed textures"),f(Q.mipmask===1,"can not specify mipmaps and generate mipmaps"));for(var ie=Q.images,ae=0;ae<16;++ae){var oe=ie[ae];if(oe){var le=j>>ae,J=z>>ae;f(Q.mipmask&1<<ae,"missing mipmap data"),f(oe.width===le&&oe.height===J,"invalid shape for mip images"),f(oe.format===a.format&&oe.internalformat===a.internalformat&&oe.type===a.type,"incompatible type for mip image"),oe.compressed||(oe.data?f(oe.data.byteLength===le*J*Math.max(fr(oe.type,B),oe.unpackAlignment),"invalid data for image, buffer size is inconsistent with image format"):oe.element||oe.copy)}}}}var d=r(f,{optional:Xe,raise:s,commandRaise:N,command:Ce,parameter:l,commandParameter:re,constructor:Te,type:S,commandType:ke,isTypedArray:v,nni:D,oneOf:Y,shaderError:ut,linkError:Ae,callSite:Re,saveCommandRef:lt,saveDrawInfo:it,framebufferFormat:je,guessCommand:fe,texture2D:Eo,textureCube:as}),lr=0,Hn=0,jn=5,Po=6;function wn(a,h){this.id=lr++,this.type=a,this.data=h}function yi(a){return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function Mn(a){if(a.length===0)return[];var h=a.charAt(0),_=a.charAt(a.length-1);if(a.length>1&&h===_&&(h==='"'||h==="'"))return['"'+yi(a.substr(1,a.length-2))+'"'];var O=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(a);if(O)return Mn(a.substr(0,O.index)).concat(Mn(O[1])).concat(Mn(a.substr(O.index+O[0].length)));var j=a.split(".");if(j.length===1)return['"'+yi(a)+'"'];for(var z=[],B=0;B<j.length;++B)z=z.concat(Mn(j[B]));return z}function xi(a){return"["+Mn(a).join("][")+"]"}function zr(a,h){return new wn(a,xi(h+""))}function Or(a){return typeof a=="function"&&!a._reglType||a instanceof wn}function an(a,h){if(typeof a=="function")return new wn(Hn,a);if(typeof a=="number"||typeof a=="boolean")return new wn(jn,a);if(Array.isArray(a))return new wn(Po,a.map(function(_,O){return an(_,h+"["+O+"]")}));if(a instanceof wn)return a;d(!1,"invalid option type in uniform "+h)}var Lt={DynamicVariable:wn,define:zr,isDynamic:Or,unbox:an,accessor:xi},cr={next:typeof requestAnimationFrame=="function"?function(a){return requestAnimationFrame(a)}:function(a){return setTimeout(a,16)},cancel:typeof cancelAnimationFrame=="function"?function(a){return cancelAnimationFrame(a)}:clearTimeout},Mr=typeof performance<"u"&&performance.now?function(){return performance.now()}:function(){return+new Date};function ss(){var a={"":0},h=[""];return{id:function(_){var O=a[_];return O||(O=a[_]=h.length,h.push(_),O)},str:function(_){return h[_]}}}function Nr(a,h,_){var O=document.createElement("canvas");r(O.style,{border:0,margin:0,padding:0,top:0,left:0,width:"100%",height:"100%"}),a.appendChild(O),a===document.body&&(O.style.position="absolute",r(a.style,{margin:0,padding:0}));function j(){var K=window.innerWidth,Q=window.innerHeight;if(a!==document.body){var ie=O.getBoundingClientRect();K=ie.right-ie.left,Q=ie.bottom-ie.top}O.width=_*K,O.height=_*Q}var z;a!==document.body&&typeof ResizeObserver=="function"?(z=new ResizeObserver(function(){setTimeout(j)}),z.observe(a)):window.addEventListener("resize",j,!1);function B(){z?z.disconnect():window.removeEventListener("resize",j),a.removeChild(O)}return j(),{canvas:O,onDestroy:B}}function Gr(a,h){function _(O){try{return a.getContext(O,h)}catch{return null}}return _("webgl")||_("experimental-webgl")||_("webgl-experimental")}function fs(a){return typeof a.nodeName=="string"&&typeof a.appendChild=="function"&&typeof a.getBoundingClientRect=="function"}function hr(a){return typeof a.drawArrays=="function"||typeof a.drawElements=="function"}function Co(a){return typeof a=="string"?a.split():(d(Array.isArray(a),"invalid extension array"),a)}function ko(a){return typeof a=="string"?(d(typeof document<"u","not supported outside of DOM"),document.querySelector(a)):a}function Ft(a){var h=a||{},_,O,j,z,B={},K=[],Q=[],ie=typeof window>"u"?1:window.devicePixelRatio,ae=!1,oe=function(ne){ne&&d.raise(ne)},le=function(){};if(typeof h=="string"?(d(typeof document<"u","selector queries only supported in DOM enviroments"),_=document.querySelector(h),d(_,"invalid query string for element")):typeof h=="object"?fs(h)?_=h:hr(h)?(z=h,j=z.canvas):(d.constructor(h),"gl"in h?z=h.gl:"canvas"in h?j=ko(h.canvas):"container"in h&&(O=ko(h.container)),"attributes"in h&&(B=h.attributes,d.type(B,"object","invalid context attributes")),"extensions"in h&&(K=Co(h.extensions)),"optionalExtensions"in h&&(Q=Co(h.optionalExtensions)),"onDone"in h&&(d.type(h.onDone,"function","invalid or missing onDone callback"),oe=h.onDone),"profile"in h&&(ae=!!h.profile),"pixelRatio"in h&&(ie=+h.pixelRatio,d(ie>0,"invalid pixel ratio"))):d.raise("invalid arguments to regl"),_&&(_.nodeName.toLowerCase()==="canvas"?j=_:O=_),!z){if(!j){d(typeof document<"u","must manually specify webgl context outside of DOM environments");var J=Nr(O||document.body,oe,ie);if(!J)return null;j=J.canvas,le=J.onDestroy}B.premultipliedAlpha===void 0&&(B.premultipliedAlpha=!0),z=Gr(j,B)}return z?{gl:z,canvas:j,container:O,extensions:K,optionalExtensions:Q,pixelRatio:ie,profile:ae,onDone:oe,onDestroy:le}:(le(),oe("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"),null)}function Xn(a,h){var _={};function O(B){d.type(B,"string","extension name must be string");var K=B.toLowerCase(),Q;try{Q=_[K]=a.getExtension(K)}catch{}return!!Q}for(var j=0;j<h.extensions.length;++j){var z=h.extensions[j];if(!O(z))return h.onDestroy(),h.onDone('"'+z+'" extension is not supported by the current WebGL context, try upgrading your system or a different browser'),null}return h.optionalExtensions.forEach(O),{extensions:_,restore:function(){Object.keys(_).forEach(function(B){if(_[B]&&!O(B))throw new Error("(regl): error restoring extension "+B)})}}}function Yt(a,h){for(var _=Array(a),O=0;O<a;++O)_[O]=h(O);return _}var Lo=5120,bi=5121,Fo=5122,Ro=5123,us=5124,sn=5125,Wn=5126;function Io(a){for(var h=16;h<=1<<28;h*=16)if(a<=h)return h;return 0}function _i(a){var h,_;return h=(a>65535)<<4,a>>>=h,_=(a>255)<<3,a>>>=_,h|=_,_=(a>15)<<2,a>>>=_,h|=_,_=(a>3)<<1,a>>>=_,h|=_,h|a>>1}function Br(){var a=Yt(8,function(){return[]});function h(z){var B=Io(z),K=a[_i(B)>>2];return K.length>0?K.pop():new ArrayBuffer(B)}function _(z){a[_i(z.byteLength)>>2].push(z)}function O(z,B){var K=null;switch(z){case Lo:K=new Int8Array(h(B),0,B);break;case bi:K=new Uint8Array(h(B),0,B);break;case Fo:K=new Int16Array(h(2*B),0,B);break;case Ro:K=new Uint16Array(h(2*B),0,B);break;case us:K=new Int32Array(h(4*B),0,B);break;case sn:K=new Uint32Array(h(4*B),0,B);break;case Wn:K=new Float32Array(h(4*B),0,B);break;default:return null}return K.length!==B?K.subarray(0,B):K}function j(z){_(z.buffer)}return{alloc:h,free:_,allocType:O,freeType:j}}var gt=Br();gt.zero=Br();var vn=3408,Do=3410,zo=3411,Oo=3412,Mo=3413,ls=3414,Be=3415,C=33901,ve=33902,De=3379,mt=3386,Ot=34921,At=36347,jt=36348,gn=35661,dr=35660,Si=34930,Mt=36349,No=34076,Go=34024,Pg=7936,Cg=7937,kg=7938,Lg=35724,Fg=34047,Rg=36063,Ig=34852,Bo=3553,nl=34067,Dg=34069,zg=33984,Ti=6408,cs=5126,rl=5121,hs=36160,Og=36053,Mg=36064,Ng=16384,Gg=function(a,h){var _=1;h.ext_texture_filter_anisotropic&&(_=a.getParameter(Fg));var O=1,j=1;h.webgl_draw_buffers&&(O=a.getParameter(Ig),j=a.getParameter(Rg));var z=!!h.oes_texture_float;if(z){var B=a.createTexture();a.bindTexture(Bo,B),a.texImage2D(Bo,0,Ti,1,1,0,Ti,cs,null);var K=a.createFramebuffer();if(a.bindFramebuffer(hs,K),a.framebufferTexture2D(hs,Mg,Bo,B,0),a.bindTexture(Bo,null),a.checkFramebufferStatus(hs)!==Og)z=!1;else{a.viewport(0,0,1,1),a.clearColor(1,0,0,1),a.clear(Ng);var Q=gt.allocType(cs,4);a.readPixels(0,0,1,1,Ti,cs,Q),a.getError()?z=!1:(a.deleteFramebuffer(K),a.deleteTexture(B),z=Q[0]===1),gt.freeType(Q)}}var ie=typeof navigator<"u"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent)),ae=!0;if(!ie){var oe=a.createTexture(),le=gt.allocType(rl,36);a.activeTexture(zg),a.bindTexture(nl,oe),a.texImage2D(Dg,0,Ti,3,3,0,Ti,rl,le),gt.freeType(le),a.bindTexture(nl,null),a.deleteTexture(oe),ae=!a.getError()}return{colorBits:[a.getParameter(Do),a.getParameter(zo),a.getParameter(Oo),a.getParameter(Mo)],depthBits:a.getParameter(ls),stencilBits:a.getParameter(Be),subpixelBits:a.getParameter(vn),extensions:Object.keys(h).filter(function(J){return!!h[J]}),maxAnisotropic:_,maxDrawbuffers:O,maxColorAttachments:j,pointSizeDims:a.getParameter(C),lineWidthDims:a.getParameter(ve),maxViewportDims:a.getParameter(mt),maxCombinedTextureUnits:a.getParameter(gn),maxCubeMapSize:a.getParameter(No),maxRenderbufferSize:a.getParameter(Go),maxTextureUnits:a.getParameter(Si),maxTextureSize:a.getParameter(De),maxAttributes:a.getParameter(Ot),maxVertexUniforms:a.getParameter(At),maxVertexTextureUnits:a.getParameter(dr),maxVaryingVectors:a.getParameter(jt),maxFragmentUniforms:a.getParameter(Mt),glsl:a.getParameter(Lg),renderer:a.getParameter(Cg),vendor:a.getParameter(Pg),version:a.getParameter(kg),readFloat:z,npotTextureCube:ae}};function yn(a){return!!a&&typeof a=="object"&&Array.isArray(a.shape)&&Array.isArray(a.stride)&&typeof a.offset=="number"&&a.shape.length===a.stride.length&&(Array.isArray(a.data)||n(a.data))}var nn=function(a){return Object.keys(a).map(function(h){return a[h]})},Uo={shape:$g,flatten:Vg};function Bg(a,h,_){for(var O=0;O<h;++O)_[O]=a[O]}function Ug(a,h,_,O){for(var j=0,z=0;z<h;++z)for(var B=a[z],K=0;K<_;++K)O[j++]=B[K]}function il(a,h,_,O,j,z){for(var B=z,K=0;K<h;++K)for(var Q=a[K],ie=0;ie<_;++ie)for(var ae=Q[ie],oe=0;oe<O;++oe)j[B++]=ae[oe]}function ol(a,h,_,O,j){for(var z=1,B=_+1;B<h.length;++B)z*=h[B];var K=h[_];if(h.length-_===4){var Q=h[_+1],ie=h[_+2],ae=h[_+3];for(B=0;B<K;++B)il(a[B],Q,ie,ae,O,j),j+=z}else for(B=0;B<K;++B)ol(a[B],h,_+1,O,j),j+=z}function Vg(a,h,_,O){var j=1;if(h.length)for(var z=0;z<h.length;++z)j*=h[z];else j=0;var B=O||gt.allocType(_,j);switch(h.length){case 0:break;case 1:Bg(a,h[0],B);break;case 2:Ug(a,h[0],h[1],B);break;case 3:il(a,h[0],h[1],h[2],B,0);break;default:ol(a,h,0,B,0)}return B}function $g(a){for(var h=[],_=a;_.length;_=_[0])h.push(_.length);return h}var ds={"[object Int8Array]":5120,"[object Int16Array]":5122,"[object Int32Array]":5124,"[object Uint8Array]":5121,"[object Uint8ClampedArray]":5121,"[object Uint16Array]":5123,"[object Uint32Array]":5125,"[object Float32Array]":5126,"[object Float64Array]":5121,"[object ArrayBuffer]":5121},Hg=5120,jg=5122,Xg=5124,Wg=5121,qg=5123,Yg=5125,Zg=5126,Qg=5126,mr={int8:Hg,int16:jg,int32:Xg,uint8:Wg,uint16:qg,uint32:Yg,float:Zg,float32:Qg},Kg=35048,Jg=35040,Vo={dynamic:Kg,stream:Jg,static:35044},ms=Uo.flatten,al=Uo.shape,sl=35044,ey=35040,ps=5121,vs=5126,qn=[];qn[5120]=1,qn[5122]=2,qn[5124]=4,qn[5121]=1,qn[5123]=2,qn[5125]=4,qn[5126]=4;function $o(a){return ds[Object.prototype.toString.call(a)]|0}function fl(a,h){for(var _=0;_<h.length;++_)a[_]=h[_]}function ul(a,h,_,O,j,z,B){for(var K=0,Q=0;Q<_;++Q)for(var ie=0;ie<O;++ie)a[K++]=h[j*Q+z*ie+B]}function ty(a,h,_,O){var j=0,z={};function B(k){this.id=j++,this.buffer=a.createBuffer(),this.type=k,this.usage=sl,this.byteLength=0,this.dimension=1,this.dtype=ps,this.persistentData=null,_.profile&&(this.stats={size:0})}B.prototype.bind=function(){a.bindBuffer(this.type,this.buffer)},B.prototype.destroy=function(){le(this)};var K=[];function Q(k,G){var te=K.pop();return te||(te=new B(k)),te.bind(),oe(te,G,ey,0,1,!1),te}function ie(k){K.push(k)}function ae(k,G,te){k.byteLength=G.byteLength,a.bufferData(k.type,G,te)}function oe(k,G,te,xe,Z,ge){var me;if(k.usage=te,Array.isArray(G)){if(k.dtype=xe||vs,G.length>0){var Fe;if(Array.isArray(G[0])){me=al(G);for(var X=1,$=1;$<me.length;++$)X*=me[$];k.dimension=X,Fe=ms(G,me,k.dtype),ae(k,Fe,te),ge?k.persistentData=Fe:gt.freeType(Fe)}else if(typeof G[0]=="number"){k.dimension=Z;var Se=gt.allocType(k.dtype,G.length);fl(Se,G),ae(k,Se,te),ge?k.persistentData=Se:gt.freeType(Se)}else n(G[0])?(k.dimension=G[0].length,k.dtype=xe||$o(G[0])||vs,Fe=ms(G,[G.length,G[0].length],k.dtype),ae(k,Fe,te),ge?k.persistentData=Fe:gt.freeType(Fe)):d.raise("invalid buffer data")}}else if(n(G))k.dtype=xe||$o(G),k.dimension=Z,ae(k,G,te),ge&&(k.persistentData=new Uint8Array(new Uint8Array(G.buffer)));else if(yn(G)){me=G.shape;var ce=G.stride,ee=G.offset,he=0,de=0,Ve=0,Ne=0;me.length===1?(he=me[0],de=1,Ve=ce[0],Ne=0):me.length===2?(he=me[0],de=me[1],Ve=ce[0],Ne=ce[1]):d.raise("invalid shape"),k.dtype=xe||$o(G.data)||vs,k.dimension=de;var pe=gt.allocType(k.dtype,he*de);ul(pe,G.data,he,de,Ve,Ne,ee),ae(k,pe,te),ge?k.persistentData=pe:gt.freeType(pe)}else G instanceof ArrayBuffer?(k.dtype=ps,k.dimension=Z,ae(k,G,te),ge&&(k.persistentData=new Uint8Array(new Uint8Array(G)))):d.raise("invalid buffer data")}function le(k){h.bufferCount--,O(k);var G=k.buffer;d(G,"buffer must not be deleted already"),a.deleteBuffer(G),k.buffer=null,delete z[k.id]}function J(k,G,te,xe){h.bufferCount++;var Z=new B(G);z[Z.id]=Z;function ge(X){var $=sl,Se=null,ce=0,ee=0,he=1;return Array.isArray(X)||n(X)||yn(X)||X instanceof ArrayBuffer?Se=X:typeof X=="number"?ce=X|0:X&&(d.type(X,"object","buffer arguments must be an object, a number or an array"),"data"in X&&(d(Se===null||Array.isArray(Se)||n(Se)||yn(Se),"invalid data for buffer"),Se=X.data),"usage"in X&&(d.parameter(X.usage,Vo,"invalid buffer usage"),$=Vo[X.usage]),"type"in X&&(d.parameter(X.type,mr,"invalid buffer type"),ee=mr[X.type]),"dimension"in X&&(d.type(X.dimension,"number","invalid dimension"),he=X.dimension|0),"length"in X&&(d.nni(ce,"buffer length must be a nonnegative integer"),ce=X.length|0)),Z.bind(),Se?oe(Z,Se,$,ee,he,xe):(ce&&a.bufferData(Z.type,ce,$),Z.dtype=ee||ps,Z.usage=$,Z.dimension=he,Z.byteLength=ce),_.profile&&(Z.stats.size=Z.byteLength*qn[Z.dtype]),ge}function me(X,$){d($+X.byteLength<=Z.byteLength,"invalid buffer subdata call, buffer is too small. Can't write data of size "+X.byteLength+" starting from offset "+$+" to a buffer of size "+Z.byteLength),a.bufferSubData(Z.type,$,X)}function Fe(X,$){var Se=($||0)|0,ce;if(Z.bind(),n(X)||X instanceof ArrayBuffer)me(X,Se);else if(Array.isArray(X)){if(X.length>0)if(typeof X[0]=="number"){var ee=gt.allocType(Z.dtype,X.length);fl(ee,X),me(ee,Se),gt.freeType(ee)}else if(Array.isArray(X[0])||n(X[0])){ce=al(X);var he=ms(X,ce,Z.dtype);me(he,Se),gt.freeType(he)}else d.raise("invalid buffer data")}else if(yn(X)){ce=X.shape;var de=X.stride,Ve=0,Ne=0,pe=0,ye=0;ce.length===1?(Ve=ce[0],Ne=1,pe=de[0],ye=0):ce.length===2?(Ve=ce[0],Ne=ce[1],pe=de[0],ye=de[1]):d.raise("invalid shape");var ze=Array.isArray(X.data)?Z.dtype:$o(X.data),$e=gt.allocType(ze,Ve*Ne);ul($e,X.data,Ve,Ne,pe,ye,X.offset),me($e,Se),gt.freeType($e)}else d.raise("invalid data for buffer subdata");return ge}return te||ge(k),ge._reglType="buffer",ge._buffer=Z,ge.subdata=Fe,_.profile&&(ge.stats=Z.stats),ge.destroy=function(){le(Z)},ge}function ne(){nn(z).forEach(function(k){k.buffer=a.createBuffer(),a.bindBuffer(k.type,k.buffer),a.bufferData(k.type,k.persistentData||k.byteLength,k.usage)})}return _.profile&&(h.getTotalBufferSize=function(){var k=0;return Object.keys(z).forEach(function(G){k+=z[G].stats.size}),k}),{create:J,createStream:Q,destroyStream:ie,clear:function(){nn(z).forEach(le),K.forEach(le)},getBuffer:function(k){return k&&k._buffer instanceof B?k._buffer:null},restore:ne,_initBuffer:oe}}var ny=0,ry=0,iy=1,oy=1,ay=4,sy=4,Yn={points:ny,point:ry,lines:iy,line:oy,triangles:ay,triangle:sy,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},fy=0,uy=1,wi=4,ly=5120,Ur=5121,ll=5122,Vr=5123,cl=5124,pr=5125,gs=34963,cy=35040,hy=35044;function dy(a,h,_,O){var j={},z=0,B={uint8:Ur,uint16:Vr};h.oes_element_index_uint&&(B.uint32=pr);function K(ne){this.id=z++,j[this.id]=this,this.buffer=ne,this.primType=wi,this.vertCount=0,this.type=0}K.prototype.bind=function(){this.buffer.bind()};var Q=[];function ie(ne){var k=Q.pop();return k||(k=new K(_.create(null,gs,!0,!1)._buffer)),oe(k,ne,cy,-1,-1,0,0),k}function ae(ne){Q.push(ne)}function oe(ne,k,G,te,xe,Z,ge){ne.buffer.bind();var me;if(k){var Fe=ge;!ge&&(!n(k)||yn(k)&&!n(k.data))&&(Fe=h.oes_element_index_uint?pr:Vr),_._initBuffer(ne.buffer,k,G,Fe,3)}else a.bufferData(gs,Z,G),ne.buffer.dtype=me||Ur,ne.buffer.usage=G,ne.buffer.dimension=3,ne.buffer.byteLength=Z;if(me=ge,!ge){switch(ne.buffer.dtype){case Ur:case ly:me=Ur;break;case Vr:case ll:me=Vr;break;case pr:case cl:me=pr;break;default:d.raise("unsupported type for element array")}ne.buffer.dtype=me}ne.type=me,d(me!==pr||!!h.oes_element_index_uint,"32 bit element buffers not supported, enable oes_element_index_uint first");var X=xe;X<0&&(X=ne.buffer.byteLength,me===Vr?X>>=1:me===pr&&(X>>=2)),ne.vertCount=X;var $=te;if(te<0){$=wi;var Se=ne.buffer.dimension;Se===1&&($=fy),Se===2&&($=uy),Se===3&&($=wi)}ne.primType=$}function le(ne){O.elementsCount--,d(ne.buffer!==null,"must not double destroy elements"),delete j[ne.id],ne.buffer.destroy(),ne.buffer=null}function J(ne,k){var G=_.create(null,gs,!0),te=new K(G._buffer);O.elementsCount++;function xe(Z){if(!Z)G(),te.primType=wi,te.vertCount=0,te.type=Ur;else if(typeof Z=="number")G(Z),te.primType=wi,te.vertCount=Z|0,te.type=Ur;else{var ge=null,me=hy,Fe=-1,X=-1,$=0,Se=0;Array.isArray(Z)||n(Z)||yn(Z)?ge=Z:(d.type(Z,"object","invalid arguments for elements"),"data"in Z&&(ge=Z.data,d(Array.isArray(ge)||n(ge)||yn(ge),"invalid data for element buffer")),"usage"in Z&&(d.parameter(Z.usage,Vo,"invalid element buffer usage"),me=Vo[Z.usage]),"primitive"in Z&&(d.parameter(Z.primitive,Yn,"invalid element buffer primitive"),Fe=Yn[Z.primitive]),"count"in Z&&(d(typeof Z.count=="number"&&Z.count>=0,"invalid vertex count for elements"),X=Z.count|0),"type"in Z&&(d.parameter(Z.type,B,"invalid buffer type"),Se=B[Z.type]),"length"in Z?$=Z.length|0:($=X,Se===Vr||Se===ll?$*=2:(Se===pr||Se===cl)&&($*=4))),oe(te,ge,me,Fe,X,$,Se)}return xe}return xe(ne),xe._reglType="elements",xe._elements=te,xe.subdata=function(Z,ge){return G.subdata(Z,ge),xe},xe.destroy=function(){le(te)},xe}return{create:J,createStream:ie,destroyStream:ae,getElements:function(ne){return typeof ne=="function"&&ne._elements instanceof K?ne._elements:null},clear:function(){nn(j).forEach(le)}}}var hl=new Float32Array(1),my=new Uint32Array(hl.buffer),py=5123;function dl(a){for(var h=gt.allocType(py,a.length),_=0;_<a.length;++_)if(isNaN(a[_]))h[_]=65535;else if(a[_]===1/0)h[_]=31744;else if(a[_]===-1/0)h[_]=64512;else{hl[0]=a[_];var O=my[0],j=O>>>31<<15,z=(O<<1>>>24)-127,B=O>>13&1023;if(z<-24)h[_]=j;else if(z<-14){var K=-14-z;h[_]=j+(B+1024>>K)}else z>15?h[_]=j+31744:h[_]=j+(z+15<<10)+B}return h}function pt(a){return Array.isArray(a)||n(a)}var ml=function(a){return!(a&a-1)&&!!a},vy=34467,An=3553,ys=34067,Ho=34069,vr=6408,xs=6406,jo=6407,Ai=6409,Xo=6410,pl=32854,bs=32855,vl=36194,gy=32819,yy=32820,xy=33635,by=34042,_s=6402,Wo=34041,Ss=35904,Ts=35906,$r=36193,ws=33776,As=33777,Es=33778,Ps=33779,gl=35986,yl=35987,xl=34798,bl=35840,_l=35841,Sl=35842,Tl=35843,wl=36196,Hr=5121,Cs=5123,ks=5125,Ei=5126,_y=10242,Sy=10243,Ty=10497,Ls=33071,wy=33648,Ay=10240,Ey=10241,Fs=9728,Py=9729,Rs=9984,Al=9985,El=9986,Is=9987,Cy=33170,qo=4352,ky=4353,Ly=4354,Fy=34046,Ry=3317,Iy=37440,Dy=37441,zy=37443,Pl=37444,Pi=33984,Oy=[Rs,El,Al,Is],Yo=[0,Ai,Xo,jo,vr],fn={};fn[Ai]=fn[xs]=fn[_s]=1,fn[Wo]=fn[Xo]=2,fn[jo]=fn[Ss]=3,fn[vr]=fn[Ts]=4;function jr(a){return"[object "+a+"]"}var Cl=jr("HTMLCanvasElement"),kl=jr("OffscreenCanvas"),Ll=jr("CanvasRenderingContext2D"),Fl=jr("ImageBitmap"),Rl=jr("HTMLImageElement"),Il=jr("HTMLVideoElement"),My=Object.keys(ds).concat([Cl,kl,Ll,Fl,Rl,Il]),Xr=[];Xr[Hr]=1,Xr[Ei]=4,Xr[$r]=2,Xr[Cs]=2,Xr[ks]=4;var Nt=[];Nt[pl]=2,Nt[bs]=2,Nt[vl]=2,Nt[Wo]=4,Nt[ws]=.5,Nt[As]=.5,Nt[Es]=1,Nt[Ps]=1,Nt[gl]=.5,Nt[yl]=1,Nt[xl]=1,Nt[bl]=.5,Nt[_l]=.25,Nt[Sl]=.5,Nt[Tl]=.25,Nt[wl]=.5;function Dl(a){return Array.isArray(a)&&(a.length===0||typeof a[0]=="number")}function zl(a){if(!Array.isArray(a))return!1;var h=a.length;return!(h===0||!pt(a[0]))}function gr(a){return Object.prototype.toString.call(a)}function Ol(a){return gr(a)===Cl}function Ml(a){return gr(a)===kl}function Ny(a){return gr(a)===Ll}function Gy(a){return gr(a)===Fl}function By(a){return gr(a)===Rl}function Uy(a){return gr(a)===Il}function Ds(a){if(!a)return!1;var h=gr(a);return My.indexOf(h)>=0?!0:Dl(a)||zl(a)||yn(a)}function Nl(a){return ds[Object.prototype.toString.call(a)]|0}function Vy(a,h){var _=h.length;switch(a.type){case Hr:case Cs:case ks:case Ei:var O=gt.allocType(a.type,_);O.set(h),a.data=O;break;case $r:a.data=dl(h);break;default:d.raise("unsupported texture type, must specify a typed array")}}function Gl(a,h){return gt.allocType(a.type===$r?Ei:a.type,h)}function Bl(a,h){a.type===$r?(a.data=dl(h),gt.freeType(h)):a.data=h}function $y(a,h,_,O,j,z){for(var B=a.width,K=a.height,Q=a.channels,ie=B*K*Q,ae=Gl(a,ie),oe=0,le=0;le<K;++le)for(var J=0;J<B;++J)for(var ne=0;ne<Q;++ne)ae[oe++]=h[_*J+O*le+j*ne+z];Bl(a,ae)}function Zo(a,h,_,O,j,z){var B;if(typeof Nt[a]<"u"?B=Nt[a]:B=fn[a]*Xr[h],z&&(B*=6),j){for(var K=0,Q=_;Q>=1;)K+=B*Q*Q,Q/=2;return K}else return B*_*O}function Hy(a,h,_,O,j,z,B){var K={"don't care":qo,"dont care":qo,nice:Ly,fast:ky},Q={repeat:Ty,clamp:Ls,mirror:wy},ie={nearest:Fs,linear:Py},ae=r({mipmap:Is,"nearest mipmap nearest":Rs,"linear mipmap nearest":Al,"nearest mipmap linear":El,"linear mipmap linear":Is},ie),oe={none:0,browser:Pl},le={uint8:Hr,rgba4:gy,rgb565:xy,"rgb5 a1":yy},J={alpha:xs,luminance:Ai,"luminance alpha":Xo,rgb:jo,rgba:vr,rgba4:pl,"rgb5 a1":bs,rgb565:vl},ne={};h.ext_srgb&&(J.srgb=Ss,J.srgba=Ts),h.oes_texture_float&&(le.float32=le.float=Ei),h.oes_texture_half_float&&(le.float16=le["half float"]=$r),h.webgl_depth_texture&&(r(J,{depth:_s,"depth stencil":Wo}),r(le,{uint16:Cs,uint32:ks,"depth stencil":by})),h.webgl_compressed_texture_s3tc&&r(ne,{"rgb s3tc dxt1":ws,"rgba s3tc dxt1":As,"rgba s3tc dxt3":Es,"rgba s3tc dxt5":Ps}),h.webgl_compressed_texture_atc&&r(ne,{"rgb atc":gl,"rgba atc explicit alpha":yl,"rgba atc interpolated alpha":xl}),h.webgl_compressed_texture_pvrtc&&r(ne,{"rgb pvrtc 4bppv1":bl,"rgb pvrtc 2bppv1":_l,"rgba pvrtc 4bppv1":Sl,"rgba pvrtc 2bppv1":Tl}),h.webgl_compressed_texture_etc1&&(ne["rgb etc1"]=wl);var k=Array.prototype.slice.call(a.getParameter(vy));Object.keys(ne).forEach(function(y){var M=ne[y];k.indexOf(M)>=0&&(J[y]=M)});var G=Object.keys(J);_.textureFormats=G;var te=[];Object.keys(J).forEach(function(y){var M=J[y];te[M]=y});var xe=[];Object.keys(le).forEach(function(y){var M=le[y];xe[M]=y});var Z=[];Object.keys(ie).forEach(function(y){var M=ie[y];Z[M]=y});var ge=[];Object.keys(ae).forEach(function(y){var M=ae[y];ge[M]=y});var me=[];Object.keys(Q).forEach(function(y){var M=Q[y];me[M]=y});var Fe=G.reduce(function(y,M){var I=J[M];return I===Ai||I===xs||I===Ai||I===Xo||I===_s||I===Wo||h.ext_srgb&&(I===Ss||I===Ts)?y[I]=I:I===bs||M.indexOf("rgba")>=0?y[I]=vr:y[I]=jo,y},{});function X(){this.internalformat=vr,this.format=vr,this.type=Hr,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=Pl,this.width=0,this.height=0,this.channels=0}function $(y,M){y.internalformat=M.internalformat,y.format=M.format,y.type=M.type,y.compressed=M.compressed,y.premultiplyAlpha=M.premultiplyAlpha,y.flipY=M.flipY,y.unpackAlignment=M.unpackAlignment,y.colorSpace=M.colorSpace,y.width=M.width,y.height=M.height,y.channels=M.channels}function Se(y,M){if(!(typeof M!="object"||!M)){if("premultiplyAlpha"in M&&(d.type(M.premultiplyAlpha,"boolean","invalid premultiplyAlpha"),y.premultiplyAlpha=M.premultiplyAlpha),"flipY"in M&&(d.type(M.flipY,"boolean","invalid texture flip"),y.flipY=M.flipY),"alignment"in M&&(d.oneOf(M.alignment,[1,2,4,8],"invalid texture unpack alignment"),y.unpackAlignment=M.alignment),"colorSpace"in M&&(d.parameter(M.colorSpace,oe,"invalid colorSpace"),y.colorSpace=oe[M.colorSpace]),"type"in M){var I=M.type;d(h.oes_texture_float||!(I==="float"||I==="float32"),"you must enable the OES_texture_float extension in order to use floating point textures."),d(h.oes_texture_half_float||!(I==="half float"||I==="float16"),"you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures."),d(h.webgl_depth_texture||!(I==="uint16"||I==="uint32"||I==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),d.parameter(I,le,"invalid texture type"),y.type=le[I]}var _e=y.width,Ke=y.height,m=y.channels,c=!1;"shape"in M?(d(Array.isArray(M.shape)&&M.shape.length>=2,"shape must be an array"),_e=M.shape[0],Ke=M.shape[1],M.shape.length===3&&(m=M.shape[2],d(m>0&&m<=4,"invalid number of channels"),c=!0),d(_e>=0&&_e<=_.maxTextureSize,"invalid width"),d(Ke>=0&&Ke<=_.maxTextureSize,"invalid height")):("radius"in M&&(_e=Ke=M.radius,d(_e>=0&&_e<=_.maxTextureSize,"invalid radius")),"width"in M&&(_e=M.width,d(_e>=0&&_e<=_.maxTextureSize,"invalid width")),"height"in M&&(Ke=M.height,d(Ke>=0&&Ke<=_.maxTextureSize,"invalid height")),"channels"in M&&(m=M.channels,d(m>0&&m<=4,"invalid number of channels"),c=!0)),y.width=_e|0,y.height=Ke|0,y.channels=m|0;var T=!1;if("format"in M){var P=M.format;d(h.webgl_depth_texture||!(P==="depth"||P==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),d.parameter(P,J,"invalid texture format");var L=y.internalformat=J[P];y.format=Fe[L],P in le&&("type"in M||(y.type=le[P])),P in ne&&(y.compressed=!0),T=!0}!c&&T?y.channels=fn[y.format]:c&&!T?y.channels!==Yo[y.format]&&(y.format=y.internalformat=Yo[y.channels]):T&&c&&d(y.channels===fn[y.format],"number of channels inconsistent with specified format")}}function ce(y){a.pixelStorei(Iy,y.flipY),a.pixelStorei(Dy,y.premultiplyAlpha),a.pixelStorei(zy,y.colorSpace),a.pixelStorei(Ry,y.unpackAlignment)}function ee(){X.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function he(y,M){var I=null;if(Ds(M)?I=M:M&&(d.type(M,"object","invalid pixel data type"),Se(y,M),"x"in M&&(y.xOffset=M.x|0),"y"in M&&(y.yOffset=M.y|0),Ds(M.data)&&(I=M.data)),d(!y.compressed||I instanceof Uint8Array,"compressed texture data must be stored in a uint8array"),M.copy){d(!I,"can not specify copy and data field for the same texture");var _e=j.viewportWidth,Ke=j.viewportHeight;y.width=y.width||_e-y.xOffset,y.height=y.height||Ke-y.yOffset,y.needsCopy=!0,d(y.xOffset>=0&&y.xOffset<_e&&y.yOffset>=0&&y.yOffset<Ke&&y.width>0&&y.width<=_e&&y.height>0&&y.height<=Ke,"copy texture read out of bounds")}else if(!I)y.width=y.width||1,y.height=y.height||1,y.channels=y.channels||4;else if(n(I))y.channels=y.channels||4,y.data=I,!("type"in M)&&y.type===Hr&&(y.type=Nl(I));else if(Dl(I))y.channels=y.channels||4,Vy(y,I),y.alignment=1,y.needsFree=!0;else if(yn(I)){var m=I.data;!Array.isArray(m)&&y.type===Hr&&(y.type=Nl(m));var c=I.shape,T=I.stride,P,L,A,w,E,p;c.length===3?(A=c[2],p=T[2]):(d(c.length===2,"invalid ndarray pixel data, must be 2 or 3D"),A=1,p=1),P=c[0],L=c[1],w=T[0],E=T[1],y.alignment=1,y.width=P,y.height=L,y.channels=A,y.format=y.internalformat=Yo[A],y.needsFree=!0,$y(y,m,w,E,p,I.offset)}else if(Ol(I)||Ml(I)||Ny(I))Ol(I)||Ml(I)?y.element=I:y.element=I.canvas,y.width=y.element.width,y.height=y.element.height,y.channels=4;else if(Gy(I))y.element=I,y.width=I.width,y.height=I.height,y.channels=4;else if(By(I))y.element=I,y.width=I.naturalWidth,y.height=I.naturalHeight,y.channels=4;else if(Uy(I))y.element=I,y.width=I.videoWidth,y.height=I.videoHeight,y.channels=4;else if(zl(I)){var x=y.width||I[0].length,g=y.height||I.length,R=y.channels;pt(I[0][0])?R=R||I[0][0].length:R=R||1;for(var F=Uo.shape(I),V=1,W=0;W<F.length;++W)V*=F[W];var ue=Gl(y,V);Uo.flatten(I,F,"",ue),Bl(y,ue),y.alignment=1,y.width=x,y.height=g,y.channels=R,y.format=y.internalformat=Yo[R],y.needsFree=!0}y.type===Ei?d(_.extensions.indexOf("oes_texture_float")>=0,"oes_texture_float extension not enabled"):y.type===$r&&d(_.extensions.indexOf("oes_texture_half_float")>=0,"oes_texture_half_float extension not enabled")}function de(y,M,I){var _e=y.element,Ke=y.data,m=y.internalformat,c=y.format,T=y.type,P=y.width,L=y.height;ce(y),_e?a.texImage2D(M,I,c,c,T,_e):y.compressed?a.compressedTexImage2D(M,I,m,P,L,0,Ke):y.needsCopy?(O(),a.copyTexImage2D(M,I,c,y.xOffset,y.yOffset,P,L,0)):a.texImage2D(M,I,c,P,L,0,c,T,Ke||null)}function Ve(y,M,I,_e,Ke){var m=y.element,c=y.data,T=y.internalformat,P=y.format,L=y.type,A=y.width,w=y.height;ce(y),m?a.texSubImage2D(M,Ke,I,_e,P,L,m):y.compressed?a.compressedTexSubImage2D(M,Ke,I,_e,T,A,w,c):y.needsCopy?(O(),a.copyTexSubImage2D(M,Ke,I,_e,y.xOffset,y.yOffset,A,w)):a.texSubImage2D(M,Ke,I,_e,A,w,P,L,c)}var Ne=[];function pe(){return Ne.pop()||new ee}function ye(y){y.needsFree&>.freeType(y.data),ee.call(y),Ne.push(y)}function ze(){X.call(this),this.genMipmaps=!1,this.mipmapHint=qo,this.mipmask=0,this.images=Array(16)}function $e(y,M,I){var _e=y.images[0]=pe();y.mipmask=1,_e.width=y.width=M,_e.height=y.height=I,_e.channels=y.channels=4}function Je(y,M){var I=null;if(Ds(M))I=y.images[0]=pe(),$(I,y),he(I,M),y.mipmask=1;else if(Se(y,M),Array.isArray(M.mipmap))for(var _e=M.mipmap,Ke=0;Ke<_e.length;++Ke)I=y.images[Ke]=pe(),$(I,y),I.width>>=Ke,I.height>>=Ke,he(I,_e[Ke]),y.mipmask|=1<<Ke;else I=y.images[0]=pe(),$(I,y),he(I,M),y.mipmask=1;$(y,y.images[0]),y.compressed&&(y.internalformat===ws||y.internalformat===As||y.internalformat===Es||y.internalformat===Ps)&&d(y.width%4===0&&y.height%4===0,"for compressed texture formats, mipmap level 0 must have width and height that are a multiple of 4")}function vt(y,M){for(var I=y.images,_e=0;_e<I.length;++_e){if(!I[_e])return;de(I[_e],M,_e)}}var yt=[];function tt(){var y=yt.pop()||new ze;X.call(y),y.mipmask=0;for(var M=0;M<16;++M)y.images[M]=null;return y}function Et(y){for(var M=y.images,I=0;I<M.length;++I)M[I]&&ye(M[I]),M[I]=null;yt.push(y)}function ht(){this.minFilter=Fs,this.magFilter=Fs,this.wrapS=Ls,this.wrapT=Ls,this.anisotropic=1,this.genMipmaps=!1,this.mipmapHint=qo}function Tt(y,M){if("min"in M){var I=M.min;d.parameter(I,ae),y.minFilter=ae[I],Oy.indexOf(y.minFilter)>=0&&!("faces"in M)&&(y.genMipmaps=!0)}if("mag"in M){var _e=M.mag;d.parameter(_e,ie),y.magFilter=ie[_e]}var Ke=y.wrapS,m=y.wrapT;if("wrap"in M){var c=M.wrap;typeof c=="string"?(d.parameter(c,Q),Ke=m=Q[c]):Array.isArray(c)&&(d.parameter(c[0],Q),d.parameter(c[1],Q),Ke=Q[c[0]],m=Q[c[1]])}else{if("wrapS"in M){var T=M.wrapS;d.parameter(T,Q),Ke=Q[T]}if("wrapT"in M){var P=M.wrapT;d.parameter(P,Q),m=Q[P]}}if(y.wrapS=Ke,y.wrapT=m,"anisotropic"in M){var L=M.anisotropic;d(typeof L=="number"&&L>=1&&L<=_.maxAnisotropic,"aniso samples must be between 1 and "),y.anisotropic=M.anisotropic}if("mipmap"in M){var A=!1;switch(typeof M.mipmap){case"string":d.parameter(M.mipmap,K,"invalid mipmap hint"),y.mipmapHint=K[M.mipmap],y.genMipmaps=!0,A=!0;break;case"boolean":A=y.genMipmaps=M.mipmap;break;case"object":d(Array.isArray(M.mipmap),"invalid mipmap type"),y.genMipmaps=!1,A=!0;break;default:d.raise("invalid mipmap type")}A&&!("min"in M)&&(y.minFilter=Rs)}}function Pt(y,M){a.texParameteri(M,Ey,y.minFilter),a.texParameteri(M,Ay,y.magFilter),a.texParameteri(M,_y,y.wrapS),a.texParameteri(M,Sy,y.wrapT),h.ext_texture_filter_anisotropic&&a.texParameteri(M,Fy,y.anisotropic),y.genMipmaps&&(a.hint(Cy,y.mipmapHint),a.generateMipmap(M))}var Ct=0,It={},Gt=_.maxTextureUnits,xt=Array(Gt).map(function(){return null});function qe(y){X.call(this),this.mipmask=0,this.internalformat=vr,this.id=Ct++,this.refCount=1,this.target=y,this.texture=a.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new ht,B.profile&&(this.stats={size:0})}function Bt(y){a.activeTexture(Pi),a.bindTexture(y.target,y.texture)}function ot(){var y=xt[0];y?a.bindTexture(y.target,y.texture):a.bindTexture(An,null)}function Ie(y){var M=y.texture;d(M,"must not double destroy texture");var I=y.unit,_e=y.target;I>=0&&(a.activeTexture(Pi+I),a.bindTexture(_e,null),xt[I]=null),a.deleteTexture(M),y.texture=null,y.params=null,y.pixels=null,y.refCount=0,delete It[y.id],z.textureCount--}r(qe.prototype,{bind:function(){var y=this;y.bindCount+=1;var M=y.unit;if(M<0){for(var I=0;I<Gt;++I){var _e=xt[I];if(_e){if(_e.bindCount>0)continue;_e.unit=-1}xt[I]=y,M=I;break}M>=Gt&&d.raise("insufficient number of texture units"),B.profile&&z.maxTextureUnits<M+1&&(z.maxTextureUnits=M+1),y.unit=M,a.activeTexture(Pi+M),a.bindTexture(y.target,y.texture)}return M},unbind:function(){this.bindCount-=1},decRef:function(){--this.refCount<=0&&Ie(this)}});function et(y,M){var I=new qe(An);It[I.id]=I,z.textureCount++;function _e(c,T){var P=I.texInfo;ht.call(P);var L=tt();return typeof c=="number"?typeof T=="number"?$e(L,c|0,T|0):$e(L,c|0,c|0):c?(d.type(c,"object","invalid arguments to regl.texture"),Tt(P,c),Je(L,c)):$e(L,1,1),P.genMipmaps&&(L.mipmask=(L.width<<1)-1),I.mipmask=L.mipmask,$(I,L),d.texture2D(P,L,_),I.internalformat=L.internalformat,_e.width=L.width,_e.height=L.height,Bt(I),vt(L,An),Pt(P,An),ot(),Et(L),B.profile&&(I.stats.size=Zo(I.internalformat,I.type,L.width,L.height,P.genMipmaps,!1)),_e.format=te[I.internalformat],_e.type=xe[I.type],_e.mag=Z[P.magFilter],_e.min=ge[P.minFilter],_e.wrapS=me[P.wrapS],_e.wrapT=me[P.wrapT],_e}function Ke(c,T,P,L){d(!!c,"must specify image data");var A=T|0,w=P|0,E=L|0,p=pe();return $(p,I),p.width=0,p.height=0,he(p,c),p.width=p.width||(I.width>>E)-A,p.height=p.height||(I.height>>E)-w,d(I.type===p.type&&I.format===p.format&&I.internalformat===p.internalformat,"incompatible format for texture.subimage"),d(A>=0&&w>=0&&A+p.width<=I.width&&w+p.height<=I.height,"texture.subimage write out of bounds"),d(I.mipmask&1<<E,"missing mipmap data"),d(p.data||p.element||p.needsCopy,"missing image data"),Bt(I),Ve(p,An,A,w,E),ot(),ye(p),_e}function m(c,T){var P=c|0,L=T|0||P;if(P===I.width&&L===I.height)return _e;_e.width=I.width=P,_e.height=I.height=L,Bt(I);for(var A=0;I.mipmask>>A;++A){var w=P>>A,E=L>>A;if(!w||!E)break;a.texImage2D(An,A,I.format,w,E,0,I.format,I.type,null)}return ot(),B.profile&&(I.stats.size=Zo(I.internalformat,I.type,P,L,!1,!1)),_e}return _e(y,M),_e.subimage=Ke,_e.resize=m,_e._reglType="texture2d",_e._texture=I,B.profile&&(_e.stats=I.stats),_e.destroy=function(){I.decRef()},_e}function nt(y,M,I,_e,Ke,m){var c=new qe(ys);It[c.id]=c,z.cubeCount++;var T=new Array(6);function P(w,E,p,x,g,R){var F,V=c.texInfo;for(ht.call(V),F=0;F<6;++F)T[F]=tt();if(typeof w=="number"||!w){var W=w|0||1;for(F=0;F<6;++F)$e(T[F],W,W)}else if(typeof w=="object")if(E)Je(T[0],w),Je(T[1],E),Je(T[2],p),Je(T[3],x),Je(T[4],g),Je(T[5],R);else if(Tt(V,w),Se(c,w),"faces"in w){var ue=w.faces;for(d(Array.isArray(ue)&&ue.length===6,"cube faces must be a length 6 array"),F=0;F<6;++F)d(typeof ue[F]=="object"&&!!ue[F],"invalid input for cube map face"),$(T[F],c),Je(T[F],ue[F])}else for(F=0;F<6;++F)Je(T[F],w);else d.raise("invalid arguments to cube map");for($(c,T[0]),d.optional(function(){_.npotTextureCube||d(ml(c.width)&&ml(c.height),"your browser does not support non power or two texture dimensions")}),V.genMipmaps?c.mipmask=(T[0].width<<1)-1:c.mipmask=T[0].mipmask,d.textureCube(c,V,T,_),c.internalformat=T[0].internalformat,P.width=T[0].width,P.height=T[0].height,Bt(c),F=0;F<6;++F)vt(T[F],Ho+F);for(Pt(V,ys),ot(),B.profile&&(c.stats.size=Zo(c.internalformat,c.type,P.width,P.height,V.genMipmaps,!0)),P.format=te[c.internalformat],P.type=xe[c.type],P.mag=Z[V.magFilter],P.min=ge[V.minFilter],P.wrapS=me[V.wrapS],P.wrapT=me[V.wrapT],F=0;F<6;++F)Et(T[F]);return P}function L(w,E,p,x,g){d(!!E,"must specify image data"),d(typeof w=="number"&&w===(w|0)&&w>=0&&w<6,"invalid face");var R=p|0,F=x|0,V=g|0,W=pe();return $(W,c),W.width=0,W.height=0,he(W,E),W.width=W.width||(c.width>>V)-R,W.height=W.height||(c.height>>V)-F,d(c.type===W.type&&c.format===W.format&&c.internalformat===W.internalformat,"incompatible format for texture.subimage"),d(R>=0&&F>=0&&R+W.width<=c.width&&F+W.height<=c.height,"texture.subimage write out of bounds"),d(c.mipmask&1<<V,"missing mipmap data"),d(W.data||W.element||W.needsCopy,"missing image data"),Bt(c),Ve(W,Ho+w,R,F,V),ot(),ye(W),P}function A(w){var E=w|0;if(E!==c.width){P.width=c.width=E,P.height=c.height=E,Bt(c);for(var p=0;p<6;++p)for(var x=0;c.mipmask>>x;++x)a.texImage2D(Ho+p,x,c.format,E>>x,E>>x,0,c.format,c.type,null);return ot(),B.profile&&(c.stats.size=Zo(c.internalformat,c.type,P.width,P.height,!1,!0)),P}}return P(y,M,I,_e,Ke,m),P.subimage=L,P.resize=A,P._reglType="textureCube",P._texture=c,B.profile&&(P.stats=c.stats),P.destroy=function(){c.decRef()},P}function bt(){for(var y=0;y<Gt;++y)a.activeTexture(Pi+y),a.bindTexture(An,null),xt[y]=null;nn(It).forEach(Ie),z.cubeCount=0,z.textureCount=0}B.profile&&(z.getTotalTextureSize=function(){var y=0;return Object.keys(It).forEach(function(M){y+=It[M].stats.size}),y});function Pn(){for(var y=0;y<Gt;++y){var M=xt[y];M&&(M.bindCount=0,M.unit=-1,xt[y]=null)}nn(It).forEach(function(I){I.texture=a.createTexture(),a.bindTexture(I.target,I.texture);for(var _e=0;_e<32;++_e)if((I.mipmask&1<<_e)!==0)if(I.target===An)a.texImage2D(An,_e,I.internalformat,I.width>>_e,I.height>>_e,0,I.internalformat,I.type,null);else for(var Ke=0;Ke<6;++Ke)a.texImage2D(Ho+Ke,_e,I.internalformat,I.width>>_e,I.height>>_e,0,I.internalformat,I.type,null);Pt(I.texInfo,I.target)})}function wr(){for(var y=0;y<Gt;++y){var M=xt[y];M&&(M.bindCount=0,M.unit=-1,xt[y]=null),a.activeTexture(Pi+y),a.bindTexture(An,null),a.bindTexture(ys,null)}}return{create2D:et,createCube:nt,clear:bt,getTexture:function(y){return null},restore:Pn,refresh:wr}}var Zn=36161,Qo=32854,Ul=32855,Vl=36194,$l=33189,Hl=36168,jl=34041,Xl=35907,Wl=34836,ql=34842,Yl=34843,xn=[];xn[Qo]=2,xn[Ul]=2,xn[Vl]=2,xn[$l]=2,xn[Hl]=1,xn[jl]=4,xn[Xl]=4,xn[Wl]=16,xn[ql]=8,xn[Yl]=6;function Zl(a,h,_){return xn[a]*h*_}var jy=function(a,h,_,O,j){var z={rgba4:Qo,rgb565:Vl,"rgb5 a1":Ul,depth:$l,stencil:Hl,"depth stencil":jl};h.ext_srgb&&(z.srgba=Xl),h.ext_color_buffer_half_float&&(z.rgba16f=ql,z.rgb16f=Yl),h.webgl_color_buffer_float&&(z.rgba32f=Wl);var B=[];Object.keys(z).forEach(function(J){var ne=z[J];B[ne]=J});var K=0,Q={};function ie(J){this.id=K++,this.refCount=1,this.renderbuffer=J,this.format=Qo,this.width=0,this.height=0,j.profile&&(this.stats={size:0})}ie.prototype.decRef=function(){--this.refCount<=0&&ae(this)};function ae(J){var ne=J.renderbuffer;d(ne,"must not double destroy renderbuffer"),a.bindRenderbuffer(Zn,null),a.deleteRenderbuffer(ne),J.renderbuffer=null,J.refCount=0,delete Q[J.id],O.renderbufferCount--}function oe(J,ne){var k=new ie(a.createRenderbuffer());Q[k.id]=k,O.renderbufferCount++;function G(xe,Z){var ge=0,me=0,Fe=Qo;if(typeof xe=="object"&&xe){var X=xe;if("shape"in X){var $=X.shape;d(Array.isArray($)&&$.length>=2,"invalid renderbuffer shape"),ge=$[0]|0,me=$[1]|0}else"radius"in X&&(ge=me=X.radius|0),"width"in X&&(ge=X.width|0),"height"in X&&(me=X.height|0);"format"in X&&(d.parameter(X.format,z,"invalid renderbuffer format"),Fe=z[X.format])}else typeof xe=="number"?(ge=xe|0,typeof Z=="number"?me=Z|0:me=ge):xe?d.raise("invalid arguments to renderbuffer constructor"):ge=me=1;if(d(ge>0&&me>0&&ge<=_.maxRenderbufferSize&&me<=_.maxRenderbufferSize,"invalid renderbuffer size"),!(ge===k.width&&me===k.height&&Fe===k.format))return G.width=k.width=ge,G.height=k.height=me,k.format=Fe,a.bindRenderbuffer(Zn,k.renderbuffer),a.renderbufferStorage(Zn,Fe,ge,me),d(a.getError()===0,"invalid render buffer format"),j.profile&&(k.stats.size=Zl(k.format,k.width,k.height)),G.format=B[k.format],G}function te(xe,Z){var ge=xe|0,me=Z|0||ge;return ge===k.width&&me===k.height||(d(ge>0&&me>0&&ge<=_.maxRenderbufferSize&&me<=_.maxRenderbufferSize,"invalid renderbuffer size"),G.width=k.width=ge,G.height=k.height=me,a.bindRenderbuffer(Zn,k.renderbuffer),a.renderbufferStorage(Zn,k.format,ge,me),d(a.getError()===0,"invalid render buffer format"),j.profile&&(k.stats.size=Zl(k.format,k.width,k.height))),G}return G(J,ne),G.resize=te,G._reglType="renderbuffer",G._renderbuffer=k,j.profile&&(G.stats=k.stats),G.destroy=function(){k.decRef()},G}j.profile&&(O.getTotalRenderbufferSize=function(){var J=0;return Object.keys(Q).forEach(function(ne){J+=Q[ne].stats.size}),J});function le(){nn(Q).forEach(function(J){J.renderbuffer=a.createRenderbuffer(),a.bindRenderbuffer(Zn,J.renderbuffer),a.renderbufferStorage(Zn,J.format,J.width,J.height)}),a.bindRenderbuffer(Zn,null)}return{create:oe,clear:function(){nn(Q).forEach(ae)},restore:le}},Nn=36160,zs=36161,yr=3553,Ko=34069,Ql=36064,Kl=36096,Jl=36128,ec=33306,tc=36053,Xy=36054,Wy=36055,qy=36057,Yy=36061,Zy=36193,Qy=5121,Ky=5126,nc=6407,rc=6408,Jy=6402,ex=[nc,rc],Os=[];Os[rc]=4,Os[nc]=3;var Jo=[];Jo[Qy]=1,Jo[Ky]=4,Jo[Zy]=2;var tx=32854,nx=32855,rx=36194,ix=33189,ox=36168,ic=34041,ax=35907,sx=34836,fx=34842,ux=34843,lx=[tx,nx,rx,ax,fx,ux,sx],Wr={};Wr[tc]="complete",Wr[Xy]="incomplete attachment",Wr[qy]="incomplete dimensions",Wr[Wy]="incomplete, missing attachment",Wr[Yy]="unsupported";function cx(a,h,_,O,j,z){var B={cur:null,next:null,dirty:!1,setFBO:null},K=["rgba"],Q=["rgba4","rgb565","rgb5 a1"];h.ext_srgb&&Q.push("srgba"),h.ext_color_buffer_half_float&&Q.push("rgba16f","rgb16f"),h.webgl_color_buffer_float&&Q.push("rgba32f");var ie=["uint8"];h.oes_texture_half_float&&ie.push("half float","float16"),h.oes_texture_float&&ie.push("float","float32");function ae(ee,he,de){this.target=ee,this.texture=he,this.renderbuffer=de;var Ve=0,Ne=0;he?(Ve=he.width,Ne=he.height):de&&(Ve=de.width,Ne=de.height),this.width=Ve,this.height=Ne}function oe(ee){ee&&(ee.texture&&ee.texture._texture.decRef(),ee.renderbuffer&&ee.renderbuffer._renderbuffer.decRef())}function le(ee,he,de){if(ee)if(ee.texture){var Ve=ee.texture._texture,Ne=Math.max(1,Ve.width),pe=Math.max(1,Ve.height);d(Ne===he&&pe===de,"inconsistent width/height for supplied texture"),Ve.refCount+=1}else{var ye=ee.renderbuffer._renderbuffer;d(ye.width===he&&ye.height===de,"inconsistent width/height for renderbuffer"),ye.refCount+=1}}function J(ee,he){he&&(he.texture?a.framebufferTexture2D(Nn,ee,he.target,he.texture._texture.texture,0):a.framebufferRenderbuffer(Nn,ee,zs,he.renderbuffer._renderbuffer.renderbuffer))}function ne(ee){var he=yr,de=null,Ve=null,Ne=ee;typeof ee=="object"&&(Ne=ee.data,"target"in ee&&(he=ee.target|0)),d.type(Ne,"function","invalid attachment data");var pe=Ne._reglType;return pe==="texture2d"?(de=Ne,d(he===yr)):pe==="textureCube"?(de=Ne,d(he>=Ko&&he<Ko+6,"invalid cube map target")):pe==="renderbuffer"?(Ve=Ne,he=zs):d.raise("invalid regl object for attachment"),new ae(he,de,Ve)}function k(ee,he,de,Ve,Ne){if(de){var pe=O.create2D({width:ee,height:he,format:Ve,type:Ne});return pe._texture.refCount=0,new ae(yr,pe,null)}else{var ye=j.create({width:ee,height:he,format:Ve});return ye._renderbuffer.refCount=0,new ae(zs,null,ye)}}function G(ee){return ee&&(ee.texture||ee.renderbuffer)}function te(ee,he,de){ee&&(ee.texture?ee.texture.resize(he,de):ee.renderbuffer&&ee.renderbuffer.resize(he,de),ee.width=he,ee.height=de)}var xe=0,Z={};function ge(){this.id=xe++,Z[this.id]=this,this.framebuffer=a.createFramebuffer(),this.width=0,this.height=0,this.colorAttachments=[],this.depthAttachment=null,this.stencilAttachment=null,this.depthStencilAttachment=null}function me(ee){ee.colorAttachments.forEach(oe),oe(ee.depthAttachment),oe(ee.stencilAttachment),oe(ee.depthStencilAttachment)}function Fe(ee){var he=ee.framebuffer;d(he,"must not double destroy framebuffer"),a.deleteFramebuffer(he),ee.framebuffer=null,z.framebufferCount--,delete Z[ee.id]}function X(ee){var he;a.bindFramebuffer(Nn,ee.framebuffer);var de=ee.colorAttachments;for(he=0;he<de.length;++he)J(Ql+he,de[he]);for(he=de.length;he<_.maxColorAttachments;++he)a.framebufferTexture2D(Nn,Ql+he,yr,null,0);a.framebufferTexture2D(Nn,ec,yr,null,0),a.framebufferTexture2D(Nn,Kl,yr,null,0),a.framebufferTexture2D(Nn,Jl,yr,null,0),J(Kl,ee.depthAttachment),J(Jl,ee.stencilAttachment),J(ec,ee.depthStencilAttachment);var Ve=a.checkFramebufferStatus(Nn);!a.isContextLost()&&Ve!==tc&&d.raise("framebuffer configuration not supported, status = "+Wr[Ve]),a.bindFramebuffer(Nn,B.next?B.next.framebuffer:null),B.cur=B.next,a.getError()}function $(ee,he){var de=new ge;z.framebufferCount++;function Ve(pe,ye){var ze;d(B.next!==de,"can not update framebuffer which is currently in use");var $e=0,Je=0,vt=!0,yt=!0,tt=null,Et=!0,ht="rgba",Tt="uint8",Pt=1,Ct=null,It=null,Gt=null,xt=!1;if(typeof pe=="number")$e=pe|0,Je=ye|0||$e;else if(!pe)$e=Je=1;else{d.type(pe,"object","invalid arguments for framebuffer");var qe=pe;if("shape"in qe){var Bt=qe.shape;d(Array.isArray(Bt)&&Bt.length>=2,"invalid shape for framebuffer"),$e=Bt[0],Je=Bt[1]}else"radius"in qe&&($e=Je=qe.radius),"width"in qe&&($e=qe.width),"height"in qe&&(Je=qe.height);("color"in qe||"colors"in qe)&&(tt=qe.color||qe.colors,Array.isArray(tt)&&d(tt.length===1||h.webgl_draw_buffers,"multiple render targets not supported")),tt||("colorCount"in qe&&(Pt=qe.colorCount|0,d(Pt>0,"invalid color buffer count")),"colorTexture"in qe&&(Et=!!qe.colorTexture,ht="rgba4"),"colorType"in qe&&(Tt=qe.colorType,Et?(d(h.oes_texture_float||!(Tt==="float"||Tt==="float32"),"you must enable OES_texture_float in order to use floating point framebuffer objects"),d(h.oes_texture_half_float||!(Tt==="half float"||Tt==="float16"),"you must enable OES_texture_half_float in order to use 16-bit floating point framebuffer objects")):Tt==="half float"||Tt==="float16"?(d(h.ext_color_buffer_half_float,"you must enable EXT_color_buffer_half_float to use 16-bit render buffers"),ht="rgba16f"):(Tt==="float"||Tt==="float32")&&(d(h.webgl_color_buffer_float,"you must enable WEBGL_color_buffer_float in order to use 32-bit floating point renderbuffers"),ht="rgba32f"),d.oneOf(Tt,ie,"invalid color type")),"colorFormat"in qe&&(ht=qe.colorFormat,K.indexOf(ht)>=0?Et=!0:Q.indexOf(ht)>=0?Et=!1:d.optional(function(){Et?d.oneOf(qe.colorFormat,K,"invalid color format for texture"):d.oneOf(qe.colorFormat,Q,"invalid color format for renderbuffer")}))),("depthTexture"in qe||"depthStencilTexture"in qe)&&(xt=!!(qe.depthTexture||qe.depthStencilTexture),d(!xt||h.webgl_depth_texture,"webgl_depth_texture extension not supported")),"depth"in qe&&(typeof qe.depth=="boolean"?vt=qe.depth:(Ct=qe.depth,yt=!1)),"stencil"in qe&&(typeof qe.stencil=="boolean"?yt=qe.stencil:(It=qe.stencil,vt=!1)),"depthStencil"in qe&&(typeof qe.depthStencil=="boolean"?vt=yt=qe.depthStencil:(Gt=qe.depthStencil,vt=!1,yt=!1))}var ot=null,Ie=null,et=null,nt=null;if(Array.isArray(tt))ot=tt.map(ne);else if(tt)ot=[ne(tt)];else for(ot=new Array(Pt),ze=0;ze<Pt;++ze)ot[ze]=k($e,Je,Et,ht,Tt);d(h.webgl_draw_buffers||ot.length<=1,"you must enable the WEBGL_draw_buffers extension in order to use multiple color buffers."),d(ot.length<=_.maxColorAttachments,"too many color attachments, not supported"),$e=$e||ot[0].width,Je=Je||ot[0].height,Ct?Ie=ne(Ct):vt&&!yt&&(Ie=k($e,Je,xt,"depth","uint32")),It?et=ne(It):yt&&!vt&&(et=k($e,Je,!1,"stencil","uint8")),Gt?nt=ne(Gt):!Ct&&!It&&yt&&vt&&(nt=k($e,Je,xt,"depth stencil","depth stencil")),d(!!Ct+!!It+!!Gt<=1,"invalid framebuffer configuration, can specify exactly one depth/stencil attachment");var bt=null;for(ze=0;ze<ot.length;++ze)if(le(ot[ze],$e,Je),d(!ot[ze]||ot[ze].texture&&ex.indexOf(ot[ze].texture._texture.format)>=0||ot[ze].renderbuffer&&lx.indexOf(ot[ze].renderbuffer._renderbuffer.format)>=0,"framebuffer color attachment "+ze+" is invalid"),ot[ze]&&ot[ze].texture){var Pn=Os[ot[ze].texture._texture.format]*Jo[ot[ze].texture._texture.type];bt===null?bt=Pn:d(bt===Pn,"all color attachments much have the same number of bits per pixel.")}return le(Ie,$e,Je),d(!Ie||Ie.texture&&Ie.texture._texture.format===Jy||Ie.renderbuffer&&Ie.renderbuffer._renderbuffer.format===ix,"invalid depth attachment for framebuffer object"),le(et,$e,Je),d(!et||et.renderbuffer&&et.renderbuffer._renderbuffer.format===ox,"invalid stencil attachment for framebuffer object"),le(nt,$e,Je),d(!nt||nt.texture&&nt.texture._texture.format===ic||nt.renderbuffer&&nt.renderbuffer._renderbuffer.format===ic,"invalid depth-stencil attachment for framebuffer object"),me(de),de.width=$e,de.height=Je,de.colorAttachments=ot,de.depthAttachment=Ie,de.stencilAttachment=et,de.depthStencilAttachment=nt,Ve.color=ot.map(G),Ve.depth=G(Ie),Ve.stencil=G(et),Ve.depthStencil=G(nt),Ve.width=de.width,Ve.height=de.height,X(de),Ve}function Ne(pe,ye){d(B.next!==de,"can not resize a framebuffer which is currently in use");var ze=Math.max(pe|0,1),$e=Math.max(ye|0||ze,1);if(ze===de.width&&$e===de.height)return Ve;for(var Je=de.colorAttachments,vt=0;vt<Je.length;++vt)te(Je[vt],ze,$e);return te(de.depthAttachment,ze,$e),te(de.stencilAttachment,ze,$e),te(de.depthStencilAttachment,ze,$e),de.width=Ve.width=ze,de.height=Ve.height=$e,X(de),Ve}return Ve(ee,he),r(Ve,{resize:Ne,_reglType:"framebuffer",_framebuffer:de,destroy:function(){Fe(de),me(de)},use:function(pe){B.setFBO({framebuffer:Ve},pe)}})}function Se(ee){var he=Array(6);function de(Ne){var pe;d(he.indexOf(B.next)<0,"can not update framebuffer which is currently in use");var ye={color:null},ze=0,$e=null,Je="rgba",vt="uint8",yt=1;if(typeof Ne=="number")ze=Ne|0;else if(!Ne)ze=1;else{d.type(Ne,"object","invalid arguments for framebuffer");var tt=Ne;if("shape"in tt){var Et=tt.shape;d(Array.isArray(Et)&&Et.length>=2,"invalid shape for framebuffer"),d(Et[0]===Et[1],"cube framebuffer must be square"),ze=Et[0]}else"radius"in tt&&(ze=tt.radius|0),"width"in tt?(ze=tt.width|0,"height"in tt&&d(tt.height===ze,"must be square")):"height"in tt&&(ze=tt.height|0);("color"in tt||"colors"in tt)&&($e=tt.color||tt.colors,Array.isArray($e)&&d($e.length===1||h.webgl_draw_buffers,"multiple render targets not supported")),$e||("colorCount"in tt&&(yt=tt.colorCount|0,d(yt>0,"invalid color buffer count")),"colorType"in tt&&(d.oneOf(tt.colorType,ie,"invalid color type"),vt=tt.colorType),"colorFormat"in tt&&(Je=tt.colorFormat,d.oneOf(tt.colorFormat,K,"invalid color format for texture"))),"depth"in tt&&(ye.depth=tt.depth),"stencil"in tt&&(ye.stencil=tt.stencil),"depthStencil"in tt&&(ye.depthStencil=tt.depthStencil)}var ht;if($e)if(Array.isArray($e))for(ht=[],pe=0;pe<$e.length;++pe)ht[pe]=$e[pe];else ht=[$e];else{ht=Array(yt);var Tt={radius:ze,format:Je,type:vt};for(pe=0;pe<yt;++pe)ht[pe]=O.createCube(Tt)}for(ye.color=Array(ht.length),pe=0;pe<ht.length;++pe){var Pt=ht[pe];d(typeof Pt=="function"&&Pt._reglType==="textureCube","invalid cube map"),ze=ze||Pt.width,d(Pt.width===ze&&Pt.height===ze,"invalid cube map shape"),ye.color[pe]={target:Ko,data:ht[pe]}}for(pe=0;pe<6;++pe){for(var Ct=0;Ct<ht.length;++Ct)ye.color[Ct].target=Ko+pe;pe>0&&(ye.depth=he[0].depth,ye.stencil=he[0].stencil,ye.depthStencil=he[0].depthStencil),he[pe]?he[pe](ye):he[pe]=$(ye)}return r(de,{width:ze,height:ze,color:ht})}function Ve(Ne){var pe,ye=Ne|0;if(d(ye>0&&ye<=_.maxCubeMapSize,"invalid radius for cube fbo"),ye===de.width)return de;var ze=de.color;for(pe=0;pe<ze.length;++pe)ze[pe].resize(ye);for(pe=0;pe<6;++pe)he[pe].resize(ye);return de.width=de.height=ye,de}return de(ee),r(de,{faces:he,resize:Ve,_reglType:"framebufferCube",destroy:function(){he.forEach(function(Ne){Ne.destroy()})}})}function ce(){B.cur=null,B.next=null,B.dirty=!0,nn(Z).forEach(function(ee){ee.framebuffer=a.createFramebuffer(),X(ee)})}return r(B,{getFramebuffer:function(ee){if(typeof ee=="function"&&ee._reglType==="framebuffer"){var he=ee._framebuffer;if(he instanceof ge)return he}return null},create:$,createCube:Se,clear:function(){nn(Z).forEach(Fe)},restore:ce})}var hx=5126,oc=34962,ea=34963,ac=["attributes","elements","offset","count","primitive","instances"];function Ms(){this.state=0,this.x=0,this.y=0,this.z=0,this.w=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=hx,this.offset=0,this.stride=0,this.divisor=0}function dx(a,h,_,O,j,z,B){for(var K=_.maxAttributes,Q=new Array(K),ie=0;ie<K;++ie)Q[ie]=new Ms;var ae=0,oe={},le={Record:Ms,scope:{},state:Q,currentVAO:null,targetVAO:null,restore:ne()?me:function(){},createVAO:Fe,getVAO:G,destroyBuffer:J,setVAO:ne()?te:xe,clear:ne()?Z:function(){}};function J(X){for(var $=0;$<Q.length;++$){var Se=Q[$];Se.buffer===X&&(a.disableVertexAttribArray($),Se.buffer=null)}}function ne(){return h.oes_vertex_array_object}function k(){return h.angle_instanced_arrays}function G(X){return typeof X=="function"&&X._vao?X._vao:null}function te(X){if(X!==le.currentVAO){var $=ne();X?$.bindVertexArrayOES(X.vao):$.bindVertexArrayOES(null),le.currentVAO=X}}function xe(X){if(X!==le.currentVAO){if(X)X.bindAttrs();else{for(var $=k(),Se=0;Se<Q.length;++Se){var ce=Q[Se];ce.buffer?(a.enableVertexAttribArray(Se),ce.buffer.bind(),a.vertexAttribPointer(Se,ce.size,ce.type,ce.normalized,ce.stride,ce.offfset),$&&ce.divisor&&$.vertexAttribDivisorANGLE(Se,ce.divisor)):(a.disableVertexAttribArray(Se),a.vertexAttrib4f(Se,ce.x,ce.y,ce.z,ce.w))}B.elements?a.bindBuffer(ea,B.elements.buffer.buffer):a.bindBuffer(ea,null)}le.currentVAO=X}}function Z(){nn(oe).forEach(function(X){X.destroy()})}function ge(){this.id=++ae,this.attributes=[],this.elements=null,this.ownsElements=!1,this.count=0,this.offset=0,this.instances=-1,this.primitive=4;var X=ne();X?this.vao=X.createVertexArrayOES():this.vao=null,oe[this.id]=this,this.buffers=[]}ge.prototype.bindAttrs=function(){for(var X=k(),$=this.attributes,Se=0;Se<$.length;++Se){var ce=$[Se];ce.buffer?(a.enableVertexAttribArray(Se),a.bindBuffer(oc,ce.buffer.buffer),a.vertexAttribPointer(Se,ce.size,ce.type,ce.normalized,ce.stride,ce.offset),X&&ce.divisor&&X.vertexAttribDivisorANGLE(Se,ce.divisor)):(a.disableVertexAttribArray(Se),a.vertexAttrib4f(Se,ce.x,ce.y,ce.z,ce.w))}for(var ee=$.length;ee<K;++ee)a.disableVertexAttribArray(ee);var he=z.getElements(this.elements);he?a.bindBuffer(ea,he.buffer.buffer):a.bindBuffer(ea,null)},ge.prototype.refresh=function(){var X=ne();X&&(X.bindVertexArrayOES(this.vao),this.bindAttrs(),le.currentVAO=null,X.bindVertexArrayOES(null))},ge.prototype.destroy=function(){if(this.vao){var X=ne();this===le.currentVAO&&(le.currentVAO=null,X.bindVertexArrayOES(null)),X.deleteVertexArrayOES(this.vao),this.vao=null}this.ownsElements&&(this.elements.destroy(),this.elements=null,this.ownsElements=!1),oe[this.id]&&(delete oe[this.id],O.vaoCount-=1)};function me(){var X=ne();X&&nn(oe).forEach(function($){$.refresh()})}function Fe(X){var $=new ge;O.vaoCount+=1;function Se(ce){var ee;if(Array.isArray(ce))ee=ce,$.elements&&$.ownsElements&&$.elements.destroy(),$.elements=null,$.ownsElements=!1,$.offset=0,$.count=0,$.instances=-1,$.primitive=4;else{if(d(typeof ce=="object","invalid arguments for create vao"),d("attributes"in ce,"must specify attributes for vao"),ce.elements){var he=ce.elements;$.ownsElements?typeof he=="function"&&he._reglType==="elements"?($.elements.destroy(),$.ownsElements=!1):($.elements(he),$.ownsElements=!1):z.getElements(ce.elements)?($.elements=ce.elements,$.ownsElements=!1):($.elements=z.create(ce.elements),$.ownsElements=!0)}else $.elements=null,$.ownsElements=!1;ee=ce.attributes,$.offset=0,$.count=-1,$.instances=-1,$.primitive=4,$.elements&&($.count=$.elements._elements.vertCount,$.primitive=$.elements._elements.primType),"offset"in ce&&($.offset=ce.offset|0),"count"in ce&&($.count=ce.count|0),"instances"in ce&&($.instances=ce.instances|0),"primitive"in ce&&(d(ce.primitive in Yn,"bad primitive type: "+ce.primitive),$.primitive=Yn[ce.primitive]),d.optional(()=>{for(var vt=Object.keys(ce),yt=0;yt<vt.length;++yt)d(ac.indexOf(vt[yt])>=0,'invalid option for vao: "'+vt[yt]+'" valid options are '+ac)}),d(Array.isArray(ee),"attributes must be an array")}d(ee.length<K,"too many attributes"),d(ee.length>0,"must specify at least one attribute");var de={},Ve=$.attributes;Ve.length=ee.length;for(var Ne=0;Ne<ee.length;++Ne){var pe=ee[Ne],ye=Ve[Ne]=new Ms,ze=pe.data||pe;if(Array.isArray(ze)||n(ze)||yn(ze)){var $e;$.buffers[Ne]&&($e=$.buffers[Ne],n(ze)&&$e._buffer.byteLength>=ze.byteLength?$e.subdata(ze):($e.destroy(),$.buffers[Ne]=null)),$.buffers[Ne]||($e=$.buffers[Ne]=j.create(pe,oc,!1,!0)),ye.buffer=j.getBuffer($e),ye.size=ye.buffer.dimension|0,ye.normalized=!1,ye.type=ye.buffer.dtype,ye.offset=0,ye.stride=0,ye.divisor=0,ye.state=1,de[Ne]=1}else j.getBuffer(pe)?(ye.buffer=j.getBuffer(pe),ye.size=ye.buffer.dimension|0,ye.normalized=!1,ye.type=ye.buffer.dtype,ye.offset=0,ye.stride=0,ye.divisor=0,ye.state=1):j.getBuffer(pe.buffer)?(ye.buffer=j.getBuffer(pe.buffer),ye.size=(+pe.size||ye.buffer.dimension)|0,ye.normalized=!!pe.normalized||!1,"type"in pe?(d.parameter(pe.type,mr,"invalid buffer type"),ye.type=mr[pe.type]):ye.type=ye.buffer.dtype,ye.offset=(pe.offset||0)|0,ye.stride=(pe.stride||0)|0,ye.divisor=(pe.divisor||0)|0,ye.state=1,d(ye.size>=1&&ye.size<=4,"size must be between 1 and 4"),d(ye.offset>=0,"invalid offset"),d(ye.stride>=0&&ye.stride<=255,"stride must be between 0 and 255"),d(ye.divisor>=0,"divisor must be positive"),d(!ye.divisor||!!h.angle_instanced_arrays,"ANGLE_instanced_arrays must be enabled to use divisor")):"x"in pe?(d(Ne>0,"first attribute must not be a constant"),ye.x=+pe.x||0,ye.y=+pe.y||0,ye.z=+pe.z||0,ye.w=+pe.w||0,ye.state=2):d(!1,"invalid attribute spec for location "+Ne)}for(var Je=0;Je<$.buffers.length;++Je)!de[Je]&&$.buffers[Je]&&($.buffers[Je].destroy(),$.buffers[Je]=null);return $.refresh(),Se}return Se.destroy=function(){for(var ce=0;ce<$.buffers.length;++ce)$.buffers[ce]&&$.buffers[ce].destroy();$.buffers.length=0,$.ownsElements&&($.elements.destroy(),$.elements=null,$.ownsElements=!1),$.destroy()},Se._vao=$,Se._reglType="vao",Se(X)}return le}var sc=35632,mx=35633,px=35718,vx=35721;function gx(a,h,_,O){var j={},z={};function B(k,G,te,xe){this.name=k,this.id=G,this.location=te,this.info=xe}function K(k,G){for(var te=0;te<k.length;++te)if(k[te].id===G.id){k[te].location=G.location;return}k.push(G)}function Q(k,G,te){var xe=k===sc?j:z,Z=xe[G];if(!Z){var ge=h.str(G);Z=a.createShader(k),a.shaderSource(Z,ge),a.compileShader(Z),d.shaderError(a,Z,ge,k,te),xe[G]=Z}return Z}var ie={},ae=[],oe=0;function le(k,G){this.id=oe++,this.fragId=k,this.vertId=G,this.program=null,this.uniforms=[],this.attributes=[],this.refCount=1,O.profile&&(this.stats={uniformsCount:0,attributesCount:0})}function J(k,G,te){var xe,Z,ge=Q(sc,k.fragId),me=Q(mx,k.vertId),Fe=k.program=a.createProgram();if(a.attachShader(Fe,ge),a.attachShader(Fe,me),te)for(xe=0;xe<te.length;++xe){var X=te[xe];a.bindAttribLocation(Fe,X[0],X[1])}a.linkProgram(Fe),d.linkError(a,Fe,h.str(k.fragId),h.str(k.vertId),G);var $=a.getProgramParameter(Fe,px);O.profile&&(k.stats.uniformsCount=$);var Se=k.uniforms;for(xe=0;xe<$;++xe)if(Z=a.getActiveUniform(Fe,xe),Z){if(Z.size>1)for(var ce=0;ce<Z.size;++ce){var ee=Z.name.replace("[0]","["+ce+"]");K(Se,new B(ee,h.id(ee),a.getUniformLocation(Fe,ee),Z))}var he=Z.name;Z.size>1&&(he=he.replace("[0]","")),K(Se,new B(he,h.id(he),a.getUniformLocation(Fe,he),Z))}var de=a.getProgramParameter(Fe,vx);O.profile&&(k.stats.attributesCount=de);var Ve=k.attributes;for(xe=0;xe<de;++xe)Z=a.getActiveAttrib(Fe,xe),Z&&K(Ve,new B(Z.name,h.id(Z.name),a.getAttribLocation(Fe,Z.name),Z))}O.profile&&(_.getMaxUniformsCount=function(){var k=0;return ae.forEach(function(G){G.stats.uniformsCount>k&&(k=G.stats.uniformsCount)}),k},_.getMaxAttributesCount=function(){var k=0;return ae.forEach(function(G){G.stats.attributesCount>k&&(k=G.stats.attributesCount)}),k});function ne(){j={},z={};for(var k=0;k<ae.length;++k)J(ae[k],null,ae[k].attributes.map(function(G){return[G.location,G.name]}))}return{clear:function(){var k=a.deleteShader.bind(a);nn(j).forEach(k),j={},nn(z).forEach(k),z={},ae.forEach(function(G){a.deleteProgram(G.program)}),ae.length=0,ie={},_.shaderCount=0},program:function(k,G,te,xe){d.command(k>=0,"missing vertex shader",te),d.command(G>=0,"missing fragment shader",te);var Z=ie[G];Z||(Z=ie[G]={});var ge=Z[k];if(ge&&(ge.refCount++,!xe))return ge;var me=new le(G,k);return _.shaderCount++,J(me,te,xe),ge||(Z[k]=me),ae.push(me),r(me,{destroy:function(){if(me.refCount--,me.refCount<=0){a.deleteProgram(me.program);var Fe=ae.indexOf(me);ae.splice(Fe,1),_.shaderCount--}Z[me.vertId].refCount<=0&&(a.deleteShader(z[me.vertId]),delete z[me.vertId],delete ie[me.fragId][me.vertId]),Object.keys(ie[me.fragId]).length||(a.deleteShader(j[me.fragId]),delete j[me.fragId],delete ie[me.fragId])}})},restore:ne,shader:Q,frag:-1,vert:-1}}var yx=6408,Ci=5121,xx=3333,ta=5126;function bx(a,h,_,O,j,z,B){function K(ae){var oe;h.next===null?(d(j.preserveDrawingBuffer,'you must create a webgl context with "preserveDrawingBuffer":true in order to read pixels from the drawing buffer'),oe=Ci):(d(h.next.colorAttachments[0].texture!==null,"You cannot read from a renderbuffer"),oe=h.next.colorAttachments[0].texture._texture.type,d.optional(function(){z.oes_texture_float?(d(oe===Ci||oe===ta,"Reading from a framebuffer is only allowed for the types 'uint8' and 'float'"),oe===ta&&d(B.readFloat,"Reading 'float' values is not permitted in your browser. For a fallback, please see: https://www.npmjs.com/package/glsl-read-float")):d(oe===Ci,"Reading from a framebuffer is only allowed for the type 'uint8'")}));var le=0,J=0,ne=O.framebufferWidth,k=O.framebufferHeight,G=null;n(ae)?G=ae:ae&&(d.type(ae,"object","invalid arguments to regl.read()"),le=ae.x|0,J=ae.y|0,d(le>=0&&le<O.framebufferWidth,"invalid x offset for regl.read"),d(J>=0&&J<O.framebufferHeight,"invalid y offset for regl.read"),ne=(ae.width||O.framebufferWidth-le)|0,k=(ae.height||O.framebufferHeight-J)|0,G=ae.data||null),G&&(oe===Ci?d(G instanceof Uint8Array,"buffer must be 'Uint8Array' when reading from a framebuffer of type 'uint8'"):oe===ta&&d(G instanceof Float32Array,"buffer must be 'Float32Array' when reading from a framebuffer of type 'float'")),d(ne>0&&ne+le<=O.framebufferWidth,"invalid width for read pixels"),d(k>0&&k+J<=O.framebufferHeight,"invalid height for read pixels"),_();var te=ne*k*4;return G||(oe===Ci?G=new Uint8Array(te):oe===ta&&(G=G||new Float32Array(te))),d.isTypedArray(G,"data buffer for regl.read() must be a typedarray"),d(G.byteLength>=te,"data buffer for regl.read() too small"),a.pixelStorei(xx,4),a.readPixels(le,J,ne,k,yx,oe,G),G}function Q(ae){var oe;return h.setFBO({framebuffer:ae.framebuffer},function(){oe=K(ae)}),oe}function ie(ae){return!ae||!("framebuffer"in ae)?K(ae):Q(ae)}return ie}function qr(a){return Array.prototype.slice.call(a)}function Yr(a){return qr(a).join("")}function _x(){var a=0,h=[],_=[];function O(oe){for(var le=0;le<_.length;++le)if(_[le]===oe)return h[le];var J="g"+a++;return h.push(J),_.push(oe),J}function j(){var oe=[];function le(){oe.push.apply(oe,qr(arguments))}var J=[];function ne(){var k="v"+a++;return J.push(k),arguments.length>0&&(oe.push(k,"="),oe.push.apply(oe,qr(arguments)),oe.push(";")),k}return r(le,{def:ne,toString:function(){return Yr([J.length>0?"var "+J.join(",")+";":"",Yr(oe)])}})}function z(){var oe=j(),le=j(),J=oe.toString,ne=le.toString;function k(G,te){le(G,te,"=",oe.def(G,te),";")}return r(function(){oe.apply(oe,qr(arguments))},{def:oe.def,entry:oe,exit:le,save:k,set:function(G,te,xe){k(G,te),oe(G,te,"=",xe,";")},toString:function(){return J()+ne()}})}function B(){var oe=Yr(arguments),le=z(),J=z(),ne=le.toString,k=J.toString;return r(le,{then:function(){return le.apply(le,qr(arguments)),this},else:function(){return J.apply(J,qr(arguments)),this},toString:function(){var G=k();return G&&(G="else{"+G+"}"),Yr(["if(",oe,"){",ne(),"}",G])}})}var K=j(),Q={};function ie(oe,le){var J=[];function ne(){var Z="a"+J.length;return J.push(Z),Z}le=le||0;for(var k=0;k<le;++k)ne();var G=z(),te=G.toString,xe=Q[oe]=r(G,{arg:ne,toString:function(){return Yr(["function(",J.join(),"){",te(),"}"])}});return xe}function ae(){var oe=['"use strict";',K,"return {"];Object.keys(Q).forEach(function(ne){oe.push('"',ne,'":',Q[ne].toString(),",")}),oe.push("}");var le=Yr(oe).replace(/;/g,`;
|
|
6
6
|
`).replace(/}/g,`}
|
|
7
7
|
`).replace(/{/g,`{
|
|
8
|
-
`),K=Function.apply(null,h.concat(ue));return K.apply(null,_)}return{global:Q,link:R,block:U,proc:ne,scope:I,cond:N,compile:ie}}var or="xyzw".split(""),If=5121,ar=1,la=2,ca=0,ha=1,da=2,ma=3,Gi=4,Rf=5,Df=6,Mf="dither",Of="blend.enable",Gf="blend.color",pa="blend.equation",va="blend.func",Nf="depth.enable",Bf="depth.func",Vf="depth.range",$f="depth.mask",ga="colorMask",Uf="cull.enable",jf="cull.face",ya="frontFace",xa="lineWidth",Xf="polygonOffset.enable",ba="polygonOffset.offset",Hf="sample.alpha",qf="sample.enable",_a="sample.coverage",Wf="stencil.enable",Yf="stencil.mask",Sa="stencil.func",wa="stencil.opFront",Fr="stencil.opBack",Zf="scissor.enable",Ni="scissor.box",dn="viewport",Lr="profile",Mn="framebuffer",zr="vert",Ir="frag",On="elements",Gn="primitive",Nn="count",Bi="offset",Vi="instances",Rr="vao",Ta="Width",Aa="Height",sr=Mn+Ta,ur=Mn+Aa,py=dn+Ta,vy=dn+Aa,Qf="drawingBuffer",Kf=Qf+Ta,Jf=Qf+Aa,gy=[va,pa,Sa,wa,Fr,_a,dn,Ni,ba],fr=34962,Ea=34963,yy=35632,xy=35633,el=3553,by=34067,_y=2884,Sy=3042,wy=3024,Ty=2960,Ay=2929,Ey=3089,Py=32823,Cy=32926,ky=32928,Pa=5126,$i=35664,Ui=35665,ji=35666,Ca=5124,Xi=35667,Hi=35668,qi=35669,ka=35670,Wi=35671,Yi=35672,Zi=35673,Dr=35674,Mr=35675,Or=35676,Gr=35678,Nr=35680,Fa=4,Br=1028,Bn=1029,tl=2304,La=2305,Fy=32775,Ly=32776,zy=519,bn=7680,nl=0,rl=1,il=32774,Iy=513,ol=36160,Ry=36064,rn={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},al=["constant color, constant alpha","one minus constant color, constant alpha","constant color, one minus constant alpha","one minus constant color, one minus constant alpha","constant alpha, constant color","constant alpha, one minus constant color","one minus constant alpha, constant color","one minus constant alpha, one minus constant color"],lr={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},_n={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},sl={frag:yy,vert:xy},za={cw:tl,ccw:La};function Qi(a){return Array.isArray(a)||n(a)||Qt(a)}function ul(a){return a.sort(function(h,_){return h===dn?-1:_===dn?1:h<_?-1:1})}function bt(a,h,_,R){this.thisDep=a,this.contextDep=h,this.propDep=_,this.append=R}function Sn(a){return a&&!(a.thisDep||a.contextDep||a.propDep)}function dt(a){return new bt(!1,!1,!1,a)}function Ft(a,h){var _=a.type;if(_===ca){var R=a.data.length;return new bt(!0,R>=1,R>=2,h)}else if(_===Gi){var U=a.data;return new bt(U.thisDep,U.contextDep,U.propDep,h)}else{if(_===Rf)return new bt(!1,!1,!1,h);if(_===Df){for(var I=!1,N=!1,Q=!1,Y=0;Y<a.data.length;++Y){var ne=a.data[Y];if(ne.type===ha)Q=!0;else if(ne.type===da)N=!0;else if(ne.type===ma)I=!0;else if(ne.type===ca){I=!0;var ie=ne.data;ie>=1&&(N=!0),ie>=2&&(Q=!0)}else ne.type===Gi&&(I=I||ne.data.thisDep,N=N||ne.data.contextDep,Q=Q||ne.data.propDep)}return new bt(I,N,Q,h)}else return new bt(_===ma,_===da,_===ha,h)}}var fl=new bt(!1,!1,!1,function(){});function Dy(a,h,_,R,U,I,N,Q,Y,ne,ie,re,ue,K,te){var C=ne.Record,O={add:32774,subtract:32778,"reverse subtract":32779};_.ext_blend_minmax&&(O.min=Fy,O.max=Ly);var ee=_.angle_instanced_arrays,ge=_.webgl_draw_buffers,q=_.oes_vertex_array_object,pe={dirty:!0,profile:te.profile},de={},Ce=[],j={},$={};function be(m){return m.replace(".","_")}function fe(m,c,w){var P=be(m);Ce.push(m),de[P]=pe[P]=!!w,j[P]=c}function J(m,c,w){var P=be(m);Ce.push(m),Array.isArray(w)?(pe[P]=w.slice(),de[P]=w.slice()):pe[P]=de[P]=w,$[P]=c}fe(Mf,wy),fe(Of,Sy),J(Gf,"blendColor",[0,0,0,0]),J(pa,"blendEquationSeparate",[il,il]),J(va,"blendFuncSeparate",[rl,nl,rl,nl]),fe(Nf,Ay,!0),J(Bf,"depthFunc",Iy),J(Vf,"depthRange",[0,1]),J($f,"depthMask",!0),J(ga,ga,[!0,!0,!0,!0]),fe(Uf,_y),J(jf,"cullFace",Bn),J(ya,ya,La),J(xa,xa,1),fe(Xf,Py),J(ba,"polygonOffset",[0,0]),fe(Hf,Cy),fe(qf,ky),J(_a,"sampleCoverage",[1,!1]),fe(Wf,Ty),J(Yf,"stencilMask",-1),J(Sa,"stencilFunc",[zy,0,-1]),J(wa,"stencilOpSeparate",[Br,bn,bn,bn]),J(Fr,"stencilOpSeparate",[Bn,bn,bn,bn]),fe(Zf,Ey),J(Ni,"scissor",[0,0,a.drawingBufferWidth,a.drawingBufferHeight]),J(dn,dn,[0,0,a.drawingBufferWidth,a.drawingBufferHeight]);var le={gl:a,context:ue,strings:h,next:de,current:pe,draw:re,elements:I,buffer:U,shader:ie,attributes:ne.state,vao:ne,uniforms:Y,framebuffer:Q,extensions:_,timer:K,isBufferArgs:Qi},he={primTypes:yn,compareFuncs:lr,blendFuncs:rn,blendEquations:O,stencilOps:_n,glTypes:Ln,orientationType:za};d.optional(function(){le.isArrayLike=at}),ge&&(he.backBuffer=[Bn],he.drawBuffer=Ot(R.maxDrawbuffers,function(m){return m===0?[0]:Ot(m,function(c){return Ry+c})}));var Oe=0;function De(){var m=my(),c=m.link,w=m.global;m.id=Oe++,m.batchId="0";var P=c(le),k=m.shared={props:"a0"};Object.keys(le).forEach(function(x){k[x]=w.def(P,".",x)}),d.optional(function(){m.CHECK=c(d),m.commandStr=d.guessCommand(),m.command=c(m.commandStr),m.assert=function(x,g,L){x("if(!(",g,"))",this.CHECK,".commandRaise(",c(L),",",this.command,");")},he.invalidBlendCombinations=al});var A=m.next={},T=m.current={};Object.keys($).forEach(function(x){Array.isArray(pe[x])&&(A[x]=w.def(k.next,".",x),T[x]=w.def(k.current,".",x))});var E=m.constants={};Object.keys(he).forEach(function(x){E[x]=w.def(JSON.stringify(he[x]))}),m.invoke=function(x,g){switch(g.type){case ca:var L=["this",k.context,k.props,m.batchId];return x.def(c(g.data),".call(",L.slice(0,Math.max(g.data.length+1,4)),")");case ha:return x.def(k.props,g.data);case da:return x.def(k.context,g.data);case ma:return x.def("this",g.data);case Gi:return g.data.append(m,x),g.data.ref;case Rf:return g.data.toString();case Df:return g.data.map(function(F){return m.invoke(x,F)})}},m.attribCache={};var p={};return m.scopeAttrib=function(x){var g=h.id(x);if(g in p)return p[g];var L=ne.scope[g];L||(L=ne.scope[g]=new C);var F=p[g]=c(L);return F},m}function me(m){var c=m.static,w=m.dynamic,P;if(Lr in c){var k=!!c[Lr];P=dt(function(T,E){return k}),P.enable=k}else if(Lr in w){var A=w[Lr];P=Ft(A,function(T,E){return T.invoke(E,A)})}return P}function ve(m,c){var w=m.static,P=m.dynamic;if(Mn in w){var k=w[Mn];return k?(k=Q.getFramebuffer(k),d.command(k,"invalid framebuffer object"),dt(function(T,E){var p=T.link(k),x=T.shared;E.set(x.framebuffer,".next",p);var g=x.context;return E.set(g,"."+sr,p+".width"),E.set(g,"."+ur,p+".height"),p})):dt(function(T,E){var p=T.shared;E.set(p.framebuffer,".next","null");var x=p.context;return E.set(x,"."+sr,x+"."+Kf),E.set(x,"."+ur,x+"."+Jf),"null"})}else if(Mn in P){var A=P[Mn];return Ft(A,function(T,E){var p=T.invoke(E,A),x=T.shared,g=x.framebuffer,L=E.def(g,".getFramebuffer(",p,")");d.optional(function(){T.assert(E,"!"+p+"||"+L,"invalid framebuffer object")}),E.set(g,".next",L);var F=x.context;return E.set(F,"."+sr,L+"?"+L+".width:"+F+"."+Kf),E.set(F,"."+ur,L+"?"+L+".height:"+F+"."+Jf),L})}else return null}function ze(m,c,w){var P=m.static,k=m.dynamic;function A(p){if(p in P){var x=P[p];d.commandType(x,"object","invalid "+p,w.commandStr);var g=!0,L=x.x|0,F=x.y|0,V,X;return"width"in x?(V=x.width|0,d.command(V>=0,"invalid "+p,w.commandStr)):g=!1,"height"in x?(X=x.height|0,d.command(X>=0,"invalid "+p,w.commandStr)):g=!1,new bt(!g&&c&&c.thisDep,!g&&c&&c.contextDep,!g&&c&&c.propDep,function(Ee,ye){var H=Ee.shared.context,B=V;"width"in x||(B=ye.def(H,".",sr,"-",L));var Te=X;return"height"in x||(Te=ye.def(H,".",ur,"-",F)),[L,F,B,Te]})}else if(p in k){var se=k[p],Re=Ft(se,function(Ee,ye){var H=Ee.invoke(ye,se);d.optional(function(){Ee.assert(ye,H+"&&typeof "+H+'==="object"',"invalid "+p)});var B=Ee.shared.context,Te=ye.def(H,".x|0"),_e=ye.def(H,".y|0"),Ie=ye.def('"width" in ',H,"?",H,".width|0:","(",B,".",sr,"-",Te,")"),Je=ye.def('"height" in ',H,"?",H,".height|0:","(",B,".",ur,"-",_e,")");return d.optional(function(){Ee.assert(ye,Ie+">=0&&"+Je+">=0","invalid "+p)}),[Te,_e,Ie,Je]});return c&&(Re.thisDep=Re.thisDep||c.thisDep,Re.contextDep=Re.contextDep||c.contextDep,Re.propDep=Re.propDep||c.propDep),Re}else return c?new bt(c.thisDep,c.contextDep,c.propDep,function(Ee,ye){var H=Ee.shared.context;return[0,0,ye.def(H,".",sr),ye.def(H,".",ur)]}):null}var T=A(dn);if(T){var E=T;T=new bt(T.thisDep,T.contextDep,T.propDep,function(p,x){var g=E.append(p,x),L=p.shared.context;return x.set(L,"."+py,g[2]),x.set(L,"."+vy,g[3]),g})}return{viewport:T,scissor_box:A(Ni)}}function Ge(m,c){var w=m.static,P=typeof w[Ir]=="string"&&typeof w[zr]=="string";if(P){if(Object.keys(c.dynamic).length>0)return null;var k=c.static,A=Object.keys(k);if(A.length>0&&typeof k[A[0]]=="number"){for(var T=[],E=0;E<A.length;++E)d(typeof k[A[E]]=="number","must specify all vertex attribute locations when using vaos"),T.push([k[A[E]]|0,A[E]]);return T}}return null}function qe(m,c,w){var P=m.static,k=m.dynamic;function A(g){if(g in P){var L=h.id(P[g]);d.optional(function(){ie.shader(sl[g],L,d.guessCommand())});var F=dt(function(){return L});return F.id=L,F}else if(g in k){var V=k[g];return Ft(V,function(X,se){var Re=X.invoke(se,V),Ee=se.def(X.shared.strings,".id(",Re,")");return d.optional(function(){se(X.shared.shader,".shader(",sl[g],",",Ee,",",X.command,");")}),Ee})}return null}var T=A(Ir),E=A(zr),p=null,x;return Sn(T)&&Sn(E)?(p=ie.program(E.id,T.id,null,w),x=dt(function(g,L){return g.link(p)})):x=new bt(T&&T.thisDep||E&&E.thisDep,T&&T.contextDep||E&&E.contextDep,T&&T.propDep||E&&E.propDep,function(g,L){var F=g.shared.shader,V;T?V=T.append(g,L):V=L.def(F,".",Ir);var X;E?X=E.append(g,L):X=L.def(F,".",zr);var se=F+".program("+X+","+V;return d.optional(function(){se+=","+g.command}),L.def(se+")")}),{frag:T,vert:E,progVar:x,program:p}}function st(m,c){var w=m.static,P=m.dynamic,k={},A=!1;function T(){if(Rr in w){var ye=w[Rr];return ye!==null&&ne.getVAO(ye)===null&&(ye=ne.createVAO(ye)),A=!0,k.vao=ye,dt(function(B){var Te=ne.getVAO(ye);return Te?B.link(Te):"null"})}else if(Rr in P){A=!0;var H=P[Rr];return Ft(H,function(B,Te){var _e=B.invoke(Te,H);return Te.def(B.shared.vao+".getVAO("+_e+")")})}return null}var E=T(),p=!1;function x(){if(On in w){var ye=w[On];if(k.elements=ye,Qi(ye)){var H=k.elements=I.create(ye,!0);ye=I.getElements(H),p=!0}else ye&&(ye=I.getElements(ye),p=!0,d.command(ye,"invalid elements",c.commandStr));var B=dt(function(_e,Ie){if(ye){var Je=_e.link(ye);return _e.ELEMENTS=Je,Je}return _e.ELEMENTS=null,null});return B.value=ye,B}else if(On in P){p=!0;var Te=P[On];return Ft(Te,function(_e,Ie){var Je=_e.shared,Pt=Je.isBufferArgs,$n=Je.elements,mn=_e.invoke(Ie,Te),an=Ie.def("null"),wn=Ie.def(Pt,"(",mn,")"),Un=_e.cond(wn).then(an,"=",$n,".createStream(",mn,");").else(an,"=",$n,".getElements(",mn,");");return d.optional(function(){_e.assert(Un.else,"!"+mn+"||"+an,"invalid elements")}),Ie.entry(Un),Ie.exit(_e.cond(wn).then($n,".destroyStream(",an,");")),_e.ELEMENTS=an,an})}else if(A)return new bt(E.thisDep,E.contextDep,E.propDep,function(_e,Ie){return Ie.def(_e.shared.vao+".currentVAO?"+_e.shared.elements+".getElements("+_e.shared.vao+".currentVAO.elements):null")});return null}var g=x();function L(){if(Gn in w){var ye=w[Gn];return k.primitive=ye,d.commandParameter(ye,yn,"invalid primitve",c.commandStr),dt(function(B,Te){return yn[ye]})}else if(Gn in P){var H=P[Gn];return Ft(H,function(B,Te){var _e=B.constants.primTypes,Ie=B.invoke(Te,H);return d.optional(function(){B.assert(Te,Ie+" in "+_e,"invalid primitive, must be one of "+Object.keys(yn))}),Te.def(_e,"[",Ie,"]")})}else{if(p)return Sn(g)?g.value?dt(function(B,Te){return Te.def(B.ELEMENTS,".primType")}):dt(function(){return Fa}):new bt(g.thisDep,g.contextDep,g.propDep,function(B,Te){var _e=B.ELEMENTS;return Te.def(_e,"?",_e,".primType:",Fa)});if(A)return new bt(E.thisDep,E.contextDep,E.propDep,function(B,Te){return Te.def(B.shared.vao+".currentVAO?"+B.shared.vao+".currentVAO.primitive:"+Fa)})}return null}function F(ye,H){if(ye in w){var B=w[ye]|0;return H?k.offset=B:k.instances=B,d.command(!H||B>=0,"invalid "+ye,c.commandStr),dt(function(_e,Ie){return H&&(_e.OFFSET=B),B})}else if(ye in P){var Te=P[ye];return Ft(Te,function(_e,Ie){var Je=_e.invoke(Ie,Te);return H&&(_e.OFFSET=Je,d.optional(function(){_e.assert(Ie,Je+">=0","invalid "+ye)})),Je})}else if(H){if(p)return dt(function(_e,Ie){return _e.OFFSET=0,0});if(A)return new bt(E.thisDep,E.contextDep,E.propDep,function(_e,Ie){return Ie.def(_e.shared.vao+".currentVAO?"+_e.shared.vao+".currentVAO.offset:0")})}else if(A)return new bt(E.thisDep,E.contextDep,E.propDep,function(_e,Ie){return Ie.def(_e.shared.vao+".currentVAO?"+_e.shared.vao+".currentVAO.instances:-1")});return null}var V=F(Bi,!0);function X(){if(Nn in w){var ye=w[Nn]|0;return k.count=ye,d.command(typeof ye=="number"&&ye>=0,"invalid vertex count",c.commandStr),dt(function(){return ye})}else if(Nn in P){var H=P[Nn];return Ft(H,function(Ie,Je){var Pt=Ie.invoke(Je,H);return d.optional(function(){Ie.assert(Je,"typeof "+Pt+'==="number"&&'+Pt+">=0&&"+Pt+"===("+Pt+"|0)","invalid vertex count")}),Pt})}else if(p)if(Sn(g)){if(g)return V?new bt(V.thisDep,V.contextDep,V.propDep,function(Ie,Je){var Pt=Je.def(Ie.ELEMENTS,".vertCount-",Ie.OFFSET);return d.optional(function(){Ie.assert(Je,Pt+">=0","invalid vertex offset/element buffer too small")}),Pt}):dt(function(Ie,Je){return Je.def(Ie.ELEMENTS,".vertCount")});var B=dt(function(){return-1});return d.optional(function(){B.MISSING=!0}),B}else{var Te=new bt(g.thisDep||V.thisDep,g.contextDep||V.contextDep,g.propDep||V.propDep,function(Ie,Je){var Pt=Ie.ELEMENTS;return Ie.OFFSET?Je.def(Pt,"?",Pt,".vertCount-",Ie.OFFSET,":-1"):Je.def(Pt,"?",Pt,".vertCount:-1")});return d.optional(function(){Te.DYNAMIC=!0}),Te}else if(A){var _e=new bt(E.thisDep,E.contextDep,E.propDep,function(Ie,Je){return Je.def(Ie.shared.vao,".currentVAO?",Ie.shared.vao,".currentVAO.count:-1")});return _e}return null}var se=L(),Re=X(),Ee=F(Vi,!1);return{elements:g,primitive:se,count:Re,instances:Ee,offset:V,vao:E,vaoActive:A,elementsActive:p,static:k}}function ut(m,c){var w=m.static,P=m.dynamic,k={};return Ce.forEach(function(A){var T=be(A);function E(p,x){if(A in w){var g=p(w[A]);k[T]=dt(function(){return g})}else if(A in P){var L=P[A];k[T]=Ft(L,function(F,V){return x(F,V,F.invoke(V,L))})}}switch(A){case Uf:case Of:case Mf:case Wf:case Nf:case Zf:case Xf:case Hf:case qf:case $f:return E(function(p){return d.commandType(p,"boolean",A,c.commandStr),p},function(p,x,g){return d.optional(function(){p.assert(x,"typeof "+g+'==="boolean"',"invalid flag "+A,p.commandStr)}),g});case Bf:return E(function(p){return d.commandParameter(p,lr,"invalid "+A,c.commandStr),lr[p]},function(p,x,g){var L=p.constants.compareFuncs;return d.optional(function(){p.assert(x,g+" in "+L,"invalid "+A+", must be one of "+Object.keys(lr))}),x.def(L,"[",g,"]")});case Vf:return E(function(p){return d.command(at(p)&&p.length===2&&typeof p[0]=="number"&&typeof p[1]=="number"&&p[0]<=p[1],"depth range is 2d array",c.commandStr),p},function(p,x,g){d.optional(function(){p.assert(x,p.shared.isArrayLike+"("+g+")&&"+g+".length===2&&typeof "+g+'[0]==="number"&&typeof '+g+'[1]==="number"&&'+g+"[0]<="+g+"[1]","depth range must be a 2d array")});var L=x.def("+",g,"[0]"),F=x.def("+",g,"[1]");return[L,F]});case va:return E(function(p){d.commandType(p,"object","blend.func",c.commandStr);var x="srcRGB"in p?p.srcRGB:p.src,g="srcAlpha"in p?p.srcAlpha:p.src,L="dstRGB"in p?p.dstRGB:p.dst,F="dstAlpha"in p?p.dstAlpha:p.dst;return d.commandParameter(x,rn,T+".srcRGB",c.commandStr),d.commandParameter(g,rn,T+".srcAlpha",c.commandStr),d.commandParameter(L,rn,T+".dstRGB",c.commandStr),d.commandParameter(F,rn,T+".dstAlpha",c.commandStr),d.command(al.indexOf(x+", "+L)===-1,"unallowed blending combination (srcRGB, dstRGB) = ("+x+", "+L+")",c.commandStr),[rn[x],rn[L],rn[g],rn[F]]},function(p,x,g){var L=p.constants.blendFuncs;d.optional(function(){p.assert(x,g+"&&typeof "+g+'==="object"',"invalid blend func, must be an object")});function F(H,B){var Te=x.def('"',H,B,'" in ',g,"?",g,".",H,B,":",g,".",H);return d.optional(function(){p.assert(x,Te+" in "+L,"invalid "+A+"."+H+B+", must be one of "+Object.keys(rn))}),Te}var V=F("src","RGB"),X=F("dst","RGB");d.optional(function(){var H=p.constants.invalidBlendCombinations;p.assert(x,H+".indexOf("+V+'+", "+'+X+") === -1 ","unallowed blending combination for (srcRGB, dstRGB)")});var se=x.def(L,"[",V,"]"),Re=x.def(L,"[",F("src","Alpha"),"]"),Ee=x.def(L,"[",X,"]"),ye=x.def(L,"[",F("dst","Alpha"),"]");return[se,Ee,Re,ye]});case pa:return E(function(p){if(typeof p=="string")return d.commandParameter(p,O,"invalid "+A,c.commandStr),[O[p],O[p]];if(typeof p=="object")return d.commandParameter(p.rgb,O,A+".rgb",c.commandStr),d.commandParameter(p.alpha,O,A+".alpha",c.commandStr),[O[p.rgb],O[p.alpha]];d.commandRaise("invalid blend.equation",c.commandStr)},function(p,x,g){var L=p.constants.blendEquations,F=x.def(),V=x.def(),X=p.cond("typeof ",g,'==="string"');return d.optional(function(){function se(Re,Ee,ye){p.assert(Re,ye+" in "+L,"invalid "+Ee+", must be one of "+Object.keys(O))}se(X.then,A,g),p.assert(X.else,g+"&&typeof "+g+'==="object"',"invalid "+A),se(X.else,A+".rgb",g+".rgb"),se(X.else,A+".alpha",g+".alpha")}),X.then(F,"=",V,"=",L,"[",g,"];"),X.else(F,"=",L,"[",g,".rgb];",V,"=",L,"[",g,".alpha];"),x(X),[F,V]});case Gf:return E(function(p){return d.command(at(p)&&p.length===4,"blend.color must be a 4d array",c.commandStr),Ot(4,function(x){return+p[x]})},function(p,x,g){return d.optional(function(){p.assert(x,p.shared.isArrayLike+"("+g+")&&"+g+".length===4","blend.color must be a 4d array")}),Ot(4,function(L){return x.def("+",g,"[",L,"]")})});case Yf:return E(function(p){return d.commandType(p,"number",T,c.commandStr),p|0},function(p,x,g){return d.optional(function(){p.assert(x,"typeof "+g+'==="number"',"invalid stencil.mask")}),x.def(g,"|0")});case Sa:return E(function(p){d.commandType(p,"object",T,c.commandStr);var x=p.cmp||"keep",g=p.ref||0,L="mask"in p?p.mask:-1;return d.commandParameter(x,lr,A+".cmp",c.commandStr),d.commandType(g,"number",A+".ref",c.commandStr),d.commandType(L,"number",A+".mask",c.commandStr),[lr[x],g,L]},function(p,x,g){var L=p.constants.compareFuncs;d.optional(function(){function se(){p.assert(x,Array.prototype.join.call(arguments,""),"invalid stencil.func")}se(g+"&&typeof ",g,'==="object"'),se('!("cmp" in ',g,")||(",g,".cmp in ",L,")")});var F=x.def('"cmp" in ',g,"?",L,"[",g,".cmp]",":",bn),V=x.def(g,".ref|0"),X=x.def('"mask" in ',g,"?",g,".mask|0:-1");return[F,V,X]});case wa:case Fr:return E(function(p){d.commandType(p,"object",T,c.commandStr);var x=p.fail||"keep",g=p.zfail||"keep",L=p.zpass||"keep";return d.commandParameter(x,_n,A+".fail",c.commandStr),d.commandParameter(g,_n,A+".zfail",c.commandStr),d.commandParameter(L,_n,A+".zpass",c.commandStr),[A===Fr?Bn:Br,_n[x],_n[g],_n[L]]},function(p,x,g){var L=p.constants.stencilOps;d.optional(function(){p.assert(x,g+"&&typeof "+g+'==="object"',"invalid "+A)});function F(V){return d.optional(function(){p.assert(x,'!("'+V+'" in '+g+")||("+g+"."+V+" in "+L+")","invalid "+A+"."+V+", must be one of "+Object.keys(_n))}),x.def('"',V,'" in ',g,"?",L,"[",g,".",V,"]:",bn)}return[A===Fr?Bn:Br,F("fail"),F("zfail"),F("zpass")]});case ba:return E(function(p){d.commandType(p,"object",T,c.commandStr);var x=p.factor|0,g=p.units|0;return d.commandType(x,"number",T+".factor",c.commandStr),d.commandType(g,"number",T+".units",c.commandStr),[x,g]},function(p,x,g){d.optional(function(){p.assert(x,g+"&&typeof "+g+'==="object"',"invalid "+A)});var L=x.def(g,".factor|0"),F=x.def(g,".units|0");return[L,F]});case jf:return E(function(p){var x=0;return p==="front"?x=Br:p==="back"&&(x=Bn),d.command(!!x,T,c.commandStr),x},function(p,x,g){return d.optional(function(){p.assert(x,g+'==="front"||'+g+'==="back"',"invalid cull.face")}),x.def(g,'==="front"?',Br,":",Bn)});case xa:return E(function(p){return d.command(typeof p=="number"&&p>=R.lineWidthDims[0]&&p<=R.lineWidthDims[1],"invalid line width, must be a positive number between "+R.lineWidthDims[0]+" and "+R.lineWidthDims[1],c.commandStr),p},function(p,x,g){return d.optional(function(){p.assert(x,"typeof "+g+'==="number"&&'+g+">="+R.lineWidthDims[0]+"&&"+g+"<="+R.lineWidthDims[1],"invalid line width")}),g});case ya:return E(function(p){return d.commandParameter(p,za,T,c.commandStr),za[p]},function(p,x,g){return d.optional(function(){p.assert(x,g+'==="cw"||'+g+'==="ccw"',"invalid frontFace, must be one of cw,ccw")}),x.def(g+'==="cw"?'+tl+":"+La)});case ga:return E(function(p){return d.command(at(p)&&p.length===4,"color.mask must be length 4 array",c.commandStr),p.map(function(x){return!!x})},function(p,x,g){return d.optional(function(){p.assert(x,p.shared.isArrayLike+"("+g+")&&"+g+".length===4","invalid color.mask")}),Ot(4,function(L){return"!!"+g+"["+L+"]"})});case _a:return E(function(p){d.command(typeof p=="object"&&p,T,c.commandStr);var x="value"in p?p.value:1,g=!!p.invert;return d.command(typeof x=="number"&&x>=0&&x<=1,"sample.coverage.value must be a number between 0 and 1",c.commandStr),[x,g]},function(p,x,g){d.optional(function(){p.assert(x,g+"&&typeof "+g+'==="object"',"invalid sample.coverage")});var L=x.def('"value" in ',g,"?+",g,".value:1"),F=x.def("!!",g,".invert");return[L,F]})}}),k}function Ze(m,c){var w=m.static,P=m.dynamic,k={};return Object.keys(w).forEach(function(A){var T=w[A],E;if(typeof T=="number"||typeof T=="boolean")E=dt(function(){return T});else if(typeof T=="function"){var p=T._reglType;p==="texture2d"||p==="textureCube"?E=dt(function(x){return x.link(T)}):p==="framebuffer"||p==="framebufferCube"?(d.command(T.color.length>0,'missing color attachment for framebuffer sent to uniform "'+A+'"',c.commandStr),E=dt(function(x){return x.link(T.color[0])})):d.commandRaise('invalid data for uniform "'+A+'"',c.commandStr)}else at(T)?E=dt(function(x){var g=x.global.def("[",Ot(T.length,function(L){return d.command(typeof T[L]=="number"||typeof T[L]=="boolean","invalid uniform "+A,x.commandStr),T[L]}),"]");return g}):d.commandRaise('invalid or missing data for uniform "'+A+'"',c.commandStr);E.value=T,k[A]=E}),Object.keys(P).forEach(function(A){var T=P[A];k[A]=Ft(T,function(E,p){return E.invoke(p,T)})}),k}function vt(m,c){var w=m.static,P=m.dynamic,k={};return Object.keys(w).forEach(function(A){var T=w[A],E=h.id(A),p=new C;if(Qi(T))p.state=ar,p.buffer=U.getBuffer(U.create(T,fr,!1,!0)),p.type=0;else{var x=U.getBuffer(T);if(x)p.state=ar,p.buffer=x,p.type=0;else if(d.command(typeof T=="object"&&T,"invalid data for attribute "+A,c.commandStr),"constant"in T){var g=T.constant;p.buffer="null",p.state=la,typeof g=="number"?p.x=g:(d.command(at(g)&&g.length>0&&g.length<=4,"invalid constant for attribute "+A,c.commandStr),or.forEach(function(Ee,ye){ye<g.length&&(p[Ee]=g[ye])}))}else{Qi(T.buffer)?x=U.getBuffer(U.create(T.buffer,fr,!1,!0)):x=U.getBuffer(T.buffer),d.command(!!x,'missing buffer for attribute "'+A+'"',c.commandStr);var L=T.offset|0;d.command(L>=0,'invalid offset for attribute "'+A+'"',c.commandStr);var F=T.stride|0;d.command(F>=0&&F<256,'invalid stride for attribute "'+A+'", must be integer betweeen [0, 255]',c.commandStr);var V=T.size|0;d.command(!("size"in T)||V>0&&V<=4,'invalid size for attribute "'+A+'", must be 1,2,3,4',c.commandStr);var X=!!T.normalized,se=0;"type"in T&&(d.commandParameter(T.type,Ln,"invalid type for attribute "+A,c.commandStr),se=Ln[T.type]);var Re=T.divisor|0;d.optional(function(){"divisor"in T&&(d.command(Re===0||ee,'cannot specify divisor for attribute "'+A+'", instancing not supported',c.commandStr),d.command(Re>=0,'invalid divisor for attribute "'+A+'"',c.commandStr));var Ee=c.commandStr,ye=["buffer","offset","divisor","normalized","type","size","stride"];Object.keys(T).forEach(function(H){d.command(ye.indexOf(H)>=0,'unknown parameter "'+H+'" for attribute pointer "'+A+'" (valid parameters are '+ye+")",Ee)})}),p.buffer=x,p.state=ar,p.size=V,p.normalized=X,p.type=se||x.dtype,p.offset=L,p.stride=F,p.divisor=Re}}k[A]=dt(function(Ee,ye){var H=Ee.attribCache;if(E in H)return H[E];var B={isStream:!1};return Object.keys(p).forEach(function(Te){B[Te]=p[Te]}),p.buffer&&(B.buffer=Ee.link(p.buffer),B.type=B.type||B.buffer+".dtype"),H[E]=B,B})}),Object.keys(P).forEach(function(A){var T=P[A];function E(p,x){var g=p.invoke(x,T),L=p.shared,F=p.constants,V=L.isBufferArgs,X=L.buffer;d.optional(function(){p.assert(x,g+"&&(typeof "+g+'==="object"||typeof '+g+'==="function")&&('+V+"("+g+")||"+X+".getBuffer("+g+")||"+X+".getBuffer("+g+".buffer)||"+V+"("+g+'.buffer)||("constant" in '+g+"&&(typeof "+g+'.constant==="number"||'+L.isArrayLike+"("+g+".constant))))",'invalid dynamic attribute "'+A+'"')});var se={isStream:x.def(!1)},Re=new C;Re.state=ar,Object.keys(Re).forEach(function(B){se[B]=x.def(""+Re[B])});var Ee=se.buffer,ye=se.type;x("if(",V,"(",g,")){",se.isStream,"=true;",Ee,"=",X,".createStream(",fr,",",g,");",ye,"=",Ee,".dtype;","}else{",Ee,"=",X,".getBuffer(",g,");","if(",Ee,"){",ye,"=",Ee,".dtype;",'}else if("constant" in ',g,"){",se.state,"=",la,";","if(typeof "+g+'.constant === "number"){',se[or[0]],"=",g,".constant;",or.slice(1).map(function(B){return se[B]}).join("="),"=0;","}else{",or.map(function(B,Te){return se[B]+"="+g+".constant.length>"+Te+"?"+g+".constant["+Te+"]:0;"}).join(""),"}}else{","if(",V,"(",g,".buffer)){",Ee,"=",X,".createStream(",fr,",",g,".buffer);","}else{",Ee,"=",X,".getBuffer(",g,".buffer);","}",ye,'="type" in ',g,"?",F.glTypes,"[",g,".type]:",Ee,".dtype;",se.normalized,"=!!",g,".normalized;");function H(B){x(se[B],"=",g,".",B,"|0;")}return H("size"),H("offset"),H("stride"),H("divisor"),x("}}"),x.exit("if(",se.isStream,"){",X,".destroyStream(",Ee,");","}"),se}k[A]=Ft(T,E)}),k}function ot(m){var c=m.static,w=m.dynamic,P={};return Object.keys(c).forEach(function(k){var A=c[k];P[k]=dt(function(T,E){return typeof A=="number"||typeof A=="boolean"?""+A:T.link(A)})}),Object.keys(w).forEach(function(k){var A=w[k];P[k]=Ft(A,function(T,E){return T.invoke(E,A)})}),P}function mt(m,c,w,P,k){var A=m.static,T=m.dynamic;d.optional(function(){var H=[Mn,zr,Ir,On,Gn,Bi,Nn,Vi,Lr,Rr].concat(Ce);function B(Te){Object.keys(Te).forEach(function(_e){d.command(H.indexOf(_e)>=0,'unknown parameter "'+_e+'"',k.commandStr)})}B(A),B(T)});var E=Ge(m,c),p=ve(m),x=ze(m,p,k),g=st(m,k),L=ut(m,k),F=qe(m,k,E);function V(H){var B=x[H];B&&(L[H]=B)}V(dn),V(be(Ni));var X=Object.keys(L).length>0,se={framebuffer:p,draw:g,shader:F,state:L,dirty:X,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(se.profile=me(m),se.uniforms=Ze(w,k),se.drawVAO=se.scopeVAO=g.vao,!se.drawVAO&&F.program&&!E&&_.angle_instanced_arrays&&g.static.elements){var Re=!0,Ee=F.program.attributes.map(function(H){var B=c.static[H];return Re=Re&&!!B,B});if(Re&&Ee.length>0){var ye=ne.getVAO(ne.createVAO({attributes:Ee,elements:g.static.elements}));se.drawVAO=new bt(null,null,null,function(H,B){return H.link(ye)}),se.useVAO=!0}}return E?se.useVAO=!0:se.attributes=vt(c,k),se.context=ot(P),se}function gt(m,c,w){var P=m.shared,k=P.context,A=m.scope();Object.keys(w).forEach(function(T){c.save(k,"."+T);var E=w[T],p=E.append(m,c);Array.isArray(p)?A(k,".",T,"=[",p.join(),"];"):A(k,".",T,"=",p,";")}),c(A)}function yt(m,c,w,P){var k=m.shared,A=k.gl,T=k.framebuffer,E;ge&&(E=c.def(k.extensions,".webgl_draw_buffers"));var p=m.constants,x=p.drawBuffer,g=p.backBuffer,L;w?L=w.append(m,c):L=c.def(T,".next"),P||c("if(",L,"!==",T,".cur){"),c("if(",L,"){",A,".bindFramebuffer(",ol,",",L,".framebuffer);"),ge&&c(E,".drawBuffersWEBGL(",x,"[",L,".colorAttachments.length]);"),c("}else{",A,".bindFramebuffer(",ol,",null);"),ge&&c(E,".drawBuffersWEBGL(",g,");"),c("}",T,".cur=",L,";"),P||c("}")}function St(m,c,w){var P=m.shared,k=P.gl,A=m.current,T=m.next,E=P.current,p=P.next,x=m.cond(E,".dirty");Ce.forEach(function(g){var L=be(g);if(!(L in w.state)){var F,V;if(L in T){F=T[L],V=A[L];var X=Ot(pe[L].length,function(Re){return x.def(F,"[",Re,"]")});x(m.cond(X.map(function(Re,Ee){return Re+"!=="+V+"["+Ee+"]"}).join("||")).then(k,".",$[L],"(",X,");",X.map(function(Re,Ee){return V+"["+Ee+"]="+Re}).join(";"),";"))}else{F=x.def(p,".",L);var se=m.cond(F,"!==",E,".",L);x(se),L in j?se(m.cond(F).then(k,".enable(",j[L],");").else(k,".disable(",j[L],");"),E,".",L,"=",F,";"):se(k,".",$[L],"(",F,");",E,".",L,"=",F,";")}}}),Object.keys(w.state).length===0&&x(E,".dirty=false;"),c(x)}function At(m,c,w,P){var k=m.shared,A=m.current,T=k.current,E=k.gl;ul(Object.keys(w)).forEach(function(p){var x=w[p];if(!(P&&!P(x))){var g=x.append(m,c);if(j[p]){var L=j[p];Sn(x)?g?c(E,".enable(",L,");"):c(E,".disable(",L,");"):c(m.cond(g).then(E,".enable(",L,");").else(E,".disable(",L,");")),c(T,".",p,"=",g,";")}else if(at(g)){var F=A[p];c(E,".",$[p],"(",g,");",g.map(function(V,X){return F+"["+X+"]="+V}).join(";"),";")}else c(E,".",$[p],"(",g,");",T,".",p,"=",g,";")}})}function lt(m,c){ee&&(m.instancing=c.def(m.shared.extensions,".angle_instanced_arrays"))}function $e(m,c,w,P,k){var A=m.shared,T=m.stats,E=A.current,p=A.timer,x=w.profile;function g(){return typeof performance>"u"?"Date.now()":"performance.now()"}var L,F;function V(H){L=c.def(),H(L,"=",g(),";"),typeof k=="string"?H(T,".count+=",k,";"):H(T,".count++;"),K&&(P?(F=c.def(),H(F,"=",p,".getNumPendingQueries();")):H(p,".beginQuery(",T,");"))}function X(H){H(T,".cpuTime+=",g(),"-",L,";"),K&&(P?H(p,".pushScopeStats(",F,",",p,".getNumPendingQueries(),",T,");"):H(p,".endQuery();"))}function se(H){var B=c.def(E,".profile");c(E,".profile=",H,";"),c.exit(E,".profile=",B,";")}var Re;if(x){if(Sn(x)){x.enable?(V(c),X(c.exit),se("true")):se("false");return}Re=x.append(m,c),se(Re)}else Re=c.def(E,".profile");var Ee=m.block();V(Ee),c("if(",Re,"){",Ee,"}");var ye=m.block();X(ye),c.exit("if(",Re,"){",ye,"}")}function Et(m,c,w,P,k){var A=m.shared;function T(p){switch(p){case $i:case Xi:case Wi:return 2;case Ui:case Hi:case Yi:return 3;case ji:case qi:case Zi:return 4;default:return 1}}function E(p,x,g){var L=A.gl,F=c.def(p,".location"),V=c.def(A.attributes,"[",F,"]"),X=g.state,se=g.buffer,Re=[g.x,g.y,g.z,g.w],Ee=["buffer","normalized","offset","stride"];function ye(){c("if(!",V,".buffer){",L,".enableVertexAttribArray(",F,");}");var B=g.type,Te;if(g.size?Te=c.def(g.size,"||",x):Te=x,c("if(",V,".type!==",B,"||",V,".size!==",Te,"||",Ee.map(function(Ie){return V+"."+Ie+"!=="+g[Ie]}).join("||"),"){",L,".bindBuffer(",fr,",",se,".buffer);",L,".vertexAttribPointer(",[F,Te,B,g.normalized,g.stride,g.offset],");",V,".type=",B,";",V,".size=",Te,";",Ee.map(function(Ie){return V+"."+Ie+"="+g[Ie]+";"}).join(""),"}"),ee){var _e=g.divisor;c("if(",V,".divisor!==",_e,"){",m.instancing,".vertexAttribDivisorANGLE(",[F,_e],");",V,".divisor=",_e,";}")}}function H(){c("if(",V,".buffer){",L,".disableVertexAttribArray(",F,");",V,".buffer=null;","}if(",or.map(function(B,Te){return V+"."+B+"!=="+Re[Te]}).join("||"),"){",L,".vertexAttrib4f(",F,",",Re,");",or.map(function(B,Te){return V+"."+B+"="+Re[Te]+";"}).join(""),"}")}X===ar?ye():X===la?H():(c("if(",X,"===",ar,"){"),ye(),c("}else{"),H(),c("}"))}P.forEach(function(p){var x=p.name,g=w.attributes[x],L;if(g){if(!k(g))return;L=g.append(m,c)}else{if(!k(fl))return;var F=m.scopeAttrib(x);d.optional(function(){m.assert(c,F+".state","missing attribute "+x)}),L={},Object.keys(new C).forEach(function(V){L[V]=c.def(F,".",V)})}E(m.link(p),T(p.info.type),L)})}function Ke(m,c,w,P,k,A){for(var T=m.shared,E=T.gl,p={},x,g=0;g<P.length;++g){var L=P[g],F=L.name,V=L.info.type,X=L.info.size,se=w.uniforms[F];if(X>1){if(!se)continue;var Re=F.replace("[0]","");if(p[Re])continue;p[Re]=1}var Ee=m.link(L),ye=Ee+".location",H;if(se){if(!k(se))continue;if(Sn(se)){var B=se.value;if(d.command(B!==null&&typeof B<"u",'missing uniform "'+F+'"',m.commandStr),V===Gr||V===Nr){d.command(typeof B=="function"&&(V===Gr&&(B._reglType==="texture2d"||B._reglType==="framebuffer")||V===Nr&&(B._reglType==="textureCube"||B._reglType==="framebufferCube")),"invalid texture for uniform "+F,m.commandStr);var Te=m.link(B._texture||B.color[0]._texture);c(E,".uniform1i(",ye,",",Te+".bind());"),c.exit(Te,".unbind();")}else if(V===Dr||V===Mr||V===Or){d.optional(function(){d.command(at(B),"invalid matrix for uniform "+F,m.commandStr),d.command(V===Dr&&B.length===4||V===Mr&&B.length===9||V===Or&&B.length===16,"invalid length for matrix uniform "+F,m.commandStr)});var _e=m.global.def("new Float32Array(["+Array.prototype.slice.call(B)+"])"),Ie=2;V===Mr?Ie=3:V===Or&&(Ie=4),c(E,".uniformMatrix",Ie,"fv(",ye,",false,",_e,");")}else{switch(V){case Pa:X===1?d.commandType(B,"number","uniform "+F,m.commandStr):d.command(at(B)&&B.length===X,"uniform "+F,m.commandStr),x="1f";break;case $i:d.command(at(B)&&B.length&&B.length%2===0&&B.length<=X*2,"uniform "+F,m.commandStr),x="2f";break;case Ui:d.command(at(B)&&B.length&&B.length%3===0&&B.length<=X*3,"uniform "+F,m.commandStr),x="3f";break;case ji:d.command(at(B)&&B.length&&B.length%4===0&&B.length<=X*4,"uniform "+F,m.commandStr),x="4f";break;case ka:X===1?d.commandType(B,"boolean","uniform "+F,m.commandStr):d.command(at(B)&&B.length===X,"uniform "+F,m.commandStr),x="1i";break;case Ca:X===1?d.commandType(B,"number","uniform "+F,m.commandStr):d.command(at(B)&&B.length===X,"uniform "+F,m.commandStr),x="1i";break;case Wi:d.command(at(B)&&B.length&&B.length%2===0&&B.length<=X*2,"uniform "+F,m.commandStr),x="2i";break;case Xi:d.command(at(B)&&B.length&&B.length%2===0&&B.length<=X*2,"uniform "+F,m.commandStr),x="2i";break;case Yi:d.command(at(B)&&B.length&&B.length%3===0&&B.length<=X*3,"uniform "+F,m.commandStr),x="3i";break;case Hi:d.command(at(B)&&B.length&&B.length%3===0&&B.length<=X*3,"uniform "+F,m.commandStr),x="3i";break;case Zi:d.command(at(B)&&B.length&&B.length%4===0&&B.length<=X*4,"uniform "+F,m.commandStr),x="4i";break;case qi:d.command(at(B)&&B.length&&B.length%4===0&&B.length<=X*4,"uniform "+F,m.commandStr),x="4i";break}X>1?(x+="v",B=m.global.def("["+Array.prototype.slice.call(B)+"]")):B=at(B)?Array.prototype.slice.call(B):B,c(E,".uniform",x,"(",ye,",",B,");")}continue}else H=se.append(m,c)}else{if(!k(fl))continue;H=c.def(T.uniforms,"[",h.id(F),"]")}V===Gr?(d(!Array.isArray(H),"must specify a scalar prop for textures"),c("if(",H,"&&",H,'._reglType==="framebuffer"){',H,"=",H,".color[0];","}")):V===Nr&&(d(!Array.isArray(H),"must specify a scalar prop for cube maps"),c("if(",H,"&&",H,'._reglType==="framebufferCube"){',H,"=",H,".color[0];","}")),d.optional(function(){function Nt(Lt,Ki){m.assert(c,Lt,'bad data or missing for uniform "'+F+'". '+Ki)}function jn(Lt,Ki){Ki===1&&d(!Array.isArray(H),"must not specify an array type for uniform"),Nt("Array.isArray("+H+") && typeof "+H+'[0]===" '+Lt+'" || typeof '+H+'==="'+Lt+'"',"invalid type, expected "+Lt)}function $t(Lt,Ki,Ji){Array.isArray(H)?d(H.length&&H.length%Lt===0&&H.length<=Lt*Ji,"must have length of "+(Ji===1?"":"n * ")+Lt):Nt(T.isArrayLike+"("+H+")&&"+H+".length && "+H+".length % "+Lt+" === 0 && "+H+".length<="+Lt*Ji,"invalid vector, should have length of "+(Ji===1?"":"n * ")+Lt,m.commandStr)}function vl(Lt){d(!Array.isArray(H),"must not specify a value type"),Nt("typeof "+H+'==="function"&&'+H+'._reglType==="texture'+(Lt===el?"2d":"Cube")+'"',"invalid texture type",m.commandStr)}switch(V){case Ca:jn("number",X);break;case Xi:$t(2,"number",X);break;case Hi:$t(3,"number",X);break;case qi:$t(4,"number",X);break;case Pa:jn("number",X);break;case $i:$t(2,"number",X);break;case Ui:$t(3,"number",X);break;case ji:$t(4,"number",X);break;case ka:jn("boolean",X);break;case Wi:$t(2,"boolean",X);break;case Yi:$t(3,"boolean",X);break;case Zi:$t(4,"boolean",X);break;case Dr:$t(4,"number",X);break;case Mr:$t(9,"number",X);break;case Or:$t(16,"number",X);break;case Gr:vl(el);break;case Nr:vl(by);break}});var Je=1;switch(V){case Gr:case Nr:var Pt=c.def(H,"._texture");c(E,".uniform1i(",ye,",",Pt,".bind());"),c.exit(Pt,".unbind();");continue;case Ca:case ka:x="1i";break;case Xi:case Wi:x="2i",Je=2;break;case Hi:case Yi:x="3i",Je=3;break;case qi:case Zi:x="4i",Je=4;break;case Pa:x="1f";break;case $i:x="2f",Je=2;break;case Ui:x="3f",Je=3;break;case ji:x="4f",Je=4;break;case Dr:x="Matrix2fv";break;case Mr:x="Matrix3fv";break;case Or:x="Matrix4fv";break}if(x.indexOf("Matrix")===-1&&X>1&&(x+="v",Je=1),x.charAt(0)==="M"){c(E,".uniform",x,"(",ye,",");var $n=Math.pow(V-Dr+2,2),mn=m.global.def("new Float32Array(",$n,")");Array.isArray(H)?c("false,(",Ot($n,function(Nt){return mn+"["+Nt+"]="+H[Nt]}),",",mn,")"):c("false,(Array.isArray(",H,")||",H," instanceof Float32Array)?",H,":(",Ot($n,function(Nt){return mn+"["+Nt+"]="+H+"["+Nt+"]"}),",",mn,")"),c(");")}else if(Je>1){for(var an=[],wn=[],Un=0;Un<Je;++Un)Array.isArray(H)?wn.push(H[Un]):wn.push(c.def(H+"["+Un+"]")),A&&an.push(c.def());A&&c("if(!",m.batchId,"||",an.map(function(Nt,jn){return Nt+"!=="+wn[jn]}).join("||"),"){",an.map(function(Nt,jn){return Nt+"="+wn[jn]+";"}).join("")),c(E,".uniform",x,"(",ye,",",wn.join(","),");"),A&&c("}")}else{if(d(!Array.isArray(H),"uniform value must not be an array"),A){var pl=c.def();c("if(!",m.batchId,"||",pl,"!==",H,"){",pl,"=",H,";")}c(E,".uniform",x,"(",ye,",",H,");"),A&&c("}")}}}function Fe(m,c,w,P){var k=m.shared,A=k.gl,T=k.draw,E=P.draw;function p(){var Te=E.elements,_e,Ie=c;return Te?((Te.contextDep&&P.contextDynamic||Te.propDep)&&(Ie=w),_e=Te.append(m,Ie),E.elementsActive&&Ie("if("+_e+")"+A+".bindBuffer("+Ea+","+_e+".buffer.buffer);")):(_e=Ie.def(),Ie(_e,"=",T,".",On,";","if(",_e,"){",A,".bindBuffer(",Ea,",",_e,".buffer.buffer);}","else if(",k.vao,".currentVAO){",_e,"=",m.shared.elements+".getElements("+k.vao,".currentVAO.elements);",q?"":"if("+_e+")"+A+".bindBuffer("+Ea+","+_e+".buffer.buffer);","}")),_e}function x(){var Te=E.count,_e,Ie=c;return Te?((Te.contextDep&&P.contextDynamic||Te.propDep)&&(Ie=w),_e=Te.append(m,Ie),d.optional(function(){Te.MISSING&&m.assert(c,"false","missing vertex count"),Te.DYNAMIC&&m.assert(Ie,_e+">=0","missing vertex count")})):(_e=Ie.def(T,".",Nn),d.optional(function(){m.assert(Ie,_e+">=0","missing vertex count")})),_e}var g=p();function L(Te){var _e=E[Te];return _e?_e.contextDep&&P.contextDynamic||_e.propDep?_e.append(m,w):_e.append(m,c):c.def(T,".",Te)}var F=L(Gn),V=L(Bi),X=x();if(typeof X=="number"){if(X===0)return}else w("if(",X,"){"),w.exit("}");var se,Re;ee&&(se=L(Vi),Re=m.instancing);var Ee=g+".type",ye=E.elements&&Sn(E.elements)&&!E.vaoActive;function H(){function Te(){w(Re,".drawElementsInstancedANGLE(",[F,X,Ee,V+"<<(("+Ee+"-"+If+")>>1)",se],");")}function _e(){w(Re,".drawArraysInstancedANGLE(",[F,V,X,se],");")}g&&g!=="null"?ye?Te():(w("if(",g,"){"),Te(),w("}else{"),_e(),w("}")):_e()}function B(){function Te(){w(A+".drawElements("+[F,X,Ee,V+"<<(("+Ee+"-"+If+")>>1)"]+");")}function _e(){w(A+".drawArrays("+[F,V,X]+");")}g&&g!=="null"?ye?Te():(w("if(",g,"){"),Te(),w("}else{"),_e(),w("}")):_e()}ee&&(typeof se!="number"||se>=0)?typeof se=="string"?(w("if(",se,">0){"),H(),w("}else if(",se,"<0){"),B(),w("}")):H():B()}function We(m,c,w,P,k){var A=De(),T=A.proc("body",k);return d.optional(function(){A.commandStr=c.commandStr,A.command=A.link(c.commandStr)}),ee&&(A.instancing=T.def(A.shared.extensions,".angle_instanced_arrays")),m(A,T,w,P),A.compile().body}function Qe(m,c,w,P){lt(m,c),w.useVAO?w.drawVAO?c(m.shared.vao,".setVAO(",w.drawVAO.append(m,c),");"):c(m.shared.vao,".setVAO(",m.shared.vao,".targetVAO);"):(c(m.shared.vao,".setVAO(null);"),Et(m,c,w,P.attributes,function(){return!0})),Ke(m,c,w,P.uniforms,function(){return!0},!1),Fe(m,c,c,w)}function ct(m,c){var w=m.proc("draw",1);lt(m,w),gt(m,w,c.context),yt(m,w,c.framebuffer),St(m,w,c),At(m,w,c.state),$e(m,w,c,!1,!0);var P=c.shader.progVar.append(m,w);if(w(m.shared.gl,".useProgram(",P,".program);"),c.shader.program)Qe(m,w,c,c.shader.program);else{w(m.shared.vao,".setVAO(null);");var k=m.global.def("{}"),A=w.def(P,".id"),T=w.def(k,"[",A,"]");w(m.cond(T).then(T,".call(this,a0);").else(T,"=",k,"[",A,"]=",m.link(function(E){return We(Qe,m,c,E,1)}),"(",P,");",T,".call(this,a0);"))}Object.keys(c.state).length>0&&w(m.shared.current,".dirty=true;"),m.shared.vao&&w(m.shared.vao,".setVAO(null);")}function on(m,c,w,P){m.batchId="a1",lt(m,c);function k(){return!0}Et(m,c,w,P.attributes,k),Ke(m,c,w,P.uniforms,k,!1),Fe(m,c,c,w)}function Vn(m,c,w,P){lt(m,c);var k=w.contextDep,A=c.def(),T="a0",E="a1",p=c.def();m.shared.props=p,m.batchId=A;var x=m.scope(),g=m.scope();c(x.entry,"for(",A,"=0;",A,"<",E,";++",A,"){",p,"=",T,"[",A,"];",g,"}",x.exit);function L(Ee){return Ee.contextDep&&k||Ee.propDep}function F(Ee){return!L(Ee)}if(w.needsContext&>(m,g,w.context),w.needsFramebuffer&&yt(m,g,w.framebuffer),At(m,g,w.state,L),w.profile&&L(w.profile)&&$e(m,g,w,!1,!0),P)w.useVAO?w.drawVAO?L(w.drawVAO)?g(m.shared.vao,".setVAO(",w.drawVAO.append(m,g),");"):x(m.shared.vao,".setVAO(",w.drawVAO.append(m,x),");"):x(m.shared.vao,".setVAO(",m.shared.vao,".targetVAO);"):(x(m.shared.vao,".setVAO(null);"),Et(m,x,w,P.attributes,F),Et(m,g,w,P.attributes,L)),Ke(m,x,w,P.uniforms,F,!1),Ke(m,g,w,P.uniforms,L,!0),Fe(m,x,g,w);else{var V=m.global.def("{}"),X=w.shader.progVar.append(m,g),se=g.def(X,".id"),Re=g.def(V,"[",se,"]");g(m.shared.gl,".useProgram(",X,".program);","if(!",Re,"){",Re,"=",V,"[",se,"]=",m.link(function(Ee){return We(on,m,w,Ee,2)}),"(",X,");}",Re,".call(this,a0[",A,"],",A,");")}}function y(m,c){var w=m.proc("batch",2);m.batchId="0",lt(m,w);var P=!1,k=!0;Object.keys(c.context).forEach(function(V){P=P||c.context[V].propDep}),P||(gt(m,w,c.context),k=!1);var A=c.framebuffer,T=!1;A?(A.propDep?P=T=!0:A.contextDep&&P&&(T=!0),T||yt(m,w,A)):yt(m,w,null),c.state.viewport&&c.state.viewport.propDep&&(P=!0);function E(V){return V.contextDep&&P||V.propDep}St(m,w,c),At(m,w,c.state,function(V){return!E(V)}),(!c.profile||!E(c.profile))&&$e(m,w,c,!1,"a1"),c.contextDep=P,c.needsContext=k,c.needsFramebuffer=T;var p=c.shader.progVar;if(p.contextDep&&P||p.propDep)Vn(m,w,c,null);else{var x=p.append(m,w);if(w(m.shared.gl,".useProgram(",x,".program);"),c.shader.program)Vn(m,w,c,c.shader.program);else{w(m.shared.vao,".setVAO(null);");var g=m.global.def("{}"),L=w.def(x,".id"),F=w.def(g,"[",L,"]");w(m.cond(F).then(F,".call(this,a0,a1);").else(F,"=",g,"[",L,"]=",m.link(function(V){return We(Vn,m,c,V,2)}),"(",x,");",F,".call(this,a0,a1);"))}}Object.keys(c.state).length>0&&w(m.shared.current,".dirty=true;"),m.shared.vao&&w(m.shared.vao,".setVAO(null);")}function M(m,c){var w=m.proc("scope",3);m.batchId="a2";var P=m.shared,k=P.current;gt(m,w,c.context),c.framebuffer&&c.framebuffer.append(m,w),ul(Object.keys(c.state)).forEach(function(T){var E=c.state[T],p=E.append(m,w);at(p)?p.forEach(function(x,g){w.set(m.next[T],"["+g+"]",x)}):w.set(P.next,"."+T,p)}),$e(m,w,c,!0,!0),[On,Bi,Nn,Vi,Gn].forEach(function(T){var E=c.draw[T];E&&w.set(P.draw,"."+T,""+E.append(m,w))}),Object.keys(c.uniforms).forEach(function(T){var E=c.uniforms[T].append(m,w);Array.isArray(E)&&(E="["+E.join()+"]"),w.set(P.uniforms,"["+h.id(T)+"]",E)}),Object.keys(c.attributes).forEach(function(T){var E=c.attributes[T].append(m,w),p=m.scopeAttrib(T);Object.keys(new C).forEach(function(x){w.set(p,"."+x,E[x])})}),c.scopeVAO&&w.set(P.vao,".targetVAO",c.scopeVAO.append(m,w));function A(T){var E=c.shader[T];E&&w.set(P.shader,"."+T,E.append(m,w))}A(zr),A(Ir),Object.keys(c.state).length>0&&(w(k,".dirty=true;"),w.exit(k,".dirty=true;")),w("a1(",m.shared.context,",a0,",m.batchId,");")}function z(m){if(!(typeof m!="object"||at(m))){for(var c=Object.keys(m),w=0;w<c.length;++w)if(Mt.isDynamic(m[c[w]]))return!0;return!1}}function xe(m,c,w){var P=c.static[w];if(!P||!z(P))return;var k=m.global,A=Object.keys(P),T=!1,E=!1,p=!1,x=m.global.def("{}");A.forEach(function(L){var F=P[L];if(Mt.isDynamic(F)){typeof F=="function"&&(F=P[L]=Mt.unbox(F));var V=Ft(F,null);T=T||V.thisDep,p=p||V.propDep,E=E||V.contextDep}else{switch(k(x,".",L,"="),typeof F){case"number":k(F);break;case"string":k('"',F,'"');break;case"object":Array.isArray(F)&&k("[",F.join(),"]");break;default:k(m.link(F));break}k(";")}});function g(L,F){A.forEach(function(V){var X=P[V];if(Mt.isDynamic(X)){var se=L.invoke(F,X);F(x,".",V,"=",se,";")}})}c.dynamic[w]=new Mt.DynamicVariable(Gi,{thisDep:T,contextDep:E,propDep:p,ref:x,append:g}),delete c.static[w]}function He(m,c,w,P,k){var A=De();A.stats=A.link(k),Object.keys(c.static).forEach(function(E){xe(A,c,E)}),gy.forEach(function(E){xe(A,m,E)});var T=mt(m,c,w,P,A);return ct(A,T),M(A,T),y(A,T),r(A.compile(),{destroy:function(){T.shader.program.destroy()}})}return{next:de,current:pe,procs:function(){var m=De(),c=m.proc("poll"),w=m.proc("refresh"),P=m.block();c(P),w(P);var k=m.shared,A=k.gl,T=k.next,E=k.current;P(E,".dirty=false;"),yt(m,c),yt(m,w,null,!0);var p;ee&&(p=m.link(ee)),_.oes_vertex_array_object&&w(m.link(_.oes_vertex_array_object),".bindVertexArrayOES(null);");for(var x=0;x<R.maxAttributes;++x){var g=w.def(k.attributes,"[",x,"]"),L=m.cond(g,".buffer");L.then(A,".enableVertexAttribArray(",x,");",A,".bindBuffer(",fr,",",g,".buffer.buffer);",A,".vertexAttribPointer(",x,",",g,".size,",g,".type,",g,".normalized,",g,".stride,",g,".offset);").else(A,".disableVertexAttribArray(",x,");",A,".vertexAttrib4f(",x,",",g,".x,",g,".y,",g,".z,",g,".w);",g,".buffer=null;"),w(L),ee&&w(p,".vertexAttribDivisorANGLE(",x,",",g,".divisor);")}return w(m.shared.vao,".currentVAO=null;",m.shared.vao,".setVAO(",m.shared.vao,".targetVAO);"),Object.keys(j).forEach(function(F){var V=j[F],X=P.def(T,".",F),se=m.block();se("if(",X,"){",A,".enable(",V,")}else{",A,".disable(",V,")}",E,".",F,"=",X,";"),w(se),c("if(",X,"!==",E,".",F,"){",se,"}")}),Object.keys($).forEach(function(F){var V=$[F],X=pe[F],se,Re,Ee=m.block();if(Ee(A,".",V,"("),at(X)){var ye=X.length;se=m.global.def(T,".",F),Re=m.global.def(E,".",F),Ee(Ot(ye,function(H){return se+"["+H+"]"}),");",Ot(ye,function(H){return Re+"["+H+"]="+se+"["+H+"];"}).join("")),c("if(",Ot(ye,function(H){return se+"["+H+"]!=="+Re+"["+H+"]"}).join("||"),"){",Ee,"}")}else se=P.def(T,".",F),Re=P.def(E,".",F),Ee(se,");",E,".",F,"=",se,";"),c("if(",se,"!==",Re,"){",Ee,"}");w(Ee)}),m.compile()}(),compile:He}}function My(){return{vaoCount:0,bufferCount:0,elementsCount:0,framebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0}}var Oy=34918,Gy=34919,ll=35007,Ny=function(a,h){if(!h.ext_disjoint_timer_query)return null;var _=[];function R(){return _.pop()||h.ext_disjoint_timer_query.createQueryEXT()}function U(ee){_.push(ee)}var I=[];function N(ee){var ge=R();h.ext_disjoint_timer_query.beginQueryEXT(ll,ge),I.push(ge),K(I.length-1,I.length,ee)}function Q(){h.ext_disjoint_timer_query.endQueryEXT(ll)}function Y(){this.startQueryIndex=-1,this.endQueryIndex=-1,this.sum=0,this.stats=null}var ne=[];function ie(){return ne.pop()||new Y}function re(ee){ne.push(ee)}var ue=[];function K(ee,ge,q){var pe=ie();pe.startQueryIndex=ee,pe.endQueryIndex=ge,pe.sum=0,pe.stats=q,ue.push(pe)}var te=[],C=[];function O(){var ee,ge,q=I.length;if(q!==0){C.length=Math.max(C.length,q+1),te.length=Math.max(te.length,q+1),te[0]=0,C[0]=0;var pe=0;for(ee=0,ge=0;ge<I.length;++ge){var de=I[ge];h.ext_disjoint_timer_query.getQueryObjectEXT(de,Gy)?(pe+=h.ext_disjoint_timer_query.getQueryObjectEXT(de,Oy),U(de)):I[ee++]=de,te[ge+1]=pe,C[ge+1]=ee}for(I.length=ee,ee=0,ge=0;ge<ue.length;++ge){var Ce=ue[ge],j=Ce.startQueryIndex,$=Ce.endQueryIndex;Ce.sum+=te[$]-te[j];var be=C[j],fe=C[$];fe===be?(Ce.stats.gpuTime+=Ce.sum/1e6,re(Ce)):(Ce.startQueryIndex=be,Ce.endQueryIndex=fe,ue[ee++]=Ce)}ue.length=ee}}return{beginQuery:N,endQuery:Q,pushScopeStats:K,update:O,getNumPendingQueries:function(){return I.length},clear:function(){_.push.apply(_,I);for(var ee=0;ee<_.length;ee++)h.ext_disjoint_timer_query.deleteQueryEXT(_[ee]);I.length=0,_.length=0},restore:function(){I.length=0,_.length=0}}},By=16384,Vy=256,$y=1024,Uy=34962,cl="webglcontextlost",hl="webglcontextrestored",dl=1,jy=2,Xy=3;function ml(a,h){for(var _=0;_<a.length;++_)if(a[_]===h)return _;return-1}function Hy(a){var h=j0(a);if(!h)return null;var _=h.gl,R=_.getContextAttributes(),U=_.isContextLost(),I=X0(_,h);if(!I)return null;var N=N0(),Q=My(),Y=I.extensions,ne=Ny(_,Y),ie=_u(),re=_.drawingBufferWidth,ue=_.drawingBufferHeight,K={tick:0,time:0,viewportWidth:re,viewportHeight:ue,framebufferWidth:re,framebufferHeight:ue,drawingBufferWidth:re,drawingBufferHeight:ue,pixelRatio:h.pixelRatio},te={},C={elements:null,primitive:4,count:-1,offset:0,instances:-1},O=zv(_,Y),ee=Wv(_,Q,h,pe),ge=ag(_,Y,ee,Q),q=ay(_,Y,O,Q,ee,ge,C);function pe(Fe){return q.destroyBuffer(Fe)}var de=ly(_,N,Q,h),Ce=Og(_,Y,O,function(){be.procs.poll()},K,Q,h),j=Gg(_,Y,O,Q,h),$=iy(_,Y,O,Ce,j,Q),be=Dy(_,N,Y,O,ee,ge,Ce,$,te,q,de,C,K,ne,h),fe=dy(_,$,be.procs.poll,K,R,Y,O),J=be.next,le=_.canvas,he=[],Oe=[],De=[],me=[h.onDestroy],ve=null;function ze(){if(he.length===0){ne&&ne.update(),ve=null;return}ve=Mo.next(ze),At();for(var Fe=he.length-1;Fe>=0;--Fe){var We=he[Fe];We&&We(K,null,0)}_.flush(),ne&&ne.update()}function Ge(){!ve&&he.length>0&&(ve=Mo.next(ze))}function qe(){ve&&(Mo.cancel(ze),ve=null)}function st(Fe){Fe.preventDefault(),U=!0,qe(),Oe.forEach(function(We){We()})}function ut(Fe){_.getError(),U=!1,I.restore(),de.restore(),ee.restore(),Ce.restore(),j.restore(),$.restore(),q.restore(),ne&&ne.restore(),be.procs.refresh(),Ge(),De.forEach(function(We){We()})}le&&(le.addEventListener(cl,st,!1),le.addEventListener(hl,ut,!1));function Ze(){he.length=0,qe(),le&&(le.removeEventListener(cl,st),le.removeEventListener(hl,ut)),de.clear(),$.clear(),j.clear(),q.clear(),Ce.clear(),ge.clear(),ee.clear(),ne&&ne.clear(),me.forEach(function(Fe){Fe()})}function vt(Fe){d(!!Fe,"invalid args to regl({...})"),d.type(Fe,"object","invalid args to regl({...})");function We(k){var A=r({},k);delete A.uniforms,delete A.attributes,delete A.context,delete A.vao,"stencil"in A&&A.stencil.op&&(A.stencil.opBack=A.stencil.opFront=A.stencil.op,delete A.stencil.op);function T(E){if(E in A){var p=A[E];delete A[E],Object.keys(p).forEach(function(x){A[E+"."+x]=p[x]})}}return T("blend"),T("depth"),T("cull"),T("stencil"),T("polygonOffset"),T("scissor"),T("sample"),"vao"in k&&(A.vao=k.vao),A}function Qe(k,A){var T={},E={};return Object.keys(k).forEach(function(p){var x=k[p];if(Mt.isDynamic(x)){E[p]=Mt.unbox(x,p);return}else if(A&&Array.isArray(x)){for(var g=0;g<x.length;++g)if(Mt.isDynamic(x[g])){E[p]=Mt.unbox(x,p);return}}T[p]=x}),{dynamic:E,static:T}}var ct=Qe(Fe.context||{},!0),on=Qe(Fe.uniforms||{},!0),Vn=Qe(Fe.attributes||{},!1),y=Qe(We(Fe),!1),M={gpuTime:0,cpuTime:0,count:0},z=be.compile(y,Vn,on,ct,M),xe=z.draw,He=z.batch,m=z.scope,c=[];function w(k){for(;c.length<k;)c.push(null);return c}function P(k,A){var T;if(U&&d.raise("context lost"),typeof k=="function")return m.call(this,null,k,0);if(typeof A=="function")if(typeof k=="number")for(T=0;T<k;++T)m.call(this,null,A,T);else if(Array.isArray(k))for(T=0;T<k.length;++T)m.call(this,k[T],A,T);else return m.call(this,k,A,0);else if(typeof k=="number"){if(k>0)return He.call(this,w(k|0),k|0)}else if(Array.isArray(k)){if(k.length)return He.call(this,k,k.length)}else return xe.call(this,k)}return r(P,{stats:M,destroy:function(){z.destroy()}})}var ot=$.setFBO=vt({framebuffer:Mt.define.call(null,dl,"framebuffer")});function mt(Fe,We){var Qe=0;be.procs.poll();var ct=We.color;ct&&(_.clearColor(+ct[0]||0,+ct[1]||0,+ct[2]||0,+ct[3]||0),Qe|=By),"depth"in We&&(_.clearDepth(+We.depth),Qe|=Vy),"stencil"in We&&(_.clearStencil(We.stencil|0),Qe|=$y),d(!!Qe,"called regl.clear with no buffer specified"),_.clear(Qe)}function gt(Fe){if(d(typeof Fe=="object"&&Fe,"regl.clear() takes an object as input"),"framebuffer"in Fe)if(Fe.framebuffer&&Fe.framebuffer_reglType==="framebufferCube")for(var We=0;We<6;++We)ot(r({framebuffer:Fe.framebuffer.faces[We]},Fe),mt);else ot(Fe,mt);else mt(null,Fe)}function yt(Fe){d.type(Fe,"function","regl.frame() callback must be a function"),he.push(Fe);function We(){var Qe=ml(he,Fe);d(Qe>=0,"cannot cancel a frame twice");function ct(){var on=ml(he,ct);he[on]=he[he.length-1],he.length-=1,he.length<=0&&qe()}he[Qe]=ct}return Ge(),{cancel:We}}function St(){var Fe=J.viewport,We=J.scissor_box;Fe[0]=Fe[1]=We[0]=We[1]=0,K.viewportWidth=K.framebufferWidth=K.drawingBufferWidth=Fe[2]=We[2]=_.drawingBufferWidth,K.viewportHeight=K.framebufferHeight=K.drawingBufferHeight=Fe[3]=We[3]=_.drawingBufferHeight}function At(){K.tick+=1,K.time=$e(),St(),be.procs.poll()}function lt(){Ce.refresh(),St(),be.procs.refresh(),ne&&ne.update()}function $e(){return(_u()-ie)/1e3}lt();function Et(Fe,We){d.type(We,"function","listener callback must be a function");var Qe;switch(Fe){case"frame":return yt(We);case"lost":Qe=Oe;break;case"restore":Qe=De;break;case"destroy":Qe=me;break;default:d.raise("invalid event, must be one of frame,lost,restore,destroy")}return Qe.push(We),{cancel:function(){for(var ct=0;ct<Qe.length;++ct)if(Qe[ct]===We){Qe[ct]=Qe[Qe.length-1],Qe.pop();return}}}}var Ke=r(vt,{clear:gt,prop:Mt.define.bind(null,dl),context:Mt.define.bind(null,jy),this:Mt.define.bind(null,Xy),draw:vt({}),buffer:function(Fe){return ee.create(Fe,Uy,!1,!1)},elements:function(Fe){return ge.create(Fe,!1)},texture:Ce.create2D,cube:Ce.createCube,renderbuffer:j.create,framebuffer:$.create,framebufferCube:$.createCube,vao:q.createVAO,attributes:R,frame:yt,on:Et,limits:O,hasExtension:function(Fe){return O.extensions.indexOf(Fe.toLowerCase())>=0},read:fe,destroy:Ze,_gl:_,_refresh:lt,poll:function(){At(),ne&&ne.update()},now:$e,stats:Q});return h.onDone(null,Ke),Ke}return Hy})}(oi)),oi.exports}var qd=Hd();const Wd=go(qd),Yd="#b3b3b3",Zd=void 0,Qd=void 0,Kd=4,Jd="#666666",em=.1,tm=1,nm="#222222",Be={enableSimulation:!0,spaceSize:8192,pointSizeScale:1,linkWidthScale:1,arrowSizeScale:1,renderLinks:!0,curvedLinks:!1,curvedLinkSegments:19,curvedLinkWeight:.8,curvedLinkControlPointDistance:.5,arrowLinks:!1,linkVisibilityDistanceRange:[50,150],linkVisibilityMinTransparency:.25,hoveredPointCursor:"auto",renderHoveredPointRing:!1,hoveredPointRingColor:"white",focusedPointRingColor:"white",focusedPointIndex:void 0,useClassicQuadtree:!1,simulation:{decay:5e3,gravity:.25,center:0,repulsion:1,repulsionTheta:1.15,repulsionQuadtreeLevels:12,linkSpring:1,linkDistance:10,linkDistRandomVariationRange:[1,1.2],repulsionFromMouse:2,friction:.85,cluster:.1},showFPSMonitor:!1,pixelRatio:2,scalePointsOnZoom:!1,scaleLinksOnZoom:!1,enableZoom:!0,enableSimulationDuringZoom:!1,enableDrag:!1,fitViewOnInit:!0,fitViewDelay:250,fitViewPadding:.1,fitViewDuration:250,pointSamplingDistance:150,attribution:"",rescalePositions:void 0,enableRightClickRepulsion:!1},rm=.7,im=.95,om=3,_s=t=>typeof t=="function",yo=t=>Array.isArray(t),Ss=t=>t instanceof Object,ws=t=>t instanceof Object?t.constructor.name!=="Function"&&t.constructor.name!=="Object":!1,xo=t=>Ss(t)&&!yo(t)&&!_s(t)&&!ws(t);function vn(t){let e;if(yo(t))e=t;else{const n=pn(t),r=n==null?void 0:n.rgb();e=[(r==null?void 0:r.r)||0,(r==null?void 0:r.g)||0,(r==null?void 0:r.b)||0,(n==null?void 0:n.opacity)??1]}return[e[0]/255,e[1]/255,e[2]/255,e[3]]}function Ts(t,e,n){return .2126*t+.7152*e+.0722*n}function Ht(t,e){let n=new Float32Array;return t({framebuffer:e})(()=>{n=t.read()}),n}function As(t,e,n){return Math.min(Math.max(t,e),n)}function qt(t){return t!=null&&!Number.isNaN(t)}class am{constructor(){this.enableSimulation=Be.enableSimulation,this.backgroundColor=nm,this.spaceSize=Be.spaceSize,this.pointColor=Yd,this.pointGreyoutOpacity=Zd,this.pointGreyoutColor=Qd,this.pointSize=Kd,this.pointSizeScale=Be.pointSizeScale,this.hoveredPointCursor=Be.hoveredPointCursor,this.renderHoveredPointRing=Be.renderHoveredPointRing,this.hoveredPointRingColor=Be.hoveredPointRingColor,this.focusedPointRingColor=Be.focusedPointRingColor,this.focusedPointIndex=Be.focusedPointIndex,this.linkColor=Jd,this.linkGreyoutOpacity=em,this.linkWidth=tm,this.linkWidthScale=Be.linkWidthScale,this.renderLinks=Be.renderLinks,this.curvedLinks=Be.curvedLinks,this.curvedLinkSegments=Be.curvedLinkSegments,this.curvedLinkWeight=Be.curvedLinkWeight,this.curvedLinkControlPointDistance=Be.curvedLinkControlPointDistance,this.linkArrows=Be.arrowLinks,this.linkArrowsSizeScale=Be.arrowSizeScale,this.scaleLinksOnZoom=Be.scaleLinksOnZoom,this.linkVisibilityDistanceRange=Be.linkVisibilityDistanceRange,this.linkVisibilityMinTransparency=Be.linkVisibilityMinTransparency,this.useClassicQuadtree=Be.useClassicQuadtree,this.simulationDecay=Be.simulation.decay,this.simulationGravity=Be.simulation.gravity,this.simulationCenter=Be.simulation.center,this.simulationRepulsion=Be.simulation.repulsion,this.simulationRepulsionTheta=Be.simulation.repulsionTheta,this.simulationRepulsionQuadtreeLevels=Be.simulation.repulsionQuadtreeLevels,this.simulationLinkSpring=Be.simulation.linkSpring,this.simulationLinkDistance=Be.simulation.linkDistance,this.simulationLinkDistRandomVariationRange=Be.simulation.linkDistRandomVariationRange,this.simulationRepulsionFromMouse=Be.simulation.repulsionFromMouse,this.enableRightClickRepulsion=Be.enableRightClickRepulsion,this.simulationFriction=Be.simulation.friction,this.simulationCluster=Be.simulation.cluster,this.onSimulationStart=void 0,this.onSimulationTick=void 0,this.onSimulationEnd=void 0,this.onSimulationPause=void 0,this.onSimulationRestart=void 0,this.onClick=void 0,this.onMouseMove=void 0,this.onPointMouseOver=void 0,this.onPointMouseOut=void 0,this.onZoomStart=void 0,this.onZoom=void 0,this.onZoomEnd=void 0,this.onDragStart=void 0,this.onDrag=void 0,this.onDragEnd=void 0,this.showFPSMonitor=Be.showFPSMonitor,this.pixelRatio=Be.pixelRatio,this.scalePointsOnZoom=Be.scalePointsOnZoom,this.initialZoomLevel=void 0,this.enableZoom=Be.enableZoom,this.enableSimulationDuringZoom=Be.enableSimulationDuringZoom,this.enableDrag=Be.enableDrag,this.fitViewOnInit=Be.fitViewOnInit,this.fitViewDelay=Be.fitViewDelay,this.fitViewPadding=Be.fitViewPadding,this.fitViewDuration=Be.fitViewDuration,this.fitViewByPointsInRect=void 0,this.randomSeed=void 0,this.pointSamplingDistance=Be.pointSamplingDistance,this.attribution=Be.attribution,this.rescalePositions=Be.rescalePositions}init(e){Object.keys(e).forEach(n=>{this.deepMergeConfig(this.getConfig(),e,n)})}deepMergeConfig(e,n,r){xo(e[r])&&xo(n[r])?Object.keys(n[r]).forEach(i=>{this.deepMergeConfig(e[r],n[r],i)}):e[r]=n[r]}getConfig(){return this}}class ln{constructor(e,n,r,i,o){this.reglInstance=e,this.config=n,this.store=r,this.data=i,o&&(this.points=o)}}var sm=`#ifdef GL_ES
|
|
8
|
+
`),J=Function.apply(null,h.concat(le));return J.apply(null,_)}return{global:K,link:O,block:j,proc:ie,scope:z,cond:B,compile:ae}}var Zr="xyzw".split(""),fc=5121,Qr=1,Ns=2,Gs=0,Bs=1,Us=2,Vs=3,na=4,uc=5,lc=6,cc="dither",hc="blend.enable",dc="blend.color",$s="blend.equation",Hs="blend.func",mc="depth.enable",pc="depth.func",vc="depth.range",gc="depth.mask",js="colorMask",yc="cull.enable",xc="cull.face",Xs="frontFace",Ws="lineWidth",bc="polygonOffset.enable",qs="polygonOffset.offset",_c="sample.alpha",Sc="sample.enable",Ys="sample.coverage",Tc="stencil.enable",wc="stencil.mask",Zs="stencil.func",Qs="stencil.opFront",ki="stencil.opBack",Ac="scissor.enable",ra="scissor.box",Gn="viewport",Li="profile",xr="framebuffer",Fi="vert",Ri="frag",br="elements",_r="primitive",Sr="count",ia="offset",oa="instances",Ii="vao",Ks="Width",Js="Height",Kr=xr+Ks,Jr=xr+Js,Sx=Gn+Ks,Tx=Gn+Js,Ec="drawingBuffer",Pc=Ec+Ks,Cc=Ec+Js,wx=[Hs,$s,Zs,Qs,ki,Ys,Gn,ra,qs],ei=34962,ef=34963,Ax=35632,Ex=35633,kc=3553,Px=34067,Cx=2884,kx=3042,Lx=3024,Fx=2960,Rx=2929,Ix=3089,Dx=32823,zx=32926,Ox=32928,tf=5126,aa=35664,sa=35665,fa=35666,nf=5124,ua=35667,la=35668,ca=35669,rf=35670,ha=35671,da=35672,ma=35673,Di=35674,zi=35675,Oi=35676,Mi=35678,Ni=35680,of=4,Gi=1028,Tr=1029,Lc=2304,af=2305,Mx=32775,Nx=32776,Gx=519,Qn=7680,Fc=0,Rc=1,Ic=32774,Bx=513,Dc=36160,Ux=36064,En={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},zc=["constant color, constant alpha","one minus constant color, constant alpha","constant color, one minus constant alpha","one minus constant color, one minus constant alpha","constant alpha, constant color","constant alpha, one minus constant color","one minus constant alpha, constant color","one minus constant alpha, one minus constant color"],ti={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Kn={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},Oc={frag:Ax,vert:Ex},sf={cw:Lc,ccw:af};function pa(a){return Array.isArray(a)||n(a)||yn(a)}function Mc(a){return a.sort(function(h,_){return h===Gn?-1:_===Gn?1:h<_?-1:1})}function Rt(a,h,_,O){this.thisDep=a,this.contextDep=h,this.propDep=_,this.append=O}function Jn(a){return a&&!(a.thisDep||a.contextDep||a.propDep)}function St(a){return new Rt(!1,!1,!1,a)}function Kt(a,h){var _=a.type;if(_===Gs){var O=a.data.length;return new Rt(!0,O>=1,O>=2,h)}else if(_===na){var j=a.data;return new Rt(j.thisDep,j.contextDep,j.propDep,h)}else{if(_===uc)return new Rt(!1,!1,!1,h);if(_===lc){for(var z=!1,B=!1,K=!1,Q=0;Q<a.data.length;++Q){var ie=a.data[Q];if(ie.type===Bs)K=!0;else if(ie.type===Us)B=!0;else if(ie.type===Vs)z=!0;else if(ie.type===Gs){z=!0;var ae=ie.data;ae>=1&&(B=!0),ae>=2&&(K=!0)}else ie.type===na&&(z=z||ie.data.thisDep,B=B||ie.data.contextDep,K=K||ie.data.propDep)}return new Rt(z,B,K,h)}else return new Rt(_===Vs,_===Us,_===Bs,h)}}var Nc=new Rt(!1,!1,!1,function(){});function Vx(a,h,_,O,j,z,B,K,Q,ie,ae,oe,le,J,ne){var k=ie.Record,G={add:32774,subtract:32778,"reverse subtract":32779};_.ext_blend_minmax&&(G.min=Mx,G.max=Nx);var te=_.angle_instanced_arrays,xe=_.webgl_draw_buffers,Z=_.oes_vertex_array_object,ge={dirty:!0,profile:ne.profile},me={},Fe=[],X={},$={};function Se(m){return m.replace(".","_")}function ce(m,c,T){var P=Se(m);Fe.push(m),me[P]=ge[P]=!!T,X[P]=c}function ee(m,c,T){var P=Se(m);Fe.push(m),Array.isArray(T)?(ge[P]=T.slice(),me[P]=T.slice()):ge[P]=me[P]=T,$[P]=c}ce(cc,Lx),ce(hc,kx),ee(dc,"blendColor",[0,0,0,0]),ee($s,"blendEquationSeparate",[Ic,Ic]),ee(Hs,"blendFuncSeparate",[Rc,Fc,Rc,Fc]),ce(mc,Rx,!0),ee(pc,"depthFunc",Bx),ee(vc,"depthRange",[0,1]),ee(gc,"depthMask",!0),ee(js,js,[!0,!0,!0,!0]),ce(yc,Cx),ee(xc,"cullFace",Tr),ee(Xs,Xs,af),ee(Ws,Ws,1),ce(bc,Dx),ee(qs,"polygonOffset",[0,0]),ce(_c,zx),ce(Sc,Ox),ee(Ys,"sampleCoverage",[1,!1]),ce(Tc,Fx),ee(wc,"stencilMask",-1),ee(Zs,"stencilFunc",[Gx,0,-1]),ee(Qs,"stencilOpSeparate",[Gi,Qn,Qn,Qn]),ee(ki,"stencilOpSeparate",[Tr,Qn,Qn,Qn]),ce(Ac,Ix),ee(ra,"scissor",[0,0,a.drawingBufferWidth,a.drawingBufferHeight]),ee(Gn,Gn,[0,0,a.drawingBufferWidth,a.drawingBufferHeight]);var he={gl:a,context:le,strings:h,next:me,current:ge,draw:oe,elements:z,buffer:j,shader:ae,attributes:ie.state,vao:ie,uniforms:Q,framebuffer:K,extensions:_,timer:J,isBufferArgs:pa},de={primTypes:Yn,compareFuncs:ti,blendFuncs:En,blendEquations:G,stencilOps:Kn,glTypes:mr,orientationType:sf};d.optional(function(){he.isArrayLike=pt}),xe&&(de.backBuffer=[Tr],de.drawBuffer=Yt(O.maxDrawbuffers,function(m){return m===0?[0]:Yt(m,function(c){return Ux+c})}));var Ve=0;function Ne(){var m=_x(),c=m.link,T=m.global;m.id=Ve++,m.batchId="0";var P=c(he),L=m.shared={props:"a0"};Object.keys(he).forEach(function(x){L[x]=T.def(P,".",x)}),d.optional(function(){m.CHECK=c(d),m.commandStr=d.guessCommand(),m.command=c(m.commandStr),m.assert=function(x,g,R){x("if(!(",g,"))",this.CHECK,".commandRaise(",c(R),",",this.command,");")},de.invalidBlendCombinations=zc});var A=m.next={},w=m.current={};Object.keys($).forEach(function(x){Array.isArray(ge[x])&&(A[x]=T.def(L.next,".",x),w[x]=T.def(L.current,".",x))});var E=m.constants={};Object.keys(de).forEach(function(x){E[x]=T.def(JSON.stringify(de[x]))}),m.invoke=function(x,g){switch(g.type){case Gs:var R=["this",L.context,L.props,m.batchId];return x.def(c(g.data),".call(",R.slice(0,Math.max(g.data.length+1,4)),")");case Bs:return x.def(L.props,g.data);case Us:return x.def(L.context,g.data);case Vs:return x.def("this",g.data);case na:return g.data.append(m,x),g.data.ref;case uc:return g.data.toString();case lc:return g.data.map(function(F){return m.invoke(x,F)})}},m.attribCache={};var p={};return m.scopeAttrib=function(x){var g=h.id(x);if(g in p)return p[g];var R=ie.scope[g];R||(R=ie.scope[g]=new k);var F=p[g]=c(R);return F},m}function pe(m){var c=m.static,T=m.dynamic,P;if(Li in c){var L=!!c[Li];P=St(function(w,E){return L}),P.enable=L}else if(Li in T){var A=T[Li];P=Kt(A,function(w,E){return w.invoke(E,A)})}return P}function ye(m,c){var T=m.static,P=m.dynamic;if(xr in T){var L=T[xr];return L?(L=K.getFramebuffer(L),d.command(L,"invalid framebuffer object"),St(function(w,E){var p=w.link(L),x=w.shared;E.set(x.framebuffer,".next",p);var g=x.context;return E.set(g,"."+Kr,p+".width"),E.set(g,"."+Jr,p+".height"),p})):St(function(w,E){var p=w.shared;E.set(p.framebuffer,".next","null");var x=p.context;return E.set(x,"."+Kr,x+"."+Pc),E.set(x,"."+Jr,x+"."+Cc),"null"})}else if(xr in P){var A=P[xr];return Kt(A,function(w,E){var p=w.invoke(E,A),x=w.shared,g=x.framebuffer,R=E.def(g,".getFramebuffer(",p,")");d.optional(function(){w.assert(E,"!"+p+"||"+R,"invalid framebuffer object")}),E.set(g,".next",R);var F=x.context;return E.set(F,"."+Kr,R+"?"+R+".width:"+F+"."+Pc),E.set(F,"."+Jr,R+"?"+R+".height:"+F+"."+Cc),R})}else return null}function ze(m,c,T){var P=m.static,L=m.dynamic;function A(p){if(p in P){var x=P[p];d.commandType(x,"object","invalid "+p,T.commandStr);var g=!0,R=x.x|0,F=x.y|0,V,W;return"width"in x?(V=x.width|0,d.command(V>=0,"invalid "+p,T.commandStr)):g=!1,"height"in x?(W=x.height|0,d.command(W>=0,"invalid "+p,T.commandStr)):g=!1,new Rt(!g&&c&&c.thisDep,!g&&c&&c.contextDep,!g&&c&&c.propDep,function(Le,be){var q=Le.shared.context,U=V;"width"in x||(U=be.def(q,".",Kr,"-",R));var Pe=W;return"height"in x||(Pe=be.def(q,".",Jr,"-",F)),[R,F,U,Pe]})}else if(p in L){var ue=L[p],Me=Kt(ue,function(Le,be){var q=Le.invoke(be,ue);d.optional(function(){Le.assert(be,q+"&&typeof "+q+'==="object"',"invalid "+p)});var U=Le.shared.context,Pe=be.def(q,".x|0"),we=be.def(q,".y|0"),Oe=be.def('"width" in ',q,"?",q,".width|0:","(",U,".",Kr,"-",Pe,")"),ft=be.def('"height" in ',q,"?",q,".height|0:","(",U,".",Jr,"-",we,")");return d.optional(function(){Le.assert(be,Oe+">=0&&"+ft+">=0","invalid "+p)}),[Pe,we,Oe,ft]});return c&&(Me.thisDep=Me.thisDep||c.thisDep,Me.contextDep=Me.contextDep||c.contextDep,Me.propDep=Me.propDep||c.propDep),Me}else return c?new Rt(c.thisDep,c.contextDep,c.propDep,function(Le,be){var q=Le.shared.context;return[0,0,be.def(q,".",Kr),be.def(q,".",Jr)]}):null}var w=A(Gn);if(w){var E=w;w=new Rt(w.thisDep,w.contextDep,w.propDep,function(p,x){var g=E.append(p,x),R=p.shared.context;return x.set(R,"."+Sx,g[2]),x.set(R,"."+Tx,g[3]),g})}return{viewport:w,scissor_box:A(ra)}}function $e(m,c){var T=m.static,P=typeof T[Ri]=="string"&&typeof T[Fi]=="string";if(P){if(Object.keys(c.dynamic).length>0)return null;var L=c.static,A=Object.keys(L);if(A.length>0&&typeof L[A[0]]=="number"){for(var w=[],E=0;E<A.length;++E)d(typeof L[A[E]]=="number","must specify all vertex attribute locations when using vaos"),w.push([L[A[E]]|0,A[E]]);return w}}return null}function Je(m,c,T){var P=m.static,L=m.dynamic;function A(g){if(g in P){var R=h.id(P[g]);d.optional(function(){ae.shader(Oc[g],R,d.guessCommand())});var F=St(function(){return R});return F.id=R,F}else if(g in L){var V=L[g];return Kt(V,function(W,ue){var Me=W.invoke(ue,V),Le=ue.def(W.shared.strings,".id(",Me,")");return d.optional(function(){ue(W.shared.shader,".shader(",Oc[g],",",Le,",",W.command,");")}),Le})}return null}var w=A(Ri),E=A(Fi),p=null,x;return Jn(w)&&Jn(E)?(p=ae.program(E.id,w.id,null,T),x=St(function(g,R){return g.link(p)})):x=new Rt(w&&w.thisDep||E&&E.thisDep,w&&w.contextDep||E&&E.contextDep,w&&w.propDep||E&&E.propDep,function(g,R){var F=g.shared.shader,V;w?V=w.append(g,R):V=R.def(F,".",Ri);var W;E?W=E.append(g,R):W=R.def(F,".",Fi);var ue=F+".program("+W+","+V;return d.optional(function(){ue+=","+g.command}),R.def(ue+")")}),{frag:w,vert:E,progVar:x,program:p}}function vt(m,c){var T=m.static,P=m.dynamic,L={},A=!1;function w(){if(Ii in T){var be=T[Ii];return be!==null&&ie.getVAO(be)===null&&(be=ie.createVAO(be)),A=!0,L.vao=be,St(function(U){var Pe=ie.getVAO(be);return Pe?U.link(Pe):"null"})}else if(Ii in P){A=!0;var q=P[Ii];return Kt(q,function(U,Pe){var we=U.invoke(Pe,q);return Pe.def(U.shared.vao+".getVAO("+we+")")})}return null}var E=w(),p=!1;function x(){if(br in T){var be=T[br];if(L.elements=be,pa(be)){var q=L.elements=z.create(be,!0);be=z.getElements(q),p=!0}else be&&(be=z.getElements(be),p=!0,d.command(be,"invalid elements",c.commandStr));var U=St(function(we,Oe){if(be){var ft=we.link(be);return we.ELEMENTS=ft,ft}return we.ELEMENTS=null,null});return U.value=be,U}else if(br in P){p=!0;var Pe=P[br];return Kt(Pe,function(we,Oe){var ft=we.shared,Ut=ft.isBufferArgs,Ar=ft.elements,Bn=we.invoke(Oe,Pe),Cn=Oe.def("null"),er=Oe.def(Ut,"(",Bn,")"),Er=we.cond(er).then(Cn,"=",Ar,".createStream(",Bn,");").else(Cn,"=",Ar,".getElements(",Bn,");");return d.optional(function(){we.assert(Er.else,"!"+Bn+"||"+Cn,"invalid elements")}),Oe.entry(Er),Oe.exit(we.cond(er).then(Ar,".destroyStream(",Cn,");")),we.ELEMENTS=Cn,Cn})}else if(A)return new Rt(E.thisDep,E.contextDep,E.propDep,function(we,Oe){return Oe.def(we.shared.vao+".currentVAO?"+we.shared.elements+".getElements("+we.shared.vao+".currentVAO.elements):null")});return null}var g=x();function R(){if(_r in T){var be=T[_r];return L.primitive=be,d.commandParameter(be,Yn,"invalid primitve",c.commandStr),St(function(U,Pe){return Yn[be]})}else if(_r in P){var q=P[_r];return Kt(q,function(U,Pe){var we=U.constants.primTypes,Oe=U.invoke(Pe,q);return d.optional(function(){U.assert(Pe,Oe+" in "+we,"invalid primitive, must be one of "+Object.keys(Yn))}),Pe.def(we,"[",Oe,"]")})}else{if(p)return Jn(g)?g.value?St(function(U,Pe){return Pe.def(U.ELEMENTS,".primType")}):St(function(){return of}):new Rt(g.thisDep,g.contextDep,g.propDep,function(U,Pe){var we=U.ELEMENTS;return Pe.def(we,"?",we,".primType:",of)});if(A)return new Rt(E.thisDep,E.contextDep,E.propDep,function(U,Pe){return Pe.def(U.shared.vao+".currentVAO?"+U.shared.vao+".currentVAO.primitive:"+of)})}return null}function F(be,q){if(be in T){var U=T[be]|0;return q?L.offset=U:L.instances=U,d.command(!q||U>=0,"invalid "+be,c.commandStr),St(function(we,Oe){return q&&(we.OFFSET=U),U})}else if(be in P){var Pe=P[be];return Kt(Pe,function(we,Oe){var ft=we.invoke(Oe,Pe);return q&&(we.OFFSET=ft,d.optional(function(){we.assert(Oe,ft+">=0","invalid "+be)})),ft})}else if(q){if(p)return St(function(we,Oe){return we.OFFSET=0,0});if(A)return new Rt(E.thisDep,E.contextDep,E.propDep,function(we,Oe){return Oe.def(we.shared.vao+".currentVAO?"+we.shared.vao+".currentVAO.offset:0")})}else if(A)return new Rt(E.thisDep,E.contextDep,E.propDep,function(we,Oe){return Oe.def(we.shared.vao+".currentVAO?"+we.shared.vao+".currentVAO.instances:-1")});return null}var V=F(ia,!0);function W(){if(Sr in T){var be=T[Sr]|0;return L.count=be,d.command(typeof be=="number"&&be>=0,"invalid vertex count",c.commandStr),St(function(){return be})}else if(Sr in P){var q=P[Sr];return Kt(q,function(Oe,ft){var Ut=Oe.invoke(ft,q);return d.optional(function(){Oe.assert(ft,"typeof "+Ut+'==="number"&&'+Ut+">=0&&"+Ut+"===("+Ut+"|0)","invalid vertex count")}),Ut})}else if(p)if(Jn(g)){if(g)return V?new Rt(V.thisDep,V.contextDep,V.propDep,function(Oe,ft){var Ut=ft.def(Oe.ELEMENTS,".vertCount-",Oe.OFFSET);return d.optional(function(){Oe.assert(ft,Ut+">=0","invalid vertex offset/element buffer too small")}),Ut}):St(function(Oe,ft){return ft.def(Oe.ELEMENTS,".vertCount")});var U=St(function(){return-1});return d.optional(function(){U.MISSING=!0}),U}else{var Pe=new Rt(g.thisDep||V.thisDep,g.contextDep||V.contextDep,g.propDep||V.propDep,function(Oe,ft){var Ut=Oe.ELEMENTS;return Oe.OFFSET?ft.def(Ut,"?",Ut,".vertCount-",Oe.OFFSET,":-1"):ft.def(Ut,"?",Ut,".vertCount:-1")});return d.optional(function(){Pe.DYNAMIC=!0}),Pe}else if(A){var we=new Rt(E.thisDep,E.contextDep,E.propDep,function(Oe,ft){return ft.def(Oe.shared.vao,".currentVAO?",Oe.shared.vao,".currentVAO.count:-1")});return we}return null}var ue=R(),Me=W(),Le=F(oa,!1);return{elements:g,primitive:ue,count:Me,instances:Le,offset:V,vao:E,vaoActive:A,elementsActive:p,static:L}}function yt(m,c){var T=m.static,P=m.dynamic,L={};return Fe.forEach(function(A){var w=Se(A);function E(p,x){if(A in T){var g=p(T[A]);L[w]=St(function(){return g})}else if(A in P){var R=P[A];L[w]=Kt(R,function(F,V){return x(F,V,F.invoke(V,R))})}}switch(A){case yc:case hc:case cc:case Tc:case mc:case Ac:case bc:case _c:case Sc:case gc:return E(function(p){return d.commandType(p,"boolean",A,c.commandStr),p},function(p,x,g){return d.optional(function(){p.assert(x,"typeof "+g+'==="boolean"',"invalid flag "+A,p.commandStr)}),g});case pc:return E(function(p){return d.commandParameter(p,ti,"invalid "+A,c.commandStr),ti[p]},function(p,x,g){var R=p.constants.compareFuncs;return d.optional(function(){p.assert(x,g+" in "+R,"invalid "+A+", must be one of "+Object.keys(ti))}),x.def(R,"[",g,"]")});case vc:return E(function(p){return d.command(pt(p)&&p.length===2&&typeof p[0]=="number"&&typeof p[1]=="number"&&p[0]<=p[1],"depth range is 2d array",c.commandStr),p},function(p,x,g){d.optional(function(){p.assert(x,p.shared.isArrayLike+"("+g+")&&"+g+".length===2&&typeof "+g+'[0]==="number"&&typeof '+g+'[1]==="number"&&'+g+"[0]<="+g+"[1]","depth range must be a 2d array")});var R=x.def("+",g,"[0]"),F=x.def("+",g,"[1]");return[R,F]});case Hs:return E(function(p){d.commandType(p,"object","blend.func",c.commandStr);var x="srcRGB"in p?p.srcRGB:p.src,g="srcAlpha"in p?p.srcAlpha:p.src,R="dstRGB"in p?p.dstRGB:p.dst,F="dstAlpha"in p?p.dstAlpha:p.dst;return d.commandParameter(x,En,w+".srcRGB",c.commandStr),d.commandParameter(g,En,w+".srcAlpha",c.commandStr),d.commandParameter(R,En,w+".dstRGB",c.commandStr),d.commandParameter(F,En,w+".dstAlpha",c.commandStr),d.command(zc.indexOf(x+", "+R)===-1,"unallowed blending combination (srcRGB, dstRGB) = ("+x+", "+R+")",c.commandStr),[En[x],En[R],En[g],En[F]]},function(p,x,g){var R=p.constants.blendFuncs;d.optional(function(){p.assert(x,g+"&&typeof "+g+'==="object"',"invalid blend func, must be an object")});function F(q,U){var Pe=x.def('"',q,U,'" in ',g,"?",g,".",q,U,":",g,".",q);return d.optional(function(){p.assert(x,Pe+" in "+R,"invalid "+A+"."+q+U+", must be one of "+Object.keys(En))}),Pe}var V=F("src","RGB"),W=F("dst","RGB");d.optional(function(){var q=p.constants.invalidBlendCombinations;p.assert(x,q+".indexOf("+V+'+", "+'+W+") === -1 ","unallowed blending combination for (srcRGB, dstRGB)")});var ue=x.def(R,"[",V,"]"),Me=x.def(R,"[",F("src","Alpha"),"]"),Le=x.def(R,"[",W,"]"),be=x.def(R,"[",F("dst","Alpha"),"]");return[ue,Le,Me,be]});case $s:return E(function(p){if(typeof p=="string")return d.commandParameter(p,G,"invalid "+A,c.commandStr),[G[p],G[p]];if(typeof p=="object")return d.commandParameter(p.rgb,G,A+".rgb",c.commandStr),d.commandParameter(p.alpha,G,A+".alpha",c.commandStr),[G[p.rgb],G[p.alpha]];d.commandRaise("invalid blend.equation",c.commandStr)},function(p,x,g){var R=p.constants.blendEquations,F=x.def(),V=x.def(),W=p.cond("typeof ",g,'==="string"');return d.optional(function(){function ue(Me,Le,be){p.assert(Me,be+" in "+R,"invalid "+Le+", must be one of "+Object.keys(G))}ue(W.then,A,g),p.assert(W.else,g+"&&typeof "+g+'==="object"',"invalid "+A),ue(W.else,A+".rgb",g+".rgb"),ue(W.else,A+".alpha",g+".alpha")}),W.then(F,"=",V,"=",R,"[",g,"];"),W.else(F,"=",R,"[",g,".rgb];",V,"=",R,"[",g,".alpha];"),x(W),[F,V]});case dc:return E(function(p){return d.command(pt(p)&&p.length===4,"blend.color must be a 4d array",c.commandStr),Yt(4,function(x){return+p[x]})},function(p,x,g){return d.optional(function(){p.assert(x,p.shared.isArrayLike+"("+g+")&&"+g+".length===4","blend.color must be a 4d array")}),Yt(4,function(R){return x.def("+",g,"[",R,"]")})});case wc:return E(function(p){return d.commandType(p,"number",w,c.commandStr),p|0},function(p,x,g){return d.optional(function(){p.assert(x,"typeof "+g+'==="number"',"invalid stencil.mask")}),x.def(g,"|0")});case Zs:return E(function(p){d.commandType(p,"object",w,c.commandStr);var x=p.cmp||"keep",g=p.ref||0,R="mask"in p?p.mask:-1;return d.commandParameter(x,ti,A+".cmp",c.commandStr),d.commandType(g,"number",A+".ref",c.commandStr),d.commandType(R,"number",A+".mask",c.commandStr),[ti[x],g,R]},function(p,x,g){var R=p.constants.compareFuncs;d.optional(function(){function ue(){p.assert(x,Array.prototype.join.call(arguments,""),"invalid stencil.func")}ue(g+"&&typeof ",g,'==="object"'),ue('!("cmp" in ',g,")||(",g,".cmp in ",R,")")});var F=x.def('"cmp" in ',g,"?",R,"[",g,".cmp]",":",Qn),V=x.def(g,".ref|0"),W=x.def('"mask" in ',g,"?",g,".mask|0:-1");return[F,V,W]});case Qs:case ki:return E(function(p){d.commandType(p,"object",w,c.commandStr);var x=p.fail||"keep",g=p.zfail||"keep",R=p.zpass||"keep";return d.commandParameter(x,Kn,A+".fail",c.commandStr),d.commandParameter(g,Kn,A+".zfail",c.commandStr),d.commandParameter(R,Kn,A+".zpass",c.commandStr),[A===ki?Tr:Gi,Kn[x],Kn[g],Kn[R]]},function(p,x,g){var R=p.constants.stencilOps;d.optional(function(){p.assert(x,g+"&&typeof "+g+'==="object"',"invalid "+A)});function F(V){return d.optional(function(){p.assert(x,'!("'+V+'" in '+g+")||("+g+"."+V+" in "+R+")","invalid "+A+"."+V+", must be one of "+Object.keys(Kn))}),x.def('"',V,'" in ',g,"?",R,"[",g,".",V,"]:",Qn)}return[A===ki?Tr:Gi,F("fail"),F("zfail"),F("zpass")]});case qs:return E(function(p){d.commandType(p,"object",w,c.commandStr);var x=p.factor|0,g=p.units|0;return d.commandType(x,"number",w+".factor",c.commandStr),d.commandType(g,"number",w+".units",c.commandStr),[x,g]},function(p,x,g){d.optional(function(){p.assert(x,g+"&&typeof "+g+'==="object"',"invalid "+A)});var R=x.def(g,".factor|0"),F=x.def(g,".units|0");return[R,F]});case xc:return E(function(p){var x=0;return p==="front"?x=Gi:p==="back"&&(x=Tr),d.command(!!x,w,c.commandStr),x},function(p,x,g){return d.optional(function(){p.assert(x,g+'==="front"||'+g+'==="back"',"invalid cull.face")}),x.def(g,'==="front"?',Gi,":",Tr)});case Ws:return E(function(p){return d.command(typeof p=="number"&&p>=O.lineWidthDims[0]&&p<=O.lineWidthDims[1],"invalid line width, must be a positive number between "+O.lineWidthDims[0]+" and "+O.lineWidthDims[1],c.commandStr),p},function(p,x,g){return d.optional(function(){p.assert(x,"typeof "+g+'==="number"&&'+g+">="+O.lineWidthDims[0]+"&&"+g+"<="+O.lineWidthDims[1],"invalid line width")}),g});case Xs:return E(function(p){return d.commandParameter(p,sf,w,c.commandStr),sf[p]},function(p,x,g){return d.optional(function(){p.assert(x,g+'==="cw"||'+g+'==="ccw"',"invalid frontFace, must be one of cw,ccw")}),x.def(g+'==="cw"?'+Lc+":"+af)});case js:return E(function(p){return d.command(pt(p)&&p.length===4,"color.mask must be length 4 array",c.commandStr),p.map(function(x){return!!x})},function(p,x,g){return d.optional(function(){p.assert(x,p.shared.isArrayLike+"("+g+")&&"+g+".length===4","invalid color.mask")}),Yt(4,function(R){return"!!"+g+"["+R+"]"})});case Ys:return E(function(p){d.command(typeof p=="object"&&p,w,c.commandStr);var x="value"in p?p.value:1,g=!!p.invert;return d.command(typeof x=="number"&&x>=0&&x<=1,"sample.coverage.value must be a number between 0 and 1",c.commandStr),[x,g]},function(p,x,g){d.optional(function(){p.assert(x,g+"&&typeof "+g+'==="object"',"invalid sample.coverage")});var R=x.def('"value" in ',g,"?+",g,".value:1"),F=x.def("!!",g,".invert");return[R,F]})}}),L}function tt(m,c){var T=m.static,P=m.dynamic,L={};return Object.keys(T).forEach(function(A){var w=T[A],E;if(typeof w=="number"||typeof w=="boolean")E=St(function(){return w});else if(typeof w=="function"){var p=w._reglType;p==="texture2d"||p==="textureCube"?E=St(function(x){return x.link(w)}):p==="framebuffer"||p==="framebufferCube"?(d.command(w.color.length>0,'missing color attachment for framebuffer sent to uniform "'+A+'"',c.commandStr),E=St(function(x){return x.link(w.color[0])})):d.commandRaise('invalid data for uniform "'+A+'"',c.commandStr)}else pt(w)?E=St(function(x){var g=x.global.def("[",Yt(w.length,function(R){return d.command(typeof w[R]=="number"||typeof w[R]=="boolean","invalid uniform "+A,x.commandStr),w[R]}),"]");return g}):d.commandRaise('invalid or missing data for uniform "'+A+'"',c.commandStr);E.value=w,L[A]=E}),Object.keys(P).forEach(function(A){var w=P[A];L[A]=Kt(w,function(E,p){return E.invoke(p,w)})}),L}function Et(m,c){var T=m.static,P=m.dynamic,L={};return Object.keys(T).forEach(function(A){var w=T[A],E=h.id(A),p=new k;if(pa(w))p.state=Qr,p.buffer=j.getBuffer(j.create(w,ei,!1,!0)),p.type=0;else{var x=j.getBuffer(w);if(x)p.state=Qr,p.buffer=x,p.type=0;else if(d.command(typeof w=="object"&&w,"invalid data for attribute "+A,c.commandStr),"constant"in w){var g=w.constant;p.buffer="null",p.state=Ns,typeof g=="number"?p.x=g:(d.command(pt(g)&&g.length>0&&g.length<=4,"invalid constant for attribute "+A,c.commandStr),Zr.forEach(function(Le,be){be<g.length&&(p[Le]=g[be])}))}else{pa(w.buffer)?x=j.getBuffer(j.create(w.buffer,ei,!1,!0)):x=j.getBuffer(w.buffer),d.command(!!x,'missing buffer for attribute "'+A+'"',c.commandStr);var R=w.offset|0;d.command(R>=0,'invalid offset for attribute "'+A+'"',c.commandStr);var F=w.stride|0;d.command(F>=0&&F<256,'invalid stride for attribute "'+A+'", must be integer betweeen [0, 255]',c.commandStr);var V=w.size|0;d.command(!("size"in w)||V>0&&V<=4,'invalid size for attribute "'+A+'", must be 1,2,3,4',c.commandStr);var W=!!w.normalized,ue=0;"type"in w&&(d.commandParameter(w.type,mr,"invalid type for attribute "+A,c.commandStr),ue=mr[w.type]);var Me=w.divisor|0;d.optional(function(){"divisor"in w&&(d.command(Me===0||te,'cannot specify divisor for attribute "'+A+'", instancing not supported',c.commandStr),d.command(Me>=0,'invalid divisor for attribute "'+A+'"',c.commandStr));var Le=c.commandStr,be=["buffer","offset","divisor","normalized","type","size","stride"];Object.keys(w).forEach(function(q){d.command(be.indexOf(q)>=0,'unknown parameter "'+q+'" for attribute pointer "'+A+'" (valid parameters are '+be+")",Le)})}),p.buffer=x,p.state=Qr,p.size=V,p.normalized=W,p.type=ue||x.dtype,p.offset=R,p.stride=F,p.divisor=Me}}L[A]=St(function(Le,be){var q=Le.attribCache;if(E in q)return q[E];var U={isStream:!1};return Object.keys(p).forEach(function(Pe){U[Pe]=p[Pe]}),p.buffer&&(U.buffer=Le.link(p.buffer),U.type=U.type||U.buffer+".dtype"),q[E]=U,U})}),Object.keys(P).forEach(function(A){var w=P[A];function E(p,x){var g=p.invoke(x,w),R=p.shared,F=p.constants,V=R.isBufferArgs,W=R.buffer;d.optional(function(){p.assert(x,g+"&&(typeof "+g+'==="object"||typeof '+g+'==="function")&&('+V+"("+g+")||"+W+".getBuffer("+g+")||"+W+".getBuffer("+g+".buffer)||"+V+"("+g+'.buffer)||("constant" in '+g+"&&(typeof "+g+'.constant==="number"||'+R.isArrayLike+"("+g+".constant))))",'invalid dynamic attribute "'+A+'"')});var ue={isStream:x.def(!1)},Me=new k;Me.state=Qr,Object.keys(Me).forEach(function(U){ue[U]=x.def(""+Me[U])});var Le=ue.buffer,be=ue.type;x("if(",V,"(",g,")){",ue.isStream,"=true;",Le,"=",W,".createStream(",ei,",",g,");",be,"=",Le,".dtype;","}else{",Le,"=",W,".getBuffer(",g,");","if(",Le,"){",be,"=",Le,".dtype;",'}else if("constant" in ',g,"){",ue.state,"=",Ns,";","if(typeof "+g+'.constant === "number"){',ue[Zr[0]],"=",g,".constant;",Zr.slice(1).map(function(U){return ue[U]}).join("="),"=0;","}else{",Zr.map(function(U,Pe){return ue[U]+"="+g+".constant.length>"+Pe+"?"+g+".constant["+Pe+"]:0;"}).join(""),"}}else{","if(",V,"(",g,".buffer)){",Le,"=",W,".createStream(",ei,",",g,".buffer);","}else{",Le,"=",W,".getBuffer(",g,".buffer);","}",be,'="type" in ',g,"?",F.glTypes,"[",g,".type]:",Le,".dtype;",ue.normalized,"=!!",g,".normalized;");function q(U){x(ue[U],"=",g,".",U,"|0;")}return q("size"),q("offset"),q("stride"),q("divisor"),x("}}"),x.exit("if(",ue.isStream,"){",W,".destroyStream(",Le,");","}"),ue}L[A]=Kt(w,E)}),L}function ht(m){var c=m.static,T=m.dynamic,P={};return Object.keys(c).forEach(function(L){var A=c[L];P[L]=St(function(w,E){return typeof A=="number"||typeof A=="boolean"?""+A:w.link(A)})}),Object.keys(T).forEach(function(L){var A=T[L];P[L]=Kt(A,function(w,E){return w.invoke(E,A)})}),P}function Tt(m,c,T,P,L){var A=m.static,w=m.dynamic;d.optional(function(){var q=[xr,Fi,Ri,br,_r,ia,Sr,oa,Li,Ii].concat(Fe);function U(Pe){Object.keys(Pe).forEach(function(we){d.command(q.indexOf(we)>=0,'unknown parameter "'+we+'"',L.commandStr)})}U(A),U(w)});var E=$e(m,c),p=ye(m),x=ze(m,p,L),g=vt(m,L),R=yt(m,L),F=Je(m,L,E);function V(q){var U=x[q];U&&(R[q]=U)}V(Gn),V(Se(ra));var W=Object.keys(R).length>0,ue={framebuffer:p,draw:g,shader:F,state:R,dirty:W,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(ue.profile=pe(m),ue.uniforms=tt(T,L),ue.drawVAO=ue.scopeVAO=g.vao,!ue.drawVAO&&F.program&&!E&&_.angle_instanced_arrays&&g.static.elements){var Me=!0,Le=F.program.attributes.map(function(q){var U=c.static[q];return Me=Me&&!!U,U});if(Me&&Le.length>0){var be=ie.getVAO(ie.createVAO({attributes:Le,elements:g.static.elements}));ue.drawVAO=new Rt(null,null,null,function(q,U){return q.link(be)}),ue.useVAO=!0}}return E?ue.useVAO=!0:ue.attributes=Et(c,L),ue.context=ht(P),ue}function Pt(m,c,T){var P=m.shared,L=P.context,A=m.scope();Object.keys(T).forEach(function(w){c.save(L,"."+w);var E=T[w],p=E.append(m,c);Array.isArray(p)?A(L,".",w,"=[",p.join(),"];"):A(L,".",w,"=",p,";")}),c(A)}function Ct(m,c,T,P){var L=m.shared,A=L.gl,w=L.framebuffer,E;xe&&(E=c.def(L.extensions,".webgl_draw_buffers"));var p=m.constants,x=p.drawBuffer,g=p.backBuffer,R;T?R=T.append(m,c):R=c.def(w,".next"),P||c("if(",R,"!==",w,".cur){"),c("if(",R,"){",A,".bindFramebuffer(",Dc,",",R,".framebuffer);"),xe&&c(E,".drawBuffersWEBGL(",x,"[",R,".colorAttachments.length]);"),c("}else{",A,".bindFramebuffer(",Dc,",null);"),xe&&c(E,".drawBuffersWEBGL(",g,");"),c("}",w,".cur=",R,";"),P||c("}")}function It(m,c,T){var P=m.shared,L=P.gl,A=m.current,w=m.next,E=P.current,p=P.next,x=m.cond(E,".dirty");Fe.forEach(function(g){var R=Se(g);if(!(R in T.state)){var F,V;if(R in w){F=w[R],V=A[R];var W=Yt(ge[R].length,function(Me){return x.def(F,"[",Me,"]")});x(m.cond(W.map(function(Me,Le){return Me+"!=="+V+"["+Le+"]"}).join("||")).then(L,".",$[R],"(",W,");",W.map(function(Me,Le){return V+"["+Le+"]="+Me}).join(";"),";"))}else{F=x.def(p,".",R);var ue=m.cond(F,"!==",E,".",R);x(ue),R in X?ue(m.cond(F).then(L,".enable(",X[R],");").else(L,".disable(",X[R],");"),E,".",R,"=",F,";"):ue(L,".",$[R],"(",F,");",E,".",R,"=",F,";")}}}),Object.keys(T.state).length===0&&x(E,".dirty=false;"),c(x)}function Gt(m,c,T,P){var L=m.shared,A=m.current,w=L.current,E=L.gl;Mc(Object.keys(T)).forEach(function(p){var x=T[p];if(!(P&&!P(x))){var g=x.append(m,c);if(X[p]){var R=X[p];Jn(x)?g?c(E,".enable(",R,");"):c(E,".disable(",R,");"):c(m.cond(g).then(E,".enable(",R,");").else(E,".disable(",R,");")),c(w,".",p,"=",g,";")}else if(pt(g)){var F=A[p];c(E,".",$[p],"(",g,");",g.map(function(V,W){return F+"["+W+"]="+V}).join(";"),";")}else c(E,".",$[p],"(",g,");",w,".",p,"=",g,";")}})}function xt(m,c){te&&(m.instancing=c.def(m.shared.extensions,".angle_instanced_arrays"))}function qe(m,c,T,P,L){var A=m.shared,w=m.stats,E=A.current,p=A.timer,x=T.profile;function g(){return typeof performance>"u"?"Date.now()":"performance.now()"}var R,F;function V(q){R=c.def(),q(R,"=",g(),";"),typeof L=="string"?q(w,".count+=",L,";"):q(w,".count++;"),J&&(P?(F=c.def(),q(F,"=",p,".getNumPendingQueries();")):q(p,".beginQuery(",w,");"))}function W(q){q(w,".cpuTime+=",g(),"-",R,";"),J&&(P?q(p,".pushScopeStats(",F,",",p,".getNumPendingQueries(),",w,");"):q(p,".endQuery();"))}function ue(q){var U=c.def(E,".profile");c(E,".profile=",q,";"),c.exit(E,".profile=",U,";")}var Me;if(x){if(Jn(x)){x.enable?(V(c),W(c.exit),ue("true")):ue("false");return}Me=x.append(m,c),ue(Me)}else Me=c.def(E,".profile");var Le=m.block();V(Le),c("if(",Me,"){",Le,"}");var be=m.block();W(be),c.exit("if(",Me,"){",be,"}")}function Bt(m,c,T,P,L){var A=m.shared;function w(p){switch(p){case aa:case ua:case ha:return 2;case sa:case la:case da:return 3;case fa:case ca:case ma:return 4;default:return 1}}function E(p,x,g){var R=A.gl,F=c.def(p,".location"),V=c.def(A.attributes,"[",F,"]"),W=g.state,ue=g.buffer,Me=[g.x,g.y,g.z,g.w],Le=["buffer","normalized","offset","stride"];function be(){c("if(!",V,".buffer){",R,".enableVertexAttribArray(",F,");}");var U=g.type,Pe;if(g.size?Pe=c.def(g.size,"||",x):Pe=x,c("if(",V,".type!==",U,"||",V,".size!==",Pe,"||",Le.map(function(Oe){return V+"."+Oe+"!=="+g[Oe]}).join("||"),"){",R,".bindBuffer(",ei,",",ue,".buffer);",R,".vertexAttribPointer(",[F,Pe,U,g.normalized,g.stride,g.offset],");",V,".type=",U,";",V,".size=",Pe,";",Le.map(function(Oe){return V+"."+Oe+"="+g[Oe]+";"}).join(""),"}"),te){var we=g.divisor;c("if(",V,".divisor!==",we,"){",m.instancing,".vertexAttribDivisorANGLE(",[F,we],");",V,".divisor=",we,";}")}}function q(){c("if(",V,".buffer){",R,".disableVertexAttribArray(",F,");",V,".buffer=null;","}if(",Zr.map(function(U,Pe){return V+"."+U+"!=="+Me[Pe]}).join("||"),"){",R,".vertexAttrib4f(",F,",",Me,");",Zr.map(function(U,Pe){return V+"."+U+"="+Me[Pe]+";"}).join(""),"}")}W===Qr?be():W===Ns?q():(c("if(",W,"===",Qr,"){"),be(),c("}else{"),q(),c("}"))}P.forEach(function(p){var x=p.name,g=T.attributes[x],R;if(g){if(!L(g))return;R=g.append(m,c)}else{if(!L(Nc))return;var F=m.scopeAttrib(x);d.optional(function(){m.assert(c,F+".state","missing attribute "+x)}),R={},Object.keys(new k).forEach(function(V){R[V]=c.def(F,".",V)})}E(m.link(p),w(p.info.type),R)})}function ot(m,c,T,P,L,A){for(var w=m.shared,E=w.gl,p={},x,g=0;g<P.length;++g){var R=P[g],F=R.name,V=R.info.type,W=R.info.size,ue=T.uniforms[F];if(W>1){if(!ue)continue;var Me=F.replace("[0]","");if(p[Me])continue;p[Me]=1}var Le=m.link(R),be=Le+".location",q;if(ue){if(!L(ue))continue;if(Jn(ue)){var U=ue.value;if(d.command(U!==null&&typeof U<"u",'missing uniform "'+F+'"',m.commandStr),V===Mi||V===Ni){d.command(typeof U=="function"&&(V===Mi&&(U._reglType==="texture2d"||U._reglType==="framebuffer")||V===Ni&&(U._reglType==="textureCube"||U._reglType==="framebufferCube")),"invalid texture for uniform "+F,m.commandStr);var Pe=m.link(U._texture||U.color[0]._texture);c(E,".uniform1i(",be,",",Pe+".bind());"),c.exit(Pe,".unbind();")}else if(V===Di||V===zi||V===Oi){d.optional(function(){d.command(pt(U),"invalid matrix for uniform "+F,m.commandStr),d.command(V===Di&&U.length===4||V===zi&&U.length===9||V===Oi&&U.length===16,"invalid length for matrix uniform "+F,m.commandStr)});var we=m.global.def("new Float32Array(["+Array.prototype.slice.call(U)+"])"),Oe=2;V===zi?Oe=3:V===Oi&&(Oe=4),c(E,".uniformMatrix",Oe,"fv(",be,",false,",we,");")}else{switch(V){case tf:W===1?d.commandType(U,"number","uniform "+F,m.commandStr):d.command(pt(U)&&U.length===W,"uniform "+F,m.commandStr),x="1f";break;case aa:d.command(pt(U)&&U.length&&U.length%2===0&&U.length<=W*2,"uniform "+F,m.commandStr),x="2f";break;case sa:d.command(pt(U)&&U.length&&U.length%3===0&&U.length<=W*3,"uniform "+F,m.commandStr),x="3f";break;case fa:d.command(pt(U)&&U.length&&U.length%4===0&&U.length<=W*4,"uniform "+F,m.commandStr),x="4f";break;case rf:W===1?d.commandType(U,"boolean","uniform "+F,m.commandStr):d.command(pt(U)&&U.length===W,"uniform "+F,m.commandStr),x="1i";break;case nf:W===1?d.commandType(U,"number","uniform "+F,m.commandStr):d.command(pt(U)&&U.length===W,"uniform "+F,m.commandStr),x="1i";break;case ha:d.command(pt(U)&&U.length&&U.length%2===0&&U.length<=W*2,"uniform "+F,m.commandStr),x="2i";break;case ua:d.command(pt(U)&&U.length&&U.length%2===0&&U.length<=W*2,"uniform "+F,m.commandStr),x="2i";break;case da:d.command(pt(U)&&U.length&&U.length%3===0&&U.length<=W*3,"uniform "+F,m.commandStr),x="3i";break;case la:d.command(pt(U)&&U.length&&U.length%3===0&&U.length<=W*3,"uniform "+F,m.commandStr),x="3i";break;case ma:d.command(pt(U)&&U.length&&U.length%4===0&&U.length<=W*4,"uniform "+F,m.commandStr),x="4i";break;case ca:d.command(pt(U)&&U.length&&U.length%4===0&&U.length<=W*4,"uniform "+F,m.commandStr),x="4i";break}W>1?(x+="v",U=m.global.def("["+Array.prototype.slice.call(U)+"]")):U=pt(U)?Array.prototype.slice.call(U):U,c(E,".uniform",x,"(",be,",",U,");")}continue}else q=ue.append(m,c)}else{if(!L(Nc))continue;q=c.def(w.uniforms,"[",h.id(F),"]")}V===Mi?(d(!Array.isArray(q),"must specify a scalar prop for textures"),c("if(",q,"&&",q,'._reglType==="framebuffer"){',q,"=",q,".color[0];","}")):V===Ni&&(d(!Array.isArray(q),"must specify a scalar prop for cube maps"),c("if(",q,"&&",q,'._reglType==="framebufferCube"){',q,"=",q,".color[0];","}")),d.optional(function(){function rn(Jt,va){m.assert(c,Jt,'bad data or missing for uniform "'+F+'". '+va)}function Pr(Jt,va){va===1&&d(!Array.isArray(q),"must not specify an array type for uniform"),rn("Array.isArray("+q+") && typeof "+q+'[0]===" '+Jt+'" || typeof '+q+'==="'+Jt+'"',"invalid type, expected "+Jt)}function un(Jt,va,ga){Array.isArray(q)?d(q.length&&q.length%Jt===0&&q.length<=Jt*ga,"must have length of "+(ga===1?"":"n * ")+Jt):rn(w.isArrayLike+"("+q+")&&"+q+".length && "+q+".length % "+Jt+" === 0 && "+q+".length<="+Jt*ga,"invalid vector, should have length of "+(ga===1?"":"n * ")+Jt,m.commandStr)}function jc(Jt){d(!Array.isArray(q),"must not specify a value type"),rn("typeof "+q+'==="function"&&'+q+'._reglType==="texture'+(Jt===kc?"2d":"Cube")+'"',"invalid texture type",m.commandStr)}switch(V){case nf:Pr("number",W);break;case ua:un(2,"number",W);break;case la:un(3,"number",W);break;case ca:un(4,"number",W);break;case tf:Pr("number",W);break;case aa:un(2,"number",W);break;case sa:un(3,"number",W);break;case fa:un(4,"number",W);break;case rf:Pr("boolean",W);break;case ha:un(2,"boolean",W);break;case da:un(3,"boolean",W);break;case ma:un(4,"boolean",W);break;case Di:un(4,"number",W);break;case zi:un(9,"number",W);break;case Oi:un(16,"number",W);break;case Mi:jc(kc);break;case Ni:jc(Px);break}});var ft=1;switch(V){case Mi:case Ni:var Ut=c.def(q,"._texture");c(E,".uniform1i(",be,",",Ut,".bind());"),c.exit(Ut,".unbind();");continue;case nf:case rf:x="1i";break;case ua:case ha:x="2i",ft=2;break;case la:case da:x="3i",ft=3;break;case ca:case ma:x="4i",ft=4;break;case tf:x="1f";break;case aa:x="2f",ft=2;break;case sa:x="3f",ft=3;break;case fa:x="4f",ft=4;break;case Di:x="Matrix2fv";break;case zi:x="Matrix3fv";break;case Oi:x="Matrix4fv";break}if(x.indexOf("Matrix")===-1&&W>1&&(x+="v",ft=1),x.charAt(0)==="M"){c(E,".uniform",x,"(",be,",");var Ar=Math.pow(V-Di+2,2),Bn=m.global.def("new Float32Array(",Ar,")");Array.isArray(q)?c("false,(",Yt(Ar,function(rn){return Bn+"["+rn+"]="+q[rn]}),",",Bn,")"):c("false,(Array.isArray(",q,")||",q," instanceof Float32Array)?",q,":(",Yt(Ar,function(rn){return Bn+"["+rn+"]="+q+"["+rn+"]"}),",",Bn,")"),c(");")}else if(ft>1){for(var Cn=[],er=[],Er=0;Er<ft;++Er)Array.isArray(q)?er.push(q[Er]):er.push(c.def(q+"["+Er+"]")),A&&Cn.push(c.def());A&&c("if(!",m.batchId,"||",Cn.map(function(rn,Pr){return rn+"!=="+er[Pr]}).join("||"),"){",Cn.map(function(rn,Pr){return rn+"="+er[Pr]+";"}).join("")),c(E,".uniform",x,"(",be,",",er.join(","),");"),A&&c("}")}else{if(d(!Array.isArray(q),"uniform value must not be an array"),A){var Hc=c.def();c("if(!",m.batchId,"||",Hc,"!==",q,"){",Hc,"=",q,";")}c(E,".uniform",x,"(",be,",",q,");"),A&&c("}")}}}function Ie(m,c,T,P){var L=m.shared,A=L.gl,w=L.draw,E=P.draw;function p(){var Pe=E.elements,we,Oe=c;return Pe?((Pe.contextDep&&P.contextDynamic||Pe.propDep)&&(Oe=T),we=Pe.append(m,Oe),E.elementsActive&&Oe("if("+we+")"+A+".bindBuffer("+ef+","+we+".buffer.buffer);")):(we=Oe.def(),Oe(we,"=",w,".",br,";","if(",we,"){",A,".bindBuffer(",ef,",",we,".buffer.buffer);}","else if(",L.vao,".currentVAO){",we,"=",m.shared.elements+".getElements("+L.vao,".currentVAO.elements);",Z?"":"if("+we+")"+A+".bindBuffer("+ef+","+we+".buffer.buffer);","}")),we}function x(){var Pe=E.count,we,Oe=c;return Pe?((Pe.contextDep&&P.contextDynamic||Pe.propDep)&&(Oe=T),we=Pe.append(m,Oe),d.optional(function(){Pe.MISSING&&m.assert(c,"false","missing vertex count"),Pe.DYNAMIC&&m.assert(Oe,we+">=0","missing vertex count")})):(we=Oe.def(w,".",Sr),d.optional(function(){m.assert(Oe,we+">=0","missing vertex count")})),we}var g=p();function R(Pe){var we=E[Pe];return we?we.contextDep&&P.contextDynamic||we.propDep?we.append(m,T):we.append(m,c):c.def(w,".",Pe)}var F=R(_r),V=R(ia),W=x();if(typeof W=="number"){if(W===0)return}else T("if(",W,"){"),T.exit("}");var ue,Me;te&&(ue=R(oa),Me=m.instancing);var Le=g+".type",be=E.elements&&Jn(E.elements)&&!E.vaoActive;function q(){function Pe(){T(Me,".drawElementsInstancedANGLE(",[F,W,Le,V+"<<(("+Le+"-"+fc+")>>1)",ue],");")}function we(){T(Me,".drawArraysInstancedANGLE(",[F,V,W,ue],");")}g&&g!=="null"?be?Pe():(T("if(",g,"){"),Pe(),T("}else{"),we(),T("}")):we()}function U(){function Pe(){T(A+".drawElements("+[F,W,Le,V+"<<(("+Le+"-"+fc+")>>1)"]+");")}function we(){T(A+".drawArrays("+[F,V,W]+");")}g&&g!=="null"?be?Pe():(T("if(",g,"){"),Pe(),T("}else{"),we(),T("}")):we()}te&&(typeof ue!="number"||ue>=0)?typeof ue=="string"?(T("if(",ue,">0){"),q(),T("}else if(",ue,"<0){"),U(),T("}")):q():U()}function et(m,c,T,P,L){var A=Ne(),w=A.proc("body",L);return d.optional(function(){A.commandStr=c.commandStr,A.command=A.link(c.commandStr)}),te&&(A.instancing=w.def(A.shared.extensions,".angle_instanced_arrays")),m(A,w,T,P),A.compile().body}function nt(m,c,T,P){xt(m,c),T.useVAO?T.drawVAO?c(m.shared.vao,".setVAO(",T.drawVAO.append(m,c),");"):c(m.shared.vao,".setVAO(",m.shared.vao,".targetVAO);"):(c(m.shared.vao,".setVAO(null);"),Bt(m,c,T,P.attributes,function(){return!0})),ot(m,c,T,P.uniforms,function(){return!0},!1),Ie(m,c,c,T)}function bt(m,c){var T=m.proc("draw",1);xt(m,T),Pt(m,T,c.context),Ct(m,T,c.framebuffer),It(m,T,c),Gt(m,T,c.state),qe(m,T,c,!1,!0);var P=c.shader.progVar.append(m,T);if(T(m.shared.gl,".useProgram(",P,".program);"),c.shader.program)nt(m,T,c,c.shader.program);else{T(m.shared.vao,".setVAO(null);");var L=m.global.def("{}"),A=T.def(P,".id"),w=T.def(L,"[",A,"]");T(m.cond(w).then(w,".call(this,a0);").else(w,"=",L,"[",A,"]=",m.link(function(E){return et(nt,m,c,E,1)}),"(",P,");",w,".call(this,a0);"))}Object.keys(c.state).length>0&&T(m.shared.current,".dirty=true;"),m.shared.vao&&T(m.shared.vao,".setVAO(null);")}function Pn(m,c,T,P){m.batchId="a1",xt(m,c);function L(){return!0}Bt(m,c,T,P.attributes,L),ot(m,c,T,P.uniforms,L,!1),Ie(m,c,c,T)}function wr(m,c,T,P){xt(m,c);var L=T.contextDep,A=c.def(),w="a0",E="a1",p=c.def();m.shared.props=p,m.batchId=A;var x=m.scope(),g=m.scope();c(x.entry,"for(",A,"=0;",A,"<",E,";++",A,"){",p,"=",w,"[",A,"];",g,"}",x.exit);function R(Le){return Le.contextDep&&L||Le.propDep}function F(Le){return!R(Le)}if(T.needsContext&&Pt(m,g,T.context),T.needsFramebuffer&&Ct(m,g,T.framebuffer),Gt(m,g,T.state,R),T.profile&&R(T.profile)&&qe(m,g,T,!1,!0),P)T.useVAO?T.drawVAO?R(T.drawVAO)?g(m.shared.vao,".setVAO(",T.drawVAO.append(m,g),");"):x(m.shared.vao,".setVAO(",T.drawVAO.append(m,x),");"):x(m.shared.vao,".setVAO(",m.shared.vao,".targetVAO);"):(x(m.shared.vao,".setVAO(null);"),Bt(m,x,T,P.attributes,F),Bt(m,g,T,P.attributes,R)),ot(m,x,T,P.uniforms,F,!1),ot(m,g,T,P.uniforms,R,!0),Ie(m,x,g,T);else{var V=m.global.def("{}"),W=T.shader.progVar.append(m,g),ue=g.def(W,".id"),Me=g.def(V,"[",ue,"]");g(m.shared.gl,".useProgram(",W,".program);","if(!",Me,"){",Me,"=",V,"[",ue,"]=",m.link(function(Le){return et(Pn,m,T,Le,2)}),"(",W,");}",Me,".call(this,a0[",A,"],",A,");")}}function y(m,c){var T=m.proc("batch",2);m.batchId="0",xt(m,T);var P=!1,L=!0;Object.keys(c.context).forEach(function(V){P=P||c.context[V].propDep}),P||(Pt(m,T,c.context),L=!1);var A=c.framebuffer,w=!1;A?(A.propDep?P=w=!0:A.contextDep&&P&&(w=!0),w||Ct(m,T,A)):Ct(m,T,null),c.state.viewport&&c.state.viewport.propDep&&(P=!0);function E(V){return V.contextDep&&P||V.propDep}It(m,T,c),Gt(m,T,c.state,function(V){return!E(V)}),(!c.profile||!E(c.profile))&&qe(m,T,c,!1,"a1"),c.contextDep=P,c.needsContext=L,c.needsFramebuffer=w;var p=c.shader.progVar;if(p.contextDep&&P||p.propDep)wr(m,T,c,null);else{var x=p.append(m,T);if(T(m.shared.gl,".useProgram(",x,".program);"),c.shader.program)wr(m,T,c,c.shader.program);else{T(m.shared.vao,".setVAO(null);");var g=m.global.def("{}"),R=T.def(x,".id"),F=T.def(g,"[",R,"]");T(m.cond(F).then(F,".call(this,a0,a1);").else(F,"=",g,"[",R,"]=",m.link(function(V){return et(wr,m,c,V,2)}),"(",x,");",F,".call(this,a0,a1);"))}}Object.keys(c.state).length>0&&T(m.shared.current,".dirty=true;"),m.shared.vao&&T(m.shared.vao,".setVAO(null);")}function M(m,c){var T=m.proc("scope",3);m.batchId="a2";var P=m.shared,L=P.current;Pt(m,T,c.context),c.framebuffer&&c.framebuffer.append(m,T),Mc(Object.keys(c.state)).forEach(function(w){var E=c.state[w],p=E.append(m,T);pt(p)?p.forEach(function(x,g){T.set(m.next[w],"["+g+"]",x)}):T.set(P.next,"."+w,p)}),qe(m,T,c,!0,!0),[br,ia,Sr,oa,_r].forEach(function(w){var E=c.draw[w];E&&T.set(P.draw,"."+w,""+E.append(m,T))}),Object.keys(c.uniforms).forEach(function(w){var E=c.uniforms[w].append(m,T);Array.isArray(E)&&(E="["+E.join()+"]"),T.set(P.uniforms,"["+h.id(w)+"]",E)}),Object.keys(c.attributes).forEach(function(w){var E=c.attributes[w].append(m,T),p=m.scopeAttrib(w);Object.keys(new k).forEach(function(x){T.set(p,"."+x,E[x])})}),c.scopeVAO&&T.set(P.vao,".targetVAO",c.scopeVAO.append(m,T));function A(w){var E=c.shader[w];E&&T.set(P.shader,"."+w,E.append(m,T))}A(Fi),A(Ri),Object.keys(c.state).length>0&&(T(L,".dirty=true;"),T.exit(L,".dirty=true;")),T("a1(",m.shared.context,",a0,",m.batchId,");")}function I(m){if(!(typeof m!="object"||pt(m))){for(var c=Object.keys(m),T=0;T<c.length;++T)if(Lt.isDynamic(m[c[T]]))return!0;return!1}}function _e(m,c,T){var P=c.static[T];if(!P||!I(P))return;var L=m.global,A=Object.keys(P),w=!1,E=!1,p=!1,x=m.global.def("{}");A.forEach(function(R){var F=P[R];if(Lt.isDynamic(F)){typeof F=="function"&&(F=P[R]=Lt.unbox(F));var V=Kt(F,null);w=w||V.thisDep,p=p||V.propDep,E=E||V.contextDep}else{switch(L(x,".",R,"="),typeof F){case"number":L(F);break;case"string":L('"',F,'"');break;case"object":Array.isArray(F)&&L("[",F.join(),"]");break;default:L(m.link(F));break}L(";")}});function g(R,F){A.forEach(function(V){var W=P[V];if(Lt.isDynamic(W)){var ue=R.invoke(F,W);F(x,".",V,"=",ue,";")}})}c.dynamic[T]=new Lt.DynamicVariable(na,{thisDep:w,contextDep:E,propDep:p,ref:x,append:g}),delete c.static[T]}function Ke(m,c,T,P,L){var A=Ne();A.stats=A.link(L),Object.keys(c.static).forEach(function(E){_e(A,c,E)}),wx.forEach(function(E){_e(A,m,E)});var w=Tt(m,c,T,P,A);return bt(A,w),M(A,w),y(A,w),r(A.compile(),{destroy:function(){w.shader.program.destroy()}})}return{next:me,current:ge,procs:function(){var m=Ne(),c=m.proc("poll"),T=m.proc("refresh"),P=m.block();c(P),T(P);var L=m.shared,A=L.gl,w=L.next,E=L.current;P(E,".dirty=false;"),Ct(m,c),Ct(m,T,null,!0);var p;te&&(p=m.link(te)),_.oes_vertex_array_object&&T(m.link(_.oes_vertex_array_object),".bindVertexArrayOES(null);");for(var x=0;x<O.maxAttributes;++x){var g=T.def(L.attributes,"[",x,"]"),R=m.cond(g,".buffer");R.then(A,".enableVertexAttribArray(",x,");",A,".bindBuffer(",ei,",",g,".buffer.buffer);",A,".vertexAttribPointer(",x,",",g,".size,",g,".type,",g,".normalized,",g,".stride,",g,".offset);").else(A,".disableVertexAttribArray(",x,");",A,".vertexAttrib4f(",x,",",g,".x,",g,".y,",g,".z,",g,".w);",g,".buffer=null;"),T(R),te&&T(p,".vertexAttribDivisorANGLE(",x,",",g,".divisor);")}return T(m.shared.vao,".currentVAO=null;",m.shared.vao,".setVAO(",m.shared.vao,".targetVAO);"),Object.keys(X).forEach(function(F){var V=X[F],W=P.def(w,".",F),ue=m.block();ue("if(",W,"){",A,".enable(",V,")}else{",A,".disable(",V,")}",E,".",F,"=",W,";"),T(ue),c("if(",W,"!==",E,".",F,"){",ue,"}")}),Object.keys($).forEach(function(F){var V=$[F],W=ge[F],ue,Me,Le=m.block();if(Le(A,".",V,"("),pt(W)){var be=W.length;ue=m.global.def(w,".",F),Me=m.global.def(E,".",F),Le(Yt(be,function(q){return ue+"["+q+"]"}),");",Yt(be,function(q){return Me+"["+q+"]="+ue+"["+q+"];"}).join("")),c("if(",Yt(be,function(q){return ue+"["+q+"]!=="+Me+"["+q+"]"}).join("||"),"){",Le,"}")}else ue=P.def(w,".",F),Me=P.def(E,".",F),Le(ue,");",E,".",F,"=",ue,";"),c("if(",ue,"!==",Me,"){",Le,"}");T(Le)}),m.compile()}(),compile:Ke}}function $x(){return{vaoCount:0,bufferCount:0,elementsCount:0,framebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0}}var Hx=34918,jx=34919,Gc=35007,Xx=function(a,h){if(!h.ext_disjoint_timer_query)return null;var _=[];function O(){return _.pop()||h.ext_disjoint_timer_query.createQueryEXT()}function j(te){_.push(te)}var z=[];function B(te){var xe=O();h.ext_disjoint_timer_query.beginQueryEXT(Gc,xe),z.push(xe),J(z.length-1,z.length,te)}function K(){h.ext_disjoint_timer_query.endQueryEXT(Gc)}function Q(){this.startQueryIndex=-1,this.endQueryIndex=-1,this.sum=0,this.stats=null}var ie=[];function ae(){return ie.pop()||new Q}function oe(te){ie.push(te)}var le=[];function J(te,xe,Z){var ge=ae();ge.startQueryIndex=te,ge.endQueryIndex=xe,ge.sum=0,ge.stats=Z,le.push(ge)}var ne=[],k=[];function G(){var te,xe,Z=z.length;if(Z!==0){k.length=Math.max(k.length,Z+1),ne.length=Math.max(ne.length,Z+1),ne[0]=0,k[0]=0;var ge=0;for(te=0,xe=0;xe<z.length;++xe){var me=z[xe];h.ext_disjoint_timer_query.getQueryObjectEXT(me,jx)?(ge+=h.ext_disjoint_timer_query.getQueryObjectEXT(me,Hx),j(me)):z[te++]=me,ne[xe+1]=ge,k[xe+1]=te}for(z.length=te,te=0,xe=0;xe<le.length;++xe){var Fe=le[xe],X=Fe.startQueryIndex,$=Fe.endQueryIndex;Fe.sum+=ne[$]-ne[X];var Se=k[X],ce=k[$];ce===Se?(Fe.stats.gpuTime+=Fe.sum/1e6,oe(Fe)):(Fe.startQueryIndex=Se,Fe.endQueryIndex=ce,le[te++]=Fe)}le.length=te}}return{beginQuery:B,endQuery:K,pushScopeStats:J,update:G,getNumPendingQueries:function(){return z.length},clear:function(){_.push.apply(_,z);for(var te=0;te<_.length;te++)h.ext_disjoint_timer_query.deleteQueryEXT(_[te]);z.length=0,_.length=0},restore:function(){z.length=0,_.length=0}}},Wx=16384,qx=256,Yx=1024,Zx=34962,Bc="webglcontextlost",Uc="webglcontextrestored",Vc=1,Qx=2,Kx=3;function $c(a,h){for(var _=0;_<a.length;++_)if(a[_]===h)return _;return-1}function Jx(a){var h=Ft(a);if(!h)return null;var _=h.gl,O=_.getContextAttributes(),j=_.isContextLost(),z=Xn(_,h);if(!z)return null;var B=ss(),K=$x(),Q=z.extensions,ie=Xx(_,Q),ae=Mr(),oe=_.drawingBufferWidth,le=_.drawingBufferHeight,J={tick:0,time:0,viewportWidth:oe,viewportHeight:le,framebufferWidth:oe,framebufferHeight:le,drawingBufferWidth:oe,drawingBufferHeight:le,pixelRatio:h.pixelRatio},ne={},k={elements:null,primitive:4,count:-1,offset:0,instances:-1},G=Gg(_,Q),te=ty(_,K,h,ge),xe=dy(_,Q,te,K),Z=dx(_,Q,G,K,te,xe,k);function ge(Ie){return Z.destroyBuffer(Ie)}var me=gx(_,B,K,h),Fe=Hy(_,Q,G,function(){Se.procs.poll()},J,K,h),X=jy(_,Q,G,K,h),$=cx(_,Q,G,Fe,X,K),Se=Vx(_,B,Q,G,te,xe,Fe,$,ne,Z,me,k,J,ie,h),ce=bx(_,$,Se.procs.poll,J,O,Q,G),ee=Se.next,he=_.canvas,de=[],Ve=[],Ne=[],pe=[h.onDestroy],ye=null;function ze(){if(de.length===0){ie&&ie.update(),ye=null;return}ye=cr.next(ze),Gt();for(var Ie=de.length-1;Ie>=0;--Ie){var et=de[Ie];et&&et(J,null,0)}_.flush(),ie&&ie.update()}function $e(){!ye&&de.length>0&&(ye=cr.next(ze))}function Je(){ye&&(cr.cancel(ze),ye=null)}function vt(Ie){Ie.preventDefault(),j=!0,Je(),Ve.forEach(function(et){et()})}function yt(Ie){_.getError(),j=!1,z.restore(),me.restore(),te.restore(),Fe.restore(),X.restore(),$.restore(),Z.restore(),ie&&ie.restore(),Se.procs.refresh(),$e(),Ne.forEach(function(et){et()})}he&&(he.addEventListener(Bc,vt,!1),he.addEventListener(Uc,yt,!1));function tt(){de.length=0,Je(),he&&(he.removeEventListener(Bc,vt),he.removeEventListener(Uc,yt)),me.clear(),$.clear(),X.clear(),Z.clear(),Fe.clear(),xe.clear(),te.clear(),ie&&ie.clear(),pe.forEach(function(Ie){Ie()})}function Et(Ie){d(!!Ie,"invalid args to regl({...})"),d.type(Ie,"object","invalid args to regl({...})");function et(L){var A=r({},L);delete A.uniforms,delete A.attributes,delete A.context,delete A.vao,"stencil"in A&&A.stencil.op&&(A.stencil.opBack=A.stencil.opFront=A.stencil.op,delete A.stencil.op);function w(E){if(E in A){var p=A[E];delete A[E],Object.keys(p).forEach(function(x){A[E+"."+x]=p[x]})}}return w("blend"),w("depth"),w("cull"),w("stencil"),w("polygonOffset"),w("scissor"),w("sample"),"vao"in L&&(A.vao=L.vao),A}function nt(L,A){var w={},E={};return Object.keys(L).forEach(function(p){var x=L[p];if(Lt.isDynamic(x)){E[p]=Lt.unbox(x,p);return}else if(A&&Array.isArray(x)){for(var g=0;g<x.length;++g)if(Lt.isDynamic(x[g])){E[p]=Lt.unbox(x,p);return}}w[p]=x}),{dynamic:E,static:w}}var bt=nt(Ie.context||{},!0),Pn=nt(Ie.uniforms||{},!0),wr=nt(Ie.attributes||{},!1),y=nt(et(Ie),!1),M={gpuTime:0,cpuTime:0,count:0},I=Se.compile(y,wr,Pn,bt,M),_e=I.draw,Ke=I.batch,m=I.scope,c=[];function T(L){for(;c.length<L;)c.push(null);return c}function P(L,A){var w;if(j&&d.raise("context lost"),typeof L=="function")return m.call(this,null,L,0);if(typeof A=="function")if(typeof L=="number")for(w=0;w<L;++w)m.call(this,null,A,w);else if(Array.isArray(L))for(w=0;w<L.length;++w)m.call(this,L[w],A,w);else return m.call(this,L,A,0);else if(typeof L=="number"){if(L>0)return Ke.call(this,T(L|0),L|0)}else if(Array.isArray(L)){if(L.length)return Ke.call(this,L,L.length)}else return _e.call(this,L)}return r(P,{stats:M,destroy:function(){I.destroy()}})}var ht=$.setFBO=Et({framebuffer:Lt.define.call(null,Vc,"framebuffer")});function Tt(Ie,et){var nt=0;Se.procs.poll();var bt=et.color;bt&&(_.clearColor(+bt[0]||0,+bt[1]||0,+bt[2]||0,+bt[3]||0),nt|=Wx),"depth"in et&&(_.clearDepth(+et.depth),nt|=qx),"stencil"in et&&(_.clearStencil(et.stencil|0),nt|=Yx),d(!!nt,"called regl.clear with no buffer specified"),_.clear(nt)}function Pt(Ie){if(d(typeof Ie=="object"&&Ie,"regl.clear() takes an object as input"),"framebuffer"in Ie)if(Ie.framebuffer&&Ie.framebuffer_reglType==="framebufferCube")for(var et=0;et<6;++et)ht(r({framebuffer:Ie.framebuffer.faces[et]},Ie),Tt);else ht(Ie,Tt);else Tt(null,Ie)}function Ct(Ie){d.type(Ie,"function","regl.frame() callback must be a function"),de.push(Ie);function et(){var nt=$c(de,Ie);d(nt>=0,"cannot cancel a frame twice");function bt(){var Pn=$c(de,bt);de[Pn]=de[de.length-1],de.length-=1,de.length<=0&&Je()}de[nt]=bt}return $e(),{cancel:et}}function It(){var Ie=ee.viewport,et=ee.scissor_box;Ie[0]=Ie[1]=et[0]=et[1]=0,J.viewportWidth=J.framebufferWidth=J.drawingBufferWidth=Ie[2]=et[2]=_.drawingBufferWidth,J.viewportHeight=J.framebufferHeight=J.drawingBufferHeight=Ie[3]=et[3]=_.drawingBufferHeight}function Gt(){J.tick+=1,J.time=qe(),It(),Se.procs.poll()}function xt(){Fe.refresh(),It(),Se.procs.refresh(),ie&&ie.update()}function qe(){return(Mr()-ae)/1e3}xt();function Bt(Ie,et){d.type(et,"function","listener callback must be a function");var nt;switch(Ie){case"frame":return Ct(et);case"lost":nt=Ve;break;case"restore":nt=Ne;break;case"destroy":nt=pe;break;default:d.raise("invalid event, must be one of frame,lost,restore,destroy")}return nt.push(et),{cancel:function(){for(var bt=0;bt<nt.length;++bt)if(nt[bt]===et){nt[bt]=nt[nt.length-1],nt.pop();return}}}}var ot=r(Et,{clear:Pt,prop:Lt.define.bind(null,Vc),context:Lt.define.bind(null,Qx),this:Lt.define.bind(null,Kx),draw:Et({}),buffer:function(Ie){return te.create(Ie,Zx,!1,!1)},elements:function(Ie){return xe.create(Ie,!1)},texture:Fe.create2D,cube:Fe.createCube,renderbuffer:X.create,framebuffer:$.create,framebufferCube:$.createCube,vao:Z.createVAO,attributes:O,frame:Ct,on:Bt,limits:G,hasExtension:function(Ie){return G.extensions.indexOf(Ie.toLowerCase())>=0},read:ce,destroy:tt,_gl:_,_refresh:xt,poll:function(){Gt(),ie&&ie.update()},now:qe,stats:K});return h.onDone(null,ot),ot}return Jx})}(io)),io.exports}var Sp=_p();const Tp=Da(Sp),wp="#b3b3b3",Ap=void 0,Ep=void 0,Pp=1,Cp=4,kp="#666666",Lp=.1,Fp=1,Rp=1,Ip="#222222",We={enableSimulation:!0,spaceSize:8192,pointSizeScale:1,linkWidthScale:1,arrowSizeScale:1,renderLinks:!0,curvedLinks:!1,curvedLinkSegments:19,curvedLinkWeight:.8,curvedLinkControlPointDistance:.5,arrowLinks:!1,linkVisibilityDistanceRange:[50,150],linkVisibilityMinTransparency:.25,hoveredPointCursor:"auto",renderHoveredPointRing:!1,hoveredPointRingColor:"white",focusedPointRingColor:"white",focusedPointIndex:void 0,useClassicQuadtree:!1,simulation:{decay:5e3,gravity:.25,center:0,repulsion:1,repulsionTheta:1.15,repulsionQuadtreeLevels:12,linkSpring:1,linkDistance:10,linkDistRandomVariationRange:[1,1.2],repulsionFromMouse:2,friction:.85,cluster:.1},showFPSMonitor:!1,pixelRatio:2,scalePointsOnZoom:!1,scaleLinksOnZoom:!1,enableZoom:!0,enableSimulationDuringZoom:!1,enableDrag:!1,fitViewOnInit:!0,fitViewDelay:250,fitViewPadding:.1,fitViewDuration:250,pointSamplingDistance:150,attribution:"",rescalePositions:void 0,enableRightClickRepulsion:!1},Dp=.7,zp=.95,Op=3;/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */const{entries:Zf,setPrototypeOf:Qf,isFrozen:Mp,getPrototypeOf:Np,getOwnPropertyDescriptor:Gp}=Object;let{freeze:Xt,seal:on,create:Kf}=Object,{apply:za,construct:Oa}=typeof Reflect<"u"&&Reflect;Xt||(Xt=function(e){return e}),on||(on=function(e){return e}),za||(za=function(e,n,r){return e.apply(n,r)}),Oa||(Oa=function(e,n){return new e(...n)});const oo=qt(Array.prototype.forEach),Bp=qt(Array.prototype.lastIndexOf),Jf=qt(Array.prototype.pop),li=qt(Array.prototype.push),Up=qt(Array.prototype.splice),ao=qt(String.prototype.toLowerCase),Ma=qt(String.prototype.toString),eu=qt(String.prototype.match),ci=qt(String.prototype.replace),Vp=qt(String.prototype.indexOf),$p=qt(String.prototype.trim),dn=qt(Object.prototype.hasOwnProperty),Wt=qt(RegExp.prototype.test),hi=Hp(TypeError);function qt(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return za(t,e,r)}}function Hp(t){return function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return Oa(t,n)}}function rt(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ao;Qf&&Qf(t,null);let r=e.length;for(;r--;){let i=e[r];if(typeof i=="string"){const o=n(i);o!==i&&(Mp(e)||(e[r]=o),i=o)}t[i]=!0}return t}function jp(t){for(let e=0;e<t.length;e++)dn(t,e)||(t[e]=null);return t}function Rn(t){const e=Kf(null);for(const[n,r]of Zf(t))dn(t,n)&&(Array.isArray(r)?e[n]=jp(r):r&&typeof r=="object"&&r.constructor===Object?e[n]=Rn(r):e[n]=r);return e}function di(t,e){for(;t!==null;){const r=Gp(t,e);if(r){if(r.get)return qt(r.get);if(typeof r.value=="function")return qt(r.value)}t=Np(t)}function n(){return null}return n}const tu=Xt(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Na=Xt(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Ga=Xt(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Xp=Xt(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Ba=Xt(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Wp=Xt(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),nu=Xt(["#text"]),ru=Xt(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),Ua=Xt(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),iu=Xt(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),so=Xt(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),qp=on(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Yp=on(/<%[\w\W]*|[\w\W]*%>/gm),Zp=on(/\$\{[\w\W]*/gm),Qp=on(/^data-[\-\w.\u00B7-\uFFFF]+$/),Kp=on(/^aria-[\-\w]+$/),ou=on(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Jp=on(/^(?:\w+script|data):/i),e0=on(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),au=on(/^html$/i),t0=on(/^[a-z][.\w]*(-[.\w]+)+$/i);var su=Object.freeze({__proto__:null,ARIA_ATTR:Kp,ATTR_WHITESPACE:e0,CUSTOM_ELEMENT:t0,DATA_ATTR:Qp,DOCTYPE_NAME:au,ERB_EXPR:Yp,IS_ALLOWED_URI:ou,IS_SCRIPT_OR_DATA:Jp,MUSTACHE_EXPR:qp,TMPLIT_EXPR:Zp});const mi={element:1,text:3,progressingInstruction:7,comment:8,document:9},n0=function(){return typeof window>"u"?null:window},r0=function(e,n){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null;const i="data-tt-policy-suffix";n&&n.hasAttribute(i)&&(r=n.getAttribute(i));const o="dompurify"+(r?"#"+r:"");try{return e.createPolicy(o,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}},fu=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function uu(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:n0();const e=Be=>uu(Be);if(e.version="3.2.6",e.removed=[],!t||!t.document||t.document.nodeType!==mi.document||!t.Element)return e.isSupported=!1,e;let{document:n}=t;const r=n,i=r.currentScript,{DocumentFragment:o,HTMLTemplateElement:s,Node:f,Element:u,NodeFilter:l,NamedNodeMap:v=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:b,DOMParser:S,trustedTypes:D}=t,Y=u.prototype,Ee=di(Y,"cloneNode"),Te=di(Y,"remove"),se=di(Y,"nextSibling"),Ue=di(Y,"childNodes"),He=di(Y,"parentNode");if(typeof s=="function"){const Be=n.createElement("template");Be.content&&Be.content.ownerDocument&&(n=Be.content.ownerDocument)}let H,fe="";const{implementation:Re,createNodeIterator:Ge,createDocumentFragment:Ye,getElementsByTagName:at}=n,{importNode:ut}=r;let Ae=fu();e.isSupported=typeof Zf=="function"&&typeof He=="function"&&Re&&Re.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:lt,ERB_EXPR:it,TMPLIT_EXPR:N,DATA_ATTR:Ce,ARIA_ATTR:re,IS_SCRIPT_OR_DATA:ke,ATTR_WHITESPACE:Xe,CUSTOM_ELEMENT:je}=su;let{IS_ALLOWED_URI:Qe}=su,Ze=null;const dt=rt({},[...tu,...Na,...Ga,...Ba,...nu]);let ct=null;const _t=rt({},[...ru,...Ua,...iu,...so]);let st=Object.seal(Kf(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),$t=null,Ht=null,Qt=!0,zn=!0,wo=!1,Ao=!0,On=!1,sr=!0,Tn=!1,Ir=!1,Dr=!1,$n=!1,zt=!1,fr=!1,ur=!0,Eo=!1;const as="user-content-";let d=!0,lr=!1,Hn={},jn=null;const Po=rt({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let wn=null;const yi=rt({},["audio","video","img","source","image","track"]);let Mn=null;const xi=rt({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),zr="http://www.w3.org/1998/Math/MathML",Or="http://www.w3.org/2000/svg",an="http://www.w3.org/1999/xhtml";let Lt=an,cr=!1,Mr=null;const ss=rt({},[zr,Or,an],Ma);let Nr=rt({},["mi","mo","mn","ms","mtext"]),Gr=rt({},["annotation-xml"]);const fs=rt({},["title","style","font","a","script"]);let hr=null;const Co=["application/xhtml+xml","text/html"],ko="text/html";let Ft=null,Xn=null;const Yt=n.createElement("form"),Lo=function(C){return C instanceof RegExp||C instanceof Function},bi=function(){let C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Xn&&Xn===C)){if((!C||typeof C!="object")&&(C={}),C=Rn(C),hr=Co.indexOf(C.PARSER_MEDIA_TYPE)===-1?ko:C.PARSER_MEDIA_TYPE,Ft=hr==="application/xhtml+xml"?Ma:ao,Ze=dn(C,"ALLOWED_TAGS")?rt({},C.ALLOWED_TAGS,Ft):dt,ct=dn(C,"ALLOWED_ATTR")?rt({},C.ALLOWED_ATTR,Ft):_t,Mr=dn(C,"ALLOWED_NAMESPACES")?rt({},C.ALLOWED_NAMESPACES,Ma):ss,Mn=dn(C,"ADD_URI_SAFE_ATTR")?rt(Rn(xi),C.ADD_URI_SAFE_ATTR,Ft):xi,wn=dn(C,"ADD_DATA_URI_TAGS")?rt(Rn(yi),C.ADD_DATA_URI_TAGS,Ft):yi,jn=dn(C,"FORBID_CONTENTS")?rt({},C.FORBID_CONTENTS,Ft):Po,$t=dn(C,"FORBID_TAGS")?rt({},C.FORBID_TAGS,Ft):Rn({}),Ht=dn(C,"FORBID_ATTR")?rt({},C.FORBID_ATTR,Ft):Rn({}),Hn=dn(C,"USE_PROFILES")?C.USE_PROFILES:!1,Qt=C.ALLOW_ARIA_ATTR!==!1,zn=C.ALLOW_DATA_ATTR!==!1,wo=C.ALLOW_UNKNOWN_PROTOCOLS||!1,Ao=C.ALLOW_SELF_CLOSE_IN_ATTR!==!1,On=C.SAFE_FOR_TEMPLATES||!1,sr=C.SAFE_FOR_XML!==!1,Tn=C.WHOLE_DOCUMENT||!1,$n=C.RETURN_DOM||!1,zt=C.RETURN_DOM_FRAGMENT||!1,fr=C.RETURN_TRUSTED_TYPE||!1,Dr=C.FORCE_BODY||!1,ur=C.SANITIZE_DOM!==!1,Eo=C.SANITIZE_NAMED_PROPS||!1,d=C.KEEP_CONTENT!==!1,lr=C.IN_PLACE||!1,Qe=C.ALLOWED_URI_REGEXP||ou,Lt=C.NAMESPACE||an,Nr=C.MATHML_TEXT_INTEGRATION_POINTS||Nr,Gr=C.HTML_INTEGRATION_POINTS||Gr,st=C.CUSTOM_ELEMENT_HANDLING||{},C.CUSTOM_ELEMENT_HANDLING&&Lo(C.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(st.tagNameCheck=C.CUSTOM_ELEMENT_HANDLING.tagNameCheck),C.CUSTOM_ELEMENT_HANDLING&&Lo(C.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(st.attributeNameCheck=C.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),C.CUSTOM_ELEMENT_HANDLING&&typeof C.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(st.allowCustomizedBuiltInElements=C.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),On&&(zn=!1),zt&&($n=!0),Hn&&(Ze=rt({},nu),ct=[],Hn.html===!0&&(rt(Ze,tu),rt(ct,ru)),Hn.svg===!0&&(rt(Ze,Na),rt(ct,Ua),rt(ct,so)),Hn.svgFilters===!0&&(rt(Ze,Ga),rt(ct,Ua),rt(ct,so)),Hn.mathMl===!0&&(rt(Ze,Ba),rt(ct,iu),rt(ct,so))),C.ADD_TAGS&&(Ze===dt&&(Ze=Rn(Ze)),rt(Ze,C.ADD_TAGS,Ft)),C.ADD_ATTR&&(ct===_t&&(ct=Rn(ct)),rt(ct,C.ADD_ATTR,Ft)),C.ADD_URI_SAFE_ATTR&&rt(Mn,C.ADD_URI_SAFE_ATTR,Ft),C.FORBID_CONTENTS&&(jn===Po&&(jn=Rn(jn)),rt(jn,C.FORBID_CONTENTS,Ft)),d&&(Ze["#text"]=!0),Tn&&rt(Ze,["html","head","body"]),Ze.table&&(rt(Ze,["tbody"]),delete $t.tbody),C.TRUSTED_TYPES_POLICY){if(typeof C.TRUSTED_TYPES_POLICY.createHTML!="function")throw hi('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof C.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw hi('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');H=C.TRUSTED_TYPES_POLICY,fe=H.createHTML("")}else H===void 0&&(H=r0(D,i)),H!==null&&typeof fe=="string"&&(fe=H.createHTML(""));Xt&&Xt(C),Xn=C}},Fo=rt({},[...Na,...Ga,...Xp]),Ro=rt({},[...Ba,...Wp]),us=function(C){let ve=He(C);(!ve||!ve.tagName)&&(ve={namespaceURI:Lt,tagName:"template"});const De=ao(C.tagName),mt=ao(ve.tagName);return Mr[C.namespaceURI]?C.namespaceURI===Or?ve.namespaceURI===an?De==="svg":ve.namespaceURI===zr?De==="svg"&&(mt==="annotation-xml"||Nr[mt]):!!Fo[De]:C.namespaceURI===zr?ve.namespaceURI===an?De==="math":ve.namespaceURI===Or?De==="math"&&Gr[mt]:!!Ro[De]:C.namespaceURI===an?ve.namespaceURI===Or&&!Gr[mt]||ve.namespaceURI===zr&&!Nr[mt]?!1:!Ro[De]&&(fs[De]||!Fo[De]):!!(hr==="application/xhtml+xml"&&Mr[C.namespaceURI]):!1},sn=function(C){li(e.removed,{element:C});try{He(C).removeChild(C)}catch{Te(C)}},Wn=function(C,ve){try{li(e.removed,{attribute:ve.getAttributeNode(C),from:ve})}catch{li(e.removed,{attribute:null,from:ve})}if(ve.removeAttribute(C),C==="is")if($n||zt)try{sn(ve)}catch{}else try{ve.setAttribute(C,"")}catch{}},Io=function(C){let ve=null,De=null;if(Dr)C="<remove></remove>"+C;else{const At=eu(C,/^[\r\n\t ]+/);De=At&&At[0]}hr==="application/xhtml+xml"&&Lt===an&&(C='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+C+"</body></html>");const mt=H?H.createHTML(C):C;if(Lt===an)try{ve=new S().parseFromString(mt,hr)}catch{}if(!ve||!ve.documentElement){ve=Re.createDocument(Lt,"template",null);try{ve.documentElement.innerHTML=cr?fe:mt}catch{}}const Ot=ve.body||ve.documentElement;return C&&De&&Ot.insertBefore(n.createTextNode(De),Ot.childNodes[0]||null),Lt===an?at.call(ve,Tn?"html":"body")[0]:Tn?ve.documentElement:Ot},_i=function(C){return Ge.call(C.ownerDocument||C,C,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Br=function(C){return C instanceof b&&(typeof C.nodeName!="string"||typeof C.textContent!="string"||typeof C.removeChild!="function"||!(C.attributes instanceof v)||typeof C.removeAttribute!="function"||typeof C.setAttribute!="function"||typeof C.namespaceURI!="string"||typeof C.insertBefore!="function"||typeof C.hasChildNodes!="function")},gt=function(C){return typeof f=="function"&&C instanceof f};function vn(Be,C,ve){oo(Be,De=>{De.call(e,C,ve,Xn)})}const Do=function(C){let ve=null;if(vn(Ae.beforeSanitizeElements,C,null),Br(C))return sn(C),!0;const De=Ft(C.nodeName);if(vn(Ae.uponSanitizeElement,C,{tagName:De,allowedTags:Ze}),sr&&C.hasChildNodes()&&!gt(C.firstElementChild)&&Wt(/<[/\w!]/g,C.innerHTML)&&Wt(/<[/\w!]/g,C.textContent)||C.nodeType===mi.progressingInstruction||sr&&C.nodeType===mi.comment&&Wt(/<[/\w]/g,C.data))return sn(C),!0;if(!Ze[De]||$t[De]){if(!$t[De]&&Oo(De)&&(st.tagNameCheck instanceof RegExp&&Wt(st.tagNameCheck,De)||st.tagNameCheck instanceof Function&&st.tagNameCheck(De)))return!1;if(d&&!jn[De]){const mt=He(C)||C.parentNode,Ot=Ue(C)||C.childNodes;if(Ot&&mt){const At=Ot.length;for(let jt=At-1;jt>=0;--jt){const gn=Ee(Ot[jt],!0);gn.__removalCount=(C.__removalCount||0)+1,mt.insertBefore(gn,se(C))}}}return sn(C),!0}return C instanceof u&&!us(C)||(De==="noscript"||De==="noembed"||De==="noframes")&&Wt(/<\/no(script|embed|frames)/i,C.innerHTML)?(sn(C),!0):(On&&C.nodeType===mi.text&&(ve=C.textContent,oo([lt,it,N],mt=>{ve=ci(ve,mt," ")}),C.textContent!==ve&&(li(e.removed,{element:C.cloneNode()}),C.textContent=ve)),vn(Ae.afterSanitizeElements,C,null),!1)},zo=function(C,ve,De){if(ur&&(ve==="id"||ve==="name")&&(De in n||De in Yt))return!1;if(!(zn&&!Ht[ve]&&Wt(Ce,ve))){if(!(Qt&&Wt(re,ve))){if(!ct[ve]||Ht[ve]){if(!(Oo(C)&&(st.tagNameCheck instanceof RegExp&&Wt(st.tagNameCheck,C)||st.tagNameCheck instanceof Function&&st.tagNameCheck(C))&&(st.attributeNameCheck instanceof RegExp&&Wt(st.attributeNameCheck,ve)||st.attributeNameCheck instanceof Function&&st.attributeNameCheck(ve))||ve==="is"&&st.allowCustomizedBuiltInElements&&(st.tagNameCheck instanceof RegExp&&Wt(st.tagNameCheck,De)||st.tagNameCheck instanceof Function&&st.tagNameCheck(De))))return!1}else if(!Mn[ve]){if(!Wt(Qe,ci(De,Xe,""))){if(!((ve==="src"||ve==="xlink:href"||ve==="href")&&C!=="script"&&Vp(De,"data:")===0&&wn[C])){if(!(wo&&!Wt(ke,ci(De,Xe,"")))){if(De)return!1}}}}}}return!0},Oo=function(C){return C!=="annotation-xml"&&eu(C,je)},Mo=function(C){vn(Ae.beforeSanitizeAttributes,C,null);const{attributes:ve}=C;if(!ve||Br(C))return;const De={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ct,forceKeepAttr:void 0};let mt=ve.length;for(;mt--;){const Ot=ve[mt],{name:At,namespaceURI:jt,value:gn}=Ot,dr=Ft(At),Si=gn;let Mt=At==="value"?Si:$p(Si);if(De.attrName=dr,De.attrValue=Mt,De.keepAttr=!0,De.forceKeepAttr=void 0,vn(Ae.uponSanitizeAttribute,C,De),Mt=De.attrValue,Eo&&(dr==="id"||dr==="name")&&(Wn(At,C),Mt=as+Mt),sr&&Wt(/((--!?|])>)|<\/(style|title)/i,Mt)){Wn(At,C);continue}if(De.forceKeepAttr)continue;if(!De.keepAttr){Wn(At,C);continue}if(!Ao&&Wt(/\/>/i,Mt)){Wn(At,C);continue}On&&oo([lt,it,N],Go=>{Mt=ci(Mt,Go," ")});const No=Ft(C.nodeName);if(!zo(No,dr,Mt)){Wn(At,C);continue}if(H&&typeof D=="object"&&typeof D.getAttributeType=="function"&&!jt)switch(D.getAttributeType(No,dr)){case"TrustedHTML":{Mt=H.createHTML(Mt);break}case"TrustedScriptURL":{Mt=H.createScriptURL(Mt);break}}if(Mt!==Si)try{jt?C.setAttributeNS(jt,At,Mt):C.setAttribute(At,Mt),Br(C)?sn(C):Jf(e.removed)}catch{Wn(At,C)}}vn(Ae.afterSanitizeAttributes,C,null)},ls=function Be(C){let ve=null;const De=_i(C);for(vn(Ae.beforeSanitizeShadowDOM,C,null);ve=De.nextNode();)vn(Ae.uponSanitizeShadowNode,ve,null),Do(ve),Mo(ve),ve.content instanceof o&&Be(ve.content);vn(Ae.afterSanitizeShadowDOM,C,null)};return e.sanitize=function(Be){let C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ve=null,De=null,mt=null,Ot=null;if(cr=!Be,cr&&(Be="<!-->"),typeof Be!="string"&&!gt(Be))if(typeof Be.toString=="function"){if(Be=Be.toString(),typeof Be!="string")throw hi("dirty is not a string, aborting")}else throw hi("toString is not a function");if(!e.isSupported)return Be;if(Ir||bi(C),e.removed=[],typeof Be=="string"&&(lr=!1),lr){if(Be.nodeName){const gn=Ft(Be.nodeName);if(!Ze[gn]||$t[gn])throw hi("root node is forbidden and cannot be sanitized in-place")}}else if(Be instanceof f)ve=Io("<!---->"),De=ve.ownerDocument.importNode(Be,!0),De.nodeType===mi.element&&De.nodeName==="BODY"||De.nodeName==="HTML"?ve=De:ve.appendChild(De);else{if(!$n&&!On&&!Tn&&Be.indexOf("<")===-1)return H&&fr?H.createHTML(Be):Be;if(ve=Io(Be),!ve)return $n?null:fr?fe:""}ve&&Dr&&sn(ve.firstChild);const At=_i(lr?Be:ve);for(;mt=At.nextNode();)Do(mt),Mo(mt),mt.content instanceof o&&ls(mt.content);if(lr)return Be;if($n){if(zt)for(Ot=Ye.call(ve.ownerDocument);ve.firstChild;)Ot.appendChild(ve.firstChild);else Ot=ve;return(ct.shadowroot||ct.shadowrootmode)&&(Ot=ut.call(r,Ot,!0)),Ot}let jt=Tn?ve.outerHTML:ve.innerHTML;return Tn&&Ze["!doctype"]&&ve.ownerDocument&&ve.ownerDocument.doctype&&ve.ownerDocument.doctype.name&&Wt(au,ve.ownerDocument.doctype.name)&&(jt="<!DOCTYPE "+ve.ownerDocument.doctype.name+`>
|
|
9
|
+
`+jt),On&&oo([lt,it,N],gn=>{jt=ci(jt,gn," ")}),H&&fr?H.createHTML(jt):jt},e.setConfig=function(){let Be=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};bi(Be),Ir=!0},e.clearConfig=function(){Xn=null,Ir=!1},e.isValidAttribute=function(Be,C,ve){Xn||bi({});const De=Ft(Be),mt=Ft(C);return zo(De,mt,ve)},e.addHook=function(Be,C){typeof C=="function"&&li(Ae[Be],C)},e.removeHook=function(Be,C){if(C!==void 0){const ve=Bp(Ae[Be],C);return ve===-1?void 0:Up(Ae[Be],ve,1)[0]}return Jf(Ae[Be])},e.removeHooks=function(Be){Ae[Be]=[]},e.removeAllHooks=function(){Ae=fu()},e}var i0=uu();const lu=t=>typeof t=="function",Va=t=>Array.isArray(t),cu=t=>t instanceof Object,hu=t=>t instanceof Object?t.constructor.name!=="Function"&&t.constructor.name!=="Object":!1,$a=t=>cu(t)&&!Va(t)&&!lu(t)&&!hu(t);function Vn(t){let e;if(Va(t))e=t;else{const n=Un(t),r=n==null?void 0:n.rgb();e=[(r==null?void 0:r.r)||0,(r==null?void 0:r.g)||0,(r==null?void 0:r.b)||0,(n==null?void 0:n.opacity)??1]}return[e[0]/255,e[1]/255,e[2]/255,e[3]]}function du(t,e,n){return .2126*t+.7152*e+.0722*n}function tn(t,e){let n=new Float32Array;return t({framebuffer:e})(()=>{n=t.read()}),n}function mu(t,e,n){return Math.min(Math.max(t,e),n)}function mn(t){return t!=null&&!Number.isNaN(t)}function pu(t,e){return i0.sanitize(t,{ALLOWED_TAGS:["a","b","i","em","strong","span","div","p","br"],ALLOWED_ATTR:["href","target","class","id","style"],ALLOW_DATA_ATTR:!1,...e})}class o0{constructor(){this.enableSimulation=We.enableSimulation,this.backgroundColor=Ip,this.spaceSize=We.spaceSize,this.pointColor=wp,this.pointGreyoutOpacity=Ap,this.pointGreyoutColor=Ep,this.pointSize=Cp,this.pointOpacity=Pp,this.pointSizeScale=We.pointSizeScale,this.hoveredPointCursor=We.hoveredPointCursor,this.renderHoveredPointRing=We.renderHoveredPointRing,this.hoveredPointRingColor=We.hoveredPointRingColor,this.focusedPointRingColor=We.focusedPointRingColor,this.focusedPointIndex=We.focusedPointIndex,this.linkColor=kp,this.linkOpacity=Fp,this.linkGreyoutOpacity=Lp,this.linkWidth=Rp,this.linkWidthScale=We.linkWidthScale,this.renderLinks=We.renderLinks,this.curvedLinks=We.curvedLinks,this.curvedLinkSegments=We.curvedLinkSegments,this.curvedLinkWeight=We.curvedLinkWeight,this.curvedLinkControlPointDistance=We.curvedLinkControlPointDistance,this.linkArrows=We.arrowLinks,this.linkArrowsSizeScale=We.arrowSizeScale,this.scaleLinksOnZoom=We.scaleLinksOnZoom,this.linkVisibilityDistanceRange=We.linkVisibilityDistanceRange,this.linkVisibilityMinTransparency=We.linkVisibilityMinTransparency,this.useClassicQuadtree=We.useClassicQuadtree,this.simulationDecay=We.simulation.decay,this.simulationGravity=We.simulation.gravity,this.simulationCenter=We.simulation.center,this.simulationRepulsion=We.simulation.repulsion,this.simulationRepulsionTheta=We.simulation.repulsionTheta,this.simulationRepulsionQuadtreeLevels=We.simulation.repulsionQuadtreeLevels,this.simulationLinkSpring=We.simulation.linkSpring,this.simulationLinkDistance=We.simulation.linkDistance,this.simulationLinkDistRandomVariationRange=We.simulation.linkDistRandomVariationRange,this.simulationRepulsionFromMouse=We.simulation.repulsionFromMouse,this.enableRightClickRepulsion=We.enableRightClickRepulsion,this.simulationFriction=We.simulation.friction,this.simulationCluster=We.simulation.cluster,this.onSimulationStart=void 0,this.onSimulationTick=void 0,this.onSimulationEnd=void 0,this.onSimulationPause=void 0,this.onSimulationRestart=void 0,this.onClick=void 0,this.onMouseMove=void 0,this.onPointMouseOver=void 0,this.onPointMouseOut=void 0,this.onZoomStart=void 0,this.onZoom=void 0,this.onZoomEnd=void 0,this.onDragStart=void 0,this.onDrag=void 0,this.onDragEnd=void 0,this.showFPSMonitor=We.showFPSMonitor,this.pixelRatio=We.pixelRatio,this.scalePointsOnZoom=We.scalePointsOnZoom,this.initialZoomLevel=void 0,this.enableZoom=We.enableZoom,this.enableSimulationDuringZoom=We.enableSimulationDuringZoom,this.enableDrag=We.enableDrag,this.fitViewOnInit=We.fitViewOnInit,this.fitViewDelay=We.fitViewDelay,this.fitViewPadding=We.fitViewPadding,this.fitViewDuration=We.fitViewDuration,this.fitViewByPointsInRect=void 0,this.randomSeed=void 0,this.pointSamplingDistance=We.pointSamplingDistance,this.attribution=We.attribution,this.rescalePositions=We.rescalePositions}init(e){Object.keys(e).forEach(n=>{this.deepMergeConfig(this.getConfig(),e,n)})}deepMergeConfig(e,n,r){$a(e[r])&&$a(n[r])?Object.keys(n[r]).forEach(i=>{this.deepMergeConfig(e[r],n[r],i)}):e[r]=n[r]}getConfig(){return this}}class In{constructor(e,n,r,i,o){this.reglInstance=e,this.config=n,this.store=r,this.data=i,o&&(this.points=o)}}var a0=`#ifdef GL_ES
|
|
9
10
|
precision highp float;
|
|
10
11
|
#endif
|
|
11
12
|
|
|
@@ -13,7 +14,7 @@ varying vec4 rgba;
|
|
|
13
14
|
|
|
14
15
|
void main() {
|
|
15
16
|
gl_FragColor = rgba;
|
|
16
|
-
}`,
|
|
17
|
+
}`,s0=`#ifdef GL_ES
|
|
17
18
|
precision highp float;
|
|
18
19
|
#endif
|
|
19
20
|
|
|
@@ -30,7 +31,7 @@ void main() {
|
|
|
30
31
|
|
|
31
32
|
gl_Position = vec4(0.0, 0.0, 0.0, 1.0);
|
|
32
33
|
gl_PointSize = 1.0;
|
|
33
|
-
}`,
|
|
34
|
+
}`,f0=`#ifdef GL_ES
|
|
34
35
|
precision highp float;
|
|
35
36
|
#endif
|
|
36
37
|
|
|
@@ -55,13 +56,13 @@ void main() {
|
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
gl_FragColor = velocity;
|
|
58
|
-
}`;function
|
|
59
|
+
}`;function wt(t){return{buffer:t.buffer(new Float32Array([-1,-1,1,-1,-1,1,1,1])),size:2}}function or(t){const e=new Float32Array(t*t*2);for(let n=0;n<t;n++)for(let r=0;r<t;r++){const i=n*t*2+r*2;e[i+0]=r,e[i+1]=n}return e}var ar=`#ifdef GL_ES
|
|
59
60
|
precision highp float;
|
|
60
61
|
#endif
|
|
61
62
|
|
|
62
63
|
void main() {
|
|
63
64
|
gl_FragColor = vec4(0.0);
|
|
64
|
-
}`,
|
|
65
|
+
}`,kt=`#ifdef GL_ES
|
|
65
66
|
precision highp float;
|
|
66
67
|
#endif
|
|
67
68
|
|
|
@@ -72,7 +73,7 @@ void main() {
|
|
|
72
73
|
|
|
73
74
|
textureCoords = (vertexCoord + 1.0) / 2.0;
|
|
74
75
|
gl_Position = vec4(vertexCoord, 0, 1);
|
|
75
|
-
}`;class
|
|
76
|
+
}`;class u0 extends In{create(){const{reglInstance:e,store:n}=this;this.centermassTexture||(this.centermassTexture=e.texture()),this.centermassTexture({data:new Float32Array(4).fill(0),shape:[1,1,4],type:"float"}),this.centermassFbo||(this.centermassFbo=e.framebuffer()),this.centermassFbo({color:this.centermassTexture,depth:!1,stencil:!1}),this.pointIndices||(this.pointIndices=e.buffer(0)),this.pointIndices(or(n.pointsTextureSize))}initPrograms(){const{reglInstance:e,config:n,store:r,data:i,points:o}=this;this.clearCentermassCommand||(this.clearCentermassCommand=e({frag:ar,vert:kt,framebuffer:()=>this.centermassFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.calculateCentermassCommand||(this.calculateCentermassCommand=e({frag:a0,vert:s0,framebuffer:()=>this.centermassFbo,primitive:"points",count:()=>i.pointsNumber??0,attributes:{pointIndices:{buffer:this.pointIndices,size:2}},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,pointsTextureSize:()=>r.pointsTextureSize},blend:{enable:!0,func:{src:"one",dst:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},stencil:{enable:!1}})),this.runCommand||(this.runCommand=e({frag:f0,vert:kt,framebuffer:()=>o==null?void 0:o.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,centermassTexture:()=>this.centermassFbo,centerForce:()=>n.simulationCenter,alpha:()=>r.alpha}}))}run(){var e,n,r;(e=this.clearCentermassCommand)==null||e.call(this),(n=this.calculateCentermassCommand)==null||n.call(this),(r=this.runCommand)==null||r.call(this)}}var l0=`#ifdef GL_ES
|
|
76
77
|
precision highp float;
|
|
77
78
|
#endif
|
|
78
79
|
|
|
@@ -98,7 +99,7 @@ void main() {
|
|
|
98
99
|
}
|
|
99
100
|
|
|
100
101
|
gl_FragColor = velocity;
|
|
101
|
-
}`;class
|
|
102
|
+
}`;class c0 extends In{initPrograms(){const{reglInstance:e,config:n,store:r,points:i}=this;this.runCommand||(this.runCommand=e({frag:l0,vert:kt,framebuffer:()=>i==null?void 0:i.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>i==null?void 0:i.previousPositionFbo,gravity:()=>n.simulationGravity,spaceSize:()=>r.adjustedSpaceSize,alpha:()=>r.alpha}}))}run(){var e;(e=this.runCommand)==null||e.call(this)}}function h0(t){return`
|
|
102
103
|
#ifdef GL_ES
|
|
103
104
|
precision highp float;
|
|
104
105
|
#endif
|
|
@@ -168,7 +169,7 @@ void main() {
|
|
|
168
169
|
|
|
169
170
|
gl_FragColor = vec4(velocity.rg, 0.0, 0.0);
|
|
170
171
|
}
|
|
171
|
-
`}var
|
|
172
|
+
`}var Ha=(t=>(t.OUTGOING="outgoing",t.INCOMING="incoming",t))(Ha||{});class vu extends In{constructor(){super(...arguments),this.linkFirstIndicesAndAmount=new Float32Array,this.indices=new Float32Array,this.maxPointDegree=0}create(e){const{reglInstance:n,store:{pointsTextureSize:r,linksTextureSize:i},data:o}=this;if(!r||!i)return;this.linkFirstIndicesAndAmount=new Float32Array(r*r*4),this.indices=new Float32Array(i*i*4);const s=new Float32Array(i*i*4),f=new Float32Array(i*i*4),u=e==="incoming"?o.sourceIndexToTargetIndices:o.targetIndexToSourceIndices;this.maxPointDegree=0;let l=0;u==null||u.forEach((v,b)=>{v&&(this.linkFirstIndicesAndAmount[b*4+0]=l%i,this.linkFirstIndicesAndAmount[b*4+1]=Math.floor(l/i),this.linkFirstIndicesAndAmount[b*4+2]=v.length??0,v.forEach(([S,D])=>{var H,fe,Re;this.indices[l*4+0]=S%r,this.indices[l*4+1]=Math.floor(S/r);const Y=((H=o.degree)==null?void 0:H[S])??0,Ee=((fe=o.degree)==null?void 0:fe[b])??0,Te=Y+Ee,se=Te!==0?Y/Te:.5,Ue=Math.min(Y,Ee);let He=((Re=o.linkStrength)==null?void 0:Re[D])??1/Math.max(Ue,1);He=Math.sqrt(He),s[l*4+0]=se,s[l*4+1]=He,f[l*4]=this.store.getRandomFloat(0,1),l+=1}),this.maxPointDegree=Math.max(this.maxPointDegree,v.length??0))}),this.linkFirstIndicesAndAmountTexture||(this.linkFirstIndicesAndAmountTexture=n.texture()),this.linkFirstIndicesAndAmountTexture({data:this.linkFirstIndicesAndAmount,shape:[r,r,4],type:"float"}),this.linkFirstIndicesAndAmountFbo||(this.linkFirstIndicesAndAmountFbo=n.framebuffer()),this.linkFirstIndicesAndAmountFbo({color:this.linkFirstIndicesAndAmountTexture,depth:!1,stencil:!1}),this.indicesTexture||(this.indicesTexture=n.texture()),this.indicesTexture({data:this.indices,shape:[i,i,4],type:"float"}),this.indicesFbo||(this.indicesFbo=n.framebuffer()),this.indicesFbo({color:this.indicesTexture,depth:!1,stencil:!1}),this.biasAndStrengthTexture||(this.biasAndStrengthTexture=n.texture()),this.biasAndStrengthTexture({data:s,shape:[i,i,4],type:"float"}),this.biasAndStrengthFbo||(this.biasAndStrengthFbo=n.framebuffer()),this.biasAndStrengthFbo({color:this.biasAndStrengthTexture,depth:!1,stencil:!1}),this.randomDistanceTexture||(this.randomDistanceTexture=n.texture()),this.randomDistanceTexture({data:f,shape:[i,i,4],type:"float"}),this.randomDistanceFbo||(this.randomDistanceFbo=n.framebuffer()),this.randomDistanceFbo({color:this.randomDistanceTexture,depth:!1,stencil:!1})}initPrograms(){const{reglInstance:e,config:n,store:r,points:i}=this;this.runCommand||(this.runCommand=e({frag:()=>h0(this.maxPointDegree),vert:kt,framebuffer:()=>i==null?void 0:i.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>i==null?void 0:i.previousPositionFbo,linkSpring:()=>n.simulationLinkSpring,linkDistance:()=>n.simulationLinkDistance,linkDistRandomVariationRange:()=>n.simulationLinkDistRandomVariationRange,linkInfoTexture:()=>this.linkFirstIndicesAndAmountFbo,linkIndicesTexture:()=>this.indicesFbo,linkPropertiesTexture:()=>this.biasAndStrengthFbo,linkRandomDistanceTexture:()=>this.randomDistanceFbo,pointsTextureSize:()=>r.pointsTextureSize,linksTextureSize:()=>r.linksTextureSize,alpha:()=>r.alpha}}))}run(){var e;(e=this.runCommand)==null||e.call(this)}}var gu=`#ifdef GL_ES
|
|
172
173
|
precision highp float;
|
|
173
174
|
#endif
|
|
174
175
|
|
|
@@ -176,7 +177,7 @@ varying vec4 rgba;
|
|
|
176
177
|
|
|
177
178
|
void main() {
|
|
178
179
|
gl_FragColor = rgba;
|
|
179
|
-
}`,
|
|
180
|
+
}`,yu=`#ifdef GL_ES
|
|
180
181
|
precision highp float;
|
|
181
182
|
#endif
|
|
182
183
|
|
|
@@ -200,7 +201,7 @@ void main() {
|
|
|
200
201
|
|
|
201
202
|
gl_Position = vec4(levelPosition, 0.0, 1.0);
|
|
202
203
|
gl_PointSize = 1.0;
|
|
203
|
-
}`,
|
|
204
|
+
}`,d0=`#ifdef GL_ES
|
|
204
205
|
precision highp float;
|
|
205
206
|
#endif
|
|
206
207
|
|
|
@@ -317,7 +318,7 @@ void main() {
|
|
|
317
318
|
}
|
|
318
319
|
|
|
319
320
|
gl_FragColor = velocity;
|
|
320
|
-
}`,
|
|
321
|
+
}`,m0=`#ifdef GL_ES
|
|
321
322
|
precision highp float;
|
|
322
323
|
#endif
|
|
323
324
|
|
|
@@ -364,23 +365,23 @@ void main() {
|
|
|
364
365
|
velocity.xy += velocity.xy * random.rg;
|
|
365
366
|
|
|
366
367
|
gl_FragColor = velocity;
|
|
367
|
-
}`;class
|
|
368
|
+
}`;class p0 extends In{constructor(){super(...arguments),this.levelsFbos=new Map,this.quadtreeLevels=0}create(){const{reglInstance:e,store:n}=this;if(!n.pointsTextureSize)return;this.quadtreeLevels=Math.log2(n.adjustedSpaceSize);for(let i=0;i<this.quadtreeLevels;i+=1){const o=Math.pow(2,i+1);this.levelsFbos.has(`level[${i}]`)||this.levelsFbos.set(`level[${i}]`,e.framebuffer());const s=this.levelsFbos.get(`level[${i}]`);s&&s({shape:[o,o],colorType:"float",depth:!1,stencil:!1})}const r=new Float32Array(n.pointsTextureSize*n.pointsTextureSize*4);for(let i=0;i<n.pointsTextureSize*n.pointsTextureSize;++i)r[i*4]=n.getRandomFloat(-1,1)*1e-5,r[i*4+1]=n.getRandomFloat(-1,1)*1e-5;this.randomValuesTexture||(this.randomValuesTexture=e.texture()),this.randomValuesTexture({data:r,shape:[n.pointsTextureSize,n.pointsTextureSize,4],type:"float"}),this.randomValuesFbo||(this.randomValuesFbo=e.framebuffer()),this.randomValuesFbo({color:this.randomValuesTexture,depth:!1,stencil:!1}),this.pointIndices||(this.pointIndices=e.buffer(0)),this.pointIndices(or(n.pointsTextureSize))}initPrograms(){const{reglInstance:e,config:n,store:r,data:i,points:o}=this;this.clearLevelsCommand||(this.clearLevelsCommand=e({frag:ar,vert:kt,framebuffer:(s,f)=>f.levelFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.calculateLevelsCommand||(this.calculateLevelsCommand=e({frag:gu,vert:yu,framebuffer:(s,f)=>f.levelFbo,primitive:"points",count:()=>i.pointsNumber??0,attributes:{pointIndices:{buffer:this.pointIndices,size:2}},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,pointsTextureSize:()=>r.pointsTextureSize,levelTextureSize:(s,f)=>f.levelTextureSize,cellSize:(s,f)=>f.cellSize},blend:{enable:!0,func:{src:"one",dst:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},stencil:{enable:!1}})),this.forceCommand||(this.forceCommand=e({frag:d0,vert:kt,framebuffer:()=>o==null?void 0:o.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,level:(s,f)=>f.level,levels:this.quadtreeLevels,levelFbo:(s,f)=>f.levelFbo,levelTextureSize:(s,f)=>f.levelTextureSize,alpha:()=>r.alpha,repulsion:()=>n.simulationRepulsion,spaceSize:()=>r.adjustedSpaceSize,theta:()=>n.simulationRepulsionTheta},blend:{enable:!0,func:{src:"one",dst:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},stencil:{enable:!1}})),this.forceFromItsOwnCentermassCommand||(this.forceFromItsOwnCentermassCommand=e({frag:m0,vert:kt,framebuffer:()=>o==null?void 0:o.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,randomValues:()=>this.randomValuesFbo,levelFbo:(s,f)=>f.levelFbo,levelTextureSize:(s,f)=>f.levelTextureSize,alpha:()=>r.alpha,repulsion:()=>n.simulationRepulsion,spaceSize:()=>r.adjustedSpaceSize},blend:{enable:!0,func:{src:"one",dst:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},stencil:{enable:!1}})),this.clearVelocityCommand||(this.clearVelocityCommand=e({frag:ar,vert:kt,framebuffer:()=>o==null?void 0:o.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}}))}run(){var n,r,i,o,s;const{store:e}=this;for(let f=0;f<this.quadtreeLevels;f+=1){(n=this.clearLevelsCommand)==null||n.call(this,{levelFbo:this.levelsFbos.get(`level[${f}]`)});const u=Math.pow(2,f+1),l=e.adjustedSpaceSize/u;(r=this.calculateLevelsCommand)==null||r.call(this,{levelFbo:this.levelsFbos.get(`level[${f}]`),levelTextureSize:u,cellSize:l})}(i=this.clearVelocityCommand)==null||i.call(this);for(let f=0;f<this.quadtreeLevels;f+=1){const u=Math.pow(2,f+1);(o=this.forceCommand)==null||o.call(this,{levelFbo:this.levelsFbos.get(`level[${f}]`),levelTextureSize:u,level:f}),f===this.quadtreeLevels-1&&((s=this.forceFromItsOwnCentermassCommand)==null||s.call(this,{levelFbo:this.levelsFbos.get(`level[${f}]`),levelTextureSize:u,level:f}))}}}function v0(t,e){t=Math.min(t,e);const n=e-t,r=`
|
|
368
369
|
float dist = sqrt(l);
|
|
369
370
|
if (dist > 0.0) {
|
|
370
371
|
float c = alpha * repulsion * centermass.b;
|
|
371
372
|
addVelocity += calcAdd(vec2(x, y), l, c);
|
|
372
373
|
addVelocity += addVelocity * random.rg;
|
|
373
374
|
}
|
|
374
|
-
`;function i(o){if(o>=e)return r;{const
|
|
375
|
+
`;function i(o){if(o>=e)return r;{const s=Math.pow(2,o+1),f=new Array(o+1-n).fill(0).map((l,v)=>`pow(2.0, ${o-(v+n)}.0) * i${v+n}`).join("+"),u=new Array(o+1-n).fill(0).map((l,v)=>`pow(2.0, ${o-(v+n)}.0) * j${v+n}`).join("+");return`
|
|
375
376
|
for (float ij${o} = 0.0; ij${o} < 4.0; ij${o} += 1.0) {
|
|
376
377
|
float i${o} = 0.0;
|
|
377
378
|
float j${o} = 0.0;
|
|
378
379
|
if (ij${o} == 1.0 || ij${o} == 3.0) i${o} = 1.0;
|
|
379
380
|
if (ij${o} == 2.0 || ij${o} == 3.0) j${o} = 1.0;
|
|
380
|
-
float i = pow(2.0, ${t}.0) * n / width${o+1} + ${
|
|
381
|
-
float j = pow(2.0, ${t}.0) * m / width${o+1} + ${
|
|
382
|
-
float groupPosX = (i + 0.5) / ${
|
|
383
|
-
float groupPosY = (j + 0.5) / ${
|
|
381
|
+
float i = pow(2.0, ${t}.0) * n / width${o+1} + ${f};
|
|
382
|
+
float j = pow(2.0, ${t}.0) * m / width${o+1} + ${u};
|
|
383
|
+
float groupPosX = (i + 0.5) / ${s}.0;
|
|
384
|
+
float groupPosY = (j + 0.5) / ${s}.0;
|
|
384
385
|
|
|
385
386
|
vec4 centermass = texture2D(level[${o}], vec2(groupPosX, groupPosY));
|
|
386
387
|
if (centermass.r > 0.0 && centermass.g > 0.0 && centermass.b > 0.0) {
|
|
@@ -424,7 +425,7 @@ void main() {
|
|
|
424
425
|
vec2 velocity = vec2(0.0);
|
|
425
426
|
vec2 addVelocity = vec2(0.0);
|
|
426
427
|
|
|
427
|
-
${new Array(e).fill(0).map((o,
|
|
428
|
+
${new Array(e).fill(0).map((o,s)=>`float width${s+1} = width${s} / 2.0;`).join(`
|
|
428
429
|
`)}
|
|
429
430
|
|
|
430
431
|
for (float n = 0.0; n < pow(2.0, ${n}.0); n += 1.0) {
|
|
@@ -437,7 +438,7 @@ void main() {
|
|
|
437
438
|
|
|
438
439
|
gl_FragColor = vec4(velocity, 0.0, 0.0);
|
|
439
440
|
}
|
|
440
|
-
`}class
|
|
441
|
+
`}class g0 extends In{constructor(){super(...arguments),this.levelsTextures=new Map,this.levelsFbos=new Map,this.quadtreeLevels=0}create(){const{reglInstance:e,store:n}=this;if(!n.pointsTextureSize)return;this.quadtreeLevels=Math.log2(n.adjustedSpaceSize);for(let i=0;i<this.quadtreeLevels;i+=1){const o=Math.pow(2,i+1),s=`level[${i}]`;this.levelsTextures.has(s)||this.levelsTextures.set(s,e.texture());const f=this.levelsTextures.get(s);f&&f({data:new Float32Array(o*o*4),shape:[o,o,4],type:"float"}),this.levelsFbos.has(s)||this.levelsFbos.set(s,e.framebuffer());const u=this.levelsFbos.get(s);u&&u({color:this.levelsTextures.get(s),depth:!1,stencil:!1})}const r=new Float32Array(n.pointsTextureSize*n.pointsTextureSize*4);for(let i=0;i<n.pointsTextureSize*n.pointsTextureSize;++i)r[i*4]=n.getRandomFloat(-1,1)*1e-5,r[i*4+1]=n.getRandomFloat(-1,1)*1e-5;this.randomValuesTexture||(this.randomValuesTexture=e.texture()),this.randomValuesTexture({data:r,shape:[n.pointsTextureSize,n.pointsTextureSize,4],type:"float"}),this.randomValuesFbo||(this.randomValuesFbo=e.framebuffer()),this.randomValuesFbo({color:this.randomValuesTexture,depth:!1,stencil:!1}),this.pointIndices||(this.pointIndices=e.buffer(0)),this.pointIndices(or(n.pointsTextureSize))}initPrograms(){const{reglInstance:e,config:n,store:r,data:i,points:o}=this;this.clearLevelsCommand||(this.clearLevelsCommand=e({frag:ar,vert:kt,framebuffer:(s,f)=>f.levelFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.calculateLevelsCommand||(this.calculateLevelsCommand=e({frag:gu,vert:yu,framebuffer:(s,f)=>f.levelFbo,primitive:"points",count:()=>i.pointsNumber??0,attributes:{pointIndices:{buffer:this.pointIndices,size:2}},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,pointsTextureSize:()=>r.pointsTextureSize,levelTextureSize:(s,f)=>f.levelTextureSize,cellSize:(s,f)=>f.cellSize},blend:{enable:!0,func:{src:"one",dst:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},stencil:{enable:!1}})),this.quadtreeCommand=e({frag:v0(n.simulationRepulsionQuadtreeLevels??this.quadtreeLevels,this.quadtreeLevels),vert:kt,framebuffer:()=>o==null?void 0:o.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,randomValues:()=>this.randomValuesFbo,spaceSize:()=>r.adjustedSpaceSize,repulsion:()=>n.simulationRepulsion,theta:()=>n.simulationRepulsionTheta,alpha:()=>r.alpha,...Object.fromEntries(this.levelsFbos)}})}run(){var n,r,i;const{store:e}=this;for(let o=0;o<this.quadtreeLevels;o+=1){(n=this.clearLevelsCommand)==null||n.call(this,{levelFbo:this.levelsFbos.get(`level[${o}]`)});const s=Math.pow(2,o+1),f=e.adjustedSpaceSize/s;(r=this.calculateLevelsCommand)==null||r.call(this,{levelFbo:this.levelsFbos.get(`level[${o}]`),levelTextureSize:s,cellSize:f})}(i=this.quadtreeCommand)==null||i.call(this)}}var y0=`#ifdef GL_ES
|
|
441
442
|
precision highp float;
|
|
442
443
|
#endif
|
|
443
444
|
|
|
@@ -460,7 +461,7 @@ void main() {
|
|
|
460
461
|
velocity.rg -= addV * vec2(cos(angle), sin(angle));
|
|
461
462
|
|
|
462
463
|
gl_FragColor = velocity;
|
|
463
|
-
}`;class
|
|
464
|
+
}`;class x0 extends In{initPrograms(){const{reglInstance:e,config:n,store:r,points:i}=this;this.runCommand||(this.runCommand=e({frag:y0,vert:kt,framebuffer:()=>i==null?void 0:i.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>i==null?void 0:i.previousPositionFbo,mousePos:()=>r.mousePosition,repulsion:()=>n.simulationRepulsionFromMouse}}))}run(){var e;(e=this.runCommand)==null||e.call(this)}}var b0=`#ifdef GL_ES
|
|
464
465
|
precision highp float;
|
|
465
466
|
#endif
|
|
466
467
|
|
|
@@ -468,7 +469,7 @@ varying vec4 rgba;
|
|
|
468
469
|
|
|
469
470
|
void main() {
|
|
470
471
|
gl_FragColor = rgba;
|
|
471
|
-
}`,
|
|
472
|
+
}`,_0=`#ifdef GL_ES
|
|
472
473
|
precision highp float;
|
|
473
474
|
#endif
|
|
474
475
|
|
|
@@ -493,7 +494,7 @@ void main() {
|
|
|
493
494
|
|
|
494
495
|
gl_Position = vec4(xy, 0.0, 1.0);
|
|
495
496
|
gl_PointSize = 1.0;
|
|
496
|
-
}`,
|
|
497
|
+
}`,S0=`#ifdef GL_ES
|
|
497
498
|
precision highp float;
|
|
498
499
|
#endif
|
|
499
500
|
|
|
@@ -530,7 +531,7 @@ void main() {
|
|
|
530
531
|
}
|
|
531
532
|
|
|
532
533
|
gl_FragColor = velocity;
|
|
533
|
-
}`;class
|
|
534
|
+
}`;class T0 extends In{create(){var u;const{reglInstance:e,store:n,data:r}=this,{pointsTextureSize:i}=n;if(r.pointsNumber===void 0||!r.pointClusters&&!r.clusterPositions)return;this.clusterCount=(r.pointClusters??[]).reduce((l,v)=>v===void 0||v<0?l:Math.max(l,v),0)+1,this.clustersTextureSize=Math.ceil(Math.sqrt(this.clusterCount));const o=new Float32Array(i*i*4),s=new Float32Array(this.clustersTextureSize*this.clustersTextureSize*4).fill(-1),f=new Float32Array(i*i*4).fill(1);if(r.clusterPositions)for(let l=0;l<this.clusterCount;++l)s[l*4+0]=r.clusterPositions[l*2+0]??-1,s[l*4+1]=r.clusterPositions[l*2+1]??-1;for(let l=0;l<r.pointsNumber;++l){const v=(u=r.pointClusters)==null?void 0:u[l];v===void 0?(o[l*4+0]=-1,o[l*4+1]=-1):(o[l*4+0]=v%this.clustersTextureSize,o[l*4+1]=Math.floor(v/this.clustersTextureSize)),r.clusterStrength&&(f[l*4+0]=r.clusterStrength[l]??1)}this.clusterTexture||(this.clusterTexture=e.texture()),this.clusterTexture({data:o,shape:[i,i,4],type:"float"}),this.clusterFbo||(this.clusterFbo=e.framebuffer()),this.clusterFbo({color:this.clusterTexture,depth:!1,stencil:!1}),this.clusterPositionsTexture||(this.clusterPositionsTexture=e.texture()),this.clusterPositionsTexture({data:s,shape:[this.clustersTextureSize,this.clustersTextureSize,4],type:"float"}),this.clusterPositionsFbo||(this.clusterPositionsFbo=e.framebuffer()),this.clusterPositionsFbo({color:this.clusterPositionsTexture,depth:!1,stencil:!1}),this.clusterForceCoefficientTexture||(this.clusterForceCoefficientTexture=e.texture()),this.clusterForceCoefficientTexture({data:f,shape:[i,i,4],type:"float"}),this.clusterForceCoefficientFbo||(this.clusterForceCoefficientFbo=e.framebuffer()),this.clusterForceCoefficientFbo({color:this.clusterForceCoefficientTexture,depth:!1,stencil:!1}),this.centermassTexture||(this.centermassTexture=e.texture()),this.centermassTexture({data:new Float32Array(this.clustersTextureSize*this.clustersTextureSize*4).fill(0),shape:[this.clustersTextureSize,this.clustersTextureSize,4],type:"float"}),this.centermassFbo||(this.centermassFbo=e.framebuffer()),this.centermassFbo({color:this.centermassTexture,depth:!1,stencil:!1}),this.pointIndices||(this.pointIndices=e.buffer(0)),this.pointIndices(or(n.pointsTextureSize))}initPrograms(){const{reglInstance:e,store:n,data:r,points:i}=this;r.pointClusters!==void 0&&(this.clearCentermassCommand||(this.clearCentermassCommand=e({frag:ar,vert:kt,framebuffer:()=>this.centermassFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.calculateCentermassCommand||(this.calculateCentermassCommand=e({frag:b0,vert:_0,framebuffer:()=>this.centermassFbo,primitive:"points",count:()=>r.pointsNumber??0,attributes:{pointIndices:{buffer:this.pointIndices,size:2}},uniforms:{positionsTexture:()=>i==null?void 0:i.previousPositionFbo,pointsTextureSize:()=>n.pointsTextureSize,clusterTexture:()=>this.clusterFbo,clustersTextureSize:()=>this.clustersTextureSize},blend:{enable:!0,func:{src:"one",dst:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},stencil:{enable:!1}})),this.applyForcesCommand||(this.applyForcesCommand=e({frag:S0,vert:kt,framebuffer:()=>i==null?void 0:i.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>i==null?void 0:i.previousPositionFbo,clusterTexture:()=>this.clusterFbo,centermassTexture:()=>this.centermassFbo,clusterPositionsTexture:()=>this.clusterPositionsFbo,clusterForceCoefficient:()=>this.clusterForceCoefficientFbo,alpha:()=>n.alpha,clustersTextureSize:()=>this.clustersTextureSize,clusterCoefficient:()=>this.config.simulationCluster}})))}calculateCentermass(){var e,n;(e=this.clearCentermassCommand)==null||e.call(this),(n=this.calculateCentermassCommand)==null||n.call(this)}run(){var e;!this.data.pointClusters&&!this.data.clusterPositions||(this.calculateCentermass(),(e=this.applyForcesCommand)==null||e.call(this))}}var fo={exports:{}},w0=fo.exports,xu;function A0(){return xu||(xu=1,function(t,e){(function(n,r){t.exports=r()})(w0,function(){var n=`<div class="gl-box">
|
|
534
535
|
<svg viewBox="0 0 55 60">
|
|
535
536
|
<text x="27" y="56" class="gl-fps">00 FPS</text>
|
|
536
537
|
<text x="28" y="8" class="gl-mem"></text>
|
|
@@ -606,7 +607,7 @@ void main() {
|
|
|
606
607
|
#gl-bench .opacity {
|
|
607
608
|
stroke: #448844;
|
|
608
609
|
}
|
|
609
|
-
`;class i{constructor(
|
|
610
|
+
`;class i{constructor(s,f={}){this.css=r,this.svg=n,this.paramLogger=()=>{},this.chartLogger=()=>{},this.chartLen=20,this.chartHz=20,this.names=[],this.cpuAccums=[],this.gpuAccums=[],this.activeAccums=[],this.chart=new Array(this.chartLen),this.now=()=>performance&&performance.now?performance.now():Date.now(),this.updateUI=()=>{[].forEach.call(this.nodes["gl-gpu-svg"],S=>{S.style.display=this.trackGPU?"inline":"none"})},Object.assign(this,f),this.detected=0,this.finished=[],this.isFramebuffer=0,this.frameId=0;let u,l=0,v,b=S=>{++l<20?u=requestAnimationFrame(b):(this.detected=Math.ceil(1e3*l/(S-v)/70),cancelAnimationFrame(u)),v||(v=S)};if(requestAnimationFrame(b),s){const S=async(Y,Ee)=>Promise.resolve(setTimeout(()=>{s.getError();const Te=this.now()-Y;Ee.forEach((se,Ue)=>{se&&(this.gpuAccums[Ue]+=Te)})},0)),D=(Y,Ee,Te)=>function(){const se=Ee.now();Y.apply(Te,arguments),Ee.trackGPU&&Ee.finished.push(S(se,Ee.activeAccums.slice(0)))};["drawArrays","drawElements","drawArraysInstanced","drawBuffers","drawElementsInstanced","drawRangeElements"].forEach(Y=>{s[Y]&&(s[Y]=D(s[Y],this,s))}),s.getExtension=((Y,Ee)=>function(){let Te=Y.apply(s,arguments);return Te&&["drawElementsInstancedANGLE","drawBuffersWEBGL"].forEach(se=>{Te[se]&&(Te[se]=D(Te[se],Ee,Te))}),Te})(s.getExtension,this)}if(!this.withoutUI){this.dom||(this.dom=document.body);let S=document.createElement("div");S.id="gl-bench",this.dom.appendChild(S),this.dom.insertAdjacentHTML("afterbegin",'<style id="gl-bench-style">'+this.css+"</style>"),this.dom=S,this.dom.addEventListener("click",()=>{this.trackGPU=!this.trackGPU,this.updateUI()}),this.paramLogger=((D,Y,Ee)=>{const Te=["gl-cpu","gl-gpu","gl-mem","gl-fps","gl-gpu-svg","gl-chart"],se=Object.assign({},Te);return Te.forEach(Ue=>se[Ue]=Y.getElementsByClassName(Ue)),this.nodes=se,(Ue,He,H,fe,Re,Ge,Ye)=>{se["gl-cpu"][Ue].style.strokeDasharray=(He*.27).toFixed(0)+" 100",se["gl-gpu"][Ue].style.strokeDasharray=(H*.27).toFixed(0)+" 100",se["gl-mem"][Ue].innerHTML=Ee[Ue]?Ee[Ue]:fe?"mem: "+fe.toFixed(0)+"mb":"",se["gl-fps"][Ue].innerHTML=Re.toFixed(0)+" FPS",D(Ee[Ue],He,H,fe,Re,Ge,Ye)}})(this.paramLogger,this.dom,this.names),this.chartLogger=((D,Y)=>{let Ee={"gl-chart":Y.getElementsByClassName("gl-chart")};return(Te,se,Ue)=>{let He="",H=se.length;for(let fe=0;fe<H;fe++){let Re=(Ue+fe+1)%H;se[Re]!=null&&(He=He+" "+(55*fe/(H-1)).toFixed(1)+","+(45-se[Re]*22/60/this.detected).toFixed(1))}Ee["gl-chart"][Te].setAttribute("points",He),D(this.names[Te],se,Ue)}})(this.chartLogger,this.dom)}}addUI(s){this.names.indexOf(s)==-1&&(this.names.push(s),this.dom&&(this.dom.insertAdjacentHTML("beforeend",this.svg),this.updateUI()),this.cpuAccums.push(0),this.gpuAccums.push(0),this.activeAccums.push(!1))}nextFrame(s){this.frameId++;const f=s||this.now();if(this.frameId<=1)this.paramFrame=this.frameId,this.paramTime=f;else{let u=f-this.paramTime;if(u>=1e3){const l=this.frameId-this.paramFrame,v=l/u*1e3;for(let b=0;b<this.names.length;b++){const S=this.cpuAccums[b]/u*100,D=this.gpuAccums[b]/u*100,Y=performance&&performance.memory?performance.memory.usedJSHeapSize/(1<<20):0;this.paramLogger(b,S,D,Y,v,u,l),this.cpuAccums[b]=0,Promise.all(this.finished).then(()=>{this.gpuAccums[b]=0,this.finished=[]})}this.paramFrame=this.frameId,this.paramTime=f}}if(!this.detected||!this.chartFrame)this.chartFrame=this.frameId,this.chartTime=f,this.circularId=0;else{let u=f-this.chartTime,l=this.chartHz*u/1e3;for(;--l>0&&this.detected;){const b=(this.frameId-this.chartFrame)/u*1e3;this.chart[this.circularId%this.chartLen]=b;for(let S=0;S<this.names.length;S++)this.chartLogger(S,this.chart,this.circularId);this.circularId++,this.chartFrame=this.frameId,this.chartTime=f}}}begin(s){this.updateAccums(s)}end(s){this.updateAccums(s)}updateAccums(s){let f=this.names.indexOf(s);f==-1&&(f=this.names.length,this.addUI(s));const u=this.now(),l=u-this.t0;for(let v=0;v<f+1;v++)this.activeAccums[v]&&(this.cpuAccums[v]+=l);this.activeAccums[f]=!this.activeAccums[f],this.t0=u}}return i})}(fo)),fo.exports}var E0=A0();const P0=Da(E0),C0=`
|
|
610
611
|
#gl-bench {
|
|
611
612
|
position:absolute;
|
|
612
613
|
right:0;
|
|
@@ -658,13 +659,14 @@ void main() {
|
|
|
658
659
|
#gl-bench .opacity {
|
|
659
660
|
stroke: #8288e4;
|
|
660
661
|
}
|
|
661
|
-
`;class
|
|
662
|
+
`;class bu{constructor(e){this.destroy();const n=e.getContext("webgl")||e.getContext("experimental-webgl");this.bench=new P0(n,{css:C0})}begin(){var e;(e=this.bench)==null||e.begin("frame")}end(e){var n,r;(n=this.bench)==null||n.end("frame"),(r=this.bench)==null||r.nextFrame(e)}destroy(){this.bench=void 0,Dt("#gl-bench").remove()}}class k0{constructor(e){this._config=e}get pointsNumber(){return this.pointPositions&&this.pointPositions.length/2}get linksNumber(){return this.links&&this.links.length/2}updatePoints(){this.pointPositions=this.inputPointPositions}updatePointColor(){if(this.pointsNumber===void 0){this.pointColors=void 0;return}const e=Vn(this._config.pointColor);if(this.inputPointColors===void 0||this.inputPointColors.length/4!==this.pointsNumber){this.pointColors=new Float32Array(this.pointsNumber*4);for(let n=0;n<this.pointColors.length/4;n++)this.pointColors[n*4]=e[0],this.pointColors[n*4+1]=e[1],this.pointColors[n*4+2]=e[2],this.pointColors[n*4+3]=e[3]}else{this.pointColors=this.inputPointColors;for(let n=0;n<this.pointColors.length/4;n++)mn(this.pointColors[n*4])||(this.pointColors[n*4]=e[0]),mn(this.pointColors[n*4+1])||(this.pointColors[n*4+1]=e[1]),mn(this.pointColors[n*4+2])||(this.pointColors[n*4+2]=e[2]),mn(this.pointColors[n*4+3])||(this.pointColors[n*4+3]=e[3])}}updatePointSize(){if(this.pointsNumber===void 0){this.pointSizes=void 0;return}if(this.inputPointSizes===void 0||this.inputPointSizes.length!==this.pointsNumber)this.pointSizes=new Float32Array(this.pointsNumber).fill(this._config.pointSize);else{this.pointSizes=this.inputPointSizes;for(let e=0;e<this.pointSizes.length;e++)mn(this.pointSizes[e])||(this.pointSizes[e]=this._config.pointSize)}}updateLinks(){this.links=this.inputLinks}updateLinkColor(){if(this.linksNumber===void 0){this.linkColors=void 0;return}const e=Vn(this._config.linkColor);if(this.inputLinkColors===void 0||this.inputLinkColors.length/4!==this.linksNumber){this.linkColors=new Float32Array(this.linksNumber*4);for(let n=0;n<this.linkColors.length/4;n++)this.linkColors[n*4]=e[0],this.linkColors[n*4+1]=e[1],this.linkColors[n*4+2]=e[2],this.linkColors[n*4+3]=e[3]}else{this.linkColors=this.inputLinkColors;for(let n=0;n<this.linkColors.length/4;n++)mn(this.linkColors[n*4])||(this.linkColors[n*4]=e[0]),mn(this.linkColors[n*4+1])||(this.linkColors[n*4+1]=e[1]),mn(this.linkColors[n*4+2])||(this.linkColors[n*4+2]=e[2]),mn(this.linkColors[n*4+3])||(this.linkColors[n*4+3]=e[3])}}updateLinkWidth(){if(this.linksNumber===void 0){this.linkWidths=void 0;return}if(this.inputLinkWidths===void 0||this.inputLinkWidths.length!==this.linksNumber)this.linkWidths=new Float32Array(this.linksNumber).fill(this._config.linkWidth);else{this.linkWidths=this.inputLinkWidths;for(let e=0;e<this.linkWidths.length;e++)mn(this.linkWidths[e])||(this.linkWidths[e]=this._config.linkWidth)}}updateArrows(){if(this.linksNumber===void 0){this.linkArrows=void 0;return}this.linkArrowsBoolean===void 0||this.linkArrowsBoolean.length!==this.linksNumber?this.linkArrows=new Array(this.linksNumber).fill(+this._config.linkArrows):this.linkArrows=this.linkArrowsBoolean.map(e=>+e)}updateLinkStrength(){this.linksNumber===void 0&&(this.linkStrength=void 0),this.inputLinkStrength===void 0||this.inputLinkStrength.length!==this.linksNumber?this.linkStrength=void 0:this.linkStrength=this.inputLinkStrength}updateClusters(){if(this.pointsNumber===void 0){this.pointClusters=void 0,this.clusterPositions=void 0;return}this.inputPointClusters===void 0||this.inputPointClusters.length!==this.pointsNumber?this.pointClusters=void 0:this.pointClusters=this.inputPointClusters,this.inputClusterPositions===void 0?this.clusterPositions=void 0:this.clusterPositions=this.inputClusterPositions,this.inputClusterStrength===void 0||this.inputClusterStrength.length!==this.pointsNumber?this.clusterStrength=void 0:this.clusterStrength=this.inputClusterStrength}update(){this.updatePoints(),this.updatePointColor(),this.updatePointSize(),this.updateLinks(),this.updateLinkColor(),this.updateLinkWidth(),this.updateArrows(),this.updateLinkStrength(),this.updateClusters(),this._createAdjacencyLists(),this._calculateDegrees()}getAdjacentIndices(e){var n,r,i,o;return[...((r=(n=this.sourceIndexToTargetIndices)==null?void 0:n[e])==null?void 0:r.map(s=>s[0]))||[],...((o=(i=this.targetIndexToSourceIndices)==null?void 0:i[e])==null?void 0:o.map(s=>s[0]))||[]]}_createAdjacencyLists(){var e,n;if(this.linksNumber===void 0||this.links===void 0){this.sourceIndexToTargetIndices=void 0,this.targetIndexToSourceIndices=void 0;return}this.sourceIndexToTargetIndices=new Array(this.pointsNumber).fill(void 0),this.targetIndexToSourceIndices=new Array(this.pointsNumber).fill(void 0);for(let r=0;r<this.linksNumber;r++){const i=this.links[r*2],o=this.links[r*2+1];i!==void 0&&o!==void 0&&(this.sourceIndexToTargetIndices[i]===void 0&&(this.sourceIndexToTargetIndices[i]=[]),(e=this.sourceIndexToTargetIndices[i])==null||e.push([o,r]),this.targetIndexToSourceIndices[o]===void 0&&(this.targetIndexToSourceIndices[o]=[]),(n=this.targetIndexToSourceIndices[o])==null||n.push([i,r]))}}_calculateDegrees(){var e,n,r,i;if(this.pointsNumber===void 0){this.degree=void 0,this.inDegree=void 0,this.outDegree=void 0;return}this.degree=new Array(this.pointsNumber).fill(0),this.inDegree=new Array(this.pointsNumber).fill(0),this.outDegree=new Array(this.pointsNumber).fill(0);for(let o=0;o<this.pointsNumber;o++)this.inDegree[o]=((n=(e=this.targetIndexToSourceIndices)==null?void 0:e[o])==null?void 0:n.length)??0,this.outDegree[o]=((i=(r=this.sourceIndexToTargetIndices)==null?void 0:r[o])==null?void 0:i.length)??0,this.degree[o]=(this.inDegree[o]??0)+(this.outDegree[o]??0)}}var L0=`precision highp float;
|
|
662
663
|
|
|
663
664
|
varying vec4 rgbaColor;
|
|
664
665
|
varying vec2 pos;
|
|
665
666
|
varying float arrowLength;
|
|
666
667
|
varying float useArrow;
|
|
667
668
|
varying float smoothing;
|
|
669
|
+
varying float arrowWidthFactor;
|
|
668
670
|
|
|
669
671
|
float map(float value, float min1, float max1, float min2, float max2) {
|
|
670
672
|
return min2 + (value - min1) * (max2 - min2) / (max1 - min1);
|
|
@@ -677,7 +679,7 @@ void main() {
|
|
|
677
679
|
if (useArrow > 0.5) {
|
|
678
680
|
float end_arrow = 0.5 + arrowLength / 2.0;
|
|
679
681
|
float start_arrow = end_arrow - arrowLength;
|
|
680
|
-
float arrowWidthDelta = 0
|
|
682
|
+
float arrowWidthDelta = arrowWidthFactor / 2.0;
|
|
681
683
|
float linkOpacity = rgbaColor.a * smoothstep(0.5 - arrowWidthDelta, 0.5 - arrowWidthDelta - smoothing / 2.0, abs(pos.y));
|
|
682
684
|
float arrowOpacity = 1.0;
|
|
683
685
|
if (pos.x > start_arrow && pos.x < start_arrow + arrowLength) {
|
|
@@ -691,7 +693,7 @@ void main() {
|
|
|
691
693
|
} else opacity = rgbaColor.a * smoothstep(0.5, 0.5 - smoothing, abs(pos.y));
|
|
692
694
|
|
|
693
695
|
gl_FragColor = vec4(color, opacity);
|
|
694
|
-
}`,
|
|
696
|
+
}`,F0=`precision highp float;
|
|
695
697
|
|
|
696
698
|
attribute vec2 position, pointA, pointB;
|
|
697
699
|
attribute vec4 color;
|
|
@@ -708,6 +710,7 @@ uniform float spaceSize;
|
|
|
708
710
|
uniform vec2 screenSize;
|
|
709
711
|
uniform vec2 linkVisibilityDistanceRange;
|
|
710
712
|
uniform float linkVisibilityMinTransparency;
|
|
713
|
+
uniform float linkOpacity;
|
|
711
714
|
uniform float greyoutOpacity;
|
|
712
715
|
uniform float curvedWeight;
|
|
713
716
|
uniform float curvedLinkControlPointDistance;
|
|
@@ -720,6 +723,7 @@ varying vec2 pos;
|
|
|
720
723
|
varying float arrowLength;
|
|
721
724
|
varying float useArrow;
|
|
722
725
|
varying float smoothing;
|
|
726
|
+
varying float arrowWidthFactor;
|
|
723
727
|
|
|
724
728
|
float map(float value, float min1, float max1, float min2, float max2) {
|
|
725
729
|
return min2 + (value - min1) * (max2 - min2) / (max1 - min1);
|
|
@@ -788,9 +792,11 @@ void main() {
|
|
|
788
792
|
float linkWidth = width * widthScale;
|
|
789
793
|
float k = 2.0;
|
|
790
794
|
|
|
791
|
-
float arrowWidth =
|
|
795
|
+
float arrowWidth = linkWidth * k;
|
|
792
796
|
arrowWidth *= arrowSizeScale;
|
|
793
797
|
|
|
798
|
+
float arrowWidthDifference = arrowWidth - linkWidth;
|
|
799
|
+
|
|
794
800
|
|
|
795
801
|
float arrowWidthPx = calculateArrowWidth(arrowWidth);
|
|
796
802
|
|
|
@@ -801,9 +807,11 @@ void main() {
|
|
|
801
807
|
|
|
802
808
|
useArrow = arrow;
|
|
803
809
|
if (useArrow > 0.5) {
|
|
804
|
-
linkWidth
|
|
810
|
+
linkWidth += arrowWidthDifference;
|
|
805
811
|
}
|
|
806
812
|
|
|
813
|
+
arrowWidthFactor = arrowWidthDifference / linkWidth;
|
|
814
|
+
|
|
807
815
|
|
|
808
816
|
float linkWidthPx = calculateLinkWidth(linkWidth);
|
|
809
817
|
float smoothingPx = 0.5 / transformationMatrix[0][0];
|
|
@@ -813,7 +821,7 @@ void main() {
|
|
|
813
821
|
|
|
814
822
|
vec3 rgbColor = color.rgb;
|
|
815
823
|
|
|
816
|
-
float opacity = color.a * max(linkVisibilityMinTransparency, map(linkDistPx, linkVisibilityDistanceRange.g, linkVisibilityDistanceRange.r, 0.0, 1.0));
|
|
824
|
+
float opacity = color.a * linkOpacity * max(linkVisibilityMinTransparency, map(linkDistPx, linkVisibilityDistanceRange.g, linkVisibilityDistanceRange.r, 0.0, 1.0));
|
|
817
825
|
|
|
818
826
|
|
|
819
827
|
if (greyoutStatusA.r > 0.0 || greyoutStatusB.r > 0.0) {
|
|
@@ -846,7 +854,7 @@ void main() {
|
|
|
846
854
|
vec3 final = transformationMatrix * vec3(p, 1);
|
|
847
855
|
|
|
848
856
|
gl_Position = vec4(final.rg, 0, 1);
|
|
849
|
-
}`;function si(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Im(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Ls(t){let e,n,r;t.length!==2?(e=si,n=(s,f)=>si(t(s),f),r=(s,f)=>t(s)-f):(e=t===si||t===Im?t:Rm,n=t,r=t);function i(s,f,l=0,v=s.length){if(l<v){if(e(f,f)!==0)return v;do{const b=l+v>>>1;n(s[b],f)<0?l=b+1:v=b}while(l<v)}return l}function o(s,f,l=0,v=s.length){if(l<v){if(e(f,f)!==0)return v;do{const b=l+v>>>1;n(s[b],f)<=0?l=b+1:v=b}while(l<v)}return l}function u(s,f,l=0,v=s.length){const b=i(s,f,l,v-1);return b>l&&r(s[b-1],f)>-r(s[b],f)?b-1:b}return{left:i,center:u,right:o}}function Rm(){return 0}function Dm(t){return t===null?NaN:+t}const Mm=Ls(si).right;Ls(Dm).center;function zs(t,e){let n,r;for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));return[n,r]}var _o=Math.sqrt(50),So=Math.sqrt(10),wo=Math.sqrt(2);function Om(t,e,n){var r,i=-1,o,u,s;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(s=Is(t,e,n))===0||!isFinite(s))return[];if(s>0){let f=Math.round(t/s),l=Math.round(e/s);for(f*s<t&&++f,l*s>e&&--l,u=new Array(o=l-f+1);++i<o;)u[i]=(f+i)*s}else{s=-s;let f=Math.round(t*s),l=Math.round(e*s);for(f/s<t&&++f,l/s>e&&--l,u=new Array(o=l-f+1);++i<o;)u[i]=(f+i)/s}return r&&u.reverse(),u}function Is(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=_o?10:o>=So?5:o>=wo?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=_o?10:o>=So?5:o>=wo?2:1)}function Gm(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=_o?i*=10:o>=So?i*=5:o>=wo&&(i*=2),e<t?-i:i}function Nm(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function Rs(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Bm(t){return function(){return t}}function Vm(t){return+t}var Ds=[0,1];function tn(t){return t}function To(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Bm(isNaN(e)?NaN:.5)}function $m(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Um(t,e,n){var r=t[0],i=t[1],o=e[0],u=e[1];return i<r?(r=To(i,r),o=n(u,o)):(r=To(r,i),o=n(o,u)),function(s){return o(r(s))}}function jm(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),u=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++u<r;)i[u]=To(t[u],t[u+1]),o[u]=n(e[u],e[u+1]);return function(s){var f=Mm(t,s,1,r)-1;return o[f](i[f](s))}}function Ms(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Os(){var t=Ds,e=Ds,n=mo,r,i,o,u=tn,s,f,l;function v(){var S=Math.min(t.length,e.length);return u!==tn&&(u=$m(t[0],t[S-1])),s=S>2?jm:Um,f=l=null,b}function b(S){return S==null||isNaN(S=+S)?o:(f||(f=s(t.map(r),e,n)))(r(u(S)))}return b.invert=function(S){return u(i((l||(l=s(e,t.map(r),Xt)))(S)))},b.domain=function(S){return arguments.length?(t=Array.from(S,Vm),v()):t.slice()},b.range=function(S){return arguments.length?(e=Array.from(S),v()):e.slice()},b.rangeRound=function(S){return e=Array.from(S),n=kh,v()},b.clamp=function(S){return arguments.length?(u=S?!0:tn,v()):u!==tn},b.interpolate=function(S){return arguments.length?(n=S,v()):n},b.unknown=function(S){return arguments.length?(o=S,b):o},function(S,D){return r=S,i=D,v()}}function Xm(){return Os()(tn,tn)}function Hm(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function ui(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Wn(t){return t=ui(Math.abs(t)),t?t[1]:NaN}function qm(t,e){return function(n,r){for(var i=n.length,o=[],u=0,s=t[0],f=0;i>0&&s>0&&(f+s+1>r&&(s=Math.max(1,r-f)),o.push(n.substring(i-=s,i+s)),!((f+=s+1)>r));)s=t[u=(u+1)%t.length];return o.reverse().join(e)}}function Wm(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Ym=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function fi(t){if(!(e=Ym.exec(t)))throw new Error("invalid format: "+t);var e;return new Ao({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}fi.prototype=Ao.prototype;function Ao(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Ao.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Zm(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var Gs;function Qm(t,e){var n=ui(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Gs=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,u=r.length;return o===u?r:o>u?r+new Array(o-u+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+ui(t,Math.max(0,e+o-1))[0]}function Ns(t,e){var n=ui(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const Bs={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Hm,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Ns(t*100,e),r:Ns,s:Qm,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Vs(t){return t}var $s=Array.prototype.map,Us=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Km(t){var e=t.grouping===void 0||t.thousands===void 0?Vs:qm($s.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?Vs:Wm($s.call(t.numerals,String)),u=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"−":t.minus+"",f=t.nan===void 0?"NaN":t.nan+"";function l(b){b=fi(b);var S=b.fill,D=b.align,Z=b.sign,we=b.symbol,Se=b.zero,ae=b.width,Ne=b.comma,je=b.precision,W=b.trim,ce=b.type;ce==="n"?(Ne=!0,ce="g"):Bs[ce]||(je===void 0&&(je=12),W=!0,ce="g"),(Se||S==="0"&&D==="=")&&(Se=!0,S="0",D="=");var Le=we==="$"?n:we==="#"&&/[boxX]/.test(ce)?"0"+ce.toLowerCase():"",Me=we==="$"?r:/[%p]/.test(ce)?u:"",Xe=Bs[ce],et=/[defgprs%]/.test(ce);je=je===void 0?6:/[gprs]/.test(ce)?Math.max(1,Math.min(21,je)):Math.max(0,Math.min(20,je));function nt(ke){var it=Le,tt=Me,G,Ae,oe;if(ce==="c")tt=Xe(ke)+tt,ke="";else{ke=+ke;var Pe=ke<0||1/ke<0;if(ke=isNaN(ke)?f:Xe(Math.abs(ke),je),W&&(ke=Zm(ke)),Pe&&+ke==0&&Z!=="+"&&(Pe=!1),it=(Pe?Z==="("?Z:s:Z==="-"||Z==="("?"":Z)+it,tt=(ce==="s"?Us[8+Gs/3]:"")+tt+(Pe&&Z==="("?")":""),et){for(G=-1,Ae=ke.length;++G<Ae;)if(oe=ke.charCodeAt(G),48>oe||oe>57){tt=(oe===46?i+ke.slice(G+1):ke.slice(G))+tt,ke=ke.slice(0,G);break}}}Ne&&!Se&&(ke=e(ke,1/0));var Ue=it.length+ke.length+tt.length,Ve=Ue<ae?new Array(ae-Ue+1).join(S):"";switch(Ne&&Se&&(ke=e(Ve+ke,Ve.length?ae-tt.length:1/0),Ve=""),D){case"<":ke=it+ke+tt+Ve;break;case"=":ke=it+Ve+ke+tt;break;case"^":ke=Ve.slice(0,Ue=Ve.length>>1)+it+ke+tt+Ve.slice(Ue);break;default:ke=Ve+it+ke+tt;break}return o(ke)}return nt.toString=function(){return b+""},nt}function v(b,S){var D=l((b=fi(b),b.type="f",b)),Z=Math.max(-8,Math.min(8,Math.floor(Wn(S)/3)))*3,we=Math.pow(10,-Z),Se=Us[8+Z/3];return function(ae){return D(we*ae)+Se}}return{format:l,formatPrefix:v}}var li,js,Xs;Jm({thousands:",",grouping:[3],currency:["$",""]});function Jm(t){return li=Km(t),js=li.format,Xs=li.formatPrefix,li}function ep(t){return Math.max(0,-Wn(Math.abs(t)))}function tp(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Wn(e)/3)))*3-Wn(Math.abs(t)))}function np(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Wn(e)-Wn(t))+1}function rp(t,e,n,r){var i=Gm(t,e,n),o;switch(r=fi(r??",f"),r.type){case"s":{var u=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=tp(i,u))&&(r.precision=o),Xs(r,u)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=np(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=ep(i))&&(r.precision=o-(r.type==="%")*2);break}}return js(r)}function Hs(t){var e=t.domain;return t.ticks=function(n){var r=e();return Om(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return rp(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,u=r[i],s=r[o],f,l,v=10;for(s<u&&(l=u,u=s,s=l,l=i,i=o,o=l);v-- >0;){if(l=Is(u,s,n),l===f)return r[i]=u,r[o]=s,e(r);if(l>0)u=Math.floor(u/l)*l,s=Math.ceil(s/l)*l;else if(l<0)u=Math.ceil(u*l)/l,s=Math.floor(s*l)/l;else break;f=l}return t},t}function Eo(){var t=Xm();return t.copy=function(){return Ms(t,Eo())},Rs.apply(t,arguments),Hs(t)}function qs(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function ip(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function op(t){return t<0?-t*t:t*t}function ap(t){var e=t(tn,tn),n=1;function r(){return n===1?t(tn,tn):n===.5?t(ip,op):t(qs(n),qs(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Hs(e)}function Ws(){var t=ap(Os());return t.copy=function(){return Ms(t,Ws()).exponent(t.exponent())},Rs.apply(t,arguments),t}const sp=t=>{const e=Ws().exponent(2).range([0,1]).domain([-1,1]),n=Nm(0,t).map(i=>-.5+i/t);n.push(.5);const r=new Array(n.length*2);return n.forEach((i,o)=>{r[o*2]=[e(i*2),.5],r[o*2+1]=[e(i*2),-.5]}),r};class up extends ln{initPrograms(){const{reglInstance:e,config:n,store:r}=this;this.drawCurveCommand||(this.drawCurveCommand=e({vert:zm,frag:Lm,attributes:{position:{buffer:()=>this.curveLineBuffer,divisor:0},pointA:{buffer:()=>this.pointsBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*4},pointB:{buffer:()=>this.pointsBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*2,stride:Float32Array.BYTES_PER_ELEMENT*4},color:{buffer:()=>this.colorBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*4},width:{buffer:()=>this.widthBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*1},arrow:{buffer:()=>this.arrowBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*1}},uniforms:{positionsTexture:()=>{var i;return(i=this.points)==null?void 0:i.currentPositionFbo},pointGreyoutStatus:()=>{var i;return(i=this.points)==null?void 0:i.greyoutStatusFbo},transformationMatrix:()=>r.transform,pointsTextureSize:()=>r.pointsTextureSize,widthScale:()=>n.linkWidthScale,arrowSizeScale:()=>n.linkArrowsSizeScale,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,linkVisibilityDistanceRange:()=>n.linkVisibilityDistanceRange,linkVisibilityMinTransparency:()=>n.linkVisibilityMinTransparency,greyoutOpacity:()=>n.linkGreyoutOpacity,scaleLinksOnZoom:()=>n.scaleLinksOnZoom,maxPointSize:()=>r.maxPointSize,curvedWeight:()=>n.curvedLinkWeight,curvedLinkControlPointDistance:()=>n.curvedLinkControlPointDistance,curvedLinkSegments:()=>n.curvedLinks?n.curvedLinkSegments??Be.curvedLinkSegments:1},cull:{enable:!0,face:"back"},blend:{enable:!0,func:{dstRGB:"one minus src alpha",srcRGB:"src alpha",dstAlpha:"one minus src alpha",srcAlpha:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},count:()=>{var i;return((i=this.curveLineGeometry)==null?void 0:i.length)??0},instances:()=>this.data.linksNumber??0,primitive:"triangle strip"}))}draw(){var e;this.pointsBuffer&&(this.colorBuffer||this.updateColor(),this.widthBuffer||this.updateWidth(),this.arrowBuffer||this.updateArrow(),this.curveLineGeometry||this.updateCurveLineGeometry(),(e=this.drawCurveCommand)==null||e.call(this))}updatePointsBuffer(){const{reglInstance:e,data:n,store:r}=this;if(n.linksNumber===void 0||n.links===void 0)return;const i=new Float32Array(n.linksNumber*4);for(let o=0;o<n.linksNumber;o++){const u=n.links[o*2],s=n.links[o*2+1],f=u%r.pointsTextureSize,l=Math.floor(u/r.pointsTextureSize),v=s%r.pointsTextureSize,b=Math.floor(s/r.pointsTextureSize),S=o*4;i[S]=f,i[S+1]=l,i[S+2]=v,i[S+3]=b}this.pointsBuffer||(this.pointsBuffer=e.buffer(0)),this.pointsBuffer(i)}updateColor(){const{reglInstance:e,data:n}=this;this.colorBuffer||(this.colorBuffer=e.buffer(0)),this.colorBuffer(n.linkColors??new Float32Array)}updateWidth(){const{reglInstance:e,data:n}=this;this.widthBuffer||(this.widthBuffer=e.buffer(0)),this.widthBuffer(n.linkWidths??new Float32Array)}updateArrow(){const{reglInstance:e,data:n}=this;this.arrowBuffer||(this.arrowBuffer=e.buffer(0)),this.arrowBuffer(n.linkArrows??new Float32Array)}updateCurveLineGeometry(){const{reglInstance:e,config:{curvedLinks:n,curvedLinkSegments:r}}=this;this.curveLineGeometry=sp(n?r??Be.curvedLinkSegments:1),this.curveLineBuffer||(this.curveLineBuffer=e.buffer(0)),this.curveLineBuffer(this.curveLineGeometry)}}var fp=`#ifdef GL_ES
|
|
857
|
+
}`;function uo(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function R0(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function _u(t){let e,n,r;t.length!==2?(e=uo,n=(f,u)=>uo(t(f),u),r=(f,u)=>t(f)-u):(e=t===uo||t===R0?t:I0,n=t,r=t);function i(f,u,l=0,v=f.length){if(l<v){if(e(u,u)!==0)return v;do{const b=l+v>>>1;n(f[b],u)<0?l=b+1:v=b}while(l<v)}return l}function o(f,u,l=0,v=f.length){if(l<v){if(e(u,u)!==0)return v;do{const b=l+v>>>1;n(f[b],u)<=0?l=b+1:v=b}while(l<v)}return l}function s(f,u,l=0,v=f.length){const b=i(f,u,l,v-1);return b>l&&r(f[b-1],u)>-r(f[b],u)?b-1:b}return{left:i,center:s,right:o}}function I0(){return 0}function D0(t){return t===null?NaN:+t}const z0=_u(uo).right;_u(D0).center;function Su(t,e){let n,r;for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));return[n,r]}var ja=Math.sqrt(50),Xa=Math.sqrt(10),Wa=Math.sqrt(2);function O0(t,e,n){var r,i=-1,o,s,f;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(f=Tu(t,e,n))===0||!isFinite(f))return[];if(f>0){let u=Math.round(t/f),l=Math.round(e/f);for(u*f<t&&++u,l*f>e&&--l,s=new Array(o=l-u+1);++i<o;)s[i]=(u+i)*f}else{f=-f;let u=Math.round(t*f),l=Math.round(e*f);for(u/f<t&&++u,l/f>e&&--l,s=new Array(o=l-u+1);++i<o;)s[i]=(u+i)/f}return r&&s.reverse(),s}function Tu(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=ja?10:o>=Xa?5:o>=Wa?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ja?10:o>=Xa?5:o>=Wa?2:1)}function M0(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=ja?i*=10:o>=Xa?i*=5:o>=Wa&&(i*=2),e<t?-i:i}function N0(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function wu(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function G0(t){return function(){return t}}function B0(t){return+t}var Au=[0,1];function Sn(t){return t}function qa(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:G0(isNaN(e)?NaN:.5)}function U0(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function V0(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=qa(i,r),o=n(s,o)):(r=qa(r,i),o=n(o,s)),function(f){return o(r(f))}}function $0(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=qa(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(f){var u=z0(t,f,1,r)-1;return o[u](i[u](f))}}function Eu(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Pu(){var t=Au,e=Au,n=Fa,r,i,o,s=Sn,f,u,l;function v(){var S=Math.min(t.length,e.length);return s!==Sn&&(s=U0(t[0],t[S-1])),f=S>2?$0:V0,u=l=null,b}function b(S){return S==null||isNaN(S=+S)?o:(u||(u=f(t.map(r),e,n)))(r(s(S)))}return b.invert=function(S){return s(i((l||(l=f(e,t.map(r),hn)))(S)))},b.domain=function(S){return arguments.length?(t=Array.from(S,B0),v()):t.slice()},b.range=function(S){return arguments.length?(e=Array.from(S),v()):e.slice()},b.rangeRound=function(S){return e=Array.from(S),n=im,v()},b.clamp=function(S){return arguments.length?(s=S?!0:Sn,v()):s!==Sn},b.interpolate=function(S){return arguments.length?(n=S,v()):n},b.unknown=function(S){return arguments.length?(o=S,b):o},function(S,D){return r=S,i=D,v()}}function H0(){return Pu()(Sn,Sn)}function j0(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function lo(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Fr(t){return t=lo(Math.abs(t)),t?t[1]:NaN}function X0(t,e){return function(n,r){for(var i=n.length,o=[],s=0,f=t[0],u=0;i>0&&f>0&&(u+f+1>r&&(f=Math.max(1,r-u)),o.push(n.substring(i-=f,i+f)),!((u+=f+1)>r));)f=t[s=(s+1)%t.length];return o.reverse().join(e)}}function W0(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var q0=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function co(t){if(!(e=q0.exec(t)))throw new Error("invalid format: "+t);var e;return new Ya({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}co.prototype=Ya.prototype;function Ya(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Ya.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Y0(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var Cu;function Z0(t,e){var n=lo(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Cu=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+lo(t,Math.max(0,e+o-1))[0]}function ku(t,e){var n=lo(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const Lu={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:j0,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>ku(t*100,e),r:ku,s:Z0,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Fu(t){return t}var Ru=Array.prototype.map,Iu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Q0(t){var e=t.grouping===void 0||t.thousands===void 0?Fu:X0(Ru.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?Fu:W0(Ru.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",f=t.minus===void 0?"−":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function l(b){b=co(b);var S=b.fill,D=b.align,Y=b.sign,Ee=b.symbol,Te=b.zero,se=b.width,Ue=b.comma,He=b.precision,H=b.trim,fe=b.type;fe==="n"?(Ue=!0,fe="g"):Lu[fe]||(He===void 0&&(He=12),H=!0,fe="g"),(Te||S==="0"&&D==="=")&&(Te=!0,S="0",D="=");var Re=Ee==="$"?n:Ee==="#"&&/[boxX]/.test(fe)?"0"+fe.toLowerCase():"",Ge=Ee==="$"?r:/[%p]/.test(fe)?s:"",Ye=Lu[fe],at=/[defgprs%]/.test(fe);He=He===void 0?6:/[gprs]/.test(fe)?Math.max(1,Math.min(21,He)):Math.max(0,Math.min(20,He));function ut(Ae){var lt=Re,it=Ge,N,Ce,re;if(fe==="c")it=Ye(Ae)+it,Ae="";else{Ae=+Ae;var ke=Ae<0||1/Ae<0;if(Ae=isNaN(Ae)?u:Ye(Math.abs(Ae),He),H&&(Ae=Y0(Ae)),ke&&+Ae==0&&Y!=="+"&&(ke=!1),lt=(ke?Y==="("?Y:f:Y==="-"||Y==="("?"":Y)+lt,it=(fe==="s"?Iu[8+Cu/3]:"")+it+(ke&&Y==="("?")":""),at){for(N=-1,Ce=Ae.length;++N<Ce;)if(re=Ae.charCodeAt(N),48>re||re>57){it=(re===46?i+Ae.slice(N+1):Ae.slice(N))+it,Ae=Ae.slice(0,N);break}}}Ue&&!Te&&(Ae=e(Ae,1/0));var Xe=lt.length+Ae.length+it.length,je=Xe<se?new Array(se-Xe+1).join(S):"";switch(Ue&&Te&&(Ae=e(je+Ae,je.length?se-it.length:1/0),je=""),D){case"<":Ae=lt+Ae+it+je;break;case"=":Ae=lt+je+Ae+it;break;case"^":Ae=je.slice(0,Xe=je.length>>1)+lt+Ae+it+je.slice(Xe);break;default:Ae=je+lt+Ae+it;break}return o(Ae)}return ut.toString=function(){return b+""},ut}function v(b,S){var D=l((b=co(b),b.type="f",b)),Y=Math.max(-8,Math.min(8,Math.floor(Fr(S)/3)))*3,Ee=Math.pow(10,-Y),Te=Iu[8+Y/3];return function(se){return D(Ee*se)+Te}}return{format:l,formatPrefix:v}}var ho,Du,zu;K0({thousands:",",grouping:[3],currency:["$",""]});function K0(t){return ho=Q0(t),Du=ho.format,zu=ho.formatPrefix,ho}function J0(t){return Math.max(0,-Fr(Math.abs(t)))}function ev(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Fr(e)/3)))*3-Fr(Math.abs(t)))}function tv(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Fr(e)-Fr(t))+1}function nv(t,e,n,r){var i=M0(t,e,n),o;switch(r=co(r??",f"),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=ev(i,s))&&(r.precision=o),zu(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=tv(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=J0(i))&&(r.precision=o-(r.type==="%")*2);break}}return Du(r)}function Ou(t){var e=t.domain;return t.ticks=function(n){var r=e();return O0(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return nv(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],f=r[o],u,l,v=10;for(f<s&&(l=s,s=f,f=l,l=i,i=o,o=l);v-- >0;){if(l=Tu(s,f,n),l===u)return r[i]=s,r[o]=f,e(r);if(l>0)s=Math.floor(s/l)*l,f=Math.ceil(f/l)*l;else if(l<0)s=Math.ceil(s*l)/l,f=Math.floor(f*l)/l;else break;u=l}return t},t}function Za(){var t=H0();return t.copy=function(){return Eu(t,Za())},wu.apply(t,arguments),Ou(t)}function Mu(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function rv(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function iv(t){return t<0?-t*t:t*t}function ov(t){var e=t(Sn,Sn),n=1;function r(){return n===1?t(Sn,Sn):n===.5?t(rv,iv):t(Mu(n),Mu(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Ou(e)}function Nu(){var t=ov(Pu());return t.copy=function(){return Eu(t,Nu()).exponent(t.exponent())},wu.apply(t,arguments),t}const av=t=>{const e=Nu().exponent(2).range([0,1]).domain([-1,1]),n=N0(0,t).map(i=>-.5+i/t);n.push(.5);const r=new Array(n.length*2);return n.forEach((i,o)=>{r[o*2]=[e(i*2),.5],r[o*2+1]=[e(i*2),-.5]}),r};class sv extends In{initPrograms(){const{reglInstance:e,config:n,store:r}=this;this.drawCurveCommand||(this.drawCurveCommand=e({vert:F0,frag:L0,attributes:{position:{buffer:()=>this.curveLineBuffer,divisor:0},pointA:{buffer:()=>this.pointsBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*4},pointB:{buffer:()=>this.pointsBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*2,stride:Float32Array.BYTES_PER_ELEMENT*4},color:{buffer:()=>this.colorBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*4},width:{buffer:()=>this.widthBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*1},arrow:{buffer:()=>this.arrowBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*1}},uniforms:{positionsTexture:()=>{var i;return(i=this.points)==null?void 0:i.currentPositionFbo},pointGreyoutStatus:()=>{var i;return(i=this.points)==null?void 0:i.greyoutStatusFbo},transformationMatrix:()=>r.transform,pointsTextureSize:()=>r.pointsTextureSize,widthScale:()=>n.linkWidthScale,arrowSizeScale:()=>n.linkArrowsSizeScale,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,linkVisibilityDistanceRange:()=>n.linkVisibilityDistanceRange,linkVisibilityMinTransparency:()=>n.linkVisibilityMinTransparency,linkOpacity:()=>n.linkOpacity,greyoutOpacity:()=>n.linkGreyoutOpacity,scaleLinksOnZoom:()=>n.scaleLinksOnZoom,maxPointSize:()=>r.maxPointSize,curvedWeight:()=>n.curvedLinkWeight,curvedLinkControlPointDistance:()=>n.curvedLinkControlPointDistance,curvedLinkSegments:()=>n.curvedLinks?n.curvedLinkSegments??We.curvedLinkSegments:1},cull:{enable:!0,face:"back"},blend:{enable:!0,func:{dstRGB:"one minus src alpha",srcRGB:"src alpha",dstAlpha:"one minus src alpha",srcAlpha:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},count:()=>{var i;return((i=this.curveLineGeometry)==null?void 0:i.length)??0},instances:()=>this.data.linksNumber??0,primitive:"triangle strip"}))}draw(){var e;this.pointsBuffer&&(this.colorBuffer||this.updateColor(),this.widthBuffer||this.updateWidth(),this.arrowBuffer||this.updateArrow(),this.curveLineGeometry||this.updateCurveLineGeometry(),(e=this.drawCurveCommand)==null||e.call(this))}updatePointsBuffer(){const{reglInstance:e,data:n,store:r}=this;if(n.linksNumber===void 0||n.links===void 0)return;const i=new Float32Array(n.linksNumber*4);for(let o=0;o<n.linksNumber;o++){const s=n.links[o*2],f=n.links[o*2+1],u=s%r.pointsTextureSize,l=Math.floor(s/r.pointsTextureSize),v=f%r.pointsTextureSize,b=Math.floor(f/r.pointsTextureSize),S=o*4;i[S]=u,i[S+1]=l,i[S+2]=v,i[S+3]=b}this.pointsBuffer||(this.pointsBuffer=e.buffer(0)),this.pointsBuffer(i)}updateColor(){const{reglInstance:e,data:n}=this;this.colorBuffer||(this.colorBuffer=e.buffer(0)),this.colorBuffer(n.linkColors??new Float32Array)}updateWidth(){const{reglInstance:e,data:n}=this;this.widthBuffer||(this.widthBuffer=e.buffer(0)),this.widthBuffer(n.linkWidths??new Float32Array)}updateArrow(){const{reglInstance:e,data:n}=this;this.arrowBuffer||(this.arrowBuffer=e.buffer(0)),this.arrowBuffer(n.linkArrows??new Float32Array)}updateCurveLineGeometry(){const{reglInstance:e,config:{curvedLinks:n,curvedLinkSegments:r}}=this;this.curveLineGeometry=av(n?r??We.curvedLinkSegments:1),this.curveLineBuffer||(this.curveLineBuffer=e.buffer(0)),this.curveLineBuffer(this.curveLineGeometry)}}var fv=`#ifdef GL_ES
|
|
850
858
|
precision highp float;
|
|
851
859
|
#endif
|
|
852
860
|
|
|
@@ -867,7 +875,7 @@ void main() {
|
|
|
867
875
|
float opacity = alpha * (1.0 - smoothstep(smoothing, 1.0, pointCenterDistance));
|
|
868
876
|
|
|
869
877
|
gl_FragColor = vec4(rgbColor, opacity);
|
|
870
|
-
}`,
|
|
878
|
+
}`,uv=`#ifdef GL_ES
|
|
871
879
|
precision highp float;
|
|
872
880
|
#endif
|
|
873
881
|
|
|
@@ -884,6 +892,7 @@ uniform float sizeScale;
|
|
|
884
892
|
uniform float spaceSize;
|
|
885
893
|
uniform vec2 screenSize;
|
|
886
894
|
uniform float greyoutOpacity;
|
|
895
|
+
uniform float pointOpacity;
|
|
887
896
|
uniform vec4 greyoutColor;
|
|
888
897
|
uniform vec4 backgroundColor;
|
|
889
898
|
uniform bool scalePointsOnZoom;
|
|
@@ -920,7 +929,7 @@ void main() {
|
|
|
920
929
|
gl_PointSize = calculatePointSize(size * sizeScale);
|
|
921
930
|
|
|
922
931
|
rgbColor = color.rgb;
|
|
923
|
-
alpha = color.a;
|
|
932
|
+
alpha = color.a * pointOpacity;
|
|
924
933
|
|
|
925
934
|
|
|
926
935
|
vec4 greyoutStatus = texture2D(pointGreyoutStatus, (textureCoords + 0.5) / pointsTextureSize);
|
|
@@ -945,7 +954,7 @@ void main() {
|
|
|
945
954
|
alpha *= greyoutOpacity;
|
|
946
955
|
}
|
|
947
956
|
}
|
|
948
|
-
}`,
|
|
957
|
+
}`,lv=`#ifdef GL_ES
|
|
949
958
|
precision highp float;
|
|
950
959
|
#endif
|
|
951
960
|
|
|
@@ -990,7 +999,7 @@ void main() {
|
|
|
990
999
|
if (final.x >= left && final.x <= right && final.y >= top && final.y <= bottom) {
|
|
991
1000
|
gl_FragColor.r = 1.0;
|
|
992
1001
|
}
|
|
993
|
-
}`,
|
|
1002
|
+
}`,cv=`#ifdef GL_ES
|
|
994
1003
|
precision highp float;
|
|
995
1004
|
#endif
|
|
996
1005
|
|
|
@@ -1052,7 +1061,7 @@ void main() {
|
|
|
1052
1061
|
if (pointInPolygon(screenPos, polygonPathTexture, polygonPathLength)) {
|
|
1053
1062
|
gl_FragColor.r = 1.0;
|
|
1054
1063
|
}
|
|
1055
|
-
}`,
|
|
1064
|
+
}`,hv=`precision mediump float;
|
|
1056
1065
|
|
|
1057
1066
|
uniform float width;
|
|
1058
1067
|
|
|
@@ -1067,7 +1076,7 @@ void main () {
|
|
|
1067
1076
|
float opacity = smoothstep(r, r * smoothing, 1.0);
|
|
1068
1077
|
float stroke = smoothstep(width, width * smoothing, r);
|
|
1069
1078
|
gl_FragColor = vec4(rgbColor, opacity * stroke * pointOpacity);
|
|
1070
|
-
}`,
|
|
1079
|
+
}`,dv=`precision mediump float;
|
|
1071
1080
|
|
|
1072
1081
|
attribute vec2 vertexCoord;
|
|
1073
1082
|
|
|
@@ -1083,6 +1092,7 @@ uniform bool scalePointsOnZoom;
|
|
|
1083
1092
|
uniform float pointIndex;
|
|
1084
1093
|
uniform float maxPointSize;
|
|
1085
1094
|
uniform vec4 color;
|
|
1095
|
+
uniform float universalPointOpacity;
|
|
1086
1096
|
uniform float greyoutOpacity;
|
|
1087
1097
|
uniform bool darkenGreyout;
|
|
1088
1098
|
uniform vec4 backgroundColor;
|
|
@@ -1110,7 +1120,7 @@ void main () {
|
|
|
1110
1120
|
vec4 pointPosition = texture2D(positionsTexture, textureCoordinates / pointsTextureSize);
|
|
1111
1121
|
|
|
1112
1122
|
rgbColor = color.rgb;
|
|
1113
|
-
pointOpacity = color.a;
|
|
1123
|
+
pointOpacity = color.a * universalPointOpacity;
|
|
1114
1124
|
vec4 greyoutStatus = texture2D(pointGreyoutStatusTexture, textureCoordinates / pointsTextureSize);
|
|
1115
1125
|
if (greyoutStatus.r > 0.0) {
|
|
1116
1126
|
if (greyoutColor[0] != -1.0) {
|
|
@@ -1151,7 +1161,7 @@ void main () {
|
|
|
1151
1161
|
vec3 final = transformationMatrix * vec3(p, 1);
|
|
1152
1162
|
|
|
1153
1163
|
gl_Position = vec4(final.rg, 0, 1);
|
|
1154
|
-
}`,
|
|
1164
|
+
}`,mv=`#ifdef GL_ES
|
|
1155
1165
|
precision highp float;
|
|
1156
1166
|
#endif
|
|
1157
1167
|
|
|
@@ -1159,7 +1169,7 @@ varying vec4 rgba;
|
|
|
1159
1169
|
|
|
1160
1170
|
void main() {
|
|
1161
1171
|
gl_FragColor = rgba;
|
|
1162
|
-
}`,
|
|
1172
|
+
}`,pv=`#ifdef GL_ES
|
|
1163
1173
|
precision highp float;
|
|
1164
1174
|
#endif
|
|
1165
1175
|
|
|
@@ -1215,7 +1225,7 @@ void main() {
|
|
|
1215
1225
|
}
|
|
1216
1226
|
|
|
1217
1227
|
gl_PointSize = 1.0;
|
|
1218
|
-
}`,
|
|
1228
|
+
}`,vv=`#ifdef GL_ES
|
|
1219
1229
|
precision highp float;
|
|
1220
1230
|
#endif
|
|
1221
1231
|
|
|
@@ -1223,7 +1233,7 @@ varying vec4 rgba;
|
|
|
1223
1233
|
|
|
1224
1234
|
void main() {
|
|
1225
1235
|
gl_FragColor = rgba;
|
|
1226
|
-
}`,
|
|
1236
|
+
}`,gv=`#ifdef GL_ES
|
|
1227
1237
|
precision highp float;
|
|
1228
1238
|
#endif
|
|
1229
1239
|
|
|
@@ -1251,7 +1261,7 @@ void main() {
|
|
|
1251
1261
|
gl_Position = vec4(2.0 * vec2(i, j) - 1.0, 0.0, 1.0);
|
|
1252
1262
|
|
|
1253
1263
|
gl_PointSize = 1.0;
|
|
1254
|
-
}`,
|
|
1264
|
+
}`,yv=`#ifdef GL_ES
|
|
1255
1265
|
precision highp float;
|
|
1256
1266
|
#endif
|
|
1257
1267
|
|
|
@@ -1275,7 +1285,7 @@ void main() {
|
|
|
1275
1285
|
pointPosition.g = clamp(pointPosition.g, 0.0, spaceSize);
|
|
1276
1286
|
|
|
1277
1287
|
gl_FragColor = pointPosition;
|
|
1278
|
-
}`,
|
|
1288
|
+
}`,xv=`#ifdef GL_ES
|
|
1279
1289
|
precision highp float;
|
|
1280
1290
|
#endif
|
|
1281
1291
|
|
|
@@ -1291,7 +1301,7 @@ void main() {
|
|
|
1291
1301
|
vec4 pointPosition = texture2D(positionsTexture, (trackedPointIndices.rg + 0.5) / pointsTextureSize);
|
|
1292
1302
|
|
|
1293
1303
|
gl_FragColor = vec4(pointPosition.rg, 1.0, 1.0);
|
|
1294
|
-
}`,
|
|
1304
|
+
}`,bv=`#ifdef GL_ES
|
|
1295
1305
|
precision highp float;
|
|
1296
1306
|
#endif
|
|
1297
1307
|
|
|
@@ -1310,7 +1320,7 @@ void main() {
|
|
|
1310
1320
|
}
|
|
1311
1321
|
|
|
1312
1322
|
gl_FragColor = pointPosition;
|
|
1313
|
-
}`;class Sp extends ln{constructor(){super(...arguments),this.polygonPathLength=0}updatePositions(){const{reglInstance:e,store:n,data:r,config:{rescalePositions:i,enableSimulation:o}}=this,{pointsTextureSize:u}=n;if(!u||!r.pointPositions||r.pointsNumber===void 0)return;const s=new Float32Array(u*u*4);let f=i;i===void 0&&!o&&(f=!0),this.dontRescale&&(f=!1),f?this.rescaleInitialNodePositions():this.dontRescale||(this.scaleX=void 0,this.scaleY=void 0),this.dontRescale=void 0;for(let l=0;l<r.pointsNumber;++l)s[l*4+0]=r.pointPositions[l*2+0],s[l*4+1]=r.pointPositions[l*2+1],s[l*4+2]=l;this.currentPositionFbo||(this.currentPositionFbo=e.framebuffer()),this.currentPositionFbo({color:e.texture({data:s,shape:[u,u,4],type:"float"}),depth:!1,stencil:!1}),this.previousPositionFbo||(this.previousPositionFbo=e.framebuffer()),this.previousPositionFbo({color:e.texture({data:s,shape:[u,u,4],type:"float"}),depth:!1,stencil:!1}),this.config.enableSimulation&&(this.velocityFbo||(this.velocityFbo=e.framebuffer()),this.velocityFbo({color:e.texture({data:new Float32Array(u*u*4).fill(0),shape:[u,u,4],type:"float"}),depth:!1,stencil:!1})),this.selectedTexture||(this.selectedTexture=e.texture()),this.selectedTexture({data:s,shape:[u,u,4],type:"float"}),this.selectedFbo||(this.selectedFbo=e.framebuffer()),this.selectedFbo({color:this.selectedTexture,depth:!1,stencil:!1}),this.hoveredFbo||(this.hoveredFbo=e.framebuffer()),this.hoveredFbo({shape:[2,2],colorType:"float",depth:!1,stencil:!1}),this.drawPointIndices||(this.drawPointIndices=e.buffer(0)),this.drawPointIndices(Cn(n.pointsTextureSize)),this.hoveredPointIndices||(this.hoveredPointIndices=e.buffer(0)),this.hoveredPointIndices(Cn(n.pointsTextureSize)),this.sampledPointIndices||(this.sampledPointIndices=e.buffer(0)),this.sampledPointIndices(Cn(n.pointsTextureSize)),this.updateGreyoutStatus(),this.updateSampledPointsGrid(),this.trackPointsByIndices()}initPrograms(){const{reglInstance:e,config:n,store:r,data:i}=this;n.enableSimulation&&(this.updatePositionCommand||(this.updatePositionCommand=e({frag:xp,vert:xt,framebuffer:()=>this.currentPositionFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:pt(e)},uniforms:{positionsTexture:()=>this.previousPositionFbo,velocity:()=>this.velocityFbo,friction:()=>n.simulationFriction,spaceSize:()=>r.adjustedSpaceSize}}))),this.dragPointCommand||(this.dragPointCommand=e({frag:_p,vert:xt,framebuffer:()=>this.currentPositionFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:pt(e)},uniforms:{positionsTexture:()=>this.previousPositionFbo,mousePos:()=>r.mousePosition,index:()=>{var o;return((o=r.hoveredPoint)==null?void 0:o.index)??-1}}})),this.drawCommand||(this.drawCommand=e({frag:fp,vert:lp,primitive:"points",count:()=>i.pointsNumber??0,attributes:{pointIndices:{buffer:this.drawPointIndices,size:2},size:{buffer:()=>this.sizeBuffer,size:1},color:{buffer:()=>this.colorBuffer,size:4}},uniforms:{positionsTexture:()=>this.currentPositionFbo,pointGreyoutStatus:()=>this.greyoutStatusFbo,ratio:()=>n.pixelRatio,sizeScale:()=>n.pointSizeScale,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,greyoutOpacity:()=>n.pointGreyoutOpacity??-1,greyoutColor:()=>r.greyoutPointColor,backgroundColor:()=>r.backgroundColor,darkenGreyout:()=>r.darkenGreyout,scalePointsOnZoom:()=>n.scalePointsOnZoom,maxPointSize:()=>r.maxPointSize},blend:{enable:!0,func:{dstRGB:"one minus src alpha",srcRGB:"src alpha",dstAlpha:"one minus src alpha",srcAlpha:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1}})),this.findPointsOnAreaSelectionCommand||(this.findPointsOnAreaSelectionCommand=e({frag:cp,vert:xt,framebuffer:()=>this.selectedFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:pt(e)},uniforms:{positionsTexture:()=>this.currentPositionFbo,pointSize:()=>this.sizeFbo,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,sizeScale:()=>n.pointSizeScale,transformationMatrix:()=>r.transform,ratio:()=>n.pixelRatio,"selection[0]":()=>r.selectedArea[0],"selection[1]":()=>r.selectedArea[1],scalePointsOnZoom:()=>n.scalePointsOnZoom,maxPointSize:()=>r.maxPointSize}})),this.findPointsOnPolygonSelectionCommand||(this.findPointsOnPolygonSelectionCommand=e({frag:hp,vert:xt,framebuffer:()=>this.selectedFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:pt(e)},uniforms:{positionsTexture:()=>this.currentPositionFbo,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,transformationMatrix:()=>r.transform,polygonPathTexture:()=>this.polygonPathTexture,polygonPathLength:()=>this.polygonPathLength}})),this.clearHoveredFboCommand||(this.clearHoveredFboCommand=e({frag:kn,vert:xt,framebuffer:this.hoveredFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:pt(e)}})),this.findHoveredPointCommand||(this.findHoveredPointCommand=e({frag:pp,vert:vp,primitive:"points",count:()=>i.pointsNumber??0,framebuffer:()=>this.hoveredFbo,attributes:{pointIndices:{buffer:this.hoveredPointIndices,size:2},size:{buffer:()=>this.sizeBuffer,size:1}},uniforms:{positionsTexture:()=>this.currentPositionFbo,ratio:()=>n.pixelRatio,sizeScale:()=>n.pointSizeScale,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,scalePointsOnZoom:()=>n.scalePointsOnZoom,mousePosition:()=>r.screenMousePosition,maxPointSize:()=>r.maxPointSize},depth:{enable:!1,mask:!1}})),this.clearSampledPointsFboCommand||(this.clearSampledPointsFboCommand=e({frag:kn,vert:xt,framebuffer:()=>this.sampledPointsFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:pt(e)}})),this.fillSampledPointsFboCommand||(this.fillSampledPointsFboCommand=e({frag:gp,vert:yp,primitive:"points",count:()=>i.pointsNumber??0,framebuffer:()=>this.sampledPointsFbo,attributes:{pointIndices:{buffer:this.sampledPointIndices,size:2}},uniforms:{positionsTexture:()=>this.currentPositionFbo,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize},depth:{enable:!1,mask:!1}})),this.drawHighlightedCommand||(this.drawHighlightedCommand=e({frag:dp,vert:mp,attributes:{vertexCoord:pt(e)},primitive:"triangle strip",count:4,uniforms:{color:e.prop("color"),width:e.prop("width"),pointIndex:e.prop("pointIndex"),size:e.prop("size"),positionsTexture:()=>this.currentPositionFbo,sizeScale:()=>n.pointSizeScale,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,scalePointsOnZoom:()=>n.scalePointsOnZoom,maxPointSize:()=>r.maxPointSize,pointGreyoutStatusTexture:()=>this.greyoutStatusFbo,greyoutOpacity:()=>n.pointGreyoutOpacity??-1,darkenGreyout:()=>r.darkenGreyout,backgroundColor:()=>r.backgroundColor,greyoutColor:()=>r.greyoutPointColor},blend:{enable:!0,func:{dstRGB:"one minus src alpha",srcRGB:"src alpha",dstAlpha:"one minus src alpha",srcAlpha:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1}})),this.trackPointsCommand||(this.trackPointsCommand=e({frag:bp,vert:xt,framebuffer:()=>this.trackedPositionsFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:pt(e)},uniforms:{positionsTexture:()=>this.currentPositionFbo,trackedIndices:()=>this.trackedIndicesFbo,pointsTextureSize:()=>r.pointsTextureSize}}))}updateColor(){const{reglInstance:e,store:{pointsTextureSize:n},data:r}=this;n&&(this.colorBuffer||(this.colorBuffer=e.buffer(0)),this.colorBuffer(r.pointColors))}updateGreyoutStatus(){const{reglInstance:e,store:{selectedIndices:n,pointsTextureSize:r}}=this;if(!r)return;const i=new Float32Array(r*r*4).fill(n?1:0);if(n)for(const o of n)i[o*4]=0;this.greyoutStatusTexture||(this.greyoutStatusTexture=e.texture()),this.greyoutStatusTexture({data:i,width:r,height:r,type:"float"}),this.greyoutStatusFbo||(this.greyoutStatusFbo=e.framebuffer()),this.greyoutStatusFbo({color:this.greyoutStatusTexture,depth:!1,stencil:!1})}updateSize(){const{reglInstance:e,store:{pointsTextureSize:n},data:r}=this;if(!n||r.pointsNumber===void 0||r.pointSizes===void 0)return;this.sizeBuffer||(this.sizeBuffer=e.buffer(0)),this.sizeBuffer(r.pointSizes);const i=new Float32Array(n*n*4);for(let o=0;o<r.pointsNumber;o++)i[o*4]=r.pointSizes[o];this.sizeTexture||(this.sizeTexture=e.texture()),this.sizeTexture({data:i,width:n,height:n,type:"float"}),this.sizeFbo||(this.sizeFbo=e.framebuffer()),this.sizeFbo({color:this.sizeTexture,depth:!1,stencil:!1})}updateSampledPointsGrid(){const{store:{screenSize:e},config:{pointSamplingDistance:n},reglInstance:r}=this;let i=n??Math.min(...e)/2;i===0&&(i=Be.pointSamplingDistance);const o=Math.ceil(e[0]/i),u=Math.ceil(e[1]/i);this.sampledPointsFbo||(this.sampledPointsFbo=r.framebuffer()),this.sampledPointsFbo({shape:[o,u],depth:!1,stencil:!1,colorType:"float"})}trackPoints(){var e,n;(e=this.trackedIndices)!=null&&e.length&&((n=this.trackPointsCommand)==null||n.call(this))}draw(){var o,u,s,f,l;const{config:{renderHoveredPointRing:e,pointSize:n},store:r,data:i}=this;this.colorBuffer||this.updateColor(),this.sizeBuffer||this.updateSize(),(o=this.drawCommand)==null||o.call(this),e&&r.hoveredPoint&&((s=this.drawHighlightedCommand)==null||s.call(this,{width:.85,color:r.hoveredPointRingColor,pointIndex:r.hoveredPoint.index,size:((u=i.pointSizes)==null?void 0:u[r.hoveredPoint.index])??n})),r.focusedPoint&&((l=this.drawHighlightedCommand)==null||l.call(this,{width:.75,color:r.focusedPointRingColor,pointIndex:r.focusedPoint.index,size:((f=i.pointSizes)==null?void 0:f[r.focusedPoint.index])??n}))}updatePosition(){var e;(e=this.updatePositionCommand)==null||e.call(this),this.swapFbo()}drag(){var e;(e=this.dragPointCommand)==null||e.call(this),this.swapFbo()}findPointsOnAreaSelection(){var e;(e=this.findPointsOnAreaSelectionCommand)==null||e.call(this)}findPointsOnPolygonSelection(){var e;(e=this.findPointsOnPolygonSelectionCommand)==null||e.call(this)}updatePolygonPath(e){const{reglInstance:n}=this;if(this.polygonPathLength=e.length,e.length===0){this.polygonPathTexture=void 0,this.polygonPathFbo=void 0;return}const r=Math.ceil(Math.sqrt(e.length)),i=new Float32Array(r*r*4);for(const[o,u]of e.entries()){const[s,f]=u;i[o*4]=s,i[o*4+1]=f,i[o*4+2]=0,i[o*4+3]=0}this.polygonPathTexture||(this.polygonPathTexture=n.texture()),this.polygonPathTexture({data:i,width:r,height:r,type:"float"}),this.polygonPathFbo||(this.polygonPathFbo=n.framebuffer()),this.polygonPathFbo({color:this.polygonPathTexture,depth:!1,stencil:!1})}findHoveredPoint(){var e,n;(e=this.clearHoveredFboCommand)==null||e.call(this),(n=this.findHoveredPointCommand)==null||n.call(this)}trackPointsByIndices(e){const{store:{pointsTextureSize:n},reglInstance:r}=this;if(this.trackedIndices=e,!(e!=null&&e.length))return;const i=Math.ceil(Math.sqrt(e.length)),o=new Float32Array(i*i*4).fill(-1);for(const[u,s]of e.entries())s!==void 0&&(o[u*4]=s%n,o[u*4+1]=Math.floor(s/n),o[u*4+2]=0,o[u*4+3]=0);this.trackedIndicesTexture||(this.trackedIndicesTexture=r.texture()),this.trackedIndicesTexture({data:o,width:i,height:i,type:"float"}),this.trackedIndicesFbo||(this.trackedIndicesFbo=r.framebuffer()),this.trackedIndicesFbo({color:this.trackedIndicesTexture,depth:!1,stencil:!1}),this.trackedPositionsFbo||(this.trackedPositionsFbo=r.framebuffer()),this.trackedPositionsFbo({shape:[i,i],depth:!1,stencil:!1,colorType:"float"}),this.trackPoints()}getTrackedPositionsMap(){const e=new Map;if(!this.trackedIndices)return e;const n=Ht(this.reglInstance,this.trackedPositionsFbo);for(let r=0;r<n.length/4;r+=1){const i=n[r*4],o=n[r*4+1],u=this.trackedIndices[r];i!==void 0&&o!==void 0&&u!==void 0&&e.set(u,[i,o])}return e}getSampledPointPositionsMap(){var r,i;const e=new Map;if(!this.sampledPointsFbo)return e;(r=this.clearSampledPointsFboCommand)==null||r.call(this),(i=this.fillSampledPointsFboCommand)==null||i.call(this);const n=Ht(this.reglInstance,this.sampledPointsFbo);for(let o=0;o<n.length/4;o++){const u=n[o*4],s=!!n[o*4+1],f=n[o*4+2],l=n[o*4+3];s&&u!==void 0&&f!==void 0&&l!==void 0&&e.set(u,[f,l])}return e}swapFbo(){const e=this.previousPositionFbo;this.previousPositionFbo=this.currentPositionFbo,this.currentPositionFbo=e}rescaleInitialNodePositions(){const{config:{spaceSize:e}}=this;if(!this.data.pointPositions||!e)return;const n=this.data.pointPositions,r=n.length/2;let i=1/0,o=-1/0,u=1/0,s=-1/0;for(let Se=0;Se<n.length;Se+=2){const ae=n[Se],Ne=n[Se+1];i=Math.min(i,ae),o=Math.max(o,ae),u=Math.min(u,Ne),s=Math.max(s,Ne)}const f=o-i,l=s-u,v=Math.max(f,l);if(v>e){this.scaleX=void 0,this.scaleY=void 0;return}const b=e*e*.001,D=(r>b?e*Math.max(1.2,Math.sqrt(r)/e):e*.1)/v,Z=(v-f)/2*D,we=(v-l)/2*D;this.scaleX=Se=>(Se-i)*D+Z,this.scaleY=Se=>(Se-u)*D+we;for(let Se=0;Se<r;Se++)this.data.pointPositions[Se*2]=this.scaleX(n[Se*2]),this.data.pointPositions[Se*2+1]=this.scaleY(n[Se*2+1])}}var Ys=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});function wp(){var t=new Ys(9);return Ys!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function Zs(t,e,n){var r=e[0],i=e[1],o=e[2],u=e[3],s=e[4],f=e[5],l=e[6],v=e[7],b=e[8],S=n[0],D=n[1];return t[0]=r,t[1]=i,t[2]=o,t[3]=u,t[4]=s,t[5]=f,t[6]=S*r+D*u+l,t[7]=S*i+D*s+v,t[8]=S*o+D*f+b,t}function Po(t,e,n){var r=n[0],i=n[1];return t[0]=r*e[0],t[1]=r*e[1],t[2]=r*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function Tp(t,e,n){return t[0]=2/e,t[1]=0,t[2]=0,t[3]=0,t[4]=-2/n,t[5]=0,t[6]=-1,t[7]=1,t[8]=1,t}var ci={exports:{}},Ap=ci.exports,Qs;function Ep(){return Qs||(Qs=1,function(t){(function(e,n,r){function i(f){var l=this,v=s();l.next=function(){var b=2091639*l.s0+l.c*23283064365386963e-26;return l.s0=l.s1,l.s1=l.s2,l.s2=b-(l.c=b|0)},l.c=1,l.s0=v(" "),l.s1=v(" "),l.s2=v(" "),l.s0-=v(f),l.s0<0&&(l.s0+=1),l.s1-=v(f),l.s1<0&&(l.s1+=1),l.s2-=v(f),l.s2<0&&(l.s2+=1),v=null}function o(f,l){return l.c=f.c,l.s0=f.s0,l.s1=f.s1,l.s2=f.s2,l}function u(f,l){var v=new i(f),b=l&&l.state,S=v.next;return S.int32=function(){return v.next()*4294967296|0},S.double=function(){return S()+(S()*2097152|0)*11102230246251565e-32},S.quick=S,b&&(typeof b=="object"&&o(b,v),S.state=function(){return o(v,{})}),S}function s(){var f=4022871197,l=function(v){v=String(v);for(var b=0;b<v.length;b++){f+=v.charCodeAt(b);var S=.02519603282416938*f;f=S>>>0,S-=f,S*=f,f=S>>>0,S-=f,f+=S*4294967296}return(f>>>0)*23283064365386963e-26};return l}n&&n.exports?n.exports=u:this.alea=u})(Ap,t)}(ci)),ci.exports}var hi={exports:{}},Pp=hi.exports,Ks;function Cp(){return Ks||(Ks=1,function(t){(function(e,n,r){function i(s){var f=this,l="";f.x=0,f.y=0,f.z=0,f.w=0,f.next=function(){var b=f.x^f.x<<11;return f.x=f.y,f.y=f.z,f.z=f.w,f.w^=f.w>>>19^b^b>>>8},s===(s|0)?f.x=s:l+=s;for(var v=0;v<l.length+64;v++)f.x^=l.charCodeAt(v)|0,f.next()}function o(s,f){return f.x=s.x,f.y=s.y,f.z=s.z,f.w=s.w,f}function u(s,f){var l=new i(s),v=f&&f.state,b=function(){return(l.next()>>>0)/4294967296};return b.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Z=(S+D)/(1<<21);while(Z===0);return Z},b.int32=l.next,b.quick=b,v&&(typeof v=="object"&&o(v,l),b.state=function(){return o(l,{})}),b}n&&n.exports?n.exports=u:this.xor128=u})(Pp,t)}(hi)),hi.exports}var di={exports:{}},kp=di.exports,Js;function Fp(){return Js||(Js=1,function(t){(function(e,n,r){function i(s){var f=this,l="";f.next=function(){var b=f.x^f.x>>>2;return f.x=f.y,f.y=f.z,f.z=f.w,f.w=f.v,(f.d=f.d+362437|0)+(f.v=f.v^f.v<<4^(b^b<<1))|0},f.x=0,f.y=0,f.z=0,f.w=0,f.v=0,s===(s|0)?f.x=s:l+=s;for(var v=0;v<l.length+64;v++)f.x^=l.charCodeAt(v)|0,v==l.length&&(f.d=f.x<<10^f.x>>>4),f.next()}function o(s,f){return f.x=s.x,f.y=s.y,f.z=s.z,f.w=s.w,f.v=s.v,f.d=s.d,f}function u(s,f){var l=new i(s),v=f&&f.state,b=function(){return(l.next()>>>0)/4294967296};return b.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Z=(S+D)/(1<<21);while(Z===0);return Z},b.int32=l.next,b.quick=b,v&&(typeof v=="object"&&o(v,l),b.state=function(){return o(l,{})}),b}n&&n.exports?n.exports=u:this.xorwow=u})(kp,t)}(di)),di.exports}var mi={exports:{}},Lp=mi.exports,eu;function zp(){return eu||(eu=1,function(t){(function(e,n,r){function i(s){var f=this;f.next=function(){var v=f.x,b=f.i,S,D;return S=v[b],S^=S>>>7,D=S^S<<24,S=v[b+1&7],D^=S^S>>>10,S=v[b+3&7],D^=S^S>>>3,S=v[b+4&7],D^=S^S<<7,S=v[b+7&7],S=S^S<<13,D^=S^S<<9,v[b]=D,f.i=b+1&7,D};function l(v,b){var S,D=[];if(b===(b|0))D[0]=b;else for(b=""+b,S=0;S<b.length;++S)D[S&7]=D[S&7]<<15^b.charCodeAt(S)+D[S+1&7]<<13;for(;D.length<8;)D.push(0);for(S=0;S<8&&D[S]===0;++S);for(S==8?D[7]=-1:D[S],v.x=D,v.i=0,S=256;S>0;--S)v.next()}l(f,s)}function o(s,f){return f.x=s.x.slice(),f.i=s.i,f}function u(s,f){s==null&&(s=+new Date);var l=new i(s),v=f&&f.state,b=function(){return(l.next()>>>0)/4294967296};return b.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Z=(S+D)/(1<<21);while(Z===0);return Z},b.int32=l.next,b.quick=b,v&&(v.x&&o(v,l),b.state=function(){return o(l,{})}),b}n&&n.exports?n.exports=u:this.xorshift7=u})(Lp,t)}(mi)),mi.exports}var pi={exports:{}},Ip=pi.exports,tu;function Rp(){return tu||(tu=1,function(t){(function(e,n,r){function i(s){var f=this;f.next=function(){var v=f.w,b=f.X,S=f.i,D,Z;return f.w=v=v+1640531527|0,Z=b[S+34&127],D=b[S=S+1&127],Z^=Z<<13,D^=D<<17,Z^=Z>>>15,D^=D>>>12,Z=b[S]=Z^D,f.i=S,Z+(v^v>>>16)|0};function l(v,b){var S,D,Z,we,Se,ae=[],Ne=128;for(b===(b|0)?(D=b,b=null):(b=b+"\0",D=0,Ne=Math.max(Ne,b.length)),Z=0,we=-32;we<Ne;++we)b&&(D^=b.charCodeAt((we+32)%b.length)),we===0&&(Se=D),D^=D<<10,D^=D>>>15,D^=D<<4,D^=D>>>13,we>=0&&(Se=Se+1640531527|0,S=ae[we&127]^=D+Se,Z=S==0?Z+1:0);for(Z>=128&&(ae[(b&&b.length||0)&127]=-1),Z=127,we=4*128;we>0;--we)D=ae[Z+34&127],S=ae[Z=Z+1&127],D^=D<<13,S^=S<<17,D^=D>>>15,S^=S>>>12,ae[Z]=D^S;v.w=Se,v.X=ae,v.i=Z}l(f,s)}function o(s,f){return f.i=s.i,f.w=s.w,f.X=s.X.slice(),f}function u(s,f){s==null&&(s=+new Date);var l=new i(s),v=f&&f.state,b=function(){return(l.next()>>>0)/4294967296};return b.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Z=(S+D)/(1<<21);while(Z===0);return Z},b.int32=l.next,b.quick=b,v&&(v.X&&o(v,l),b.state=function(){return o(l,{})}),b}n&&n.exports?n.exports=u:this.xor4096=u})(Ip,t)}(pi)),pi.exports}var vi={exports:{}},Dp=vi.exports,nu;function Mp(){return nu||(nu=1,function(t){(function(e,n,r){function i(s){var f=this,l="";f.next=function(){var b=f.b,S=f.c,D=f.d,Z=f.a;return b=b<<25^b>>>7^S,S=S-D|0,D=D<<24^D>>>8^Z,Z=Z-b|0,f.b=b=b<<20^b>>>12^S,f.c=S=S-D|0,f.d=D<<16^S>>>16^Z,f.a=Z-b|0},f.a=0,f.b=0,f.c=-1640531527,f.d=1367130551,s===Math.floor(s)?(f.a=s/4294967296|0,f.b=s|0):l+=s;for(var v=0;v<l.length+20;v++)f.b^=l.charCodeAt(v)|0,f.next()}function o(s,f){return f.a=s.a,f.b=s.b,f.c=s.c,f.d=s.d,f}function u(s,f){var l=new i(s),v=f&&f.state,b=function(){return(l.next()>>>0)/4294967296};return b.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Z=(S+D)/(1<<21);while(Z===0);return Z},b.int32=l.next,b.quick=b,v&&(typeof v=="object"&&o(v,l),b.state=function(){return o(l,{})}),b}n&&n.exports?n.exports=u:this.tychei=u})(Dp,t)}(vi)),vi.exports}var gi={exports:{}};const Op=jd(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));var Gp=gi.exports,ru;function Np(){return ru||(ru=1,function(t){(function(e,n,r){var i=256,o=6,u=52,s="random",f=r.pow(i,o),l=r.pow(2,u),v=l*2,b=i-1,S;function D(W,ce,Le){var Me=[];ce=ce==!0?{entropy:!0}:ce||{};var Xe=ae(Se(ce.entropy?[W,je(n)]:W??Ne(),3),Me),et=new Z(Me),nt=function(){for(var ke=et.g(o),it=f,tt=0;ke<l;)ke=(ke+tt)*i,it*=i,tt=et.g(1);for(;ke>=v;)ke/=2,it/=2,tt>>>=1;return(ke+tt)/it};return nt.int32=function(){return et.g(4)|0},nt.quick=function(){return et.g(4)/4294967296},nt.double=nt,ae(je(et.S),n),(ce.pass||Le||function(ke,it,tt,G){return G&&(G.S&&we(G,et),ke.state=function(){return we(et,{})}),tt?(r[s]=ke,it):ke})(nt,Xe,"global"in ce?ce.global:this==r,ce.state)}function Z(W){var ce,Le=W.length,Me=this,Xe=0,et=Me.i=Me.j=0,nt=Me.S=[];for(Le||(W=[Le++]);Xe<i;)nt[Xe]=Xe++;for(Xe=0;Xe<i;Xe++)nt[Xe]=nt[et=b&et+W[Xe%Le]+(ce=nt[Xe])],nt[et]=ce;(Me.g=function(ke){for(var it,tt=0,G=Me.i,Ae=Me.j,oe=Me.S;ke--;)it=oe[G=b&G+1],tt=tt*i+oe[b&(oe[G]=oe[Ae=b&Ae+it])+(oe[Ae]=it)];return Me.i=G,Me.j=Ae,tt})(i)}function we(W,ce){return ce.i=W.i,ce.j=W.j,ce.S=W.S.slice(),ce}function Se(W,ce){var Le=[],Me=typeof W,Xe;if(ce&&Me=="object")for(Xe in W)try{Le.push(Se(W[Xe],ce-1))}catch{}return Le.length?Le:Me=="string"?W:W+"\0"}function ae(W,ce){for(var Le=W+"",Me,Xe=0;Xe<Le.length;)ce[b&Xe]=b&(Me^=ce[b&Xe]*19)+Le.charCodeAt(Xe++);return je(ce)}function Ne(){try{var W;return S&&(W=S.randomBytes)?W=W(i):(W=new Uint8Array(i),(e.crypto||e.msCrypto).getRandomValues(W)),je(W)}catch{var ce=e.navigator,Le=ce&&ce.plugins;return[+new Date,e,Le,e.screen,je(n)]}}function je(W){return String.fromCharCode.apply(0,W)}if(ae(r.random(),n),t.exports){t.exports=D;try{S=Op}catch{}}else r["seed"+s]=D})(typeof self<"u"?self:Gp,[],Math)}(gi)),gi.exports}var Co,iu;function Bp(){if(iu)return Co;iu=1;var t=Ep(),e=Cp(),n=Fp(),r=zp(),i=Rp(),o=Mp(),u=Np();return u.alea=t,u.xor128=e,u.xorwow=n,u.xorshift7=r,u.xor4096=i,u.tychei=o,Co=u,Co}var Vp=Bp();const $p=go(Vp);function Up(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,Xp(r.key),r)}}function ko(t,e,n){return e&&Up(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function ou(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,Fo(t,e)}function Fo(t,e){return Fo=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},Fo(t,e)}function jp(t,e){if(typeof t!="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}function Xp(t){var e=jp(t,"string");return typeof e=="symbol"?e:String(e)}var yi=function(){function t(){}var e=t.prototype;return e._seed=function(r,i){if(r===(r||0))return r;for(var o=""+r,u=0,s=0;s<o.length;++s)u^=o.charCodeAt(s)|0;return u},t}(),au=function(t){ou(e,t);function e(r,i){var o;return o=t.call(this)||this,o._rng=void 0,o.seed(r,i),o}var n=e.prototype;return n.next=function(){return this._rng()},n.seed=function(i,o){this._rng=i},n.clone=function(i,o){return new e(this._rng,o)},ko(e,[{key:"name",get:function(){return"function"}}]),e}(yi),su=function(){var t=[].slice.call(arguments),e=t,n=e[0],r=n===void 0?"default":n;switch(typeof r){case"object":if(r instanceof yi)return r;break;case"function":return new au(r);case"number":case"string":default:return new au($p.apply(void 0,t))}throw new Error('invalid RNG "'+r+'"')},Hp=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),function(){return t.next()*(n-e)+e}};function Wt(t){return new qp(t)}var qp=function(e){var n=this;this.n=void 0,this.isInt=function(){if(Number.isInteger(n.n))return n;throw new Error("Expected number to be an integer, got "+n.n)},this.isPositive=function(){if(n.n>0)return n;throw new Error("Expected number to be positive, got "+n.n)},this.lessThan=function(r){if(n.n<r)return n;throw new Error("Expected number to be less than "+r+", got "+n.n)},this.greaterThanOrEqual=function(r){if(n.n>=r)return n;throw new Error("Expected number to be greater than or equal to "+r+", got "+n.n)},this.greaterThan=function(r){if(n.n>r)return n;throw new Error("Expected number to be greater than "+r+", got "+n.n)},this.n=e},Wp=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),n===void 0&&(n=e===void 0?1:e,e=0),Wt(e).isInt(),Wt(n).isInt(),function(){return Math.floor(t.next()*(n-e+1)+e)}},Yp=function(t){return function(){return t.next()>=.5}},Zp=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),function(){var r,i,o;do r=t.next()*2-1,i=t.next()*2-1,o=r*r+i*i;while(!o||o>1);return e+n*i*Math.sqrt(-2*Math.log(o)/o)}},Qp=function(t,e,n){e===void 0&&(e=0),n===void 0&&(n=1);var r=t.normal(e,n);return function(){return Math.exp(r())}},Kp=function(t,e){return e===void 0&&(e=.5),Wt(e).greaterThanOrEqual(0).lessThan(1),function(){return Math.floor(t.next()+e)}},Jp=function(t,e,n){return e===void 0&&(e=1),n===void 0&&(n=.5),Wt(e).isInt().isPositive(),Wt(n).greaterThanOrEqual(0).lessThan(1),function(){for(var r=0,i=0;r++<e;)t.next()<n&&i++;return i}},e0=function(t,e){e===void 0&&(e=.5),Wt(e).greaterThan(0).lessThan(1);var n=1/Math.log(1-e);return function(){return Math.floor(1+Math.log(t.next())*n)}},t0=[0,0,.6931471805599453,1.791759469228055,3.1780538303479458,4.787491742782046,6.579251212010101,8.525161361065415,10.60460290274525,12.801827480081469],n0=function(e){return t0[e]},r0=.9189385332046727,i0=function(t,e){if(e===void 0&&(e=1),Wt(e).isPositive(),e<10){var n=Math.exp(-e);return function(){for(var f=n,l=0,v=t.next();v>f;)v=v-f,f=e*f/++l;return l}}else{var r=Math.sqrt(e),i=.931+2.53*r,o=-.059+.02483*i,u=1.1239+1.1328/(i-3.4),s=.9277-3.6224/(i-2);return function(){for(;;){var f=void 0,l=t.next();if(l<=.86*s)return f=l/s-.43,Math.floor((2*o/(.5-Math.abs(f))+i)*f+e+.445);l>=s?f=t.next()-.5:(f=l/s-.93,f=(f<0?-.5:.5)-f,l=t.next()*s);var v=.5-Math.abs(f);if(!(v<.013&&l>v)){var b=Math.floor((2*o/v+i)*f+e+.445);if(l=l*u/(o/(v*v)+i),b>=10){var S=(b+.5)*Math.log(e/b)-e-r0+b-(.08333333333333333-(.002777777777777778-1/(1260*b*b))/(b*b))/b;if(Math.log(l*r)<=S)return b}else if(b>=0){var D,Z=(D=n0(b))!=null?D:0;if(Math.log(l)<=b*Math.log(e)-e-Z)return b}}}}}},o0=function(t,e){return e===void 0&&(e=1),Wt(e).isPositive(),function(){return-Math.log(1-t.next())/e}},a0=function(t,e){return e===void 0&&(e=1),Wt(e).isInt().greaterThanOrEqual(0),function(){for(var n=0,r=0;r<e;++r)n+=t.next();return n}},s0=function(t,e){e===void 0&&(e=1),Wt(e).isInt().isPositive();var n=t.irwinHall(e);return function(){return n()/e}},u0=function(t,e){e===void 0&&(e=1),Wt(e).greaterThanOrEqual(0);var n=1/e;return function(){return 1/Math.pow(1-t.next(),n)}},f0=function(t){ou(e,t);function e(){return t.apply(this,arguments)||this}var n=e.prototype;return n.next=function(){return Math.random()},n.seed=function(i,o){},n.clone=function(){return new e},ko(e,[{key:"name",get:function(){return"default"}}]),e}(yi),uu=function(){function t(n){var r=this;this._rng=void 0,this._patch=void 0,this._cache={},this.next=function(){return r._rng.next()},this.float=function(i,o){return r.uniform(i,o)()},this.int=function(i,o){return r.uniformInt(i,o)()},this.integer=function(i,o){return r.uniformInt(i,o)()},this.bool=function(){return r.uniformBoolean()()},this.boolean=function(){return r.uniformBoolean()()},this.uniform=function(i,o){return r._memoize("uniform",Hp,i,o)},this.uniformInt=function(i,o){return r._memoize("uniformInt",Wp,i,o)},this.uniformBoolean=function(){return r._memoize("uniformBoolean",Yp)},this.normal=function(i,o){return Zp(r,i,o)},this.logNormal=function(i,o){return Qp(r,i,o)},this.bernoulli=function(i){return Kp(r,i)},this.binomial=function(i,o){return Jp(r,i,o)},this.geometric=function(i){return e0(r,i)},this.poisson=function(i){return i0(r,i)},this.exponential=function(i){return o0(r,i)},this.irwinHall=function(i){return a0(r,i)},this.bates=function(i){return s0(r,i)},this.pareto=function(i){return u0(r,i)},n&&n instanceof yi?this.use(n):this.use(new f0),this._cache={}}var e=t.prototype;return e.clone=function(){var r=[].slice.call(arguments);return r.length?new t(su.apply(void 0,r)):new t(this.rng.clone())},e.use=function(){this._rng=su.apply(void 0,[].slice.call(arguments))},e.patch=function(){if(this._patch)throw new Error("Math.random already patched");this._patch=Math.random,Math.random=this.uniform()},e.unpatch=function(){this._patch&&(Math.random=this._patch,delete this._patch)},e.choice=function(r){if(!Array.isArray(r))throw new Error("Random.choice expected input to be an array, got "+typeof r);var i=r==null?void 0:r.length;if(i>0){var o=this.uniformInt(0,i-1)();return r[o]}else return},e._memoize=function(r,i){var o=[].slice.call(arguments,2),u=""+o.join(";"),s=this._cache[r];return(s===void 0||s.key!==u)&&(s={key:u,distribution:i.apply(void 0,[this].concat(o))},this._cache[r]=s),s.distribution},ko(t,[{key:"rng",get:function(){return this._rng}}]),t}();new uu;const Lo=.001,zo=64;class l0{constructor(){this.pointsTextureSize=0,this.linksTextureSize=0,this.alpha=1,this.transform=wp(),this.screenSize=[0,0],this.mousePosition=[0,0],this.screenMousePosition=[0,0],this.selectedArea=[[0,0],[0,0]],this.isSimulationRunning=!1,this.simulationProgress=0,this.selectedIndices=null,this.maxPointSize=zo,this.hoveredPoint=void 0,this.focusedPoint=void 0,this.draggingPointIndex=void 0,this.adjustedSpaceSize=Be.spaceSize,this.isSpaceKeyPressed=!1,this.hoveredPointRingColor=[1,1,1,rm],this.focusedPointRingColor=[1,1,1,im],this.greyoutPointColor=[-1,-1,-1,-1],this.darkenGreyout=!1,this.alphaTarget=0,this.scalePointX=Eo(),this.scalePointY=Eo(),this.random=new uu,this._backgroundColor=[0,0,0,0],this.alphaDecay=e=>1-Math.pow(Lo,1/e)}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){this._backgroundColor=e;const n=Ts(e[0],e[1],e[2]);document.documentElement.style.setProperty("--cosmosgl-attribution-color",n>.65?"black":"white"),document.documentElement.style.setProperty("--cosmosgl-error-message-color",n>.65?"black":"white"),this.div&&(this.div.style.backgroundColor=`rgba(${e[0]*255}, ${e[1]*255}, ${e[2]*255}, ${e[3]})`),this.darkenGreyout=n<.65}addRandomSeed(e){this.random=this.random.clone(e)}getRandomFloat(e,n){return this.random.float(e,n)}adjustSpaceSize(e,n){e>=n?(this.adjustedSpaceSize=n/2,console.warn(`The \`spaceSize\` has been reduced to ${this.adjustedSpaceSize} due to WebGL limits`)):this.adjustedSpaceSize=e}updateScreenSize(e,n){const{adjustedSpaceSize:r}=this;this.screenSize=[e,n],this.scalePointX.domain([0,r]).range([(e-r)/2,(e+r)/2]),this.scalePointY.domain([r,0]).range([(n-r)/2,(n+r)/2])}scaleX(e){return this.scalePointX(e)}scaleY(e){return this.scalePointY(e)}setHoveredPointRingColor(e){const n=vn(e);this.hoveredPointRingColor[0]=n[0],this.hoveredPointRingColor[1]=n[1],this.hoveredPointRingColor[2]=n[2]}setFocusedPointRingColor(e){const n=vn(e);this.focusedPointRingColor[0]=n[0],this.focusedPointRingColor[1]=n[1],this.focusedPointRingColor[2]=n[2]}setGreyoutPointColor(e){if(e===void 0){this.greyoutPointColor=[-1,-1,-1,-1];return}const n=vn(e);this.greyoutPointColor[0]=n[0],this.greyoutPointColor[1]=n[1],this.greyoutPointColor[2]=n[2],this.greyoutPointColor[3]=n[3]}setFocusedPoint(e){e!==void 0?this.focusedPoint={index:e}:this.focusedPoint=void 0}addAlpha(e){return(this.alphaTarget-this.alpha)*this.alphaDecay(e)}}const c0={passive:!1},xr={capture:!0,passive:!1};function Io(t){t.stopImmediatePropagation()}function Yn(t){t.preventDefault(),t.stopImmediatePropagation()}function fu(t){var e=t.document.documentElement,n=wt(t).on("dragstart.drag",Yn,xr);"onselectstart"in e?n.on("selectstart.drag",Yn,xr):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function lu(t,e){var n=t.document.documentElement,r=wt(t).on("dragstart.drag",null);e&&(r.on("click.drag",Yn,xr),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const xi=t=>()=>t;function Ro(t,{sourceEvent:e,subject:n,target:r,identifier:i,active:o,x:u,y:s,dx:f,dy:l,dispatch:v}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:u,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:f,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:v}})}Ro.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function h0(t){return!t.ctrlKey&&!t.button}function d0(){return this.parentNode}function m0(t,e){return e??{x:t.x,y:t.y}}function p0(){return navigator.maxTouchPoints||"ontouchstart"in this}function v0(){var t=h0,e=d0,n=m0,r=p0,i={},o=Ur("start","drag","end"),u=0,s,f,l,v,b=0;function S(W){W.on("mousedown.drag",D).filter(r).on("touchstart.drag",Se).on("touchmove.drag",ae,c0).on("touchend.drag touchcancel.drag",Ne).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function D(W,ce){if(!(v||!t.call(this,W,ce))){var Le=je(this,e.call(this,W,ce),W,ce,"mouse");Le&&(wt(W.view).on("mousemove.drag",Z,xr).on("mouseup.drag",we,xr),fu(W.view),Io(W),l=!1,s=W.clientX,f=W.clientY,Le("start",W))}}function Z(W){if(Yn(W),!l){var ce=W.clientX-s,Le=W.clientY-f;l=ce*ce+Le*Le>b}i.mouse("drag",W)}function we(W){wt(W.view).on("mousemove.drag mouseup.drag",null),lu(W.view,l),Yn(W),i.mouse("end",W)}function Se(W,ce){if(t.call(this,W,ce)){var Le=W.changedTouches,Me=e.call(this,W,ce),Xe=Le.length,et,nt;for(et=0;et<Xe;++et)(nt=je(this,Me,W,ce,Le[et].identifier,Le[et]))&&(Io(W),nt("start",W,Le[et]))}}function ae(W){var ce=W.changedTouches,Le=ce.length,Me,Xe;for(Me=0;Me<Le;++Me)(Xe=i[ce[Me].identifier])&&(Yn(W),Xe("drag",W,ce[Me]))}function Ne(W){var ce=W.changedTouches,Le=ce.length,Me,Xe;for(v&&clearTimeout(v),v=setTimeout(function(){v=null},500),Me=0;Me<Le;++Me)(Xe=i[ce[Me].identifier])&&(Io(W),Xe("end",W,ce[Me]))}function je(W,ce,Le,Me,Xe,et){var nt=o.copy(),ke=sn(et||Le,ce),it,tt,G;if((G=n.call(W,new Ro("beforestart",{sourceEvent:Le,target:S,identifier:Xe,active:u,x:ke[0],y:ke[1],dx:0,dy:0,dispatch:nt}),Me))!=null)return it=G.x-ke[0]||0,tt=G.y-ke[1]||0,function Ae(oe,Pe,Ue){var Ve=ke,Ye;switch(oe){case"start":i[Xe]=Ae,Ye=u++;break;case"end":delete i[Xe],--u;case"drag":ke=sn(Ue||Pe,ce),Ye=u;break}nt.call(oe,W,new Ro(oe,{sourceEvent:Pe,subject:G,target:S,identifier:Xe,active:Ye,x:ke[0]+it,y:ke[1]+tt,dx:ke[0]-Ve[0],dy:ke[1]-Ve[1],dispatch:nt}),Me)}}return S.filter=function(W){return arguments.length?(t=typeof W=="function"?W:xi(!!W),S):t},S.container=function(W){return arguments.length?(e=typeof W=="function"?W:xi(W),S):e},S.subject=function(W){return arguments.length?(n=typeof W=="function"?W:xi(W),S):n},S.touchable=function(W){return arguments.length?(r=typeof W=="function"?W:xi(!!W),S):r},S.on=function(){var W=o.on.apply(o,arguments);return W===o?S:W},S.clickDistance=function(W){return arguments.length?(b=(W=+W)*W,S):Math.sqrt(b)},S}const bi=t=>()=>t;function g0(t,{sourceEvent:e,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function cn(t,e,n){this.k=t,this.x=e,this.y=n}cn.prototype={constructor:cn,scale:function(t){return t===1?this:new cn(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new cn(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var br=new cn(1,0,0);cn.prototype;function Do(t){t.stopImmediatePropagation()}function _r(t){t.preventDefault(),t.stopImmediatePropagation()}function y0(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function x0(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function cu(){return this.__zoom||br}function b0(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function _0(){return navigator.maxTouchPoints||"ontouchstart"in this}function S0(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],o=t.invertY(e[0][1])-n[0][1],u=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),u>o?(o+u)/2:Math.min(0,o)||Math.max(0,u))}function w0(){var t=y0,e=x0,n=S0,r=b0,i=_0,o=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],s=250,f=Oh,l=Ur("start","zoom","end"),v,b,S,D=500,Z=150,we=0,Se=10;function ae(G){G.property("__zoom",cu).on("wheel.zoom",Xe,{passive:!1}).on("mousedown.zoom",et).on("dblclick.zoom",nt).filter(i).on("touchstart.zoom",ke).on("touchmove.zoom",it).on("touchend.zoom touchcancel.zoom",tt).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}ae.transform=function(G,Ae,oe,Pe){var Ue=G.selection?G.selection():G;Ue.property("__zoom",cu),G!==Ue?ce(G,Ae,oe,Pe):Ue.interrupt().each(function(){Le(this,arguments).event(Pe).start().zoom(null,typeof Ae=="function"?Ae.apply(this,arguments):Ae).end()})},ae.scaleBy=function(G,Ae,oe,Pe){ae.scaleTo(G,function(){var Ue=this.__zoom.k,Ve=typeof Ae=="function"?Ae.apply(this,arguments):Ae;return Ue*Ve},oe,Pe)},ae.scaleTo=function(G,Ae,oe,Pe){ae.transform(G,function(){var Ue=e.apply(this,arguments),Ve=this.__zoom,Ye=oe==null?W(Ue):typeof oe=="function"?oe.apply(this,arguments):oe,rt=Ve.invert(Ye),ft=typeof Ae=="function"?Ae.apply(this,arguments):Ae;return n(je(Ne(Ve,ft),Ye,rt),Ue,u)},oe,Pe)},ae.translateBy=function(G,Ae,oe,Pe){ae.transform(G,function(){return n(this.__zoom.translate(typeof Ae=="function"?Ae.apply(this,arguments):Ae,typeof oe=="function"?oe.apply(this,arguments):oe),e.apply(this,arguments),u)},null,Pe)},ae.translateTo=function(G,Ae,oe,Pe,Ue){ae.transform(G,function(){var Ve=e.apply(this,arguments),Ye=this.__zoom,rt=Pe==null?W(Ve):typeof Pe=="function"?Pe.apply(this,arguments):Pe;return n(br.translate(rt[0],rt[1]).scale(Ye.k).translate(typeof Ae=="function"?-Ae.apply(this,arguments):-Ae,typeof oe=="function"?-oe.apply(this,arguments):-oe),Ve,u)},Pe,Ue)};function Ne(G,Ae){return Ae=Math.max(o[0],Math.min(o[1],Ae)),Ae===G.k?G:new cn(Ae,G.x,G.y)}function je(G,Ae,oe){var Pe=Ae[0]-oe[0]*G.k,Ue=Ae[1]-oe[1]*G.k;return Pe===G.x&&Ue===G.y?G:new cn(G.k,Pe,Ue)}function W(G){return[(+G[0][0]+ +G[1][0])/2,(+G[0][1]+ +G[1][1])/2]}function ce(G,Ae,oe,Pe){G.on("start.zoom",function(){Le(this,arguments).event(Pe).start()}).on("interrupt.zoom end.zoom",function(){Le(this,arguments).event(Pe).end()}).tween("zoom",function(){var Ue=this,Ve=arguments,Ye=Le(Ue,Ve).event(Pe),rt=e.apply(Ue,Ve),ft=oe==null?W(rt):typeof oe=="function"?oe.apply(Ue,Ve):oe,Bt=Math.max(rt[1][0]-rt[0][0],rt[1][1]-rt[0][1]),_t=Ue.__zoom,It=typeof Ae=="function"?Ae.apply(Ue,Ve):Ae,Yt=f(_t.invert(ft).concat(Bt/_t.k),It.invert(ft).concat(Bt/It.k));return function(Rt){if(Rt===1)Rt=It;else{var Zt=Yt(Rt),Sr=Bt/Zt[2];Rt=new cn(Sr,ft[0]-Zt[0]*Sr,ft[1]-Zt[1]*Sr)}Ye.zoom(null,Rt)}})}function Le(G,Ae,oe){return!oe&&G.__zooming||new Me(G,Ae)}function Me(G,Ae){this.that=G,this.args=Ae,this.active=0,this.sourceEvent=null,this.extent=e.apply(G,Ae),this.taps=0}Me.prototype={event:function(G){return G&&(this.sourceEvent=G),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(G,Ae){return this.mouse&&G!=="mouse"&&(this.mouse[1]=Ae.invert(this.mouse[0])),this.touch0&&G!=="touch"&&(this.touch0[1]=Ae.invert(this.touch0[0])),this.touch1&&G!=="touch"&&(this.touch1[1]=Ae.invert(this.touch1[0])),this.that.__zoom=Ae,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(G){var Ae=wt(this.that).datum();l.call(G,this.that,new g0(G,{sourceEvent:this.sourceEvent,target:ae,transform:this.that.__zoom,dispatch:l}),Ae)}};function Xe(G,...Ae){if(!t.apply(this,arguments))return;var oe=Le(this,Ae).event(G),Pe=this.__zoom,Ue=Math.max(o[0],Math.min(o[1],Pe.k*Math.pow(2,r.apply(this,arguments)))),Ve=sn(G);if(oe.wheel)(oe.mouse[0][0]!==Ve[0]||oe.mouse[0][1]!==Ve[1])&&(oe.mouse[1]=Pe.invert(oe.mouse[0]=Ve)),clearTimeout(oe.wheel);else{if(Pe.k===Ue)return;oe.mouse=[Ve,Pe.invert(Ve)],Kr(this),oe.start()}_r(G),oe.wheel=setTimeout(Ye,Z),oe.zoom("mouse",n(je(Ne(Pe,Ue),oe.mouse[0],oe.mouse[1]),oe.extent,u));function Ye(){oe.wheel=null,oe.end()}}function et(G,...Ae){if(S||!t.apply(this,arguments))return;var oe=G.currentTarget,Pe=Le(this,Ae,!0).event(G),Ue=wt(G.view).on("mousemove.zoom",ft,!0).on("mouseup.zoom",Bt,!0),Ve=sn(G,oe),Ye=G.clientX,rt=G.clientY;fu(G.view),Do(G),Pe.mouse=[Ve,this.__zoom.invert(Ve)],Kr(this),Pe.start();function ft(_t){if(_r(_t),!Pe.moved){var It=_t.clientX-Ye,Yt=_t.clientY-rt;Pe.moved=It*It+Yt*Yt>we}Pe.event(_t).zoom("mouse",n(je(Pe.that.__zoom,Pe.mouse[0]=sn(_t,oe),Pe.mouse[1]),Pe.extent,u))}function Bt(_t){Ue.on("mousemove.zoom mouseup.zoom",null),lu(_t.view,Pe.moved),_r(_t),Pe.event(_t).end()}}function nt(G,...Ae){if(t.apply(this,arguments)){var oe=this.__zoom,Pe=sn(G.changedTouches?G.changedTouches[0]:G,this),Ue=oe.invert(Pe),Ve=oe.k*(G.shiftKey?.5:2),Ye=n(je(Ne(oe,Ve),Pe,Ue),e.apply(this,Ae),u);_r(G),s>0?wt(this).transition().duration(s).call(ce,Ye,Pe,G):wt(this).call(ae.transform,Ye,Pe,G)}}function ke(G,...Ae){if(t.apply(this,arguments)){var oe=G.touches,Pe=oe.length,Ue=Le(this,Ae,G.changedTouches.length===Pe).event(G),Ve,Ye,rt,ft;for(Do(G),Ye=0;Ye<Pe;++Ye)rt=oe[Ye],ft=sn(rt,this),ft=[ft,this.__zoom.invert(ft),rt.identifier],Ue.touch0?!Ue.touch1&&Ue.touch0[2]!==ft[2]&&(Ue.touch1=ft,Ue.taps=0):(Ue.touch0=ft,Ve=!0,Ue.taps=1+!!v);v&&(v=clearTimeout(v)),Ve&&(Ue.taps<2&&(b=ft[0],v=setTimeout(function(){v=null},D)),Kr(this),Ue.start())}}function it(G,...Ae){if(this.__zooming){var oe=Le(this,Ae).event(G),Pe=G.changedTouches,Ue=Pe.length,Ve,Ye,rt,ft;for(_r(G),Ve=0;Ve<Ue;++Ve)Ye=Pe[Ve],rt=sn(Ye,this),oe.touch0&&oe.touch0[2]===Ye.identifier?oe.touch0[0]=rt:oe.touch1&&oe.touch1[2]===Ye.identifier&&(oe.touch1[0]=rt);if(Ye=oe.that.__zoom,oe.touch1){var Bt=oe.touch0[0],_t=oe.touch0[1],It=oe.touch1[0],Yt=oe.touch1[1],Rt=(Rt=It[0]-Bt[0])*Rt+(Rt=It[1]-Bt[1])*Rt,Zt=(Zt=Yt[0]-_t[0])*Zt+(Zt=Yt[1]-_t[1])*Zt;Ye=Ne(Ye,Math.sqrt(Rt/Zt)),rt=[(Bt[0]+It[0])/2,(Bt[1]+It[1])/2],ft=[(_t[0]+Yt[0])/2,(_t[1]+Yt[1])/2]}else if(oe.touch0)rt=oe.touch0[0],ft=oe.touch0[1];else return;oe.zoom("touch",n(je(Ye,rt,ft),oe.extent,u))}}function tt(G,...Ae){if(this.__zooming){var oe=Le(this,Ae).event(G),Pe=G.changedTouches,Ue=Pe.length,Ve,Ye;for(Do(G),S&&clearTimeout(S),S=setTimeout(function(){S=null},D),Ve=0;Ve<Ue;++Ve)Ye=Pe[Ve],oe.touch0&&oe.touch0[2]===Ye.identifier?delete oe.touch0:oe.touch1&&oe.touch1[2]===Ye.identifier&&delete oe.touch1;if(oe.touch1&&!oe.touch0&&(oe.touch0=oe.touch1,delete oe.touch1),oe.touch0)oe.touch0[1]=this.__zoom.invert(oe.touch0[0]);else if(oe.end(),oe.taps===2&&(Ye=sn(Ye,this),Math.hypot(b[0]-Ye[0],b[1]-Ye[1])<Se)){var rt=wt(this).on("dblclick.zoom");rt&&rt.apply(this,arguments)}}}return ae.wheelDelta=function(G){return arguments.length?(r=typeof G=="function"?G:bi(+G),ae):r},ae.filter=function(G){return arguments.length?(t=typeof G=="function"?G:bi(!!G),ae):t},ae.touchable=function(G){return arguments.length?(i=typeof G=="function"?G:bi(!!G),ae):i},ae.extent=function(G){return arguments.length?(e=typeof G=="function"?G:bi([[+G[0][0],+G[0][1]],[+G[1][0],+G[1][1]]]),ae):e},ae.scaleExtent=function(G){return arguments.length?(o[0]=+G[0],o[1]=+G[1],ae):[o[0],o[1]]},ae.translateExtent=function(G){return arguments.length?(u[0][0]=+G[0][0],u[1][0]=+G[1][0],u[0][1]=+G[0][1],u[1][1]=+G[1][1],ae):[[u[0][0],u[0][1]],[u[1][0],u[1][1]]]},ae.constrain=function(G){return arguments.length?(n=G,ae):n},ae.duration=function(G){return arguments.length?(s=+G,ae):s},ae.interpolate=function(G){return arguments.length?(f=G,ae):f},ae.on=function(){var G=l.on.apply(l,arguments);return G===l?ae:G},ae.clickDistance=function(G){return arguments.length?(we=(G=+G)*G,ae):Math.sqrt(we)},ae.tapDistance=function(G){return arguments.length?(Se=+G,ae):Se},ae}class T0{constructor(e,n){this.eventTransform=br,this.behavior=w0().scaleExtent([.001,1/0]).on("start",r=>{var o,u;this.isRunning=!0;const i=!!r.sourceEvent;(u=(o=this.config)==null?void 0:o.onZoomStart)==null||u.call(o,r,i)}).on("zoom",r=>{var S,D;this.eventTransform=r.transform;const{eventTransform:{x:i,y:o,k:u},store:{transform:s,screenSize:f}}=this,l=f[0],v=f[1];if(!l||!v)return;Tp(s,l,v),Zs(s,s,[i,o]),Po(s,s,[u,u]),Zs(s,s,[l/2,v/2]),Po(s,s,[l/2,v/2]),Po(s,s,[1,-1]);const b=!!r.sourceEvent;(D=(S=this.config)==null?void 0:S.onZoom)==null||D.call(S,r,b)}).on("end",r=>{var o,u;this.isRunning=!1;const i=!!r.sourceEvent;(u=(o=this.config)==null?void 0:o.onZoomEnd)==null||u.call(o,r,i)}),this.isRunning=!1,this.store=e,this.config=n}getTransform(e,n,r=.1){if(e.length===0)return this.eventTransform;const{store:{screenSize:i}}=this,o=i[0],u=i[1],s=zs(e.map(ae=>ae[0])),f=zs(e.map(ae=>ae[1]));s[0]=this.store.scaleX(s[0]),s[1]=this.store.scaleX(s[1]),f[0]=this.store.scaleY(f[0]),f[1]=this.store.scaleY(f[1]),s[0]===s[1]&&(s[0]-=.5,s[1]+=.5),f[0]===f[1]&&(f[0]+=.5,f[1]-=.5);const l=o*(1-r*2)/(s[1]-s[0]),v=u*(1-r*2)/(f[0]-f[1]),b=As(n??Math.min(l,v),...this.behavior.scaleExtent()),S=(s[1]+s[0])/2,D=(f[1]+f[0])/2,Z=o/2-S*b,we=u/2-D*b;return br.translate(Z,we).scale(b)}getDistanceToPoint(e){const{x:n,y:r,k:i}=this.eventTransform,o=this.getTransform([e],i),u=n-o.x,s=r-o.y;return Math.sqrt(u*u+s*s)}getMiddlePointTransform(e){const{store:{screenSize:n},eventTransform:{x:r,y:i,k:o}}=this,u=n[0],s=n[1],f=(u/2-r)/o,l=(s/2-i)/o,v=this.store.scaleX(e[0]),b=this.store.scaleY(e[1]),S=(f+v)/2,D=(l+b)/2,Z=1,we=u/2-S*Z,Se=s/2-D*Z;return br.translate(we,Se).scale(Z)}convertScreenToSpacePosition(e){const{eventTransform:{x:n,y:r,k:i},store:{screenSize:o}}=this,u=o[0],s=o[1],f=(e[0]-n)/i,l=(e[1]-r)/i,v=[f,s-l];return v[0]-=(u-this.store.adjustedSpaceSize)/2,v[1]-=(s-this.store.adjustedSpaceSize)/2,v}convertSpaceToScreenPosition(e){const n=this.eventTransform.applyX(this.store.scaleX(e[0])),r=this.eventTransform.applyY(this.store.scaleY(e[1]));return[n,r]}convertSpaceToScreenRadius(e){const{config:{scalePointsOnZoom:n},store:{maxPointSize:r},eventTransform:{k:i}}=this;let o=e*2;return n?o*=i:o*=Math.min(5,Math.max(1,i*.01)),Math.min(o,r)/2}}class A0{constructor(e,n){this.isActive=!1,this.behavior=v0().subject(r=>this.store.hoveredPoint&&!this.store.isSpaceKeyPressed?{x:r.x,y:r.y}:void 0).on("start",r=>{var i,o;this.store.hoveredPoint&&(this.store.draggingPointIndex=this.store.hoveredPoint.index,this.isActive=!0,(o=(i=this.config)==null?void 0:i.onDragStart)==null||o.call(i,r))}).on("drag",r=>{var i,o;(o=(i=this.config)==null?void 0:i.onDrag)==null||o.call(i,r)}).on("end",r=>{var i,o;this.isActive=!1,this.store.draggingPointIndex=void 0,(o=(i=this.config)==null?void 0:i.onDragEnd)==null||o.call(i,r)}),this.store=e,this.config=n}}function E0(t){const e=document.createElement("div");return e.style.cssText=`
|
|
1323
|
+
}`;class _v extends In{constructor(){super(...arguments),this.polygonPathLength=0}updatePositions(){const{reglInstance:e,store:n,data:r,config:{rescalePositions:i,enableSimulation:o}}=this,{pointsTextureSize:s}=n;if(!s||!r.pointPositions||r.pointsNumber===void 0)return;const f=new Float32Array(s*s*4);let u=i;i===void 0&&!o&&(u=!0),this.dontRescale&&(u=!1),u?this.rescaleInitialNodePositions():this.dontRescale||(this.scaleX=void 0,this.scaleY=void 0),this.dontRescale=void 0;for(let l=0;l<r.pointsNumber;++l)f[l*4+0]=r.pointPositions[l*2+0],f[l*4+1]=r.pointPositions[l*2+1],f[l*4+2]=l;this.currentPositionFbo||(this.currentPositionFbo=e.framebuffer()),this.currentPositionFbo({color:e.texture({data:f,shape:[s,s,4],type:"float"}),depth:!1,stencil:!1}),this.previousPositionFbo||(this.previousPositionFbo=e.framebuffer()),this.previousPositionFbo({color:e.texture({data:f,shape:[s,s,4],type:"float"}),depth:!1,stencil:!1}),this.config.enableSimulation&&(this.velocityFbo||(this.velocityFbo=e.framebuffer()),this.velocityFbo({color:e.texture({data:new Float32Array(s*s*4).fill(0),shape:[s,s,4],type:"float"}),depth:!1,stencil:!1})),this.selectedTexture||(this.selectedTexture=e.texture()),this.selectedTexture({data:f,shape:[s,s,4],type:"float"}),this.selectedFbo||(this.selectedFbo=e.framebuffer()),this.selectedFbo({color:this.selectedTexture,depth:!1,stencil:!1}),this.hoveredFbo||(this.hoveredFbo=e.framebuffer()),this.hoveredFbo({shape:[2,2],colorType:"float",depth:!1,stencil:!1}),this.drawPointIndices||(this.drawPointIndices=e.buffer(0)),this.drawPointIndices(or(n.pointsTextureSize)),this.hoveredPointIndices||(this.hoveredPointIndices=e.buffer(0)),this.hoveredPointIndices(or(n.pointsTextureSize)),this.sampledPointIndices||(this.sampledPointIndices=e.buffer(0)),this.sampledPointIndices(or(n.pointsTextureSize)),this.updateGreyoutStatus(),this.updateSampledPointsGrid(),this.trackPointsByIndices()}initPrograms(){const{reglInstance:e,config:n,store:r,data:i}=this;n.enableSimulation&&(this.updatePositionCommand||(this.updatePositionCommand=e({frag:yv,vert:kt,framebuffer:()=>this.currentPositionFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.previousPositionFbo,velocity:()=>this.velocityFbo,friction:()=>n.simulationFriction,spaceSize:()=>r.adjustedSpaceSize}}))),this.dragPointCommand||(this.dragPointCommand=e({frag:bv,vert:kt,framebuffer:()=>this.currentPositionFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.previousPositionFbo,mousePos:()=>r.mousePosition,index:()=>{var o;return((o=r.hoveredPoint)==null?void 0:o.index)??-1}}})),this.drawCommand||(this.drawCommand=e({frag:fv,vert:uv,primitive:"points",count:()=>i.pointsNumber??0,attributes:{pointIndices:{buffer:this.drawPointIndices,size:2},size:{buffer:()=>this.sizeBuffer,size:1},color:{buffer:()=>this.colorBuffer,size:4}},uniforms:{positionsTexture:()=>this.currentPositionFbo,pointGreyoutStatus:()=>this.greyoutStatusFbo,ratio:()=>n.pixelRatio,sizeScale:()=>n.pointSizeScale,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,pointOpacity:()=>n.pointOpacity,greyoutOpacity:()=>n.pointGreyoutOpacity??-1,greyoutColor:()=>r.greyoutPointColor,backgroundColor:()=>r.backgroundColor,darkenGreyout:()=>r.darkenGreyout,scalePointsOnZoom:()=>n.scalePointsOnZoom,maxPointSize:()=>r.maxPointSize},blend:{enable:!0,func:{dstRGB:"one minus src alpha",srcRGB:"src alpha",dstAlpha:"one minus src alpha",srcAlpha:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1}})),this.findPointsOnAreaSelectionCommand||(this.findPointsOnAreaSelectionCommand=e({frag:lv,vert:kt,framebuffer:()=>this.selectedFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.currentPositionFbo,pointSize:()=>this.sizeFbo,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,sizeScale:()=>n.pointSizeScale,transformationMatrix:()=>r.transform,ratio:()=>n.pixelRatio,"selection[0]":()=>r.selectedArea[0],"selection[1]":()=>r.selectedArea[1],scalePointsOnZoom:()=>n.scalePointsOnZoom,maxPointSize:()=>r.maxPointSize}})),this.findPointsOnPolygonSelectionCommand||(this.findPointsOnPolygonSelectionCommand=e({frag:cv,vert:kt,framebuffer:()=>this.selectedFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.currentPositionFbo,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,transformationMatrix:()=>r.transform,polygonPathTexture:()=>this.polygonPathTexture,polygonPathLength:()=>this.polygonPathLength}})),this.clearHoveredFboCommand||(this.clearHoveredFboCommand=e({frag:ar,vert:kt,framebuffer:this.hoveredFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.findHoveredPointCommand||(this.findHoveredPointCommand=e({frag:mv,vert:pv,primitive:"points",count:()=>i.pointsNumber??0,framebuffer:()=>this.hoveredFbo,attributes:{pointIndices:{buffer:this.hoveredPointIndices,size:2},size:{buffer:()=>this.sizeBuffer,size:1}},uniforms:{positionsTexture:()=>this.currentPositionFbo,ratio:()=>n.pixelRatio,sizeScale:()=>n.pointSizeScale,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,scalePointsOnZoom:()=>n.scalePointsOnZoom,mousePosition:()=>r.screenMousePosition,maxPointSize:()=>r.maxPointSize},depth:{enable:!1,mask:!1}})),this.clearSampledPointsFboCommand||(this.clearSampledPointsFboCommand=e({frag:ar,vert:kt,framebuffer:()=>this.sampledPointsFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.fillSampledPointsFboCommand||(this.fillSampledPointsFboCommand=e({frag:vv,vert:gv,primitive:"points",count:()=>i.pointsNumber??0,framebuffer:()=>this.sampledPointsFbo,attributes:{pointIndices:{buffer:this.sampledPointIndices,size:2}},uniforms:{positionsTexture:()=>this.currentPositionFbo,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize},depth:{enable:!1,mask:!1}})),this.drawHighlightedCommand||(this.drawHighlightedCommand=e({frag:hv,vert:dv,attributes:{vertexCoord:wt(e)},primitive:"triangle strip",count:4,uniforms:{color:e.prop("color"),width:e.prop("width"),pointIndex:e.prop("pointIndex"),size:e.prop("size"),positionsTexture:()=>this.currentPositionFbo,sizeScale:()=>n.pointSizeScale,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,scalePointsOnZoom:()=>n.scalePointsOnZoom,maxPointSize:()=>r.maxPointSize,pointGreyoutStatusTexture:()=>this.greyoutStatusFbo,universalPointOpacity:()=>n.pointOpacity,greyoutOpacity:()=>n.pointGreyoutOpacity??-1,darkenGreyout:()=>r.darkenGreyout,backgroundColor:()=>r.backgroundColor,greyoutColor:()=>r.greyoutPointColor},blend:{enable:!0,func:{dstRGB:"one minus src alpha",srcRGB:"src alpha",dstAlpha:"one minus src alpha",srcAlpha:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1}})),this.trackPointsCommand||(this.trackPointsCommand=e({frag:xv,vert:kt,framebuffer:()=>this.trackedPositionsFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.currentPositionFbo,trackedIndices:()=>this.trackedIndicesFbo,pointsTextureSize:()=>r.pointsTextureSize}}))}updateColor(){const{reglInstance:e,store:{pointsTextureSize:n},data:r}=this;n&&(this.colorBuffer||(this.colorBuffer=e.buffer(0)),this.colorBuffer(r.pointColors))}updateGreyoutStatus(){const{reglInstance:e,store:{selectedIndices:n,pointsTextureSize:r}}=this;if(!r)return;const i=new Float32Array(r*r*4).fill(n?1:0);if(n)for(const o of n)i[o*4]=0;this.greyoutStatusTexture||(this.greyoutStatusTexture=e.texture()),this.greyoutStatusTexture({data:i,width:r,height:r,type:"float"}),this.greyoutStatusFbo||(this.greyoutStatusFbo=e.framebuffer()),this.greyoutStatusFbo({color:this.greyoutStatusTexture,depth:!1,stencil:!1})}updateSize(){const{reglInstance:e,store:{pointsTextureSize:n},data:r}=this;if(!n||r.pointsNumber===void 0||r.pointSizes===void 0)return;this.sizeBuffer||(this.sizeBuffer=e.buffer(0)),this.sizeBuffer(r.pointSizes);const i=new Float32Array(n*n*4);for(let o=0;o<r.pointsNumber;o++)i[o*4]=r.pointSizes[o];this.sizeTexture||(this.sizeTexture=e.texture()),this.sizeTexture({data:i,width:n,height:n,type:"float"}),this.sizeFbo||(this.sizeFbo=e.framebuffer()),this.sizeFbo({color:this.sizeTexture,depth:!1,stencil:!1})}updateSampledPointsGrid(){const{store:{screenSize:e},config:{pointSamplingDistance:n},reglInstance:r}=this;let i=n??Math.min(...e)/2;i===0&&(i=We.pointSamplingDistance);const o=Math.ceil(e[0]/i),s=Math.ceil(e[1]/i);this.sampledPointsFbo||(this.sampledPointsFbo=r.framebuffer()),this.sampledPointsFbo({shape:[o,s],depth:!1,stencil:!1,colorType:"float"})}trackPoints(){var e,n;(e=this.trackedIndices)!=null&&e.length&&((n=this.trackPointsCommand)==null||n.call(this))}draw(){var o,s,f,u,l;const{config:{renderHoveredPointRing:e,pointSize:n},store:r,data:i}=this;this.colorBuffer||this.updateColor(),this.sizeBuffer||this.updateSize(),(o=this.drawCommand)==null||o.call(this),e&&r.hoveredPoint&&((f=this.drawHighlightedCommand)==null||f.call(this,{width:.85,color:r.hoveredPointRingColor,pointIndex:r.hoveredPoint.index,size:((s=i.pointSizes)==null?void 0:s[r.hoveredPoint.index])??n})),r.focusedPoint&&((l=this.drawHighlightedCommand)==null||l.call(this,{width:.75,color:r.focusedPointRingColor,pointIndex:r.focusedPoint.index,size:((u=i.pointSizes)==null?void 0:u[r.focusedPoint.index])??n}))}updatePosition(){var e;(e=this.updatePositionCommand)==null||e.call(this),this.swapFbo()}drag(){var e;(e=this.dragPointCommand)==null||e.call(this),this.swapFbo()}findPointsOnAreaSelection(){var e;(e=this.findPointsOnAreaSelectionCommand)==null||e.call(this)}findPointsOnPolygonSelection(){var e;(e=this.findPointsOnPolygonSelectionCommand)==null||e.call(this)}updatePolygonPath(e){const{reglInstance:n}=this;if(this.polygonPathLength=e.length,e.length===0){this.polygonPathTexture=void 0,this.polygonPathFbo=void 0;return}const r=Math.ceil(Math.sqrt(e.length)),i=new Float32Array(r*r*4);for(const[o,s]of e.entries()){const[f,u]=s;i[o*4]=f,i[o*4+1]=u,i[o*4+2]=0,i[o*4+3]=0}this.polygonPathTexture||(this.polygonPathTexture=n.texture()),this.polygonPathTexture({data:i,width:r,height:r,type:"float"}),this.polygonPathFbo||(this.polygonPathFbo=n.framebuffer()),this.polygonPathFbo({color:this.polygonPathTexture,depth:!1,stencil:!1})}findHoveredPoint(){var e,n;(e=this.clearHoveredFboCommand)==null||e.call(this),(n=this.findHoveredPointCommand)==null||n.call(this)}trackPointsByIndices(e){const{store:{pointsTextureSize:n},reglInstance:r}=this;if(this.trackedIndices=e,!(e!=null&&e.length))return;const i=Math.ceil(Math.sqrt(e.length)),o=new Float32Array(i*i*4).fill(-1);for(const[s,f]of e.entries())f!==void 0&&(o[s*4]=f%n,o[s*4+1]=Math.floor(f/n),o[s*4+2]=0,o[s*4+3]=0);this.trackedIndicesTexture||(this.trackedIndicesTexture=r.texture()),this.trackedIndicesTexture({data:o,width:i,height:i,type:"float"}),this.trackedIndicesFbo||(this.trackedIndicesFbo=r.framebuffer()),this.trackedIndicesFbo({color:this.trackedIndicesTexture,depth:!1,stencil:!1}),this.trackedPositionsFbo||(this.trackedPositionsFbo=r.framebuffer()),this.trackedPositionsFbo({shape:[i,i],depth:!1,stencil:!1,colorType:"float"}),this.trackPoints()}getTrackedPositionsMap(){const e=new Map;if(!this.trackedIndices)return e;const n=tn(this.reglInstance,this.trackedPositionsFbo);for(let r=0;r<n.length/4;r+=1){const i=n[r*4],o=n[r*4+1],s=this.trackedIndices[r];i!==void 0&&o!==void 0&&s!==void 0&&e.set(s,[i,o])}return e}getSampledPointPositionsMap(){var r,i;const e=new Map;if(!this.sampledPointsFbo)return e;(r=this.clearSampledPointsFboCommand)==null||r.call(this),(i=this.fillSampledPointsFboCommand)==null||i.call(this);const n=tn(this.reglInstance,this.sampledPointsFbo);for(let o=0;o<n.length/4;o++){const s=n[o*4],f=!!n[o*4+1],u=n[o*4+2],l=n[o*4+3];f&&s!==void 0&&u!==void 0&&l!==void 0&&e.set(s,[u,l])}return e}getSampledPoints(){var i,o;const e=[],n=[];if(!this.sampledPointsFbo)return{indices:e,positions:n};(i=this.clearSampledPointsFboCommand)==null||i.call(this),(o=this.fillSampledPointsFboCommand)==null||o.call(this);const r=tn(this.reglInstance,this.sampledPointsFbo);for(let s=0;s<r.length/4;s++){const f=r[s*4],u=!!r[s*4+1],l=r[s*4+2],v=r[s*4+3];u&&f!==void 0&&l!==void 0&&v!==void 0&&(e.push(f),n.push(l,v))}return{indices:e,positions:n}}getTrackedPositionsArray(){const e=[];if(!this.trackedIndices)return e;e.length=this.trackedIndices.length*2;const n=tn(this.reglInstance,this.trackedPositionsFbo);for(let r=0;r<n.length/4;r+=1){const i=n[r*4],o=n[r*4+1],s=this.trackedIndices[r];i!==void 0&&o!==void 0&&s!==void 0&&(e[r*2]=i,e[r*2+1]=o)}return e}swapFbo(){const e=this.previousPositionFbo;this.previousPositionFbo=this.currentPositionFbo,this.currentPositionFbo=e}rescaleInitialNodePositions(){const{config:{spaceSize:e}}=this;if(!this.data.pointPositions||!e)return;const n=this.data.pointPositions,r=n.length/2;let i=1/0,o=-1/0,s=1/0,f=-1/0;for(let Te=0;Te<n.length;Te+=2){const se=n[Te],Ue=n[Te+1];i=Math.min(i,se),o=Math.max(o,se),s=Math.min(s,Ue),f=Math.max(f,Ue)}const u=o-i,l=f-s,v=Math.max(u,l);if(v>e){this.scaleX=void 0,this.scaleY=void 0;return}const b=e*e*.001,D=(r>b?e*Math.max(1.2,Math.sqrt(r)/e):e*.1)/v,Y=(v-u)/2*D,Ee=(v-l)/2*D;this.scaleX=Te=>(Te-i)*D+Y,this.scaleY=Te=>(Te-s)*D+Ee;for(let Te=0;Te<r;Te++)this.data.pointPositions[Te*2]=this.scaleX(n[Te*2]),this.data.pointPositions[Te*2+1]=this.scaleY(n[Te*2+1])}}var Gu=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});function Sv(){var t=new Gu(9);return Gu!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function Bu(t,e,n){var r=e[0],i=e[1],o=e[2],s=e[3],f=e[4],u=e[5],l=e[6],v=e[7],b=e[8],S=n[0],D=n[1];return t[0]=r,t[1]=i,t[2]=o,t[3]=s,t[4]=f,t[5]=u,t[6]=S*r+D*s+l,t[7]=S*i+D*f+v,t[8]=S*o+D*u+b,t}function Qa(t,e,n){var r=n[0],i=n[1];return t[0]=r*e[0],t[1]=r*e[1],t[2]=r*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function Tv(t,e,n){return t[0]=2/e,t[1]=0,t[2]=0,t[3]=0,t[4]=-2/n,t[5]=0,t[6]=-1,t[7]=1,t[8]=1,t}var mo={exports:{}},wv=mo.exports,Uu;function Av(){return Uu||(Uu=1,function(t){(function(e,n,r){function i(u){var l=this,v=f();l.next=function(){var b=2091639*l.s0+l.c*23283064365386963e-26;return l.s0=l.s1,l.s1=l.s2,l.s2=b-(l.c=b|0)},l.c=1,l.s0=v(" "),l.s1=v(" "),l.s2=v(" "),l.s0-=v(u),l.s0<0&&(l.s0+=1),l.s1-=v(u),l.s1<0&&(l.s1+=1),l.s2-=v(u),l.s2<0&&(l.s2+=1),v=null}function o(u,l){return l.c=u.c,l.s0=u.s0,l.s1=u.s1,l.s2=u.s2,l}function s(u,l){var v=new i(u),b=l&&l.state,S=v.next;return S.int32=function(){return v.next()*4294967296|0},S.double=function(){return S()+(S()*2097152|0)*11102230246251565e-32},S.quick=S,b&&(typeof b=="object"&&o(b,v),S.state=function(){return o(v,{})}),S}function f(){var u=4022871197,l=function(v){v=String(v);for(var b=0;b<v.length;b++){u+=v.charCodeAt(b);var S=.02519603282416938*u;u=S>>>0,S-=u,S*=u,u=S>>>0,S-=u,u+=S*4294967296}return(u>>>0)*23283064365386963e-26};return l}n&&n.exports?n.exports=s:this.alea=s})(wv,t)}(mo)),mo.exports}var po={exports:{}},Ev=po.exports,Vu;function Pv(){return Vu||(Vu=1,function(t){(function(e,n,r){function i(f){var u=this,l="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var b=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^b^b>>>8},f===(f|0)?u.x=f:l+=f;for(var v=0;v<l.length+64;v++)u.x^=l.charCodeAt(v)|0,u.next()}function o(f,u){return u.x=f.x,u.y=f.y,u.z=f.z,u.w=f.w,u}function s(f,u){var l=new i(f),v=u&&u.state,b=function(){return(l.next()>>>0)/4294967296};return b.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Y=(S+D)/(1<<21);while(Y===0);return Y},b.int32=l.next,b.quick=b,v&&(typeof v=="object"&&o(v,l),b.state=function(){return o(l,{})}),b}n&&n.exports?n.exports=s:this.xor128=s})(Ev,t)}(po)),po.exports}var vo={exports:{}},Cv=vo.exports,$u;function kv(){return $u||($u=1,function(t){(function(e,n,r){function i(f){var u=this,l="";u.next=function(){var b=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(b^b<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,f===(f|0)?u.x=f:l+=f;for(var v=0;v<l.length+64;v++)u.x^=l.charCodeAt(v)|0,v==l.length&&(u.d=u.x<<10^u.x>>>4),u.next()}function o(f,u){return u.x=f.x,u.y=f.y,u.z=f.z,u.w=f.w,u.v=f.v,u.d=f.d,u}function s(f,u){var l=new i(f),v=u&&u.state,b=function(){return(l.next()>>>0)/4294967296};return b.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Y=(S+D)/(1<<21);while(Y===0);return Y},b.int32=l.next,b.quick=b,v&&(typeof v=="object"&&o(v,l),b.state=function(){return o(l,{})}),b}n&&n.exports?n.exports=s:this.xorwow=s})(Cv,t)}(vo)),vo.exports}var go={exports:{}},Lv=go.exports,Hu;function Fv(){return Hu||(Hu=1,function(t){(function(e,n,r){function i(f){var u=this;u.next=function(){var v=u.x,b=u.i,S,D;return S=v[b],S^=S>>>7,D=S^S<<24,S=v[b+1&7],D^=S^S>>>10,S=v[b+3&7],D^=S^S>>>3,S=v[b+4&7],D^=S^S<<7,S=v[b+7&7],S=S^S<<13,D^=S^S<<9,v[b]=D,u.i=b+1&7,D};function l(v,b){var S,D=[];if(b===(b|0))D[0]=b;else for(b=""+b,S=0;S<b.length;++S)D[S&7]=D[S&7]<<15^b.charCodeAt(S)+D[S+1&7]<<13;for(;D.length<8;)D.push(0);for(S=0;S<8&&D[S]===0;++S);for(S==8?D[7]=-1:D[S],v.x=D,v.i=0,S=256;S>0;--S)v.next()}l(u,f)}function o(f,u){return u.x=f.x.slice(),u.i=f.i,u}function s(f,u){f==null&&(f=+new Date);var l=new i(f),v=u&&u.state,b=function(){return(l.next()>>>0)/4294967296};return b.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Y=(S+D)/(1<<21);while(Y===0);return Y},b.int32=l.next,b.quick=b,v&&(v.x&&o(v,l),b.state=function(){return o(l,{})}),b}n&&n.exports?n.exports=s:this.xorshift7=s})(Lv,t)}(go)),go.exports}var yo={exports:{}},Rv=yo.exports,ju;function Iv(){return ju||(ju=1,function(t){(function(e,n,r){function i(f){var u=this;u.next=function(){var v=u.w,b=u.X,S=u.i,D,Y;return u.w=v=v+1640531527|0,Y=b[S+34&127],D=b[S=S+1&127],Y^=Y<<13,D^=D<<17,Y^=Y>>>15,D^=D>>>12,Y=b[S]=Y^D,u.i=S,Y+(v^v>>>16)|0};function l(v,b){var S,D,Y,Ee,Te,se=[],Ue=128;for(b===(b|0)?(D=b,b=null):(b=b+"\0",D=0,Ue=Math.max(Ue,b.length)),Y=0,Ee=-32;Ee<Ue;++Ee)b&&(D^=b.charCodeAt((Ee+32)%b.length)),Ee===0&&(Te=D),D^=D<<10,D^=D>>>15,D^=D<<4,D^=D>>>13,Ee>=0&&(Te=Te+1640531527|0,S=se[Ee&127]^=D+Te,Y=S==0?Y+1:0);for(Y>=128&&(se[(b&&b.length||0)&127]=-1),Y=127,Ee=4*128;Ee>0;--Ee)D=se[Y+34&127],S=se[Y=Y+1&127],D^=D<<13,S^=S<<17,D^=D>>>15,S^=S>>>12,se[Y]=D^S;v.w=Te,v.X=se,v.i=Y}l(u,f)}function o(f,u){return u.i=f.i,u.w=f.w,u.X=f.X.slice(),u}function s(f,u){f==null&&(f=+new Date);var l=new i(f),v=u&&u.state,b=function(){return(l.next()>>>0)/4294967296};return b.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Y=(S+D)/(1<<21);while(Y===0);return Y},b.int32=l.next,b.quick=b,v&&(v.X&&o(v,l),b.state=function(){return o(l,{})}),b}n&&n.exports?n.exports=s:this.xor4096=s})(Rv,t)}(yo)),yo.exports}var xo={exports:{}},Dv=xo.exports,Xu;function zv(){return Xu||(Xu=1,function(t){(function(e,n,r){function i(f){var u=this,l="";u.next=function(){var b=u.b,S=u.c,D=u.d,Y=u.a;return b=b<<25^b>>>7^S,S=S-D|0,D=D<<24^D>>>8^Y,Y=Y-b|0,u.b=b=b<<20^b>>>12^S,u.c=S=S-D|0,u.d=D<<16^S>>>16^Y,u.a=Y-b|0},u.a=0,u.b=0,u.c=-1640531527,u.d=1367130551,f===Math.floor(f)?(u.a=f/4294967296|0,u.b=f|0):l+=f;for(var v=0;v<l.length+20;v++)u.b^=l.charCodeAt(v)|0,u.next()}function o(f,u){return u.a=f.a,u.b=f.b,u.c=f.c,u.d=f.d,u}function s(f,u){var l=new i(f),v=u&&u.state,b=function(){return(l.next()>>>0)/4294967296};return b.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Y=(S+D)/(1<<21);while(Y===0);return Y},b.int32=l.next,b.quick=b,v&&(typeof v=="object"&&o(v,l),b.state=function(){return o(l,{})}),b}n&&n.exports?n.exports=s:this.tychei=s})(Dv,t)}(xo)),xo.exports}var bo={exports:{}};const Ov=xp(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));var Mv=bo.exports,Wu;function Nv(){return Wu||(Wu=1,function(t){(function(e,n,r){var i=256,o=6,s=52,f="random",u=r.pow(i,o),l=r.pow(2,s),v=l*2,b=i-1,S;function D(H,fe,Re){var Ge=[];fe=fe==!0?{entropy:!0}:fe||{};var Ye=se(Te(fe.entropy?[H,He(n)]:H??Ue(),3),Ge),at=new Y(Ge),ut=function(){for(var Ae=at.g(o),lt=u,it=0;Ae<l;)Ae=(Ae+it)*i,lt*=i,it=at.g(1);for(;Ae>=v;)Ae/=2,lt/=2,it>>>=1;return(Ae+it)/lt};return ut.int32=function(){return at.g(4)|0},ut.quick=function(){return at.g(4)/4294967296},ut.double=ut,se(He(at.S),n),(fe.pass||Re||function(Ae,lt,it,N){return N&&(N.S&&Ee(N,at),Ae.state=function(){return Ee(at,{})}),it?(r[f]=Ae,lt):Ae})(ut,Ye,"global"in fe?fe.global:this==r,fe.state)}function Y(H){var fe,Re=H.length,Ge=this,Ye=0,at=Ge.i=Ge.j=0,ut=Ge.S=[];for(Re||(H=[Re++]);Ye<i;)ut[Ye]=Ye++;for(Ye=0;Ye<i;Ye++)ut[Ye]=ut[at=b&at+H[Ye%Re]+(fe=ut[Ye])],ut[at]=fe;(Ge.g=function(Ae){for(var lt,it=0,N=Ge.i,Ce=Ge.j,re=Ge.S;Ae--;)lt=re[N=b&N+1],it=it*i+re[b&(re[N]=re[Ce=b&Ce+lt])+(re[Ce]=lt)];return Ge.i=N,Ge.j=Ce,it})(i)}function Ee(H,fe){return fe.i=H.i,fe.j=H.j,fe.S=H.S.slice(),fe}function Te(H,fe){var Re=[],Ge=typeof H,Ye;if(fe&&Ge=="object")for(Ye in H)try{Re.push(Te(H[Ye],fe-1))}catch{}return Re.length?Re:Ge=="string"?H:H+"\0"}function se(H,fe){for(var Re=H+"",Ge,Ye=0;Ye<Re.length;)fe[b&Ye]=b&(Ge^=fe[b&Ye]*19)+Re.charCodeAt(Ye++);return He(fe)}function Ue(){try{var H;return S&&(H=S.randomBytes)?H=H(i):(H=new Uint8Array(i),(e.crypto||e.msCrypto).getRandomValues(H)),He(H)}catch{var fe=e.navigator,Re=fe&&fe.plugins;return[+new Date,e,Re,e.screen,He(n)]}}function He(H){return String.fromCharCode.apply(0,H)}if(se(r.random(),n),t.exports){t.exports=D;try{S=Ov}catch{}}else r["seed"+f]=D})(typeof self<"u"?self:Mv,[],Math)}(bo)),bo.exports}var Ka,qu;function Gv(){if(qu)return Ka;qu=1;var t=Av(),e=Pv(),n=kv(),r=Fv(),i=Iv(),o=zv(),s=Nv();return s.alea=t,s.xor128=e,s.xorwow=n,s.xorshift7=r,s.xor4096=i,s.tychei=o,Ka=s,Ka}var Bv=Gv();const Uv=Da(Bv);function Vv(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,Hv(r.key),r)}}function Ja(t,e,n){return e&&Vv(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function Yu(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,es(t,e)}function es(t,e){return es=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},es(t,e)}function $v(t,e){if(typeof t!="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}function Hv(t){var e=$v(t,"string");return typeof e=="symbol"?e:String(e)}var _o=function(){function t(){}var e=t.prototype;return e._seed=function(r,i){if(r===(r||0))return r;for(var o=""+r,s=0,f=0;f<o.length;++f)s^=o.charCodeAt(f)|0;return s},t}(),Zu=function(t){Yu(e,t);function e(r,i){var o;return o=t.call(this)||this,o._rng=void 0,o.seed(r,i),o}var n=e.prototype;return n.next=function(){return this._rng()},n.seed=function(i,o){this._rng=i},n.clone=function(i,o){return new e(this._rng,o)},Ja(e,[{key:"name",get:function(){return"function"}}]),e}(_o),Qu=function(){var t=[].slice.call(arguments),e=t,n=e[0],r=n===void 0?"default":n;switch(typeof r){case"object":if(r instanceof _o)return r;break;case"function":return new Zu(r);case"number":case"string":default:return new Zu(Uv.apply(void 0,t))}throw new Error('invalid RNG "'+r+'"')},jv=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),function(){return t.next()*(n-e)+e}};function pn(t){return new Xv(t)}var Xv=function(e){var n=this;this.n=void 0,this.isInt=function(){if(Number.isInteger(n.n))return n;throw new Error("Expected number to be an integer, got "+n.n)},this.isPositive=function(){if(n.n>0)return n;throw new Error("Expected number to be positive, got "+n.n)},this.lessThan=function(r){if(n.n<r)return n;throw new Error("Expected number to be less than "+r+", got "+n.n)},this.greaterThanOrEqual=function(r){if(n.n>=r)return n;throw new Error("Expected number to be greater than or equal to "+r+", got "+n.n)},this.greaterThan=function(r){if(n.n>r)return n;throw new Error("Expected number to be greater than "+r+", got "+n.n)},this.n=e},Wv=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),n===void 0&&(n=e===void 0?1:e,e=0),pn(e).isInt(),pn(n).isInt(),function(){return Math.floor(t.next()*(n-e+1)+e)}},qv=function(t){return function(){return t.next()>=.5}},Yv=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),function(){var r,i,o;do r=t.next()*2-1,i=t.next()*2-1,o=r*r+i*i;while(!o||o>1);return e+n*i*Math.sqrt(-2*Math.log(o)/o)}},Zv=function(t,e,n){e===void 0&&(e=0),n===void 0&&(n=1);var r=t.normal(e,n);return function(){return Math.exp(r())}},Qv=function(t,e){return e===void 0&&(e=.5),pn(e).greaterThanOrEqual(0).lessThan(1),function(){return Math.floor(t.next()+e)}},Kv=function(t,e,n){return e===void 0&&(e=1),n===void 0&&(n=.5),pn(e).isInt().isPositive(),pn(n).greaterThanOrEqual(0).lessThan(1),function(){for(var r=0,i=0;r++<e;)t.next()<n&&i++;return i}},Jv=function(t,e){e===void 0&&(e=.5),pn(e).greaterThan(0).lessThan(1);var n=1/Math.log(1-e);return function(){return Math.floor(1+Math.log(t.next())*n)}},eg=[0,0,.6931471805599453,1.791759469228055,3.1780538303479458,4.787491742782046,6.579251212010101,8.525161361065415,10.60460290274525,12.801827480081469],tg=function(e){return eg[e]},ng=.9189385332046727,rg=function(t,e){if(e===void 0&&(e=1),pn(e).isPositive(),e<10){var n=Math.exp(-e);return function(){for(var u=n,l=0,v=t.next();v>u;)v=v-u,u=e*u/++l;return l}}else{var r=Math.sqrt(e),i=.931+2.53*r,o=-.059+.02483*i,s=1.1239+1.1328/(i-3.4),f=.9277-3.6224/(i-2);return function(){for(;;){var u=void 0,l=t.next();if(l<=.86*f)return u=l/f-.43,Math.floor((2*o/(.5-Math.abs(u))+i)*u+e+.445);l>=f?u=t.next()-.5:(u=l/f-.93,u=(u<0?-.5:.5)-u,l=t.next()*f);var v=.5-Math.abs(u);if(!(v<.013&&l>v)){var b=Math.floor((2*o/v+i)*u+e+.445);if(l=l*s/(o/(v*v)+i),b>=10){var S=(b+.5)*Math.log(e/b)-e-ng+b-(.08333333333333333-(.002777777777777778-1/(1260*b*b))/(b*b))/b;if(Math.log(l*r)<=S)return b}else if(b>=0){var D,Y=(D=tg(b))!=null?D:0;if(Math.log(l)<=b*Math.log(e)-e-Y)return b}}}}}},ig=function(t,e){return e===void 0&&(e=1),pn(e).isPositive(),function(){return-Math.log(1-t.next())/e}},og=function(t,e){return e===void 0&&(e=1),pn(e).isInt().greaterThanOrEqual(0),function(){for(var n=0,r=0;r<e;++r)n+=t.next();return n}},ag=function(t,e){e===void 0&&(e=1),pn(e).isInt().isPositive();var n=t.irwinHall(e);return function(){return n()/e}},sg=function(t,e){e===void 0&&(e=1),pn(e).greaterThanOrEqual(0);var n=1/e;return function(){return 1/Math.pow(1-t.next(),n)}},fg=function(t){Yu(e,t);function e(){return t.apply(this,arguments)||this}var n=e.prototype;return n.next=function(){return Math.random()},n.seed=function(i,o){},n.clone=function(){return new e},Ja(e,[{key:"name",get:function(){return"default"}}]),e}(_o),Ku=function(){function t(n){var r=this;this._rng=void 0,this._patch=void 0,this._cache={},this.next=function(){return r._rng.next()},this.float=function(i,o){return r.uniform(i,o)()},this.int=function(i,o){return r.uniformInt(i,o)()},this.integer=function(i,o){return r.uniformInt(i,o)()},this.bool=function(){return r.uniformBoolean()()},this.boolean=function(){return r.uniformBoolean()()},this.uniform=function(i,o){return r._memoize("uniform",jv,i,o)},this.uniformInt=function(i,o){return r._memoize("uniformInt",Wv,i,o)},this.uniformBoolean=function(){return r._memoize("uniformBoolean",qv)},this.normal=function(i,o){return Yv(r,i,o)},this.logNormal=function(i,o){return Zv(r,i,o)},this.bernoulli=function(i){return Qv(r,i)},this.binomial=function(i,o){return Kv(r,i,o)},this.geometric=function(i){return Jv(r,i)},this.poisson=function(i){return rg(r,i)},this.exponential=function(i){return ig(r,i)},this.irwinHall=function(i){return og(r,i)},this.bates=function(i){return ag(r,i)},this.pareto=function(i){return sg(r,i)},n&&n instanceof _o?this.use(n):this.use(new fg),this._cache={}}var e=t.prototype;return e.clone=function(){var r=[].slice.call(arguments);return r.length?new t(Qu.apply(void 0,r)):new t(this.rng.clone())},e.use=function(){this._rng=Qu.apply(void 0,[].slice.call(arguments))},e.patch=function(){if(this._patch)throw new Error("Math.random already patched");this._patch=Math.random,Math.random=this.uniform()},e.unpatch=function(){this._patch&&(Math.random=this._patch,delete this._patch)},e.choice=function(r){if(!Array.isArray(r))throw new Error("Random.choice expected input to be an array, got "+typeof r);var i=r==null?void 0:r.length;if(i>0){var o=this.uniformInt(0,i-1)();return r[o]}else return},e._memoize=function(r,i){var o=[].slice.call(arguments,2),s=""+o.join(";"),f=this._cache[r];return(f===void 0||f.key!==s)&&(f={key:s,distribution:i.apply(void 0,[this].concat(o))},this._cache[r]=f),f.distribution},Ja(t,[{key:"rng",get:function(){return this._rng}}]),t}();new Ku;const ts=.001,ns=64;class ug{constructor(){this.pointsTextureSize=0,this.linksTextureSize=0,this.alpha=1,this.transform=Sv(),this.screenSize=[0,0],this.mousePosition=[0,0],this.screenMousePosition=[0,0],this.selectedArea=[[0,0],[0,0]],this.isSimulationRunning=!1,this.simulationProgress=0,this.selectedIndices=null,this.maxPointSize=ns,this.hoveredPoint=void 0,this.focusedPoint=void 0,this.draggingPointIndex=void 0,this.adjustedSpaceSize=We.spaceSize,this.isSpaceKeyPressed=!1,this.hoveredPointRingColor=[1,1,1,Dp],this.focusedPointRingColor=[1,1,1,zp],this.greyoutPointColor=[-1,-1,-1,-1],this.darkenGreyout=!1,this.alphaTarget=0,this.scalePointX=Za(),this.scalePointY=Za(),this.random=new Ku,this._backgroundColor=[0,0,0,0],this.alphaDecay=e=>1-Math.pow(ts,1/e)}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){this._backgroundColor=e;const n=du(e[0],e[1],e[2]);document.documentElement.style.setProperty("--cosmosgl-attribution-color",n>.65?"black":"white"),document.documentElement.style.setProperty("--cosmosgl-error-message-color",n>.65?"black":"white"),this.div&&(this.div.style.backgroundColor=`rgba(${e[0]*255}, ${e[1]*255}, ${e[2]*255}, ${e[3]})`),this.darkenGreyout=n<.65}addRandomSeed(e){this.random=this.random.clone(e)}getRandomFloat(e,n){return this.random.float(e,n)}adjustSpaceSize(e,n){e>=n?(this.adjustedSpaceSize=n/2,console.warn(`The \`spaceSize\` has been reduced to ${this.adjustedSpaceSize} due to WebGL limits`)):this.adjustedSpaceSize=e}updateScreenSize(e,n){const{adjustedSpaceSize:r}=this;this.screenSize=[e,n],this.scalePointX.domain([0,r]).range([(e-r)/2,(e+r)/2]),this.scalePointY.domain([r,0]).range([(n-r)/2,(n+r)/2])}scaleX(e){return this.scalePointX(e)}scaleY(e){return this.scalePointY(e)}setHoveredPointRingColor(e){const n=Vn(e);this.hoveredPointRingColor[0]=n[0],this.hoveredPointRingColor[1]=n[1],this.hoveredPointRingColor[2]=n[2]}setFocusedPointRingColor(e){const n=Vn(e);this.focusedPointRingColor[0]=n[0],this.focusedPointRingColor[1]=n[1],this.focusedPointRingColor[2]=n[2]}setGreyoutPointColor(e){if(e===void 0){this.greyoutPointColor=[-1,-1,-1,-1];return}const n=Vn(e);this.greyoutPointColor[0]=n[0],this.greyoutPointColor[1]=n[1],this.greyoutPointColor[2]=n[2],this.greyoutPointColor[3]=n[3]}setFocusedPoint(e){e!==void 0?this.focusedPoint={index:e}:this.focusedPoint=void 0}addAlpha(e){return(this.alphaTarget-this.alpha)*this.alphaDecay(e)}}const lg={passive:!1},pi={capture:!0,passive:!1};function rs(t){t.stopImmediatePropagation()}function Rr(t){t.preventDefault(),t.stopImmediatePropagation()}function Ju(t){var e=t.document.documentElement,n=Dt(t).on("dragstart.drag",Rr,pi);"onselectstart"in e?n.on("selectstart.drag",Rr,pi):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function el(t,e){var n=t.document.documentElement,r=Dt(t).on("dragstart.drag",null);e&&(r.on("click.drag",Rr,pi),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const So=t=>()=>t;function is(t,{sourceEvent:e,subject:n,target:r,identifier:i,active:o,x:s,y:f,dx:u,dy:l,dispatch:v}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:f,enumerable:!0,configurable:!0},dx:{value:u,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:v}})}is.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function cg(t){return!t.ctrlKey&&!t.button}function hg(){return this.parentNode}function dg(t,e){return e??{x:t.x,y:t.y}}function mg(){return navigator.maxTouchPoints||"ontouchstart"in this}function pg(){var t=cg,e=hg,n=dg,r=mg,i={},o=Vi("start","drag","end"),s=0,f,u,l,v,b=0;function S(H){H.on("mousedown.drag",D).filter(r).on("touchstart.drag",Te).on("touchmove.drag",se,lg).on("touchend.drag touchcancel.drag",Ue).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function D(H,fe){if(!(v||!t.call(this,H,fe))){var Re=He(this,e.call(this,H,fe),H,fe,"mouse");Re&&(Dt(H.view).on("mousemove.drag",Y,pi).on("mouseup.drag",Ee,pi),Ju(H.view),rs(H),l=!1,f=H.clientX,u=H.clientY,Re("start",H))}}function Y(H){if(Rr(H),!l){var fe=H.clientX-f,Re=H.clientY-u;l=fe*fe+Re*Re>b}i.mouse("drag",H)}function Ee(H){Dt(H.view).on("mousemove.drag mouseup.drag",null),el(H.view,l),Rr(H),i.mouse("end",H)}function Te(H,fe){if(t.call(this,H,fe)){var Re=H.changedTouches,Ge=e.call(this,H,fe),Ye=Re.length,at,ut;for(at=0;at<Ye;++at)(ut=He(this,Ge,H,fe,Re[at].identifier,Re[at]))&&(rs(H),ut("start",H,Re[at]))}}function se(H){var fe=H.changedTouches,Re=fe.length,Ge,Ye;for(Ge=0;Ge<Re;++Ge)(Ye=i[fe[Ge].identifier])&&(Rr(H),Ye("drag",H,fe[Ge]))}function Ue(H){var fe=H.changedTouches,Re=fe.length,Ge,Ye;for(v&&clearTimeout(v),v=setTimeout(function(){v=null},500),Ge=0;Ge<Re;++Ge)(Ye=i[fe[Ge].identifier])&&(rs(H),Ye("end",H,fe[Ge]))}function He(H,fe,Re,Ge,Ye,at){var ut=o.copy(),Ae=kn(at||Re,fe),lt,it,N;if((N=n.call(H,new is("beforestart",{sourceEvent:Re,target:S,identifier:Ye,active:s,x:Ae[0],y:Ae[1],dx:0,dy:0,dispatch:ut}),Ge))!=null)return lt=N.x-Ae[0]||0,it=N.y-Ae[1]||0,function Ce(re,ke,Xe){var je=Ae,Qe;switch(re){case"start":i[Ye]=Ce,Qe=s++;break;case"end":delete i[Ye],--s;case"drag":Ae=kn(Xe||ke,fe),Qe=s;break}ut.call(re,H,new is(re,{sourceEvent:ke,subject:N,target:S,identifier:Ye,active:Qe,x:Ae[0]+lt,y:Ae[1]+it,dx:Ae[0]-je[0],dy:Ae[1]-je[1],dispatch:ut}),Ge)}}return S.filter=function(H){return arguments.length?(t=typeof H=="function"?H:So(!!H),S):t},S.container=function(H){return arguments.length?(e=typeof H=="function"?H:So(H),S):e},S.subject=function(H){return arguments.length?(n=typeof H=="function"?H:So(H),S):n},S.touchable=function(H){return arguments.length?(r=typeof H=="function"?H:So(!!H),S):r},S.on=function(){var H=o.on.apply(o,arguments);return H===o?S:H},S.clickDistance=function(H){return arguments.length?(b=(H=+H)*H,S):Math.sqrt(b)},S}const To=t=>()=>t;function vg(t,{sourceEvent:e,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function Dn(t,e,n){this.k=t,this.x=e,this.y=n}Dn.prototype={constructor:Dn,scale:function(t){return t===1?this:new Dn(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new Dn(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var vi=new Dn(1,0,0);Dn.prototype;function os(t){t.stopImmediatePropagation()}function gi(t){t.preventDefault(),t.stopImmediatePropagation()}function gg(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function yg(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function tl(){return this.__zoom||vi}function xg(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function bg(){return navigator.maxTouchPoints||"ontouchstart"in this}function _g(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],o=t.invertY(e[0][1])-n[0][1],s=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s))}function Sg(){var t=gg,e=yg,n=_g,r=xg,i=bg,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],f=250,u=hm,l=Vi("start","zoom","end"),v,b,S,D=500,Y=150,Ee=0,Te=10;function se(N){N.property("__zoom",tl).on("wheel.zoom",Ye,{passive:!1}).on("mousedown.zoom",at).on("dblclick.zoom",ut).filter(i).on("touchstart.zoom",Ae).on("touchmove.zoom",lt).on("touchend.zoom touchcancel.zoom",it).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}se.transform=function(N,Ce,re,ke){var Xe=N.selection?N.selection():N;Xe.property("__zoom",tl),N!==Xe?fe(N,Ce,re,ke):Xe.interrupt().each(function(){Re(this,arguments).event(ke).start().zoom(null,typeof Ce=="function"?Ce.apply(this,arguments):Ce).end()})},se.scaleBy=function(N,Ce,re,ke){se.scaleTo(N,function(){var Xe=this.__zoom.k,je=typeof Ce=="function"?Ce.apply(this,arguments):Ce;return Xe*je},re,ke)},se.scaleTo=function(N,Ce,re,ke){se.transform(N,function(){var Xe=e.apply(this,arguments),je=this.__zoom,Qe=re==null?H(Xe):typeof re=="function"?re.apply(this,arguments):re,Ze=je.invert(Qe),dt=typeof Ce=="function"?Ce.apply(this,arguments):Ce;return n(He(Ue(je,dt),Qe,Ze),Xe,s)},re,ke)},se.translateBy=function(N,Ce,re,ke){se.transform(N,function(){return n(this.__zoom.translate(typeof Ce=="function"?Ce.apply(this,arguments):Ce,typeof re=="function"?re.apply(this,arguments):re),e.apply(this,arguments),s)},null,ke)},se.translateTo=function(N,Ce,re,ke,Xe){se.transform(N,function(){var je=e.apply(this,arguments),Qe=this.__zoom,Ze=ke==null?H(je):typeof ke=="function"?ke.apply(this,arguments):ke;return n(vi.translate(Ze[0],Ze[1]).scale(Qe.k).translate(typeof Ce=="function"?-Ce.apply(this,arguments):-Ce,typeof re=="function"?-re.apply(this,arguments):-re),je,s)},ke,Xe)};function Ue(N,Ce){return Ce=Math.max(o[0],Math.min(o[1],Ce)),Ce===N.k?N:new Dn(Ce,N.x,N.y)}function He(N,Ce,re){var ke=Ce[0]-re[0]*N.k,Xe=Ce[1]-re[1]*N.k;return ke===N.x&&Xe===N.y?N:new Dn(N.k,ke,Xe)}function H(N){return[(+N[0][0]+ +N[1][0])/2,(+N[0][1]+ +N[1][1])/2]}function fe(N,Ce,re,ke){N.on("start.zoom",function(){Re(this,arguments).event(ke).start()}).on("interrupt.zoom end.zoom",function(){Re(this,arguments).event(ke).end()}).tween("zoom",function(){var Xe=this,je=arguments,Qe=Re(Xe,je).event(ke),Ze=e.apply(Xe,je),dt=re==null?H(Ze):typeof re=="function"?re.apply(Xe,je):re,ct=Math.max(Ze[1][0]-Ze[0][0],Ze[1][1]-Ze[0][1]),_t=Xe.__zoom,st=typeof Ce=="function"?Ce.apply(Xe,je):Ce,$t=u(_t.invert(dt).concat(ct/_t.k),st.invert(dt).concat(ct/st.k));return function(Ht){if(Ht===1)Ht=st;else{var Qt=$t(Ht),zn=ct/Qt[2];Ht=new Dn(zn,dt[0]-Qt[0]*zn,dt[1]-Qt[1]*zn)}Qe.zoom(null,Ht)}})}function Re(N,Ce,re){return!re&&N.__zooming||new Ge(N,Ce)}function Ge(N,Ce){this.that=N,this.args=Ce,this.active=0,this.sourceEvent=null,this.extent=e.apply(N,Ce),this.taps=0}Ge.prototype={event:function(N){return N&&(this.sourceEvent=N),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(N,Ce){return this.mouse&&N!=="mouse"&&(this.mouse[1]=Ce.invert(this.mouse[0])),this.touch0&&N!=="touch"&&(this.touch0[1]=Ce.invert(this.touch0[0])),this.touch1&&N!=="touch"&&(this.touch1[1]=Ce.invert(this.touch1[0])),this.that.__zoom=Ce,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(N){var Ce=Dt(this.that).datum();l.call(N,this.that,new vg(N,{sourceEvent:this.sourceEvent,target:se,transform:this.that.__zoom,dispatch:l}),Ce)}};function Ye(N,...Ce){if(!t.apply(this,arguments))return;var re=Re(this,Ce).event(N),ke=this.__zoom,Xe=Math.max(o[0],Math.min(o[1],ke.k*Math.pow(2,r.apply(this,arguments)))),je=kn(N);if(re.wheel)(re.mouse[0][0]!==je[0]||re.mouse[0][1]!==je[1])&&(re.mouse[1]=ke.invert(re.mouse[0]=je)),clearTimeout(re.wheel);else{if(ke.k===Xe)return;re.mouse=[je,ke.invert(je)],Qi(this),re.start()}gi(N),re.wheel=setTimeout(Qe,Y),re.zoom("mouse",n(He(Ue(ke,Xe),re.mouse[0],re.mouse[1]),re.extent,s));function Qe(){re.wheel=null,re.end()}}function at(N,...Ce){if(S||!t.apply(this,arguments))return;var re=N.currentTarget,ke=Re(this,Ce,!0).event(N),Xe=Dt(N.view).on("mousemove.zoom",dt,!0).on("mouseup.zoom",ct,!0),je=kn(N,re),Qe=N.clientX,Ze=N.clientY;Ju(N.view),os(N),ke.mouse=[je,this.__zoom.invert(je)],Qi(this),ke.start();function dt(_t){if(gi(_t),!ke.moved){var st=_t.clientX-Qe,$t=_t.clientY-Ze;ke.moved=st*st+$t*$t>Ee}ke.event(_t).zoom("mouse",n(He(ke.that.__zoom,ke.mouse[0]=kn(_t,re),ke.mouse[1]),ke.extent,s))}function ct(_t){Xe.on("mousemove.zoom mouseup.zoom",null),el(_t.view,ke.moved),gi(_t),ke.event(_t).end()}}function ut(N,...Ce){if(t.apply(this,arguments)){var re=this.__zoom,ke=kn(N.changedTouches?N.changedTouches[0]:N,this),Xe=re.invert(ke),je=re.k*(N.shiftKey?.5:2),Qe=n(He(Ue(re,je),ke,Xe),e.apply(this,Ce),s);gi(N),f>0?Dt(this).transition().duration(f).call(fe,Qe,ke,N):Dt(this).call(se.transform,Qe,ke,N)}}function Ae(N,...Ce){if(t.apply(this,arguments)){var re=N.touches,ke=re.length,Xe=Re(this,Ce,N.changedTouches.length===ke).event(N),je,Qe,Ze,dt;for(os(N),Qe=0;Qe<ke;++Qe)Ze=re[Qe],dt=kn(Ze,this),dt=[dt,this.__zoom.invert(dt),Ze.identifier],Xe.touch0?!Xe.touch1&&Xe.touch0[2]!==dt[2]&&(Xe.touch1=dt,Xe.taps=0):(Xe.touch0=dt,je=!0,Xe.taps=1+!!v);v&&(v=clearTimeout(v)),je&&(Xe.taps<2&&(b=dt[0],v=setTimeout(function(){v=null},D)),Qi(this),Xe.start())}}function lt(N,...Ce){if(this.__zooming){var re=Re(this,Ce).event(N),ke=N.changedTouches,Xe=ke.length,je,Qe,Ze,dt;for(gi(N),je=0;je<Xe;++je)Qe=ke[je],Ze=kn(Qe,this),re.touch0&&re.touch0[2]===Qe.identifier?re.touch0[0]=Ze:re.touch1&&re.touch1[2]===Qe.identifier&&(re.touch1[0]=Ze);if(Qe=re.that.__zoom,re.touch1){var ct=re.touch0[0],_t=re.touch0[1],st=re.touch1[0],$t=re.touch1[1],Ht=(Ht=st[0]-ct[0])*Ht+(Ht=st[1]-ct[1])*Ht,Qt=(Qt=$t[0]-_t[0])*Qt+(Qt=$t[1]-_t[1])*Qt;Qe=Ue(Qe,Math.sqrt(Ht/Qt)),Ze=[(ct[0]+st[0])/2,(ct[1]+st[1])/2],dt=[(_t[0]+$t[0])/2,(_t[1]+$t[1])/2]}else if(re.touch0)Ze=re.touch0[0],dt=re.touch0[1];else return;re.zoom("touch",n(He(Qe,Ze,dt),re.extent,s))}}function it(N,...Ce){if(this.__zooming){var re=Re(this,Ce).event(N),ke=N.changedTouches,Xe=ke.length,je,Qe;for(os(N),S&&clearTimeout(S),S=setTimeout(function(){S=null},D),je=0;je<Xe;++je)Qe=ke[je],re.touch0&&re.touch0[2]===Qe.identifier?delete re.touch0:re.touch1&&re.touch1[2]===Qe.identifier&&delete re.touch1;if(re.touch1&&!re.touch0&&(re.touch0=re.touch1,delete re.touch1),re.touch0)re.touch0[1]=this.__zoom.invert(re.touch0[0]);else if(re.end(),re.taps===2&&(Qe=kn(Qe,this),Math.hypot(b[0]-Qe[0],b[1]-Qe[1])<Te)){var Ze=Dt(this).on("dblclick.zoom");Ze&&Ze.apply(this,arguments)}}}return se.wheelDelta=function(N){return arguments.length?(r=typeof N=="function"?N:To(+N),se):r},se.filter=function(N){return arguments.length?(t=typeof N=="function"?N:To(!!N),se):t},se.touchable=function(N){return arguments.length?(i=typeof N=="function"?N:To(!!N),se):i},se.extent=function(N){return arguments.length?(e=typeof N=="function"?N:To([[+N[0][0],+N[0][1]],[+N[1][0],+N[1][1]]]),se):e},se.scaleExtent=function(N){return arguments.length?(o[0]=+N[0],o[1]=+N[1],se):[o[0],o[1]]},se.translateExtent=function(N){return arguments.length?(s[0][0]=+N[0][0],s[1][0]=+N[1][0],s[0][1]=+N[0][1],s[1][1]=+N[1][1],se):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},se.constrain=function(N){return arguments.length?(n=N,se):n},se.duration=function(N){return arguments.length?(f=+N,se):f},se.interpolate=function(N){return arguments.length?(u=N,se):u},se.on=function(){var N=l.on.apply(l,arguments);return N===l?se:N},se.clickDistance=function(N){return arguments.length?(Ee=(N=+N)*N,se):Math.sqrt(Ee)},se.tapDistance=function(N){return arguments.length?(Te=+N,se):Te},se}class Tg{constructor(e,n){this.eventTransform=vi,this.behavior=Sg().scaleExtent([.001,1/0]).on("start",r=>{var o,s;this.isRunning=!0;const i=!!r.sourceEvent;(s=(o=this.config)==null?void 0:o.onZoomStart)==null||s.call(o,r,i)}).on("zoom",r=>{var S,D;this.eventTransform=r.transform;const{eventTransform:{x:i,y:o,k:s},store:{transform:f,screenSize:u}}=this,l=u[0],v=u[1];if(!l||!v)return;Tv(f,l,v),Bu(f,f,[i,o]),Qa(f,f,[s,s]),Bu(f,f,[l/2,v/2]),Qa(f,f,[l/2,v/2]),Qa(f,f,[1,-1]);const b=!!r.sourceEvent;(D=(S=this.config)==null?void 0:S.onZoom)==null||D.call(S,r,b)}).on("end",r=>{var o,s;this.isRunning=!1;const i=!!r.sourceEvent;(s=(o=this.config)==null?void 0:o.onZoomEnd)==null||s.call(o,r,i)}),this.isRunning=!1,this.store=e,this.config=n}getTransform(e,n,r=.1){if(e.length===0)return this.eventTransform;const{store:{screenSize:i}}=this,o=i[0],s=i[1],f=Su(e.map(se=>se[0])),u=Su(e.map(se=>se[1]));f[0]=this.store.scaleX(f[0]),f[1]=this.store.scaleX(f[1]),u[0]=this.store.scaleY(u[0]),u[1]=this.store.scaleY(u[1]),f[0]===f[1]&&(f[0]-=.5,f[1]+=.5),u[0]===u[1]&&(u[0]+=.5,u[1]-=.5);const l=o*(1-r*2)/(f[1]-f[0]),v=s*(1-r*2)/(u[0]-u[1]),b=mu(n??Math.min(l,v),...this.behavior.scaleExtent()),S=(f[1]+f[0])/2,D=(u[1]+u[0])/2,Y=o/2-S*b,Ee=s/2-D*b;return vi.translate(Y,Ee).scale(b)}getDistanceToPoint(e){const{x:n,y:r,k:i}=this.eventTransform,o=this.getTransform([e],i),s=n-o.x,f=r-o.y;return Math.sqrt(s*s+f*f)}getMiddlePointTransform(e){const{store:{screenSize:n},eventTransform:{x:r,y:i,k:o}}=this,s=n[0],f=n[1],u=(s/2-r)/o,l=(f/2-i)/o,v=this.store.scaleX(e[0]),b=this.store.scaleY(e[1]),S=(u+v)/2,D=(l+b)/2,Y=1,Ee=s/2-S*Y,Te=f/2-D*Y;return vi.translate(Ee,Te).scale(Y)}convertScreenToSpacePosition(e){const{eventTransform:{x:n,y:r,k:i},store:{screenSize:o}}=this,s=o[0],f=o[1],u=(e[0]-n)/i,l=(e[1]-r)/i,v=[u,f-l];return v[0]-=(s-this.store.adjustedSpaceSize)/2,v[1]-=(f-this.store.adjustedSpaceSize)/2,v}convertSpaceToScreenPosition(e){const n=this.eventTransform.applyX(this.store.scaleX(e[0])),r=this.eventTransform.applyY(this.store.scaleY(e[1]));return[n,r]}convertSpaceToScreenRadius(e){const{config:{scalePointsOnZoom:n},store:{maxPointSize:r},eventTransform:{k:i}}=this;let o=e*2;return n?o*=i:o*=Math.min(5,Math.max(1,i*.01)),Math.min(o,r)/2}}class wg{constructor(e,n){this.isActive=!1,this.behavior=pg().subject(r=>this.store.hoveredPoint&&!this.store.isSpaceKeyPressed?{x:r.x,y:r.y}:void 0).on("start",r=>{var i,o;this.store.hoveredPoint&&(this.store.draggingPointIndex=this.store.hoveredPoint.index,this.isActive=!0,(o=(i=this.config)==null?void 0:i.onDragStart)==null||o.call(i,r))}).on("drag",r=>{var i,o;(o=(i=this.config)==null?void 0:i.onDrag)==null||o.call(i,r)}).on("end",r=>{var i,o;this.isActive=!1,this.store.draggingPointIndex=void 0,(o=(i=this.config)==null?void 0:i.onDragEnd)==null||o.call(i,r)}),this.store=e,this.config=n}}function Ag(t){const e=document.createElement("div");return e.style.cssText=`
|
|
1314
1324
|
color: var(--cosmosgl-error-message-color);
|
|
1315
1325
|
padding: 0em 2em;
|
|
1316
1326
|
position: absolute;
|
|
@@ -1321,7 +1331,7 @@ void main() {
|
|
|
1321
1331
|
font-size: 1rem;
|
|
1322
1332
|
text-align: center;
|
|
1323
1333
|
user-select: none;
|
|
1324
|
-
`,e.textContent="Sorry, your device or browser does not support the required WebGL features for this visualization",t.appendChild(e),e}class P0{constructor(e,n){this.config=new am,this.graph=new Fm(this.config),this.requestAnimationFrameId=0,this.isRightClickMouse=!1,this.store=new l0,this.zoomInstance=new T0(this.store,this.config),this.dragInstance=new A0(this.store,this.config),this._findHoveredPointExecutionCount=0,this._isMouseOnCanvas=!1,this._isFirstRenderAfterInit=!0,this._needsPointPositionsUpdate=!1,this._needsPointColorUpdate=!1,this._needsPointSizeUpdate=!1,this._needsLinksUpdate=!1,this._needsLinkColorUpdate=!1,this._needsLinkWidthUpdate=!1,this._needsLinkArrowUpdate=!1,this._needsPointClusterUpdate=!1,this._needsForceManyBodyUpdate=!1,this._needsForceLinkUpdate=!1,this._needsForceCenterUpdate=!1,this._isDestroyed=!1,n&&this.config.init(n),this.store.div=e;const r=document.createElement("canvas");r.style.width="100%",r.style.height="100%",this.store.div.appendChild(r),this.addAttribution();const i=r.clientWidth,o=r.clientHeight;r.width=i*this.config.pixelRatio,r.height=o*this.config.pixelRatio,this.canvas=r;let u;try{u=Wd({canvas:this.canvas,attributes:{antialias:!1,preserveDrawingBuffer:!0},extensions:["OES_texture_float","ANGLE_instanced_arrays"]})}catch{E0(this.store.div),this._isDestroyed=!0;return}this.reglInstance=u,this.store.adjustSpaceSize(this.config.spaceSize,this.reglInstance.limits.maxTextureSize),this.store.updateScreenSize(i,o),this.canvasD3Selection=wt(this.canvas),this.canvasD3Selection.on("mouseenter.cosmos",()=>{this._isMouseOnCanvas=!0}).on("mousemove.cosmos",()=>{this._isMouseOnCanvas=!0}).on("mouseleave.cosmos",()=>{this._isMouseOnCanvas=!1}),wt(document).on("keydown.cosmos",s=>{s.code==="Space"&&(this.store.isSpaceKeyPressed=!0)}).on("keyup.cosmos",s=>{s.code==="Space"&&(this.store.isSpaceKeyPressed=!1)}),this.zoomInstance.behavior.on("start.detect",s=>{this.currentEvent=s}).on("zoom.detect",s=>{!!s.sourceEvent&&this.updateMousePosition(s.sourceEvent),this.currentEvent=s}).on("end.detect",s=>{this.currentEvent=s}),this.dragInstance.behavior.on("start.detect",s=>{this.currentEvent=s,this.updateCanvasCursor()}).on("drag.detect",s=>{this.dragInstance.isActive&&this.updateMousePosition(s),this.currentEvent=s}).on("end.detect",s=>{this.currentEvent=s,this.updateCanvasCursor()}),this.canvasD3Selection.call(this.dragInstance.behavior).call(this.zoomInstance.behavior).on("click",this.onClick.bind(this)).on("mousemove",this.onMouseMove.bind(this)).on("contextmenu",this.onRightClickMouse.bind(this)),(!this.config.enableZoom||!this.config.enableDrag)&&this.updateZoomDragBehaviors(),this.setZoomLevel(this.config.initialZoomLevel??1),this.store.maxPointSize=(this.reglInstance.limits.pointSizeDims[1]??zo)/this.config.pixelRatio,this.points=new Sp(this.reglInstance,this.config,this.store,this.graph),this.lines=new up(this.reglInstance,this.config,this.store,this.graph,this.points),this.config.enableSimulation&&(this.forceGravity=new hm(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceCenter=new lm(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceManyBody=this.config.useClassicQuadtree?new ym(this.reglInstance,this.config,this.store,this.graph,this.points):new vm(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceLinkIncoming=new Es(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceLinkOutgoing=new Es(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceMouse=new bm(this.reglInstance,this.config,this.store,this.graph,this.points)),this.clusters=new Tm(this.reglInstance,this.config,this.store,this.graph,this.points),this.store.backgroundColor=vn(this.config.backgroundColor),this.config.hoveredPointRingColor&&this.store.setHoveredPointRingColor(this.config.hoveredPointRingColor),this.config.focusedPointRingColor&&this.store.setFocusedPointRingColor(this.config.focusedPointRingColor),this.config.focusedPointIndex!==void 0&&this.store.setFocusedPoint(this.config.focusedPointIndex),this.config.pointGreyoutColor&&this.store.setGreyoutPointColor(this.config.pointGreyoutColor),this.config.showFPSMonitor&&(this.fpsMonitor=new Fs(this.canvas)),this.config.randomSeed!==void 0&&this.store.addRandomSeed(this.config.randomSeed)}get progress(){return this._isDestroyed?0:this.store.simulationProgress}get isSimulationRunning(){return this._isDestroyed?!1:this.store.isSimulationRunning}get maxPointSize(){return this._isDestroyed?0:this.store.maxPointSize}setConfig(e){var r;if(this._isDestroyed||!this.reglInstance||!this.points||!this.lines||!this.clusters)return;const n={...this.config};this.config.init(e),n.pointColor!==this.config.pointColor&&(this.graph.updatePointColor(),this.points.updateColor()),n.pointSize!==this.config.pointSize&&(this.graph.updatePointSize(),this.points.updateSize()),n.linkColor!==this.config.linkColor&&(this.graph.updateLinkColor(),this.lines.updateColor()),n.linkWidth!==this.config.linkWidth&&(this.graph.updateLinkWidth(),this.lines.updateWidth()),n.linkArrows!==this.config.linkArrows&&(this.graph.updateArrows(),this.lines.updateArrow()),(n.curvedLinkSegments!==this.config.curvedLinkSegments||n.curvedLinks!==this.config.curvedLinks)&&this.lines.updateCurveLineGeometry(),n.backgroundColor!==this.config.backgroundColor&&(this.store.backgroundColor=vn(this.config.backgroundColor)),n.hoveredPointRingColor!==this.config.hoveredPointRingColor&&this.store.setHoveredPointRingColor(this.config.hoveredPointRingColor),n.focusedPointRingColor!==this.config.focusedPointRingColor&&this.store.setFocusedPointRingColor(this.config.focusedPointRingColor),n.pointGreyoutColor!==this.config.pointGreyoutColor&&this.store.setGreyoutPointColor(this.config.pointGreyoutColor),n.focusedPointIndex!==this.config.focusedPointIndex&&this.store.setFocusedPoint(this.config.focusedPointIndex),(n.spaceSize!==this.config.spaceSize||n.simulationRepulsionQuadtreeLevels!==this.config.simulationRepulsionQuadtreeLevels)&&(this.store.adjustSpaceSize(this.config.spaceSize,this.reglInstance.limits.maxTextureSize),this.resizeCanvas(!0),this.update(this.store.isSimulationRunning?this.store.alpha:0)),n.showFPSMonitor!==this.config.showFPSMonitor&&(this.config.showFPSMonitor?this.fpsMonitor=new Fs(this.canvas):((r=this.fpsMonitor)==null||r.destroy(),this.fpsMonitor=void 0)),n.pixelRatio!==this.config.pixelRatio&&(this.store.maxPointSize=(this.reglInstance.limits.pointSizeDims[1]??zo)/this.config.pixelRatio),(n.enableZoom!==this.config.enableZoom||n.enableDrag!==this.config.enableDrag)&&this.updateZoomDragBehaviors()}setPointPositions(e,n){this._isDestroyed||!this.points||(this.graph.inputPointPositions=e,this.points.dontRescale=n,this._needsPointPositionsUpdate=!0,this._needsLinksUpdate=!0,this._needsPointColorUpdate=!0,this._needsPointSizeUpdate=!0,this._needsPointClusterUpdate=!0,this._needsForceManyBodyUpdate=!0,this._needsForceLinkUpdate=!0,this._needsForceCenterUpdate=!0)}setPointColors(e){this._isDestroyed||(this.graph.inputPointColors=e,this._needsPointColorUpdate=!0)}setPointSizes(e){this._isDestroyed||(this.graph.inputPointSizes=e,this._needsPointSizeUpdate=!0)}setLinks(e){this._isDestroyed||(this.graph.inputLinks=e,this._needsLinksUpdate=!0,this._needsLinkColorUpdate=!0,this._needsLinkWidthUpdate=!0,this._needsLinkArrowUpdate=!0,this._needsForceLinkUpdate=!0)}setLinkColors(e){this._isDestroyed||(this.graph.inputLinkColors=e,this._needsLinkColorUpdate=!0)}setLinkWidths(e){this._isDestroyed||(this.graph.inputLinkWidths=e,this._needsLinkWidthUpdate=!0)}setLinkArrows(e){this._isDestroyed||(this.graph.linkArrowsBoolean=e,this._needsLinkArrowUpdate=!0)}setLinkStrength(e){this._isDestroyed||(this.graph.inputLinkStrength=e,this._needsForceLinkUpdate=!0)}setPointClusters(e){this._isDestroyed||(this.graph.inputPointClusters=e,this._needsPointClusterUpdate=!0)}setClusterPositions(e){this._isDestroyed||(this.graph.inputClusterPositions=e,this._needsPointClusterUpdate=!0)}setPointClusterStrength(e){this._isDestroyed||(this.graph.inputClusterStrength=e,this._needsPointClusterUpdate=!0)}render(e){if(this._isDestroyed||!this.reglInstance)return;this.graph.update();const{fitViewOnInit:n,fitViewDelay:r,fitViewPadding:i,fitViewDuration:o,fitViewByPointsInRect:u,initialZoomLevel:s}=this.config;if(!this.graph.pointsNumber&&!this.graph.linksNumber){this.stopFrames(),wt(this.canvas).style("cursor",null),this.reglInstance.clear({color:this.store.backgroundColor,depth:1,stencil:0});return}this._isFirstRenderAfterInit&&n&&s===void 0&&(this._fitViewOnInitTimeoutID=window.setTimeout(()=>{u?this.setZoomTransformByPointPositions(u,o,void 0,i):this.fitView(o,i)},r)),this._isFirstRenderAfterInit=!1,this.update(e)}zoomToPointByIndex(e,n=700,r=om,i=!0){if(this._isDestroyed||!this.reglInstance||!this.points||!this.canvasD3Selection)return;const{store:{screenSize:o}}=this,u=Ht(this.reglInstance,this.points.currentPositionFbo);if(e===void 0)return;const s=u[e*4+0],f=u[e*4+1];if(s===void 0||f===void 0)return;const l=this.zoomInstance.getDistanceToPoint([s,f]),v=i?r:Math.max(this.getZoomLevel(),r);if(l<Math.min(o[0],o[1]))this.setZoomTransformByPointPositions([s,f],n,v);else{const b=this.zoomInstance.getTransform([[s,f]],v),S=this.zoomInstance.getMiddlePointTransform([s,f]);this.canvasD3Selection.transition().ease(Od).duration(n/2).call(this.zoomInstance.behavior.transform,S).transition().ease(Gd).duration(n/2).call(this.zoomInstance.behavior.transform,b)}}zoom(e,n=0){this._isDestroyed||this.setZoomLevel(e,n)}setZoomLevel(e,n=0){this._isDestroyed||!this.canvasD3Selection||(n===0?this.canvasD3Selection.call(this.zoomInstance.behavior.scaleTo,e):this.canvasD3Selection.transition().duration(n).call(this.zoomInstance.behavior.scaleTo,e))}getZoomLevel(){return this._isDestroyed?0:this.zoomInstance.eventTransform.k}getPointPositions(){if(this._isDestroyed||!this.reglInstance||!this.points)return[];if(this.graph.pointsNumber===void 0)return[];const e=[],n=Ht(this.reglInstance,this.points.currentPositionFbo);e.length=this.graph.pointsNumber*2;for(let r=0;r<this.graph.pointsNumber;r+=1){const i=n[r*4+0],o=n[r*4+1];i!==void 0&&o!==void 0&&(e[r*2]=i,e[r*2+1]=o)}return e}getClusterPositions(){if(this._isDestroyed||!this.reglInstance||!this.clusters)return[];if(this.graph.pointClusters===void 0||this.clusters.clusterCount===void 0)return[];this.clusters.calculateCentermass();const e=[],n=Ht(this.reglInstance,this.clusters.centermassFbo);e.length=this.clusters.clusterCount*2;for(let r=0;r<e.length/2;r+=1){const i=n[r*4+0],o=n[r*4+1],u=n[r*4+2];i!==void 0&&o!==void 0&&u!==void 0&&(e[r*2]=i/u,e[r*2+1]=o/u)}return e}fitView(e=250,n=.1){this._isDestroyed||this.setZoomTransformByPointPositions(this.getPointPositions(),e,void 0,n)}fitViewByPointIndices(e,n=250,r=.1){if(this._isDestroyed)return;const i=this.getPointPositions(),o=new Array(e.length*2);for(const[u,s]of e.entries())o[u*2]=i[s*2],o[u*2+1]=i[s*2+1];this.setZoomTransformByPointPositions(o,n,void 0,r)}fitViewByPointPositions(e,n=250,r=.1){this._isDestroyed||this.setZoomTransformByPointPositions(e,n,void 0,r)}getPointsInRect(e){if(this._isDestroyed||!this.reglInstance||!this.points)return new Float32Array;const n=this.store.screenSize[1];return this.store.selectedArea=[[e[0][0],n-e[1][1]],[e[1][0],n-e[0][1]]],this.points.findPointsOnAreaSelection(),Ht(this.reglInstance,this.points.selectedFbo).map((i,o)=>o%4===0&&i!==0?o/4:-1).filter(i=>i!==-1)}getPointsInRange(e){return this.getPointsInRect(e)}getPointsInPolygon(e){if(this._isDestroyed||!this.reglInstance||!this.points)return new Float32Array;if(e.length<3)return new Float32Array;const n=this.store.screenSize[1],r=e.map(([o,u])=>[o,n-u]);return this.points.updatePolygonPath(r),this.points.findPointsOnPolygonSelection(),Ht(this.reglInstance,this.points.selectedFbo).map((o,u)=>u%4===0&&o!==0?u/4:-1).filter(o=>o!==-1)}selectPointsInRect(e){if(!(this._isDestroyed||!this.reglInstance||!this.points)){if(e){const n=this.store.screenSize[1];this.store.selectedArea=[[e[0][0],n-e[1][1]],[e[1][0],n-e[0][1]]],this.points.findPointsOnAreaSelection();const r=Ht(this.reglInstance,this.points.selectedFbo);this.store.selectedIndices=r.map((i,o)=>o%4===0&&i!==0?o/4:-1).filter(i=>i!==-1)}else this.store.selectedIndices=null;this.points.updateGreyoutStatus()}}selectPointsInRange(e){return this.selectPointsInRect(e)}selectPointsInPolygon(e){if(!(this._isDestroyed||!this.reglInstance||!this.points)){if(e){if(e.length<3){console.warn("Polygon path requires at least 3 points to form a polygon.");return}const n=this.store.screenSize[1],r=e.map(([o,u])=>[o,n-u]);this.points.updatePolygonPath(r),this.points.findPointsOnPolygonSelection();const i=Ht(this.reglInstance,this.points.selectedFbo);this.store.selectedIndices=i.map((o,u)=>u%4===0&&o!==0?u/4:-1).filter(o=>o!==-1)}else this.store.selectedIndices=null;this.points.updateGreyoutStatus()}}selectPointByIndex(e,n=!1){if(!this._isDestroyed)if(n){const r=this.graph.getAdjacentIndices(e)??[];this.selectPointsByIndices([e,...r])}else this.selectPointsByIndices([e])}selectPointsByIndices(e){this._isDestroyed||!this.points||(e?e.length===0?this.store.selectedIndices=new Float32Array:this.store.selectedIndices=new Float32Array(e.filter(n=>n!==void 0)):this.store.selectedIndices=null,this.points.updateGreyoutStatus())}unselectPoints(){this._isDestroyed||!this.points||(this.store.selectedIndices=null,this.points.updateGreyoutStatus())}getSelectedIndices(){if(this._isDestroyed)return null;const{selectedIndices:e}=this.store;return e?Array.from(e):null}getAdjacentIndices(e){if(!this._isDestroyed)return this.graph.getAdjacentIndices(e)}spaceToScreenPosition(e){return this._isDestroyed?[0,0]:this.zoomInstance.convertSpaceToScreenPosition(e)}screenToSpacePosition(e){return this._isDestroyed?[0,0]:this.zoomInstance.convertScreenToSpacePosition(e)}spaceToScreenRadius(e){return this._isDestroyed?0:this.zoomInstance.convertSpaceToScreenRadius(e)}getPointRadiusByIndex(e){var n;if(!this._isDestroyed)return(n=this.graph.pointSizes)==null?void 0:n[e]}trackPointPositionsByIndices(e){this._isDestroyed||!this.points||this.points.trackPointsByIndices(e)}getTrackedPointPositionsMap(){return this._isDestroyed||!this.points?new Map:this.points.getTrackedPositionsMap()}getSampledPointPositionsMap(){return this._isDestroyed||!this.points?new Map:this.points.getSampledPointPositionsMap()}getScaleX(){if(!(this._isDestroyed||!this.points))return this.points.scaleX}getScaleY(){if(!(this._isDestroyed||!this.points))return this.points.scaleY}start(e=1){var n,r;this._isDestroyed||this.graph.pointsNumber&&(this.store.isSimulationRunning=!0,this.store.alpha=e,this.store.simulationProgress=0,(r=(n=this.config).onSimulationStart)==null||r.call(n),this.stopFrames(),this.frame())}pause(){var e,n;this._isDestroyed||(this.store.isSimulationRunning=!1,(n=(e=this.config).onSimulationPause)==null||n.call(e))}restart(){var e,n;this._isDestroyed||(this.store.isSimulationRunning=!0,(n=(e=this.config).onSimulationRestart)==null||n.call(e))}step(){this._isDestroyed||(this.store.isSimulationRunning=!1,this.stopFrames(),this.frame())}destroy(){var e,n,r,i;this._isDestroyed||!this.reglInstance||(window.clearTimeout(this._fitViewOnInitTimeoutID),this.stopFrames(),this.canvasD3Selection&&this.canvasD3Selection.on("mouseenter.cosmos",null).on("mousemove.cosmos",null).on("mouseleave.cosmos",null).on("click",null).on("mousemove",null).on("contextmenu",null).on(".drag",null).on(".zoom",null),wt(document).on("keydown.cosmos",null).on("keyup.cosmos",null),(e=this.zoomInstance)!=null&&e.behavior&&this.zoomInstance.behavior.on("start.detect",null).on("zoom.detect",null).on("end.detect",null),(n=this.dragInstance)!=null&&n.behavior&&this.dragInstance.behavior.on("start.detect",null).on("drag.detect",null).on("end.detect",null),(r=this.fpsMonitor)==null||r.destroy(),this.reglInstance.destroy(),this.reglInstance.clear({color:this.store.backgroundColor,depth:1,stencil:0}),this.canvas&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas),this.attributionDivElement&&this.attributionDivElement.parentNode&&this.attributionDivElement.parentNode.removeChild(this.attributionDivElement),(i=document.getElementById("gl-bench-style"))==null||i.remove(),this.canvasD3Selection=void 0,this.reglInstance=void 0,this.attributionDivElement=void 0,this._isDestroyed=!0)}create(){var e,n,r,i,o;this._isDestroyed||!this.points||!this.lines||(this._needsPointPositionsUpdate&&this.points.updatePositions(),this._needsPointColorUpdate&&this.points.updateColor(),this._needsPointSizeUpdate&&this.points.updateSize(),this._needsLinksUpdate&&this.lines.updatePointsBuffer(),this._needsLinkColorUpdate&&this.lines.updateColor(),this._needsLinkWidthUpdate&&this.lines.updateWidth(),this._needsLinkArrowUpdate&&this.lines.updateArrow(),this._needsForceManyBodyUpdate&&((e=this.forceManyBody)==null||e.create()),this._needsForceLinkUpdate&&((n=this.forceLinkIncoming)==null||n.create(bo.INCOMING),(r=this.forceLinkOutgoing)==null||r.create(bo.OUTGOING)),this._needsForceCenterUpdate&&((i=this.forceCenter)==null||i.create()),this._needsPointClusterUpdate&&((o=this.clusters)==null||o.create()),this._needsPointPositionsUpdate=!1,this._needsPointColorUpdate=!1,this._needsPointSizeUpdate=!1,this._needsLinksUpdate=!1,this._needsLinkColorUpdate=!1,this._needsLinkWidthUpdate=!1,this._needsLinkArrowUpdate=!1,this._needsPointClusterUpdate=!1,this._needsForceManyBodyUpdate=!1,this._needsForceLinkUpdate=!1,this._needsForceCenterUpdate=!1)}flatten(e){return e.flat()}pair(e){const n=new Array(e.length/2);for(let r=0;r<e.length/2;r++)n[r]=[e[r*2],e[r*2+1]];return n}update(e=this.store.alpha){const{graph:n}=this;this.store.pointsTextureSize=Math.ceil(Math.sqrt(n.pointsNumber??0)),this.store.linksTextureSize=Math.ceil(Math.sqrt((n.linksNumber??0)*2)),this.create(),this.initPrograms(),this.store.hoveredPoint=void 0,this.start(e)}initPrograms(){var e,n,r,i,o,u;this._isDestroyed||!this.points||!this.lines||!this.clusters||(this.points.initPrograms(),this.lines.initPrograms(),(e=this.forceGravity)==null||e.initPrograms(),(n=this.forceLinkIncoming)==null||n.initPrograms(),(r=this.forceLinkOutgoing)==null||r.initPrograms(),(i=this.forceMouse)==null||i.initPrograms(),(o=this.forceManyBody)==null||o.initPrograms(),(u=this.forceCenter)==null||u.initPrograms(),this.clusters.initPrograms())}frame(){const{config:{simulationGravity:e,simulationCenter:n,renderLinks:r,enableSimulation:i},store:{alpha:o,isSimulationRunning:u}}=this;o<Lo&&u&&this.end(),this.store.pointsTextureSize&&(this.requestAnimationFrameId=window.requestAnimationFrame(s=>{var f,l,v,b,S,D,Z,we,Se,ae,Ne,je,W,ce,Le,Me,Xe,et,nt,ke,it,tt,G,Ae,oe,Pe;(f=this.fpsMonitor)==null||f.begin(),this.resizeCanvas(),this.dragInstance.isActive||this.findHoveredPoint(),i&&(this.isRightClickMouse&&this.config.enableRightClickRepulsion&&((l=this.forceMouse)==null||l.run(),(v=this.points)==null||v.updatePosition()),u&&!(this.zoomInstance.isRunning&&!this.config.enableSimulationDuringZoom)&&(e&&((b=this.forceGravity)==null||b.run(),(S=this.points)==null||S.updatePosition()),n&&((D=this.forceCenter)==null||D.run(),(Z=this.points)==null||Z.updatePosition()),(we=this.forceManyBody)==null||we.run(),(Se=this.points)==null||Se.updatePosition(),this.store.linksTextureSize&&((ae=this.forceLinkIncoming)==null||ae.run(),(Ne=this.points)==null||Ne.updatePosition(),(je=this.forceLinkOutgoing)==null||je.run(),(W=this.points)==null||W.updatePosition()),(this.graph.pointClusters||this.graph.clusterPositions)&&((ce=this.clusters)==null||ce.run(),(Le=this.points)==null||Le.updatePosition()),this.store.alpha+=this.store.addAlpha(this.config.simulationDecay??Be.simulation.decay),this.isRightClickMouse&&this.config.enableRightClickRepulsion&&(this.store.alpha=Math.max(this.store.alpha,.1)),this.store.simulationProgress=Math.sqrt(Math.min(1,Lo/this.store.alpha)),(nt=(et=this.config).onSimulationTick)==null||nt.call(et,this.store.alpha,(Me=this.store.hoveredPoint)==null?void 0:Me.index,(Xe=this.store.hoveredPoint)==null?void 0:Xe.position)),(ke=this.points)==null||ke.trackPoints()),(it=this.reglInstance)==null||it.clear({color:this.store.backgroundColor,depth:1,stencil:0}),r&&this.store.linksTextureSize&&((tt=this.lines)==null||tt.draw()),(G=this.points)==null||G.draw(),this.dragInstance.isActive&&((Ae=this.points)==null||Ae.drag(),(oe=this.points)==null||oe.drag()),(Pe=this.fpsMonitor)==null||Pe.end(s),this.currentEvent=void 0,this.frame()}))}stopFrames(){this.requestAnimationFrameId&&window.cancelAnimationFrame(this.requestAnimationFrameId)}end(){var e,n;this.store.isSimulationRunning=!1,this.store.simulationProgress=1,(n=(e=this.config).onSimulationEnd)==null||n.call(e)}onClick(e){var n,r,i,o;(o=(i=this.config).onClick)==null||o.call(i,(n=this.store.hoveredPoint)==null?void 0:n.index,(r=this.store.hoveredPoint)==null?void 0:r.position,e)}updateMousePosition(e){if(!e)return;const n=e.offsetX??e.x,r=e.offsetY??e.y;n===void 0||r===void 0||(this.store.mousePosition=this.zoomInstance.convertScreenToSpacePosition([n,r]),this.store.screenMousePosition=[n,this.store.screenSize[1]-r])}onMouseMove(e){var n,r,i,o;this.currentEvent=e,this.updateMousePosition(e),this.isRightClickMouse=e.which===3,(o=(i=this.config).onMouseMove)==null||o.call(i,(n=this.store.hoveredPoint)==null?void 0:n.index,(r=this.store.hoveredPoint)==null?void 0:r.position,this.currentEvent)}onRightClickMouse(e){e.preventDefault()}resizeCanvas(e=!1){var u,s,f;const n=this.canvas.width,r=this.canvas.height,i=this.canvas.clientWidth,o=this.canvas.clientHeight;if(e||n!==i*this.config.pixelRatio||r!==o*this.config.pixelRatio){const[l,v]=this.store.screenSize,{k:b}=this.zoomInstance.eventTransform,S=this.zoomInstance.convertScreenToSpacePosition([l/2,v/2]);this.store.updateScreenSize(i,o),this.canvas.width=i*this.config.pixelRatio,this.canvas.height=o*this.config.pixelRatio,(u=this.reglInstance)==null||u.poll(),(s=this.canvasD3Selection)==null||s.call(this.zoomInstance.behavior.transform,this.zoomInstance.getTransform([S],b)),(f=this.points)==null||f.updateSampledPointsGrid()}}setZoomTransformByPointPositions(e,n=250,r,i){var u;this.resizeCanvas();const o=this.zoomInstance.getTransform(this.pair(e),r,i);(u=this.canvasD3Selection)==null||u.transition().ease(Nd).duration(n).call(this.zoomInstance.behavior.transform,o)}updateZoomDragBehaviors(){var e,n,r,i;this.config.enableDrag?(e=this.canvasD3Selection)==null||e.call(this.dragInstance.behavior):(n=this.canvasD3Selection)==null||n.call(this.dragInstance.behavior).on(".drag",null),this.config.enableZoom?(r=this.canvasD3Selection)==null||r.call(this.zoomInstance.behavior):(i=this.canvasD3Selection)==null||i.call(this.zoomInstance.behavior).on("wheel.zoom",null)}findHoveredPoint(){var o,u,s,f,l;if(!this._isMouseOnCanvas||!this.reglInstance||!this.points)return;if(this._findHoveredPointExecutionCount<2){this._findHoveredPointExecutionCount+=1;return}this._findHoveredPointExecutionCount=0,this.points.findHoveredPoint();let e=!1,n=!1;const r=Ht(this.reglInstance,this.points.hoveredFbo);if(r[1]){const v=r[0];((o=this.store.hoveredPoint)==null?void 0:o.index)!==v&&(e=!0);const b=r[2],S=r[3];this.store.hoveredPoint={index:v,position:[b,S]}}else this.store.hoveredPoint&&(n=!0),this.store.hoveredPoint=void 0;e&&this.store.hoveredPoint&&((s=(u=this.config).onPointMouseOver)==null||s.call(u,this.store.hoveredPoint.index,this.store.hoveredPoint.position,this.currentEvent)),n&&((l=(f=this.config).onPointMouseOut)==null||l.call(f,this.currentEvent)),this.updateCanvasCursor()}updateCanvasCursor(){const{hoveredPointCursor:e}=this.config;this.dragInstance.isActive?wt(this.canvas).style("cursor","grabbing"):this.store.hoveredPoint?!this.config.enableDrag||this.store.isSpaceKeyPressed?wt(this.canvas).style("cursor",e):wt(this.canvas).style("cursor","grab"):wt(this.canvas).style("cursor",null)}addAttribution(){var e;this.config.attribution&&(this.attributionDivElement=document.createElement("div"),this.attributionDivElement.style.cssText=`
|
|
1334
|
+
`,e.textContent="Sorry, your device or browser does not support the required WebGL features for this visualization",t.appendChild(e),e}class Eg{constructor(e,n){this.config=new o0,this.graph=new k0(this.config),this.requestAnimationFrameId=0,this.isRightClickMouse=!1,this.store=new ug,this.zoomInstance=new Tg(this.store,this.config),this.dragInstance=new wg(this.store,this.config),this._findHoveredPointExecutionCount=0,this._isMouseOnCanvas=!1,this._isFirstRenderAfterInit=!0,this._needsPointPositionsUpdate=!1,this._needsPointColorUpdate=!1,this._needsPointSizeUpdate=!1,this._needsLinksUpdate=!1,this._needsLinkColorUpdate=!1,this._needsLinkWidthUpdate=!1,this._needsLinkArrowUpdate=!1,this._needsPointClusterUpdate=!1,this._needsForceManyBodyUpdate=!1,this._needsForceLinkUpdate=!1,this._needsForceCenterUpdate=!1,this._isDestroyed=!1,n&&this.config.init(n),this.store.div=e;const r=document.createElement("canvas");r.style.width="100%",r.style.height="100%",this.store.div.appendChild(r),this.addAttribution();const i=r.clientWidth,o=r.clientHeight;r.width=i*this.config.pixelRatio,r.height=o*this.config.pixelRatio,this.canvas=r;let s;try{s=Tp({canvas:this.canvas,attributes:{antialias:!1,preserveDrawingBuffer:!0},extensions:["OES_texture_float","ANGLE_instanced_arrays"]})}catch{Ag(this.store.div),this._isDestroyed=!0;return}this.reglInstance=s,this.store.adjustSpaceSize(this.config.spaceSize,this.reglInstance.limits.maxTextureSize),this.store.updateScreenSize(i,o),this.canvasD3Selection=Dt(this.canvas),this.canvasD3Selection.on("mouseenter.cosmos",()=>{this._isMouseOnCanvas=!0}).on("mousemove.cosmos",()=>{this._isMouseOnCanvas=!0}).on("mouseleave.cosmos",()=>{this._isMouseOnCanvas=!1}),Dt(document).on("keydown.cosmos",f=>{f.code==="Space"&&(this.store.isSpaceKeyPressed=!0)}).on("keyup.cosmos",f=>{f.code==="Space"&&(this.store.isSpaceKeyPressed=!1)}),this.zoomInstance.behavior.on("start.detect",f=>{this.currentEvent=f}).on("zoom.detect",f=>{!!f.sourceEvent&&this.updateMousePosition(f.sourceEvent),this.currentEvent=f}).on("end.detect",f=>{this.currentEvent=f}),this.dragInstance.behavior.on("start.detect",f=>{this.currentEvent=f,this.updateCanvasCursor()}).on("drag.detect",f=>{this.dragInstance.isActive&&this.updateMousePosition(f),this.currentEvent=f}).on("end.detect",f=>{this.currentEvent=f,this.updateCanvasCursor()}),this.canvasD3Selection.call(this.dragInstance.behavior).call(this.zoomInstance.behavior).on("click",this.onClick.bind(this)).on("mousemove",this.onMouseMove.bind(this)).on("contextmenu",this.onRightClickMouse.bind(this)),(!this.config.enableZoom||!this.config.enableDrag)&&this.updateZoomDragBehaviors(),this.setZoomLevel(this.config.initialZoomLevel??1),this.store.maxPointSize=(this.reglInstance.limits.pointSizeDims[1]??ns)/this.config.pixelRatio,this.points=new _v(this.reglInstance,this.config,this.store,this.graph),this.lines=new sv(this.reglInstance,this.config,this.store,this.graph,this.points),this.config.enableSimulation&&(this.forceGravity=new c0(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceCenter=new u0(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceManyBody=this.config.useClassicQuadtree?new g0(this.reglInstance,this.config,this.store,this.graph,this.points):new p0(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceLinkIncoming=new vu(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceLinkOutgoing=new vu(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceMouse=new x0(this.reglInstance,this.config,this.store,this.graph,this.points)),this.clusters=new T0(this.reglInstance,this.config,this.store,this.graph,this.points),this.store.backgroundColor=Vn(this.config.backgroundColor),this.config.hoveredPointRingColor&&this.store.setHoveredPointRingColor(this.config.hoveredPointRingColor),this.config.focusedPointRingColor&&this.store.setFocusedPointRingColor(this.config.focusedPointRingColor),this.config.focusedPointIndex!==void 0&&this.store.setFocusedPoint(this.config.focusedPointIndex),this.config.pointGreyoutColor&&this.store.setGreyoutPointColor(this.config.pointGreyoutColor),this.config.showFPSMonitor&&(this.fpsMonitor=new bu(this.canvas)),this.config.randomSeed!==void 0&&this.store.addRandomSeed(this.config.randomSeed)}get progress(){return this._isDestroyed?0:this.store.simulationProgress}get isSimulationRunning(){return this._isDestroyed?!1:this.store.isSimulationRunning}get maxPointSize(){return this._isDestroyed?0:this.store.maxPointSize}setConfig(e){var r;if(this._isDestroyed||!this.reglInstance||!this.points||!this.lines||!this.clusters)return;const n={...this.config};this.config.init(e),n.pointColor!==this.config.pointColor&&(this.graph.updatePointColor(),this.points.updateColor()),n.pointSize!==this.config.pointSize&&(this.graph.updatePointSize(),this.points.updateSize()),n.linkColor!==this.config.linkColor&&(this.graph.updateLinkColor(),this.lines.updateColor()),n.linkWidth!==this.config.linkWidth&&(this.graph.updateLinkWidth(),this.lines.updateWidth()),n.linkArrows!==this.config.linkArrows&&(this.graph.updateArrows(),this.lines.updateArrow()),(n.curvedLinkSegments!==this.config.curvedLinkSegments||n.curvedLinks!==this.config.curvedLinks)&&this.lines.updateCurveLineGeometry(),n.backgroundColor!==this.config.backgroundColor&&(this.store.backgroundColor=Vn(this.config.backgroundColor)),n.hoveredPointRingColor!==this.config.hoveredPointRingColor&&this.store.setHoveredPointRingColor(this.config.hoveredPointRingColor),n.focusedPointRingColor!==this.config.focusedPointRingColor&&this.store.setFocusedPointRingColor(this.config.focusedPointRingColor),n.pointGreyoutColor!==this.config.pointGreyoutColor&&this.store.setGreyoutPointColor(this.config.pointGreyoutColor),n.focusedPointIndex!==this.config.focusedPointIndex&&this.store.setFocusedPoint(this.config.focusedPointIndex),(n.spaceSize!==this.config.spaceSize||n.simulationRepulsionQuadtreeLevels!==this.config.simulationRepulsionQuadtreeLevels)&&(this.store.adjustSpaceSize(this.config.spaceSize,this.reglInstance.limits.maxTextureSize),this.resizeCanvas(!0),this.update(this.store.isSimulationRunning?this.store.alpha:0)),n.showFPSMonitor!==this.config.showFPSMonitor&&(this.config.showFPSMonitor?this.fpsMonitor=new bu(this.canvas):((r=this.fpsMonitor)==null||r.destroy(),this.fpsMonitor=void 0)),n.pixelRatio!==this.config.pixelRatio&&(this.store.maxPointSize=(this.reglInstance.limits.pointSizeDims[1]??ns)/this.config.pixelRatio),(n.enableZoom!==this.config.enableZoom||n.enableDrag!==this.config.enableDrag)&&this.updateZoomDragBehaviors()}setPointPositions(e,n){this._isDestroyed||!this.points||(this.graph.inputPointPositions=e,this.points.dontRescale=n,this._needsPointPositionsUpdate=!0,this._needsLinksUpdate=!0,this._needsPointColorUpdate=!0,this._needsPointSizeUpdate=!0,this._needsPointClusterUpdate=!0,this._needsForceManyBodyUpdate=!0,this._needsForceLinkUpdate=!0,this._needsForceCenterUpdate=!0)}setPointColors(e){this._isDestroyed||(this.graph.inputPointColors=e,this._needsPointColorUpdate=!0)}getPointColors(){return this._isDestroyed?new Float32Array:this.graph.pointColors??new Float32Array}setPointSizes(e){this._isDestroyed||(this.graph.inputPointSizes=e,this._needsPointSizeUpdate=!0)}getPointSizes(){return this._isDestroyed?new Float32Array:this.graph.pointSizes??new Float32Array}setLinks(e){this._isDestroyed||(this.graph.inputLinks=e,this._needsLinksUpdate=!0,this._needsLinkColorUpdate=!0,this._needsLinkWidthUpdate=!0,this._needsLinkArrowUpdate=!0,this._needsForceLinkUpdate=!0)}setLinkColors(e){this._isDestroyed||(this.graph.inputLinkColors=e,this._needsLinkColorUpdate=!0)}getLinkColors(){return this._isDestroyed?new Float32Array:this.graph.linkColors??new Float32Array}setLinkWidths(e){this._isDestroyed||(this.graph.inputLinkWidths=e,this._needsLinkWidthUpdate=!0)}getLinkWidths(){return this._isDestroyed?new Float32Array:this.graph.linkWidths??new Float32Array}setLinkArrows(e){this._isDestroyed||(this.graph.linkArrowsBoolean=e,this._needsLinkArrowUpdate=!0)}setLinkStrength(e){this._isDestroyed||(this.graph.inputLinkStrength=e,this._needsForceLinkUpdate=!0)}setPointClusters(e){this._isDestroyed||(this.graph.inputPointClusters=e,this._needsPointClusterUpdate=!0)}setClusterPositions(e){this._isDestroyed||(this.graph.inputClusterPositions=e,this._needsPointClusterUpdate=!0)}setPointClusterStrength(e){this._isDestroyed||(this.graph.inputClusterStrength=e,this._needsPointClusterUpdate=!0)}render(e){if(this._isDestroyed||!this.reglInstance)return;this.graph.update();const{fitViewOnInit:n,fitViewDelay:r,fitViewPadding:i,fitViewDuration:o,fitViewByPointsInRect:s,initialZoomLevel:f}=this.config;if(!this.graph.pointsNumber&&!this.graph.linksNumber){this.stopFrames(),Dt(this.canvas).style("cursor",null),this.reglInstance.clear({color:this.store.backgroundColor,depth:1,stencil:0});return}this._isFirstRenderAfterInit&&n&&f===void 0&&(this._fitViewOnInitTimeoutID=window.setTimeout(()=>{s?this.setZoomTransformByPointPositions(s,o,void 0,i):this.fitView(o,i)},r)),this._isFirstRenderAfterInit=!1,this.update(e)}zoomToPointByIndex(e,n=700,r=Op,i=!0){if(this._isDestroyed||!this.reglInstance||!this.points||!this.canvasD3Selection)return;const{store:{screenSize:o}}=this,s=tn(this.reglInstance,this.points.currentPositionFbo);if(e===void 0)return;const f=s[e*4+0],u=s[e*4+1];if(f===void 0||u===void 0)return;const l=this.zoomInstance.getDistanceToPoint([f,u]),v=i?r:Math.max(this.getZoomLevel(),r);if(l<Math.min(o[0],o[1]))this.setZoomTransformByPointPositions([f,u],n,v);else{const b=this.zoomInstance.getTransform([[f,u]],v),S=this.zoomInstance.getMiddlePointTransform([f,u]);this.canvasD3Selection.transition().ease(hp).duration(n/2).call(this.zoomInstance.behavior.transform,S).transition().ease(dp).duration(n/2).call(this.zoomInstance.behavior.transform,b)}}zoom(e,n=0){this._isDestroyed||this.setZoomLevel(e,n)}setZoomLevel(e,n=0){this._isDestroyed||!this.canvasD3Selection||(n===0?this.canvasD3Selection.call(this.zoomInstance.behavior.scaleTo,e):this.canvasD3Selection.transition().duration(n).call(this.zoomInstance.behavior.scaleTo,e))}getZoomLevel(){return this._isDestroyed?0:this.zoomInstance.eventTransform.k}getPointPositions(){if(this._isDestroyed||!this.reglInstance||!this.points)return[];if(this.graph.pointsNumber===void 0)return[];const e=[],n=tn(this.reglInstance,this.points.currentPositionFbo);e.length=this.graph.pointsNumber*2;for(let r=0;r<this.graph.pointsNumber;r+=1){const i=n[r*4+0],o=n[r*4+1];i!==void 0&&o!==void 0&&(e[r*2]=i,e[r*2+1]=o)}return e}getClusterPositions(){if(this._isDestroyed||!this.reglInstance||!this.clusters)return[];if(this.graph.pointClusters===void 0||this.clusters.clusterCount===void 0)return[];this.clusters.calculateCentermass();const e=[],n=tn(this.reglInstance,this.clusters.centermassFbo);e.length=this.clusters.clusterCount*2;for(let r=0;r<e.length/2;r+=1){const i=n[r*4+0],o=n[r*4+1],s=n[r*4+2];i!==void 0&&o!==void 0&&s!==void 0&&(e[r*2]=i/s,e[r*2+1]=o/s)}return e}fitView(e=250,n=.1){this._isDestroyed||this.setZoomTransformByPointPositions(this.getPointPositions(),e,void 0,n)}fitViewByPointIndices(e,n=250,r=.1){if(this._isDestroyed)return;const i=this.getPointPositions(),o=new Array(e.length*2);for(const[s,f]of e.entries())o[s*2]=i[f*2],o[s*2+1]=i[f*2+1];this.setZoomTransformByPointPositions(o,n,void 0,r)}fitViewByPointPositions(e,n=250,r=.1){this._isDestroyed||this.setZoomTransformByPointPositions(e,n,void 0,r)}getPointsInRect(e){if(this._isDestroyed||!this.reglInstance||!this.points)return new Float32Array;const n=this.store.screenSize[1];return this.store.selectedArea=[[e[0][0],n-e[1][1]],[e[1][0],n-e[0][1]]],this.points.findPointsOnAreaSelection(),tn(this.reglInstance,this.points.selectedFbo).map((i,o)=>o%4===0&&i!==0?o/4:-1).filter(i=>i!==-1)}getPointsInRange(e){return this.getPointsInRect(e)}getPointsInPolygon(e){if(this._isDestroyed||!this.reglInstance||!this.points)return new Float32Array;if(e.length<3)return new Float32Array;const n=this.store.screenSize[1],r=e.map(([o,s])=>[o,n-s]);return this.points.updatePolygonPath(r),this.points.findPointsOnPolygonSelection(),tn(this.reglInstance,this.points.selectedFbo).map((o,s)=>s%4===0&&o!==0?s/4:-1).filter(o=>o!==-1)}selectPointsInRect(e){if(!(this._isDestroyed||!this.reglInstance||!this.points)){if(e){const n=this.store.screenSize[1];this.store.selectedArea=[[e[0][0],n-e[1][1]],[e[1][0],n-e[0][1]]],this.points.findPointsOnAreaSelection();const r=tn(this.reglInstance,this.points.selectedFbo);this.store.selectedIndices=r.map((i,o)=>o%4===0&&i!==0?o/4:-1).filter(i=>i!==-1)}else this.store.selectedIndices=null;this.points.updateGreyoutStatus()}}selectPointsInRange(e){return this.selectPointsInRect(e)}selectPointsInPolygon(e){if(!(this._isDestroyed||!this.reglInstance||!this.points)){if(e){if(e.length<3){console.warn("Polygon path requires at least 3 points to form a polygon.");return}const n=this.store.screenSize[1],r=e.map(([o,s])=>[o,n-s]);this.points.updatePolygonPath(r),this.points.findPointsOnPolygonSelection();const i=tn(this.reglInstance,this.points.selectedFbo);this.store.selectedIndices=i.map((o,s)=>s%4===0&&o!==0?s/4:-1).filter(o=>o!==-1)}else this.store.selectedIndices=null;this.points.updateGreyoutStatus()}}selectPointByIndex(e,n=!1){if(!this._isDestroyed)if(n){const r=this.graph.getAdjacentIndices(e)??[];this.selectPointsByIndices([e,...r])}else this.selectPointsByIndices([e])}selectPointsByIndices(e){this._isDestroyed||!this.points||(e?e.length===0?this.store.selectedIndices=new Float32Array:this.store.selectedIndices=new Float32Array(e.filter(n=>n!==void 0)):this.store.selectedIndices=null,this.points.updateGreyoutStatus())}unselectPoints(){this._isDestroyed||!this.points||(this.store.selectedIndices=null,this.points.updateGreyoutStatus())}getSelectedIndices(){if(this._isDestroyed)return null;const{selectedIndices:e}=this.store;return e?Array.from(e):null}getAdjacentIndices(e){if(!this._isDestroyed)return this.graph.getAdjacentIndices(e)}spaceToScreenPosition(e){return this._isDestroyed?[0,0]:this.zoomInstance.convertSpaceToScreenPosition(e)}screenToSpacePosition(e){return this._isDestroyed?[0,0]:this.zoomInstance.convertScreenToSpacePosition(e)}spaceToScreenRadius(e){return this._isDestroyed?0:this.zoomInstance.convertSpaceToScreenRadius(e)}getPointRadiusByIndex(e){var n;if(!this._isDestroyed)return(n=this.graph.pointSizes)==null?void 0:n[e]}trackPointPositionsByIndices(e){this._isDestroyed||!this.points||this.points.trackPointsByIndices(e)}getTrackedPointPositionsMap(){return this._isDestroyed||!this.points?new Map:this.points.getTrackedPositionsMap()}getTrackedPointPositionsArray(){return this._isDestroyed||!this.points?[]:this.points.getTrackedPositionsArray()}getSampledPointPositionsMap(){return this._isDestroyed||!this.points?new Map:this.points.getSampledPointPositionsMap()}getSampledPoints(){return this._isDestroyed||!this.points?{indices:[],positions:[]}:this.points.getSampledPoints()}getScaleX(){if(!(this._isDestroyed||!this.points))return this.points.scaleX}getScaleY(){if(!(this._isDestroyed||!this.points))return this.points.scaleY}start(e=1){var n,r;this._isDestroyed||this.graph.pointsNumber&&(e>0&&(this.store.isSimulationRunning=!0,this.store.simulationProgress=0,(r=(n=this.config).onSimulationStart)==null||r.call(n)),this.store.alpha=e,this.stopFrames(),this.frame())}pause(){var e,n;this._isDestroyed||(this.store.isSimulationRunning=!1,(n=(e=this.config).onSimulationPause)==null||n.call(e))}restart(){var e,n;this._isDestroyed||(this.store.isSimulationRunning=!0,(n=(e=this.config).onSimulationRestart)==null||n.call(e))}step(){this._isDestroyed||(this.store.isSimulationRunning=!1,this.stopFrames(),this.frame())}destroy(){var e,n,r,i;this._isDestroyed||!this.reglInstance||(window.clearTimeout(this._fitViewOnInitTimeoutID),this.stopFrames(),this.canvasD3Selection&&this.canvasD3Selection.on("mouseenter.cosmos",null).on("mousemove.cosmos",null).on("mouseleave.cosmos",null).on("click",null).on("mousemove",null).on("contextmenu",null).on(".drag",null).on(".zoom",null),Dt(document).on("keydown.cosmos",null).on("keyup.cosmos",null),(e=this.zoomInstance)!=null&&e.behavior&&this.zoomInstance.behavior.on("start.detect",null).on("zoom.detect",null).on("end.detect",null),(n=this.dragInstance)!=null&&n.behavior&&this.dragInstance.behavior.on("start.detect",null).on("drag.detect",null).on("end.detect",null),(r=this.fpsMonitor)==null||r.destroy(),this.reglInstance.destroy(),this.reglInstance.clear({color:this.store.backgroundColor,depth:1,stencil:0}),this.canvas&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas),this.attributionDivElement&&this.attributionDivElement.parentNode&&this.attributionDivElement.parentNode.removeChild(this.attributionDivElement),(i=document.getElementById("gl-bench-style"))==null||i.remove(),this.canvasD3Selection=void 0,this.reglInstance=void 0,this.attributionDivElement=void 0,this._isDestroyed=!0)}create(){var e,n,r,i,o;this._isDestroyed||!this.points||!this.lines||(this._needsPointPositionsUpdate&&this.points.updatePositions(),this._needsPointColorUpdate&&this.points.updateColor(),this._needsPointSizeUpdate&&this.points.updateSize(),this._needsLinksUpdate&&this.lines.updatePointsBuffer(),this._needsLinkColorUpdate&&this.lines.updateColor(),this._needsLinkWidthUpdate&&this.lines.updateWidth(),this._needsLinkArrowUpdate&&this.lines.updateArrow(),this._needsForceManyBodyUpdate&&((e=this.forceManyBody)==null||e.create()),this._needsForceLinkUpdate&&((n=this.forceLinkIncoming)==null||n.create(Ha.INCOMING),(r=this.forceLinkOutgoing)==null||r.create(Ha.OUTGOING)),this._needsForceCenterUpdate&&((i=this.forceCenter)==null||i.create()),this._needsPointClusterUpdate&&((o=this.clusters)==null||o.create()),this._needsPointPositionsUpdate=!1,this._needsPointColorUpdate=!1,this._needsPointSizeUpdate=!1,this._needsLinksUpdate=!1,this._needsLinkColorUpdate=!1,this._needsLinkWidthUpdate=!1,this._needsLinkArrowUpdate=!1,this._needsPointClusterUpdate=!1,this._needsForceManyBodyUpdate=!1,this._needsForceLinkUpdate=!1,this._needsForceCenterUpdate=!1)}flatten(e){return e.flat()}pair(e){const n=new Array(e.length/2);for(let r=0;r<e.length/2;r++)n[r]=[e[r*2],e[r*2+1]];return n}update(e=this.store.alpha){const{graph:n}=this;this.store.pointsTextureSize=Math.ceil(Math.sqrt(n.pointsNumber??0)),this.store.linksTextureSize=Math.ceil(Math.sqrt((n.linksNumber??0)*2)),this.create(),this.initPrograms(),this.store.hoveredPoint=void 0,this.start(e)}initPrograms(){var e,n,r,i,o,s;this._isDestroyed||!this.points||!this.lines||!this.clusters||(this.points.initPrograms(),this.lines.initPrograms(),(e=this.forceGravity)==null||e.initPrograms(),(n=this.forceLinkIncoming)==null||n.initPrograms(),(r=this.forceLinkOutgoing)==null||r.initPrograms(),(i=this.forceMouse)==null||i.initPrograms(),(o=this.forceManyBody)==null||o.initPrograms(),(s=this.forceCenter)==null||s.initPrograms(),this.clusters.initPrograms())}frame(){const{config:{simulationGravity:e,simulationCenter:n,renderLinks:r,enableSimulation:i},store:{alpha:o,isSimulationRunning:s}}=this;o<ts&&s&&this.end(),this.store.pointsTextureSize&&(this.requestAnimationFrameId=window.requestAnimationFrame(f=>{var u,l,v,b,S,D,Y,Ee,Te,se,Ue,He,H,fe,Re,Ge,Ye,at,ut,Ae,lt,it,N,Ce,re,ke;(u=this.fpsMonitor)==null||u.begin(),this.resizeCanvas(),this.dragInstance.isActive||this.findHoveredPoint(),i&&(this.isRightClickMouse&&this.config.enableRightClickRepulsion&&((l=this.forceMouse)==null||l.run(),(v=this.points)==null||v.updatePosition()),s&&!(this.zoomInstance.isRunning&&!this.config.enableSimulationDuringZoom)&&(e&&((b=this.forceGravity)==null||b.run(),(S=this.points)==null||S.updatePosition()),n&&((D=this.forceCenter)==null||D.run(),(Y=this.points)==null||Y.updatePosition()),(Ee=this.forceManyBody)==null||Ee.run(),(Te=this.points)==null||Te.updatePosition(),this.store.linksTextureSize&&((se=this.forceLinkIncoming)==null||se.run(),(Ue=this.points)==null||Ue.updatePosition(),(He=this.forceLinkOutgoing)==null||He.run(),(H=this.points)==null||H.updatePosition()),(this.graph.pointClusters||this.graph.clusterPositions)&&((fe=this.clusters)==null||fe.run(),(Re=this.points)==null||Re.updatePosition()),this.store.alpha+=this.store.addAlpha(this.config.simulationDecay??We.simulation.decay),this.isRightClickMouse&&this.config.enableRightClickRepulsion&&(this.store.alpha=Math.max(this.store.alpha,.1)),this.store.simulationProgress=Math.sqrt(Math.min(1,ts/this.store.alpha)),(ut=(at=this.config).onSimulationTick)==null||ut.call(at,this.store.alpha,(Ge=this.store.hoveredPoint)==null?void 0:Ge.index,(Ye=this.store.hoveredPoint)==null?void 0:Ye.position)),(Ae=this.points)==null||Ae.trackPoints()),(lt=this.reglInstance)==null||lt.clear({color:this.store.backgroundColor,depth:1,stencil:0}),r&&this.store.linksTextureSize&&((it=this.lines)==null||it.draw()),(N=this.points)==null||N.draw(),this.dragInstance.isActive&&((Ce=this.points)==null||Ce.drag(),(re=this.points)==null||re.drag()),(ke=this.fpsMonitor)==null||ke.end(f),this.currentEvent=void 0,this.frame()}))}stopFrames(){this.requestAnimationFrameId&&window.cancelAnimationFrame(this.requestAnimationFrameId)}end(){var e,n;this.store.isSimulationRunning=!1,this.store.simulationProgress=1,(n=(e=this.config).onSimulationEnd)==null||n.call(e)}onClick(e){var n,r,i,o;(o=(i=this.config).onClick)==null||o.call(i,(n=this.store.hoveredPoint)==null?void 0:n.index,(r=this.store.hoveredPoint)==null?void 0:r.position,e)}updateMousePosition(e){if(!e)return;const n=e.offsetX??e.x,r=e.offsetY??e.y;n===void 0||r===void 0||(this.store.mousePosition=this.zoomInstance.convertScreenToSpacePosition([n,r]),this.store.screenMousePosition=[n,this.store.screenSize[1]-r])}onMouseMove(e){var n,r,i,o;this.currentEvent=e,this.updateMousePosition(e),this.isRightClickMouse=e.which===3,(o=(i=this.config).onMouseMove)==null||o.call(i,(n=this.store.hoveredPoint)==null?void 0:n.index,(r=this.store.hoveredPoint)==null?void 0:r.position,this.currentEvent)}onRightClickMouse(e){e.preventDefault()}resizeCanvas(e=!1){var s,f,u;const n=this.canvas.width,r=this.canvas.height,i=this.canvas.clientWidth,o=this.canvas.clientHeight;if(e||n!==i*this.config.pixelRatio||r!==o*this.config.pixelRatio){const[l,v]=this.store.screenSize,{k:b}=this.zoomInstance.eventTransform,S=this.zoomInstance.convertScreenToSpacePosition([l/2,v/2]);this.store.updateScreenSize(i,o),this.canvas.width=i*this.config.pixelRatio,this.canvas.height=o*this.config.pixelRatio,(s=this.reglInstance)==null||s.poll(),(f=this.canvasD3Selection)==null||f.call(this.zoomInstance.behavior.transform,this.zoomInstance.getTransform([S],b)),(u=this.points)==null||u.updateSampledPointsGrid()}}setZoomTransformByPointPositions(e,n=250,r,i){var s;this.resizeCanvas();const o=this.zoomInstance.getTransform(this.pair(e),r,i);(s=this.canvasD3Selection)==null||s.transition().ease(mp).duration(n).call(this.zoomInstance.behavior.transform,o)}updateZoomDragBehaviors(){var e,n,r,i;this.config.enableDrag?(e=this.canvasD3Selection)==null||e.call(this.dragInstance.behavior):(n=this.canvasD3Selection)==null||n.call(this.dragInstance.behavior).on(".drag",null),this.config.enableZoom?(r=this.canvasD3Selection)==null||r.call(this.zoomInstance.behavior):(i=this.canvasD3Selection)==null||i.call(this.zoomInstance.behavior).on("wheel.zoom",null)}findHoveredPoint(){var o,s,f,u,l;if(!this._isMouseOnCanvas||!this.reglInstance||!this.points)return;if(this._findHoveredPointExecutionCount<2){this._findHoveredPointExecutionCount+=1;return}this._findHoveredPointExecutionCount=0,this.points.findHoveredPoint();let e=!1,n=!1;const r=tn(this.reglInstance,this.points.hoveredFbo);if(r[1]){const v=r[0];((o=this.store.hoveredPoint)==null?void 0:o.index)!==v&&(e=!0);const b=r[2],S=r[3];this.store.hoveredPoint={index:v,position:[b,S]}}else this.store.hoveredPoint&&(n=!0),this.store.hoveredPoint=void 0;e&&this.store.hoveredPoint&&((f=(s=this.config).onPointMouseOver)==null||f.call(s,this.store.hoveredPoint.index,this.store.hoveredPoint.position,this.currentEvent)),n&&((l=(u=this.config).onPointMouseOut)==null||l.call(u,this.currentEvent)),this.updateCanvasCursor()}updateCanvasCursor(){const{hoveredPointCursor:e}=this.config;this.dragInstance.isActive?Dt(this.canvas).style("cursor","grabbing"):this.store.hoveredPoint?!this.config.enableDrag||this.store.isSpaceKeyPressed?Dt(this.canvas).style("cursor",e):Dt(this.canvas).style("cursor","grab"):Dt(this.canvas).style("cursor",null)}addAttribution(){var e;this.config.attribution&&(this.attributionDivElement=document.createElement("div"),this.attributionDivElement.style.cssText=`
|
|
1325
1335
|
user-select: none;
|
|
1326
1336
|
position: absolute;
|
|
1327
1337
|
bottom: 0;
|
|
@@ -1330,5 +1340,5 @@ void main() {
|
|
|
1330
1340
|
margin: 0 0.6rem 0.6rem 0;
|
|
1331
1341
|
font-size: 0.7rem;
|
|
1332
1342
|
font-family: inherit;
|
|
1333
|
-
`,this.attributionDivElement.innerHTML=this.config.attribution,(e=this.store.div)==null||e.appendChild(this.attributionDivElement))}}
|
|
1343
|
+
`,this.attributionDivElement.innerHTML=pu(this.config.attribution,{ALLOWED_TAGS:["a","b","i","em","strong","span","div","p","br","img"],ALLOWED_ATTR:["href","target","class","id","style","src","alt","title"]}),(e=this.store.div)==null||e.appendChild(this.attributionDivElement))}}Vt.Graph=Eg,Vt.clamp=mu,Vt.getRgbaColor=Vn,Vt.isAClassInstance=hu,Vt.isArray=Va,Vt.isFunction=lu,Vt.isNumber=mn,Vt.isObject=cu,Vt.isPlainObject=$a,Vt.readPixels=tn,Vt.rgbToBrightness=du,Vt.sanitizeHtml=pu,Object.defineProperty(Vt,Symbol.toStringTag,{value:"Module"})});
|
|
1334
1344
|
//# sourceMappingURL=index.min.js.map
|