@genome-spy/core 0.24.2 → 0.25.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/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
- var gE=Object.defineProperty;var mE=(R,T,K)=>T in R?gE(R,T,{enumerable:!0,configurable:!0,writable:!0,value:K}):R[T]=K;var Kh=(R,T,K)=>(mE(R,typeof T!="symbol"?T+"":T,K),K),au=(R,T,K)=>{if(!T.has(R))throw TypeError("Cannot "+K)};var W=(R,T,K)=>(au(R,T,"read from private field"),K?K.call(R):T.get(R)),pe=(R,T,K)=>{if(T.has(R))throw TypeError("Cannot add the same private member more than once");T instanceof WeakSet?T.add(R):T.set(R,K)},ti=(R,T,K,It)=>(au(R,T,"write to private field"),It?It.call(R,K):T.set(R,K),K),qh=(R,T,K,It)=>({set _(Mo){ti(R,T,Mo,K)},get _(){return W(R,T,It)}}),ue=(R,T,K)=>(au(R,T,"access private method"),K);(function(R,T){typeof exports=="object"&&typeof module<"u"?T(exports):typeof define=="function"&&define.amd?define(["exports"],T):(R=typeof globalThis<"u"?globalThis:R||self,T(R.genomeSpyEmbed={}))})(this,function(R){var qr,uu,Un,Hn,Re,Qn,Jr,cu,$e,Mt,Do,Jh,Bo,_h,on,ni,_r,lu,$r,fu,ei,hu,Fo,$h;"use strict";function T(t,e,n){return t.fields=e||[],t.fname=n,t}function K(t){return t==null?null:t.fname}function It(t){return t==null?null:t.fields}function Mo(t){return t.length===1?ed(t[0]):td(t)}const ed=t=>function(e){return e[t]},td=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function X(t){throw Error(t)}function nd(t){const e=[],n=t.length;let r=null,i=0,o="",s,a,u;t=t+"";function c(){e.push(o+t.substring(s,a)),o="",s=a+1}for(s=a=0;a<n;++a)if(u=t[a],u==="\\")o+=t.substring(s,a),o+=t.substring(++a,++a),s=a;else if(u===r)c(),r=null,i=-1;else{if(r)continue;s===i&&u==='"'||s===i&&u==="'"?(s=a+1,r=u):u==="."&&!i?a>s?c():s=a+1:u==="["?(a>s&&c(),i=s=a+1):u==="]"&&(i||X("Access path missing open bracket: "+t),i>0&&c(),i=0,s=a+1)}return i&&X("Access path missing closing bracket: "+t),r&&X("Access path missing closing quote: "+t),a>s&&(a++,c()),e}function ri(t,e,n){const r=nd(t);return t=r.length===1?r[0]:t,T((n&&n.get||Mo)(r),[t],e||t)}ri("id");const ii=T(t=>t,[],"identity");T(()=>0,[],"zero"),T(()=>1,[],"one"),T(()=>!0,[],"true"),T(()=>!1,[],"false");var Me=Array.isArray;function ke(t){return t===Object(t)}function Ne(t){return t[t.length-1]}function Yn(t){return t==null||t===""?null:+t}const du=t=>e=>t*Math.exp(e),pu=t=>e=>Math.log(t*e),rd=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),id=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,oi=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function Io(t,e,n,r){const i=n(t[0]),o=n(Ne(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function od(t,e){return Io(t,e,Yn,ii)}function sd(t,e){var n=Math.sign(t[0]);return Io(t,e,pu(n),du(n))}function ad(t,e,n){return Io(t,e,oi(n),oi(1/n))}function si(t,e,n,r,i){const o=r(t[0]),s=r(Ne(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function gu(t,e,n){return si(t,e,n,Yn,ii)}function mu(t,e,n){const r=Math.sign(t[0]);return si(t,e,n,pu(r),du(r))}function To(t,e,n,r){return si(t,e,n,oi(r),oi(1/r))}function ud(t,e,n,r){return si(t,e,n,rd(r),id(r))}function Po(t){return t!=null?Me(t)?t:[t]:[]}function cd(t,e,n){let r=t[0],i=t[1],o;return i<r&&(o=i,i=r,r=o),o=i-r,o>=n-e?[e,n]:[r=Math.min(Math.max(r,e),n-o),r+o]}function ge(t){return typeof t=="function"}const ld="descending";function Au(t,e,n){n=n||{},e=Po(e)||[];const r=[],i=[],o={},s=n.comparator||fd;return Po(t).forEach((a,u)=>{a!=null&&(r.push(e[u]===ld?-1:1),i.push(a=ge(a)?a:ri(a,null,n)),(It(a)||[]).forEach(c=>o[c]=1))}),i.length===0?null:T(s(i,r),Object.keys(o))}const xu=(t,e)=>(t<e||t==null)&&e!=null?-1:(t>e||e==null)&&t!=null?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e===e?-1:e!==e&&t===t?1:0),fd=(t,e)=>t.length===1?hd(t[0],e[0]):dd(t,e,t.length),hd=(t,e)=>function(n,r){return xu(t(n),t(r))*e},dd=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=xu(o(r),o(i));return s*e[a]});function pd(t){return ge(t)?t:()=>t}function Lo(t){for(let e,n,r=1,i=arguments.length;r<i;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t}const gd=Object.prototype.hasOwnProperty;function Tt(t,e){return gd.call(t,e)}function ai(t){return typeof t=="boolean"}function md(t){return Object.prototype.toString.call(t)==="[object Date]"}function Ad(t){return t&&ge(t[Symbol.iterator])}function me(t){return typeof t=="number"}function Z(t){return typeof t=="string"}function xd(t,e){const n=t[0],r=Ne(t),i=+e;return i?i===1?r:n+i*(r-n):n}function ui(t){return t&&Ne(t)-t[0]||0}function ci(t){return Me(t)?"["+t.map(ci)+"]":ke(t)||Z(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function yd(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const bd=t=>me(t)||md(t)?t:Date.parse(t);function wd(t,e){return e=e||bd,t==null||t===""?null:e(t)}function vd(t){return t==null||t===""?null:t+""}function li(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var yu={},Ro={},ko=34,Wn=10,No=13;function bu(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Cd(t,e){var n=bu(t);return function(r,i){return e(n(r),i,t)}}function wu(t){var e=Object.create(null),n=[];return t.forEach(function(r){for(var i in r)i in e||n.push(e[i]=i)}),n}function Ae(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function Ed(t){return t<0?"-"+Ae(-t,6):t>9999?"+"+Ae(t,6):Ae(t,4)}function Sd(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":Ed(t.getUTCFullYear())+"-"+Ae(t.getUTCMonth()+1,2)+"-"+Ae(t.getUTCDate(),2)+(i?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"."+Ae(i,3)+"Z":r?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"Z":n||e?"T"+Ae(e,2)+":"+Ae(n,2)+"Z":"")}function vu(t){var e=new RegExp('["'+t+`
2
- \r]`),n=t.charCodeAt(0);function r(l,h){var p,d,g=i(l,function(A,m){if(p)return p(A,m-1);d=A,p=h?Cd(A,h):bu(A)});return g.columns=d||[],g}function i(l,h){var p=[],d=l.length,g=0,A=0,m,b=d<=0,y=!1;l.charCodeAt(d-1)===Wn&&--d,l.charCodeAt(d-1)===No&&--d;function w(){if(b)return Ro;if(y)return y=!1,yu;var C,B=g,I;if(l.charCodeAt(B)===ko){for(;g++<d&&l.charCodeAt(g)!==ko||l.charCodeAt(++g)===ko;);return(C=g)>=d?b=!0:(I=l.charCodeAt(g++))===Wn?y=!0:I===No&&(y=!0,l.charCodeAt(g)===Wn&&++g),l.slice(B+1,C-1).replace(/""/g,'"')}for(;g<d;){if((I=l.charCodeAt(C=g++))===Wn)y=!0;else if(I===No)y=!0,l.charCodeAt(g)===Wn&&++g;else if(I!==n)continue;return l.slice(B,C)}return b=!0,l.slice(B,d)}for(;(m=w())!==Ro;){for(var E=[];m!==yu&&m!==Ro;)E.push(m),m=w();h&&(E=h(E,A++))==null||p.push(E)}return p}function o(l,h){return l.map(function(p){return h.map(function(d){return f(p[d])}).join(t)})}function s(l,h){return h==null&&(h=wu(l)),[h.map(f).join(t)].concat(o(l,h)).join(`
3
- `)}function a(l,h){return h==null&&(h=wu(l)),o(l,h).join(`
1
+ var mE=Object.defineProperty;var AE=(R,T,K)=>T in R?mE(R,T,{enumerable:!0,configurable:!0,writable:!0,value:K}):R[T]=K;var Jh=(R,T,K)=>(AE(R,typeof T!="symbol"?T+"":T,K),K),uu=(R,T,K)=>{if(!T.has(R))throw TypeError("Cannot "+K)};var V=(R,T,K)=>(uu(R,T,"read from private field"),K?K.call(R):T.get(R)),he=(R,T,K)=>{if(T.has(R))throw TypeError("Cannot add the same private member more than once");T instanceof WeakSet?T.add(R):T.set(R,K)},Yn=(R,T,K,It)=>(uu(R,T,"write to private field"),It?It.call(R,K):T.set(R,K),K),_h=(R,T,K,It)=>({set _(Io){Yn(R,T,Io,K)},get _(){return V(R,T,It)}}),ue=(R,T,K)=>(uu(R,T,"access private method"),K);(function(R,T){typeof exports=="object"&&typeof module<"u"?T(exports):typeof define=="function"&&define.amd?define(["exports"],T):(R=typeof globalThis<"u"?globalThis:R||self,T(R.genomeSpyEmbed={}))})(this,function(R){var Jr,cu,Un,Hn,Re,Qn,_r,lu,$e,Mt,Bo,$h,Fo,ed,on,ri,$r,fu,ei,hu,ti,du,Mo,td,ni;"use strict";function T(t,e,n){return t.fields=e||[],t.fname=n,t}function K(t){return t==null?null:t.fname}function It(t){return t==null?null:t.fields}function Io(t){return t.length===1?nd(t[0]):rd(t)}const nd=t=>function(e){return e[t]},rd=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function X(t){throw Error(t)}function id(t){const e=[],n=t.length;let r=null,i=0,o="",s,a,u;t=t+"";function c(){e.push(o+t.substring(s,a)),o="",s=a+1}for(s=a=0;a<n;++a)if(u=t[a],u==="\\")o+=t.substring(s,a),o+=t.substring(++a,++a),s=a;else if(u===r)c(),r=null,i=-1;else{if(r)continue;s===i&&u==='"'||s===i&&u==="'"?(s=a+1,r=u):u==="."&&!i?a>s?c():s=a+1:u==="["?(a>s&&c(),i=s=a+1):u==="]"&&(i||X("Access path missing open bracket: "+t),i>0&&c(),i=0,s=a+1)}return i&&X("Access path missing closing bracket: "+t),r&&X("Access path missing closing quote: "+t),a>s&&(a++,c()),e}function ii(t,e,n){const r=id(t);return t=r.length===1?r[0]:t,T((n&&n.get||Io)(r),[t],e||t)}ii("id");const oi=T(t=>t,[],"identity");T(()=>0,[],"zero"),T(()=>1,[],"one"),T(()=>!0,[],"true"),T(()=>!1,[],"false");var Me=Array.isArray;function ke(t){return t===Object(t)}function Ne(t){return t[t.length-1]}function Wn(t){return t==null||t===""?null:+t}const pu=t=>e=>t*Math.exp(e),gu=t=>e=>Math.log(t*e),od=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),sd=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,si=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function To(t,e,n,r){const i=n(t[0]),o=n(Ne(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function ad(t,e){return To(t,e,Wn,oi)}function ud(t,e){var n=Math.sign(t[0]);return To(t,e,gu(n),pu(n))}function cd(t,e,n){return To(t,e,si(n),si(1/n))}function ai(t,e,n,r,i){const o=r(t[0]),s=r(Ne(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function mu(t,e,n){return ai(t,e,n,Wn,oi)}function Au(t,e,n){const r=Math.sign(t[0]);return ai(t,e,n,gu(r),pu(r))}function Po(t,e,n,r){return ai(t,e,n,si(r),si(1/r))}function ld(t,e,n,r){return ai(t,e,n,od(r),sd(r))}function Lo(t){return t!=null?Me(t)?t:[t]:[]}function fd(t,e,n){let r=t[0],i=t[1],o;return i<r&&(o=i,i=r,r=o),o=i-r,o>=n-e?[e,n]:[r=Math.min(Math.max(r,e),n-o),r+o]}function ge(t){return typeof t=="function"}const hd="descending";function xu(t,e,n){n=n||{},e=Lo(e)||[];const r=[],i=[],o={},s=n.comparator||dd;return Lo(t).forEach((a,u)=>{a!=null&&(r.push(e[u]===hd?-1:1),i.push(a=ge(a)?a:ii(a,null,n)),(It(a)||[]).forEach(c=>o[c]=1))}),i.length===0?null:T(s(i,r),Object.keys(o))}const yu=(t,e)=>(t<e||t==null)&&e!=null?-1:(t>e||e==null)&&t!=null?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e===e?-1:e!==e&&t===t?1:0),dd=(t,e)=>t.length===1?pd(t[0],e[0]):gd(t,e,t.length),pd=(t,e)=>function(n,r){return yu(t(n),t(r))*e},gd=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=yu(o(r),o(i));return s*e[a]});function md(t){return ge(t)?t:()=>t}function Ro(t){for(let e,n,r=1,i=arguments.length;r<i;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t}const Ad=Object.prototype.hasOwnProperty;function Tt(t,e){return Ad.call(t,e)}function ui(t){return typeof t=="boolean"}function xd(t){return Object.prototype.toString.call(t)==="[object Date]"}function yd(t){return t&&ge(t[Symbol.iterator])}function me(t){return typeof t=="number"}function Z(t){return typeof t=="string"}function bd(t,e){const n=t[0],r=Ne(t),i=+e;return i?i===1?r:n+i*(r-n):n}function ci(t){return t&&Ne(t)-t[0]||0}function li(t){return Me(t)?"["+t.map(li)+"]":ke(t)||Z(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function wd(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const vd=t=>me(t)||xd(t)?t:Date.parse(t);function Cd(t,e){return e=e||vd,t==null||t===""?null:e(t)}function Ed(t){return t==null||t===""?null:t+""}function fi(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var bu={},ko={},No=34,Xn=10,zo=13;function wu(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Sd(t,e){var n=wu(t);return function(r,i){return e(n(r),i,t)}}function vu(t){var e=Object.create(null),n=[];return t.forEach(function(r){for(var i in r)i in e||n.push(e[i]=i)}),n}function Ae(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function Dd(t){return t<0?"-"+Ae(-t,6):t>9999?"+"+Ae(t,6):Ae(t,4)}function Bd(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":Dd(t.getUTCFullYear())+"-"+Ae(t.getUTCMonth()+1,2)+"-"+Ae(t.getUTCDate(),2)+(i?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"."+Ae(i,3)+"Z":r?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"Z":n||e?"T"+Ae(e,2)+":"+Ae(n,2)+"Z":"")}function Cu(t){var e=new RegExp('["'+t+`
2
+ \r]`),n=t.charCodeAt(0);function r(l,h){var p,d,g=i(l,function(A,m){if(p)return p(A,m-1);d=A,p=h?Sd(A,h):wu(A)});return g.columns=d||[],g}function i(l,h){var p=[],d=l.length,g=0,A=0,m,b=d<=0,y=!1;l.charCodeAt(d-1)===Xn&&--d,l.charCodeAt(d-1)===zo&&--d;function w(){if(b)return ko;if(y)return y=!1,bu;var C,B=g,I;if(l.charCodeAt(B)===No){for(;g++<d&&l.charCodeAt(g)!==No||l.charCodeAt(++g)===No;);return(C=g)>=d?b=!0:(I=l.charCodeAt(g++))===Xn?y=!0:I===zo&&(y=!0,l.charCodeAt(g)===Xn&&++g),l.slice(B+1,C-1).replace(/""/g,'"')}for(;g<d;){if((I=l.charCodeAt(C=g++))===Xn)y=!0;else if(I===zo)y=!0,l.charCodeAt(g)===Xn&&++g;else if(I!==n)continue;return l.slice(B,C)}return b=!0,l.slice(B,d)}for(;(m=w())!==ko;){for(var E=[];m!==bu&&m!==ko;)E.push(m),m=w();h&&(E=h(E,A++))==null||p.push(E)}return p}function o(l,h){return l.map(function(p){return h.map(function(d){return f(p[d])}).join(t)})}function s(l,h){return h==null&&(h=vu(l)),[h.map(f).join(t)].concat(o(l,h)).join(`
3
+ `)}function a(l,h){return h==null&&(h=vu(l)),o(l,h).join(`
4
4
  `)}function u(l){return l.map(c).join(`
5
- `)}function c(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?Sd(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:u,formatRow:c,formatValue:f}}var Dd=vu(" "),Bd=Dd.parseRows;function Fd(t){return t}function Md(t){if(t==null)return Fd;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(a,u){u||(e=n=0);var c=2,f=a.length,l=new Array(f);for(l[0]=(e+=a[0])*r+o,l[1]=(n+=a[1])*i+s;c<f;)l[c]=a[c],++c;return l}}function Id(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Td(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Cu(t,n)})}:Cu(t,e)}function Cu(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=Eu(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function Eu(t,e){var n=Md(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var h=r[f<0?~f:f],p=0,d=h.length;p<d;++p)l.push(n(h[p],p));f<0&&Id(l,d)}function o(f){return n(f)}function s(f){for(var l=[],h=0,p=f.length;h<p;++h)i(f[h],l);return l.length<2&&l.push(l[0]),l}function a(f){for(var l=s(f);l.length<4;)l.push(l[0]);return l}function u(f){return f.map(a)}function c(f){var l=f.type,h;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(c)};case"Point":h=o(f.coordinates);break;case"MultiPoint":h=f.coordinates.map(o);break;case"LineString":h=s(f.arcs);break;case"MultiLineString":h=f.arcs.map(s);break;case"Polygon":h=u(f.arcs);break;case"MultiPolygon":h=f.arcs.map(u);break;default:return null}return{type:l,coordinates:h}}return c(e)}function Pd(t,e){var n={},r={},i={},o=[],s=-1;e.forEach(function(c,f){var l=t.arcs[c<0?~c:c],h;l.length<3&&!l[1][0]&&!l[1][1]&&(h=e[++s],e[s]=c,e[f]=h)}),e.forEach(function(c){var f=a(c),l=f[0],h=f[1],p,d;if(p=i[l])if(delete i[p.end],p.push(c),p.end=h,d=r[h]){delete r[d.start];var g=d===p?p:p.concat(d);r[g.start=p.start]=i[g.end=d.end]=g}else r[p.start]=i[p.end]=p;else if(p=r[h])if(delete r[p.start],p.unshift(c),p.start=l,d=i[l]){delete i[d.end];var A=d===p?p:d.concat(p);r[A.start=d.start]=i[A.end=p.end]=A}else r[p.start]=i[p.end]=p;else p=[c],r[p.start=l]=i[p.end=h]=p});function a(c){var f=t.arcs[c<0?~c:c],l=f[0],h;return t.transform?(h=[0,0],f.forEach(function(p){h[0]+=p[0],h[1]+=p[1]})):h=f[f.length-1],c<0?[h,l]:[l,h]}function u(c,f){for(var l in c){var h=c[l];delete f[h.start],delete h.start,delete h.end,h.forEach(function(p){n[p<0?~p:p]=1}),o.push(h)}}return u(i,r),u(r,i),e.forEach(function(c){n[c<0?~c:c]||o.push([c])}),o}function Ld(t){return Eu(t,Rd.apply(this,arguments))}function Rd(t,e,n){var r,i,o;if(arguments.length>1)r=kd(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Pd(t,r)}}function kd(t,e,n){var r=[],i=[],o;function s(l){var h=l<0?~l:l;(i[h]||(i[h]=[])).push({i:l,g:o})}function a(l){l.forEach(s)}function u(l){l.forEach(a)}function c(l){l.forEach(u)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":a(l.arcs);break;case"MultiLineString":case"Polygon":u(l.arcs);break;case"MultiPolygon":c(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function Xn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Nd(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function fi(t){let e,n,r;t.length!==2?(e=Xn,n=(a,u)=>Xn(t(a),u),r=(a,u)=>t(a)-u):(e=t===Xn||t===Nd?t:zd,n=t,r=t);function i(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<0?c=l+1:f=l}while(c<f)}return c}function o(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<=0?c=l+1:f=l}while(c<f)}return c}function s(a,u,c=0,f=a.length){const l=i(a,u,c,f-1);return l>c&&r(a[l-1],u)>-r(a[l],u)?l-1:l}return{left:i,center:s,right:o}}function zd(){return 0}function Su(t){return t===null?NaN:+t}const Du=fi(Xn),zo=Du.right;Du.left,fi(Su).center;const an=zo;function Od(t,e){let n,r;if(e===void 0)for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class Pt extends Map{constructor(e,n=Hd){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(Bu(this,e))}has(e){return super.has(Bu(this,e))}set(e,n){return super.set(Gd(this,e),n)}delete(e){return super.delete(Ud(this,e))}}function Bu({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Gd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Ud({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Hd(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Oo(t){return t}function hi(t,...e){return Fu(t,Oo,Oo,e)}function Qd(t,...e){return Fu(t,Array.from,Oo,e)}function Fu(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new Pt,u=r[s++];let c=-1;for(const f of o){const l=u(f,++c,o),h=a.get(l);h?h.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}var Go=Math.sqrt(50),Uo=Math.sqrt(10),Ho=Math.sqrt(2);function di(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=Mu(t,e,n))===0||!isFinite(a))return[];if(a>0){let u=Math.round(t/a),c=Math.round(e/a);for(u*a<t&&++u,c*a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)*a}else{a=-a;let u=Math.round(t*a),c=Math.round(e*a);for(u/a<t&&++u,c/a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)/a}return r&&s.reverse(),s}function Mu(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>=Go?10:o>=Uo?5:o>=Ho?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Go?10:o>=Uo?5:o>=Ho?2:1)}function Lt(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>=Go?i*=10:o>=Uo?i*=5:o>=Ho&&(i*=2),e<t?-i:i}function Iu(t,e,n=Su){if(!!(r=t.length)){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function Zn(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 pi(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function jd(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function gi(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 un(t){return t=gi(Math.abs(t)),t?t[1]:NaN}function Vd(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],u=0;i>0&&a>0&&(u+a+1>r&&(a=Math.max(1,r-u)),o.push(n.substring(i-=a,i+a)),!((u+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function Yd(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Wd=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ft(t){if(!(e=Wd.exec(t)))throw new Error("invalid format: "+t);var e;return new Qo({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]})}ft.prototype=Qo.prototype;function Qo(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+""}Qo.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 Xd(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 Tu;function Zd(t,e){var n=gi(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Tu=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")+gi(t,Math.max(0,e+o-1))[0]}function Pu(t,e){var n=gi(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:jd,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)=>Pu(t*100,e),r:Pu,s:Zd,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Ru(t){return t}var ku=Array.prototype.map,Nu=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Kd(t){var e=t.grouping===void 0||t.thousands===void 0?Ru:Vd(ku.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?Ru:Yd(ku.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(l){l=ft(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,A=l.zero,m=l.width,b=l.comma,y=l.precision,w=l.trim,E=l.type;E==="n"?(b=!0,E="g"):Lu[E]||(y===void 0&&(y=12),w=!0,E="g"),(A||h==="0"&&p==="=")&&(A=!0,h="0",p="=");var C=g==="$"?n:g==="#"&&/[boxX]/.test(E)?"0"+E.toLowerCase():"",B=g==="$"?r:/[%p]/.test(E)?s:"",I=Lu[E],P=/[defgprs%]/.test(E);y=y===void 0?6:/[gprs]/.test(E)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y));function U(M){var ve=C,oe=B,Se,et,De;if(E==="c")oe=I(M)+oe,M="";else{M=+M;var jn=M<0||1/M<0;if(M=isNaN(M)?u:I(Math.abs(M),y),w&&(M=Xd(M)),jn&&+M==0&&d!=="+"&&(jn=!1),ve=(jn?d==="("?d:a:d==="-"||d==="("?"":d)+ve,oe=(E==="s"?Nu[8+Tu/3]:"")+oe+(jn&&d==="("?")":""),P){for(Se=-1,et=M.length;++Se<et;)if(De=M.charCodeAt(Se),48>De||De>57){oe=(De===46?i+M.slice(Se+1):M.slice(Se))+oe,M=M.slice(0,Se);break}}}b&&!A&&(M=e(M,1/0));var Vn=ve.length+M.length+oe.length,Ve=Vn<m?new Array(m-Vn+1).join(h):"";switch(b&&A&&(M=e(Ve+M,Ve.length?m-oe.length:1/0),Ve=""),p){case"<":M=ve+M+oe+Ve;break;case"=":M=ve+Ve+M+oe;break;case"^":M=Ve.slice(0,Vn=Ve.length>>1)+ve+M+oe+Ve.slice(Vn);break;default:M=Ve+ve+M+oe;break}return o(M)}return U.toString=function(){return l+""},U}function f(l,h){var p=c((l=ft(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(un(h)/3)))*3,g=Math.pow(10,-d),A=Nu[8+d/3];return function(m){return p(g*m)+A}}return{format:c,formatPrefix:f}}var mi,se,jo;qd({thousands:",",grouping:[3],currency:["$",""]});function qd(t){return mi=Kd(t),se=mi.format,jo=mi.formatPrefix,mi}function zu(t){return Math.max(0,-un(Math.abs(t)))}function Ou(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(un(e)/3)))*3-un(Math.abs(t)))}function Gu(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,un(e)-un(t))+1}var Vo=new Date,Yo=new Date;function $(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return t(o=new Date(+o)),o},i.ceil=function(o){return t(o=new Date(o-1)),e(o,1),t(o),o},i.round=function(o){var s=i(o),a=i.ceil(o);return o-s<a-o?s:a},i.offset=function(o,s){return e(o=new Date(+o),s==null?1:Math.floor(s)),o},i.range=function(o,s,a){var u=[],c;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return u;do u.push(c=new Date(+o)),e(o,a),t(o);while(c<o&&o<s);return u},i.filter=function(o){return $(function(s){if(s>=s)for(;t(s),!o(s);)s.setTime(s-1)},function(s,a){if(s>=s)if(a<0)for(;++a<=0;)for(;e(s,-1),!o(s););else for(;--a>=0;)for(;e(s,1),!o(s););})},n&&(i.count=function(o,s){return Vo.setTime(+o),Yo.setTime(+s),t(Vo),t(Yo),Math.floor(n(Vo,Yo))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(s){return r(s)%o===0}:function(s){return i.count(0,s)%o===0}):i}),i}var Ai=$(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});Ai.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?$(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):Ai};const Wo=Ai;Ai.range;const tt=1e3,Ie=tt*60,nt=Ie*60,Rt=nt*24,Xo=Rt*7,Uu=Rt*30,Zo=Rt*365;var Hu=$(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*tt)},function(t,e){return(e-t)/tt},function(t){return t.getUTCSeconds()});const ht=Hu;Hu.range;var Qu=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*tt)},function(t,e){t.setTime(+t+e*Ie)},function(t,e){return(e-t)/Ie},function(t){return t.getMinutes()});const Ko=Qu;Qu.range;var ju=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*tt-t.getMinutes()*Ie)},function(t,e){t.setTime(+t+e*nt)},function(t,e){return(e-t)/nt},function(t){return t.getHours()});const qo=ju;ju.range;var Vu=$(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ie)/Rt,t=>t.getDate()-1);const kt=Vu;Vu.range;function Nt(t){return $(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*Ie)/Xo})}var Kn=Nt(0),xi=Nt(1),Jd=Nt(2),_d=Nt(3),cn=Nt(4),$d=Nt(5),ep=Nt(6);Kn.range,xi.range,Jd.range,_d.range,cn.range,$d.range,ep.range;var Yu=$(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()});const yi=Yu;Yu.range;var Jo=$(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Jo.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};const dt=Jo;Jo.range;var Wu=$(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ie)},function(t,e){return(e-t)/Ie},function(t){return t.getUTCMinutes()});const _o=Wu;Wu.range;var Xu=$(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*nt)},function(t,e){return(e-t)/nt},function(t){return t.getUTCHours()});const $o=Xu;Xu.range;var Zu=$(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Rt},function(t){return t.getUTCDate()-1});const zt=Zu;Zu.range;function Ot(t){return $(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/Xo})}var qn=Ot(0),bi=Ot(1),tp=Ot(2),np=Ot(3),ln=Ot(4),rp=Ot(5),ip=Ot(6);qn.range,bi.range,tp.range,np.range,ln.range,rp.range,ip.range;var Ku=$(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()});const wi=Ku;Ku.range;var es=$(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});es.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};const pt=es;es.range;function qu(t,e,n,r,i,o){const s=[[ht,1,tt],[ht,5,5*tt],[ht,15,15*tt],[ht,30,30*tt],[o,1,Ie],[o,5,5*Ie],[o,15,15*Ie],[o,30,30*Ie],[i,1,nt],[i,3,3*nt],[i,6,6*nt],[i,12,12*nt],[r,1,Rt],[r,2,2*Rt],[n,1,Xo],[e,1,Uu],[e,3,3*Uu],[t,1,Zo]];function a(c,f,l){const h=f<c;h&&([c,f]=[f,c]);const p=l&&typeof l.range=="function"?l:u(c,f,l),d=p?p.range(c,+f+1):[];return h?d.reverse():d}function u(c,f,l){const h=Math.abs(f-c)/l,p=fi(([,,A])=>A).right(s,h);if(p===s.length)return t.every(Lt(c/Zo,f/Zo,l));if(p===0)return Wo.every(Math.max(Lt(c,f,l),1));const[d,g]=s[h/s[p-1][2]<s[p][2]/h?p-1:p];return d.every(g)}return[a,u]}const[op,sp]=qu(pt,wi,qn,zt,$o,_o),[ap,up]=qu(dt,yi,Kn,kt,qo,Ko),Jn="year",_n="quarter",$n="month",er="week",tr="date",vi="day",ts="dayofyear",nr="hours",rr="minutes",ir="seconds",Ci="milliseconds";[Jn,_n,$n,er,tr,vi,ts,nr,rr,ir,Ci].reduce((t,e,n)=>(t[e]=1+n,t),{});const cp={[Jn]:dt,[_n]:yi.every(3),[$n]:yi,[er]:Kn,[tr]:kt,[vi]:kt,[ts]:kt,[nr]:qo,[rr]:Ko,[ir]:ht,[Ci]:Wo},lp={[Jn]:pt,[_n]:wi.every(3),[$n]:wi,[er]:qn,[tr]:zt,[vi]:zt,[ts]:zt,[nr]:$o,[rr]:_o,[ir]:ht,[Ci]:Wo};function fp(t){return cp[t]}function hp(t){return lp[t]}function ns(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function rs(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function or(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Ju(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,u=t.shortMonths,c=sr(i),f=ar(i),l=sr(o),h=ar(o),p=sr(s),d=ar(s),g=sr(a),A=ar(a),m=sr(u),b=ar(u),y={a:jn,A:Vn,b:Ve,B:sE,c:null,d:rc,e:rc,f:kp,g:Yp,G:Xp,H:Pp,I:Lp,j:Rp,L:ic,m:Np,M:zp,p:aE,q:uE,Q:lc,s:fc,S:Op,u:Gp,U:Up,V:Hp,w:Qp,W:jp,x:null,X:null,y:Vp,Y:Wp,Z:Zp,"%":cc},w={a:cE,A:lE,b:fE,B:hE,c:null,d:sc,e:sc,f:_p,g:ug,G:lg,H:Kp,I:qp,j:Jp,L:ac,m:$p,M:eg,p:dE,q:pE,Q:lc,s:fc,S:tg,u:ng,U:rg,V:ig,w:og,W:sg,x:null,X:null,y:ag,Y:cg,Z:fg,"%":cc},E={a:U,A:M,b:ve,B:oe,c:Se,d:tc,e:tc,f:Fp,g:ec,G:$u,H:nc,I:nc,j:Ep,L:Bp,m:Cp,M:Sp,p:P,q:vp,Q:Ip,s:Tp,S:Dp,u:Ap,U:xp,V:yp,w:mp,W:bp,x:et,X:De,y:ec,Y:$u,Z:wp,"%":Mp};y.x=C(n,y),y.X=C(r,y),y.c=C(e,y),w.x=C(n,w),w.X=C(r,w),w.c=C(e,w);function C(D,L){return function(z){var v=[],Ce=-1,Q=0,Be=D.length,Fe,sn,Zh;for(z instanceof Date||(z=new Date(+z));++Ce<Be;)D.charCodeAt(Ce)===37&&(v.push(D.slice(Q,Ce)),(sn=_u[Fe=D.charAt(++Ce)])!=null?Fe=D.charAt(++Ce):sn=Fe==="e"?" ":"0",(Zh=L[Fe])&&(Fe=Zh(z,sn)),v.push(Fe),Q=Ce+1);return v.push(D.slice(Q,Ce)),v.join("")}}function B(D,L){return function(z){var v=or(1900,void 0,1),Ce=I(v,D,z+="",0),Q,Be;if(Ce!=z.length)return null;if("Q"in v)return new Date(v.Q);if("s"in v)return new Date(v.s*1e3+("L"in v?v.L:0));if(L&&!("Z"in v)&&(v.Z=0),"p"in v&&(v.H=v.H%12+v.p*12),v.m===void 0&&(v.m="q"in v?v.q:0),"V"in v){if(v.V<1||v.V>53)return null;"w"in v||(v.w=1),"Z"in v?(Q=rs(or(v.y,0,1)),Be=Q.getUTCDay(),Q=Be>4||Be===0?bi.ceil(Q):bi(Q),Q=zt.offset(Q,(v.V-1)*7),v.y=Q.getUTCFullYear(),v.m=Q.getUTCMonth(),v.d=Q.getUTCDate()+(v.w+6)%7):(Q=ns(or(v.y,0,1)),Be=Q.getDay(),Q=Be>4||Be===0?xi.ceil(Q):xi(Q),Q=kt.offset(Q,(v.V-1)*7),v.y=Q.getFullYear(),v.m=Q.getMonth(),v.d=Q.getDate()+(v.w+6)%7)}else("W"in v||"U"in v)&&("w"in v||(v.w="u"in v?v.u%7:"W"in v?1:0),Be="Z"in v?rs(or(v.y,0,1)).getUTCDay():ns(or(v.y,0,1)).getDay(),v.m=0,v.d="W"in v?(v.w+6)%7+v.W*7-(Be+5)%7:v.w+v.U*7-(Be+6)%7);return"Z"in v?(v.H+=v.Z/100|0,v.M+=v.Z%100,rs(v)):ns(v)}}function I(D,L,z,v){for(var Ce=0,Q=L.length,Be=z.length,Fe,sn;Ce<Q;){if(v>=Be)return-1;if(Fe=L.charCodeAt(Ce++),Fe===37){if(Fe=L.charAt(Ce++),sn=E[Fe in _u?L.charAt(Ce++):Fe],!sn||(v=sn(D,z,v))<0)return-1}else if(Fe!=z.charCodeAt(v++))return-1}return v}function P(D,L,z){var v=c.exec(L.slice(z));return v?(D.p=f.get(v[0].toLowerCase()),z+v[0].length):-1}function U(D,L,z){var v=p.exec(L.slice(z));return v?(D.w=d.get(v[0].toLowerCase()),z+v[0].length):-1}function M(D,L,z){var v=l.exec(L.slice(z));return v?(D.w=h.get(v[0].toLowerCase()),z+v[0].length):-1}function ve(D,L,z){var v=m.exec(L.slice(z));return v?(D.m=b.get(v[0].toLowerCase()),z+v[0].length):-1}function oe(D,L,z){var v=g.exec(L.slice(z));return v?(D.m=A.get(v[0].toLowerCase()),z+v[0].length):-1}function Se(D,L,z){return I(D,e,L,z)}function et(D,L,z){return I(D,n,L,z)}function De(D,L,z){return I(D,r,L,z)}function jn(D){return s[D.getDay()]}function Vn(D){return o[D.getDay()]}function Ve(D){return u[D.getMonth()]}function sE(D){return a[D.getMonth()]}function aE(D){return i[+(D.getHours()>=12)]}function uE(D){return 1+~~(D.getMonth()/3)}function cE(D){return s[D.getUTCDay()]}function lE(D){return o[D.getUTCDay()]}function fE(D){return u[D.getUTCMonth()]}function hE(D){return a[D.getUTCMonth()]}function dE(D){return i[+(D.getUTCHours()>=12)]}function pE(D){return 1+~~(D.getUTCMonth()/3)}return{format:function(D){var L=C(D+="",y);return L.toString=function(){return D},L},parse:function(D){var L=B(D+="",!1);return L.toString=function(){return D},L},utcFormat:function(D){var L=C(D+="",w);return L.toString=function(){return D},L},utcParse:function(D){var L=B(D+="",!0);return L.toString=function(){return D},L}}}var _u={"-":"",_:" ",0:"0"},ee=/^\s*\d+/,dp=/^%/,pp=/[\\^$*+?|[\]().{}]/g;function k(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function gp(t){return t.replace(pp,"\\$&")}function sr(t){return new RegExp("^(?:"+t.map(gp).join("|")+")","i")}function ar(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function mp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function Ap(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function xp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function yp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function bp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function $u(t,e,n){var r=ee.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function ec(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function wp(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function vp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Cp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function tc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Ep(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function nc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Sp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Dp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Bp(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Fp(t,e,n){var r=ee.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Mp(t,e,n){var r=dp.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Ip(t,e,n){var r=ee.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Tp(t,e,n){var r=ee.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function rc(t,e){return k(t.getDate(),e,2)}function Pp(t,e){return k(t.getHours(),e,2)}function Lp(t,e){return k(t.getHours()%12||12,e,2)}function Rp(t,e){return k(1+kt.count(dt(t),t),e,3)}function ic(t,e){return k(t.getMilliseconds(),e,3)}function kp(t,e){return ic(t,e)+"000"}function Np(t,e){return k(t.getMonth()+1,e,2)}function zp(t,e){return k(t.getMinutes(),e,2)}function Op(t,e){return k(t.getSeconds(),e,2)}function Gp(t){var e=t.getDay();return e===0?7:e}function Up(t,e){return k(Kn.count(dt(t)-1,t),e,2)}function oc(t){var e=t.getDay();return e>=4||e===0?cn(t):cn.ceil(t)}function Hp(t,e){return t=oc(t),k(cn.count(dt(t),t)+(dt(t).getDay()===4),e,2)}function Qp(t){return t.getDay()}function jp(t,e){return k(xi.count(dt(t)-1,t),e,2)}function Vp(t,e){return k(t.getFullYear()%100,e,2)}function Yp(t,e){return t=oc(t),k(t.getFullYear()%100,e,2)}function Wp(t,e){return k(t.getFullYear()%1e4,e,4)}function Xp(t,e){var n=t.getDay();return t=n>=4||n===0?cn(t):cn.ceil(t),k(t.getFullYear()%1e4,e,4)}function Zp(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+k(e/60|0,"0",2)+k(e%60,"0",2)}function sc(t,e){return k(t.getUTCDate(),e,2)}function Kp(t,e){return k(t.getUTCHours(),e,2)}function qp(t,e){return k(t.getUTCHours()%12||12,e,2)}function Jp(t,e){return k(1+zt.count(pt(t),t),e,3)}function ac(t,e){return k(t.getUTCMilliseconds(),e,3)}function _p(t,e){return ac(t,e)+"000"}function $p(t,e){return k(t.getUTCMonth()+1,e,2)}function eg(t,e){return k(t.getUTCMinutes(),e,2)}function tg(t,e){return k(t.getUTCSeconds(),e,2)}function ng(t){var e=t.getUTCDay();return e===0?7:e}function rg(t,e){return k(qn.count(pt(t)-1,t),e,2)}function uc(t){var e=t.getUTCDay();return e>=4||e===0?ln(t):ln.ceil(t)}function ig(t,e){return t=uc(t),k(ln.count(pt(t),t)+(pt(t).getUTCDay()===4),e,2)}function og(t){return t.getUTCDay()}function sg(t,e){return k(bi.count(pt(t)-1,t),e,2)}function ag(t,e){return k(t.getUTCFullYear()%100,e,2)}function ug(t,e){return t=uc(t),k(t.getUTCFullYear()%100,e,2)}function cg(t,e){return k(t.getUTCFullYear()%1e4,e,4)}function lg(t,e){var n=t.getUTCDay();return t=n>=4||n===0?ln(t):ln.ceil(t),k(t.getUTCFullYear()%1e4,e,4)}function fg(){return"+0000"}function cc(){return"%"}function lc(t){return+t}function fc(t){return Math.floor(+t/1e3)}var fn,is,hc,os,dc;hg({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function hg(t){return fn=Ju(t),is=fn.format,hc=fn.parse,os=fn.utcFormat,dc=fn.utcParse,fn}function ur(t){const e={};return n=>e[n]||(e[n]=t(n))}function dg(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=pg(r,i);const s=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function pg(t,e){let n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}function gg(t){const e=ur(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=ft(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return dg(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=ft(s==null?",f":s);const a=Lt(r,i,o),u=Math.max(Math.abs(r),Math.abs(i));let c;if(s.precision==null)switch(s.type){case"s":return isNaN(c=Ou(a,u))||(s.precision=c),n(s,u);case"":case"e":case"g":case"p":case"r":{isNaN(c=Gu(a,u))||(s.precision=c-(s.type==="e"));break}case"f":case"%":{isNaN(c=zu(a))||(s.precision=c-(s.type==="%")*2);break}}return e(s)}}}mg();function mg(){return gg({format:se,formatPrefix:jo})}function pc(t,e,n){n=n||{},ke(n)||X("Invalid time multi-format specifier: ".concat(n));const r=e(ir),i=e(rr),o=e(nr),s=e(tr),a=e(er),u=e($n),c=e(_n),f=e(Jn),l=t(n[Ci]||".%L"),h=t(n[ir]||":%S"),p=t(n[rr]||"%I:%M"),d=t(n[nr]||"%I %p"),g=t(n[tr]||n[vi]||"%a %d"),A=t(n[er]||"%b %d"),m=t(n[$n]||"%B"),b=t(n[_n]||"%B"),y=t(n[Jn]||"%Y");return w=>(r(w)<w?l:i(w)<w?h:o(w)<w?p:s(w)<w?d:u(w)<w?a(w)<w?g:A:f(w)<w?c(w)<w?m:b:y)(w)}function gc(t){const e=ur(t.format),n=ur(t.utcFormat);return{timeFormat:r=>Z(r)?e(r):pc(e,fp,r),utcFormat:r=>Z(r)?n(r):pc(n,hp,r),timeParse:ur(t.parse),utcParse:ur(t.utcParse)}}let ss;Ag();function Ag(){return ss=gc({format:is,parse:hc,utcFormat:os,utcParse:dc})}function xg(t){return gc(Ju(t))}function yg(t){return arguments.length?ss=xg(t):ss}const bg=/^(data:|([A-Za-z]+:)?\/\/)/,wg=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,vg=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,mc="file://";function Cg(t,e){return n=>({options:n||{},sanitize:Sg,load:Eg,fileAccess:!!e,file:Dg(e),http:Fg(t)})}async function Eg(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function Sg(t,e){e=Lo({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=wg.test(t.replace(vg,""));(t==null||typeof t!="string"||!a)&&X("Sanitize failure, invalid URI: "+ci(t));const u=bg.test(t);return(s=e.baseURL)&&!u&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(mc))||e.mode==="file"||e.mode!=="http"&&!u&&n,i?t=t.slice(mc.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),o=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),e.context==="image"&&e.crossOrigin&&(r.crossOrigin=e.crossOrigin+""),r}function Dg(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Bg}async function Bg(){X("No file system access.")}function Fg(t){return t?async function(e,n){const r=Lo({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?ge(o[i])?o[i]():o.text():X(o.status+""+o.statusText)}:Mg}async function Mg(){X("No HTTP fetch method available.")}const Ig=t=>t!=null&&t===t,Tg=t=>t==="true"||t==="false"||t===!0||t===!1,Pg=t=>!Number.isNaN(Date.parse(t)),Ac=t=>!Number.isNaN(+t)&&!(t instanceof Date),Lg=t=>Ac(t)&&Number.isInteger(+t),xc={boolean:yd,integer:Yn,number:Yn,date:wd,string:vd,unknown:ii},Ei=[Tg,Lg,Ac,Pg],Rg=["boolean","integer","number","date"];function kg(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=Ei.length,i=Ei.map((o,s)=>s+1);for(let o=0,s=0,a,u;o<n;++o)for(u=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&Ig(u)&&!Ei[a](u)&&(i[a]=0,++s,s===Ei.length))return"string";return Rg[i.reduce((o,s)=>o===0?s:o,0)-1]}function Ng(t,e){return e.reduce((n,r)=>(n[r]=kg(t,r),n),{})}function yc(t){const e=function(n,r){const i={delimiter:t};return as(n,r?Lo(r,i):i)};return e.responseType="text",e}function as(t,e){return e.header&&(t=e.header.map(ci).join(e.delimiter)+`
6
- `+t),vu(e.delimiter).parse(t+"")}as.responseType="text";function zg(t){return typeof Buffer=="function"&&ge(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function us(t,e){const n=e&&e.property?ri(e.property):ii;return ke(t)&&!zg(t)?Og(n(t),e):n(JSON.parse(t))}us.responseType="json";function Og(t,e){return!Me(t)&&Ad(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const Gg={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function bc(t,e){let n,r,i,o;return t=us(t,e),e&&e.feature?(n=Td,i=e.feature):e&&e.mesh?(n=Ld,i=e.mesh,o=Gg[e.filter]):X("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):X("Invalid TopoJSON object: "+i),r&&r.features||[r]}bc.responseType="json";const cs={dsv:as,csv:yc(","),tsv:yc(" "),json:us,topojson:bc};function wc(t,e){return arguments.length>1?(cs[t]=e,this):Tt(cs,t)?cs[t]:null}function vc(t,e,n,r){e=e||{};const i=wc(e.type||"json");return i||X("Unknown data format type: "+e.type),t=i(t,e),e.parse&&Ug(t,e.parse,n,r),Tt(t,"columns")&&delete t.columns,t}function Ug(t,e,n,r){if(!t.length)return;const i=yg();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),s,a,u,c,f,l;e==="auto"&&(e=Ng(t,o)),o=Object.keys(e);const h=o.map(p=>{const d=e[p];let g,A;if(d&&(d.startsWith("date:")||d.startsWith("utc:")))return g=d.split(/:(.+)?/,2),A=g[1],(A[0]==="'"&&A[A.length-1]==="'"||A[0]==='"'&&A[A.length-1]==='"')&&(A=A.slice(1,-1)),(g[0]==="utc"?r:n)(A);if(!xc[d])throw Error("Illegal format pattern: "+p+":"+d);return xc[d]});for(u=0,f=t.length,l=o.length;u<f;++u)for(s=t[u],c=0;c<l;++c)a=o[c],s[a]=h[c](s[a])}const Si=Cg(typeof fetch<"u"&&fetch,null);/**
5
+ `)}function c(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?Bd(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:u,formatRow:c,formatValue:f}}var Fd=Cu(" "),Md=Fd.parseRows;function Id(t){return t}function Td(t){if(t==null)return Id;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(a,u){u||(e=n=0);var c=2,f=a.length,l=new Array(f);for(l[0]=(e+=a[0])*r+o,l[1]=(n+=a[1])*i+s;c<f;)l[c]=a[c],++c;return l}}function Pd(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Ld(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Eu(t,n)})}:Eu(t,e)}function Eu(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=Su(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function Su(t,e){var n=Td(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var h=r[f<0?~f:f],p=0,d=h.length;p<d;++p)l.push(n(h[p],p));f<0&&Pd(l,d)}function o(f){return n(f)}function s(f){for(var l=[],h=0,p=f.length;h<p;++h)i(f[h],l);return l.length<2&&l.push(l[0]),l}function a(f){for(var l=s(f);l.length<4;)l.push(l[0]);return l}function u(f){return f.map(a)}function c(f){var l=f.type,h;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(c)};case"Point":h=o(f.coordinates);break;case"MultiPoint":h=f.coordinates.map(o);break;case"LineString":h=s(f.arcs);break;case"MultiLineString":h=f.arcs.map(s);break;case"Polygon":h=u(f.arcs);break;case"MultiPolygon":h=f.arcs.map(u);break;default:return null}return{type:l,coordinates:h}}return c(e)}function Rd(t,e){var n={},r={},i={},o=[],s=-1;e.forEach(function(c,f){var l=t.arcs[c<0?~c:c],h;l.length<3&&!l[1][0]&&!l[1][1]&&(h=e[++s],e[s]=c,e[f]=h)}),e.forEach(function(c){var f=a(c),l=f[0],h=f[1],p,d;if(p=i[l])if(delete i[p.end],p.push(c),p.end=h,d=r[h]){delete r[d.start];var g=d===p?p:p.concat(d);r[g.start=p.start]=i[g.end=d.end]=g}else r[p.start]=i[p.end]=p;else if(p=r[h])if(delete r[p.start],p.unshift(c),p.start=l,d=i[l]){delete i[d.end];var A=d===p?p:d.concat(p);r[A.start=d.start]=i[A.end=p.end]=A}else r[p.start]=i[p.end]=p;else p=[c],r[p.start=l]=i[p.end=h]=p});function a(c){var f=t.arcs[c<0?~c:c],l=f[0],h;return t.transform?(h=[0,0],f.forEach(function(p){h[0]+=p[0],h[1]+=p[1]})):h=f[f.length-1],c<0?[h,l]:[l,h]}function u(c,f){for(var l in c){var h=c[l];delete f[h.start],delete h.start,delete h.end,h.forEach(function(p){n[p<0?~p:p]=1}),o.push(h)}}return u(i,r),u(r,i),e.forEach(function(c){n[c<0?~c:c]||o.push([c])}),o}function kd(t){return Su(t,Nd.apply(this,arguments))}function Nd(t,e,n){var r,i,o;if(arguments.length>1)r=zd(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Rd(t,r)}}function zd(t,e,n){var r=[],i=[],o;function s(l){var h=l<0?~l:l;(i[h]||(i[h]=[])).push({i:l,g:o})}function a(l){l.forEach(s)}function u(l){l.forEach(a)}function c(l){l.forEach(u)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":a(l.arcs);break;case"MultiLineString":case"Polygon":u(l.arcs);break;case"MultiPolygon":c(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function Zn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Od(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function hi(t){let e,n,r;t.length!==2?(e=Zn,n=(a,u)=>Zn(t(a),u),r=(a,u)=>t(a)-u):(e=t===Zn||t===Od?t:Gd,n=t,r=t);function i(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<0?c=l+1:f=l}while(c<f)}return c}function o(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<=0?c=l+1:f=l}while(c<f)}return c}function s(a,u,c=0,f=a.length){const l=i(a,u,c,f-1);return l>c&&r(a[l-1],u)>-r(a[l],u)?l-1:l}return{left:i,center:s,right:o}}function Gd(){return 0}function Du(t){return t===null?NaN:+t}const Bu=hi(Zn),Oo=Bu.right;Bu.left,hi(Du).center;const an=Oo;function Ud(t,e){let n,r;if(e===void 0)for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class Pt extends Map{constructor(e,n=jd){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(Fu(this,e))}has(e){return super.has(Fu(this,e))}set(e,n){return super.set(Hd(this,e),n)}delete(e){return super.delete(Qd(this,e))}}function Fu({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Hd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Qd({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function jd(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Go(t){return t}function di(t,...e){return Mu(t,Go,Go,e)}function Vd(t,...e){return Mu(t,Array.from,Go,e)}function Mu(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new Pt,u=r[s++];let c=-1;for(const f of o){const l=u(f,++c,o),h=a.get(l);h?h.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}var Uo=Math.sqrt(50),Ho=Math.sqrt(10),Qo=Math.sqrt(2);function pi(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=Iu(t,e,n))===0||!isFinite(a))return[];if(a>0){let u=Math.round(t/a),c=Math.round(e/a);for(u*a<t&&++u,c*a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)*a}else{a=-a;let u=Math.round(t*a),c=Math.round(e*a);for(u/a<t&&++u,c/a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)/a}return r&&s.reverse(),s}function Iu(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>=Uo?10:o>=Ho?5:o>=Qo?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Uo?10:o>=Ho?5:o>=Qo?2:1)}function Lt(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>=Uo?i*=10:o>=Ho?i*=5:o>=Qo&&(i*=2),e<t?-i:i}function Tu(t,e,n=Du){if(!!(r=t.length)){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function Kn(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 gi(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function Yd(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function mi(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 un(t){return t=mi(Math.abs(t)),t?t[1]:NaN}function Wd(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],u=0;i>0&&a>0&&(u+a+1>r&&(a=Math.max(1,r-u)),o.push(n.substring(i-=a,i+a)),!((u+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function Xd(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Zd=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ft(t){if(!(e=Zd.exec(t)))throw new Error("invalid format: "+t);var e;return new jo({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]})}ft.prototype=jo.prototype;function jo(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+""}jo.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 Kd(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 Pu;function qd(t,e){var n=mi(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Pu=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")+mi(t,Math.max(0,e+o-1))[0]}function Lu(t,e){var n=mi(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 Ru={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Yd,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)=>Lu(t*100,e),r:Lu,s:qd,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function ku(t){return t}var Nu=Array.prototype.map,zu=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Jd(t){var e=t.grouping===void 0||t.thousands===void 0?ku:Wd(Nu.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?ku:Xd(Nu.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(l){l=ft(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,A=l.zero,m=l.width,b=l.comma,y=l.precision,w=l.trim,E=l.type;E==="n"?(b=!0,E="g"):Ru[E]||(y===void 0&&(y=12),w=!0,E="g"),(A||h==="0"&&p==="=")&&(A=!0,h="0",p="=");var C=g==="$"?n:g==="#"&&/[boxX]/.test(E)?"0"+E.toLowerCase():"",B=g==="$"?r:/[%p]/.test(E)?s:"",I=Ru[E],P=/[defgprs%]/.test(E);y=y===void 0?6:/[gprs]/.test(E)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y));function U(M){var ve=C,oe=B,Se,et,De;if(E==="c")oe=I(M)+oe,M="";else{M=+M;var jn=M<0||1/M<0;if(M=isNaN(M)?u:I(Math.abs(M),y),w&&(M=Kd(M)),jn&&+M==0&&d!=="+"&&(jn=!1),ve=(jn?d==="("?d:a:d==="-"||d==="("?"":d)+ve,oe=(E==="s"?zu[8+Pu/3]:"")+oe+(jn&&d==="("?")":""),P){for(Se=-1,et=M.length;++Se<et;)if(De=M.charCodeAt(Se),48>De||De>57){oe=(De===46?i+M.slice(Se+1):M.slice(Se))+oe,M=M.slice(0,Se);break}}}b&&!A&&(M=e(M,1/0));var Vn=ve.length+M.length+oe.length,Ve=Vn<m?new Array(m-Vn+1).join(h):"";switch(b&&A&&(M=e(Ve+M,Ve.length?m-oe.length:1/0),Ve=""),p){case"<":M=ve+M+oe+Ve;break;case"=":M=ve+Ve+M+oe;break;case"^":M=Ve.slice(0,Vn=Ve.length>>1)+ve+M+oe+Ve.slice(Vn);break;default:M=Ve+ve+M+oe;break}return o(M)}return U.toString=function(){return l+""},U}function f(l,h){var p=c((l=ft(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(un(h)/3)))*3,g=Math.pow(10,-d),A=zu[8+d/3];return function(m){return p(g*m)+A}}return{format:c,formatPrefix:f}}var Ai,se,Vo;_d({thousands:",",grouping:[3],currency:["$",""]});function _d(t){return Ai=Jd(t),se=Ai.format,Vo=Ai.formatPrefix,Ai}function Ou(t){return Math.max(0,-un(Math.abs(t)))}function Gu(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(un(e)/3)))*3-un(Math.abs(t)))}function Uu(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,un(e)-un(t))+1}var Yo=new Date,Wo=new Date;function $(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return t(o=new Date(+o)),o},i.ceil=function(o){return t(o=new Date(o-1)),e(o,1),t(o),o},i.round=function(o){var s=i(o),a=i.ceil(o);return o-s<a-o?s:a},i.offset=function(o,s){return e(o=new Date(+o),s==null?1:Math.floor(s)),o},i.range=function(o,s,a){var u=[],c;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return u;do u.push(c=new Date(+o)),e(o,a),t(o);while(c<o&&o<s);return u},i.filter=function(o){return $(function(s){if(s>=s)for(;t(s),!o(s);)s.setTime(s-1)},function(s,a){if(s>=s)if(a<0)for(;++a<=0;)for(;e(s,-1),!o(s););else for(;--a>=0;)for(;e(s,1),!o(s););})},n&&(i.count=function(o,s){return Yo.setTime(+o),Wo.setTime(+s),t(Yo),t(Wo),Math.floor(n(Yo,Wo))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(s){return r(s)%o===0}:function(s){return i.count(0,s)%o===0}):i}),i}var xi=$(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});xi.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?$(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):xi};const Xo=xi;xi.range;const tt=1e3,Ie=tt*60,nt=Ie*60,Rt=nt*24,Zo=Rt*7,Hu=Rt*30,Ko=Rt*365;var Qu=$(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*tt)},function(t,e){return(e-t)/tt},function(t){return t.getUTCSeconds()});const ht=Qu;Qu.range;var ju=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*tt)},function(t,e){t.setTime(+t+e*Ie)},function(t,e){return(e-t)/Ie},function(t){return t.getMinutes()});const qo=ju;ju.range;var Vu=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*tt-t.getMinutes()*Ie)},function(t,e){t.setTime(+t+e*nt)},function(t,e){return(e-t)/nt},function(t){return t.getHours()});const Jo=Vu;Vu.range;var Yu=$(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ie)/Rt,t=>t.getDate()-1);const kt=Yu;Yu.range;function Nt(t){return $(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*Ie)/Zo})}var qn=Nt(0),yi=Nt(1),$d=Nt(2),ep=Nt(3),cn=Nt(4),tp=Nt(5),np=Nt(6);qn.range,yi.range,$d.range,ep.range,cn.range,tp.range,np.range;var Wu=$(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()});const bi=Wu;Wu.range;var _o=$(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});_o.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};const dt=_o;_o.range;var Xu=$(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ie)},function(t,e){return(e-t)/Ie},function(t){return t.getUTCMinutes()});const $o=Xu;Xu.range;var Zu=$(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*nt)},function(t,e){return(e-t)/nt},function(t){return t.getUTCHours()});const es=Zu;Zu.range;var Ku=$(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Rt},function(t){return t.getUTCDate()-1});const zt=Ku;Ku.range;function Ot(t){return $(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/Zo})}var Jn=Ot(0),wi=Ot(1),rp=Ot(2),ip=Ot(3),ln=Ot(4),op=Ot(5),sp=Ot(6);Jn.range,wi.range,rp.range,ip.range,ln.range,op.range,sp.range;var qu=$(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()});const vi=qu;qu.range;var ts=$(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});ts.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};const pt=ts;ts.range;function Ju(t,e,n,r,i,o){const s=[[ht,1,tt],[ht,5,5*tt],[ht,15,15*tt],[ht,30,30*tt],[o,1,Ie],[o,5,5*Ie],[o,15,15*Ie],[o,30,30*Ie],[i,1,nt],[i,3,3*nt],[i,6,6*nt],[i,12,12*nt],[r,1,Rt],[r,2,2*Rt],[n,1,Zo],[e,1,Hu],[e,3,3*Hu],[t,1,Ko]];function a(c,f,l){const h=f<c;h&&([c,f]=[f,c]);const p=l&&typeof l.range=="function"?l:u(c,f,l),d=p?p.range(c,+f+1):[];return h?d.reverse():d}function u(c,f,l){const h=Math.abs(f-c)/l,p=hi(([,,A])=>A).right(s,h);if(p===s.length)return t.every(Lt(c/Ko,f/Ko,l));if(p===0)return Xo.every(Math.max(Lt(c,f,l),1));const[d,g]=s[h/s[p-1][2]<s[p][2]/h?p-1:p];return d.every(g)}return[a,u]}const[ap,up]=Ju(pt,vi,Jn,zt,es,$o),[cp,lp]=Ju(dt,bi,qn,kt,Jo,qo),_n="year",$n="quarter",er="month",tr="week",nr="date",Ci="day",ns="dayofyear",rr="hours",ir="minutes",or="seconds",Ei="milliseconds";[_n,$n,er,tr,nr,Ci,ns,rr,ir,or,Ei].reduce((t,e,n)=>(t[e]=1+n,t),{});const fp={[_n]:dt,[$n]:bi.every(3),[er]:bi,[tr]:qn,[nr]:kt,[Ci]:kt,[ns]:kt,[rr]:Jo,[ir]:qo,[or]:ht,[Ei]:Xo},hp={[_n]:pt,[$n]:vi.every(3),[er]:vi,[tr]:Jn,[nr]:zt,[Ci]:zt,[ns]:zt,[rr]:es,[ir]:$o,[or]:ht,[Ei]:Xo};function dp(t){return fp[t]}function pp(t){return hp[t]}function rs(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function is(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function sr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function _u(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,u=t.shortMonths,c=ar(i),f=ur(i),l=ar(o),h=ur(o),p=ar(s),d=ur(s),g=ar(a),A=ur(a),m=ar(u),b=ur(u),y={a:jn,A:Vn,b:Ve,B:aE,c:null,d:ic,e:ic,f:zp,g:Xp,G:Kp,H:Rp,I:kp,j:Np,L:oc,m:Op,M:Gp,p:uE,q:cE,Q:fc,s:hc,S:Up,u:Hp,U:Qp,V:jp,w:Vp,W:Yp,x:null,X:null,y:Wp,Y:Zp,Z:qp,"%":lc},w={a:lE,A:fE,b:hE,B:dE,c:null,d:ac,e:ac,f:eg,g:lg,G:hg,H:Jp,I:_p,j:$p,L:uc,m:tg,M:ng,p:pE,q:gE,Q:fc,s:hc,S:rg,u:ig,U:og,V:sg,w:ag,W:ug,x:null,X:null,y:cg,Y:fg,Z:dg,"%":lc},E={a:U,A:M,b:ve,B:oe,c:Se,d:nc,e:nc,f:Ip,g:tc,G:ec,H:rc,I:rc,j:Dp,L:Mp,m:Sp,M:Bp,p:P,q:Ep,Q:Pp,s:Lp,S:Fp,u:yp,U:bp,V:wp,w:xp,W:vp,x:et,X:De,y:tc,Y:ec,Z:Cp,"%":Tp};y.x=C(n,y),y.X=C(r,y),y.c=C(e,y),w.x=C(n,w),w.X=C(r,w),w.c=C(e,w);function C(D,L){return function(z){var v=[],Ce=-1,Q=0,Be=D.length,Fe,sn,qh;for(z instanceof Date||(z=new Date(+z));++Ce<Be;)D.charCodeAt(Ce)===37&&(v.push(D.slice(Q,Ce)),(sn=$u[Fe=D.charAt(++Ce)])!=null?Fe=D.charAt(++Ce):sn=Fe==="e"?" ":"0",(qh=L[Fe])&&(Fe=qh(z,sn)),v.push(Fe),Q=Ce+1);return v.push(D.slice(Q,Ce)),v.join("")}}function B(D,L){return function(z){var v=sr(1900,void 0,1),Ce=I(v,D,z+="",0),Q,Be;if(Ce!=z.length)return null;if("Q"in v)return new Date(v.Q);if("s"in v)return new Date(v.s*1e3+("L"in v?v.L:0));if(L&&!("Z"in v)&&(v.Z=0),"p"in v&&(v.H=v.H%12+v.p*12),v.m===void 0&&(v.m="q"in v?v.q:0),"V"in v){if(v.V<1||v.V>53)return null;"w"in v||(v.w=1),"Z"in v?(Q=is(sr(v.y,0,1)),Be=Q.getUTCDay(),Q=Be>4||Be===0?wi.ceil(Q):wi(Q),Q=zt.offset(Q,(v.V-1)*7),v.y=Q.getUTCFullYear(),v.m=Q.getUTCMonth(),v.d=Q.getUTCDate()+(v.w+6)%7):(Q=rs(sr(v.y,0,1)),Be=Q.getDay(),Q=Be>4||Be===0?yi.ceil(Q):yi(Q),Q=kt.offset(Q,(v.V-1)*7),v.y=Q.getFullYear(),v.m=Q.getMonth(),v.d=Q.getDate()+(v.w+6)%7)}else("W"in v||"U"in v)&&("w"in v||(v.w="u"in v?v.u%7:"W"in v?1:0),Be="Z"in v?is(sr(v.y,0,1)).getUTCDay():rs(sr(v.y,0,1)).getDay(),v.m=0,v.d="W"in v?(v.w+6)%7+v.W*7-(Be+5)%7:v.w+v.U*7-(Be+6)%7);return"Z"in v?(v.H+=v.Z/100|0,v.M+=v.Z%100,is(v)):rs(v)}}function I(D,L,z,v){for(var Ce=0,Q=L.length,Be=z.length,Fe,sn;Ce<Q;){if(v>=Be)return-1;if(Fe=L.charCodeAt(Ce++),Fe===37){if(Fe=L.charAt(Ce++),sn=E[Fe in $u?L.charAt(Ce++):Fe],!sn||(v=sn(D,z,v))<0)return-1}else if(Fe!=z.charCodeAt(v++))return-1}return v}function P(D,L,z){var v=c.exec(L.slice(z));return v?(D.p=f.get(v[0].toLowerCase()),z+v[0].length):-1}function U(D,L,z){var v=p.exec(L.slice(z));return v?(D.w=d.get(v[0].toLowerCase()),z+v[0].length):-1}function M(D,L,z){var v=l.exec(L.slice(z));return v?(D.w=h.get(v[0].toLowerCase()),z+v[0].length):-1}function ve(D,L,z){var v=m.exec(L.slice(z));return v?(D.m=b.get(v[0].toLowerCase()),z+v[0].length):-1}function oe(D,L,z){var v=g.exec(L.slice(z));return v?(D.m=A.get(v[0].toLowerCase()),z+v[0].length):-1}function Se(D,L,z){return I(D,e,L,z)}function et(D,L,z){return I(D,n,L,z)}function De(D,L,z){return I(D,r,L,z)}function jn(D){return s[D.getDay()]}function Vn(D){return o[D.getDay()]}function Ve(D){return u[D.getMonth()]}function aE(D){return a[D.getMonth()]}function uE(D){return i[+(D.getHours()>=12)]}function cE(D){return 1+~~(D.getMonth()/3)}function lE(D){return s[D.getUTCDay()]}function fE(D){return o[D.getUTCDay()]}function hE(D){return u[D.getUTCMonth()]}function dE(D){return a[D.getUTCMonth()]}function pE(D){return i[+(D.getUTCHours()>=12)]}function gE(D){return 1+~~(D.getUTCMonth()/3)}return{format:function(D){var L=C(D+="",y);return L.toString=function(){return D},L},parse:function(D){var L=B(D+="",!1);return L.toString=function(){return D},L},utcFormat:function(D){var L=C(D+="",w);return L.toString=function(){return D},L},utcParse:function(D){var L=B(D+="",!0);return L.toString=function(){return D},L}}}var $u={"-":"",_:" ",0:"0"},ee=/^\s*\d+/,gp=/^%/,mp=/[\\^$*+?|[\]().{}]/g;function k(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function Ap(t){return t.replace(mp,"\\$&")}function ar(t){return new RegExp("^(?:"+t.map(Ap).join("|")+")","i")}function ur(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function xp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function yp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function bp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function wp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function vp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function ec(t,e,n){var r=ee.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function tc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Cp(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Ep(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Sp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function nc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Dp(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function rc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Bp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Fp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Mp(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Ip(t,e,n){var r=ee.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Tp(t,e,n){var r=gp.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Pp(t,e,n){var r=ee.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Lp(t,e,n){var r=ee.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function ic(t,e){return k(t.getDate(),e,2)}function Rp(t,e){return k(t.getHours(),e,2)}function kp(t,e){return k(t.getHours()%12||12,e,2)}function Np(t,e){return k(1+kt.count(dt(t),t),e,3)}function oc(t,e){return k(t.getMilliseconds(),e,3)}function zp(t,e){return oc(t,e)+"000"}function Op(t,e){return k(t.getMonth()+1,e,2)}function Gp(t,e){return k(t.getMinutes(),e,2)}function Up(t,e){return k(t.getSeconds(),e,2)}function Hp(t){var e=t.getDay();return e===0?7:e}function Qp(t,e){return k(qn.count(dt(t)-1,t),e,2)}function sc(t){var e=t.getDay();return e>=4||e===0?cn(t):cn.ceil(t)}function jp(t,e){return t=sc(t),k(cn.count(dt(t),t)+(dt(t).getDay()===4),e,2)}function Vp(t){return t.getDay()}function Yp(t,e){return k(yi.count(dt(t)-1,t),e,2)}function Wp(t,e){return k(t.getFullYear()%100,e,2)}function Xp(t,e){return t=sc(t),k(t.getFullYear()%100,e,2)}function Zp(t,e){return k(t.getFullYear()%1e4,e,4)}function Kp(t,e){var n=t.getDay();return t=n>=4||n===0?cn(t):cn.ceil(t),k(t.getFullYear()%1e4,e,4)}function qp(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+k(e/60|0,"0",2)+k(e%60,"0",2)}function ac(t,e){return k(t.getUTCDate(),e,2)}function Jp(t,e){return k(t.getUTCHours(),e,2)}function _p(t,e){return k(t.getUTCHours()%12||12,e,2)}function $p(t,e){return k(1+zt.count(pt(t),t),e,3)}function uc(t,e){return k(t.getUTCMilliseconds(),e,3)}function eg(t,e){return uc(t,e)+"000"}function tg(t,e){return k(t.getUTCMonth()+1,e,2)}function ng(t,e){return k(t.getUTCMinutes(),e,2)}function rg(t,e){return k(t.getUTCSeconds(),e,2)}function ig(t){var e=t.getUTCDay();return e===0?7:e}function og(t,e){return k(Jn.count(pt(t)-1,t),e,2)}function cc(t){var e=t.getUTCDay();return e>=4||e===0?ln(t):ln.ceil(t)}function sg(t,e){return t=cc(t),k(ln.count(pt(t),t)+(pt(t).getUTCDay()===4),e,2)}function ag(t){return t.getUTCDay()}function ug(t,e){return k(wi.count(pt(t)-1,t),e,2)}function cg(t,e){return k(t.getUTCFullYear()%100,e,2)}function lg(t,e){return t=cc(t),k(t.getUTCFullYear()%100,e,2)}function fg(t,e){return k(t.getUTCFullYear()%1e4,e,4)}function hg(t,e){var n=t.getUTCDay();return t=n>=4||n===0?ln(t):ln.ceil(t),k(t.getUTCFullYear()%1e4,e,4)}function dg(){return"+0000"}function lc(){return"%"}function fc(t){return+t}function hc(t){return Math.floor(+t/1e3)}var fn,os,dc,ss,pc;pg({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function pg(t){return fn=_u(t),os=fn.format,dc=fn.parse,ss=fn.utcFormat,pc=fn.utcParse,fn}function cr(t){const e={};return n=>e[n]||(e[n]=t(n))}function gg(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=mg(r,i);const s=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function mg(t,e){let n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}function Ag(t){const e=cr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=ft(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return gg(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=ft(s==null?",f":s);const a=Lt(r,i,o),u=Math.max(Math.abs(r),Math.abs(i));let c;if(s.precision==null)switch(s.type){case"s":return isNaN(c=Gu(a,u))||(s.precision=c),n(s,u);case"":case"e":case"g":case"p":case"r":{isNaN(c=Uu(a,u))||(s.precision=c-(s.type==="e"));break}case"f":case"%":{isNaN(c=Ou(a))||(s.precision=c-(s.type==="%")*2);break}}return e(s)}}}xg();function xg(){return Ag({format:se,formatPrefix:Vo})}function gc(t,e,n){n=n||{},ke(n)||X("Invalid time multi-format specifier: ".concat(n));const r=e(or),i=e(ir),o=e(rr),s=e(nr),a=e(tr),u=e(er),c=e($n),f=e(_n),l=t(n[Ei]||".%L"),h=t(n[or]||":%S"),p=t(n[ir]||"%I:%M"),d=t(n[rr]||"%I %p"),g=t(n[nr]||n[Ci]||"%a %d"),A=t(n[tr]||"%b %d"),m=t(n[er]||"%B"),b=t(n[$n]||"%B"),y=t(n[_n]||"%Y");return w=>(r(w)<w?l:i(w)<w?h:o(w)<w?p:s(w)<w?d:u(w)<w?a(w)<w?g:A:f(w)<w?c(w)<w?m:b:y)(w)}function mc(t){const e=cr(t.format),n=cr(t.utcFormat);return{timeFormat:r=>Z(r)?e(r):gc(e,dp,r),utcFormat:r=>Z(r)?n(r):gc(n,pp,r),timeParse:cr(t.parse),utcParse:cr(t.utcParse)}}let as;yg();function yg(){return as=mc({format:os,parse:dc,utcFormat:ss,utcParse:pc})}function bg(t){return mc(_u(t))}function wg(t){return arguments.length?as=bg(t):as}const vg=/^(data:|([A-Za-z]+:)?\/\/)/,Cg=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Eg=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Ac="file://";function Sg(t,e){return n=>({options:n||{},sanitize:Bg,load:Dg,fileAccess:!!e,file:Fg(e),http:Ig(t)})}async function Dg(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function Bg(t,e){e=Ro({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=Cg.test(t.replace(Eg,""));(t==null||typeof t!="string"||!a)&&X("Sanitize failure, invalid URI: "+li(t));const u=vg.test(t);return(s=e.baseURL)&&!u&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(Ac))||e.mode==="file"||e.mode!=="http"&&!u&&n,i?t=t.slice(Ac.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),o=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),e.context==="image"&&e.crossOrigin&&(r.crossOrigin=e.crossOrigin+""),r}function Fg(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Mg}async function Mg(){X("No file system access.")}function Ig(t){return t?async function(e,n){const r=Ro({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?ge(o[i])?o[i]():o.text():X(o.status+""+o.statusText)}:Tg}async function Tg(){X("No HTTP fetch method available.")}const Pg=t=>t!=null&&t===t,Lg=t=>t==="true"||t==="false"||t===!0||t===!1,Rg=t=>!Number.isNaN(Date.parse(t)),xc=t=>!Number.isNaN(+t)&&!(t instanceof Date),kg=t=>xc(t)&&Number.isInteger(+t),yc={boolean:wd,integer:Wn,number:Wn,date:Cd,string:Ed,unknown:oi},Si=[Lg,kg,xc,Rg],Ng=["boolean","integer","number","date"];function zg(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=Si.length,i=Si.map((o,s)=>s+1);for(let o=0,s=0,a,u;o<n;++o)for(u=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&Pg(u)&&!Si[a](u)&&(i[a]=0,++s,s===Si.length))return"string";return Ng[i.reduce((o,s)=>o===0?s:o,0)-1]}function Og(t,e){return e.reduce((n,r)=>(n[r]=zg(t,r),n),{})}function bc(t){const e=function(n,r){const i={delimiter:t};return us(n,r?Ro(r,i):i)};return e.responseType="text",e}function us(t,e){return e.header&&(t=e.header.map(li).join(e.delimiter)+`
6
+ `+t),Cu(e.delimiter).parse(t+"")}us.responseType="text";function Gg(t){return typeof Buffer=="function"&&ge(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function cs(t,e){const n=e&&e.property?ii(e.property):oi;return ke(t)&&!Gg(t)?Ug(n(t),e):n(JSON.parse(t))}cs.responseType="json";function Ug(t,e){return!Me(t)&&yd(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const Hg={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function wc(t,e){let n,r,i,o;return t=cs(t,e),e&&e.feature?(n=Ld,i=e.feature):e&&e.mesh?(n=kd,i=e.mesh,o=Hg[e.filter]):X("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):X("Invalid TopoJSON object: "+i),r&&r.features||[r]}wc.responseType="json";const ls={dsv:us,csv:bc(","),tsv:bc(" "),json:cs,topojson:wc};function vc(t,e){return arguments.length>1?(ls[t]=e,this):Tt(ls,t)?ls[t]:null}function Cc(t,e,n,r){e=e||{};const i=vc(e.type||"json");return i||X("Unknown data format type: "+e.type),t=i(t,e),e.parse&&Qg(t,e.parse,n,r),Tt(t,"columns")&&delete t.columns,t}function Qg(t,e,n,r){if(!t.length)return;const i=wg();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),s,a,u,c,f,l;e==="auto"&&(e=Og(t,o)),o=Object.keys(e);const h=o.map(p=>{const d=e[p];let g,A;if(d&&(d.startsWith("date:")||d.startsWith("utc:")))return g=d.split(/:(.+)?/,2),A=g[1],(A[0]==="'"&&A[A.length-1]==="'"||A[0]==='"'&&A[A.length-1]==='"')&&(A=A.slice(1,-1)),(g[0]==="utc"?r:n)(A);if(!yc[d])throw Error("Illegal format pattern: "+p+":"+d);return yc[d]});for(u=0,f=t.length,l=o.length;u<f;++u)for(s=t[u],c=0;c<l;++c)a=o[c],s[a]=h[c](s[a])}const Di=Sg(typeof fetch<"u"&&fetch,null);/**
7
7
  * @license
8
8
  * Copyright 2017 Google LLC
9
9
  * SPDX-License-Identifier: BSD-3-Clause
10
- */var ls;const hn=globalThis.trustedTypes,Cc=hn?hn.createPolicy("lit-html",{createHTML:t=>t}):void 0,gt=`lit$${(Math.random()+"").slice(9)}$`,Ec="?"+gt,Hg=`<${Ec}>`,dn=document,cr=(t="")=>dn.createComment(t),lr=t=>t===null||typeof t!="object"&&typeof t!="function",Sc=Array.isArray,Qg=t=>{var e;return Sc(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},fr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Dc=/-->/g,Bc=/>/g,Gt=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,Fc=/'/g,Mc=/"/g,Ic=/^(?:script|style|textarea|title)$/i,jg=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),rt=jg(1),hr=Symbol.for("lit-noChange"),te=Symbol.for("lit-nothing"),Tc=new WeakMap,Pc=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let s=o._$litPart$;if(s===void 0){const a=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=s=new pr(e.insertBefore(cr(),a),a,void 0,n!=null?n:{})}return s._$AI(t),s},pn=dn.createTreeWalker(dn,129,null,!1),Vg=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=fr;for(let u=0;u<n;u++){const c=t[u];let f,l,h=-1,p=0;for(;p<c.length&&(s.lastIndex=p,l=s.exec(c),l!==null);)p=s.lastIndex,s===fr?l[1]==="!--"?s=Dc:l[1]!==void 0?s=Bc:l[2]!==void 0?(Ic.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=Gt):l[3]!==void 0&&(s=Gt):s===Gt?l[0]===">"?(s=i!=null?i:fr,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?Gt:l[3]==='"'?Mc:Fc):s===Mc||s===Fc?s=Gt:s===Dc||s===Bc?s=fr:(s=Gt,i=void 0);const d=s===Gt&&t[u+1].startsWith("/>")?" ":"";o+=s===fr?c+Hg:h>=0?(r.push(f),c.slice(0,h)+"$lit$"+c.slice(h)+gt+d):c+gt+(h===-2?(r.push(void 0),u):d)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[Cc!==void 0?Cc.createHTML(a):a,r]};class dr{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,s=0;const a=e.length-1,u=this.parts,[c,f]=Vg(e,n);if(this.el=dr.createElement(c,r),pn.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=pn.nextNode())!==null&&u.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(gt)){const p=f[s++];if(l.push(h),p!==void 0){const d=i.getAttribute(p.toLowerCase()+"$lit$").split(gt),g=/([.?@])?(.*)/.exec(p);u.push({type:1,index:o,name:g[2],strings:d,ctor:g[1]==="."?Wg:g[1]==="?"?Zg:g[1]==="@"?Kg:Di})}else u.push({type:6,index:o})}for(const h of l)i.removeAttribute(h)}if(Ic.test(i.tagName)){const l=i.textContent.split(gt),h=l.length-1;if(h>0){i.textContent=hn?hn.emptyScript:"";for(let p=0;p<h;p++)i.append(l[p],cr()),pn.nextNode(),u.push({type:2,index:++o});i.append(l[h],cr())}}}else if(i.nodeType===8)if(i.data===Ec)u.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(gt,l+1))!==-1;)u.push({type:7,index:o}),l+=gt.length-1}o++}}static createElement(e,n){const r=dn.createElement("template");return r.innerHTML=e,r}}function gn(t,e,n=t,r){var i,o,s,a;if(e===hr)return e;let u=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const c=lr(e)?void 0:e._$litDirective$;return(u==null?void 0:u.constructor)!==c&&((o=u==null?void 0:u._$AO)===null||o===void 0||o.call(u,!1),c===void 0?u=void 0:(u=new c(t),u._$AT(t,n,r)),r!==void 0?((s=(a=n)._$Cl)!==null&&s!==void 0?s:a._$Cl=[])[r]=u:n._$Cu=u),u!==void 0&&(e=gn(t,u._$AS(t,e.values),u,r)),e}class Yg{constructor(e,n){this.v=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:dn).importNode(r,!0);pn.currentNode=o;let s=pn.nextNode(),a=0,u=0,c=i[0];for(;c!==void 0;){if(a===c.index){let f;c.type===2?f=new pr(s,s.nextSibling,this,e):c.type===1?f=new c.ctor(s,c.name,c.strings,this,e):c.type===6&&(f=new qg(s,this,e)),this.v.push(f),c=i[++u]}a!==(c==null?void 0:c.index)&&(s=pn.nextNode(),a++)}return o}m(e){let n=0;for(const r of this.v)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class pr{constructor(e,n,r,i){var o;this.type=2,this._$AH=te,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cg=(o=i==null?void 0:i.isConnected)===null||o===void 0||o}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cg}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=gn(this,e,n),lr(e)?e===te||e==null||e===""?(this._$AH!==te&&this._$AR(),this._$AH=te):e!==this._$AH&&e!==hr&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.k(e):Qg(e)?this.S(e):this.$(e)}M(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}k(e){this._$AH!==e&&(this._$AR(),this._$AH=this.M(e))}$(e){this._$AH!==te&&lr(this._$AH)?this._$AA.nextSibling.data=e:this.k(dn.createTextNode(e)),this._$AH=e}T(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=dr.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.m(r);else{const s=new Yg(o,this),a=s.p(this.options);s.m(r),this.k(a),this._$AH=s}}_$AC(e){let n=Tc.get(e.strings);return n===void 0&&Tc.set(e.strings,n=new dr(e)),n}S(e){Sc(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const o of e)i===n.length?n.push(r=new pr(this.M(cr()),this.M(cr()),this,this.options)):r=n[i],r._$AI(o),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,n){var r;for((r=this._$AP)===null||r===void 0||r.call(this,!1,!0,n);e&&e!==this._$AB;){const i=e.nextSibling;e.remove(),e=i}}setConnected(e){var n;this._$AM===void 0&&(this._$Cg=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Di{constructor(e,n,r,i,o){this.type=1,this._$AH=te,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=te}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let s=!1;if(o===void 0)e=gn(this,e,n,0),s=!lr(e)||e!==this._$AH&&e!==hr,s&&(this._$AH=e);else{const a=e;let u,c;for(e=o[0],u=0;u<o.length-1;u++)c=gn(this,a[r+u],n,u),c===hr&&(c=this._$AH[u]),s||(s=!lr(c)||c!==this._$AH[u]),c===te?e=te:e!==te&&(e+=(c!=null?c:"")+o[u+1]),this._$AH[u]=c}s&&!i&&this.C(e)}C(e){e===te?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Wg extends Di{constructor(){super(...arguments),this.type=3}C(e){this.element[this.name]=e===te?void 0:e}}const Xg=hn?hn.emptyScript:"";class Zg extends Di{constructor(){super(...arguments),this.type=4}C(e){e&&e!==te?this.element.setAttribute(this.name,Xg):this.element.removeAttribute(this.name)}}class Kg extends Di{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=gn(this,e,n,0))!==null&&r!==void 0?r:te)===hr)return;const i=this._$AH,o=e===te&&i!==te||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==te&&(i===te||o);o&&this.element.removeEventListener(this.name,this,i),s&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var n,r;typeof this._$AH=="function"?this._$AH.call((r=(n=this.options)===null||n===void 0?void 0:n.host)!==null&&r!==void 0?r:this.element,e):this._$AH.handleEvent(e)}}class qg{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){gn(this,e)}}const Lc=window.litHtmlPolyfillSupport;Lc==null||Lc(dr,pr),((ls=globalThis.litHtmlVersions)!==null&&ls!==void 0?ls:globalThis.litHtmlVersions=[]).push("2.2.3");const Rc=1;function fs(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const c=f=>(f+s-t[0])/n*r+e[0];return c.invert=f=>(f-e[0])/r*n+t[0]-s,c.domain=function(f){if(arguments.length){if(t=Od(f),n=t[1]-t[0],n<Rc){n=Rc;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return c}else return t},c.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],c):e},c.numberingOffset=function(f){return arguments.length?(a=f,c):a},c.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),c):i},c.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),c):i},c.paddingOuter=function(f){return arguments.length?(o=f,c):o},c.align=function(f){return arguments.length?(s=Math.max(0,Math.min(1,f)),c):s},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=f=>{const l=c.align(),h=c.numberingOffset();return di(t[0]-l+h,t[1]-l+h,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(p=>p-a)},c.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const p=Lt(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?se(","):se(".3s");return d=>p(d+a)},c.copy=()=>fs().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),c}function Jg(){const t=fs().numberingOffset(1);let e;t.genome=function(r){return arguments.length?(e=r,t):e},t.ticks=r=>{if(!e)return[];const i=t.domain(),o=t.numberingOffset(),[s,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),u=Math.max(1,Lt(i[0],i[1],r)),c=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+u,i[0]-(i[0]-l.continuousStart)%u),p=Math.min(l.continuousEnd-u/4,i[1]+1);for(let d=h;d<=p;d+=u){const g=d-o;g>=i[0]&&g<i[1]&&c.push(g)}}return c},t.tickFormat=(r,i)=>{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const o=t.domain(),s=o[1]-o[0],a=t.numberingOffset(),c=Lt(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?se(","):se(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>c(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function _g(t){return t.type=="locus"}function Ye(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function mt(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const hs=Symbol("implicit");function ds(){var t=new Pt,e=[],n=[],r=hs;function i(o){let s=t.get(o);if(s===void 0){if(r!==hs)return r;t.set(o,s=e.push(o)-1)}return n[s%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Pt;for(const s of o)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return ds(e,n).unknown(r)},Ye.apply(i,arguments),i}function mn(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function gr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function At(){}var Ut=.7,An=1/Ut,xn="\\s*([+-]?\\d+)\\s*",mr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",We="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",$g=/^#([0-9a-f]{3,8})$/,em=new RegExp(`^rgb\\(${xn},${xn},${xn}\\)$`),tm=new RegExp(`^rgb\\(${We},${We},${We}\\)$`),nm=new RegExp(`^rgba\\(${xn},${xn},${xn},${mr}\\)$`),rm=new RegExp(`^rgba\\(${We},${We},${We},${mr}\\)$`),im=new RegExp(`^hsl\\(${mr},${We},${We}\\)$`),om=new RegExp(`^hsla\\(${mr},${We},${We},${mr}\\)$`),kc={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};mn(At,Ht,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Nc,formatHex:Nc,formatHex8:sm,formatHsl:am,formatRgb:zc,toString:zc});function Nc(){return this.rgb().formatHex()}function sm(){return this.rgb().formatHex8()}function am(){return Qc(this).formatHsl()}function zc(){return this.rgb().formatRgb()}function Ht(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=$g.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Oc(e):n===3?new ne(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Bi(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Bi(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=em.exec(t))?new ne(e[1],e[2],e[3],1):(e=tm.exec(t))?new ne(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=nm.exec(t))?Bi(e[1],e[2],e[3],e[4]):(e=rm.exec(t))?Bi(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=im.exec(t))?Hc(e[1],e[2]/100,e[3]/100,1):(e=om.exec(t))?Hc(e[1],e[2]/100,e[3]/100,e[4]):kc.hasOwnProperty(t)?Oc(kc[t]):t==="transparent"?new ne(NaN,NaN,NaN,0):null}function Oc(t){return new ne(t>>16&255,t>>8&255,t&255,1)}function Bi(t,e,n,r){return r<=0&&(t=e=n=NaN),new ne(t,e,n,r)}function ps(t){return t instanceof At||(t=Ht(t)),t?(t=t.rgb(),new ne(t.r,t.g,t.b,t.opacity)):new ne}function Fi(t,e,n,r){return arguments.length===1?ps(t):new ne(t,e,n,r==null?1:r)}function ne(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}mn(ne,Fi,gr(At,{brighter(t){return t=t==null?An:Math.pow(An,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Ut:Math.pow(Ut,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ne(Qt(this.r),Qt(this.g),Qt(this.b),Mi(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:Gc,formatHex:Gc,formatHex8:um,formatRgb:Uc,toString:Uc}));function Gc(){return`#${jt(this.r)}${jt(this.g)}${jt(this.b)}`}function um(){return`#${jt(this.r)}${jt(this.g)}${jt(this.b)}${jt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Uc(){const t=Mi(this.opacity);return`${t===1?"rgb(":"rgba("}${Qt(this.r)}, ${Qt(this.g)}, ${Qt(this.b)}${t===1?")":`, ${t})`}`}function Mi(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Qt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function jt(t){return t=Qt(t),(t<16?"0":"")+t.toString(16)}function Hc(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new ze(t,e,n,r)}function Qc(t){if(t instanceof ze)return new ze(t.h,t.s,t.l,t.opacity);if(t instanceof At||(t=Ht(t)),!t)return new ze;if(t instanceof ze)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,a=o-i,u=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=u<.5?o+i:2-o-i,s*=60):a=u>0&&u<1?0:s,new ze(s,a,u,t.opacity)}function gs(t,e,n,r){return arguments.length===1?Qc(t):new ze(t,e,n,r==null?1:r)}function ze(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mn(ze,gs,gr(At,{brighter(t){return t=t==null?An:Math.pow(An,t),new ze(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Ut:Math.pow(Ut,t),new ze(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 ne(ms(t>=240?t-240:t+120,i,r),ms(t,i,r),ms(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new ze(jc(this.h),Ii(this.s),Ii(this.l),Mi(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=Mi(this.opacity);return`${t===1?"hsl(":"hsla("}${jc(this.h)}, ${Ii(this.s)*100}%, ${Ii(this.l)*100}%${t===1?")":`, ${t})`}`}}));function jc(t){return t=(t||0)%360,t<0?t+360:t}function Ii(t){return Math.max(0,Math.min(1,t||0))}function ms(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 Vc=Math.PI/180,Yc=180/Math.PI,Ti=18,Wc=.96422,Xc=1,Zc=.82521,Kc=4/29,yn=6/29,qc=3*yn*yn,cm=yn*yn*yn;function Jc(t){if(t instanceof Xe)return new Xe(t.l,t.a,t.b,t.opacity);if(t instanceof it)return _c(t);t instanceof ne||(t=ps(t));var e=ws(t.r),n=ws(t.g),r=ws(t.b),i=xs((.2225045*e+.7168786*n+.0606169*r)/Xc),o,s;return e===n&&n===r?o=s=i:(o=xs((.4360747*e+.3850649*n+.1430804*r)/Wc),s=xs((.0139322*e+.0971045*n+.7141733*r)/Zc)),new Xe(116*i-16,500*(o-i),200*(i-s),t.opacity)}function As(t,e,n,r){return arguments.length===1?Jc(t):new Xe(t,e,n,r==null?1:r)}function Xe(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}mn(Xe,As,gr(At,{brighter(t){return new Xe(this.l+Ti*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new Xe(this.l-Ti*(t==null?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=Wc*ys(e),t=Xc*ys(t),n=Zc*ys(n),new ne(bs(3.1338561*e-1.6168667*t-.4906146*n),bs(-.9787684*e+1.9161415*t+.033454*n),bs(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function xs(t){return t>cm?Math.pow(t,1/3):t/qc+Kc}function ys(t){return t>yn?t*t*t:qc*(t-Kc)}function bs(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ws(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function lm(t){if(t instanceof it)return new it(t.h,t.c,t.l,t.opacity);if(t instanceof Xe||(t=Jc(t)),t.a===0&&t.b===0)return new it(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Yc;return new it(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function vs(t,e,n,r){return arguments.length===1?lm(t):new it(t,e,n,r==null?1:r)}function it(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function _c(t){if(isNaN(t.h))return new Xe(t.l,0,0,t.opacity);var e=t.h*Vc;return new Xe(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}mn(it,vs,gr(At,{brighter(t){return new it(this.h,this.c,this.l+Ti*(t==null?1:t),this.opacity)},darker(t){return new it(this.h,this.c,this.l-Ti*(t==null?1:t),this.opacity)},rgb(){return _c(this).rgb()}}));var $c=-.14861,Cs=1.78277,Es=-.29227,Pi=-.90649,Ar=1.97294,el=Ar*Pi,tl=Ar*Cs,nl=Cs*Es-Pi*$c;function fm(t){if(t instanceof Vt)return new Vt(t.h,t.s,t.l,t.opacity);t instanceof ne||(t=ps(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(nl*r+el*e-tl*n)/(nl+el-tl),o=r-i,s=(Ar*(n-i)-Es*o)/Pi,a=Math.sqrt(s*s+o*o)/(Ar*i*(1-i)),u=a?Math.atan2(s,o)*Yc-120:NaN;return new Vt(u<0?u+360:u,a,i,t.opacity)}function Ss(t,e,n,r){return arguments.length===1?fm(t):new Vt(t,e,n,r==null?1:r)}function Vt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mn(Vt,Ss,gr(At,{brighter(t){return t=t==null?An:Math.pow(An,t),new Vt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Ut:Math.pow(Ut,t),new Vt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Vc,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ne(255*(e+n*($c*r+Cs*i)),255*(e+n*(Es*r+Pi*i)),255*(e+n*(Ar*r)),this.opacity)}}));function rl(t,e,n,r,i){var o=t*t,s=o*t;return((1-3*t+3*o-s)*e+(4-6*o+3*s)*n+(1+3*t+3*o-3*s)*r+s*i)/6}function il(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],s=r>0?t[r-1]:2*i-o,a=r<e-1?t[r+2]:2*o-i;return rl((n-r/e)*e,s,i,o,a)}}function ol(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],s=t[(r+1)%e],a=t[(r+2)%e];return rl((n-r/e)*e,i,o,s,a)}}const Li=t=>()=>t;function sl(t,e){return function(n){return t+n*e}}function hm(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 Ri(t,e){var n=e-t;return n?sl(t,n>180||n<-180?n-360*Math.round(n/360):n):Li(isNaN(t)?e:t)}function dm(t){return(t=+t)==1?re:function(e,n){return n-e?hm(e,n,t):Li(isNaN(e)?n:e)}}function re(t,e){var n=e-t;return n?sl(t,n):Li(isNaN(t)?e:t)}const Ds=function t(e){var n=dm(e);function r(i,o){var s=n((i=Fi(i)).r,(o=Fi(o)).r),a=n(i.g,o.g),u=n(i.b,o.b),c=re(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=u(f),i.opacity=c(f),i+""}}return r.gamma=t,r}(1);function al(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),s,a;for(s=0;s<n;++s)a=Fi(e[s]),r[s]=a.r||0,i[s]=a.g||0,o[s]=a.b||0;return r=t(r),i=t(i),o=t(o),a.opacity=1,function(u){return a.r=r(u),a.g=i(u),a.b=o(u),a+""}}}var pm=al(il),gm=al(ol);function Bs(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 ul(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function mm(t,e){return(ul(e)?Bs:cl)(t,e)}function cl(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]=xt(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(a){for(s=0;s<r;++s)o[s]=i[s](a);return o}}function ll(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Oe(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function fl(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]=xt(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var Fs=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ms=new RegExp(Fs.source,"g");function Am(t){return function(){return t}}function xm(t){return function(e){return t(e)+""}}function hl(t,e){var n=Fs.lastIndex=Ms.lastIndex=0,r,i,o,s=-1,a=[],u=[];for(t=t+"",e=e+"";(r=Fs.exec(t))&&(i=Ms.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,u.push({i:s,x:Oe(r,i)})),n=Ms.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?u[0]?xm(u[0].x):Am(e):(e=u.length,function(c){for(var f=0,l;f<e;++f)a[(l=u[f]).i]=l.x(c);return a.join("")})}function xt(t,e){var n=typeof e,r;return e==null||n==="boolean"?Li(e):(n==="number"?Oe:n==="string"?(r=Ht(e))?(e=r,Ds):hl:e instanceof Ht?Ds:e instanceof Date?ll:ul(e)?Bs:Array.isArray(e)?cl:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?fl:Oe)(t,e)}function ym(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function bm(t,e){var n=Ri(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function xr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var dl=180/Math.PI,Is={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function pl(t,e,n,r,i,o){var s,a,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,u/=a),t*r<e*n&&(t=-t,e=-e,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*dl,skewX:Math.atan(u)*dl,scaleX:s,scaleY:a}}var ki;function wm(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Is:pl(e.a,e.b,e.c,e.d,e.e,e.f)}function vm(t){return t==null||(ki||(ki=document.createElementNS("http://www.w3.org/2000/svg","g")),ki.setAttribute("transform",t),!(t=ki.transform.baseVal.consolidate()))?Is:(t=t.matrix,pl(t.a,t.b,t.c,t.d,t.e,t.f))}function gl(t,e,n,r){function i(c){return c.length?c.pop()+" ":""}function o(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push("translate(",null,e,null,n);d.push({i:g-4,x:Oe(c,l)},{i:g-2,x:Oe(f,h)})}else(l||h)&&p.push("translate("+l+e+h+n)}function s(c,f,l,h){c!==f?(c-f>180?f+=360:f-c>180&&(c+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:Oe(c,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(c,f,l,h){c!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:Oe(c,f)}):f&&l.push(i(l)+"skewX("+f+r)}function u(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:Oe(c,l)},{i:g-2,x:Oe(f,h)})}else(l!==1||h!==1)&&p.push(i(p)+"scale("+l+","+h+")")}return function(c,f){var l=[],h=[];return c=t(c),f=t(f),o(c.translateX,c.translateY,f.translateX,f.translateY,l,h),s(c.rotate,f.rotate,l,h),a(c.skewX,f.skewX,l,h),u(c.scaleX,c.scaleY,f.scaleX,f.scaleY,l,h),c=f=null,function(p){for(var d=-1,g=h.length,A;++d<g;)l[(A=h[d]).i]=A.x(p);return l.join("")}}}var Cm=gl(wm,"px, ","px)","deg)"),Em=gl(vm,", ",")",")"),Sm=1e-12;function ml(t){return((t=Math.exp(t))+1/t)/2}function Dm(t){return((t=Math.exp(t))-1/t)/2}function Bm(t){return((t=Math.exp(2*t))-1)/(t+1)}const Al=function t(e,n,r){function i(o,s){var a=o[0],u=o[1],c=o[2],f=s[0],l=s[1],h=s[2],p=f-a,d=l-u,g=p*p+d*d,A,m;if(g<Sm)m=Math.log(h/c)/e,A=function(B){return[a+B*p,u+B*d,c*Math.exp(e*B*m)]};else{var b=Math.sqrt(g),y=(h*h-c*c+r*g)/(2*c*n*b),w=(h*h-c*c-r*g)/(2*h*n*b),E=Math.log(Math.sqrt(y*y+1)-y),C=Math.log(Math.sqrt(w*w+1)-w);m=(C-E)/e,A=function(B){var I=B*m,P=ml(E),U=c/(n*b)*(P*Bm(e*I+E)-Dm(E));return[a+U*p,u+U*d,c*P/ml(e*I+E)]}}return A.duration=m*1e3*e/Math.SQRT2,A}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,u=a*a;return t(s,a,u)},i}(Math.SQRT2,2,4);function xl(t){return function(e,n){var r=t((e=gs(e)).h,(n=gs(n)).h),i=re(e.s,n.s),o=re(e.l,n.l),s=re(e.opacity,n.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=o(a),e.opacity=s(a),e+""}}}const Fm=xl(Ri);var Mm=xl(re);function Im(t,e){var n=re((t=As(t)).l,(e=As(e)).l),r=re(t.a,e.a),i=re(t.b,e.b),o=re(t.opacity,e.opacity);return function(s){return t.l=n(s),t.a=r(s),t.b=i(s),t.opacity=o(s),t+""}}function yl(t){return function(e,n){var r=t((e=vs(e)).h,(n=vs(n)).h),i=re(e.c,n.c),o=re(e.l,n.l),s=re(e.opacity,n.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=o(a),e.opacity=s(a),e+""}}}const Tm=yl(Ri);var Pm=yl(re);function bl(t){return function e(n){n=+n;function r(i,o){var s=t((i=Ss(i)).h,(o=Ss(o)).h),a=re(i.s,o.s),u=re(i.l,o.l),c=re(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=u(Math.pow(f,n)),i.opacity=c(f),i+""}}return r.gamma=e,r}(1)}const Lm=bl(Ri);var Rm=bl(re);function Ts(t,e){e===void 0&&(e=t,t=xt);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(s){var a=Math.max(0,Math.min(r-1,Math.floor(s*=r)));return o[a](s-a)}}function km(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}const Nm=Object.freeze(Object.defineProperty({__proto__:null,interpolate:xt,interpolateArray:mm,interpolateBasis:il,interpolateBasisClosed:ol,interpolateDate:ll,interpolateDiscrete:ym,interpolateHue:bm,interpolateNumber:Oe,interpolateNumberArray:Bs,interpolateObject:fl,interpolateRound:xr,interpolateString:hl,interpolateTransformCss:Cm,interpolateTransformSvg:Em,interpolateZoom:Al,interpolateRgb:Ds,interpolateRgbBasis:pm,interpolateRgbBasisClosed:gm,interpolateHsl:Fm,interpolateHslLong:Mm,interpolateLab:Im,interpolateHcl:Tm,interpolateHclLong:Pm,interpolateCubehelix:Lm,interpolateCubehelixLong:Rm,piecewise:Ts,quantize:km},Symbol.toStringTag,{value:"Module"}));function zm(t){return function(){return t}}function Ps(t){return+t}var wl=[0,1];function xe(t){return t}function Ls(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:zm(isNaN(e)?NaN:.5)}function Om(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Gm(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=Ls(i,r),o=n(s,o)):(r=Ls(r,i),o=n(o,s)),function(a){return o(r(a))}}function Um(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]=Ls(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var u=an(t,a,1,r)-1;return o[u](i[u](a))}}function yr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ni(){var t=wl,e=wl,n=xt,r,i,o,s=xe,a,u,c;function f(){var h=Math.min(t.length,e.length);return s!==xe&&(s=Om(t[0],t[h-1])),a=h>2?Um:Gm,u=c=null,l}function l(h){return h==null||isNaN(h=+h)?o:(u||(u=a(t.map(r),e,n)))(r(s(h)))}return l.invert=function(h){return s(i((c||(c=a(e,t.map(r),Oe)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,Ps),f()):t.slice()},l.range=function(h){return arguments.length?(e=Array.from(h),f()):e.slice()},l.rangeRound=function(h){return e=Array.from(h),n=xr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:xe,f()):s!==xe},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(o=h,l):o},function(h,p){return r=h,i=p,f()}}function vl(){return Ni()(xe,xe)}function Cl(t,e,n,r){var i=Lt(t,e,n),o;switch(r=ft(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Ou(i,s))&&(r.precision=o),jo(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Gu(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=zu(i))&&(r.precision=o-(r.type==="%")*2);break}}return se(r)}function Yt(t){var e=t.domain;return t.ticks=function(n){var r=e();return di(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return Cl(i[0],i[i.length-1],n==null?10:n,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],a=r[o],u,c,f=10;for(a<s&&(c=s,s=a,a=c,c=i,i=o,o=c);f-- >0;){if(c=Mu(s,a,n),c===u)return r[i]=s,r[o]=a,e(r);if(c>0)s=Math.floor(s/c)*c,a=Math.ceil(a/c)*c;else if(c<0)s=Math.ceil(s*c)/c,a=Math.floor(a*c)/c;else break;u=c}return t},t}function El(){var t=vl();return t.copy=function(){return yr(t,El())},Ye.apply(t,arguments),Yt(t)}function Sl(t){var e;function n(r){return r==null||isNaN(r=+r)?e:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(t=Array.from(r,Ps),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return Sl(t).unknown(e)},t=arguments.length?Array.from(t,Ps):[0,1],Yt(n)}function Dl(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],s;return o<i&&(s=n,n=r,r=s,s=i,i=o,o=s),t[n]=e.floor(i),t[r]=e.ceil(o),t}function Bl(t){return Math.log(t)}function Fl(t){return Math.exp(t)}function Hm(t){return-Math.log(-t)}function Qm(t){return-Math.exp(-t)}function jm(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Vm(t){return t===10?jm:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Ym(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}function Ml(t){return(e,n)=>-t(-e,n)}function Rs(t){const e=t(Bl,Fl),n=e.domain;let r=10,i,o;function s(){return i=Ym(r),o=Vm(r),n()[0]<0?(i=Ml(i),o=Ml(o),t(Hm,Qm)):t(Bl,Fl),e}return e.base=function(a){return arguments.length?(r=+a,s()):r},e.domain=function(a){return arguments.length?(n(a),s()):n()},e.ticks=a=>{const u=n();let c=u[0],f=u[u.length-1];const l=f<c;l&&([c,f]=[f,c]);let h=i(c),p=i(f),d,g;const A=a==null?10:+a;let m=[];if(!(r%1)&&p-h<A){if(h=Math.floor(h),p=Math.ceil(p),c>0){for(;h<=p;++h)for(d=1;d<r;++d)if(g=h<0?d/o(-h):d*o(h),!(g<c)){if(g>f)break;m.push(g)}}else for(;h<=p;++h)for(d=r-1;d>=1;--d)if(g=h>0?d/o(-h):d*o(h),!(g<c)){if(g>f)break;m.push(g)}m.length*2<A&&(m=di(c,f,A))}else m=di(h,p,Math.min(p-h,A)).map(o);return l?m.reverse():m},e.tickFormat=(a,u)=>{if(a==null&&(a=10),u==null&&(u=r===10?"s":","),typeof u!="function"&&(!(r%1)&&(u=ft(u)).precision==null&&(u.trim=!0),u=se(u)),a===1/0)return u;const c=Math.max(1,r*a/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=c?u(f):""}},e.nice=()=>n(Dl(n(),{floor:a=>o(Math.floor(i(a))),ceil:a=>o(Math.ceil(i(a)))})),e}function ks(){const t=Rs(Ni()).domain([1,10]);return t.copy=()=>yr(t,ks()).base(t.base()),Ye.apply(t,arguments),t}function Il(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Tl(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Ns(t){var e=1,n=t(Il(e),Tl(e));return n.constant=function(r){return arguments.length?t(Il(e=+r),Tl(e)):e},Yt(n)}function Pl(){var t=Ns(Ni());return t.copy=function(){return yr(t,Pl()).constant(t.constant())},Ye.apply(t,arguments)}function Ll(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Wm(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Xm(t){return t<0?-t*t:t*t}function zs(t){var e=t(xe,xe),n=1;function r(){return n===1?t(xe,xe):n===.5?t(Wm,Xm):t(Ll(n),Ll(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Yt(e)}function Os(){var t=zs(Ni());return t.copy=function(){return yr(t,Os()).exponent(t.exponent())},Ye.apply(t,arguments),t}function Zm(){return Os.apply(null,arguments).exponent(.5)}function Rl(){var t=[],e=[],n=[],r;function i(){var s=0,a=Math.max(1,e.length);for(n=new Array(a-1);++s<a;)n[s-1]=Iu(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[an(n,s)]}return o.invertExtent=function(s){var a=e.indexOf(s);return a<0?[NaN,NaN]:[a>0?n[a-1]:t[0],a<n.length?n[a]:t[t.length-1]]},o.domain=function(s){if(!arguments.length)return t.slice();t=[];for(let a of s)a!=null&&!isNaN(a=+a)&&t.push(a);return t.sort(Xn),i()},o.range=function(s){return arguments.length?(e=Array.from(s),i()):e.slice()},o.unknown=function(s){return arguments.length?(r=s,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return Rl().domain(t).range(e).unknown(r)},Ye.apply(o,arguments)}function kl(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(u){return u!=null&&u<=u?i[an(r,u,0,n)]:o}function a(){var u=-1;for(r=new Array(n);++u<n;)r[u]=((u+1)*e-(u-n)*t)/(n+1);return s}return s.domain=function(u){return arguments.length?([t,e]=u,t=+t,e=+e,a()):[t,e]},s.range=function(u){return arguments.length?(n=(i=Array.from(u)).length-1,a()):i.slice()},s.invertExtent=function(u){var c=i.indexOf(u);return c<0?[NaN,NaN]:c<1?[t,r[0]]:c>=n?[r[n-1],e]:[r[c-1],r[c]]},s.unknown=function(u){return arguments.length&&(o=u),s},s.thresholds=function(){return r.slice()},s.copy=function(){return kl().domain([t,e]).range(i).unknown(o)},Ye.apply(Yt(s),arguments)}function Nl(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[an(t,o,0,r)]:n}return i.domain=function(o){return arguments.length?(t=Array.from(o),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(o){return arguments.length?(e=Array.from(o),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(o){var s=e.indexOf(o);return[t[s-1],t[s]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return Nl().domain(t).range(e).unknown(n)},Ye.apply(i,arguments)}function Km(t){return new Date(t)}function qm(t){return t instanceof Date?+t:+new Date(+t)}function Gs(t,e,n,r,i,o,s,a,u,c){var f=vl(),l=f.invert,h=f.domain,p=c(".%L"),d=c(":%S"),g=c("%I:%M"),A=c("%I %p"),m=c("%a %d"),b=c("%b %d"),y=c("%B"),w=c("%Y");function E(C){return(u(C)<C?p:a(C)<C?d:s(C)<C?g:o(C)<C?A:r(C)<C?i(C)<C?m:b:n(C)<C?y:w)(C)}return f.invert=function(C){return new Date(l(C))},f.domain=function(C){return arguments.length?h(Array.from(C,qm)):h().map(Km)},f.ticks=function(C){var B=h();return t(B[0],B[B.length-1],C==null?10:C)},f.tickFormat=function(C,B){return B==null?E:c(B)},f.nice=function(C){var B=h();return(!C||typeof C.range!="function")&&(C=e(B[0],B[B.length-1],C==null?10:C)),C?h(Dl(B,C)):f},f.copy=function(){return yr(f,Gs(t,e,n,r,i,o,s,a,u,c))},f}function Jm(){return Ye.apply(Gs(ap,up,dt,yi,Kn,kt,qo,Ko,ht,is).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function _m(){return Ye.apply(Gs(op,sp,pt,wi,qn,zt,$o,_o,ht,os).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function zi(){var t=0,e=1,n,r,i,o,s=xe,a=!1,u;function c(l){return l==null||isNaN(l=+l)?u:s(i===0?.5:(l=(o(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}c.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),c):[t,e]},c.clamp=function(l){return arguments.length?(a=!!l,c):a},c.interpolator=function(l){return arguments.length?(s=l,c):s};function f(l){return function(h){var p,d;return arguments.length?([p,d]=h,s=l(p,d),c):[s(0),s(1)]}}return c.range=f(xt),c.rangeRound=f(xr),c.unknown=function(l){return arguments.length?(u=l,c):u},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),c}}function yt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Us(){var t=Yt(zi()(xe));return t.copy=function(){return yt(t,Us())},mt.apply(t,arguments)}function zl(){var t=Rs(zi()).domain([1,10]);return t.copy=function(){return yt(t,zl()).base(t.base())},mt.apply(t,arguments)}function Ol(){var t=Ns(zi());return t.copy=function(){return yt(t,Ol()).constant(t.constant())},mt.apply(t,arguments)}function Hs(){var t=zs(zi());return t.copy=function(){return yt(t,Hs()).exponent(t.exponent())},mt.apply(t,arguments)}function $m(){return Hs.apply(null,arguments).exponent(.5)}function Oi(){var t=0,e=.5,n=1,r=1,i,o,s,a,u,c=xe,f,l=!1,h;function p(g){return isNaN(g=+g)?h:(g=.5+((g=+f(g))-o)*(r*g<r*o?a:u),c(l?Math.max(0,Math.min(1,g)):g))}p.domain=function(g){return arguments.length?([t,e,n]=g,i=f(t=+t),o=f(e=+e),s=f(n=+n),a=i===o?0:.5/(o-i),u=o===s?0:.5/(s-o),r=o<i?-1:1,p):[t,e,n]},p.clamp=function(g){return arguments.length?(l=!!g,p):l},p.interpolator=function(g){return arguments.length?(c=g,p):c};function d(g){return function(A){var m,b,y;return arguments.length?([m,b,y]=A,c=Ts(g,[m,b,y]),p):[c(0),c(.5),c(1)]}}return p.range=d(xt),p.rangeRound=d(xr),p.unknown=function(g){return arguments.length?(h=g,p):h},function(g){return f=g,i=g(t),o=g(e),s=g(n),a=i===o?0:.5/(o-i),u=o===s?0:.5/(s-o),r=o<i?-1:1,p}}function Gl(){var t=Yt(Oi()(xe));return t.copy=function(){return yt(t,Gl())},mt.apply(t,arguments)}function Ul(){var t=Rs(Oi()).domain([.1,1,10]);return t.copy=function(){return yt(t,Ul()).base(t.base())},mt.apply(t,arguments)}function Hl(){var t=Ns(Oi());return t.copy=function(){return yt(t,Hl()).constant(t.constant())},mt.apply(t,arguments)}function Qs(){var t=zs(Oi());return t.copy=function(){return yt(t,Qs()).exponent(t.exponent())},mt.apply(t,arguments)}function eA(){return Qs.apply(null,arguments).exponent(.5)}function js(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const tA="identity",bn="linear",bt="log",br="pow",wr="sqrt",Gi="symlog",Ql="time",jl="utc",Ze="sequential",wn="diverging",Vs="quantile",Vl="quantize",Yl="threshold",Ys="ordinal",Ws="point",Wl="band",Xs="bin-ordinal",_="continuous",vr="discrete",Cr="discretizing",Te="interpolating",Xl="temporal";function nA(t){return function(e){let n=e[0],r=e[1],i;return r<n&&(i=n,n=r,r=i),[t.invert(n),t.invert(r)]}}function rA(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,u,c;for(i<r&&(a=r,r=i,i=a),u=0,c=n.length;u<c;++u)n[u]>=r&&n[u]<=i&&(o<0&&(o=u),s=u);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[s]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function Zs(){const t=ds().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,u=0,c=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],p=r[1-h],d=js(l,a,u);let g=r[h-0];i=(p-g)/(d||1),s&&(i=Math.floor(i)),g+=(p-g-i*(l-a))*c,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const A=Zn(l).map(m=>g+i*m);return n(h?A.reverse():A)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],s=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(s=!!l,f()):s},t.padding=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),a=u,f()):a},t.paddingInner=function(l){return arguments.length?(a=Math.max(0,Math.min(1,l)),f()):a},t.paddingOuter=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.align=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const h=r[1]<r[0],p=h?n().reverse():n(),d=p.length-1;let g=+l[0],A=+l[1],m,b,y;if(!(g!==g||A!==A)&&(A<g&&(y=g,g=A,A=y),!(A<p[0]||g>r[1-h])))return m=Math.max(0,zo(p,g)-1),b=g===A?m:zo(p,A)-1,g-p[m]>o+1e-10&&++m,h&&(y=m,m=d-b,b=d-y),m>b?void 0:e().slice(m,b+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return Zs().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(u).align(c)},f()}function Zl(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Zl(e())},t}function iA(){return Zl(Zs().paddingInner(1))}var oA=Array.prototype.map;function sA(t){return oA.call(t,Yn)}const aA=Array.prototype.slice;function Kl(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(an(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=sA(r),n):t.slice()},n.range=function(r){return arguments.length?(e=aA.call(r),n):e.slice()},n.tickFormat=function(r,i){return Cl(t[0],Ne(t),r==null?10:r,i)},n.copy=function(){return Kl().domain(n.domain()).range(n.range())},n}const Ui={};function uA(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?nA(o):o.invertExtent?rA(o):void 0),o.type=t,o};return r.metadata=li(Po(n)),r}function O(t,e,n){return arguments.length>1?(Ui[t]=uA(t,e,n),this):cA(t)?Ui[t]:void 0}O(tA,Sl),O(bn,El,_),O(bt,ks,[_,bt]),O(br,Os,_),O(wr,Zm,_),O(Gi,Pl,_),O(Ql,Jm,[_,Xl]),O(jl,_m,[_,Xl]),O(Ze,Us,[_,Te]),O("".concat(Ze,"-").concat(bn),Us,[_,Te]),O("".concat(Ze,"-").concat(bt),zl,[_,Te,bt]),O("".concat(Ze,"-").concat(br),Hs,[_,Te]),O("".concat(Ze,"-").concat(wr),$m,[_,Te]),O("".concat(Ze,"-").concat(Gi),Ol,[_,Te]),O("".concat(wn,"-").concat(bn),Gl,[_,Te]),O("".concat(wn,"-").concat(bt),Ul,[_,Te,bt]),O("".concat(wn,"-").concat(br),Qs,[_,Te]),O("".concat(wn,"-").concat(wr),eA,[_,Te]),O("".concat(wn,"-").concat(Gi),Hl,[_,Te]),O(Vs,Rl,[Cr,Vs]),O(Vl,kl,Cr),O(Yl,Nl,Cr),O(Xs,Kl,[vr,Cr]),O(Ys,ds,vr),O(Wl,Zs,vr),O(Ws,iA,vr);function cA(t){return Tt(Ui,t)}function Er(t,e){const n=Ui[t];return n&&n.metadata[e]}function Pe(t){return Er(t,_)}function Wt(t){return Er(t,vr)}function vn(t){return Er(t,Cr)}function ql(t){return Er(t,bt)}function Hi(t){return Er(t,Te)}function lA(t,e){const n=e[0],r=Ne(e)-n;return function(i){return t(n+i*r)}}function Qi(t,e,n){return Ts(Jl(e||"rgb",n),t)}function fA(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function Jl(t,e){const n=Nm[hA(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function hA(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const dA={blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},pA={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function _l(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function $l(t,e){for(const n in t)Ks(n,e(t[n]))}const ef={};$l(pA,_l),$l(dA,t=>Qi(_l(t)));function Ks(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(ef[t]=e,this):ef[t]}const xE="";function gA(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}function tf(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function mA(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function Ke(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function Cn(t){return t[t.length-1]}class AA{constructor(e){this.container=e,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(e){e!=this._visible&&(this.element.style.display=e?null:"none",this._visible=e)}get visible(){return this._visible}get enabled(){var e;return(e=Cn(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=gA(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&xA(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(Pc("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Pc(e,this.element),this.visible=!0,this.updatePlacement()}clear(){this._previousTooltipDatum=void 0,this.setContent(void 0)}updateWithDatum(e,n){e!==this._previousTooltipDatum&&(this._previousTooltipDatum=e,n||(n=r=>Promise.resolve(rt`${JSON.stringify(r)}`)),n(e).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function xA(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const yA="RawCode",bA="Literal",wA="Property",vA="Identifier",CA="ArrayExpression",EA="BinaryExpression",SA="CallExpression",DA="ConditionalExpression",BA="LogicalExpression",FA="MemberExpression",MA="ObjectExpression",IA="UnaryExpression";function Ge(t){this.type=t}Ge.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=TA(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function TA(t){switch(t.type){case CA:return t.elements;case EA:case BA:return[t.left,t.right];case SA:return[t.callee].concat(t.arguments);case DA:return[t.test,t.consequent,t.alternate];case FA:return[t.object,t.property];case MA:return t.properties;case wA:return[t.key,t.value];case IA:return[t.argument];case vA:case bA:case yA:default:return[]}}var qe,S,x,ce,G,ji=1,Sr=2,Xt=3,wt=4,Vi=5,Zt=6,ye=7,Dr=8,PA=9;qe={},qe[ji]="Boolean",qe[Sr]="<end>",qe[Xt]="Identifier",qe[wt]="Keyword",qe[Vi]="Null",qe[Zt]="Numeric",qe[ye]="Punctuator",qe[Dr]="String",qe[PA]="RegularExpression";var LA="ArrayExpression",RA="BinaryExpression",kA="CallExpression",NA="ConditionalExpression",nf="Identifier",zA="Literal",OA="LogicalExpression",GA="MemberExpression",UA="ObjectExpression",HA="Property",QA="UnaryExpression",ie="Unexpected token %0",jA="Unexpected number",VA="Unexpected string",YA="Unexpected identifier",WA="Unexpected reserved word",XA="Unexpected end of input",qs="Invalid regular expression",Js="Invalid regular expression: missing /",rf="Octal literals are not allowed in strict mode.",ZA="Duplicate data property in object literal not allowed in strict mode",ae="ILLEGAL",Br="Disabled.",KA=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),qA=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function Yi(t,e){if(!t)throw new Error("ASSERT: "+e)}function ot(t){return t>=48&&t<=57}function _s(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Fr(t){return"01234567".indexOf(t)>=0}function JA(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function Mr(t){return t===10||t===13||t===8232||t===8233}function Ir(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&KA.test(String.fromCharCode(t))}function Wi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&qA.test(String.fromCharCode(t))}const _A={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function of(){for(;x<ce;){const t=S.charCodeAt(x);if(JA(t)||Mr(t))++x;else break}}function $s(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)x<ce&&_s(S[x])?(r=S[x++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):N({},ie,ae);return String.fromCharCode(i)}function $A(){var t,e,n,r;for(t=S[x],e=0,t==="}"&&N({},ie,ae);x<ce&&(t=S[x++],!!_s(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&N({},ie,ae),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function sf(){var t,e;for(t=S.charCodeAt(x++),e=String.fromCharCode(t),t===92&&(S.charCodeAt(x)!==117&&N({},ie,ae),++x,t=$s("u"),(!t||t==="\\"||!Ir(t.charCodeAt(0)))&&N({},ie,ae),e=t);x<ce&&(t=S.charCodeAt(x),!!Wi(t));)++x,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),S.charCodeAt(x)!==117&&N({},ie,ae),++x,t=$s("u"),(!t||t==="\\"||!Wi(t.charCodeAt(0)))&&N({},ie,ae),e+=t);return e}function e1(){var t,e;for(t=x++;x<ce;){if(e=S.charCodeAt(x),e===92)return x=t,sf();if(Wi(e))++x;else break}return S.slice(t,x)}function t1(){var t,e,n;return t=x,e=S.charCodeAt(x)===92?sf():e1(),e.length===1?n=Xt:_A.hasOwnProperty(e)?n=wt:e==="null"?n=Vi:e==="true"||e==="false"?n=ji:n=Xt,{type:n,value:e,start:t,end:x}}function ea(){var t=x,e=S.charCodeAt(x),n,r=S[x],i,o,s;switch(e){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++x,{type:ye,value:String.fromCharCode(e),start:t,end:x};default:if(n=S.charCodeAt(x+1),n===61)switch(e){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return x+=2,{type:ye,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:x};case 33:case 61:return x+=2,S.charCodeAt(x)===61&&++x,{type:ye,value:S.slice(t,x),start:t,end:x}}}if(s=S.substr(x,4),s===">>>=")return x+=4,{type:ye,value:s,start:t,end:x};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return x+=3,{type:ye,value:o,start:t,end:x};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return x+=2,{type:ye,value:i,start:t,end:x};if(i==="//"&&N({},ie,ae),"<>=!+-*%&|^/".indexOf(r)>=0)return++x,{type:ye,value:r,start:t,end:x};N({},ie,ae)}function n1(t){let e="";for(;x<ce&&_s(S[x]);)e+=S[x++];return e.length===0&&N({},ie,ae),Ir(S.charCodeAt(x))&&N({},ie,ae),{type:Zt,value:parseInt("0x"+e,16),start:t,end:x}}function r1(t){let e="0"+S[x++];for(;x<ce&&Fr(S[x]);)e+=S[x++];return(Ir(S.charCodeAt(x))||ot(S.charCodeAt(x)))&&N({},ie,ae),{type:Zt,value:parseInt(e,8),octal:!0,start:t,end:x}}function af(){var t,e,n;if(n=S[x],Yi(ot(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=x,t="",n!=="."){if(t=S[x++],n=S[x],t==="0"){if(n==="x"||n==="X")return++x,n1(e);if(Fr(n))return r1(e);n&&ot(n.charCodeAt(0))&&N({},ie,ae)}for(;ot(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="."){for(t+=S[x++];ot(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="e"||n==="E")if(t+=S[x++],n=S[x],(n==="+"||n==="-")&&(t+=S[x++]),ot(S.charCodeAt(x)))for(;ot(S.charCodeAt(x));)t+=S[x++];else N({},ie,ae);return Ir(S.charCodeAt(x))&&N({},ie,ae),{type:Zt,value:parseFloat(t),start:e,end:x}}function i1(){var t="",e,n,r,i,o=!1;for(e=S[x],Yi(e==="'"||e==='"',"String literal must starts with a quote"),n=x,++x;x<ce;)if(r=S[x++],r===e){e="";break}else if(r==="\\")if(r=S[x++],!r||!Mr(r.charCodeAt(0)))switch(r){case"u":case"x":S[x]==="{"?(++x,t+=$A()):t+=$s(r);break;case"n":t+=`
11
- `;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:Fr(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),x<ce&&Fr(S[x])&&(o=!0,i=i*8+"01234567".indexOf(S[x++]),"0123".indexOf(r)>=0&&x<ce&&Fr(S[x])&&(i=i*8+"01234567".indexOf(S[x++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&S[x]===`
12
- `&&++x;else{if(Mr(r.charCodeAt(0)))break;t+=r}return e!==""&&N({},ie,ae),{type:Dr,value:t,octal:o,start:n,end:x}}function o1(t,e){let n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";N({},qs)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{N({},qs)}try{return new RegExp(t,e)}catch{return null}}function s1(){var t,e,n,r,i;for(t=S[x],Yi(t==="/","Regular expression literal must start with a slash"),e=S[x++],n=!1,r=!1;x<ce;)if(t=S[x++],e+=t,t==="\\")t=S[x++],Mr(t.charCodeAt(0))&&N({},Js),e+=t;else if(Mr(t.charCodeAt(0)))N({},Js);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||N({},Js),i=e.substr(1,e.length-2),{value:i,literal:e}}function a1(){var t,e,n;for(e="",n="";x<ce&&(t=S[x],!!Wi(t.charCodeAt(0)));)++x,t==="\\"&&x<ce?N({},ie,ae):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&N({},qs,n),{value:n,literal:e}}function u1(){var t,e,n,r;return G=null,of(),t=x,e=s1(),n=a1(),r=o1(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:x}}function c1(t){return t.type===Xt||t.type===wt||t.type===ji||t.type===Vi}function uf(){if(of(),x>=ce)return{type:Sr,start:x,end:x};const t=S.charCodeAt(x);return Ir(t)?t1():t===40||t===41||t===59?ea():t===39||t===34?i1():t===46?ot(S.charCodeAt(x+1))?af():ea():ot(t)?af():ea()}function be(){const t=G;return x=t.end,G=uf(),x=t.end,t}function cf(){const t=x;G=uf(),x=t}function l1(t){const e=new Ge(LA);return e.elements=t,e}function lf(t,e,n){const r=new Ge(t==="||"||t==="&&"?OA:RA);return r.operator=t,r.left=e,r.right=n,r}function f1(t,e){const n=new Ge(kA);return n.callee=t,n.arguments=e,n}function h1(t,e,n){const r=new Ge(NA);return r.test=t,r.consequent=e,r.alternate=n,r}function ta(t){const e=new Ge(nf);return e.name=t,e}function Tr(t){const e=new Ge(zA);return e.value=t.value,e.raw=S.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function ff(t,e,n){const r=new Ge(GA);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function d1(t){const e=new Ge(UA);return e.properties=t,e}function hf(t,e,n){const r=new Ge(HA);return r.key=e,r.value=n,r.kind=t,r}function p1(t,e){const n=new Ge(QA);return n.operator=t,n.argument=e,n.prefix=!0,n}function N(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(Yi(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=x,n.description=i,n}function Xi(t){t.type===Sr&&N(t,XA),t.type===Zt&&N(t,jA),t.type===Dr&&N(t,VA),t.type===Xt&&N(t,YA),t.type===wt&&N(t,WA),N(t,ie,t.value)}function le(t){const e=be();(e.type!==ye||e.value!==t)&&Xi(e)}function j(t){return G.type===ye&&G.value===t}function na(t){return G.type===wt&&G.value===t}function g1(){const t=[];for(x=G.start,le("[");!j("]");)j(",")?(be(),t.push(null)):(t.push(Kt()),j("]")||le(","));return be(),l1(t)}function df(){x=G.start;const t=be();return t.type===Dr||t.type===Zt?(t.octal&&N(t,rf),Tr(t)):ta(t.value)}function m1(){var t,e,n,r;if(x=G.start,t=G,t.type===Xt)return n=df(),le(":"),r=Kt(),hf("init",n,r);if(t.type===Sr||t.type===ye)Xi(t);else return e=df(),le(":"),r=Kt(),hf("init",e,r)}function A1(){var t=[],e,n,r,i={},o=String;for(x=G.start,le("{");!j("}");)e=m1(),e.key.type===nf?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?N({},ZA):i[r]=!0,t.push(e),j("}")||le(",");return le("}"),d1(t)}function x1(){le("(");const t=ra();return le(")"),t}const y1={if:1};function b1(){var t,e,n;if(j("("))return x1();if(j("["))return g1();if(j("{"))return A1();if(t=G.type,x=G.start,t===Xt||y1[G.value])n=ta(be().value);else if(t===Dr||t===Zt)G.octal&&N(G,rf),n=Tr(be());else{if(t===wt)throw new Error(Br);t===ji?(e=be(),e.value=e.value==="true",n=Tr(e)):t===Vi?(e=be(),e.value=null,n=Tr(e)):j("/")||j("/=")?(n=Tr(u1()),cf()):Xi(be())}return n}function w1(){const t=[];if(le("("),!j(")"))for(;x<ce&&(t.push(Kt()),!j(")"));)le(",");return le(")"),t}function v1(){x=G.start;const t=be();return c1(t)||Xi(t),ta(t.value)}function C1(){return le("."),v1()}function E1(){le("[");const t=ra();return le("]"),t}function S1(){var t,e,n;for(t=b1();;)if(j("."))n=C1(),t=ff(".",t,n);else if(j("("))e=w1(),t=f1(t,e);else if(j("["))n=E1(),t=ff("[",t,n);else break;return t}function pf(){const t=S1();if(G.type===ye&&(j("++")||j("--")))throw new Error(Br);return t}function Zi(){var t,e;if(G.type!==ye&&G.type!==wt)e=pf();else{if(j("++")||j("--"))throw new Error(Br);if(j("+")||j("-")||j("~")||j("!"))t=be(),e=Zi(),e=p1(t.value,e);else{if(na("delete")||na("void")||na("typeof"))throw new Error(Br);e=pf()}}return e}function gf(t){let e=0;if(t.type!==ye&&t.type!==wt)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11;break}return e}function D1(){var t,e,n,r,i,o,s,a,u,c;if(t=G,u=Zi(),r=G,i=gf(r),i===0)return u;for(r.prec=i,be(),e=[t,G],s=Zi(),o=[u,r,s];(i=gf(G))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,u=o.pop(),e.pop(),n=lf(a,u,s),o.push(n);r=be(),r.prec=i,o.push(r),e.push(G),n=Zi(),o.push(n)}for(c=o.length-1,n=o[c],e.pop();c>1;)e.pop(),n=lf(o[c-1].value,o[c-2],n),c-=2;return n}function Kt(){var t,e,n;return t=D1(),j("?")&&(be(),e=Kt(),le(":"),n=Kt(),t=h1(t,e,n)),t}function ra(){const t=Kt();if(j(","))throw new Error(Br);return t}function B1(t){S=t,x=0,ce=S.length,G=null,cf();const e=ra();if(G.type!==Sr)throw new Error("Unexpect token after expression.");return e}var F1={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function M1(t){function e(s,a,u,c){let f=t(a[0]);return u&&(f=u+"("+f+")",u.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+s+(c<0?"":c===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(s,a,u){return c=>e(s,c,a,u)}const r="new Date",i="String",o="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(s){s.length<3&&X("Missing arguments to clamp function."),s.length>3&&X("Too many arguments to clamp function.");const a=s.map(t);return"Math.max("+a[1]+", Math.min("+a[2]+","+a[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:n("getDate",r,0),day:n("getDay",r,0),year:n("getFullYear",r,0),month:n("getMonth",r,0),hours:n("getHours",r,0),minutes:n("getMinutes",r,0),seconds:n("getSeconds",r,0),milliseconds:n("getMilliseconds",r,0),time:n("getTime",r,0),timezoneoffset:n("getTimezoneOffset",r,0),utcdate:n("getUTCDate",r,0),utcday:n("getUTCDay",r,0),utcyear:n("getUTCFullYear",r,0),utcmonth:n("getUTCMonth",r,0),utchours:n("getUTCHours",r,0),utcminutes:n("getUTCMinutes",r,0),utcseconds:n("getUTCSeconds",r,0),utcmilliseconds:n("getUTCMilliseconds",r,0),length:n("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:n("toUpperCase",i,0),lower:n("toLowerCase",i,0),substring:n("substring",i),split:n("split",i),trim:n("trim",i,0),regexp:o,test:n("test",o),if:function(s){s.length<3&&X("Missing arguments to if function."),s.length>3&&X("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function I1(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function T1(t){t=t||{};const e=t.allowed?li(t.allowed):{},n=t.forbidden?li(t.forbidden):{},r=t.constants||F1,i=(t.functions||M1)(l),o=t.globalvar,s=t.fieldvar,a=ge(o)?o:d=>`${o}["${d}"]`;let u={},c={},f=0;function l(d){if(Z(d))return d;const g=h[d.type];return g==null&&X("Unsupported type: "+d.type),g(d)}const h={Literal:d=>d.raw,Identifier:d=>{const g=d.name;return f>0?g:Tt(n,g)?X("Illegal identifier: "+g):Tt(r,g)?r[g]:Tt(e,g)?g:(u[g]=1,a(g))},MemberExpression:d=>{const g=!d.computed,A=l(d.object);g&&(f+=1);const m=l(d.property);return A===s&&(c[I1(m)]=1),g&&(f-=1),A+(g?"."+m:"["+m+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&X("Illegal callee type: "+d.callee.type);const g=d.callee.name,A=d.arguments,m=Tt(i,g)&&i[g];return m||X("Unrecognized function: "+g),ge(m)?m(A):m+"("+A.map(l).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(l).join(",")+"]",BinaryExpression:d=>"("+l(d.left)+" "+d.operator+" "+l(d.right)+")",UnaryExpression:d=>"("+d.operator+l(d.argument)+")",ConditionalExpression:d=>"("+l(d.test)+"?"+l(d.consequent)+":"+l(d.alternate)+")",LogicalExpression:d=>"("+l(d.left)+d.operator+l(d.right)+")",ObjectExpression:d=>"{"+d.properties.map(l).join(",")+"}",Property:d=>{f+=1;const g=l(d.key);return f-=1,g+":"+l(d.value)}};function p(d){const g={code:l(d),globals:Object.keys(u),fields:Object.keys(c)};return u={},c={},g}return p.functions=i,p.constants=r,p}function ia(t,e={}){const n=T1({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=B1(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),s=a=>o(a,e);return s.fields=i.fields,s}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function P1(){let t=0;const e=new Map,n=r=>{let i=e.get(r);return i===void 0&&(i=t++,e.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of e.entries())if(i[1]==r)return i[0]},n.domain=()=>[...e.keys()],n}function L1(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Le(i)&&i.resolutionChannel||r);n[r]=R1(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function R1(t,e,n,r){let i;if(Ue(t)){const o=t.value;i=s=>o,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=o=>{},i.accessor=n,i.constant=n.constant;else{if(!e)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),Wt(e.type)){const o=P1();o.addAll(e.domain()),i.indexer=o}i.constant=n.constant,i.accessor=n,i.scale=e}else throw new Error(`Missing value or accessor (field, expr, datum) on channel "${r}": ${JSON.stringify(t)}`);return i.invert=e?o=>e.invert(o):o=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(t))},i.channelDef=t,i.applyMetadata=o=>{for(const s in i)s in i&&(o[s]=i[s]);return o},i}function Ue(t){return t&&"value"in t}function Pr(t){return t&&"field"in t}function Lr(t){return t&&"datum"in t}function Le(t){return Pr(t)||Lr(t)||sa(t)||mf(t)}function oa(t,e){const n=t.mark.encoding[e];if(Le(n))return n;throw new Error("Not a channel def with scale!")}function mf(t){return t&&"chrom"in t}function sa(t){return t&&"expr"in t}const Rr=["x","y"],k1=["x2","y2"],N1=[...Rr,...k1];function Af(t){return Rr.includes(t)}function kr(t){return N1.includes(t)}const aa={x:"x2",y:"y2"},xf=Object.fromEntries(Object.entries(aa).map(t=>[t[1],t[0]]));function Nr(t){return t in xf}function z1(t){const e=aa[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function En(t){var e;return(e=xf[t])!=null?e:t}function qt(t){return["color","fill","stroke"].includes(En(t))}function Ki(t){return["shape","squeeze"].includes(t)}function yf(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function bf(t){if(!Ki(t))throw new Error("Not a discrete channel: "+t);const e=new Map(yf(t).map((n,r)=>[n,r]));return n=>{const r=e.get(n);if(r!==void 0)return r;throw new Error(`Invalid value for "${t}" channel: ${n}`)}}function H(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return T(n,[t],e)}else return ri(t)}class O1{constructor(){this.accessorCreators=[],this.register(e=>{if(Pr(e))try{const n=H(e.field);return n.constant=!1,n.fields=It(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>sa(e)?G1(e.expr):void 0),this.register(e=>{if(Lr(e)){const r=pd(e.datum);return r.constant=!0,r.fields=[],r}})}register(e){this.accessorCreators.push(e)}createAccessor(e){for(const n of this.accessorCreators){const r=n(e);if(r)return r}}}function G1(t){const e=ia(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
10
+ */var fs;const hn=globalThis.trustedTypes,Ec=hn?hn.createPolicy("lit-html",{createHTML:t=>t}):void 0,gt=`lit$${(Math.random()+"").slice(9)}$`,Sc="?"+gt,jg=`<${Sc}>`,dn=document,lr=(t="")=>dn.createComment(t),fr=t=>t===null||typeof t!="object"&&typeof t!="function",Dc=Array.isArray,Vg=t=>{var e;return Dc(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},hr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Bc=/-->/g,Fc=/>/g,Gt=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,Mc=/'/g,Ic=/"/g,Tc=/^(?:script|style|textarea|title)$/i,Yg=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),rt=Yg(1),dr=Symbol.for("lit-noChange"),te=Symbol.for("lit-nothing"),Pc=new WeakMap,Lc=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let s=o._$litPart$;if(s===void 0){const a=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=s=new gr(e.insertBefore(lr(),a),a,void 0,n!=null?n:{})}return s._$AI(t),s},pn=dn.createTreeWalker(dn,129,null,!1),Wg=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=hr;for(let u=0;u<n;u++){const c=t[u];let f,l,h=-1,p=0;for(;p<c.length&&(s.lastIndex=p,l=s.exec(c),l!==null);)p=s.lastIndex,s===hr?l[1]==="!--"?s=Bc:l[1]!==void 0?s=Fc:l[2]!==void 0?(Tc.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=Gt):l[3]!==void 0&&(s=Gt):s===Gt?l[0]===">"?(s=i!=null?i:hr,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?Gt:l[3]==='"'?Ic:Mc):s===Ic||s===Mc?s=Gt:s===Bc||s===Fc?s=hr:(s=Gt,i=void 0);const d=s===Gt&&t[u+1].startsWith("/>")?" ":"";o+=s===hr?c+jg:h>=0?(r.push(f),c.slice(0,h)+"$lit$"+c.slice(h)+gt+d):c+gt+(h===-2?(r.push(void 0),u):d)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[Ec!==void 0?Ec.createHTML(a):a,r]};class pr{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,s=0;const a=e.length-1,u=this.parts,[c,f]=Wg(e,n);if(this.el=pr.createElement(c,r),pn.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=pn.nextNode())!==null&&u.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(gt)){const p=f[s++];if(l.push(h),p!==void 0){const d=i.getAttribute(p.toLowerCase()+"$lit$").split(gt),g=/([.?@])?(.*)/.exec(p);u.push({type:1,index:o,name:g[2],strings:d,ctor:g[1]==="."?Zg:g[1]==="?"?qg:g[1]==="@"?Jg:Bi})}else u.push({type:6,index:o})}for(const h of l)i.removeAttribute(h)}if(Tc.test(i.tagName)){const l=i.textContent.split(gt),h=l.length-1;if(h>0){i.textContent=hn?hn.emptyScript:"";for(let p=0;p<h;p++)i.append(l[p],lr()),pn.nextNode(),u.push({type:2,index:++o});i.append(l[h],lr())}}}else if(i.nodeType===8)if(i.data===Sc)u.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(gt,l+1))!==-1;)u.push({type:7,index:o}),l+=gt.length-1}o++}}static createElement(e,n){const r=dn.createElement("template");return r.innerHTML=e,r}}function gn(t,e,n=t,r){var i,o,s,a;if(e===dr)return e;let u=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const c=fr(e)?void 0:e._$litDirective$;return(u==null?void 0:u.constructor)!==c&&((o=u==null?void 0:u._$AO)===null||o===void 0||o.call(u,!1),c===void 0?u=void 0:(u=new c(t),u._$AT(t,n,r)),r!==void 0?((s=(a=n)._$Cl)!==null&&s!==void 0?s:a._$Cl=[])[r]=u:n._$Cu=u),u!==void 0&&(e=gn(t,u._$AS(t,e.values),u,r)),e}class Xg{constructor(e,n){this.v=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:dn).importNode(r,!0);pn.currentNode=o;let s=pn.nextNode(),a=0,u=0,c=i[0];for(;c!==void 0;){if(a===c.index){let f;c.type===2?f=new gr(s,s.nextSibling,this,e):c.type===1?f=new c.ctor(s,c.name,c.strings,this,e):c.type===6&&(f=new _g(s,this,e)),this.v.push(f),c=i[++u]}a!==(c==null?void 0:c.index)&&(s=pn.nextNode(),a++)}return o}m(e){let n=0;for(const r of this.v)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class gr{constructor(e,n,r,i){var o;this.type=2,this._$AH=te,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cg=(o=i==null?void 0:i.isConnected)===null||o===void 0||o}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cg}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=gn(this,e,n),fr(e)?e===te||e==null||e===""?(this._$AH!==te&&this._$AR(),this._$AH=te):e!==this._$AH&&e!==dr&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.k(e):Vg(e)?this.S(e):this.$(e)}M(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}k(e){this._$AH!==e&&(this._$AR(),this._$AH=this.M(e))}$(e){this._$AH!==te&&fr(this._$AH)?this._$AA.nextSibling.data=e:this.k(dn.createTextNode(e)),this._$AH=e}T(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=pr.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.m(r);else{const s=new Xg(o,this),a=s.p(this.options);s.m(r),this.k(a),this._$AH=s}}_$AC(e){let n=Pc.get(e.strings);return n===void 0&&Pc.set(e.strings,n=new pr(e)),n}S(e){Dc(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const o of e)i===n.length?n.push(r=new gr(this.M(lr()),this.M(lr()),this,this.options)):r=n[i],r._$AI(o),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,n){var r;for((r=this._$AP)===null||r===void 0||r.call(this,!1,!0,n);e&&e!==this._$AB;){const i=e.nextSibling;e.remove(),e=i}}setConnected(e){var n;this._$AM===void 0&&(this._$Cg=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Bi{constructor(e,n,r,i,o){this.type=1,this._$AH=te,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=te}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let s=!1;if(o===void 0)e=gn(this,e,n,0),s=!fr(e)||e!==this._$AH&&e!==dr,s&&(this._$AH=e);else{const a=e;let u,c;for(e=o[0],u=0;u<o.length-1;u++)c=gn(this,a[r+u],n,u),c===dr&&(c=this._$AH[u]),s||(s=!fr(c)||c!==this._$AH[u]),c===te?e=te:e!==te&&(e+=(c!=null?c:"")+o[u+1]),this._$AH[u]=c}s&&!i&&this.C(e)}C(e){e===te?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Zg extends Bi{constructor(){super(...arguments),this.type=3}C(e){this.element[this.name]=e===te?void 0:e}}const Kg=hn?hn.emptyScript:"";class qg extends Bi{constructor(){super(...arguments),this.type=4}C(e){e&&e!==te?this.element.setAttribute(this.name,Kg):this.element.removeAttribute(this.name)}}class Jg extends Bi{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=gn(this,e,n,0))!==null&&r!==void 0?r:te)===dr)return;const i=this._$AH,o=e===te&&i!==te||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==te&&(i===te||o);o&&this.element.removeEventListener(this.name,this,i),s&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var n,r;typeof this._$AH=="function"?this._$AH.call((r=(n=this.options)===null||n===void 0?void 0:n.host)!==null&&r!==void 0?r:this.element,e):this._$AH.handleEvent(e)}}class _g{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){gn(this,e)}}const Rc=window.litHtmlPolyfillSupport;Rc==null||Rc(pr,gr),((fs=globalThis.litHtmlVersions)!==null&&fs!==void 0?fs:globalThis.litHtmlVersions=[]).push("2.2.3");const kc=1;function hs(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const c=f=>(f+s-t[0])/n*r+e[0];return c.invert=f=>(f-e[0])/r*n+t[0]-s,c.domain=function(f){if(arguments.length){if(t=Ud(f),n=t[1]-t[0],n<kc){n=kc;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return c}else return t},c.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],c):e},c.numberingOffset=function(f){return arguments.length?(a=f,c):a},c.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),c):i},c.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),c):i},c.paddingOuter=function(f){return arguments.length?(o=f,c):o},c.align=function(f){return arguments.length?(s=Math.max(0,Math.min(1,f)),c):s},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=f=>{const l=c.align(),h=c.numberingOffset();return pi(t[0]-l+h,t[1]-l+h,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(p=>p-a)},c.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const p=Lt(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?se(","):se(".3s");return d=>p(d+a)},c.copy=()=>hs().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),c}function $g(){const t=hs().numberingOffset(1);let e;t.genome=function(r){return arguments.length?(e=r,t):e},t.ticks=r=>{if(!e)return[];const i=t.domain(),o=t.numberingOffset(),[s,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),u=Math.max(1,Lt(i[0],i[1],r)),c=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+u,i[0]-(i[0]-l.continuousStart)%u),p=Math.min(l.continuousEnd-u/4,i[1]+1);for(let d=h;d<=p;d+=u){const g=d-o;g>=i[0]&&g<i[1]&&c.push(g)}}return c},t.tickFormat=(r,i)=>{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const o=t.domain(),s=o[1]-o[0],a=t.numberingOffset(),c=Lt(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?se(","):se(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>c(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function em(t){return t.type=="locus"}function Ye(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function mt(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const ds=Symbol("implicit");function ps(){var t=new Pt,e=[],n=[],r=ds;function i(o){let s=t.get(o);if(s===void 0){if(r!==ds)return r;t.set(o,s=e.push(o)-1)}return n[s%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Pt;for(const s of o)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return ps(e,n).unknown(r)},Ye.apply(i,arguments),i}function mn(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function mr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function At(){}var Ut=.7,An=1/Ut,xn="\\s*([+-]?\\d+)\\s*",Ar="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",We="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",tm=/^#([0-9a-f]{3,8})$/,nm=new RegExp(`^rgb\\(${xn},${xn},${xn}\\)$`),rm=new RegExp(`^rgb\\(${We},${We},${We}\\)$`),im=new RegExp(`^rgba\\(${xn},${xn},${xn},${Ar}\\)$`),om=new RegExp(`^rgba\\(${We},${We},${We},${Ar}\\)$`),sm=new RegExp(`^hsl\\(${Ar},${We},${We}\\)$`),am=new RegExp(`^hsla\\(${Ar},${We},${We},${Ar}\\)$`),Nc={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};mn(At,Ht,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:zc,formatHex:zc,formatHex8:um,formatHsl:cm,formatRgb:Oc,toString:Oc});function zc(){return this.rgb().formatHex()}function um(){return this.rgb().formatHex8()}function cm(){return jc(this).formatHsl()}function Oc(){return this.rgb().formatRgb()}function Ht(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=tm.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Gc(e):n===3?new ne(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Fi(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Fi(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=nm.exec(t))?new ne(e[1],e[2],e[3],1):(e=rm.exec(t))?new ne(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=im.exec(t))?Fi(e[1],e[2],e[3],e[4]):(e=om.exec(t))?Fi(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=sm.exec(t))?Qc(e[1],e[2]/100,e[3]/100,1):(e=am.exec(t))?Qc(e[1],e[2]/100,e[3]/100,e[4]):Nc.hasOwnProperty(t)?Gc(Nc[t]):t==="transparent"?new ne(NaN,NaN,NaN,0):null}function Gc(t){return new ne(t>>16&255,t>>8&255,t&255,1)}function Fi(t,e,n,r){return r<=0&&(t=e=n=NaN),new ne(t,e,n,r)}function gs(t){return t instanceof At||(t=Ht(t)),t?(t=t.rgb(),new ne(t.r,t.g,t.b,t.opacity)):new ne}function Mi(t,e,n,r){return arguments.length===1?gs(t):new ne(t,e,n,r==null?1:r)}function ne(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}mn(ne,Mi,mr(At,{brighter(t){return t=t==null?An:Math.pow(An,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Ut:Math.pow(Ut,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ne(Qt(this.r),Qt(this.g),Qt(this.b),Ii(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:Uc,formatHex:Uc,formatHex8:lm,formatRgb:Hc,toString:Hc}));function Uc(){return`#${jt(this.r)}${jt(this.g)}${jt(this.b)}`}function lm(){return`#${jt(this.r)}${jt(this.g)}${jt(this.b)}${jt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Hc(){const t=Ii(this.opacity);return`${t===1?"rgb(":"rgba("}${Qt(this.r)}, ${Qt(this.g)}, ${Qt(this.b)}${t===1?")":`, ${t})`}`}function Ii(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Qt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function jt(t){return t=Qt(t),(t<16?"0":"")+t.toString(16)}function Qc(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new ze(t,e,n,r)}function jc(t){if(t instanceof ze)return new ze(t.h,t.s,t.l,t.opacity);if(t instanceof At||(t=Ht(t)),!t)return new ze;if(t instanceof ze)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,a=o-i,u=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=u<.5?o+i:2-o-i,s*=60):a=u>0&&u<1?0:s,new ze(s,a,u,t.opacity)}function ms(t,e,n,r){return arguments.length===1?jc(t):new ze(t,e,n,r==null?1:r)}function ze(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mn(ze,ms,mr(At,{brighter(t){return t=t==null?An:Math.pow(An,t),new ze(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Ut:Math.pow(Ut,t),new ze(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 ne(As(t>=240?t-240:t+120,i,r),As(t,i,r),As(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new ze(Vc(this.h),Ti(this.s),Ti(this.l),Ii(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=Ii(this.opacity);return`${t===1?"hsl(":"hsla("}${Vc(this.h)}, ${Ti(this.s)*100}%, ${Ti(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Vc(t){return t=(t||0)%360,t<0?t+360:t}function Ti(t){return Math.max(0,Math.min(1,t||0))}function As(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 Yc=Math.PI/180,Wc=180/Math.PI,Pi=18,Xc=.96422,Zc=1,Kc=.82521,qc=4/29,yn=6/29,Jc=3*yn*yn,fm=yn*yn*yn;function _c(t){if(t instanceof Xe)return new Xe(t.l,t.a,t.b,t.opacity);if(t instanceof it)return $c(t);t instanceof ne||(t=gs(t));var e=vs(t.r),n=vs(t.g),r=vs(t.b),i=ys((.2225045*e+.7168786*n+.0606169*r)/Zc),o,s;return e===n&&n===r?o=s=i:(o=ys((.4360747*e+.3850649*n+.1430804*r)/Xc),s=ys((.0139322*e+.0971045*n+.7141733*r)/Kc)),new Xe(116*i-16,500*(o-i),200*(i-s),t.opacity)}function xs(t,e,n,r){return arguments.length===1?_c(t):new Xe(t,e,n,r==null?1:r)}function Xe(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}mn(Xe,xs,mr(At,{brighter(t){return new Xe(this.l+Pi*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new Xe(this.l-Pi*(t==null?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=Xc*bs(e),t=Zc*bs(t),n=Kc*bs(n),new ne(ws(3.1338561*e-1.6168667*t-.4906146*n),ws(-.9787684*e+1.9161415*t+.033454*n),ws(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ys(t){return t>fm?Math.pow(t,1/3):t/Jc+qc}function bs(t){return t>yn?t*t*t:Jc*(t-qc)}function ws(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function vs(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function hm(t){if(t instanceof it)return new it(t.h,t.c,t.l,t.opacity);if(t instanceof Xe||(t=_c(t)),t.a===0&&t.b===0)return new it(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Wc;return new it(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Cs(t,e,n,r){return arguments.length===1?hm(t):new it(t,e,n,r==null?1:r)}function it(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function $c(t){if(isNaN(t.h))return new Xe(t.l,0,0,t.opacity);var e=t.h*Yc;return new Xe(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}mn(it,Cs,mr(At,{brighter(t){return new it(this.h,this.c,this.l+Pi*(t==null?1:t),this.opacity)},darker(t){return new it(this.h,this.c,this.l-Pi*(t==null?1:t),this.opacity)},rgb(){return $c(this).rgb()}}));var el=-.14861,Es=1.78277,Ss=-.29227,Li=-.90649,xr=1.97294,tl=xr*Li,nl=xr*Es,rl=Es*Ss-Li*el;function dm(t){if(t instanceof Vt)return new Vt(t.h,t.s,t.l,t.opacity);t instanceof ne||(t=gs(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(rl*r+tl*e-nl*n)/(rl+tl-nl),o=r-i,s=(xr*(n-i)-Ss*o)/Li,a=Math.sqrt(s*s+o*o)/(xr*i*(1-i)),u=a?Math.atan2(s,o)*Wc-120:NaN;return new Vt(u<0?u+360:u,a,i,t.opacity)}function Ds(t,e,n,r){return arguments.length===1?dm(t):new Vt(t,e,n,r==null?1:r)}function Vt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mn(Vt,Ds,mr(At,{brighter(t){return t=t==null?An:Math.pow(An,t),new Vt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Ut:Math.pow(Ut,t),new Vt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Yc,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ne(255*(e+n*(el*r+Es*i)),255*(e+n*(Ss*r+Li*i)),255*(e+n*(xr*r)),this.opacity)}}));function il(t,e,n,r,i){var o=t*t,s=o*t;return((1-3*t+3*o-s)*e+(4-6*o+3*s)*n+(1+3*t+3*o-3*s)*r+s*i)/6}function ol(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],s=r>0?t[r-1]:2*i-o,a=r<e-1?t[r+2]:2*o-i;return il((n-r/e)*e,s,i,o,a)}}function sl(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],s=t[(r+1)%e],a=t[(r+2)%e];return il((n-r/e)*e,i,o,s,a)}}const Ri=t=>()=>t;function al(t,e){return function(n){return t+n*e}}function pm(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 ki(t,e){var n=e-t;return n?al(t,n>180||n<-180?n-360*Math.round(n/360):n):Ri(isNaN(t)?e:t)}function gm(t){return(t=+t)==1?re:function(e,n){return n-e?pm(e,n,t):Ri(isNaN(e)?n:e)}}function re(t,e){var n=e-t;return n?al(t,n):Ri(isNaN(t)?e:t)}const Bs=function t(e){var n=gm(e);function r(i,o){var s=n((i=Mi(i)).r,(o=Mi(o)).r),a=n(i.g,o.g),u=n(i.b,o.b),c=re(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=u(f),i.opacity=c(f),i+""}}return r.gamma=t,r}(1);function ul(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),s,a;for(s=0;s<n;++s)a=Mi(e[s]),r[s]=a.r||0,i[s]=a.g||0,o[s]=a.b||0;return r=t(r),i=t(i),o=t(o),a.opacity=1,function(u){return a.r=r(u),a.g=i(u),a.b=o(u),a+""}}}var mm=ul(ol),Am=ul(sl);function Fs(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 cl(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function xm(t,e){return(cl(e)?Fs:ll)(t,e)}function ll(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]=xt(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(a){for(s=0;s<r;++s)o[s]=i[s](a);return o}}function fl(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Oe(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function hl(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]=xt(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var Ms=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Is=new RegExp(Ms.source,"g");function ym(t){return function(){return t}}function bm(t){return function(e){return t(e)+""}}function dl(t,e){var n=Ms.lastIndex=Is.lastIndex=0,r,i,o,s=-1,a=[],u=[];for(t=t+"",e=e+"";(r=Ms.exec(t))&&(i=Is.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,u.push({i:s,x:Oe(r,i)})),n=Is.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?u[0]?bm(u[0].x):ym(e):(e=u.length,function(c){for(var f=0,l;f<e;++f)a[(l=u[f]).i]=l.x(c);return a.join("")})}function xt(t,e){var n=typeof e,r;return e==null||n==="boolean"?Ri(e):(n==="number"?Oe:n==="string"?(r=Ht(e))?(e=r,Bs):dl:e instanceof Ht?Bs:e instanceof Date?fl:cl(e)?Fs:Array.isArray(e)?ll:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?hl:Oe)(t,e)}function wm(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function vm(t,e){var n=ki(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function yr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var pl=180/Math.PI,Ts={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function gl(t,e,n,r,i,o){var s,a,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,u/=a),t*r<e*n&&(t=-t,e=-e,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*pl,skewX:Math.atan(u)*pl,scaleX:s,scaleY:a}}var Ni;function Cm(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Ts:gl(e.a,e.b,e.c,e.d,e.e,e.f)}function Em(t){return t==null||(Ni||(Ni=document.createElementNS("http://www.w3.org/2000/svg","g")),Ni.setAttribute("transform",t),!(t=Ni.transform.baseVal.consolidate()))?Ts:(t=t.matrix,gl(t.a,t.b,t.c,t.d,t.e,t.f))}function ml(t,e,n,r){function i(c){return c.length?c.pop()+" ":""}function o(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push("translate(",null,e,null,n);d.push({i:g-4,x:Oe(c,l)},{i:g-2,x:Oe(f,h)})}else(l||h)&&p.push("translate("+l+e+h+n)}function s(c,f,l,h){c!==f?(c-f>180?f+=360:f-c>180&&(c+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:Oe(c,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(c,f,l,h){c!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:Oe(c,f)}):f&&l.push(i(l)+"skewX("+f+r)}function u(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:Oe(c,l)},{i:g-2,x:Oe(f,h)})}else(l!==1||h!==1)&&p.push(i(p)+"scale("+l+","+h+")")}return function(c,f){var l=[],h=[];return c=t(c),f=t(f),o(c.translateX,c.translateY,f.translateX,f.translateY,l,h),s(c.rotate,f.rotate,l,h),a(c.skewX,f.skewX,l,h),u(c.scaleX,c.scaleY,f.scaleX,f.scaleY,l,h),c=f=null,function(p){for(var d=-1,g=h.length,A;++d<g;)l[(A=h[d]).i]=A.x(p);return l.join("")}}}var Sm=ml(Cm,"px, ","px)","deg)"),Dm=ml(Em,", ",")",")"),Bm=1e-12;function Al(t){return((t=Math.exp(t))+1/t)/2}function Fm(t){return((t=Math.exp(t))-1/t)/2}function Mm(t){return((t=Math.exp(2*t))-1)/(t+1)}const xl=function t(e,n,r){function i(o,s){var a=o[0],u=o[1],c=o[2],f=s[0],l=s[1],h=s[2],p=f-a,d=l-u,g=p*p+d*d,A,m;if(g<Bm)m=Math.log(h/c)/e,A=function(B){return[a+B*p,u+B*d,c*Math.exp(e*B*m)]};else{var b=Math.sqrt(g),y=(h*h-c*c+r*g)/(2*c*n*b),w=(h*h-c*c-r*g)/(2*h*n*b),E=Math.log(Math.sqrt(y*y+1)-y),C=Math.log(Math.sqrt(w*w+1)-w);m=(C-E)/e,A=function(B){var I=B*m,P=Al(E),U=c/(n*b)*(P*Mm(e*I+E)-Fm(E));return[a+U*p,u+U*d,c*P/Al(e*I+E)]}}return A.duration=m*1e3*e/Math.SQRT2,A}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,u=a*a;return t(s,a,u)},i}(Math.SQRT2,2,4);function yl(t){return function(e,n){var r=t((e=ms(e)).h,(n=ms(n)).h),i=re(e.s,n.s),o=re(e.l,n.l),s=re(e.opacity,n.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=o(a),e.opacity=s(a),e+""}}}const Im=yl(ki);var Tm=yl(re);function Pm(t,e){var n=re((t=xs(t)).l,(e=xs(e)).l),r=re(t.a,e.a),i=re(t.b,e.b),o=re(t.opacity,e.opacity);return function(s){return t.l=n(s),t.a=r(s),t.b=i(s),t.opacity=o(s),t+""}}function bl(t){return function(e,n){var r=t((e=Cs(e)).h,(n=Cs(n)).h),i=re(e.c,n.c),o=re(e.l,n.l),s=re(e.opacity,n.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=o(a),e.opacity=s(a),e+""}}}const Lm=bl(ki);var Rm=bl(re);function wl(t){return function e(n){n=+n;function r(i,o){var s=t((i=Ds(i)).h,(o=Ds(o)).h),a=re(i.s,o.s),u=re(i.l,o.l),c=re(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=u(Math.pow(f,n)),i.opacity=c(f),i+""}}return r.gamma=e,r}(1)}const km=wl(ki);var Nm=wl(re);function Ps(t,e){e===void 0&&(e=t,t=xt);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(s){var a=Math.max(0,Math.min(r-1,Math.floor(s*=r)));return o[a](s-a)}}function zm(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}const Om=Object.freeze(Object.defineProperty({__proto__:null,interpolate:xt,interpolateArray:xm,interpolateBasis:ol,interpolateBasisClosed:sl,interpolateDate:fl,interpolateDiscrete:wm,interpolateHue:vm,interpolateNumber:Oe,interpolateNumberArray:Fs,interpolateObject:hl,interpolateRound:yr,interpolateString:dl,interpolateTransformCss:Sm,interpolateTransformSvg:Dm,interpolateZoom:xl,interpolateRgb:Bs,interpolateRgbBasis:mm,interpolateRgbBasisClosed:Am,interpolateHsl:Im,interpolateHslLong:Tm,interpolateLab:Pm,interpolateHcl:Lm,interpolateHclLong:Rm,interpolateCubehelix:km,interpolateCubehelixLong:Nm,piecewise:Ps,quantize:zm},Symbol.toStringTag,{value:"Module"}));function Gm(t){return function(){return t}}function Ls(t){return+t}var vl=[0,1];function xe(t){return t}function Rs(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Gm(isNaN(e)?NaN:.5)}function Um(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Hm(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=Rs(i,r),o=n(s,o)):(r=Rs(r,i),o=n(o,s)),function(a){return o(r(a))}}function Qm(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]=Rs(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var u=an(t,a,1,r)-1;return o[u](i[u](a))}}function br(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function zi(){var t=vl,e=vl,n=xt,r,i,o,s=xe,a,u,c;function f(){var h=Math.min(t.length,e.length);return s!==xe&&(s=Um(t[0],t[h-1])),a=h>2?Qm:Hm,u=c=null,l}function l(h){return h==null||isNaN(h=+h)?o:(u||(u=a(t.map(r),e,n)))(r(s(h)))}return l.invert=function(h){return s(i((c||(c=a(e,t.map(r),Oe)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,Ls),f()):t.slice()},l.range=function(h){return arguments.length?(e=Array.from(h),f()):e.slice()},l.rangeRound=function(h){return e=Array.from(h),n=yr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:xe,f()):s!==xe},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(o=h,l):o},function(h,p){return r=h,i=p,f()}}function Cl(){return zi()(xe,xe)}function El(t,e,n,r){var i=Lt(t,e,n),o;switch(r=ft(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Gu(i,s))&&(r.precision=o),Vo(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Uu(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Ou(i))&&(r.precision=o-(r.type==="%")*2);break}}return se(r)}function Yt(t){var e=t.domain;return t.ticks=function(n){var r=e();return pi(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return El(i[0],i[i.length-1],n==null?10:n,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],a=r[o],u,c,f=10;for(a<s&&(c=s,s=a,a=c,c=i,i=o,o=c);f-- >0;){if(c=Iu(s,a,n),c===u)return r[i]=s,r[o]=a,e(r);if(c>0)s=Math.floor(s/c)*c,a=Math.ceil(a/c)*c;else if(c<0)s=Math.ceil(s*c)/c,a=Math.floor(a*c)/c;else break;u=c}return t},t}function Sl(){var t=Cl();return t.copy=function(){return br(t,Sl())},Ye.apply(t,arguments),Yt(t)}function Dl(t){var e;function n(r){return r==null||isNaN(r=+r)?e:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(t=Array.from(r,Ls),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return Dl(t).unknown(e)},t=arguments.length?Array.from(t,Ls):[0,1],Yt(n)}function Bl(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],s;return o<i&&(s=n,n=r,r=s,s=i,i=o,o=s),t[n]=e.floor(i),t[r]=e.ceil(o),t}function Fl(t){return Math.log(t)}function Ml(t){return Math.exp(t)}function jm(t){return-Math.log(-t)}function Vm(t){return-Math.exp(-t)}function Ym(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Wm(t){return t===10?Ym:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Xm(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}function Il(t){return(e,n)=>-t(-e,n)}function ks(t){const e=t(Fl,Ml),n=e.domain;let r=10,i,o;function s(){return i=Xm(r),o=Wm(r),n()[0]<0?(i=Il(i),o=Il(o),t(jm,Vm)):t(Fl,Ml),e}return e.base=function(a){return arguments.length?(r=+a,s()):r},e.domain=function(a){return arguments.length?(n(a),s()):n()},e.ticks=a=>{const u=n();let c=u[0],f=u[u.length-1];const l=f<c;l&&([c,f]=[f,c]);let h=i(c),p=i(f),d,g;const A=a==null?10:+a;let m=[];if(!(r%1)&&p-h<A){if(h=Math.floor(h),p=Math.ceil(p),c>0){for(;h<=p;++h)for(d=1;d<r;++d)if(g=h<0?d/o(-h):d*o(h),!(g<c)){if(g>f)break;m.push(g)}}else for(;h<=p;++h)for(d=r-1;d>=1;--d)if(g=h>0?d/o(-h):d*o(h),!(g<c)){if(g>f)break;m.push(g)}m.length*2<A&&(m=pi(c,f,A))}else m=pi(h,p,Math.min(p-h,A)).map(o);return l?m.reverse():m},e.tickFormat=(a,u)=>{if(a==null&&(a=10),u==null&&(u=r===10?"s":","),typeof u!="function"&&(!(r%1)&&(u=ft(u)).precision==null&&(u.trim=!0),u=se(u)),a===1/0)return u;const c=Math.max(1,r*a/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=c?u(f):""}},e.nice=()=>n(Bl(n(),{floor:a=>o(Math.floor(i(a))),ceil:a=>o(Math.ceil(i(a)))})),e}function Ns(){const t=ks(zi()).domain([1,10]);return t.copy=()=>br(t,Ns()).base(t.base()),Ye.apply(t,arguments),t}function Tl(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Pl(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function zs(t){var e=1,n=t(Tl(e),Pl(e));return n.constant=function(r){return arguments.length?t(Tl(e=+r),Pl(e)):e},Yt(n)}function Ll(){var t=zs(zi());return t.copy=function(){return br(t,Ll()).constant(t.constant())},Ye.apply(t,arguments)}function Rl(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Zm(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Km(t){return t<0?-t*t:t*t}function Os(t){var e=t(xe,xe),n=1;function r(){return n===1?t(xe,xe):n===.5?t(Zm,Km):t(Rl(n),Rl(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Yt(e)}function Gs(){var t=Os(zi());return t.copy=function(){return br(t,Gs()).exponent(t.exponent())},Ye.apply(t,arguments),t}function qm(){return Gs.apply(null,arguments).exponent(.5)}function kl(){var t=[],e=[],n=[],r;function i(){var s=0,a=Math.max(1,e.length);for(n=new Array(a-1);++s<a;)n[s-1]=Tu(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[an(n,s)]}return o.invertExtent=function(s){var a=e.indexOf(s);return a<0?[NaN,NaN]:[a>0?n[a-1]:t[0],a<n.length?n[a]:t[t.length-1]]},o.domain=function(s){if(!arguments.length)return t.slice();t=[];for(let a of s)a!=null&&!isNaN(a=+a)&&t.push(a);return t.sort(Zn),i()},o.range=function(s){return arguments.length?(e=Array.from(s),i()):e.slice()},o.unknown=function(s){return arguments.length?(r=s,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return kl().domain(t).range(e).unknown(r)},Ye.apply(o,arguments)}function Nl(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(u){return u!=null&&u<=u?i[an(r,u,0,n)]:o}function a(){var u=-1;for(r=new Array(n);++u<n;)r[u]=((u+1)*e-(u-n)*t)/(n+1);return s}return s.domain=function(u){return arguments.length?([t,e]=u,t=+t,e=+e,a()):[t,e]},s.range=function(u){return arguments.length?(n=(i=Array.from(u)).length-1,a()):i.slice()},s.invertExtent=function(u){var c=i.indexOf(u);return c<0?[NaN,NaN]:c<1?[t,r[0]]:c>=n?[r[n-1],e]:[r[c-1],r[c]]},s.unknown=function(u){return arguments.length&&(o=u),s},s.thresholds=function(){return r.slice()},s.copy=function(){return Nl().domain([t,e]).range(i).unknown(o)},Ye.apply(Yt(s),arguments)}function zl(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[an(t,o,0,r)]:n}return i.domain=function(o){return arguments.length?(t=Array.from(o),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(o){return arguments.length?(e=Array.from(o),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(o){var s=e.indexOf(o);return[t[s-1],t[s]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return zl().domain(t).range(e).unknown(n)},Ye.apply(i,arguments)}function Jm(t){return new Date(t)}function _m(t){return t instanceof Date?+t:+new Date(+t)}function Us(t,e,n,r,i,o,s,a,u,c){var f=Cl(),l=f.invert,h=f.domain,p=c(".%L"),d=c(":%S"),g=c("%I:%M"),A=c("%I %p"),m=c("%a %d"),b=c("%b %d"),y=c("%B"),w=c("%Y");function E(C){return(u(C)<C?p:a(C)<C?d:s(C)<C?g:o(C)<C?A:r(C)<C?i(C)<C?m:b:n(C)<C?y:w)(C)}return f.invert=function(C){return new Date(l(C))},f.domain=function(C){return arguments.length?h(Array.from(C,_m)):h().map(Jm)},f.ticks=function(C){var B=h();return t(B[0],B[B.length-1],C==null?10:C)},f.tickFormat=function(C,B){return B==null?E:c(B)},f.nice=function(C){var B=h();return(!C||typeof C.range!="function")&&(C=e(B[0],B[B.length-1],C==null?10:C)),C?h(Bl(B,C)):f},f.copy=function(){return br(f,Us(t,e,n,r,i,o,s,a,u,c))},f}function $m(){return Ye.apply(Us(cp,lp,dt,bi,qn,kt,Jo,qo,ht,os).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function eA(){return Ye.apply(Us(ap,up,pt,vi,Jn,zt,es,$o,ht,ss).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Oi(){var t=0,e=1,n,r,i,o,s=xe,a=!1,u;function c(l){return l==null||isNaN(l=+l)?u:s(i===0?.5:(l=(o(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}c.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),c):[t,e]},c.clamp=function(l){return arguments.length?(a=!!l,c):a},c.interpolator=function(l){return arguments.length?(s=l,c):s};function f(l){return function(h){var p,d;return arguments.length?([p,d]=h,s=l(p,d),c):[s(0),s(1)]}}return c.range=f(xt),c.rangeRound=f(yr),c.unknown=function(l){return arguments.length?(u=l,c):u},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),c}}function yt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Hs(){var t=Yt(Oi()(xe));return t.copy=function(){return yt(t,Hs())},mt.apply(t,arguments)}function Ol(){var t=ks(Oi()).domain([1,10]);return t.copy=function(){return yt(t,Ol()).base(t.base())},mt.apply(t,arguments)}function Gl(){var t=zs(Oi());return t.copy=function(){return yt(t,Gl()).constant(t.constant())},mt.apply(t,arguments)}function Qs(){var t=Os(Oi());return t.copy=function(){return yt(t,Qs()).exponent(t.exponent())},mt.apply(t,arguments)}function tA(){return Qs.apply(null,arguments).exponent(.5)}function Gi(){var t=0,e=.5,n=1,r=1,i,o,s,a,u,c=xe,f,l=!1,h;function p(g){return isNaN(g=+g)?h:(g=.5+((g=+f(g))-o)*(r*g<r*o?a:u),c(l?Math.max(0,Math.min(1,g)):g))}p.domain=function(g){return arguments.length?([t,e,n]=g,i=f(t=+t),o=f(e=+e),s=f(n=+n),a=i===o?0:.5/(o-i),u=o===s?0:.5/(s-o),r=o<i?-1:1,p):[t,e,n]},p.clamp=function(g){return arguments.length?(l=!!g,p):l},p.interpolator=function(g){return arguments.length?(c=g,p):c};function d(g){return function(A){var m,b,y;return arguments.length?([m,b,y]=A,c=Ps(g,[m,b,y]),p):[c(0),c(.5),c(1)]}}return p.range=d(xt),p.rangeRound=d(yr),p.unknown=function(g){return arguments.length?(h=g,p):h},function(g){return f=g,i=g(t),o=g(e),s=g(n),a=i===o?0:.5/(o-i),u=o===s?0:.5/(s-o),r=o<i?-1:1,p}}function Ul(){var t=Yt(Gi()(xe));return t.copy=function(){return yt(t,Ul())},mt.apply(t,arguments)}function Hl(){var t=ks(Gi()).domain([.1,1,10]);return t.copy=function(){return yt(t,Hl()).base(t.base())},mt.apply(t,arguments)}function Ql(){var t=zs(Gi());return t.copy=function(){return yt(t,Ql()).constant(t.constant())},mt.apply(t,arguments)}function js(){var t=Os(Gi());return t.copy=function(){return yt(t,js()).exponent(t.exponent())},mt.apply(t,arguments)}function nA(){return js.apply(null,arguments).exponent(.5)}function Vs(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const rA="identity",bn="linear",bt="log",wr="pow",vr="sqrt",Ui="symlog",jl="time",Vl="utc",Ze="sequential",wn="diverging",Ys="quantile",Yl="quantize",Wl="threshold",Ws="ordinal",Xs="point",Xl="band",Zs="bin-ordinal",_="continuous",Cr="discrete",Er="discretizing",Te="interpolating",Zl="temporal";function iA(t){return function(e){let n=e[0],r=e[1],i;return r<n&&(i=n,n=r,r=i),[t.invert(n),t.invert(r)]}}function oA(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,u,c;for(i<r&&(a=r,r=i,i=a),u=0,c=n.length;u<c;++u)n[u]>=r&&n[u]<=i&&(o<0&&(o=u),s=u);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[s]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function Ks(){const t=ps().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,u=0,c=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],p=r[1-h],d=Vs(l,a,u);let g=r[h-0];i=(p-g)/(d||1),s&&(i=Math.floor(i)),g+=(p-g-i*(l-a))*c,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const A=Kn(l).map(m=>g+i*m);return n(h?A.reverse():A)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],s=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(s=!!l,f()):s},t.padding=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),a=u,f()):a},t.paddingInner=function(l){return arguments.length?(a=Math.max(0,Math.min(1,l)),f()):a},t.paddingOuter=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.align=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const h=r[1]<r[0],p=h?n().reverse():n(),d=p.length-1;let g=+l[0],A=+l[1],m,b,y;if(!(g!==g||A!==A)&&(A<g&&(y=g,g=A,A=y),!(A<p[0]||g>r[1-h])))return m=Math.max(0,Oo(p,g)-1),b=g===A?m:Oo(p,A)-1,g-p[m]>o+1e-10&&++m,h&&(y=m,m=d-b,b=d-y),m>b?void 0:e().slice(m,b+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return Ks().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(u).align(c)},f()}function Kl(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Kl(e())},t}function sA(){return Kl(Ks().paddingInner(1))}var aA=Array.prototype.map;function uA(t){return aA.call(t,Wn)}const cA=Array.prototype.slice;function ql(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(an(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=uA(r),n):t.slice()},n.range=function(r){return arguments.length?(e=cA.call(r),n):e.slice()},n.tickFormat=function(r,i){return El(t[0],Ne(t),r==null?10:r,i)},n.copy=function(){return ql().domain(n.domain()).range(n.range())},n}const Hi={};function lA(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?iA(o):o.invertExtent?oA(o):void 0),o.type=t,o};return r.metadata=fi(Lo(n)),r}function O(t,e,n){return arguments.length>1?(Hi[t]=lA(t,e,n),this):fA(t)?Hi[t]:void 0}O(rA,Dl),O(bn,Sl,_),O(bt,Ns,[_,bt]),O(wr,Gs,_),O(vr,qm,_),O(Ui,Ll,_),O(jl,$m,[_,Zl]),O(Vl,eA,[_,Zl]),O(Ze,Hs,[_,Te]),O("".concat(Ze,"-").concat(bn),Hs,[_,Te]),O("".concat(Ze,"-").concat(bt),Ol,[_,Te,bt]),O("".concat(Ze,"-").concat(wr),Qs,[_,Te]),O("".concat(Ze,"-").concat(vr),tA,[_,Te]),O("".concat(Ze,"-").concat(Ui),Gl,[_,Te]),O("".concat(wn,"-").concat(bn),Ul,[_,Te]),O("".concat(wn,"-").concat(bt),Hl,[_,Te,bt]),O("".concat(wn,"-").concat(wr),js,[_,Te]),O("".concat(wn,"-").concat(vr),nA,[_,Te]),O("".concat(wn,"-").concat(Ui),Ql,[_,Te]),O(Ys,kl,[Er,Ys]),O(Yl,Nl,Er),O(Wl,zl,Er),O(Zs,ql,[Cr,Er]),O(Ws,ps,Cr),O(Xl,Ks,Cr),O(Xs,sA,Cr);function fA(t){return Tt(Hi,t)}function Sr(t,e){const n=Hi[t];return n&&n.metadata[e]}function Pe(t){return Sr(t,_)}function Wt(t){return Sr(t,Cr)}function vn(t){return Sr(t,Er)}function Jl(t){return Sr(t,bt)}function Qi(t){return Sr(t,Te)}function hA(t,e){const n=e[0],r=Ne(e)-n;return function(i){return t(n+i*r)}}function ji(t,e,n){return Ps(_l(e||"rgb",n),t)}function dA(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function _l(t,e){const n=Om[pA(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function pA(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const gA={blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},mA={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function $l(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function ef(t,e){for(const n in t)qs(n,e(t[n]))}const tf={};ef(mA,$l),ef(gA,t=>ji($l(t)));function qs(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(tf[t]=e,this):tf[t]}const yE="";function AA(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}function nf(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function xA(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function Ke(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function Cn(t){return t[t.length-1]}class yA{constructor(e){this.container=e,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(e){e!=this._visible&&(this.element.style.display=e?null:"none",this._visible=e)}get visible(){return this._visible}get enabled(){var e;return(e=Cn(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=AA(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&bA(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(Lc("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Lc(e,this.element),this.visible=!0,this.updatePlacement()}clear(){this._previousTooltipDatum=void 0,this.setContent(void 0)}updateWithDatum(e,n){e!==this._previousTooltipDatum&&(this._previousTooltipDatum=e,n||(n=r=>Promise.resolve(rt`${JSON.stringify(r)}`)),n(e).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function bA(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const wA="RawCode",vA="Literal",CA="Property",EA="Identifier",SA="ArrayExpression",DA="BinaryExpression",BA="CallExpression",FA="ConditionalExpression",MA="LogicalExpression",IA="MemberExpression",TA="ObjectExpression",PA="UnaryExpression";function Ge(t){this.type=t}Ge.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=LA(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function LA(t){switch(t.type){case SA:return t.elements;case DA:case MA:return[t.left,t.right];case BA:return[t.callee].concat(t.arguments);case FA:return[t.test,t.consequent,t.alternate];case IA:return[t.object,t.property];case TA:return t.properties;case CA:return[t.key,t.value];case PA:return[t.argument];case EA:case vA:case wA:default:return[]}}var qe,S,x,ce,G,Vi=1,Dr=2,Xt=3,wt=4,Yi=5,Zt=6,ye=7,Br=8,RA=9;qe={},qe[Vi]="Boolean",qe[Dr]="<end>",qe[Xt]="Identifier",qe[wt]="Keyword",qe[Yi]="Null",qe[Zt]="Numeric",qe[ye]="Punctuator",qe[Br]="String",qe[RA]="RegularExpression";var kA="ArrayExpression",NA="BinaryExpression",zA="CallExpression",OA="ConditionalExpression",rf="Identifier",GA="Literal",UA="LogicalExpression",HA="MemberExpression",QA="ObjectExpression",jA="Property",VA="UnaryExpression",ie="Unexpected token %0",YA="Unexpected number",WA="Unexpected string",XA="Unexpected identifier",ZA="Unexpected reserved word",KA="Unexpected end of input",Js="Invalid regular expression",_s="Invalid regular expression: missing /",of="Octal literals are not allowed in strict mode.",qA="Duplicate data property in object literal not allowed in strict mode",ae="ILLEGAL",Fr="Disabled.",JA=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),_A=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function Wi(t,e){if(!t)throw new Error("ASSERT: "+e)}function ot(t){return t>=48&&t<=57}function $s(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Mr(t){return"01234567".indexOf(t)>=0}function $A(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function Ir(t){return t===10||t===13||t===8232||t===8233}function Tr(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&JA.test(String.fromCharCode(t))}function Xi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&_A.test(String.fromCharCode(t))}const e1={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function sf(){for(;x<ce;){const t=S.charCodeAt(x);if($A(t)||Ir(t))++x;else break}}function ea(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)x<ce&&$s(S[x])?(r=S[x++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):N({},ie,ae);return String.fromCharCode(i)}function t1(){var t,e,n,r;for(t=S[x],e=0,t==="}"&&N({},ie,ae);x<ce&&(t=S[x++],!!$s(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&N({},ie,ae),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function af(){var t,e;for(t=S.charCodeAt(x++),e=String.fromCharCode(t),t===92&&(S.charCodeAt(x)!==117&&N({},ie,ae),++x,t=ea("u"),(!t||t==="\\"||!Tr(t.charCodeAt(0)))&&N({},ie,ae),e=t);x<ce&&(t=S.charCodeAt(x),!!Xi(t));)++x,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),S.charCodeAt(x)!==117&&N({},ie,ae),++x,t=ea("u"),(!t||t==="\\"||!Xi(t.charCodeAt(0)))&&N({},ie,ae),e+=t);return e}function n1(){var t,e;for(t=x++;x<ce;){if(e=S.charCodeAt(x),e===92)return x=t,af();if(Xi(e))++x;else break}return S.slice(t,x)}function r1(){var t,e,n;return t=x,e=S.charCodeAt(x)===92?af():n1(),e.length===1?n=Xt:e1.hasOwnProperty(e)?n=wt:e==="null"?n=Yi:e==="true"||e==="false"?n=Vi:n=Xt,{type:n,value:e,start:t,end:x}}function ta(){var t=x,e=S.charCodeAt(x),n,r=S[x],i,o,s;switch(e){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++x,{type:ye,value:String.fromCharCode(e),start:t,end:x};default:if(n=S.charCodeAt(x+1),n===61)switch(e){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return x+=2,{type:ye,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:x};case 33:case 61:return x+=2,S.charCodeAt(x)===61&&++x,{type:ye,value:S.slice(t,x),start:t,end:x}}}if(s=S.substr(x,4),s===">>>=")return x+=4,{type:ye,value:s,start:t,end:x};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return x+=3,{type:ye,value:o,start:t,end:x};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return x+=2,{type:ye,value:i,start:t,end:x};if(i==="//"&&N({},ie,ae),"<>=!+-*%&|^/".indexOf(r)>=0)return++x,{type:ye,value:r,start:t,end:x};N({},ie,ae)}function i1(t){let e="";for(;x<ce&&$s(S[x]);)e+=S[x++];return e.length===0&&N({},ie,ae),Tr(S.charCodeAt(x))&&N({},ie,ae),{type:Zt,value:parseInt("0x"+e,16),start:t,end:x}}function o1(t){let e="0"+S[x++];for(;x<ce&&Mr(S[x]);)e+=S[x++];return(Tr(S.charCodeAt(x))||ot(S.charCodeAt(x)))&&N({},ie,ae),{type:Zt,value:parseInt(e,8),octal:!0,start:t,end:x}}function uf(){var t,e,n;if(n=S[x],Wi(ot(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=x,t="",n!=="."){if(t=S[x++],n=S[x],t==="0"){if(n==="x"||n==="X")return++x,i1(e);if(Mr(n))return o1(e);n&&ot(n.charCodeAt(0))&&N({},ie,ae)}for(;ot(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="."){for(t+=S[x++];ot(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="e"||n==="E")if(t+=S[x++],n=S[x],(n==="+"||n==="-")&&(t+=S[x++]),ot(S.charCodeAt(x)))for(;ot(S.charCodeAt(x));)t+=S[x++];else N({},ie,ae);return Tr(S.charCodeAt(x))&&N({},ie,ae),{type:Zt,value:parseFloat(t),start:e,end:x}}function s1(){var t="",e,n,r,i,o=!1;for(e=S[x],Wi(e==="'"||e==='"',"String literal must starts with a quote"),n=x,++x;x<ce;)if(r=S[x++],r===e){e="";break}else if(r==="\\")if(r=S[x++],!r||!Ir(r.charCodeAt(0)))switch(r){case"u":case"x":S[x]==="{"?(++x,t+=t1()):t+=ea(r);break;case"n":t+=`
11
+ `;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:Mr(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),x<ce&&Mr(S[x])&&(o=!0,i=i*8+"01234567".indexOf(S[x++]),"0123".indexOf(r)>=0&&x<ce&&Mr(S[x])&&(i=i*8+"01234567".indexOf(S[x++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&S[x]===`
12
+ `&&++x;else{if(Ir(r.charCodeAt(0)))break;t+=r}return e!==""&&N({},ie,ae),{type:Br,value:t,octal:o,start:n,end:x}}function a1(t,e){let n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";N({},Js)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{N({},Js)}try{return new RegExp(t,e)}catch{return null}}function u1(){var t,e,n,r,i;for(t=S[x],Wi(t==="/","Regular expression literal must start with a slash"),e=S[x++],n=!1,r=!1;x<ce;)if(t=S[x++],e+=t,t==="\\")t=S[x++],Ir(t.charCodeAt(0))&&N({},_s),e+=t;else if(Ir(t.charCodeAt(0)))N({},_s);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||N({},_s),i=e.substr(1,e.length-2),{value:i,literal:e}}function c1(){var t,e,n;for(e="",n="";x<ce&&(t=S[x],!!Xi(t.charCodeAt(0)));)++x,t==="\\"&&x<ce?N({},ie,ae):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&N({},Js,n),{value:n,literal:e}}function l1(){var t,e,n,r;return G=null,sf(),t=x,e=u1(),n=c1(),r=a1(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:x}}function f1(t){return t.type===Xt||t.type===wt||t.type===Vi||t.type===Yi}function cf(){if(sf(),x>=ce)return{type:Dr,start:x,end:x};const t=S.charCodeAt(x);return Tr(t)?r1():t===40||t===41||t===59?ta():t===39||t===34?s1():t===46?ot(S.charCodeAt(x+1))?uf():ta():ot(t)?uf():ta()}function be(){const t=G;return x=t.end,G=cf(),x=t.end,t}function lf(){const t=x;G=cf(),x=t}function h1(t){const e=new Ge(kA);return e.elements=t,e}function ff(t,e,n){const r=new Ge(t==="||"||t==="&&"?UA:NA);return r.operator=t,r.left=e,r.right=n,r}function d1(t,e){const n=new Ge(zA);return n.callee=t,n.arguments=e,n}function p1(t,e,n){const r=new Ge(OA);return r.test=t,r.consequent=e,r.alternate=n,r}function na(t){const e=new Ge(rf);return e.name=t,e}function Pr(t){const e=new Ge(GA);return e.value=t.value,e.raw=S.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function hf(t,e,n){const r=new Ge(HA);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function g1(t){const e=new Ge(QA);return e.properties=t,e}function df(t,e,n){const r=new Ge(jA);return r.key=e,r.value=n,r.kind=t,r}function m1(t,e){const n=new Ge(VA);return n.operator=t,n.argument=e,n.prefix=!0,n}function N(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(Wi(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=x,n.description=i,n}function Zi(t){t.type===Dr&&N(t,KA),t.type===Zt&&N(t,YA),t.type===Br&&N(t,WA),t.type===Xt&&N(t,XA),t.type===wt&&N(t,ZA),N(t,ie,t.value)}function le(t){const e=be();(e.type!==ye||e.value!==t)&&Zi(e)}function j(t){return G.type===ye&&G.value===t}function ra(t){return G.type===wt&&G.value===t}function A1(){const t=[];for(x=G.start,le("[");!j("]");)j(",")?(be(),t.push(null)):(t.push(Kt()),j("]")||le(","));return be(),h1(t)}function pf(){x=G.start;const t=be();return t.type===Br||t.type===Zt?(t.octal&&N(t,of),Pr(t)):na(t.value)}function x1(){var t,e,n,r;if(x=G.start,t=G,t.type===Xt)return n=pf(),le(":"),r=Kt(),df("init",n,r);if(t.type===Dr||t.type===ye)Zi(t);else return e=pf(),le(":"),r=Kt(),df("init",e,r)}function y1(){var t=[],e,n,r,i={},o=String;for(x=G.start,le("{");!j("}");)e=x1(),e.key.type===rf?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?N({},qA):i[r]=!0,t.push(e),j("}")||le(",");return le("}"),g1(t)}function b1(){le("(");const t=ia();return le(")"),t}const w1={if:1};function v1(){var t,e,n;if(j("("))return b1();if(j("["))return A1();if(j("{"))return y1();if(t=G.type,x=G.start,t===Xt||w1[G.value])n=na(be().value);else if(t===Br||t===Zt)G.octal&&N(G,of),n=Pr(be());else{if(t===wt)throw new Error(Fr);t===Vi?(e=be(),e.value=e.value==="true",n=Pr(e)):t===Yi?(e=be(),e.value=null,n=Pr(e)):j("/")||j("/=")?(n=Pr(l1()),lf()):Zi(be())}return n}function C1(){const t=[];if(le("("),!j(")"))for(;x<ce&&(t.push(Kt()),!j(")"));)le(",");return le(")"),t}function E1(){x=G.start;const t=be();return f1(t)||Zi(t),na(t.value)}function S1(){return le("."),E1()}function D1(){le("[");const t=ia();return le("]"),t}function B1(){var t,e,n;for(t=v1();;)if(j("."))n=S1(),t=hf(".",t,n);else if(j("("))e=C1(),t=d1(t,e);else if(j("["))n=D1(),t=hf("[",t,n);else break;return t}function gf(){const t=B1();if(G.type===ye&&(j("++")||j("--")))throw new Error(Fr);return t}function Ki(){var t,e;if(G.type!==ye&&G.type!==wt)e=gf();else{if(j("++")||j("--"))throw new Error(Fr);if(j("+")||j("-")||j("~")||j("!"))t=be(),e=Ki(),e=m1(t.value,e);else{if(ra("delete")||ra("void")||ra("typeof"))throw new Error(Fr);e=gf()}}return e}function mf(t){let e=0;if(t.type!==ye&&t.type!==wt)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11;break}return e}function F1(){var t,e,n,r,i,o,s,a,u,c;if(t=G,u=Ki(),r=G,i=mf(r),i===0)return u;for(r.prec=i,be(),e=[t,G],s=Ki(),o=[u,r,s];(i=mf(G))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,u=o.pop(),e.pop(),n=ff(a,u,s),o.push(n);r=be(),r.prec=i,o.push(r),e.push(G),n=Ki(),o.push(n)}for(c=o.length-1,n=o[c],e.pop();c>1;)e.pop(),n=ff(o[c-1].value,o[c-2],n),c-=2;return n}function Kt(){var t,e,n;return t=F1(),j("?")&&(be(),e=Kt(),le(":"),n=Kt(),t=p1(t,e,n)),t}function ia(){const t=Kt();if(j(","))throw new Error(Fr);return t}function M1(t){S=t,x=0,ce=S.length,G=null,lf();const e=ia();if(G.type!==Dr)throw new Error("Unexpect token after expression.");return e}var I1={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function T1(t){function e(s,a,u,c){let f=t(a[0]);return u&&(f=u+"("+f+")",u.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+s+(c<0?"":c===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(s,a,u){return c=>e(s,c,a,u)}const r="new Date",i="String",o="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(s){s.length<3&&X("Missing arguments to clamp function."),s.length>3&&X("Too many arguments to clamp function.");const a=s.map(t);return"Math.max("+a[1]+", Math.min("+a[2]+","+a[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:n("getDate",r,0),day:n("getDay",r,0),year:n("getFullYear",r,0),month:n("getMonth",r,0),hours:n("getHours",r,0),minutes:n("getMinutes",r,0),seconds:n("getSeconds",r,0),milliseconds:n("getMilliseconds",r,0),time:n("getTime",r,0),timezoneoffset:n("getTimezoneOffset",r,0),utcdate:n("getUTCDate",r,0),utcday:n("getUTCDay",r,0),utcyear:n("getUTCFullYear",r,0),utcmonth:n("getUTCMonth",r,0),utchours:n("getUTCHours",r,0),utcminutes:n("getUTCMinutes",r,0),utcseconds:n("getUTCSeconds",r,0),utcmilliseconds:n("getUTCMilliseconds",r,0),length:n("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:n("toUpperCase",i,0),lower:n("toLowerCase",i,0),substring:n("substring",i),split:n("split",i),trim:n("trim",i,0),regexp:o,test:n("test",o),if:function(s){s.length<3&&X("Missing arguments to if function."),s.length>3&&X("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function P1(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function L1(t){t=t||{};const e=t.allowed?fi(t.allowed):{},n=t.forbidden?fi(t.forbidden):{},r=t.constants||I1,i=(t.functions||T1)(l),o=t.globalvar,s=t.fieldvar,a=ge(o)?o:d=>`${o}["${d}"]`;let u={},c={},f=0;function l(d){if(Z(d))return d;const g=h[d.type];return g==null&&X("Unsupported type: "+d.type),g(d)}const h={Literal:d=>d.raw,Identifier:d=>{const g=d.name;return f>0?g:Tt(n,g)?X("Illegal identifier: "+g):Tt(r,g)?r[g]:Tt(e,g)?g:(u[g]=1,a(g))},MemberExpression:d=>{const g=!d.computed,A=l(d.object);g&&(f+=1);const m=l(d.property);return A===s&&(c[P1(m)]=1),g&&(f-=1),A+(g?"."+m:"["+m+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&X("Illegal callee type: "+d.callee.type);const g=d.callee.name,A=d.arguments,m=Tt(i,g)&&i[g];return m||X("Unrecognized function: "+g),ge(m)?m(A):m+"("+A.map(l).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(l).join(",")+"]",BinaryExpression:d=>"("+l(d.left)+" "+d.operator+" "+l(d.right)+")",UnaryExpression:d=>"("+d.operator+l(d.argument)+")",ConditionalExpression:d=>"("+l(d.test)+"?"+l(d.consequent)+":"+l(d.alternate)+")",LogicalExpression:d=>"("+l(d.left)+d.operator+l(d.right)+")",ObjectExpression:d=>"{"+d.properties.map(l).join(",")+"}",Property:d=>{f+=1;const g=l(d.key);return f-=1,g+":"+l(d.value)}};function p(d){const g={code:l(d),globals:Object.keys(u),fields:Object.keys(c)};return u={},c={},g}return p.functions=i,p.constants=r,p}function oa(t,e={}){const n=L1({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=M1(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),s=a=>o(a,e);return s.fields=i.fields,s}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function R1(){let t=0;const e=new Map,n=r=>{let i=e.get(r);return i===void 0&&(i=t++,e.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of e.entries())if(i[1]==r)return i[0]},n.domain=()=>[...e.keys()],n}function k1(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Le(i)&&i.resolutionChannel||r);n[r]=N1(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function N1(t,e,n,r){let i;if(Ue(t)){const o=t.value;i=s=>o,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=o=>{},i.accessor=n,i.constant=n.constant;else{if(!e)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),Wt(e.type)){const o=R1();o.addAll(e.domain()),i.indexer=o}i.constant=n.constant,i.accessor=n,i.scale=e}else throw new Error(`Missing value or accessor (field, expr, datum) on channel "${r}": ${JSON.stringify(t)}`);return i.invert=e?o=>e.invert(o):o=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(t))},i.channelDef=t,i.applyMetadata=o=>{for(const s in i)s in i&&(o[s]=i[s]);return o},i}function Ue(t){return t&&"value"in t}function Lr(t){return t&&"field"in t}function Rr(t){return t&&"datum"in t}function Le(t){return Lr(t)||Rr(t)||aa(t)||Af(t)}function sa(t,e){const n=t.mark.encoding[e];if(Le(n))return n;throw new Error("Not a channel def with scale!")}function Af(t){return t&&"chrom"in t}function aa(t){return t&&"expr"in t}const kr=["x","y"],z1=["x2","y2"],O1=[...kr,...z1];function xf(t){return kr.includes(t)}function Nr(t){return O1.includes(t)}const ua={x:"x2",y:"y2"},yf=Object.fromEntries(Object.entries(ua).map(t=>[t[1],t[0]]));function zr(t){return t in yf}function G1(t){const e=ua[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function En(t){var e;return(e=yf[t])!=null?e:t}function qt(t){return["color","fill","stroke"].includes(En(t))}function qi(t){return["shape","squeeze"].includes(t)}function bf(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function wf(t){if(!qi(t))throw new Error("Not a discrete channel: "+t);const e=new Map(bf(t).map((n,r)=>[n,r]));return n=>{const r=e.get(n);if(r!==void 0)return r;throw new Error(`Invalid value for "${t}" channel: ${n}`)}}function H(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return T(n,[t],e)}else return ii(t)}class U1{constructor(){this.accessorCreators=[],this.register(e=>{if(Lr(e))try{const n=H(e.field);return n.constant=!1,n.fields=It(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>aa(e)?H1(e.expr):void 0),this.register(e=>{if(Rr(e)){const r=md(e.datum);return r.constant=!0,r.fields=[],r}})}register(e){this.accessorCreators.push(e)}createAccessor(e){for(const n of this.accessorCreators){const r=n(e);if(r)return r}}}function H1(t){const e=oa(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
13
13
  Available via the MIT license.
14
- see: http://github.com/greggman/twgl.js for details */const ua=5120,zr=5121,ca=5122,la=5123,fa=5124,ha=5125,da=5126,U1=32819,H1=32820,Q1=33635,j1=5131,V1=33640,Y1=35899,W1=35902,X1=36269,Z1=34042,wf={};{const t=wf;t[ua]=Int8Array,t[zr]=Uint8Array,t[ca]=Int16Array,t[la]=Uint16Array,t[fa]=Int32Array,t[ha]=Uint32Array,t[da]=Float32Array,t[U1]=Uint16Array,t[H1]=Uint16Array,t[Q1]=Uint16Array,t[j1]=Uint16Array,t[V1]=Uint32Array,t[Y1]=Uint32Array,t[W1]=Uint32Array,t[X1]=Uint32Array,t[Z1]=Uint32Array}function pa(t){if(t instanceof Int8Array)return ua;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return zr;if(t instanceof Int16Array)return ca;if(t instanceof Uint16Array)return la;if(t instanceof Int32Array)return fa;if(t instanceof Uint32Array)return ha;if(t instanceof Float32Array)return da;throw new Error("unsupported typed array type")}function K1(t){if(t===Int8Array)return ua;if(t===Uint8Array||t===Uint8ClampedArray)return zr;if(t===Int16Array)return ca;if(t===Uint16Array)return la;if(t===Int32Array)return fa;if(t===Uint32Array)return ha;if(t===Float32Array)return da;throw new Error("unsupported typed array type")}function q1(t){const e=wf[t];if(!e)throw new Error("unknown gl type");return e}const qi=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function J1(...t){console.error(...t)}function vf(...t){console.warn(...t)}function _1(t,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function Cf(t,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function Ji(t,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function $1(t,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const Ef=35044,Je=34962,ex=34963,tx=34660,nx=5120,rx=5121,ix=5122,ox=5123,sx=5124,ax=5125,ux=5126,Sf={attribPrefix:""};function Df(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Ef)}function Bf(t,e,n,r){if(_1(t,e))return e;n=n||Je;const i=t.createBuffer();return Df(t,n,i,e,r),i}function Ff(t){return t==="indices"}function cx(t){return t instanceof Int8Array||t instanceof Uint8Array}function lx(t){return t===Int8Array||t===Uint8Array}function fx(t){return t.length?t:t.data}const hx=/coord|texture/i,dx=/color|colour/i;function Mf(t,e){let n;if(hx.test(t)?n=2:dx.test(t)?n=4:n=3,e%n>0)throw new Error(`Can not guess numComponents for attribute '${t}'. Tried ${n} but ${e} values is not evenly divisible by ${n}. You should specify it.`);return n}function px(t,e){return t.numComponents||t.size||Mf(e,fx(t).length)}function ga(t,e){if(qi(t))return t;if(qi(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(Ff(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function gx(t,e){const n={};return Object.keys(e).forEach(function(r){if(!Ff(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Sf.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!qi(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let s,a,u,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)s=i.buffer,c=i.numComponents||i.size,a=i.type,u=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,h=f*l.BYTES_PER_ELEMENT;a=K1(l),u=i.normalize!==void 0?i.normalize:lx(l),c=i.numComponents||i.size||Mf(r,f),s=t.createBuffer(),t.bindBuffer(Je,s),t.bufferData(Je,h,i.drawType||Ef)}else{const f=ga(i,r);s=Bf(t,f,void 0,i.drawType),a=pa(f),u=i.normalize!==void 0?i.normalize:cx(f),c=px(i,r)}n[o]={buffer:s,numComponents:c,type:a,normalize:u,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(Je,null),n}function mx(t,e,n,r){n=ga(n),r!==void 0?(t.bindBuffer(Je,e.buffer),t.bufferSubData(Je,r,n)):Df(t,Je,e.buffer,n,e.drawType)}function Ax(t,e){return e===nx||e===rx?1:e===ix||e===ox?2:e===sx||e===ax||e===ux?4:0}const ma=["position","positions","a_position"];function xx(t,e){let n,r;for(r=0;r<ma.length&&(n=ma[r],!(n in e||(n=Sf.attribPrefix+n,n in e)));++r);r===ma.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(Je,i.buffer);const o=t.getBufferParameter(Je,tx);t.bindBuffer(Je,null);const s=Ax(t,i.type),a=o/s,u=i.numComponents||i.size,c=a/u;if(c%1!==0)throw new Error(`numComponents ${u} not correct for length ${length}`);return c}function yx(t,e,n){const r=gx(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=ga(o,"indices");i.indices=Bf(t,s,ex),i.numElements=s.length,i.elementType=pa(s)}else i.numElements||(i.numElements=xx(t,i.attribs));return i}function Sn(t){return!!t.texStorage2D}const Aa=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const s=e[r[o]];e[r[o]]=s?`${s} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),vt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Dn=qi,If=function(){let t;return function(){return t=t||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Tf=6406,_e=6407,V=6408,Pf=6409,Lf=6410,Or=6402,Rf=34041,_i=33071,bx=9728,wx=9729,st=3553,at=34067,Ct=32879,Et=35866,$i=34069,vx=34070,Cx=34071,Ex=34072,Sx=34073,Dx=34074,xa=10241,ya=10240,eo=10242,to=10243,kf=32882,Bx=33082,Fx=33083,Mx=33084,Ix=33085,ba=3317,Nf=3314,zf=32878,Of=3316,Gf=3315,Uf=32877,Tx=37443,Px=37441,Lx=37440,Rx=33321,kx=36756,Nx=33325,zx=33326,Ox=33330,Gx=33329,Ux=33338,Hx=33337,Qx=33340,jx=33339,Vx=33323,Yx=36757,Wx=33327,Xx=33328,Zx=33336,Kx=33335,qx=33332,Jx=33331,_x=33334,$x=33333,ey=32849,ty=35905,ny=36194,ry=36758,iy=35898,oy=35901,sy=34843,ay=34837,uy=36221,cy=36239,ly=36215,fy=36233,hy=36209,dy=36227,py=32856,gy=35907,my=36759,Ay=32855,xy=32854,yy=32857,by=34842,wy=34836,vy=36220,Cy=36238,Ey=36975,Sy=36214,Dy=36232,By=36226,Fy=36208,My=33189,Iy=33190,Ty=36012,Py=36013,Ly=35056,St=5120,Y=5121,no=5122,Bn=5123,ro=5124,Jt=5125,fe=5126,Hf=32819,Qf=32820,jf=33635,He=5131,Gr=36193,wa=33640,Ry=35899,ky=35902,Ny=36269,zy=34042,io=33319,Fn=33320,oo=6403,Mn=36244,In=36248,_t=36249;let va;function so(t){if(!va){const e={};e[Tf]={textureFormat:Tf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Y,He,Gr,fe]},e[Pf]={textureFormat:Pf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Y,He,Gr,fe]},e[Lf]={textureFormat:Lf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[Y,He,Gr,fe]},e[_e]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[Y,He,Gr,fe,jf]},e[V]={textureFormat:V,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[Y,He,Gr,fe,Hf,Qf]},e[Or]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Jt,Bn]},e[Rx]={textureFormat:oo,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[Y]},e[kx]={textureFormat:oo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[St]},e[Nx]={textureFormat:oo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[fe,He]},e[zx]={textureFormat:oo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[Ox]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Y]},e[Gx]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[St]},e[qx]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Bn]},e[Jx]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[no]},e[_x]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Jt]},e[$x]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ro]},e[Vx]={textureFormat:io,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[Y]},e[Yx]={textureFormat:io,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[St]},e[Wx]={textureFormat:io,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[fe,He]},e[Xx]={textureFormat:io,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[fe]},e[Zx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Y]},e[Kx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[St]},e[Ux]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Bn]},e[Hx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[no]},e[Qx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Jt]},e[jx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ro]},e[ey]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[Y]},e[ty]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Y]},e[ny]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[Y,jf]},e[ry]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[St]},e[iy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,He,Ry]},e[oy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,He,ky]},e[sy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[fe,He]},e[ay]={textureFormat:_e,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[fe]},e[uy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Y]},e[cy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[St]},e[ly]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Bn]},e[fy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[no]},e[hy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Jt]},e[dy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ro]},e[py]={textureFormat:V,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Y]},e[gy]={textureFormat:V,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Y]},e[my]={textureFormat:V,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[St]},e[Ay]={textureFormat:V,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[Y,Qf,wa]},e[xy]={textureFormat:V,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[Y,Hf]},e[yy]={textureFormat:V,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[wa]},e[by]={textureFormat:V,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[fe,He]},e[wy]={textureFormat:V,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[fe]},e[vy]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Y]},e[Cy]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[St]},e[Ey]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[wa]},e[Sy]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Bn]},e[Dy]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[no]},e[By]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[ro]},e[Fy]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Jt]},e[My]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Bn,Jt]},e[Iy]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Jt]},e[Ty]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[Ly]={textureFormat:Rf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[zy]},e[Py]={textureFormat:Rf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ny]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const s=r.type[o];r.bytesPerElementMap[s]=i})}),va=e}return va[t]}function Oy(t,e){const n=so(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Tn(t){const e=so(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Vf(t){return(t&t-1)===0}function Gy(t,e,n,r){if(!Sn(t))return Vf(e)&&Vf(n);const i=so(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function Uy(t){const e=so(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Yf(t,e,n){return Dn(e)?pa(e):n||Y}function ao(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===at?6:1));o%1===0?(n=o,r=o):(n=i,r=1)}else if(r){if(!n&&(n=i/r,n%1))throw"can't guess dimensions"}else if(r=i/n,r%1)throw"can't guess dimensions";return{width:n,height:r}}function Pn(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(Tx,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(Px,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(Lx,e.flipY)}function Wf(t){t.pixelStorei(ba,4),Sn(t)&&(t.pixelStorei(Nf,0),t.pixelStorei(zf,0),t.pixelStorei(Of,0),t.pixelStorei(Gf,0),t.pixelStorei(Uf,0))}function Hy(t,e,n,r){r.minMag&&(n.call(t,e,xa,r.minMag),n.call(t,e,ya,r.minMag)),r.min&&n.call(t,e,xa,r.min),r.mag&&n.call(t,e,ya,r.mag),r.wrap&&(n.call(t,e,eo,r.wrap),n.call(t,e,to,r.wrap),(e===Ct||$1(t,e))&&n.call(t,e,kf,r.wrap)),r.wrapR&&n.call(t,e,kf,r.wrapR),r.wrapS&&n.call(t,e,eo,r.wrapS),r.wrapT&&n.call(t,e,to,r.wrapT),r.minLod&&n.call(t,e,Bx,r.minLod),r.maxLod&&n.call(t,e,Fx,r.maxLod),r.baseLevel&&n.call(t,e,Mx,r.baseLevel),r.maxLevel&&n.call(t,e,Ix,r.maxLevel)}function Xf(t,e,n){const r=n.target||st;t.bindTexture(r,e),Hy(t,r,t.texParameteri,n)}function Qy(t){return t=t||vt.textureColor,Dn(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Ca(t,e,n,r,i,o){n=n||vt.textureOptions,o=o||V;const s=n.target||st;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),Gy(t,r,i,o))t.generateMipmap(s);else{const a=Uy(o)?wx:bx;t.texParameteri(s,xa,a),t.texParameteri(s,ya,a),t.texParameteri(s,eo,_i),t.texParameteri(s,to,_i)}}function Ur(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Ea(t,e){return e=e||{},e.cubeFaceOrder||[$i,vx,Cx,Ex,Sx,Dx]}function Sa(t,e){const r=Ea(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function Zf(t,e,n,r){r=r||vt.textureOptions;const i=r.target||st,o=r.level||0;let s=n.width,a=n.height;const u=r.internalFormat||r.format||V,c=Tn(u),f=r.format||c.format,l=r.type||c.type;if(Pn(t,r),t.bindTexture(i,e),i===at){const h=n.width,p=n.height;let d,g;if(h/6===p)d=p,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(p/6===h)d=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===p/2)d=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===p/3)d=h/2,g=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);const A=If();A?(A.canvas.width=d,A.canvas.height=d,s=d,a=d,Sa(t,r).forEach(function(m){const b=g[m.ndx*2+0]*d,y=g[m.ndx*2+1]*d;A.drawImage(n,b,y,d,d,0,0,d,d),t.texImage2D(m.face,o,u,f,l,A.canvas)}),A.canvas.width=1,A.canvas.height=1):typeof createImageBitmap<"u"&&(s=d,a=d,Sa(t,r).forEach(function(m){const b=g[m.ndx*2+0]*d,y=g[m.ndx*2+1]*d;t.texImage2D(m.face,o,u,d,d,0,f,l,null),createImageBitmap(n,b,y,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(w){Pn(t,r),t.bindTexture(i,e),t.texImage2D(m.face,o,u,f,l,w),Ur(r)&&Ca(t,e,r,s,a,u)})}))}else if(i===Ct||i===Et){const h=Math.min(n.width,n.height),p=Math.max(n.width,n.height),d=p/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const g=n.width===p?1:0,A=n.height===p?1:0;t.pixelStorei(ba,1),t.pixelStorei(Nf,n.width),t.pixelStorei(zf,0),t.pixelStorei(Uf,0),t.texImage3D(i,o,u,h,h,h,0,f,l,null);for(let m=0;m<d;++m){const b=m*h*g,y=m*h*A;t.pixelStorei(Of,b),t.pixelStorei(Gf,y),t.texSubImage3D(i,o,0,0,m,h,h,1,f,l,n)}Wf(t)}else t.texImage2D(i,o,u,f,l,n);Ur(r)&&Ca(t,e,r,s,a,u),Xf(t,e,r)}function Hr(){}function jy(t){if(typeof document<"u"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function Vy(t,e){return e===void 0&&!jy(t)?"anonymous":e}function Yy(t,e,n){n=n||Hr;let r;if(e=e!==void 0?e:vt.crossOrigin,e=Vy(t,e),typeof Image<"u"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",s),r=null},o=function(){const u="couldn't load image: "+t;J1(u),n(u,r),i()},s=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",s),r.src=t,r}else if(typeof ImageBitmap<"u"){let i,o;const s=function(){n(i,o)},a={};e&&(a.mode="cors"),fetch(t,a).then(function(u){if(!u.ok)throw u;return u.blob()}).then(function(u){return createImageBitmap(u,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(u){o=u,setTimeout(s)}).catch(function(u){i=u,setTimeout(s)}),r=null}return r}function Kf(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof ImageData<"u"&&t instanceof ImageData||typeof HTMLElement<"u"&&t instanceof HTMLElement}function Da(t,e,n){return Kf(t)?(setTimeout(function(){n(null,t)}),t):Yy(t,e,n)}function Ba(t,e,n){n=n||vt.textureOptions;const r=n.target||st;if(t.bindTexture(r,e),n.color===!1)return;const i=Qy(n.color);if(r===at)for(let o=0;o<6;++o)t.texImage2D($i+o,0,V,1,1,0,V,Y,i);else r===Ct||r===Et?t.texImage3D(r,0,V,1,1,1,0,V,Y,i):t.texImage2D(r,0,V,1,1,0,V,Y,i)}function Wy(t,e,n,r){return r=r||Hr,n=n||vt.textureOptions,Ba(t,e,n),n=Object.assign({},n),Da(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(Zf(t,e,s,n),r(null,e,s))})}function Xy(t,e,n,r){r=r||Hr;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,s=n.internalFormat||n.format||V,a=Tn(s),u=n.format||a.format,c=n.type||Y,f=n.target||st;if(f!==at)throw"target must be TEXTURE_CUBE_MAP";Ba(t,e,n),n=Object.assign({},n);let l=6;const h=[],p=Ea(t,n);let d;function g(A){return function(m,b){--l,m?h.push(m):b.width!==b.height?h.push("cubemap face img is not a square: "+b.src):(Pn(t,n),t.bindTexture(f,e),l===5?Ea().forEach(function(y){t.texImage2D(y,o,s,u,c,b)}):t.texImage2D(A,o,s,u,c,b),Ur(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,d)}}d=i.map(function(A,m){return Da(A,n.crossOrigin,g(p[m]))})}function Zy(t,e,n,r){r=r||Hr;const i=n.src,o=n.internalFormat||n.format||V,s=Tn(o),a=n.format||s.format,u=n.type||Y,c=n.target||Et;if(c!==Ct&&c!==Et)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Ba(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let h;const p=n.level||0;let d=n.width,g=n.height;const A=i.length;let m=!0;function b(y){return function(w,E){if(--f,w)l.push(w);else{if(Pn(t,n),t.bindTexture(c,e),m){m=!1,d=n.width||E.width,g=n.height||E.height,t.texImage3D(c,p,o,d,g,A,0,a,u,null);for(let C=0;C<A;++C)t.texSubImage3D(c,p,0,0,C,d,g,1,a,u,E)}else{let C=E,B;(E.width!==d||E.height!==g)&&(B=If(),C=B.canvas,B.canvas.width=d,B.canvas.height=g,B.drawImage(E,0,0,d,g)),t.texSubImage3D(c,p,0,0,y,d,g,1,a,u,C),B&&C===B.canvas&&(B.canvas.width=0,B.canvas.height=0)}Ur(n)&&t.generateMipmap(c)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(y,w){return Da(y,n.crossOrigin,b(w))})}function qf(t,e,n,r){r=r||vt.textureOptions;const i=r.target||st;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const u=r.level||0,c=r.internalFormat||r.format||V,f=Tn(c),l=r.format||f.format,h=r.type||Yf(t,n,f.type);if(Dn(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const A=q1(h);n=new A(n)}const p=Oy(c,h),d=n.byteLength/p;if(d%1)throw"length wrong size for format: "+Aa(t,l);let g;if(i===Ct||i===Et)if(!o&&!s&&!a){const A=Math.cbrt(d);if(A%1!==0)throw"can't guess cube size of array of numElements: "+d;o=A,s=A,a=A}else o&&(!s||!a)?(g=ao(t,i,s,a,d/o),s=g.width,a=g.height):s&&(!o||!a)?(g=ao(t,i,o,a,d/s),o=g.width,a=g.height):(g=ao(t,i,o,s,d/a),o=g.width,s=g.height);else g=ao(t,i,o,s,d),o=g.width,s=g.height;if(Wf(t),t.pixelStorei(ba,r.unpackAlignment||1),Pn(t,r),i===at){const A=p/n.BYTES_PER_ELEMENT,m=d/6*A;Sa(t,r).forEach(b=>{const y=m*b.ndx,w=n.subarray(y,y+m);t.texImage2D(b.face,u,c,o,s,0,l,h,w)})}else i===Ct||i===Et?t.texImage3D(i,u,c,o,s,a,0,l,h,n):t.texImage2D(i,u,c,o,s,0,l,h,n);return{width:o,height:s,depth:a,type:h}}function Ky(t,e,n){const r=n.target||st;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||V,s=Tn(o),a=n.format||s.format,u=n.type||s.type;if(Pn(t,n),r===at)for(let c=0;c<6;++c)t.texImage2D($i+c,i,o,n.width,n.height,0,a,u,null);else r===Ct||r===Et?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,a,u,null):t.texImage2D(r,i,o,n.width,n.height,0,a,u,null)}function Qr(t,e,n){n=n||Hr,e=e||vt.textureOptions;const r=t.createTexture(),i=e.target||st;let o=e.width||1,s=e.height||1;const a=e.internalFormat||V;t.bindTexture(i,r),i===at&&(t.texParameteri(i,eo,_i),t.texParameteri(i,to,_i));let u=e.src;if(u)if(typeof u=="function"&&(u=u(t,e)),typeof u=="string")Wy(t,r,e,n);else if(Dn(u)||Array.isArray(u)&&(typeof u[0]=="number"||Array.isArray(u[0])||Dn(u[0]))){const c=qf(t,r,u,e);o=c.width,s=c.height}else Array.isArray(u)&&(typeof u[0]=="string"||Kf(u[0]))?i===at?Xy(t,r,e,n):Zy(t,r,e,n):(Zf(t,r,u,e),o=u.width,s=u.height);else Ky(t,r,e);return Ur(e)&&Ca(t,r,e,o,s,a),Xf(t,r,e),r}function qy(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||st;t.bindTexture(s,e);const a=n.level||0,u=n.internalFormat||n.format||V,c=Tn(u),f=n.format||c.format;let l;const h=n.src;if(h&&(Dn(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||Yf(t,h,c.type):l=n.type||c.type,s===at)for(let p=0;p<6;++p)t.texImage2D($i+p,a,u,r,i,0,f,l,null);else s===Ct||s===Et?t.texImage3D(s,a,u,r,i,o,0,f,l,null):t.texImage2D(s,a,u,r,i,0,f,l,null)}const Jy=vf,uo=33984,_y=35048,co=34962,$y=34963,Fa=35345,Jf=35718,e2=35721,t2=35971,n2=35382,r2=35396,i2=35398,o2=35392,s2=35395,lo=5126,_f=35664,$f=35665,e0=35666,Ma=5124,t0=35667,n0=35668,r0=35669,i0=35670,o0=35671,s0=35672,a0=35673,u0=35674,c0=35675,l0=35676,a2=35678,u2=35680,c2=35679,l2=35682,f2=35685,h2=35686,d2=35687,p2=35688,g2=35689,m2=35690,A2=36289,x2=36292,y2=36293,Ia=5125,f0=36294,h0=36295,d0=36296,b2=36298,w2=36299,v2=36300,C2=36303,E2=36306,S2=36307,D2=36308,B2=36311,fo=3553,ho=34067,Ta=32879,po=35866,F={};function p0(t,e){return F[e].bindPoint}function F2(t,e){return function(n){t.uniform1f(e,n)}}function M2(t,e){return function(n){t.uniform1fv(e,n)}}function I2(t,e){return function(n){t.uniform2fv(e,n)}}function T2(t,e){return function(n){t.uniform3fv(e,n)}}function P2(t,e){return function(n){t.uniform4fv(e,n)}}function g0(t,e){return function(n){t.uniform1i(e,n)}}function m0(t,e){return function(n){t.uniform1iv(e,n)}}function A0(t,e){return function(n){t.uniform2iv(e,n)}}function x0(t,e){return function(n){t.uniform3iv(e,n)}}function y0(t,e){return function(n){t.uniform4iv(e,n)}}function L2(t,e){return function(n){t.uniform1ui(e,n)}}function R2(t,e){return function(n){t.uniform1uiv(e,n)}}function k2(t,e){return function(n){t.uniform2uiv(e,n)}}function N2(t,e){return function(n){t.uniform3uiv(e,n)}}function z2(t,e){return function(n){t.uniform4uiv(e,n)}}function O2(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function G2(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function U2(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function H2(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function Q2(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function j2(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function V2(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function Y2(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function W2(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function he(t,e,n,r){const i=p0(t,e);return Sn(t)?function(o){let s,a;Ji(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(uo+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(uo+n),t.bindTexture(i,o)}}function de(t,e,n,r,i){const o=p0(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return Sn(t)?function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(uo+s[c]);let f,l;Ji(t,u)?(f=u,l=null):(f=u.texture,l=u.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(uo+s[c]),t.bindTexture(o,u)})}}F[lo]={Type:Float32Array,size:4,setter:F2,arraySetter:M2},F[_f]={Type:Float32Array,size:8,setter:I2,cols:2},F[$f]={Type:Float32Array,size:12,setter:T2,cols:3},F[e0]={Type:Float32Array,size:16,setter:P2,cols:4},F[Ma]={Type:Int32Array,size:4,setter:g0,arraySetter:m0},F[t0]={Type:Int32Array,size:8,setter:A0,cols:2},F[n0]={Type:Int32Array,size:12,setter:x0,cols:3},F[r0]={Type:Int32Array,size:16,setter:y0,cols:4},F[Ia]={Type:Uint32Array,size:4,setter:L2,arraySetter:R2},F[f0]={Type:Uint32Array,size:8,setter:k2,cols:2},F[h0]={Type:Uint32Array,size:12,setter:N2,cols:3},F[d0]={Type:Uint32Array,size:16,setter:z2,cols:4},F[i0]={Type:Uint32Array,size:4,setter:g0,arraySetter:m0},F[o0]={Type:Uint32Array,size:8,setter:A0,cols:2},F[s0]={Type:Uint32Array,size:12,setter:x0,cols:3},F[a0]={Type:Uint32Array,size:16,setter:y0,cols:4},F[u0]={Type:Float32Array,size:32,setter:O2,rows:2,cols:2},F[c0]={Type:Float32Array,size:48,setter:G2,rows:3,cols:3},F[l0]={Type:Float32Array,size:64,setter:U2,rows:4,cols:4},F[f2]={Type:Float32Array,size:32,setter:H2,rows:2,cols:3},F[h2]={Type:Float32Array,size:32,setter:j2,rows:2,cols:4},F[d2]={Type:Float32Array,size:48,setter:Q2,rows:3,cols:2},F[p2]={Type:Float32Array,size:48,setter:Y2,rows:3,cols:4},F[g2]={Type:Float32Array,size:64,setter:V2,rows:4,cols:2},F[m2]={Type:Float32Array,size:64,setter:W2,rows:4,cols:3},F[a2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:fo},F[u2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:ho},F[c2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Ta},F[l2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:fo},F[A2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:po},F[x2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:po},F[y2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:ho},F[b2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:fo},F[w2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Ta},F[v2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:ho},F[C2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:po},F[E2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:fo},F[S2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Ta},F[D2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:ho},F[B2]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:po};function go(t,e){return function(n){if(n.value)switch(t.disableVertexAttribArray(e),n.value.length){case 4:t.vertexAttrib4fv(e,n.value);break;case 3:t.vertexAttrib3fv(e,n.value);break;case 2:t.vertexAttrib2fv(e,n.value);break;case 1:t.vertexAttrib1fv(e,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else t.bindBuffer(co,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||lo,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Dt(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4iv(e,n.value);else throw new Error("The length of an integer constant value must be 4!");else t.bindBuffer(co,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ma,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function mo(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4uiv(e,n.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else t.bindBuffer(co,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ia,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Pa(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(co,o.buffer);const s=o.size||o.numComponents||r,a=s/i,u=o.type||lo,f=F[u].size*s,l=o.normalize||!1,h=o.offset||0,p=f/i;for(let d=0;d<i;++d)t.enableVertexAttribArray(e+d),t.vertexAttribPointer(e+d,a,u,l,f,h+p*d),o.divisor!==void 0&&t.vertexAttribDivisor(e+d,o.divisor)}}const q={};q[lo]={size:4,setter:go},q[_f]={size:8,setter:go},q[$f]={size:12,setter:go},q[e0]={size:16,setter:go},q[Ma]={size:4,setter:Dt},q[t0]={size:8,setter:Dt},q[n0]={size:12,setter:Dt},q[r0]={size:16,setter:Dt},q[Ia]={size:4,setter:mo},q[f0]={size:8,setter:mo},q[h0]={size:12,setter:mo},q[d0]={size:16,setter:mo},q[i0]={size:4,setter:Dt},q[o0]={size:8,setter:Dt},q[s0]={size:12,setter:Dt},q[a0]={size:16,setter:Dt},q[u0]={size:4,setter:Pa,count:2},q[c0]={size:9,setter:Pa,count:3},q[l0]={size:16,setter:Pa,count:4};function b0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const X2=/(\.|\[|]|\w+)/g,Z2=t=>t>="0"&&t<="9";function w0(t,e,n,r){const i=t.split(X2).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const u=Z2(a[0]),c=u?parseInt(a):a;if(u&&(s+=i[o++]),o===i.length){n[c]=e;break}else{const l=i[o++],h=l==="[",p=n[c]||(h?[]:{});n[c]=p,n=p,r[s]=r[s]||function(d){return function(g){D0(d,g)}}(p),s+=l}}}function K2(t,e){let n=0;function r(a,u,c){const f=u.name.endsWith("[0]"),l=u.type,h=F[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let p;if(h.bindPoint){const d=n;n+=u.size,f?p=h.arraySetter(t,l,d,c,u.size):p=h.setter(t,l,d,c,u.size)}else h.arraySetter&&f?p=h.arraySetter(t,c):p=h.setter(t,c);return p.location=c,p}const i={},o={},s=t.getProgramParameter(e,Jf);for(let a=0;a<s;++a){const u=t.getActiveUniform(e,a);if(b0(u))continue;let c=u.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const f=t.getUniformLocation(e,u.name);if(f){const l=r(e,u,f);i[c]=l,w0(c,l,o,i)}}return i}function q2(t,e){const n={},r=t.getProgramParameter(e,t2);for(let i=0;i<r;++i){const o=t.getTransformFeedbackVarying(e,i);n[o.name]={index:i,type:o.type,size:o.size}}return n}function J2(t,e){const n=t.getProgramParameter(e,Jf),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const u=t.getActiveUniform(e,a);r[a].name=u.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const u=a[0],c=a[1];t.getActiveUniforms(e,i,t[u]).forEach(function(f,l){r[l][c]=f})});const o={},s=t.getProgramParameter(e,n2);for(let a=0;a<s;++a){const u=t.getActiveUniformBlockName(e,a),c={index:t.getUniformBlockIndex(e,u),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,r2),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,i2),size:t.getActiveUniformBlockParameter(e,a,o2),uniformIndices:t.getActiveUniformBlockParameter(e,a,s2)};c.used=c.usedByVertexShader||c.usedByFragmentShader,o[u]=c}return{blockSpecs:o,uniformData:r}}const v0=/\[\d+\]\.$/,_2=(t,e)=>((t+(e-1))/e|0)*e;function $2(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(s){let a=0,u=0;for(let c=0;c<o;++c){for(let f=0;f<r;++f)t[a++]=s[u++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function eb(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return Jy("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),u=t.createBuffer(),c=s.index;t.bindBuffer(Fa,u),t.uniformBlockBinding(e,s.index,c);let f=r+".";v0.test(f)&&(f=f.replace(v0,"."));const l={},h={},p={};return s.uniformIndices.forEach(function(d){const g=o[d];let A=g.name;A.startsWith(f)&&(A=A.substr(f.length));const m=A.endsWith("[0]");m&&(A=A.substr(0,A.length-3));const b=F[g.type],y=b.Type,w=m?_2(b.size,16)*g.size:b.size*g.size,E=new y(a,g.offset,w/y.BYTES_PER_ELEMENT);l[A]=E;const C=$2(E,m,b.rows,b.cols);h[A]=C,w0(A,C,p,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:u,uniforms:l,setters:h}}function C0(t,e,n){return eb(t,e.program,e.uniformBlockSpec,n)}function tb(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Fa,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function E0(t,e,n){tb(t,e,n)&&t.bufferData(Fa,n.array,_y)}function S0(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function D0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):D0(t[n],e[n])}}function Ee(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const o=e[i];if(Array.isArray(o)){const s=o.length;for(let a=0;a<s;++a)Ee(n,o[a])}else for(const s in o){const a=n[s];a&&a(o[s])}}}function nb(t,e){const n={},r=t.getProgramParameter(e,e2);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(b0(o))continue;const s=t.getAttribLocation(e,o.name),a=q[o.type],u=a.setter(t,s,a);u.location=s,n[o.name]=u}return n}function rb(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Ln(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(rb(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer($y,n.indices))}function ib(t,e){const n=K2(t,e),r=nb(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Sn(t)&&(i.uniformBlockSpec=J2(t,e),i.transformFeedbackInfo=q2(t,e)),i}const ob=4,B0=5123;function jr(t,e,n,r,i,o){n=n===void 0?ob:n;const s=e.indices,a=e.elementType,u=r===void 0?e.numElements:r;i=i===void 0?0:i,a||s?o!==void 0?t.drawElementsInstanced(n,u,a===void 0?B0:e.elementType,i,o):t.drawElements(n,u,a===void 0?B0:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,u,o):t.drawArrays(n,i,u)}const sb=36160,$t=36161,ab=3553,ub=5121,cb=6402,lb=6408,fb=33190,hb=36012,db=35056,pb=36013,gb=32854,mb=32855,Ab=36194,F0=33189,M0=6401,I0=36168,La=34041,xb=36064,Ao=36096,T0=36128,Ra=33306,ka=33071,Na=9729,P0=[{format:lb,type:ub,min:Na,wrap:ka},{format:La}],Qe={};Qe[La]=Ra,Qe[M0]=T0,Qe[I0]=T0,Qe[cb]=Ao,Qe[F0]=Ao,Qe[fb]=Ao,Qe[hb]=Ao,Qe[db]=Ra,Qe[pb]=Ra;function yb(t,e){return Qe[t]||Qe[e]}const Bt={};Bt[gb]=!0,Bt[mb]=!0,Bt[Ab]=!0,Bt[La]=!0,Bt[F0]=!0,Bt[M0]=!0,Bt[I0]=!0;function bb(t){return Bt[t]}function wb(t,e,n,r){const i=sb,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||P0;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(u){let c=u.attachment;const f=u.samples,l=u.format;let h=u.attachmentPoint||yb(l,u.internalFormat);if(h||(h=xb+s++),!c)if(f!==void 0||bb(l))c=t.createRenderbuffer(),t.bindRenderbuffer($t,c),f>1?t.renderbufferStorageMultisample($t,f,l,n,r):t.renderbufferStorage($t,l,n,r);else{const p=Object.assign({},u);p.width=n,p.height=r,p.auto===void 0&&(p.auto=!1,p.min=p.min||p.minMag||Na,p.mag=p.mag||p.minMag||Na,p.wrapS=p.wrapS||p.wrap||ka,p.wrapT=p.wrapT||p.wrap||ka),c=Qr(t,p)}if(Cf(t,c))t.framebufferRenderbuffer(i,h,$t,c);else if(Ji(t,c))u.layer!==void 0?t.framebufferTextureLayer(i,h,c,u.level||0,u.layer):t.framebufferTexture2D(i,h,u.target||ab,c,u.level||0);else throw new Error("unknown attachment type");a.attachments.push(c)}),a}function vb(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||P0,n.forEach(function(o,s){const a=e.attachments[s],u=o.format,c=o.samples;if(c!==void 0||Cf(t,a))t.bindRenderbuffer($t,a),c>1?t.renderbufferStorageMultisample($t,c,u,r,i):t.renderbufferStorage($t,u,r,i);else if(Ji(t,a))qy(t,a,o,r,i);else throw new Error("unknown attachment type")})}function Cb(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Ln(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const Eb=/^(.*?)_/;function Sb(t,e){Aa(t,0);const n=t.getExtension(e);if(n){const r={},i=Eb.exec(e)[1],o="_"+i;for(const s in n){const a=n[s],u=typeof a=="function",c=u?i:o;let f=s;s.endsWith(c)&&(f=s.substring(0,s.length-c.length)),t[f]!==void 0?!u&&t[f]!==a&&vf(f,t[f],a,s):u?t[f]=function(l){return function(){return l.apply(n,arguments)}}(a):(t[f]=a,r[f]=a)}r.constructor={name:n.constructor.name},Aa(r,0)}return n}const L0=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_color_buffer_float","EXT_color_buffer_half_float","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_frag_depth","EXT_sRGB","EXT_shader_texture_lod","EXT_texture_filter_anisotropic","OES_element_index_uint","OES_standard_derivatives","OES_texture_float","OES_texture_float_linear","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_compressed_texture_atc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_depth_texture","WEBGL_draw_buffers"];function R0(t){for(let e=0;e<L0.length;++e)Sb(t,L0[e])}function Db(t,e){const n=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<n.length;++i)if(r=t.getContext(n[i],e),r){R0(r);break}return r}function Bb(t,e){return Db(t,e)}const Fb=`/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/in vec2 frac;uniform vec2 uMinSize;uniform float uMinOpacity;uniform vec4 uCornerRadii;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
14
+ see: http://github.com/greggman/twgl.js for details */const ca=5120,Or=5121,la=5122,fa=5123,ha=5124,da=5125,pa=5126,Q1=32819,j1=32820,V1=33635,Y1=5131,W1=33640,X1=35899,Z1=35902,K1=36269,q1=34042,vf={};{const t=vf;t[ca]=Int8Array,t[Or]=Uint8Array,t[la]=Int16Array,t[fa]=Uint16Array,t[ha]=Int32Array,t[da]=Uint32Array,t[pa]=Float32Array,t[Q1]=Uint16Array,t[j1]=Uint16Array,t[V1]=Uint16Array,t[Y1]=Uint16Array,t[W1]=Uint32Array,t[X1]=Uint32Array,t[Z1]=Uint32Array,t[K1]=Uint32Array,t[q1]=Uint32Array}function ga(t){if(t instanceof Int8Array)return ca;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return Or;if(t instanceof Int16Array)return la;if(t instanceof Uint16Array)return fa;if(t instanceof Int32Array)return ha;if(t instanceof Uint32Array)return da;if(t instanceof Float32Array)return pa;throw new Error("unsupported typed array type")}function J1(t){if(t===Int8Array)return ca;if(t===Uint8Array||t===Uint8ClampedArray)return Or;if(t===Int16Array)return la;if(t===Uint16Array)return fa;if(t===Int32Array)return ha;if(t===Uint32Array)return da;if(t===Float32Array)return pa;throw new Error("unsupported typed array type")}function _1(t){const e=vf[t];if(!e)throw new Error("unknown gl type");return e}const Ji=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function $1(...t){console.error(...t)}function Cf(...t){console.warn(...t)}function ex(t,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function Ef(t,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function _i(t,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function tx(t,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const Sf=35044,Je=34962,nx=34963,rx=34660,ix=5120,ox=5121,sx=5122,ax=5123,ux=5124,cx=5125,lx=5126,Df={attribPrefix:""};function Bf(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Sf)}function Ff(t,e,n,r){if(ex(t,e))return e;n=n||Je;const i=t.createBuffer();return Bf(t,n,i,e,r),i}function Mf(t){return t==="indices"}function fx(t){return t instanceof Int8Array||t instanceof Uint8Array}function hx(t){return t===Int8Array||t===Uint8Array}function dx(t){return t.length?t:t.data}const px=/coord|texture/i,gx=/color|colour/i;function If(t,e){let n;if(px.test(t)?n=2:gx.test(t)?n=4:n=3,e%n>0)throw new Error(`Can not guess numComponents for attribute '${t}'. Tried ${n} but ${e} values is not evenly divisible by ${n}. You should specify it.`);return n}function mx(t,e){return t.numComponents||t.size||If(e,dx(t).length)}function ma(t,e){if(Ji(t))return t;if(Ji(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(Mf(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function Ax(t,e){const n={};return Object.keys(e).forEach(function(r){if(!Mf(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Df.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Ji(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let s,a,u,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)s=i.buffer,c=i.numComponents||i.size,a=i.type,u=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,h=f*l.BYTES_PER_ELEMENT;a=J1(l),u=i.normalize!==void 0?i.normalize:hx(l),c=i.numComponents||i.size||If(r,f),s=t.createBuffer(),t.bindBuffer(Je,s),t.bufferData(Je,h,i.drawType||Sf)}else{const f=ma(i,r);s=Ff(t,f,void 0,i.drawType),a=ga(f),u=i.normalize!==void 0?i.normalize:fx(f),c=mx(i,r)}n[o]={buffer:s,numComponents:c,type:a,normalize:u,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(Je,null),n}function xx(t,e,n,r){n=ma(n),r!==void 0?(t.bindBuffer(Je,e.buffer),t.bufferSubData(Je,r,n)):Bf(t,Je,e.buffer,n,e.drawType)}function yx(t,e){return e===ix||e===ox?1:e===sx||e===ax?2:e===ux||e===cx||e===lx?4:0}const Aa=["position","positions","a_position"];function bx(t,e){let n,r;for(r=0;r<Aa.length&&(n=Aa[r],!(n in e||(n=Df.attribPrefix+n,n in e)));++r);r===Aa.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(Je,i.buffer);const o=t.getBufferParameter(Je,rx);t.bindBuffer(Je,null);const s=yx(t,i.type),a=o/s,u=i.numComponents||i.size,c=a/u;if(c%1!==0)throw new Error(`numComponents ${u} not correct for length ${length}`);return c}function wx(t,e,n){const r=Ax(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=ma(o,"indices");i.indices=Ff(t,s,nx),i.numElements=s.length,i.elementType=ga(s)}else i.numElements||(i.numElements=bx(t,i.attribs));return i}function Sn(t){return!!t.texStorage2D}const xa=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const s=e[r[o]];e[r[o]]=s?`${s} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),vt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Dn=Ji,Tf=function(){let t;return function(){return t=t||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Pf=6406,_e=6407,Y=6408,Lf=6409,Rf=6410,Gr=6402,kf=34041,$i=33071,vx=9728,Cx=9729,st=3553,at=34067,Ct=32879,Et=35866,eo=34069,Ex=34070,Sx=34071,Dx=34072,Bx=34073,Fx=34074,ya=10241,ba=10240,to=10242,no=10243,Nf=32882,Mx=33082,Ix=33083,Tx=33084,Px=33085,wa=3317,zf=3314,Of=32878,Gf=3316,Uf=3315,Hf=32877,Lx=37443,Rx=37441,kx=37440,Nx=33321,zx=36756,Ox=33325,Gx=33326,Ux=33330,Hx=33329,Qx=33338,jx=33337,Vx=33340,Yx=33339,Wx=33323,Xx=36757,Zx=33327,Kx=33328,qx=33336,Jx=33335,_x=33332,$x=33331,ey=33334,ty=33333,ny=32849,ry=35905,iy=36194,oy=36758,sy=35898,ay=35901,uy=34843,cy=34837,ly=36221,fy=36239,hy=36215,dy=36233,py=36209,gy=36227,my=32856,Ay=35907,xy=36759,yy=32855,by=32854,wy=32857,vy=34842,Cy=34836,Ey=36220,Sy=36238,Dy=36975,By=36214,Fy=36232,My=36226,Iy=36208,Ty=33189,Py=33190,Ly=36012,Ry=36013,ky=35056,St=5120,W=5121,ro=5122,Bn=5123,io=5124,Jt=5125,fe=5126,Qf=32819,jf=32820,Vf=33635,He=5131,Ur=36193,va=33640,Ny=35899,zy=35902,Oy=36269,Gy=34042,oo=33319,Fn=33320,so=6403,Mn=36244,In=36248,_t=36249;let Ca;function ao(t){if(!Ca){const e={};e[Pf]={textureFormat:Pf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[W,He,Ur,fe]},e[Lf]={textureFormat:Lf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[W,He,Ur,fe]},e[Rf]={textureFormat:Rf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[W,He,Ur,fe]},e[_e]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[W,He,Ur,fe,Vf]},e[Y]={textureFormat:Y,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[W,He,Ur,fe,Qf,jf]},e[Gr]={textureFormat:Gr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Jt,Bn]},e[Nx]={textureFormat:so,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[W]},e[zx]={textureFormat:so,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[St]},e[Ox]={textureFormat:so,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[fe,He]},e[Gx]={textureFormat:so,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[Ux]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[W]},e[Hx]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[St]},e[_x]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Bn]},e[$x]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ro]},e[ey]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Jt]},e[ty]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[io]},e[Wx]={textureFormat:oo,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[W]},e[Xx]={textureFormat:oo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[St]},e[Zx]={textureFormat:oo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[fe,He]},e[Kx]={textureFormat:oo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[fe]},e[qx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[W]},e[Jx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[St]},e[Qx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Bn]},e[jx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ro]},e[Vx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Jt]},e[Yx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[io]},e[ny]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[W]},e[ry]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[W]},e[iy]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[W,Vf]},e[oy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[St]},e[sy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,He,Ny]},e[ay]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,He,zy]},e[uy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[fe,He]},e[cy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[fe]},e[ly]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[W]},e[fy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[St]},e[hy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Bn]},e[dy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ro]},e[py]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Jt]},e[gy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[io]},e[my]={textureFormat:Y,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[W]},e[Ay]={textureFormat:Y,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[W]},e[xy]={textureFormat:Y,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[St]},e[yy]={textureFormat:Y,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[W,jf,va]},e[by]={textureFormat:Y,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[W,Qf]},e[wy]={textureFormat:Y,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[va]},e[vy]={textureFormat:Y,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[fe,He]},e[Cy]={textureFormat:Y,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[fe]},e[Ey]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[W]},e[Sy]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[St]},e[Dy]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[va]},e[By]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Bn]},e[Fy]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ro]},e[My]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[io]},e[Iy]={textureFormat:_t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Jt]},e[Ty]={textureFormat:Gr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Bn,Jt]},e[Py]={textureFormat:Gr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Jt]},e[Ly]={textureFormat:Gr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[ky]={textureFormat:kf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Gy]},e[Ry]={textureFormat:kf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Oy]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const s=r.type[o];r.bytesPerElementMap[s]=i})}),Ca=e}return Ca[t]}function Uy(t,e){const n=ao(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Tn(t){const e=ao(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Yf(t){return(t&t-1)===0}function Hy(t,e,n,r){if(!Sn(t))return Yf(e)&&Yf(n);const i=ao(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function Qy(t){const e=ao(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Wf(t,e,n){return Dn(e)?ga(e):n||W}function uo(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===at?6:1));o%1===0?(n=o,r=o):(n=i,r=1)}else if(r){if(!n&&(n=i/r,n%1))throw"can't guess dimensions"}else if(r=i/n,r%1)throw"can't guess dimensions";return{width:n,height:r}}function Pn(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(Lx,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(Rx,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(kx,e.flipY)}function Xf(t){t.pixelStorei(wa,4),Sn(t)&&(t.pixelStorei(zf,0),t.pixelStorei(Of,0),t.pixelStorei(Gf,0),t.pixelStorei(Uf,0),t.pixelStorei(Hf,0))}function jy(t,e,n,r){r.minMag&&(n.call(t,e,ya,r.minMag),n.call(t,e,ba,r.minMag)),r.min&&n.call(t,e,ya,r.min),r.mag&&n.call(t,e,ba,r.mag),r.wrap&&(n.call(t,e,to,r.wrap),n.call(t,e,no,r.wrap),(e===Ct||tx(t,e))&&n.call(t,e,Nf,r.wrap)),r.wrapR&&n.call(t,e,Nf,r.wrapR),r.wrapS&&n.call(t,e,to,r.wrapS),r.wrapT&&n.call(t,e,no,r.wrapT),r.minLod&&n.call(t,e,Mx,r.minLod),r.maxLod&&n.call(t,e,Ix,r.maxLod),r.baseLevel&&n.call(t,e,Tx,r.baseLevel),r.maxLevel&&n.call(t,e,Px,r.maxLevel)}function Zf(t,e,n){const r=n.target||st;t.bindTexture(r,e),jy(t,r,t.texParameteri,n)}function Vy(t){return t=t||vt.textureColor,Dn(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Ea(t,e,n,r,i,o){n=n||vt.textureOptions,o=o||Y;const s=n.target||st;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),Hy(t,r,i,o))t.generateMipmap(s);else{const a=Qy(o)?Cx:vx;t.texParameteri(s,ya,a),t.texParameteri(s,ba,a),t.texParameteri(s,to,$i),t.texParameteri(s,no,$i)}}function Hr(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Sa(t,e){return e=e||{},e.cubeFaceOrder||[eo,Ex,Sx,Dx,Bx,Fx]}function Da(t,e){const r=Sa(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function Kf(t,e,n,r){r=r||vt.textureOptions;const i=r.target||st,o=r.level||0;let s=n.width,a=n.height;const u=r.internalFormat||r.format||Y,c=Tn(u),f=r.format||c.format,l=r.type||c.type;if(Pn(t,r),t.bindTexture(i,e),i===at){const h=n.width,p=n.height;let d,g;if(h/6===p)d=p,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(p/6===h)d=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===p/2)d=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===p/3)d=h/2,g=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);const A=Tf();A?(A.canvas.width=d,A.canvas.height=d,s=d,a=d,Da(t,r).forEach(function(m){const b=g[m.ndx*2+0]*d,y=g[m.ndx*2+1]*d;A.drawImage(n,b,y,d,d,0,0,d,d),t.texImage2D(m.face,o,u,f,l,A.canvas)}),A.canvas.width=1,A.canvas.height=1):typeof createImageBitmap<"u"&&(s=d,a=d,Da(t,r).forEach(function(m){const b=g[m.ndx*2+0]*d,y=g[m.ndx*2+1]*d;t.texImage2D(m.face,o,u,d,d,0,f,l,null),createImageBitmap(n,b,y,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(w){Pn(t,r),t.bindTexture(i,e),t.texImage2D(m.face,o,u,f,l,w),Hr(r)&&Ea(t,e,r,s,a,u)})}))}else if(i===Ct||i===Et){const h=Math.min(n.width,n.height),p=Math.max(n.width,n.height),d=p/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const g=n.width===p?1:0,A=n.height===p?1:0;t.pixelStorei(wa,1),t.pixelStorei(zf,n.width),t.pixelStorei(Of,0),t.pixelStorei(Hf,0),t.texImage3D(i,o,u,h,h,h,0,f,l,null);for(let m=0;m<d;++m){const b=m*h*g,y=m*h*A;t.pixelStorei(Gf,b),t.pixelStorei(Uf,y),t.texSubImage3D(i,o,0,0,m,h,h,1,f,l,n)}Xf(t)}else t.texImage2D(i,o,u,f,l,n);Hr(r)&&Ea(t,e,r,s,a,u),Zf(t,e,r)}function Qr(){}function Yy(t){if(typeof document<"u"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function Wy(t,e){return e===void 0&&!Yy(t)?"anonymous":e}function Xy(t,e,n){n=n||Qr;let r;if(e=e!==void 0?e:vt.crossOrigin,e=Wy(t,e),typeof Image<"u"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",s),r=null},o=function(){const u="couldn't load image: "+t;$1(u),n(u,r),i()},s=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",s),r.src=t,r}else if(typeof ImageBitmap<"u"){let i,o;const s=function(){n(i,o)},a={};e&&(a.mode="cors"),fetch(t,a).then(function(u){if(!u.ok)throw u;return u.blob()}).then(function(u){return createImageBitmap(u,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(u){o=u,setTimeout(s)}).catch(function(u){i=u,setTimeout(s)}),r=null}return r}function qf(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof ImageData<"u"&&t instanceof ImageData||typeof HTMLElement<"u"&&t instanceof HTMLElement}function Ba(t,e,n){return qf(t)?(setTimeout(function(){n(null,t)}),t):Xy(t,e,n)}function Fa(t,e,n){n=n||vt.textureOptions;const r=n.target||st;if(t.bindTexture(r,e),n.color===!1)return;const i=Vy(n.color);if(r===at)for(let o=0;o<6;++o)t.texImage2D(eo+o,0,Y,1,1,0,Y,W,i);else r===Ct||r===Et?t.texImage3D(r,0,Y,1,1,1,0,Y,W,i):t.texImage2D(r,0,Y,1,1,0,Y,W,i)}function Zy(t,e,n,r){return r=r||Qr,n=n||vt.textureOptions,Fa(t,e,n),n=Object.assign({},n),Ba(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(Kf(t,e,s,n),r(null,e,s))})}function Ky(t,e,n,r){r=r||Qr;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,s=n.internalFormat||n.format||Y,a=Tn(s),u=n.format||a.format,c=n.type||W,f=n.target||st;if(f!==at)throw"target must be TEXTURE_CUBE_MAP";Fa(t,e,n),n=Object.assign({},n);let l=6;const h=[],p=Sa(t,n);let d;function g(A){return function(m,b){--l,m?h.push(m):b.width!==b.height?h.push("cubemap face img is not a square: "+b.src):(Pn(t,n),t.bindTexture(f,e),l===5?Sa().forEach(function(y){t.texImage2D(y,o,s,u,c,b)}):t.texImage2D(A,o,s,u,c,b),Hr(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,d)}}d=i.map(function(A,m){return Ba(A,n.crossOrigin,g(p[m]))})}function qy(t,e,n,r){r=r||Qr;const i=n.src,o=n.internalFormat||n.format||Y,s=Tn(o),a=n.format||s.format,u=n.type||W,c=n.target||Et;if(c!==Ct&&c!==Et)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Fa(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let h;const p=n.level||0;let d=n.width,g=n.height;const A=i.length;let m=!0;function b(y){return function(w,E){if(--f,w)l.push(w);else{if(Pn(t,n),t.bindTexture(c,e),m){m=!1,d=n.width||E.width,g=n.height||E.height,t.texImage3D(c,p,o,d,g,A,0,a,u,null);for(let C=0;C<A;++C)t.texSubImage3D(c,p,0,0,C,d,g,1,a,u,E)}else{let C=E,B;(E.width!==d||E.height!==g)&&(B=Tf(),C=B.canvas,B.canvas.width=d,B.canvas.height=g,B.drawImage(E,0,0,d,g)),t.texSubImage3D(c,p,0,0,y,d,g,1,a,u,C),B&&C===B.canvas&&(B.canvas.width=0,B.canvas.height=0)}Hr(n)&&t.generateMipmap(c)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(y,w){return Ba(y,n.crossOrigin,b(w))})}function Jf(t,e,n,r){r=r||vt.textureOptions;const i=r.target||st;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const u=r.level||0,c=r.internalFormat||r.format||Y,f=Tn(c),l=r.format||f.format,h=r.type||Wf(t,n,f.type);if(Dn(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const A=_1(h);n=new A(n)}const p=Uy(c,h),d=n.byteLength/p;if(d%1)throw"length wrong size for format: "+xa(t,l);let g;if(i===Ct||i===Et)if(!o&&!s&&!a){const A=Math.cbrt(d);if(A%1!==0)throw"can't guess cube size of array of numElements: "+d;o=A,s=A,a=A}else o&&(!s||!a)?(g=uo(t,i,s,a,d/o),s=g.width,a=g.height):s&&(!o||!a)?(g=uo(t,i,o,a,d/s),o=g.width,a=g.height):(g=uo(t,i,o,s,d/a),o=g.width,s=g.height);else g=uo(t,i,o,s,d),o=g.width,s=g.height;if(Xf(t),t.pixelStorei(wa,r.unpackAlignment||1),Pn(t,r),i===at){const A=p/n.BYTES_PER_ELEMENT,m=d/6*A;Da(t,r).forEach(b=>{const y=m*b.ndx,w=n.subarray(y,y+m);t.texImage2D(b.face,u,c,o,s,0,l,h,w)})}else i===Ct||i===Et?t.texImage3D(i,u,c,o,s,a,0,l,h,n):t.texImage2D(i,u,c,o,s,0,l,h,n);return{width:o,height:s,depth:a,type:h}}function Jy(t,e,n){const r=n.target||st;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||Y,s=Tn(o),a=n.format||s.format,u=n.type||s.type;if(Pn(t,n),r===at)for(let c=0;c<6;++c)t.texImage2D(eo+c,i,o,n.width,n.height,0,a,u,null);else r===Ct||r===Et?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,a,u,null):t.texImage2D(r,i,o,n.width,n.height,0,a,u,null)}function jr(t,e,n){n=n||Qr,e=e||vt.textureOptions;const r=t.createTexture(),i=e.target||st;let o=e.width||1,s=e.height||1;const a=e.internalFormat||Y;t.bindTexture(i,r),i===at&&(t.texParameteri(i,to,$i),t.texParameteri(i,no,$i));let u=e.src;if(u)if(typeof u=="function"&&(u=u(t,e)),typeof u=="string")Zy(t,r,e,n);else if(Dn(u)||Array.isArray(u)&&(typeof u[0]=="number"||Array.isArray(u[0])||Dn(u[0]))){const c=Jf(t,r,u,e);o=c.width,s=c.height}else Array.isArray(u)&&(typeof u[0]=="string"||qf(u[0]))?i===at?Ky(t,r,e,n):qy(t,r,e,n):(Kf(t,r,u,e),o=u.width,s=u.height);else Jy(t,r,e);return Hr(e)&&Ea(t,r,e,o,s,a),Zf(t,r,e),r}function _y(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||st;t.bindTexture(s,e);const a=n.level||0,u=n.internalFormat||n.format||Y,c=Tn(u),f=n.format||c.format;let l;const h=n.src;if(h&&(Dn(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||Wf(t,h,c.type):l=n.type||c.type,s===at)for(let p=0;p<6;++p)t.texImage2D(eo+p,a,u,r,i,0,f,l,null);else s===Ct||s===Et?t.texImage3D(s,a,u,r,i,o,0,f,l,null):t.texImage2D(s,a,u,r,i,0,f,l,null)}const $y=Cf,co=33984,e2=35048,lo=34962,t2=34963,Ma=35345,_f=35718,n2=35721,r2=35971,i2=35382,o2=35396,s2=35398,a2=35392,u2=35395,fo=5126,$f=35664,e0=35665,t0=35666,Ia=5124,n0=35667,r0=35668,i0=35669,o0=35670,s0=35671,a0=35672,u0=35673,c0=35674,l0=35675,f0=35676,c2=35678,l2=35680,f2=35679,h2=35682,d2=35685,p2=35686,g2=35687,m2=35688,A2=35689,x2=35690,y2=36289,b2=36292,w2=36293,Ta=5125,h0=36294,d0=36295,p0=36296,v2=36298,C2=36299,E2=36300,S2=36303,D2=36306,B2=36307,F2=36308,M2=36311,ho=3553,po=34067,Pa=32879,go=35866,F={};function g0(t,e){return F[e].bindPoint}function I2(t,e){return function(n){t.uniform1f(e,n)}}function T2(t,e){return function(n){t.uniform1fv(e,n)}}function P2(t,e){return function(n){t.uniform2fv(e,n)}}function L2(t,e){return function(n){t.uniform3fv(e,n)}}function R2(t,e){return function(n){t.uniform4fv(e,n)}}function m0(t,e){return function(n){t.uniform1i(e,n)}}function A0(t,e){return function(n){t.uniform1iv(e,n)}}function x0(t,e){return function(n){t.uniform2iv(e,n)}}function y0(t,e){return function(n){t.uniform3iv(e,n)}}function b0(t,e){return function(n){t.uniform4iv(e,n)}}function k2(t,e){return function(n){t.uniform1ui(e,n)}}function N2(t,e){return function(n){t.uniform1uiv(e,n)}}function z2(t,e){return function(n){t.uniform2uiv(e,n)}}function O2(t,e){return function(n){t.uniform3uiv(e,n)}}function G2(t,e){return function(n){t.uniform4uiv(e,n)}}function U2(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function H2(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function Q2(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function j2(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function V2(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function Y2(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function W2(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function X2(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function Z2(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function de(t,e,n,r){const i=g0(t,e);return Sn(t)?function(o){let s,a;_i(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(co+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(co+n),t.bindTexture(i,o)}}function pe(t,e,n,r,i){const o=g0(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return Sn(t)?function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(co+s[c]);let f,l;_i(t,u)?(f=u,l=null):(f=u.texture,l=u.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(co+s[c]),t.bindTexture(o,u)})}}F[fo]={Type:Float32Array,size:4,setter:I2,arraySetter:T2},F[$f]={Type:Float32Array,size:8,setter:P2,cols:2},F[e0]={Type:Float32Array,size:12,setter:L2,cols:3},F[t0]={Type:Float32Array,size:16,setter:R2,cols:4},F[Ia]={Type:Int32Array,size:4,setter:m0,arraySetter:A0},F[n0]={Type:Int32Array,size:8,setter:x0,cols:2},F[r0]={Type:Int32Array,size:12,setter:y0,cols:3},F[i0]={Type:Int32Array,size:16,setter:b0,cols:4},F[Ta]={Type:Uint32Array,size:4,setter:k2,arraySetter:N2},F[h0]={Type:Uint32Array,size:8,setter:z2,cols:2},F[d0]={Type:Uint32Array,size:12,setter:O2,cols:3},F[p0]={Type:Uint32Array,size:16,setter:G2,cols:4},F[o0]={Type:Uint32Array,size:4,setter:m0,arraySetter:A0},F[s0]={Type:Uint32Array,size:8,setter:x0,cols:2},F[a0]={Type:Uint32Array,size:12,setter:y0,cols:3},F[u0]={Type:Uint32Array,size:16,setter:b0,cols:4},F[c0]={Type:Float32Array,size:32,setter:U2,rows:2,cols:2},F[l0]={Type:Float32Array,size:48,setter:H2,rows:3,cols:3},F[f0]={Type:Float32Array,size:64,setter:Q2,rows:4,cols:4},F[d2]={Type:Float32Array,size:32,setter:j2,rows:2,cols:3},F[p2]={Type:Float32Array,size:32,setter:Y2,rows:2,cols:4},F[g2]={Type:Float32Array,size:48,setter:V2,rows:3,cols:2},F[m2]={Type:Float32Array,size:48,setter:X2,rows:3,cols:4},F[A2]={Type:Float32Array,size:64,setter:W2,rows:4,cols:2},F[x2]={Type:Float32Array,size:64,setter:Z2,rows:4,cols:3},F[c2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[l2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[f2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Pa},F[h2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[y2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[b2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[w2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[v2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[C2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Pa},F[E2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[S2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[D2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[B2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Pa},F[F2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[M2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go};function mo(t,e){return function(n){if(n.value)switch(t.disableVertexAttribArray(e),n.value.length){case 4:t.vertexAttrib4fv(e,n.value);break;case 3:t.vertexAttrib3fv(e,n.value);break;case 2:t.vertexAttrib2fv(e,n.value);break;case 1:t.vertexAttrib1fv(e,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else t.bindBuffer(lo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||fo,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Dt(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4iv(e,n.value);else throw new Error("The length of an integer constant value must be 4!");else t.bindBuffer(lo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ia,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Ao(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4uiv(e,n.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else t.bindBuffer(lo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ta,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function La(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(lo,o.buffer);const s=o.size||o.numComponents||r,a=s/i,u=o.type||fo,f=F[u].size*s,l=o.normalize||!1,h=o.offset||0,p=f/i;for(let d=0;d<i;++d)t.enableVertexAttribArray(e+d),t.vertexAttribPointer(e+d,a,u,l,f,h+p*d),o.divisor!==void 0&&t.vertexAttribDivisor(e+d,o.divisor)}}const q={};q[fo]={size:4,setter:mo},q[$f]={size:8,setter:mo},q[e0]={size:12,setter:mo},q[t0]={size:16,setter:mo},q[Ia]={size:4,setter:Dt},q[n0]={size:8,setter:Dt},q[r0]={size:12,setter:Dt},q[i0]={size:16,setter:Dt},q[Ta]={size:4,setter:Ao},q[h0]={size:8,setter:Ao},q[d0]={size:12,setter:Ao},q[p0]={size:16,setter:Ao},q[o0]={size:4,setter:Dt},q[s0]={size:8,setter:Dt},q[a0]={size:12,setter:Dt},q[u0]={size:16,setter:Dt},q[c0]={size:4,setter:La,count:2},q[l0]={size:9,setter:La,count:3},q[f0]={size:16,setter:La,count:4};function w0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const K2=/(\.|\[|]|\w+)/g,q2=t=>t>="0"&&t<="9";function v0(t,e,n,r){const i=t.split(K2).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const u=q2(a[0]),c=u?parseInt(a):a;if(u&&(s+=i[o++]),o===i.length){n[c]=e;break}else{const l=i[o++],h=l==="[",p=n[c]||(h?[]:{});n[c]=p,n=p,r[s]=r[s]||function(d){return function(g){B0(d,g)}}(p),s+=l}}}function J2(t,e){let n=0;function r(a,u,c){const f=u.name.endsWith("[0]"),l=u.type,h=F[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let p;if(h.bindPoint){const d=n;n+=u.size,f?p=h.arraySetter(t,l,d,c,u.size):p=h.setter(t,l,d,c,u.size)}else h.arraySetter&&f?p=h.arraySetter(t,c):p=h.setter(t,c);return p.location=c,p}const i={},o={},s=t.getProgramParameter(e,_f);for(let a=0;a<s;++a){const u=t.getActiveUniform(e,a);if(w0(u))continue;let c=u.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const f=t.getUniformLocation(e,u.name);if(f){const l=r(e,u,f);i[c]=l,v0(c,l,o,i)}}return i}function _2(t,e){const n={},r=t.getProgramParameter(e,r2);for(let i=0;i<r;++i){const o=t.getTransformFeedbackVarying(e,i);n[o.name]={index:i,type:o.type,size:o.size}}return n}function $2(t,e){const n=t.getProgramParameter(e,_f),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const u=t.getActiveUniform(e,a);r[a].name=u.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const u=a[0],c=a[1];t.getActiveUniforms(e,i,t[u]).forEach(function(f,l){r[l][c]=f})});const o={},s=t.getProgramParameter(e,i2);for(let a=0;a<s;++a){const u=t.getActiveUniformBlockName(e,a),c={index:t.getUniformBlockIndex(e,u),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,o2),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,s2),size:t.getActiveUniformBlockParameter(e,a,a2),uniformIndices:t.getActiveUniformBlockParameter(e,a,u2)};c.used=c.usedByVertexShader||c.usedByFragmentShader,o[u]=c}return{blockSpecs:o,uniformData:r}}const C0=/\[\d+\]\.$/,eb=(t,e)=>((t+(e-1))/e|0)*e;function tb(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(s){let a=0,u=0;for(let c=0;c<o;++c){for(let f=0;f<r;++f)t[a++]=s[u++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function nb(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return $y("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),u=t.createBuffer(),c=s.index;t.bindBuffer(Ma,u),t.uniformBlockBinding(e,s.index,c);let f=r+".";C0.test(f)&&(f=f.replace(C0,"."));const l={},h={},p={};return s.uniformIndices.forEach(function(d){const g=o[d];let A=g.name;A.startsWith(f)&&(A=A.substr(f.length));const m=A.endsWith("[0]");m&&(A=A.substr(0,A.length-3));const b=F[g.type],y=b.Type,w=m?eb(b.size,16)*g.size:b.size*g.size,E=new y(a,g.offset,w/y.BYTES_PER_ELEMENT);l[A]=E;const C=tb(E,m,b.rows,b.cols);h[A]=C,v0(A,C,p,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:u,uniforms:l,setters:h}}function E0(t,e,n){return nb(t,e.program,e.uniformBlockSpec,n)}function rb(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Ma,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function S0(t,e,n){rb(t,e,n)&&t.bufferData(Ma,n.array,e2)}function D0(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function B0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):B0(t[n],e[n])}}function Ee(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const o=e[i];if(Array.isArray(o)){const s=o.length;for(let a=0;a<s;++a)Ee(n,o[a])}else for(const s in o){const a=n[s];a&&a(o[s])}}}function ib(t,e){const n={},r=t.getProgramParameter(e,n2);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(w0(o))continue;const s=t.getAttribLocation(e,o.name),a=q[o.type],u=a.setter(t,s,a);u.location=s,n[o.name]=u}return n}function ob(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Ln(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(ob(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(t2,n.indices))}function sb(t,e){const n=J2(t,e),r=ib(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Sn(t)&&(i.uniformBlockSpec=$2(t,e),i.transformFeedbackInfo=_2(t,e)),i}const ab=4,F0=5123;function Vr(t,e,n,r,i,o){n=n===void 0?ab:n;const s=e.indices,a=e.elementType,u=r===void 0?e.numElements:r;i=i===void 0?0:i,a||s?o!==void 0?t.drawElementsInstanced(n,u,a===void 0?F0:e.elementType,i,o):t.drawElements(n,u,a===void 0?F0:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,u,o):t.drawArrays(n,i,u)}const ub=36160,$t=36161,cb=3553,lb=5121,fb=6402,hb=6408,db=33190,pb=36012,gb=35056,mb=36013,Ab=32854,xb=32855,yb=36194,M0=33189,I0=6401,T0=36168,Ra=34041,bb=36064,xo=36096,P0=36128,ka=33306,Na=33071,za=9729,L0=[{format:hb,type:lb,min:za,wrap:Na},{format:Ra}],Qe={};Qe[Ra]=ka,Qe[I0]=P0,Qe[T0]=P0,Qe[fb]=xo,Qe[M0]=xo,Qe[db]=xo,Qe[pb]=xo,Qe[gb]=ka,Qe[mb]=ka;function wb(t,e){return Qe[t]||Qe[e]}const Bt={};Bt[Ab]=!0,Bt[xb]=!0,Bt[yb]=!0,Bt[Ra]=!0,Bt[M0]=!0,Bt[I0]=!0,Bt[T0]=!0;function vb(t){return Bt[t]}function Cb(t,e,n,r){const i=ub,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||L0;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(u){let c=u.attachment;const f=u.samples,l=u.format;let h=u.attachmentPoint||wb(l,u.internalFormat);if(h||(h=bb+s++),!c)if(f!==void 0||vb(l))c=t.createRenderbuffer(),t.bindRenderbuffer($t,c),f>1?t.renderbufferStorageMultisample($t,f,l,n,r):t.renderbufferStorage($t,l,n,r);else{const p=Object.assign({},u);p.width=n,p.height=r,p.auto===void 0&&(p.auto=!1,p.min=p.min||p.minMag||za,p.mag=p.mag||p.minMag||za,p.wrapS=p.wrapS||p.wrap||Na,p.wrapT=p.wrapT||p.wrap||Na),c=jr(t,p)}if(Ef(t,c))t.framebufferRenderbuffer(i,h,$t,c);else if(_i(t,c))u.layer!==void 0?t.framebufferTextureLayer(i,h,c,u.level||0,u.layer):t.framebufferTexture2D(i,h,u.target||cb,c,u.level||0);else throw new Error("unknown attachment type");a.attachments.push(c)}),a}function Eb(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||L0,n.forEach(function(o,s){const a=e.attachments[s],u=o.format,c=o.samples;if(c!==void 0||Ef(t,a))t.bindRenderbuffer($t,a),c>1?t.renderbufferStorageMultisample($t,c,u,r,i):t.renderbufferStorage($t,u,r,i);else if(_i(t,a))_y(t,a,o,r,i);else throw new Error("unknown attachment type")})}function Sb(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Ln(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const Db=/^(.*?)_/;function Bb(t,e){xa(t,0);const n=t.getExtension(e);if(n){const r={},i=Db.exec(e)[1],o="_"+i;for(const s in n){const a=n[s],u=typeof a=="function",c=u?i:o;let f=s;s.endsWith(c)&&(f=s.substring(0,s.length-c.length)),t[f]!==void 0?!u&&t[f]!==a&&Cf(f,t[f],a,s):u?t[f]=function(l){return function(){return l.apply(n,arguments)}}(a):(t[f]=a,r[f]=a)}r.constructor={name:n.constructor.name},xa(r,0)}return n}const R0=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_color_buffer_float","EXT_color_buffer_half_float","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_frag_depth","EXT_sRGB","EXT_shader_texture_lod","EXT_texture_filter_anisotropic","OES_element_index_uint","OES_standard_derivatives","OES_texture_float","OES_texture_float_linear","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_compressed_texture_atc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_depth_texture","WEBGL_draw_buffers"];function k0(t){for(let e=0;e<R0.length;++e)Bb(t,R0[e])}function Fb(t,e){const n=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<n.length;++i)if(r=t.getContext(n[i],e),r){k0(r);break}return r}function Mb(t,e){return Fb(t,e)}const Ib=`/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/in vec2 frac;uniform vec2 uMinSize;uniform float uMinOpacity;uniform vec4 uCornerRadii;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
15
15
  #if defined(ROUNDED_CORNERS) || defined(STROKED)
16
16
  out vec2 vPosInPixels;
17
17
  #endif
@@ -19,7 +19,7 @@ flat out vec2 vHalfSizeInPixels;/***Clamps the minimumSize and returns an opacit
19
19
  #if defined(ROUNDED_CORNERS) || defined(STROKED)
20
20
  float aaPadding=1.0/uDevicePixelRatio;float strokeWidth=getScaled_strokeWidth();float strokeOpacity=getScaled_strokeOpacity()*opaFactor;vec2 centeredFrac=frac-0.5;vec2 expand=centeredFrac*(strokeWidth+aaPadding)/uViewportSize;pos+=expand;vec2 sizeInPixels=size*uViewportSize;vPosInPixels=(centeredFrac+expand/size)*sizeInPixels;vHalfSizeInPixels=sizeInPixels/2.0;vCornerRadii=min(uCornerRadii,min(vHalfSizeInPixels.x,vHalfSizeInPixels.y));vHalfStrokeWidth=strokeWidth/2.0;vStrokeColor=vec4(getScaled_stroke()*strokeOpacity,strokeOpacity);
21
21
  #endif
22
- gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,Mb=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
22
+ gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,Tb=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
23
23
  in vec2 vPosInPixels;
24
24
  #endif
25
25
  flat in vec2 vHalfSizeInPixels;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in float vHalfStrokeWidth;flat in vec4 vCornerRadii;out lowp vec4 fragColor;float sdRoundedBox(vec2 p,vec2 b,vec4 r){r.xy=p.x>0.0 ? r.xy : r.zw;r.x=p.y>0.0 ? r.x : r.y;vec2 q=abs(p)-b+r.x;return min(max(q.x,q.y),0.0)+length(max(q,0.0))-r.x;}float sdSharpBox(vec2 p,vec2 b){vec2 q=abs(p)-b;return max(q.x,q.y);}void main(void){
@@ -33,20 +33,20 @@ fragColor=distanceToColor(d,vFillColor,vStrokeColor,vHalfStrokeWidth);if(fragCol
33
33
  #else
34
34
  fragColor=vFillColor;
35
35
  #endif
36
- if(uPickingEnabled){fragColor=vPickingColor;}}`,za="attr_",k0="uDomain_",Ib="range_",N0="scale_",z0="getScaled_",Oa="uRangeTexture_",O0=3402823466e29;function Tb(t){const e=t.match(/^(?:(\w+)-)?(\w+)$/);if(!e)throw new Error("Not a scale type: "+t);return{family:e[1]||"continuous",transform:e[2]}}function Pb(t,e){let n;if(Ki(t))n=en(bf(t)(e));else if(Z(e))if(qt(t))n=Rb(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(ai(e))n=en(e?1:0);else if(e===null)if(qt(t))n=en([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=en(e);return`
36
+ if(uPickingEnabled){fragColor=vPickingColor;}}`,Oa="attr_",N0="uDomain_",Pb="range_",z0="scale_",O0="getScaled_",Ga="uRangeTexture_",G0=3402823466e29;function Lb(t){const e=t.match(/^(?:(\w+)-)?(\w+)$/);if(!e)throw new Error("Not a scale type: "+t);return{family:e[1]||"continuous",transform:e[2]}}function Rb(t,e){let n;if(qi(t))n=en(wf(t)(e));else if(Z(e))if(qt(t))n=Nb(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(ui(e))n=en(e?1:0);else if(e===null)if(qt(t))n=en([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=en(e);return`
37
37
  #define ${t}_DEFINED
38
- ${n.type} ${z0}${t}() {
38
+ ${n.type} ${O0}${t}() {
39
39
  // Constant value
40
40
  return ${n};
41
- }`}function Lb(t,e,n){var B,I;if(Ue(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=En(t),i=za+t,o=k0+r,s=Ib+r,a=xo(e.type),u=a?"vec2":"float",c=e.domain?e.domain().length:void 0;let f;const l=[];l.push(""),l.push("/".repeat(70)),l.push(`// Channel: ${t}`),l.push(""),l.push(`#define ${t}_DEFINED`);const{transform:h}=Tb(e.type),p=(P,...U)=>kb.apply(null,[P,"value",...U]);let d;switch(h){case"linear":d=p("scaleLinear","domain",s);break;case"log":d=p("scaleLog","domain",s,e.base());break;case"symlog":d=p("scaleSymlog","domain",s,e.constant());break;case"pow":case"sqrt":d=p("scalePow","domain",s,e.exponent());break;case"index":case"locus":d=p("scaleBandHp","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(B=n.band)!=null?B:.5);break;case"point":case"band":d=p("scaleBand","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(I=n.band)!=null?I:.5);break;case"ordinal":case"null":case"identity":d=p("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const g=Hi(e.type)||Pe(e.type)&&qt(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(me)){const P=G0(g);l.push(`const ${P.type} ${s} = ${P};`)}const A=qt(t)?"vec3":"float";let m;if(qt(t)){const P=Oa+r;if(t==r&&l.push(`uniform sampler2D ${P};`),Pe(e.type))m=`getInterpolatedColor(${P}, transformed)`;else if(Wt(e.type)||vn(e.type))m=`getDiscreteColor(${P}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||vn(e.type)){const P=Oa+r;t==r&&l.push(`uniform sampler2D ${P};`),m=`getDiscreteColor(${P}, int(transformed)).r`}Lr(n)?l.push(`uniform highp ${u} ${i};`):l.push(`in highp ${u} ${i};`);const b=[],y=Pe(e.type)&&c>2,w=vn(e.type)||y;if(b.push("int slot = 0;"),w){const P=o;b.push(y?`while (slot < ${P}.length() - 2 && value >= ${P}[slot + 1]) { slot++; }`:`while (slot < ${P}.length() && value >= ${P}[slot]) { slot++; }`)}const E=Pe(e.type)||vn(e.type)||["band","point"].includes(e.type);if(d){const P=o;E&&(a?b.push(`vec3 domain = ${P};`):b.push(`vec2 domain = vec2(${P}[slot], ${P}[slot + 1]);`)),b.push(`float transformed = ${d};`),y&&b.push(`transformed = (float(slot) + transformed) / (float(${P}.length()) - 1.0);`)}else b.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&b.push(`transformed = clampToRange(transformed, ${G0(g)});`),b.push(`return ${m!=null?m:"transformed"};`),l.push(`
42
- ${A} ${N0}${t}(${u} value) {
41
+ }`}function kb(t,e,n){var B,I;if(Ue(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=En(t),i=Oa+t,o=N0+r,s=Pb+r,a=yo(e.type),u=a?"vec2":"float",c=e.domain?e.domain().length:void 0;let f;const l=[];l.push(""),l.push("/".repeat(70)),l.push(`// Channel: ${t}`),l.push(""),l.push(`#define ${t}_DEFINED`);const{transform:h}=Lb(e.type),p=(P,...U)=>zb.apply(null,[P,"value",...U]);let d;switch(h){case"linear":d=p("scaleLinear","domain",s);break;case"log":d=p("scaleLog","domain",s,e.base());break;case"symlog":d=p("scaleSymlog","domain",s,e.constant());break;case"pow":case"sqrt":d=p("scalePow","domain",s,e.exponent());break;case"index":case"locus":d=p("scaleBandHp","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(B=n.band)!=null?B:.5);break;case"point":case"band":d=p("scaleBand","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(I=n.band)!=null?I:.5);break;case"ordinal":case"null":case"identity":d=p("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const g=Qi(e.type)||Pe(e.type)&&qt(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(me)){const P=U0(g);l.push(`const ${P.type} ${s} = ${P};`)}const A=qt(t)?"vec3":"float";let m;if(qt(t)){const P=Ga+r;if(t==r&&l.push(`uniform sampler2D ${P};`),Pe(e.type))m=`getInterpolatedColor(${P}, transformed)`;else if(Wt(e.type)||vn(e.type))m=`getDiscreteColor(${P}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||vn(e.type)){const P=Ga+r;t==r&&l.push(`uniform sampler2D ${P};`),m=`getDiscreteColor(${P}, int(transformed)).r`}Rr(n)?l.push(`uniform highp ${u} ${i};`):l.push(`in highp ${u} ${i};`);const b=[],y=Pe(e.type)&&c>2,w=vn(e.type)||y;if(b.push("int slot = 0;"),w){const P=o;b.push(y?`while (slot < ${P}.length() - 2 && value >= ${P}[slot + 1]) { slot++; }`:`while (slot < ${P}.length() && value >= ${P}[slot]) { slot++; }`)}const E=Pe(e.type)||vn(e.type)||["band","point"].includes(e.type);if(d){const P=o;E&&(a?b.push(`vec3 domain = ${P};`):b.push(`vec2 domain = vec2(${P}[slot], ${P}[slot + 1]);`)),b.push(`float transformed = ${d};`),y&&b.push(`transformed = (float(slot) + transformed) / (float(${P}.length()) - 1.0);`)}else b.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&b.push(`transformed = clampToRange(transformed, ${U0(g)});`),b.push(`return ${m!=null?m:"transformed"};`),l.push(`
42
+ ${A} ${z0}${t}(${u} value) {
43
43
  ${b.map(P=>` ${P}
44
44
  `).join("")}
45
45
  }`),l.push(`
46
- ${A} ${z0}${t}() {
47
- return ${N0}${t}(${i});
46
+ ${A} ${O0}${t}() {
47
+ return ${z0}${t}(${i});
48
48
  }`);const C=l.join(`
49
- `);if(E&&t==r){const P=Pe(e.type)||vn(e.type)?c:2;f=a?`highp vec3 ${o};`:`mediump float ${o}[${P}];`}return{glsl:C,domainUniform:f}}function Ga(t){if(!me(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+O0;if(t==-1/0)return""+-O0;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function en(t){typeof t=="number"&&(t=[t]);const e=t.length;if(e<1||e>4)throw new Error("Invalid number of components: "+e);let n,r;return e>1?(n=`vec${e}`,r=`${n}(${t.map(Ga).join(", ")})`):(n="float",r=Ga(t[0])),Object.assign(r,{type:n,numComponents:e})}function Rb(t){const e=Ht(t).rgb();return en([e.r,e.g,e.b].map(n=>n/255))}function G0(t){return en([t[0],Cn(t)])}function kb(t,...e){const n=[];for(const r of e)me(r)?n.push(Ga(r)):Me(r)?n.push(en(r)):n.push(r);return`${t}(${n.join(", ")})`}function xo(t){return t=="index"||t=="locus"}function Ua(t,e){const r=t%2048,i=Math.round(t-r);return e!=null||(e=[]),e[0]=i,e[1]=r,e}function Nb(t){return[...Ua(t[0]),t[1]-t[0]]}class zb{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(za+e,n.numComponents||1,n.arrayReference),i=n.f;this.dataUpdaters.push(n.arrayReference?o=>r(i(o)):o=>r(i(o)))}createUpdater(e,n,r){if(!me(this.size))throw new Error("The number of vertices must be defined!");let i,o,s=0;const a=new Float32Array(this.size*n);if(this.arrays[e]={data:a,numComponents:n},n==1){let u=0;const c=f=>{u=+f};i=()=>{a[s++]=u},o=c}else{let u=r!=null?r:[0];const c=r?f=>{}:f=>{u=f};switch(n){case 1:break;case 2:i=()=>{a[s++]=u[0],a[s++]=u[1]},o=c;break;case 3:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2]},o=c;break;case 4:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2],a[s++]=u[3]},o=c;break;default:throw new Error("Invalid numComponents: "+n)}}return this.pushers.push(i),o}_unrollPushAll(){let e="",n="";for(let i=0;i<this.pushers.length;i++)e+=`const p${i} = that.pushers[${i}];
49
+ `);if(E&&t==r){const P=Pe(e.type)||vn(e.type)?c:2;f=a?`highp vec3 ${o};`:`mediump float ${o}[${P}];`}return{glsl:C,domainUniform:f}}function Ua(t){if(!me(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+G0;if(t==-1/0)return""+-G0;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function en(t){typeof t=="number"&&(t=[t]);const e=t.length;if(e<1||e>4)throw new Error("Invalid number of components: "+e);let n,r;return e>1?(n=`vec${e}`,r=`${n}(${t.map(Ua).join(", ")})`):(n="float",r=Ua(t[0])),Object.assign(r,{type:n,numComponents:e})}function Nb(t){const e=Ht(t).rgb();return en([e.r,e.g,e.b].map(n=>n/255))}function U0(t){return en([t[0],Cn(t)])}function zb(t,...e){const n=[];for(const r of e)me(r)?n.push(Ua(r)):Me(r)?n.push(en(r)):n.push(r);return`${t}(${n.join(", ")})`}function yo(t){return t=="index"||t=="locus"}function Ha(t,e){const r=t%2048,i=Math.round(t-r);return e!=null||(e=[]),e[0]=i,e[1]=r,e}function Ob(t){return[...Ha(t[0]),t[1]-t[0]]}class Gb{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(Oa+e,n.numComponents||1,n.arrayReference),i=n.f;this.dataUpdaters.push(n.arrayReference?o=>r(i(o)):o=>r(i(o)))}createUpdater(e,n,r){if(!me(this.size))throw new Error("The number of vertices must be defined!");let i,o,s=0;const a=new Float32Array(this.size*n);if(this.arrays[e]={data:a,numComponents:n},n==1){let u=0;const c=f=>{u=+f};i=()=>{a[s++]=u},o=c}else{let u=r!=null?r:[0];const c=r?f=>{}:f=>{u=f};switch(n){case 1:break;case 2:i=()=>{a[s++]=u[0],a[s++]=u[1]},o=c;break;case 3:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2]},o=c;break;case 4:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2],a[s++]=u[3]},o=c;break;default:throw new Error("Invalid numComponents: "+n)}}return this.pushers.push(i),o}_unrollPushAll(){let e="",n="";for(let i=0;i<this.pushers.length;i++)e+=`const p${i} = that.pushers[${i}];
50
50
  `,n+=`p${i}();
51
51
  `;const r=new Function("that",`${e}
52
52
 
@@ -54,8 +54,8 @@ ${A} ${z0}${t}() {
54
54
  ${n}
55
55
  that.vertexCount++;
56
56
  };
57
- `);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Rn=5,Ha=127;function Qa(t){const e=[];for(let d=0;d<=Ha;d++)e.push(void 0);const n=new Map;for(const d of t.chars)d.id<=Ha?e[d.id]=d:n.set(d.id,d);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(d){return(d<=Ha?e[d]:n.get(d))||e[63]}function o(d){return i(d.charCodeAt(0))}const s=t.common.base,a=o("x"),u=o("X"),c=o("q"),f=a.height-Rn*2,l=u.height-Rn*2,h=c.height-a.height+c.yoffset-a.yoffset;function p(d,g=1){let A=0;for(let m=0;m<d.length;m++)A+=i(d.charCodeAt(m)).xadvance;return A/s*g}return{measureWidth:p,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:h,common:t.common}}function Ob(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const U0=2**31-1,Gb=-(2**31);function Ub(t,e,n,r=n){const i=new Int32Array(t);i.fill(U0);let o=Gb,s=!1;const a=new Int32Array(t),u=e[0],f=(e[1]-e[0])/t,l=(A,m)=>{const b=(A-u)/f,y=Math.floor(b);return Ob(m&&y==b?y-1:y,0,t-1)};function h(A,m,b){m>o?o=m:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const y=n(A),w=l(y,!1);i[w]>m&&(i[w]=m),a[w]<b&&(a[w]=b)}function p(A,m,b){m>o?o=m:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const y=n(A),w=r(A),E=l(y,!1),C=l(w,!0);for(let B=E;B<=C;B++)i[B]>m&&(i[B]=m),a[B]<b&&(a[B]=b)}const d=(A,m,b=[0,0])=>{const y=l(A,!1),w=l(m,!0),E=i[y],C=Math.max(a[w],E);return b[0]=E,b[1]=C,b},g=()=>{for(let m=1;m<a.length;m++)a[m]<a[m-1]&&(a[m]=a[m-1]);let A=!0;for(let m=i.length-1;m>0;m--)A&&i[m]==U0?(i[m]=a[m],A=!1):i[m-1]>i[m]&&(i[m-1]=i[m]);return d};if(h.getIndex=g,p.getIndex=g,!s)return n==r?h:p}class Vr{constructor({encoders:e,numVertices:n=void 0,attributes:r=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([i,o])=>r.includes(i)&&o&&o.scale&&!o.constant)),this.allocatedVertices=n,this.variableBuilder=new zb(n);for(const[i,o]of Object.entries(this.variableEncoders)){const s=o.accessor,a=[0,0],u=xo(o.scale.type),c=o.indexer,f=c?l=>c(s(l)):u?l=>Ua(s(l),a):s;this.variableBuilder.addConverter(i,{f,numComponents:u?2:1,arrayReference:u?a:void 0})}this.lastOffset=0,this.rangeMap=new Pt([],JSON.stringify)}registerBatch(e){var o;const n=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-n;i&&this.rangeMap.set(e,{offset:n,count:i,xIndex:(o=this.xIndexer)==null?void 0:o.getIndex()}),this.lastOffset=r}addBatches(e){for(const[n,r]of e)this.addBatch(n,r)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.pushFromDatum(s),this.addToXIndex(s)}this.registerBatch(e)}prepareXIndexer(e,n=0,r=n+e.length){const i=()=>{this.addToXIndex=u=>{},this.xIndexer=void 0};if(!e.length||r-n<0){i();return}const o=u=>{var c;return u&&Pe((c=u.scale)==null?void 0:c.type)&&u},s=o(this.variableEncoders.x),a=o(this.variableEncoders.x2);if(s){const u=s.accessor,c=a?a.accessor:u,f=[u(e[n]),c(e[r-1])];if(f[1]>f[0]){this.xIndexer=Ub(50,f,u,c);let l=this.variableBuilder.vertexCount;this.addToXIndex=h=>{let p=this.variableBuilder.vertexCount;this.xIndexer(h,l,p),l=p}}else i()}else i()}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class Hb extends Vr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateFrac=this.variableBuilder.createUpdater("frac",2)}addBatch(e,n,r=0,i=n.length){if(i<=r)return;const o=this.encoders,[s,a]=this.visibleRange,u=h=>h.accessor||(p=>0),c=u(o.x),f=u(o.x2);this.prepareXIndexer(n,r,i);const l=[0,0];this.updateFrac(l);for(let h=r;h<i;h++){const p=n[h];let d=c(p),g=f(p);if(d>g&&([d,g]=[g,d]),g<s||d>a)continue;d<s&&(d=s),g>a&&(g=a),this.variableBuilder.updateFromDatum(p),l[0]=0,l[1]=0;const A=1;this.variableBuilder.pushAll();for(let m=0;m<=A;m++)l[0]=m/A,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(p)}this.registerBatch(e)}}class Qb extends Vr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.updateFromDatum(s),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const a=1;for(let u=0;u<=a;u++)this.updatePos(u/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(s)}this.registerBatch(e)}}class jb extends Vr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class Vb extends Vr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}toArrays(){const e=this.variableBuilder.arrays;for(let n of Object.values(e))n.divisor=1;return super.toArrays()}}class Yb extends Vr{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0}){super({encoders:e,attributes:n,numVertices:o*6}),this.metadata=r,this.metrics=r,this.properties=i;const a=e.text.channelDef;this.numberFormat=!Ue(a)&&a.format?se(a.format):u=>u,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1)}addBatch(e,n,r=0,i=n.length){var p;const o=this.properties.align||"left",s=(p=this.properties.logoLetters)!=null?p:!1,a=this.metadata.common.base,u=this.metadata.common.scaleH;let c=-Rn;switch(this.properties.baseline){case"top":c+=this.metrics.capHeight;break;case"middle":c+=this.metrics.capHeight/2;break;case"bottom":c-=this.metrics.descent;break}const f=this.encoders.text.accessor||this.encoders.text,l=[0,0];this.updateVertexCoord(l);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(n,r,i);for(let d=r;d<i;d++){const g=n[d],A=this.numberFormat(f(g)),m=Z(A)?A:A===null?"":""+A;if(m.length==0)continue;this.variableBuilder.updateFromDatum(g);const b=s?m.length:this.metrics.measureWidth(m);this.updateWidth(b);let y=o=="right"?-b:o=="center"?-b/2:0;if(!s){const B=this.metrics.getCharByCode(m.charCodeAt(0));y-=(B.width-B.xadvance)/a/2}let w=-.5,E=1,C=1;for(let B=0;B<m.length;B++){const I=this.metrics.getCharByCode(m.charCodeAt(B)),P=s?1:I.xadvance/a;if(I.id==32){y+=P;continue}s?(C=(I.width+Rn*2)/I.width,y=-C/2,E=(I.height+Rn*2)/I.height,w=-.5-Rn/I.height):(E=I.height/a,w=-(I.height+I.yoffset+c)/a,C=I.width/a);const U=I.x,M=I.y;l[0]=y,l[1]=w+E,h[0]=U/u,h[1]=M/u,this.variableBuilder.pushAll(),l[0]=y+C,l[1]=w+E,h[0]=(U+I.width)/u,h[1]=M/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=w,h[0]=U/u,h[1]=(M+I.height)/u,this.variableBuilder.pushAll(),l[0]=y+C,l[1]=w+E,h[0]=(U+I.width)/u,h[1]=M/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=w,h[0]=U/u,h[1]=(M+I.height)/u,this.variableBuilder.pushAll(),l[0]=y+C,l[1]=w,h[0]=(U+I.width)/u,h[1]=(M+I.height)/u,this.variableBuilder.pushAll(),y+=P}this.addToXIndex(g)}this.registerBatch(e)}}const H0=`#define PI 3.141593
58
- uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : vec4(0.0),distanceToRatio(sd));}else{return fill*distanceToRatio(-d);}}`,Wb="const float inf=1.0/0.0;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(float value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(value-domainExtent[0])*step+bandwidth*band;}float scaleBandHp(vec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);float hi=max(value[0]-domainStart[0],-inf);float lo=max(value[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}",Xb=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
57
+ `);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Rn=5,Qa=127;function ja(t){const e=[];for(let d=0;d<=Qa;d++)e.push(void 0);const n=new Map;for(const d of t.chars)d.id<=Qa?e[d.id]=d:n.set(d.id,d);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(d){return(d<=Qa?e[d]:n.get(d))||e[63]}function o(d){return i(d.charCodeAt(0))}const s=t.common.base,a=o("x"),u=o("X"),c=o("q"),f=a.height-Rn*2,l=u.height-Rn*2,h=c.height-a.height+c.yoffset-a.yoffset;function p(d,g=1){let A=0;for(let m=0;m<d.length;m++)A+=i(d.charCodeAt(m)).xadvance;return A/s*g}return{measureWidth:p,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:h,common:t.common}}function Ub(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const H0=2**31-1,Hb=-(2**31);function Qb(t,e,n,r=n){const i=new Int32Array(t);i.fill(H0);let o=Hb,s=!1;const a=new Int32Array(t),u=e[0],f=(e[1]-e[0])/t,l=(A,m)=>{const b=(A-u)/f,y=Math.floor(b);return Ub(m&&y==b?y-1:y,0,t-1)};function h(A,m,b){m>o?o=m:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const y=n(A),w=l(y,!1);i[w]>m&&(i[w]=m),a[w]<b&&(a[w]=b)}function p(A,m,b){m>o?o=m:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const y=n(A),w=r(A),E=l(y,!1),C=l(w,!0);for(let B=E;B<=C;B++)i[B]>m&&(i[B]=m),a[B]<b&&(a[B]=b)}const d=(A,m,b=[0,0])=>{const y=l(A,!1),w=l(m,!0),E=i[y],C=Math.max(a[w],E);return b[0]=E,b[1]=C,b},g=()=>{for(let m=1;m<a.length;m++)a[m]<a[m-1]&&(a[m]=a[m-1]);let A=!0;for(let m=i.length-1;m>0;m--)A&&i[m]==H0?(i[m]=a[m],A=!1):i[m-1]>i[m]&&(i[m-1]=i[m]);return d};if(h.getIndex=g,p.getIndex=g,!s)return n==r?h:p}class Yr{constructor({encoders:e,numVertices:n=void 0,attributes:r=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([i,o])=>r.includes(i)&&o&&o.scale&&!o.constant)),this.allocatedVertices=n,this.variableBuilder=new Gb(n);for(const[i,o]of Object.entries(this.variableEncoders)){const s=o.accessor,a=[0,0],u=yo(o.scale.type),c=o.indexer,f=c?l=>c(s(l)):u?l=>Ha(s(l),a):s;this.variableBuilder.addConverter(i,{f,numComponents:u?2:1,arrayReference:u?a:void 0})}this.lastOffset=0,this.rangeMap=new Pt([],JSON.stringify)}registerBatch(e){var o;const n=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-n;i&&this.rangeMap.set(e,{offset:n,count:i,xIndex:(o=this.xIndexer)==null?void 0:o.getIndex()}),this.lastOffset=r}addBatches(e){for(const[n,r]of e)this.addBatch(n,r)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.pushFromDatum(s),this.addToXIndex(s)}this.registerBatch(e)}prepareXIndexer(e,n=0,r=n+e.length){const i=()=>{this.addToXIndex=u=>{},this.xIndexer=void 0};if(!e.length||r-n<0){i();return}const o=u=>{var c;return u&&Pe((c=u.scale)==null?void 0:c.type)&&u},s=o(this.variableEncoders.x),a=o(this.variableEncoders.x2);if(s){const u=s.accessor,c=a?a.accessor:u,f=[u(e[n]),c(e[r-1])];if(f[1]>f[0]){this.xIndexer=Qb(50,f,u,c);let l=this.variableBuilder.vertexCount;this.addToXIndex=h=>{let p=this.variableBuilder.vertexCount;this.xIndexer(h,l,p),l=p}}else i()}else i()}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class jb extends Yr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateFrac=this.variableBuilder.createUpdater("frac",2)}addBatch(e,n,r=0,i=n.length){if(i<=r)return;const o=this.encoders,[s,a]=this.visibleRange,u=h=>h.accessor||(p=>0),c=u(o.x),f=u(o.x2);this.prepareXIndexer(n,r,i);const l=[0,0];this.updateFrac(l);for(let h=r;h<i;h++){const p=n[h];let d=c(p),g=f(p);if(d>g&&([d,g]=[g,d]),g<s||d>a)continue;d<s&&(d=s),g>a&&(g=a),this.variableBuilder.updateFromDatum(p),l[0]=0,l[1]=0;const A=1;this.variableBuilder.pushAll();for(let m=0;m<=A;m++)l[0]=m/A,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(p)}this.registerBatch(e)}}class Vb extends Yr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.updateFromDatum(s),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const a=1;for(let u=0;u<=a;u++)this.updatePos(u/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(s)}this.registerBatch(e)}}class Yb extends Yr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class Wb extends Yr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}toArrays(){const e=this.variableBuilder.arrays;for(let n of Object.values(e))n.divisor=1;return super.toArrays()}}class Xb extends Yr{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0}){super({encoders:e,attributes:n,numVertices:o*6}),this.metadata=r,this.metrics=r,this.properties=i;const a=e.text.channelDef;this.numberFormat=!Ue(a)&&a.format?se(a.format):u=>u,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1)}addBatch(e,n,r=0,i=n.length){var p;const o=this.properties.align||"left",s=(p=this.properties.logoLetters)!=null?p:!1,a=this.metadata.common.base,u=this.metadata.common.scaleH;let c=-Rn;switch(this.properties.baseline){case"top":c+=this.metrics.capHeight;break;case"middle":c+=this.metrics.capHeight/2;break;case"bottom":c-=this.metrics.descent;break}const f=this.encoders.text.accessor||this.encoders.text,l=[0,0];this.updateVertexCoord(l);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(n,r,i);for(let d=r;d<i;d++){const g=n[d],A=this.numberFormat(f(g)),m=Z(A)?A:A===null?"":""+A;if(m.length==0)continue;this.variableBuilder.updateFromDatum(g);const b=s?m.length:this.metrics.measureWidth(m);this.updateWidth(b);let y=o=="right"?-b:o=="center"?-b/2:0;if(!s){const B=this.metrics.getCharByCode(m.charCodeAt(0));y-=(B.width-B.xadvance)/a/2}let w=-.5,E=1,C=1;for(let B=0;B<m.length;B++){const I=this.metrics.getCharByCode(m.charCodeAt(B)),P=s?1:I.xadvance/a;if(I.id==32){y+=P;continue}s?(C=(I.width+Rn*2)/I.width,y=-C/2,E=(I.height+Rn*2)/I.height,w=-.5-Rn/I.height):(E=I.height/a,w=-(I.height+I.yoffset+c)/a,C=I.width/a);const U=I.x,M=I.y;l[0]=y,l[1]=w+E,h[0]=U/u,h[1]=M/u,this.variableBuilder.pushAll(),l[0]=y+C,l[1]=w+E,h[0]=(U+I.width)/u,h[1]=M/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=w,h[0]=U/u,h[1]=(M+I.height)/u,this.variableBuilder.pushAll(),l[0]=y+C,l[1]=w+E,h[0]=(U+I.width)/u,h[1]=M/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=w,h[0]=U/u,h[1]=(M+I.height)/u,this.variableBuilder.pushAll(),l[0]=y+C,l[1]=w,h[0]=(U+I.width)/u,h[1]=(M+I.height)/u,this.variableBuilder.pushAll(),y+=P}this.addToXIndex(g)}this.registerBatch(e)}}const Q0=`#define PI 3.141593
58
+ uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : vec4(0.0),distanceToRatio(sd));}else{return fill*distanceToRatio(-d);}}`,Zb="const float inf=1.0/0.0;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(float value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(value-domainExtent[0])*step+bandwidth*band;}float scaleBandHp(vec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);float hi=max(value[0]-domainStart[0],-inf);float lo=max(value[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}",Kb=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
59
59
  #if !defined(SAMPLE_FACET_UNIFORM) && !defined(SAMPLE_FACET_TEXTURE)
60
60
  SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1.0);}
61
61
  #elif defined(SAMPLE_FACET_UNIFORM)
@@ -63,36 +63,36 @@ SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1
63
63
  #elif defined(SAMPLE_FACET_TEXTURE)
64
64
  uniform sampler2D uSampleFacetTexture;SampleFacetPosition getSampleFacetPos(){vec4 texel=texelFetch(uSampleFacetTexture,ivec2(int(attr_facetIndex),0),0);return SampleFacetPosition(1.0-texel.r-texel.g,texel.g,1.0-texel.r-texel.g,texel.g);}
65
65
  #endif
66
- bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,Zb=`/**Based on concepts presented at:*https:*https:*/flat out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
66
+ bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,qb=`/**Based on concepts presented at:*https:*https:*/flat out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
67
67
  #ifdef uniqueId_DEFINED
68
68
  int id=int(getScaled_uniqueId());vPickingColor=vec4(ivec4(id>>0,id>>8,id>>16,0xFF)&0xFF)/float(0xFF);
69
69
  #else
70
70
  vPickingColor=vec4(1.0);
71
71
  #endif
72
- return true;}return false;}`,Kb="flat in highp vec4 vPickingColor;",yo=Symbol("cacheMap");function kn(t,e,n){let r=Yr(t).get(e);return r===void 0&&(r=n(e),Yr(t).set(e,r)),r}function Q0(t,e){Yr(t).delete(e)}function bo(t,e){const n=Yr(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Yr(t).delete(e)}function j0(t){t[yo]=new Map}function Yr(t){return t[yo]||j0(t),t[yo]}function qb(t,e,n,r){const i=Z(t)?t:t.name,o=!Z(t)&&t.extent||[0,1];if(n===void 0&&!Z(t)&&(n=t.count),i){const s=Ks(i);if(ge(s)){const a=Y0(s,{extent:o,count:n});return wo(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(Me(s))return V0(s,e);throw new Error("Unknown scheme: "+i)}}}function Jb(t,e="rgb",n,r){const i=Qi(t,Z(e)?e:e.type,Z(e)?void 0:e.gamma),o=Y0(i);return wo(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function _b(t,e,n,r){const i=Math.max(t.length,n||0),o=new Float32Array(i);for(let s=0;s<i;s++)o[s]=t[s%t.length];return wo(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function V0(t,e,n,r){const i=W0(t,n);return wo(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function Y0(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=Cn(e)-i,s=Zn(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),W0(s)}function W0(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=Ht(t[i%t.length]).rgb();r[i*3+0]=o.r,r[i*3+1]=o.g,r[i*3+2]=o.b}return r}class $b{constructor(e,n){this._container=e,this._sizeSource=n,this._shaderCache=new Map,this._listeners=[],this.rangeTextures=new WeakMap;const r=document.createElement("canvas");e.appendChild(r);const i=Bb(r,{antialias:!0,depth:!1,premultipliedAlpha:!0});if(!i)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!Sn(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");R0(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this.canvas=r,this.gl=i,this._pickingAttachmentOptions=[{format:i.RGBA,type:i.UNSIGNED_BYTE,minMag:i.LINEAR,wrap:i.CLAMP_TO_EDGE}],this._pickingBufferInfo=wb(i,this._pickingAttachmentOptions),i.bindFramebuffer(i.FRAMEBUFFER,null),this.adjustGl(),this._resizeObserver=new ResizeObserver(o=>{this.invalidateSize(),this._emit("resize")}),this._resizeObserver.observe(this._container),this._updateDpr()}invalidateSize(){this._logicalCanvasSize=void 0,this._updateDpr(),this.adjustGl()}_updateDpr(){this.dpr=window.devicePixelRatio}compileShader(e,n){const r="#version 300 es",i="precision mediump float;";Me(n)&&(n=n.join(`
72
+ return true;}return false;}`,Jb="flat in highp vec4 vPickingColor;",bo=Symbol("cacheMap");function kn(t,e,n){let r=Wr(t).get(e);return r===void 0&&(r=n(e),Wr(t).set(e,r)),r}function j0(t,e){Wr(t).delete(e)}function wo(t,e){const n=Wr(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Wr(t).delete(e)}function V0(t){t[bo]=new Map}function Wr(t){return t[bo]||V0(t),t[bo]}function _b(t,e,n,r){const i=Z(t)?t:t.name,o=!Z(t)&&t.extent||[0,1];if(n===void 0&&!Z(t)&&(n=t.count),i){const s=qs(i);if(ge(s)){const a=W0(s,{extent:o,count:n});return vo(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(Me(s))return Y0(s,e);throw new Error("Unknown scheme: "+i)}}}function $b(t,e="rgb",n,r){const i=ji(t,Z(e)?e:e.type,Z(e)?void 0:e.gamma),o=W0(i);return vo(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function ew(t,e,n,r){const i=Math.max(t.length,n||0),o=new Float32Array(i);for(let s=0;s<i;s++)o[s]=t[s%t.length];return vo(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function Y0(t,e,n,r){const i=X0(t,n);return vo(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function W0(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=Cn(e)-i,s=Kn(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),X0(s)}function X0(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=Ht(t[i%t.length]).rgb();r[i*3+0]=o.r,r[i*3+1]=o.g,r[i*3+2]=o.b}return r}class tw{constructor(e,n){this._container=e,this._sizeSource=n,this._shaderCache=new Map,this._listeners=[],this.rangeTextures=new WeakMap;const r=document.createElement("canvas");e.appendChild(r);const i=Mb(r,{antialias:!0,depth:!1,premultipliedAlpha:!0});if(!i)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!Sn(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");k0(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this.canvas=r,this.gl=i,this._pickingAttachmentOptions=[{format:i.RGBA,type:i.UNSIGNED_BYTE,minMag:i.LINEAR,wrap:i.CLAMP_TO_EDGE}],this._pickingBufferInfo=Cb(i,this._pickingAttachmentOptions),i.bindFramebuffer(i.FRAMEBUFFER,null),this.adjustGl(),this._resizeObserver=new ResizeObserver(o=>{this.invalidateSize(),this._emit("resize")}),this._resizeObserver.observe(this._container),this._updateDpr()}invalidateSize(){this._logicalCanvasSize=void 0,this._updateDpr(),this.adjustGl()}_updateDpr(){this.dpr=window.devicePixelRatio}compileShader(e,n){const r="#version 300 es",i="precision mediump float;";Me(n)&&(n=n.join(`
73
73
 
74
74
  `));const o=this.gl,s=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let a=this._shaderCache.get(s);if(!a){const u=[r,i,n].join(`
75
75
 
76
- `);a=o.createShader(e),o.shaderSource(a,u),o.compileShader(a),this._shaderCache.set(s,a)}return a}adjustGl(){const e=this.getLogicalCanvasSize();this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`;const n=this.getPhysicalCanvasSize(e);this.canvas.width=n.width,this.canvas.height=n.height,vb(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this._resizeObserver.unobserve(this._container),this.canvas.remove()}getPhysicalCanvasSize(e){return e=e||this.getLogicalCanvasSize(),{width:e.width*this.dpr,height:e.height*this.dpr}}getLogicalCanvasSize(){var o,s,a,u;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=(s=(o=this._sizeSource)==null?void 0:o.call(this))!=null?s:{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=(a=e.width)!=null?a:this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=(u=e.height)!=null?u:this._container.clientHeight-parseFloat(n.paddingTop)-parseFloat(n.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}addEventListener(e,n){this._listeners.push({type:e,listener:n})}_emit(e){for(const n of this._listeners)n.type===e&&n.listener()}readPickingPixel(e,n){const r=this.gl;e*=this.dpr,n*=this.dpr;const i=this.getPhysicalCanvasSize().height,o=new Uint8Array(4);return r.bindFramebuffer(r.FRAMEBUFFER,this._pickingBufferInfo.framebuffer),r.readPixels(e,i-n-1,1,1,r.RGBA,r.UNSIGNED_BYTE,o),r.bindFramebuffer(r.FRAMEBUFFER,null),o}clearAll(){const e=this.gl,{width:n,height:r}=this.getPhysicalCanvasSize();e.viewport(0,0,n,r),e.disable(e.SCISSOR_TEST),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)}createRangeTexture(e,n=!1){const r=this.rangeTextures.get(e);if(!n&&r)return;function i(s,a){return Wt(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?s!=null?s:4:s}const o=e.channel;if(qt(o)){const s=e.getScaleProps(),a=e.getScale();let u;if(s.scheme){let c=Z(s.scheme)?void 0:s.scheme.count;c=i(c,a),u=qb(s.scheme,this.gl,c,r)}else{const c=a.range();Hi(a.type)?u=Jb(c,s.interpolate,this.gl,r):u=V0(c,this.gl,a.domain().length,r)}this.rangeTextures.set(e,u)}else{const s=e.getScale();if(s.type==="ordinal"||vn(s.type)){const a=Ki(o)?bf(o):c=>c,u=e.getScale().range();this.rangeTextures.set(e,_b(u.map(a),this.gl,s.domain().length,r))}}}}function ew(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((s,a)=>{const u=parseInt(s[1]),c=i[a+1],f=c?c.index:e.length,l=e.substring(s.index,f);return[u-1,l]}));return t.split(`
76
+ `);a=o.createShader(e),o.shaderSource(a,u),o.compileShader(a),this._shaderCache.set(s,a)}return a}adjustGl(){const e=this.getLogicalCanvasSize();this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`;const n=this.getPhysicalCanvasSize(e);this.canvas.width=n.width,this.canvas.height=n.height,Eb(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this._resizeObserver.unobserve(this._container),this.canvas.remove()}getPhysicalCanvasSize(e){return e=e||this.getLogicalCanvasSize(),{width:e.width*this.dpr,height:e.height*this.dpr}}getLogicalCanvasSize(){var o,s,a,u;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=(s=(o=this._sizeSource)==null?void 0:o.call(this))!=null?s:{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=(a=e.width)!=null?a:this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=(u=e.height)!=null?u:this._container.clientHeight-parseFloat(n.paddingTop)-parseFloat(n.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}addEventListener(e,n){this._listeners.push({type:e,listener:n})}_emit(e){for(const n of this._listeners)n.type===e&&n.listener()}readPickingPixel(e,n){const r=this.gl;e*=this.dpr,n*=this.dpr;const i=this.getPhysicalCanvasSize().height,o=new Uint8Array(4);return r.bindFramebuffer(r.FRAMEBUFFER,this._pickingBufferInfo.framebuffer),r.readPixels(e,i-n-1,1,1,r.RGBA,r.UNSIGNED_BYTE,o),r.bindFramebuffer(r.FRAMEBUFFER,null),o}clearAll(){const e=this.gl,{width:n,height:r}=this.getPhysicalCanvasSize();e.viewport(0,0,n,r),e.disable(e.SCISSOR_TEST),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)}createRangeTexture(e,n=!1){const r=this.rangeTextures.get(e);if(!n&&r)return;function i(s,a){return Wt(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?s!=null?s:4:s}const o=e.channel;if(qt(o)){const s=e.getScaleProps(),a=e.getScale();let u;if(s.scheme){let c=Z(s.scheme)?void 0:s.scheme.count;c=i(c,a),u=_b(s.scheme,this.gl,c,r)}else{const c=a.range();Qi(a.type)?u=$b(c,s.interpolate,this.gl,r):u=Y0(c,this.gl,a.domain().length,r)}this.rangeTextures.set(e,u)}else{const s=e.getScale();if(s.type==="ordinal"||vn(s.type)){const a=qi(o)?wf(o):c=>c,u=e.getScale().range();this.rangeTextures.set(e,ew(u.map(a),this.gl,s.domain().length,r))}}}}function nw(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((s,a)=>{const u=parseInt(s[1]),c=i[a+1],f=c?c.index:e.length,l=e.substring(s.index,f);return[u-1,l]}));return t.split(`
77
77
  `).map((s,a)=>{const u=o.get(a);return`${a+1+n}: ${s}${u?`
78
78
 
79
79
  ^^^ ${u}`:""}`}).join(`
80
- `)}function tw(t,e,n){const r=t.createProgram();t.attachShader(r,e),t.attachShader(r,n),t.linkProgram(r);function i(){let o,s;if(!t.getProgramParameter(r,t.LINK_STATUS)){o=t.getProgramInfoLog(r);for(const u of[e,n])t.getShaderParameter(u,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(u),s=ew(t.getShaderSource(u),o,0)+`
81
- Error compiling: ${o}`,t.deleteShader(u));t.deleteProgram(r)}if(o)return{message:o,detail:s}}return{program:r,getProgramErrors:i}}function wo(t,e,n,r){return r?qf(t,r,n,e):r=Qr(t,{...e,src:n}),r}function nw(...t){const e={get(n,r,i){for(const o of t){const a=o()[r];if(a!==void 0)return a}},has(n,r,i){for(const o of t){const s=o();if(r in s)return!0}return!1}};return new Proxy({},e)}function rw(t){return Z(t)||me(t)||ai(t)}const iw="SAMPLE_FACET_UNIFORM",X0="SAMPLE_FACET_TEXTURE";class Wr{constructor(e){this.unitView=e,this.encoders=void 0,this.bufferInfo=void 0,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.domainUniformInfo=void 0,this.viewUniformInfo=void 0,this.rangeMap=new ow,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>{var r;return(r=n==null?void 0:n.isZoomable())!=null?r:!1})},xOffset:0,yOffset:0,minBufferSize:0},this.properties=nw(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}get opaque(){return!1}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:"_uniqueId"}),e}fixEncoding(e){return e}get encoding(){return kn(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=s=>{const a=this.properties[s];return rw(a)&&{value:a}},i=Object.fromEntries(this.getSupportedChannels().map(s=>[s,r(s)]).filter(s=>s[1].value!==void 0)),o=this.fixEncoding({...e,...i,...n});for(const s of Object.keys(o))this.getSupportedChannels().includes(s)||delete o[s];return o})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=L1(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return X0;if(this.unitView.getFacetAccessor())return iw}createAndLinkShaders(e,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let o=[];const s=this.getSampleFacetMode();s&&r.push(`#define ${s}`);for(const h of i){let p;if(h in this.encoding)p=h;else continue;const d=this.encoding[p];if(!!d)if(Ue(d))o.push(Pb(p,d.value));else{const g=Le(d)&&d.resolutionChannel||p,A=this.unitView.getScaleResolution(g).getScale(),m=Lb(p,A,d);o.push(m.glsl),m.domainUniform&&this.domainUniforms.push(m.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
80
+ `)}function rw(t,e,n){const r=t.createProgram();t.attachShader(r,e),t.attachShader(r,n),t.linkProgram(r);function i(){let o,s;if(!t.getProgramParameter(r,t.LINK_STATUS)){o=t.getProgramInfoLog(r);for(const u of[e,n])t.getShaderParameter(u,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(u),s=nw(t.getShaderSource(u),o,0)+`
81
+ Error compiling: ${o}`,t.deleteShader(u));t.deleteProgram(r)}if(o)return{message:o,detail:s}}return{program:r,getProgramErrors:i}}function vo(t,e,n,r){return r?Jf(t,r,n,e):r=jr(t,{...e,src:n}),r}function iw(...t){const e={get(n,r,i){for(const o of t){const a=o()[r];if(a!==void 0)return a}},has(n,r,i){for(const o of t){const s=o();if(r in s)return!0}return!1}};return new Proxy({},e)}function ow(t){return Z(t)||me(t)||ui(t)}const sw="SAMPLE_FACET_UNIFORM",Z0="SAMPLE_FACET_TEXTURE";class Xr{constructor(e){this.unitView=e,this.encoders=void 0,this.bufferInfo=void 0,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.domainUniformInfo=void 0,this.viewUniformInfo=void 0,this.rangeMap=new aw,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>{var r;return(r=n==null?void 0:n.isZoomable())!=null?r:!1})},xOffset:0,yOffset:0,minBufferSize:0},this.properties=iw(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}get opaque(){return!1}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:"_uniqueId"}),e}fixEncoding(e){return e}get encoding(){return kn(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=s=>{const a=this.properties[s];return ow(a)&&{value:a}},i=Object.fromEntries(this.getSupportedChannels().map(s=>[s,r(s)]).filter(s=>s[1].value!==void 0)),o=this.fixEncoding({...e,...i,...n});for(const s of Object.keys(o))this.getSupportedChannels().includes(s)||delete o[s];return o})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=k1(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return Z0;if(this.unitView.getFacetAccessor())return sw}createAndLinkShaders(e,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let o=[];const s=this.getSampleFacetMode();s&&r.push(`#define ${s}`);for(const h of i){let p;if(h in this.encoding)p=h;else continue;const d=this.encoding[p];if(!!d)if(Ue(d))o.push(Rb(p,d.value));else{const g=Le(d)&&d.resolutionChannel||p,A=this.unitView.getScaleResolution(g).getScale(),m=kb(p,A,d);o.push(m.glsl),m.domainUniform&&this.domainUniforms.push(m.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
82
82
  `+this.domainUniforms.map(h=>` ${h}
83
83
  `).join("")+`};
84
84
 
85
85
  `:"",c=[`precision highp float;
86
- `,...r,H0,Wb,a,...o,Xb,Zb,e],f=[...r,H0,Kb,n],l=this.gl;this.programStatus=tw(l,this.glHelper.compileShader(l.VERTEX_SHADER,c),this.glHelper.compileShader(l.FRAGMENT_SHADER,f))}finalizeGraphicsInitialization(){const e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);const n=new Error("Cannot create shader program: "+e.message);throw n.view=this.unitView,n}this.programInfo=ib(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=C0(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=C0(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),Ee(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(Lr(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):xo(r.scale.type)?Ua(+n.datum):+n.datum;Ee(this.programInfo,{[za+e]:i})}}deleteGraphicsData(){if(this.bufferInfo){const e=this.gl;for(let n=0;n<8;n++)e.disableVertexAttribArray(n);Object.values(this.bufferInfo.attribs).forEach(n=>this.gl.deleteBuffer(n.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(const[n,r]of Object.entries(e.arrays))r.data&&mx(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=yx(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices,this.vertexArrayInfo=void 0}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null)return!1;for(const e of this.unitView.getAncestors())if(!e.isPickingSupported())return!1;return!0}prepareRender(e){var s;const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=Cb(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[a,u]of Object.entries(this.domainUniformInfo.setters)){const c=a.substring(k0.length),f=this.encoding[c],l=Le(f)&&f.resolutionChannel||c,h=this.unitView.getScaleResolution(l);if(h){const p=h.getScale();i.push(()=>{const d=Wt(p.type)?[0,p.domain().length]:p.domain();u(xo(p.type)?Nb(d):d)})}}i.push(()=>E0(r,this.programInfo,this.domainUniformInfo))}for(const[a,u]of Object.entries(this.encoding))if(Le(u)){const c=Le(u)&&u.resolutionChannel||a,f=this.unitView.getScaleResolution(c),l=n.rangeTextures.get(f);l&&i.push(()=>Ee(this.programInfo,{[Oa+a]:l}))}this.getSampleFacetMode()==X0&&i.push(()=>{let a;for(const u of this.unitView.getAncestors())if(a=u.getSampleFacetTexture(),a)break;if(!a)throw new Error("No facet texture available. This is bug.");Ee(this.programInfo,{uSampleFacetTexture:a})});const o=((s=e.picking)!=null?s:!1)&&this.isPickingParticipant();return i.push(()=>S0(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:o})),this.opaque||e.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(e){const n=e.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(n&&r){const i=n.locSize?n.locSize.location:0,o=n.locSize?n.locSize.size:1;if(i>1||i+o<0)return!1;const s=n.targetLocSize?n.targetLocSize.location:i,a=n.targetLocSize?n.targetLocSize.size:o;this.gl.uniform4f(r.location,i,o,s,a)}return!0}render(e){}createRenderCallback(e,n){var f;const r=this;let i;const o=(f=this.unitView.getScaleResolution("x"))==null?void 0:f.getScale(),s=o&&Pe(o.type),a=["index","locus"].includes(o==null?void 0:o.type)?-1:0,u=[0,0];i=l=>{if(s&&l.xIndex){const h=o.domain(),p=l.xIndex(h[0]+a,h[1],u),d=p[0],g=p[1]-d;g>0&&e(d,g)}else e(l.offset,l.count)};const c=this.rangeMap.get(n.facetId);return n.sampleFacetRenderingOptions?function(){c.count&&r.prepareSampleFacetRendering(n)&&i(c)}:function(){c.count&&i(c)}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,s=this.glHelper.getLogicalCanvasSize(),a=.5,u=(o.xOffset||0)+a,c=(o.yOffset||0)+a;let f,l=e;if(o.clip||n){let h=0,p=0,d;n?(l=o.clip?e.intersect(n):n,d=[e.width/l.width,e.height/l.height],p=Math.max(0,e.y2-n.y2),h=Math.max(0,e.x2-n.x2)):d=[1,1];const g=[e.x,s.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(y=>y*r),A=g.map(y=>Math.floor(y)),[m,b]=g.map((y,w)=>y-A[w]);i.viewport(...A),i.scissor(...A),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(u+h+m)/l.width,-(c+p-b)/l.height],uViewScale:d}}else i.viewport(0,0,s.width*r,s.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+u)/s.width,(s.height-e.y-c-e.height)/s.height],uViewScale:[e.width/s.width,e.height/s.height]};return S0(this.viewUniformInfo,{...f,uViewportSize:[e.width,e.height],uDevicePixelRatio:this.glHelper.dpr}),E0(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(e,n){}}class ow extends Pt{constructor(){super([],JSON.stringify)}get(e){let n=super.get(e);return n===void 0&&(n={offset:0,count:0,xIndex:void 0},super.set(e,n)),n}migrateEntries(e){for(const[n,r]of e.entries())Object.assign(this.get(n),r)}}function ja(t,e){var o;const n=z1(e);let r=t[e]&&{...t[e]},i=t[n]&&{...t[n]};if(!(Ue(r)||Ue(i))){if(r){if(!Le(t[e]))return;if(i){if(r.type!="quantitative"){const s=(1-(r.band||1))/2;r.band=s,i.band=-s}}else if(r.type=="quantitative")i={datum:0};else{i={...r};const s=(1-((o=r.band)!=null?o:1))/2;r.band=0+s,i.band=1-s}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function Z0(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke={resolutionChannel:"color",...t.color}),Ue(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity={resolutionChannel:"opacity",...t.opacity})}function K0(t,e){Ue(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill={resolutionChannel:"color",...t.color},!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity={resolutionChannel:"opacity",...t.opacity}:t.fillOpacity={value:0})}class sw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1,tessellationZoomThreshold:10,tessellationTiles:35}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}get opaque(){return kn(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&Ue(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return ja(e,"x"),ja(e,"y"),Z0(e,this.properties.filled),K0(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}_isRoundedCorners(){return["","TopLeft","TopRight","BottomLeft","BottomRight"].map(e=>"cornerRadius"+e).some(e=>this.properties[e]>0)}_isStroked(){const e=this.encoding.strokeWidth;return!(Ue(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(Fb,Mb,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){var n,r,i,o;super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uMinSize:[e.minWidth,e.minHeight],uMinOpacity:e.minOpacity,uCornerRadii:[(n=e.cornerRadiusTopRight)!=null?n:e.cornerRadius,(r=e.cornerRadiusBottomRight)!=null?r:e.cornerRadius,(i=e.cornerRadiusTopLeft)!=null?i:e.cornerRadius,(o=e.cornerRadiusBottomLeft)!=null?o:e.cornerRadius]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Hb({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{jr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,n){e=Ke(e);const r=this.encoders,i=this.unitView.getCollector().facetBatches.get(e),o=r.x.accessor,s=r.x2.accessor;if(i)return i.find(a=>n>=o(a)&&n<s(a))}}const aw=`/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform lowp float uMaxRelativePointDiameter;uniform float uScaleFactor;uniform float uMaxPointSize;uniform float uZoomLevel;uniform float uSemanticThreshold;flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}/***Computes a scaling factor for the points in a sample-faceted view.*/float getDownscaleFactor(vec2 pos){if(!isFacetedSamples()){return 1.0;}float sampleFacetHeight=getSampleFacetHeight(pos);float maxPointDiameter=sqrt(uMaxPointSize);float factor=sampleFacetHeight*uViewportSize.y*uMaxRelativePointDiameter;return clamp(0.0,maxPointDiameter,factor)/maxPointDiameter;}vec2 getDxDy(){
86
+ `,...r,Q0,Zb,a,...o,Kb,qb,e],f=[...r,Q0,Jb,n],l=this.gl;this.programStatus=rw(l,this.glHelper.compileShader(l.VERTEX_SHADER,c),this.glHelper.compileShader(l.FRAGMENT_SHADER,f))}finalizeGraphicsInitialization(){const e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);const n=new Error("Cannot create shader program: "+e.message);throw n.view=this.unitView,n}this.programInfo=sb(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=E0(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=E0(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),Ee(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(Rr(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):yo(r.scale.type)?Ha(+n.datum):+n.datum;Ee(this.programInfo,{[Oa+e]:i})}}deleteGraphicsData(){if(this.bufferInfo){const e=this.gl;for(let n=0;n<8;n++)e.disableVertexAttribArray(n);Object.values(this.bufferInfo.attribs).forEach(n=>this.gl.deleteBuffer(n.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(const[n,r]of Object.entries(e.arrays))r.data&&xx(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=wx(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices,this.vertexArrayInfo=void 0}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null)return!1;for(const e of this.unitView.getAncestors())if(!e.isPickingSupported())return!1;return!0}prepareRender(e){var s;const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=Sb(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[a,u]of Object.entries(this.domainUniformInfo.setters)){const c=a.substring(N0.length),f=this.encoding[c],l=Le(f)&&f.resolutionChannel||c,h=this.unitView.getScaleResolution(l);if(h){const p=h.getScale();i.push(()=>{const d=Wt(p.type)?[0,p.domain().length]:p.domain();u(yo(p.type)?Ob(d):d)})}}i.push(()=>S0(r,this.programInfo,this.domainUniformInfo))}for(const[a,u]of Object.entries(this.encoding))if(Le(u)){const c=Le(u)&&u.resolutionChannel||a,f=this.unitView.getScaleResolution(c),l=n.rangeTextures.get(f);l&&i.push(()=>Ee(this.programInfo,{[Ga+a]:l}))}this.getSampleFacetMode()==Z0&&i.push(()=>{let a;for(const u of this.unitView.getAncestors())if(a=u.getSampleFacetTexture(),a)break;if(!a)throw new Error("No facet texture available. This is bug.");Ee(this.programInfo,{uSampleFacetTexture:a})});const o=((s=e.picking)!=null?s:!1)&&this.isPickingParticipant();return i.push(()=>D0(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:o})),this.opaque||e.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(e){const n=e.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(n&&r){const i=n.locSize?n.locSize.location:0,o=n.locSize?n.locSize.size:1;if(i>1||i+o<0)return!1;const s=n.targetLocSize?n.targetLocSize.location:i,a=n.targetLocSize?n.targetLocSize.size:o;this.gl.uniform4f(r.location,i,o,s,a)}return!0}render(e){}createRenderCallback(e,n){var f;const r=this;let i;const o=(f=this.unitView.getScaleResolution("x"))==null?void 0:f.getScale(),s=o&&Pe(o.type),a=["index","locus"].includes(o==null?void 0:o.type)?-1:0,u=[0,0];i=l=>{if(s&&l.xIndex){const h=o.domain(),p=l.xIndex(h[0]+a,h[1],u),d=p[0],g=p[1]-d;g>0&&e(d,g)}else e(l.offset,l.count)};const c=this.rangeMap.get(n.facetId);return n.sampleFacetRenderingOptions?function(){c.count&&r.prepareSampleFacetRendering(n)&&i(c)}:function(){c.count&&i(c)}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,s=this.glHelper.getLogicalCanvasSize(),a=.5,u=(o.xOffset||0)+a,c=(o.yOffset||0)+a;let f,l=e;if(o.clip||n){let h=0,p=0,d;n?(l=o.clip?e.intersect(n):n,d=[e.width/l.width,e.height/l.height],p=Math.max(0,e.y2-n.y2),h=Math.max(0,e.x2-n.x2)):d=[1,1];const g=[e.x,s.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(y=>y*r),A=g.map(y=>Math.floor(y)),[m,b]=g.map((y,w)=>y-A[w]);i.viewport(...A),i.scissor(...A),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(u+h+m)/l.width,-(c+p-b)/l.height],uViewScale:d}}else i.viewport(0,0,s.width*r,s.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+u)/s.width,(s.height-e.y-c-e.height)/s.height],uViewScale:[e.width/s.width,e.height/s.height]};return D0(this.viewUniformInfo,{...f,uViewportSize:[e.width,e.height],uDevicePixelRatio:this.glHelper.dpr}),S0(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(e,n){}}class aw extends Pt{constructor(){super([],JSON.stringify)}get(e){let n=super.get(e);return n===void 0&&(n={offset:0,count:0,xIndex:void 0},super.set(e,n)),n}migrateEntries(e){for(const[n,r]of e.entries())Object.assign(this.get(n),r)}}function Va(t,e){var o;const n=G1(e);let r=t[e]&&{...t[e]},i=t[n]&&{...t[n]};if(!(Ue(r)||Ue(i))){if(r){if(!Le(t[e]))return;if(i){if(r.type!="quantitative"){const s=(1-(r.band||1))/2;r.band=s,i.band=-s}}else if(r.type=="quantitative")i={datum:0};else{i={...r};const s=(1-((o=r.band)!=null?o:1))/2;r.band=0+s,i.band=1-s}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function K0(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke={resolutionChannel:"color",...t.color}),Ue(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity={resolutionChannel:"opacity",...t.opacity})}function q0(t,e){Ue(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill={resolutionChannel:"color",...t.color},!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity={resolutionChannel:"opacity",...t.opacity}:t.fillOpacity={value:0})}class uw extends Xr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1,tessellationZoomThreshold:10,tessellationTiles:35}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}get opaque(){return kn(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&Ue(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Va(e,"x"),Va(e,"y"),K0(e,this.properties.filled),q0(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}_isRoundedCorners(){return["","TopLeft","TopRight","BottomLeft","BottomRight"].map(e=>"cornerRadius"+e).some(e=>this.properties[e]>0)}_isStroked(){const e=this.encoding.strokeWidth;return!(Ue(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(Ib,Tb,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){var n,r,i,o;super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uMinSize:[e.minWidth,e.minHeight],uMinOpacity:e.minOpacity,uCornerRadii:[(n=e.cornerRadiusTopRight)!=null?n:e.cornerRadius,(r=e.cornerRadiusBottomRight)!=null?r:e.cornerRadius,(i=e.cornerRadiusTopLeft)!=null?i:e.cornerRadius,(o=e.cornerRadiusBottomLeft)!=null?o:e.cornerRadius]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new jb({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{Vr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,n){e=Ke(e);const r=this.encoders,i=this.unitView.getCollector().facetBatches.get(e),o=r.x.accessor,s=r.x2.accessor;if(i)return i.find(a=>n>=o(a)&&n<s(a))}}const cw=`/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform lowp float uMaxRelativePointDiameter;uniform float uScaleFactor;uniform float uMaxPointSize;uniform float uZoomLevel;uniform float uSemanticThreshold;flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}/***Computes a scaling factor for the points in a sample-faceted view.*/float getDownscaleFactor(vec2 pos){if(!isFacetedSamples()){return 1.0;}float sampleFacetHeight=getSampleFacetHeight(pos);float maxPointDiameter=sqrt(uMaxPointSize);float factor=sampleFacetHeight*uViewportSize.y*uMaxRelativePointDiameter;return clamp(0.0,maxPointDiameter,factor)/maxPointDiameter;}vec2 getDxDy(){
87
87
  #if defined(dx_DEFINED) || defined(dy_DEFINED)
88
88
  return vec2(getScaled_dx(),getScaled_dy())/uViewportSize;
89
89
  #else
90
90
  return vec2(0.0,0.0);
91
91
  #endif
92
- }void main(void){float semanticThresholdFactor=computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor*getDownscaleFactor(pos);float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=(diameter+padding)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,uw="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);uniform bool uInwardStroke;uniform float uGradientStrength;flat in float vRadius;flat in float vRadiusWithPadding;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in lowp float vShape;flat in lowp float vHalfStrokeWidth;flat in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float TRIANGLE_UP=2.0;const float CROSS=3.0;const float DIAMOND=4.0;const float TRIANGLE_DOWN=5.0;const float TRIANGLE_RIGHT=6.0;const float TRIANGLE_LEFT=7.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float equilateralTriangle(vec2 p,float r,bool flip,bool swap){if(swap){p.xy=p.yx;}if(flip){p.y=-p.y;}float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r,true,false);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_DOWN){d=equilateralTriangle(p,r,false,false);}else if(vShape==TRIANGLE_RIGHT){d=equilateralTriangle(p,r,false,true);}else if(vShape==TRIANGLE_LEFT){d=equilateralTriangle(p,r,true,true);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}",ut=1<<0,Ft=1<<1,cw={};class J{get behavior(){return 0}constructor(){this.children=[],this.parent=void 0,this.completed=!1}reset(){this.completed=!1;for(const e of this.children)e.reset()}initialize(){}_updatePropagator(){this._propagate=Function("children",Zn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
93
- `)+`return function propagate(datum) {${Zn(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
92
+ }void main(void){float semanticThresholdFactor=computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor*getDownscaleFactor(pos);float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=(diameter+padding)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,lw="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);uniform bool uInwardStroke;uniform float uGradientStrength;flat in float vRadius;flat in float vRadiusWithPadding;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in lowp float vShape;flat in lowp float vHalfStrokeWidth;flat in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float TRIANGLE_UP=2.0;const float CROSS=3.0;const float DIAMOND=4.0;const float TRIANGLE_DOWN=5.0;const float TRIANGLE_RIGHT=6.0;const float TRIANGLE_LEFT=7.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float equilateralTriangle(vec2 p,float r,bool flip,bool swap){if(swap){p.xy=p.yx;}if(flip){p.y=-p.y;}float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r,true,false);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_DOWN){d=equilateralTriangle(p,r,false,false);}else if(vShape==TRIANGLE_RIGHT){d=equilateralTriangle(p,r,false,true);}else if(vShape==TRIANGLE_LEFT){d=equilateralTriangle(p,r,true,true);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}",ut=1<<0,Ft=1<<1,fw={};class J{get behavior(){return 0}constructor(){this.children=[],this.parent=void 0,this.completed=!1}reset(){this.completed=!1;for(const e of this.children)e.reset()}initialize(){}_updatePropagator(){this._propagate=Function("children",Kn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
93
+ `)+`return function propagate(datum) {${Kn(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
94
94
  `)}}`)(this.children)}setParent(e){this.parent=e}addChild(e){if(e.parent)throw new Error("Cannot add the child! It already has a parent.");return this.children.push(e),e.setParent(this),this._updatePropagator(),this}adopt(e){e.parent&&e.parent.removeChild(e),this.addChild(e)}adoptChildrenOf(e){for(const n of e.children)this.adopt(n)}insertAsParent(e){if(this.isRoot())throw new Error("Cannot insert a new parent for a root node!");e.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=e,this.parent._updatePropagator(),this.parent=void 0,e.addChild(this)}removeChild(e){const n=this.children.indexOf(e);if(n>-1)this.children.splice(n,1),e.parent=void 0,this._updatePropagator();else throw new Error("Trying to remove an unknown child node!")}excise(){if(this.isRoot())throw new Error("Cannot excise root node!");if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){const e=this.children[0];e.setParent(this.parent),this.parent.children[this.parent.children.indexOf(this)]=e,this.parent._updatePropagator(),this.setParent(void 0),this.children.length=0}else throw new Error("Cannot excise a node that has multiple children!")}isRoot(){return!this.parent}isBranching(){return this.children.length>1}isTerminal(){return this.children.length==0}visit(e){e(this);for(const n of this.children)n.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){var r;const n=this.children.map(i=>i.subtreeToString(e+1)).join("");return" ".repeat(e*2)+"* "+((r=/^class ([A-Za-z0-9_]+)/.exec(""+this.constructor))==null?void 0:r[1])+`
95
- `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():cw}handle(e){this._propagate(e)}complete(){this.completed=!0;for(const e of this.children)e.complete()}beginBatch(e){for(const n of this.children)n.beginBatch(e)}_propagate(e){}}function q0(t){return t.type=="file"}function lw(t){return t.type=="facet"}class J0 extends J{constructor(e){super(),this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(const e of this.reservoir)this._propagate(e);super.complete()}}function fw(t,e,n){const r=new J0({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const hw={};class dw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,color:"#4c78a8",filled:!0,opacity:1,size:100,semanticScore:0,shape:"circle",strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"size","semanticScore","shape","strokeWidth","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getDefaultEncoding(){return{...super.getDefaultEncoding(),...hw}}fixEncoding(e){return Z0(e,this.properties.filled),K0(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();const e=this.unitView.getAccessor("semanticScore");e&&(this.sampledSemanticScores=Float32Array.from(fw(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(aw,uw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new jb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}_getMaxPointSize(){const e=this.encoders.size;return e.constant?e(null):e.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const n=this.sampledSemanticScores;return Iu(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Ee(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&jr(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}const pw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;uniform float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}",gw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;uniform float uDashTextureSize;uniform float uStrokeDashOffset;uniform lowp int uStrokeCap;flat in vec4 vColor;flat in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class mw extends Wr{constructor(e){super(e),this.dashTextureSize=0,Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){if(!(e.x&&e.y&&e.x2&&e.y2))if(e.x&&e.x2&&!e.y)e.y={value:.5},e.y2=e.y;else if(e.y&&e.y2&&!e.x)e.x={value:.5},e.x2=e.x;else if(e.x&&!e.y)e.y={value:0},e.y2={value:1},e.x2=e.x;else if(e.y&&!e.x)e.x={value:0},e.x2={value:1},e.y2=e.y;else if(e.x&&e.y&&e.y2)e.x2=e.x;else if(e.y&&e.x&&e.x2)e.y2=e.y;else if(e.y&&e.x)if(!e.x2&&Le(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Le(e.x)&&e.x.type=="quantitative")e.y2=e.y,e.x2={datum:0};else throw new Error("A bug!");else throw new Error("Invalid x and y encodings for rule mark: "+JSON.stringify(e));return e}async initializeGraphics(){if(await super.initializeGraphics(),this.properties.strokeDash){const e=this.gl,n=Aw(this.properties.strokeDash);this.dashTexture=Qr(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(pw,gw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uMinLength:e.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(e.strokeCap)})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Qb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return this.dashTexture&&n.push(()=>Ee(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>jr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function Aw(t){if(t.length==0||t.length%2||t.findIndex(o=>Math.round(o)!=o||o<1||o>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(t));const e=t.reduce((o,s)=>o+s),n=new Uint8Array(e);let r=!0,i=0;for(let o of t){for(;o;)n[i++]=r&&255||0,o--;r=!r}return n}const xw=`uniform float uSagittaScaleFactor;uniform float uMinSagittaLength;in vec2 strip;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 a=vec2(getScaled_x(),getScaled_y())*uViewportSize;vec2 b=vec2(getScaled_x2(),getScaled_y2())*uViewportSize;vec2 chordVector=b-a;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float sagitta=max(length(chordVector)/2.0*uSagittaScaleFactor,uMinSagittaLength);bool compress=false;if(compress){float maxSagittaLen=length(chordNormal*uViewportSize);float maxChordLen=length(unitChordVector*uViewportSize);float threshold=maxSagittaLen*0.5;if(sagitta>threshold){float m=(maxSagittaLen-threshold)/(maxChordLen-threshold);sagitta=(sagitta-threshold)*m+threshold;}}vec2 controlOffset=chordNormal*sagitta/0.75;vec2 p1=a;vec2 p2=a+controlOffset;vec2 p3=b+controlOffset;vec2 p4=b;float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);
95
+ `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():fw}handle(e){this._propagate(e)}complete(){this.completed=!0;for(const e of this.children)e.complete()}beginBatch(e){for(const n of this.children)n.beginBatch(e)}_propagate(e){}}function J0(t){return t.type=="file"}function hw(t){return t.type=="facet"}class _0 extends J{constructor(e){super(),this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(const e of this.reservoir)this._propagate(e);super.complete()}}function dw(t,e,n){const r=new _0({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const pw={};class gw extends Xr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,color:"#4c78a8",filled:!0,opacity:1,size:100,semanticScore:0,shape:"circle",strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"size","semanticScore","shape","strokeWidth","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getDefaultEncoding(){return{...super.getDefaultEncoding(),...pw}}fixEncoding(e){return K0(e,this.properties.filled),q0(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();const e=this.unitView.getAccessor("semanticScore");e&&(this.sampledSemanticScores=Float32Array.from(dw(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(cw,lw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Yb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}_getMaxPointSize(){const e=this.encoders.size;return e.constant?e(null):e.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const n=this.sampledSemanticScores;return Tu(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Ee(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&Vr(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}const mw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;uniform float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}",Aw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;uniform float uDashTextureSize;uniform float uStrokeDashOffset;uniform lowp int uStrokeCap;flat in vec4 vColor;flat in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class xw extends Xr{constructor(e){super(e),this.dashTextureSize=0,Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){if(!(e.x&&e.y&&e.x2&&e.y2))if(e.x&&e.x2&&!e.y)e.y={value:.5},e.y2=e.y;else if(e.y&&e.y2&&!e.x)e.x={value:.5},e.x2=e.x;else if(e.x&&!e.y)e.y={value:0},e.y2={value:1},e.x2=e.x;else if(e.y&&!e.x)e.x={value:0},e.x2={value:1},e.y2=e.y;else if(e.x&&e.y&&e.y2)e.x2=e.x;else if(e.y&&e.x&&e.x2)e.y2=e.y;else if(e.y&&e.x)if(!e.x2&&Le(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Le(e.x)&&e.x.type=="quantitative")e.y2=e.y,e.x2={datum:0};else throw new Error("A bug!");else throw new Error("Invalid x and y encodings for rule mark: "+JSON.stringify(e));return e}async initializeGraphics(){if(await super.initializeGraphics(),this.properties.strokeDash){const e=this.gl,n=yw(this.properties.strokeDash);this.dashTexture=jr(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(mw,Aw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uMinLength:e.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(e.strokeCap)})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Vb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return this.dashTexture&&n.push(()=>Ee(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Vr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function yw(t){if(t.length==0||t.length%2||t.findIndex(o=>Math.round(o)!=o||o<1||o>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(t));const e=t.reduce((o,s)=>o+s),n=new Uint8Array(e);let r=!0,i=0;for(let o of t){for(;o;)n[i++]=r&&255||0,o--;r=!r}return n}const bw=`uniform float uSagittaScaleFactor;uniform float uMinSagittaLength;in vec2 strip;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 a=vec2(getScaled_x(),getScaled_y())*uViewportSize;vec2 b=vec2(getScaled_x2(),getScaled_y2())*uViewportSize;vec2 chordVector=b-a;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float sagitta=max(length(chordVector)/2.0*uSagittaScaleFactor,uMinSagittaLength);bool compress=false;if(compress){float maxSagittaLen=length(chordNormal*uViewportSize);float maxChordLen=length(unitChordVector*uViewportSize);float threshold=maxSagittaLen*0.5;if(sagitta>threshold){float m=(maxSagittaLen-threshold)/(maxChordLen-threshold);sagitta=(sagitta-threshold)*m+threshold;}}vec2 controlOffset=chordNormal*sagitta/0.75;vec2 p1=a;vec2 p2=a+controlOffset;vec2 p3=b+controlOffset;vec2 p4=b;float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);
96
96
  #ifdef size2_DEFINED
97
97
  float mixedSize=mix(getScaled_size(),getScaled_size2(),t);
98
98
  #else
@@ -104,7 +104,7 @@ vec3 color=mix(getScaled_color(),getScaled_color2(),t);
104
104
  #else
105
105
  vec3 color=getScaled_color();
106
106
  #endif
107
- vColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}`,yw="in lowp vec4 vColor;in float vSize;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class bw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,sagittaScaleFactor:1,minSagittaLength:1.5}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","height","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){return e.x||(e.x2=e.x),e.y2||(e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(xw,yw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Vb({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:ww(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,s])=>[o,{...s,data:void 0}])),this.updateBufferInfo(i)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);for(const o of Object.entries(this.bufferInfo.attribs)){const[s,a]=o;a.buffer&&a.numComponents&&a.divisor&&(a.offset=r*this.arrays[s].numComponents*4)}Ln(n,this.programInfo,this.bufferInfo),jr(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function ww(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}const vw=`uniform float uSdfNumerator;uniform vec2 uD;in mediump vec2 vertexCoord;in lowp vec2 textureCoord;uniform vec4 uViewportEdgeFadeWidth;uniform vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;in float width;uniform ivec2 uAlign;
107
+ vColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}`,ww="in lowp vec4 vColor;in float vSize;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class vw extends Xr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,sagittaScaleFactor:1,minSagittaLength:1.5}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","height","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){return e.x||(e.x2=e.x),e.y2||(e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(bw,ww)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Wb({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:Cw(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,s])=>[o,{...s,data:void 0}])),this.updateBufferInfo(i)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);for(const o of Object.entries(this.bufferInfo.attribs)){const[s,a]=o;a.buffer&&a.numComponents&&a.divisor&&(a.offset=r*this.arrays[s].numComponents*4)}Ln(n,this.programInfo,this.bufferInfo),Vr(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function Cw(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}const Ew=`uniform float uSdfNumerator;uniform vec2 uD;in mediump vec2 vertexCoord;in lowp vec2 textureCoord;uniform vec4 uViewportEdgeFadeWidth;uniform vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;in float width;uniform ivec2 uAlign;
108
108
  #ifdef x2_DEFINED
109
109
  uniform float uPaddingX;uniform bool uFlushX;
110
110
  #endif
@@ -124,7 +124,7 @@ vec2 pos=applySampleFacet(vec2(x,y));
124
124
  #ifdef y2_DEFINED
125
125
  float y2=getScaled_y2();vec2 pos2=applySampleFacet(vec2(x,y2));if(uLogoLetter){size.y=(pos2.y-pos.y)*uViewportSize.y;pos.y+=(pos2.y-pos.y)/2.0;}else{RangeResult result=positionInsideRange(min(pos.y,pos2.y),max(pos.y,pos2.y),size.y*scale*flushSize.y/uViewportSize.y,uPaddingY/uViewportSize.y,align.y,uFlushY);pos.y=result.pos;scale*=result.scale;}
126
126
  #endif
127
- if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator);vColor=vec4(getScaled_color()*opacity,opacity);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,Cw="uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;flat in vec4 vColor;flat in float vSlope;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}void main(){vec3 c=texture(uTexture,vTexCoord).rgb;float sigDist=1.0-median(c.r,c.g,c.b);float opa=clamp((sigDist-0.5)*vSlope+0.5,0.0,1.0);opa*=pow(clamp(vEdgeFadeOpacity,0.0,1.0),2.2);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}",Ew={left:-1,center:0,right:1},Sw={top:-1,middle:0,bottom:1,alphabetic:1};class Dw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,x2:void 0,y2:void 0,text:"",size:11,color:"black",opacity:1,font:void 0,fontStyle:void 0,fontWeight:void 0,align:"center",baseline:"middle",dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0})),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont()}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(e){for(const n of Rr)this.properties.fitToBand&&ja(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(vw,Cw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[Ew[e.align],Sw[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSqueeze:!!e.squeeze,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getData(),r=this.encoding,i=this.encoders.text.accessor||this.encoders.text;let o=0;const s=r.text.format?se(r.text.format):c=>c;for(const c of n){const f=s(i(c)),l=Z(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new Yb({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});a.addBatches(e.facetBatches);const u=a.toArrays();this.rangeMap.migrateEntries(u.rangeMap),this.updateBufferInfo(u)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Ee(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>jr(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function _0(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let s=0,a=0;for(const d of t)s+=vo(d.px)+(Va(d)?0:n),a+=vo(d.grow);s-=n;const u=Math.max(0,e-s),c=r!==void 0?d=>Math.round(d*r)/r:d=>d,f=[],l=[],h=d=>{const g=f.length;if(!g)return;const A=(d?n:0)*(o?-1:1);p-=A;for(let m=0;m<g;m++)l.push({location:p+(m+1)/(g+1)*A,size:0});p+=A,f.length=0};let p=o?Math.max(e,s):0+i;if(t.length==1&&Va(t[0]))return[{location:p,size:0}];for(let d=0;d<t.length;d++){const g=t[d];if(Va(g))f.push(g);else{h(l.length>0);const A=vo(g.px)+(a?vo(g.grow)/a*u:0);o&&(p-=A),l.push({location:c(p),size:c(A)}),o?p-=n:p+=A+n}}return p+=o?n:-n,h(!1),l}function Bw(t){var r,i;let e=0,n=0;for(const o of t)e=Math.max(e,(r=o.px)!=null?r:0),n=Math.max(n,(i=o.grow)!=null?i:0);return{px:e,grow:n}}const su=class{constructor(e,n){pe(this,qr);this.width=e,this.height=n}addPadding(e){return ue(this,qr,uu).call(this,e.width,e.height)}subtractPadding(e){return ue(this,qr,uu).call(this,-e.width,-e.height)}};let tn=su;qr=new WeakSet,uu=function(e,n){var r,i;return new su({px:((r=this.width.px)!=null?r:0)+e,grow:this.width.grow},{px:((i=this.height.px)!=null?i:0)+n,grow:this.height.grow})};const Xr=Object.freeze({px:0,grow:0}),Fw=new tn(Xr,Xr);function Va(t){return!t.px&&!t.grow}function vo(t){return t||0}function Mw(t){return t&&(me(t.px)||me(t.grow))}function Iw(t){if(nh(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(Mw(t))return t;if(me(t))return{px:t,grow:0};if(t==="container")return{px:0,grow:1};if(!t)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${t}`)}class je{constructor(e,n,r,i){this.top=e||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(e){return e<=0?this:new je(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new je(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new je(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):Ya}static createFromRecord(e){return new je(e.top,e.right,e.bottom,e.left)}static zero(){return Ya}static createUniformPadding(e){return new je(e,e,e,e)}}const Ya=je.createUniformPadding(0);Object.freeze(Ya);const Tw=/^([A-Za-z]+:)?\/\//;function Pw(t,e){if(e&&Tw.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const $0="VISIT_SKIP",Zr="VISIT_STOP",eh=t=>t;class th{constructor(e,n,r,i){this.context=n,this.parent=r,this.name=e.name||i,this.spec=e,this.resolutions={scale:{},axis:{}},this._broadcastHandlers={},this._capturingInteractionEventListeners={},this._nonCapturingInteractionEventListeners={},j0(this),this.opacityFunction=eh,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>je.createFromConfig(this.spec.padding))}getOverhang(){return je.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Fw)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(nh(r)){const s=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let u=0;if(Wt(a.type))u=a.domain().length;else if(["locus","index"].includes(a.type)){const f=a.domain();u=Cn(f)-f[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const c=a;return u=js(u,c.paddingInner(),c.paddingOuter()),{px:u*s,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&Iw(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new tn(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){var e;return(e=this.spec.visible)!=null?e:!0}getEffectiveOpacity(){var e,n;return this.opacityFunction((n=(e=this.parent)==null?void 0:e.getEffectiveOpacity())!=null?n:1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const o of i[n.type]||[])o(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;let o=i[e];o||(o=[],i[e]=o),o.push(n)}visit(e){try{const n=e(this);if(e.postOrder&&e.postOrder(this),n!==Zr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===eh)&&(this.opacityFunction=Rw(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r={...e,...n};for(const[i,o]of Object.entries(r))o===null&&delete r[i];return r}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Pr(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=En(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return Pw(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return Z(e)?e:e.text}_cache(e,n){return kn(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":bo(this,e);break;case"ancestors":for(const r of this.getAncestors())bo(r,e);break;case"progeny":this.visit(r=>bo(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function Lw(t){return"unitsPerPixel"in t}function Rw(t){const e=t.spec.opacity;if(e!==void 0){if(me(e))return n=>n*e;if(Lw(e)){const n=o=>{var a;const s=(a=t.getScaleResolution(o))==null?void 0:a.getScale();if(["linear","index","locus"].includes(s==null?void 0:s.type))return s},r=e.channel?n(e.channel):n("x")||n("y");if(!r)throw new Error("Cannot find a resolved quantitative scale for dynamic opacity!");const i=ks().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const a=ui(r.domain())/1e3;return i(a)*o}}}return n=>n}const nh=t=>!!(t!=null&&t.step);class Nn extends th{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}*[Symbol.iterator](){}replaceChild(e,n){throw new Error("Not implemented")}visit(e){let n;try{n=e(this)}catch(r){throw r.view=this,r}if(n===Zr)return n;if(n!==$0){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Zr)return i}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){for(const n of this)if(n.name===e[0]){if(e.length==1)return n;if(n instanceof Nn)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}findDescendantByName(e){let n;return this.visit(r=>{if(r.name==e)return n=r,Zr}),n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){var r,i;return(i=(r=this.getConfiguredResolution(e,n))!=null?r:this.getConfiguredResolution("default",n))!=null?i:this.getDefaultResolution(e,n)}}function Co(t,e,n){if(n=n||[],t.some(s=>s===null)){if(t.every(s=>s===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(s,a)=>s===a||zn(s)&&zn(a)||zn(s)&&a===!0||s===!0&&ke(a),o=s=>{for(let a in s){const u=s[a];if(!n.includes(a)&&u!==void 0)if(r[a]!==void 0&&!i(r[a],u))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(s[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(zn(c))zn(u)&&(r[a]=Co([c,u],a));else if(zn(u)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=Co([{},u],a)}else r[a]=u}}};for(const s of t)o(s);return r}function zn(t){return ke(t)&&!Array.isArray(t)}/*!
127
+ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator);vColor=vec4(getScaled_color()*opacity,opacity);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,Sw="uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;flat in vec4 vColor;flat in float vSlope;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}void main(){vec3 c=texture(uTexture,vTexCoord).rgb;float sigDist=1.0-median(c.r,c.g,c.b);float opa=clamp((sigDist-0.5)*vSlope+0.5,0.0,1.0);opa*=pow(clamp(vEdgeFadeOpacity,0.0,1.0),2.2);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}",Dw={left:-1,center:0,right:1},Bw={top:-1,middle:0,bottom:1,alphabetic:1};class Fw extends Xr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,x2:void 0,y2:void 0,text:"",size:11,color:"black",opacity:1,font:void 0,fontStyle:void 0,fontWeight:void 0,align:"center",baseline:"middle",dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0})),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont()}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(e){for(const n of kr)this.properties.fitToBand&&Va(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Ew,Sw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[Dw[e.align],Bw[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSqueeze:!!e.squeeze,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getData(),r=this.encoding,i=this.encoders.text.accessor||this.encoders.text;let o=0;const s=r.text.format?se(r.text.format):c=>c;for(const c of n){const f=s(i(c)),l=Z(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new Xb({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});a.addBatches(e.facetBatches);const u=a.toArrays();this.rangeMap.migrateEntries(u.rangeMap),this.updateBufferInfo(u)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Ee(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Vr(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function $0(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let s=0,a=0;for(const d of t)s+=Co(d.px)+(Ya(d)?0:n),a+=Co(d.grow);s-=n;const u=Math.max(0,e-s),c=r!==void 0?d=>Math.round(d*r)/r:d=>d,f=[],l=[],h=d=>{const g=f.length;if(!g)return;const A=(d?n:0)*(o?-1:1);p-=A;for(let m=0;m<g;m++)l.push({location:p+(m+1)/(g+1)*A,size:0});p+=A,f.length=0};let p=o?Math.max(e,s):0+i;if(t.length==1&&Ya(t[0]))return[{location:p,size:0}];for(let d=0;d<t.length;d++){const g=t[d];if(Ya(g))f.push(g);else{h(l.length>0);const A=Co(g.px)+(a?Co(g.grow)/a*u:0);o&&(p-=A),l.push({location:c(p),size:c(A)}),o?p-=n:p+=A+n}}return p+=o?n:-n,h(!1),l}function Mw(t){var r,i;let e=0,n=0;for(const o of t)e=Math.max(e,(r=o.px)!=null?r:0),n=Math.max(n,(i=o.grow)!=null?i:0);return{px:e,grow:n}}const au=class{constructor(e,n){he(this,Jr);this.width=e,this.height=n}addPadding(e){return ue(this,Jr,cu).call(this,e.width,e.height)}subtractPadding(e){return ue(this,Jr,cu).call(this,-e.width,-e.height)}};let tn=au;Jr=new WeakSet,cu=function(e,n){var r,i;return new au({px:((r=this.width.px)!=null?r:0)+e,grow:this.width.grow},{px:((i=this.height.px)!=null?i:0)+n,grow:this.height.grow})};const Zr=Object.freeze({px:0,grow:0}),Iw=new tn(Zr,Zr);function Ya(t){return!t.px&&!t.grow}function Co(t){return t||0}function Tw(t){return t&&(me(t.px)||me(t.grow))}function Pw(t){if(rh(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(Tw(t))return t;if(me(t))return{px:t,grow:0};if(t==="container")return{px:0,grow:1};if(!t)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${t}`)}class je{constructor(e,n,r,i){this.top=e||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(e){return e<=0?this:new je(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new je(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new je(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):Wa}static createFromRecord(e){return new je(e.top,e.right,e.bottom,e.left)}static zero(){return Wa}static createUniformPadding(e){return new je(e,e,e,e)}}const Wa=je.createUniformPadding(0);Object.freeze(Wa);const Lw=/^([A-Za-z]+:)?\/\//;function Rw(t,e){if(e&&Lw.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const eh="VISIT_SKIP",Kr="VISIT_STOP",th=t=>t;class nh{constructor(e,n,r,i){this.context=n,this.parent=r,this.name=e.name||i,this.spec=e,this.resolutions={scale:{},axis:{}},this._broadcastHandlers={},this._capturingInteractionEventListeners={},this._nonCapturingInteractionEventListeners={},V0(this),this.opacityFunction=th,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>je.createFromConfig(this.spec.padding))}getOverhang(){return je.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Iw)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(rh(r)){const s=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let u=0;if(Wt(a.type))u=a.domain().length;else if(["locus","index"].includes(a.type)){const f=a.domain();u=Cn(f)-f[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const c=a;return u=Vs(u,c.paddingInner(),c.paddingOuter()),{px:u*s,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&Pw(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new tn(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){var e;return(e=this.spec.visible)!=null?e:!0}getEffectiveOpacity(){var e,n;return this.opacityFunction((n=(e=this.parent)==null?void 0:e.getEffectiveOpacity())!=null?n:1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const o of i[n.type]||[])o(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;let o=i[e];o||(o=[],i[e]=o),o.push(n)}visit(e){try{const n=e(this);if(e.postOrder&&e.postOrder(this),n!==Kr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===th)&&(this.opacityFunction=Nw(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r={...e,...n};for(const[i,o]of Object.entries(r))o===null&&delete r[i];return r}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Lr(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=En(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return Rw(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return Z(e)?e:e.text}_cache(e,n){return kn(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":wo(this,e);break;case"ancestors":for(const r of this.getAncestors())wo(r,e);break;case"progeny":this.visit(r=>wo(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function kw(t){return"unitsPerPixel"in t}function Nw(t){const e=t.spec.opacity;if(e!==void 0){if(me(e))return n=>n*e;if(kw(e)){const n=o=>{var a;const s=(a=t.getScaleResolution(o))==null?void 0:a.getScale();if(["linear","index","locus"].includes(s==null?void 0:s.type))return s},r=e.channel?n(e.channel):n("x")||n("y");if(!r)throw new Error("Cannot find a resolved quantitative scale for dynamic opacity!");const i=Ns().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const a=ci(r.domain())/1e3;return i(a)*o}}}return n=>n}const rh=t=>!!(t!=null&&t.step);class Nn extends nh{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}*[Symbol.iterator](){}replaceChild(e,n){throw new Error("Not implemented")}visit(e){let n;try{n=e(this)}catch(r){throw r.view=this,r}if(n===Kr)return n;if(n!==eh){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Kr)return i}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){for(const n of this)if(n.name===e[0]){if(e.length==1)return n;if(n instanceof Nn)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}findDescendantByName(e){let n;return this.visit(r=>{if(r.name==e)return n=r,Kr}),n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){var r,i;return(i=(r=this.getConfiguredResolution(e,n))!=null?r:this.getConfiguredResolution("default",n))!=null?i:this.getDefaultResolution(e,n)}}function Eo(t,e,n){if(n=n||[],t.some(s=>s===null)){if(t.every(s=>s===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(s,a)=>s===a||zn(s)&&zn(a)||zn(s)&&a===!0||s===!0&&ke(a),o=s=>{for(let a in s){const u=s[a];if(!n.includes(a)&&u!==void 0)if(r[a]!==void 0&&!i(r[a],u))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(s[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(zn(c))zn(u)&&(r[a]=Eo([c,u],a));else if(zn(u)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=Eo([{},u],a)}else r[a]=u}}};for(const s of t)o(s);return r}function zn(t){return ke(t)&&!Array.isArray(t)}/*!
128
128
  * Adapted from vega-encode:
129
129
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
130
130
  *
@@ -132,7 +132,7 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
132
132
  * All rights reserved.
133
133
  *
134
134
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
135
- */function rh(t,e,n){return me(e)&&n!=null&&(e=Math.min(e,~~(ui(t.domain())/n)||1)),ke(e)&&(e.step,e=e.interval),e}function ih(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(Ne(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(a){return a=t(a),i<=a&&a<=o}),n>0&&e.length>1){for(var s=[e[0],Ne(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,u){return!(u%2)});e.length<3&&(e=s)}return e}function kw(t,e){return t.bins?ih(t,Nw(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function Nw(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function zw(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?se(n):String;if(ql(t.type)){var i=Gw(n);r=t.bins?i:Ow(r,i)}return r}function Ow(t,e){return function(n){return t(n)?e(n):""}}function Gw(t){var e=ft(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return Uw(se(e),se(".1f")(1)[1])}else return se(e)}function Uw(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,s;if(i<0)return r;for(o=Hw(r,i),s=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function Hw(t,e){var n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}/*!
135
+ */function ih(t,e,n){return me(e)&&n!=null&&(e=Math.min(e,~~(ci(t.domain())/n)||1)),ke(e)&&(e.step,e=e.interval),e}function oh(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(Ne(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(a){return a=t(a),i<=a&&a<=o}),n>0&&e.length>1){for(var s=[e[0],Ne(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,u){return!(u%2)});e.length<3&&(e=s)}return e}function zw(t,e){return t.bins?oh(t,Ow(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function Ow(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function Gw(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?se(n):String;if(Jl(t.type)){var i=Hw(n);r=t.bins?i:Uw(r,i)}return r}function Uw(t,e){return function(n){return t(n)?e(n):""}}function Hw(t){var e=ft(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return Qw(se(e),se(".1f")(1)[1])}else return se(e)}function Qw(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,s;if(i<0)return r;for(o=jw(r,i),s=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function jw(t,e){var n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}/*!
136
136
  * Adapted from vega-encode:
137
137
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
138
138
  *
@@ -140,12 +140,12 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
140
140
  * All rights reserved.
141
141
  *
142
142
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
143
- */const Qw="locus",jw="index";var Vw=5;function Yw(t){const e=t.type;return!t.bins&&(e===bn||e===br||e===wr)}function oh(t){return Pe(t)&&![Ze,jw,Qw].includes(t)}function sh(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var Ww=li(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma","zoom","fp64","name"]);function ah(t,e,n){n=sh(n);for(const r in t)if(!Ww[r]){if(r==="padding"&&oh(e.type))continue;ge(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}ev(e,t,$w(e,t,qw(e,t,n)))}function Xw(t,e){const n=Zw(t),r=O(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return ah(t,i,e),i}function Zw(t){var e=t.type,n="",r;return e===Ze?Ze+"-"+bn:(Kw(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?Ze+"-":r===3?wn+"-":""),(n+e||bn).toLowerCase())}function Kw(t){const e=t.type;return Pe(e)&&e!==Ql&&e!==jl&&(t.scheme||t.range&&t.range.length&&t.range.every(Z))}function qw(t,e,n){if(!t.domain)return 0;n=sh(n);var r=Jw(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&Yw(t),a,u;return i?(oh(o)&&e.padding&&i[0]!==Ne(i)&&(i=_w(o,i,e.range,e.padding,e.exponent,e.constant)),(s||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(a=(i=i.slice()).length-1||1,s&&(i[0]>0&&(i[0]=0),i[a]<0&&(i[a]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[a]=e.domainMax),e.domainMid!=null&&(u=e.domainMid,(u<i[0]||u>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",u),i.splice(a,0,u))),t.domain(uh(o,i,n)),o===Ys&&t.unknown(e.domainImplicit?hs:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&rh(t,e.nice)||null),i.length):0}function Jw(t,e,n){return e?(t.domain(uh(t.type,e,n)),e.length):-1}function _w(t,e,n,r,i,o){var s=Math.abs(Ne(n)-n[0]),a=s/(s-2*r),u=t===bt?mu(e,null,a):t===wr?To(e,null,a,.5):t===br?To(e,null,a,i||1):t===Gi?ud(e,null,a,o||1):gu(e,null,a);return e=e.slice(),e[0]=u[0],e[e.length-1]=u[1],e}function uh(t,e,n){if(ql(t)){var r=Math.abs(e.reduce(function(i,o){return i+(o<0?-1:o>0?1:0)},0));r!==e.length&&n.warn("Log scale domain includes zero: "+ci(e))}return e}function $w(t,e,n){let r=e.bins;if(r&&!Me(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?Ne(i):r.stop,a=r.step;a||X("Scale bins parameter missing step property."),r=Zn(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Xs&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function ev(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=tv(r,e,n);else if(e.scheme&&(o=nv(r,e,n),ge(o))){if(t.interpolator)return t.interpolator(o);X(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Hi(r))return t.interpolator(Qi(Wa(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(Jl(e.interpolate,e.interpolateGamma)):ge(t.round)?t.round(i):ge(t.rangeRound)&&t.interpolate(i?xr:xt),o&&t.range(Wa(o,e.reverse))}function tv(t,e,n){t!==Wl&&t!==Ws&&X("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Ws?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*js(n,i,r)]}function nv(t,e,n){var r=e.schemeExtent,i,o;return Me(e.scheme)?o=Qi(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=Ks(i),o||X(`Unrecognized scheme name: ${e.scheme}`)),n=t===Yl?n+1:t===Xs?n-1:t===Vs||t===Vl?+e.schemeCount||Vw:n,Hi(t)?ch(o,r,e.reverse):ge(o)?fA(ch(o,r),n):t===Ys?o:o.slice(0,n)}function ch(t,e,n){return ge(t)&&(e||n)?lA(t,Wa(e||[0,1],n)):t}function Wa(t,e){return e?t.slice().reverse():t}const lh=se(",d");function rv(t,e){return t.chrom+":"+lh(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+lh(Math.ceil(e.pos))}const iv="https://genomespy.app/data/genomes/";class ov{constructor(e){if(this.config=e,!this.config.contigs&&typeof this.config.name!="string")throw new Error("No name has been defined for the genome assembly!");this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,this.config.contigs&&this.setChromSizes(this.config.contigs)}get name(){return this.config.name}async load(e){if(!this.config.contigs){this.config.baseUrl?this.baseUrl=/^http(s)?/.test(this.config.baseUrl)?this.config.baseUrl:e+"/"+this.config.baseUrl:this.baseUrl=iv;try{this.setChromSizes(sv(await Si({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}setChromSizes(e){let n=0;this.startByIndex=[0];for(let r=0;r<e.length;r++){this.startByIndex.push(n);const i=e[r].size,o={...e[r],continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(o);const s=o.name.replace(/^chr/i,"");for(const a of["chr"+s,"CHR"+s,"Chr"+s,o.number,""+o.number,s,o.name])this.cumulativeChromPositions.set(a,n),this.chromosomesByName.set(a,o);n+=o.size}this.totalSize=n}getExtent(){return[0,this.totalSize]}toContinuous(e,n){let r=this.cumulativeChromPositions.get(e);if(r===void 0)throw new Error("Unknown chromosome/contig: "+e);return r+ +n}toChromosome(e){if(e>=this.totalSize)return;e=Math.floor(e);const n=an(this.startByIndex,e)-1;if(n>0&&n<=this.chromosomes.length)return this.chromosomes[n-1]}toChromosomal(e){const n=this.toChromosome(e);if(!!n)return{chrom:n.name,pos:Math.floor(e)-n.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return rv(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i,o,s;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(s=r.pos)!=null?s:(o=this.chromosomesByName.get(r.chrom))==null?void 0:o.size)]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),s=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,s)]}}}function sv(t){return Bd(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function fh(t){return ke(t)&&"chrom"in t}function av(t){return t.every(fh)}class Kr extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof Kr&&e.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${e.type}`);for(const n of e)this.extend(n);return this}extendAllWithAccessor(e,n){for(const r of e)this.extend(n(r));return this}}class Xa extends Kr{constructor(){super(),this.type="quantitative"}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}}class hh extends Kr{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)?this:(this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this)}}class dh extends hh{constructor(){super(),this.type="nominal"}}class uv extends Kr{constructor(e){super();let n=0;for(let r=1;r<e.length;r++)n+=Math.sign(e[r]-e[r-1]);if(Math.abs(n)!=e.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(e));e.forEach(r=>this.push(r))}extend(e){if(this.includes(e))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const ph={quantitative:Xa,index:Xa,locus:Xa,nominal:dh,ordinal:hh};function gh(t,e){if(t=="quantitative"&&cv(e)){const n=new uv(e);return n.type=t,n}else if(ph[t]){const n=new ph[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function cv(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function lv(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}const mh="quantitative",Ah="ordinal",xh="nominal",yh="locus",fv="index";class hv{constructor(e){this.channel=e,this.members=[],this.type=null,this._zoomExtent=void 0,this._domainListeners=new Set,this.name=void 0,this._scale=void 0}addEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.add(n)}removeEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.delete(n)}_notifyDomainListeners(){for(const e of this._domainListeners.values())e({type:"domain",scaleResolution:this})}pushUnitView(e,n){var s;const r=oa(e,n),i=r.type,o=(s=r==null?void 0:r.scale)==null?void 0:s.name;if(o){if(this.name!==void 0&&o!=this.name)throw new Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!this.type)this.type=i;else if(i!==this.type&&!Nr(n))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${i}. Use "resolve: independent" for channel ${this.channel}`);this.members.push({view:e,channel:n})}isExplicitDomain(){return!!this.getConfiguredDomain()}_getMergedScaleProps(){return kn(this,"mergedScaleProps",()=>{const e=this.members.map(n=>oa(n.view,n.channel).scale).filter(n=>n!==void 0);return Co(e,"scale",["domain"])})}getScaleProps(){return kn(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n={...this._getDefaultScaleProperties(this.type),...e};n.type||(n.type=dv(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Wt(n.type)&&(n.domain=new dh),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),this.channel=="y"&&Wt(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),pv(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==yh?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>Nr(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>Nr(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){Q0(this,"scaleProps");const e=this.getScaleProps();ah(e,this._scale),Pe(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=Xw(e);return this._scale=n,_g(n)&&n.genome(this.getGenome()),Pe(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e,n;return(n=(e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))!=null?n:this.getDomain()}isZoomed(){return this.isZoomable()&&tf(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!Af(this.channel))return!1;const e=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(e)?!!this.getScaleProps().zoom:!1}zoom(e,n,r){if(!this.isZoomable())return!1;const i=this.getScale(),o=i.domain();let s=[...o],a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(a+=i.align()),i.type){case"linear":case"index":case"locus":s=od(s,r||0),s=gu(s,a,e);break;case"log":s=sd(s,r||0),s=mu(s,a,e);break;case"pow":case"sqrt":{const u=i;s=ad(s,r||0,u.exponent()),s=To(s,a,e,u.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=cd(s,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(u=>s[u]!=o[u])?(i.domain(s),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(ai(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(a=this.members[0])==null?void 0:a.view.context.animator,o=this.getScale(),s=o.domain();if(n>0&&s.length==2){const u=s[1]-s[0],c=s[0]+u/2,f=r[1]-r[0],l=r[0]+f/2,h=Al([c,0,u],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:lv,onUpdate:p=>{const[d,,g]=h(p);o.domain([d-g/2,d+g/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}resetZoom(){if(!this.isZoomable())throw new Error("Not a zoomable scale!");const e=this.getDomain(),n=this.getInitialDomain();return[0,1].some(r=>n[r]!=e[r])?(this._scale.domain(n),this._notifyDomainListeners(),!0):!1}getZoomLevel(){return this.isZoomable()?ui(this._zoomExtent)/ui(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(gv(n)&&Me(n.extent))return this.fromComplexInterval(n.extent);if(n)return e.type=="locus"?this.getGenome().getExtent():this._scale.domain()}_getDefaultScaleProperties(e){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),kr(n)?r.nice=!this.isExplicitDomain():qt(n)?r.scheme=e==xh?"tableau10":e==Ah?"blues":"viridis":Ki(n)?r.range=yf(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}getGenome(){var n;if(this.type!=="locus")return;const e=(n=this.members[0].view.context.genomeStore)==null?void 0:n.getGenome();if(!e)throw new Error("No genome has been defined!");return e}invertToComplex(e){const n=this.getScale();if("invert"in n){const r=n.invert(e);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(e){const n=this.getGenome();return n?n.toChromosomal(e):e}fromComplex(e){return fh(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&av(e)?this.getGenome().toContinuousInterval(e):e}_getViewPaths(){return this.members.map(e=>e.view.getPathString()).join(", ")}_reduceDomains(e){const n=this.members.map(e).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))}}function dv(t,e){if(e==fv||e==yh){if(Af(t))return e;throw new Error(`${t} does not support ${e} data type. Only positional channels do.`)}const n={x:["band","band","linear"],y:["band","band","linear"],size:[void 0,"point","linear"],opacity:[void 0,"point","linear"],fillOpacity:[void 0,"point","linear"],strokeOpacity:[void 0,"point","linear"],color:["ordinal","ordinal","linear"],fill:["ordinal","ordinal","linear"],stroke:["ordinal","ordinal","linear"],strokeWidth:[void 0,void 0,"linear"],shape:["ordinal","ordinal",void 0],dx:[void 0,void 0,"null"],dy:[void 0,void 0,"null"],angle:[void 0,void 0,"linear"]},i=["uniqueId","facetIndex","semanticScore","search","text","sample"].includes(t)?"null":n[t]?n[t][[xh,Ah,mh].indexOf(e)]:e==mh?"linear":"ordinal";if(i===void 0)throw new Error(`Channel "${t}" is not compatible with "${e}" data type. Use of a proper scale may be needed.`);return i}function pv(t,e){kr(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Pe(t.type)&&(t.clamp=!0)}function gv(t){return ke(t)}function Za(...t){for(const e of t)if(e!==void 0)return e}class mv{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=Cn(this.members))==null?void 0:e.view.getScaleResolution(this.channel)}pushUnitView(e,n){const r=e.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:e,channel:n})}getAxisProps(){return kn(this,"axisProps",()=>{const e=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return e.length>0&&e.some(n=>n===null)?null:Co(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=oa(o.view,o.channel);if(!Ue(s))return{member:o,explicitTitle:Za((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:Za(Pr(s)?s.field:void 0,sa(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(Nr(o.member.channel)&&!o.explicitTitle){const a=En(o.member.channel);return((s=n.find(u=>u.member.view==o.member.view&&u.member.channel==a))==null?void 0:s.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>Za(o.explicitTitle,o.implicitTitle)).filter(Z));return i.size?[...i].join(", "):null}}class bh extends th{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class nn extends Nn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(eu(o)||$a(o))return n.createView(o,this,"layer"+s);throw new Error("LayerView accepts only unit or layer specs as children!")})}*[Symbol.iterator](){for(const e of this.children)yield e}render(e,n,r={}){if(!!this.isVisible()){e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(e),!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}}class wh{constructor(e,n){this.n=e,this.maxCols=n!=null?n:1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const o=[];e.push(o);for(let s=0;s<n;s++){const a=i*n+s;a<this.n&&o.push(a)}}return e}get colIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const o=[];e.push(o);for(let s=0;s<r;s++){const a=s*n+i;a<this.n&&o.push(a)}}return e}getCellIndex(e,n){let r=0;if(this.maxCols==1/0)r=n==0?e:void 0;else{if(e>=this.maxCols)return;r=n*this.nCols+e}return r<this.n?r:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}function ct(t){return()=>t}const lt=class{static create(e,n,r,i){return new lt(ct(e),ct(n),ct(r),ct(i))}_offset(e,n){const r=this["_"+e];if(n===0)return r;switch(typeof n){case"number":return()=>r()+n;case"function":return()=>r()+n();default:throw new Error("Not a number of function")}}_passThrough(e){return this._offset(e,0)}constructor(e,n,r,i){this._x=e,this._y=n,this._width=r,this._height=i}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(e){return e?this===e||this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height:!1}modify(e){if(!Object.keys(e).length)return this;const n=r=>{const i=e[r];return typeof i=="number"?ct(i):typeof i=="function"?i:this._passThrough(r)};return new lt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new lt(this._offset("x",e),this._offset("y",n),this._passThrough("width"),this._passThrough("height"))}translateBy(e){return this.translate(e.x,e.y)}expand(e,n=1){return e.left==0&&e.top==0&&e.right==0&&e.bottom==0?this:new lt(e.left?this._offset("x",-e.left*n):this._passThrough("x"),e.top?this._offset("y",-e.top*n):this._passThrough("y"),e.width?this._offset("width",e.width*n):this._passThrough("width"),e.height?this._offset("height",e.height*n):this._passThrough("height"))}shrink(e){return this.expand(e,-1)}intersect(e){return this===e?this:new lt(()=>Math.max(this.x,e.x),()=>Math.max(this.y,e.y),()=>Math.min(this.x2,e.x2)-Math.max(this.x,e.x),()=>Math.min(this.y2,e.y2)-Math.max(this.y,e.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new lt(ct(this.x),ct(this.y),ct(this.width),ct(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let On=lt;Kh(On,"ZERO",lt.create(0,0,0,0));function Av(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class Gn extends J{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function vh(t){var n,r;const e={...t.format};if((n=e.type)!=null||(e.type=wv(t)&&xv(t.url)),(r=e.parse)!=null||(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function xv(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const Eo=t=>typeof t!="object"?yv:bv,yv=t=>({data:t}),bv=t=>t;function wv(t){return"url"in t}function vv(t){return"dynamicCallbackSource"in t}class Ch extends Gn{constructor(e){super(),this.callback=e}loadSynchronously(){if(!this.callback)return;const e=this.callback();if(!e||typeof e[Symbol.iterator]!="function")throw new Error("Dynamic data callback didn't return iterable data!");this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=Eo(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const Eh="chromosome_ticks_and_labels",Sh={x:"width",y:"height"};function Ka(t){return t=="x"?"y":"x"}const qa={x:["bottom","top"],y:["left","right"]},Dh=Object.fromEntries(Object.entries(qa).map(([t,e])=>e.map(n=>[n,t])).flat(1));function rn(t){return Dh[t]}class Cv extends nn{constructor(e,n,r,i){const o=n=="locus",s={...o?Dv:Bh,...Sv(n,e),...e};if(super(o?Bv(s):Fh(s),r,i,`axis_${e.orient}`),this.axisProps=s,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new Ch(()=>this.ticks),o){const a=rn(this.axisProps.orient),u=this.getScaleResolution(a).getGenome();this.findChildByName(Eh).getDynamicDataSource=()=>new Ch(()=>u.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return Dh[this.axisProps.orient]=="x"?new tn(n,e):new tn(e,n)}getPerpendicularSize(){return Ja(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=rn(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(tf(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=Ev(this.axisProps,n,this.axisLength,i);o!==i&&(this.ticks=o,this.tickSource.loadSynchronously()),this.axisUpdateRequested=!1}onBeforeRender(){super.onBeforeRender(),this._updateAxisData()}render(e,n,r={}){!this.isVisible()||(this.axisLength=n[Sh[rn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function Ja(t){const e=rn(t.orient);let n=t.ticks&&t.tickSize||0;return t.labels&&(n+=t.labelPadding,e=="x"?n+=t.labelFontSize:n+=30),t.title&&(n+=t.titlePadding+t.titleFontSize),n=Math.min(t.maxExtent||1/0,Math.max(t.minExtent||0,n)),n}function Ev(t,e,n,r=[]){const i=a=>25+60*Av(100,700,a);let o=me(t.tickCount)?t.tickCount:Math.round(n/i(n));o=rh(e,o,t.tickMinStep);const s=t.values?ih(e,t.values,o):kw(e,o);if(mA(s,r,a=>a,a=>a.value))return r;{const a=zw(e,o,t.format);return s.map(u=>({value:u,label:a(u)}))}}const Bh={values:null,minExtent:20,maxExtent:1/0,offset:0,domain:!0,domainWidth:1,domainColor:"gray",domainDash:null,domainDashOffset:0,domainCap:"square",ticks:!0,tickSize:5,tickWidth:1,tickColor:"gray",tickDash:null,tickDashOffset:0,tickCap:"square",tickCount:null,tickMinStep:null,labels:!0,labelAlign:"center",labelBaseline:"middle",labelPadding:4,labelFontSize:10,labelLimit:180,labelColor:"black",format:null,titleColor:"black",titleFont:"sans-serif",titleFontSize:10,titlePadding:3};function Sv(t,e){var a;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",s=(a=e.labelAngle)!=null?a:(n=="top"||n=="bottom")&&r?-90:0;switch(n){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(s)>30?(i=s>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:s,labelBaseline:o}}function Fh(t){const e={...t,extent:Ja(t)},n=rn(e.orient),r=Ka(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,s=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),a=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[r+"Offset"]:(e.tickSize+e.labelPadding)*i,[r]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),u=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),c=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:e.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(e.orient)],text:e.title,color:e.titleColor,[n]:.5,[r]:1-o}}),f=()=>{const h={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&h.layer.push(u()),e.labels&&h.layer.push(a()),h},l={[Sh[Ka(rn(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(s()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(c()),l}const Dv={...Bh,chromTicks:!0,chromTickSize:18,chromTickWidth:1,chromTickColor:"#989898",chromTickDash:[4,2],chromTickDashOffset:1,chromLabels:!0,chromLabelFontSize:13,chromLabelFontWeight:"normal",chromLabelFontStyle:"normal",chromLabelColor:"black",chromLabelAlign:"left",chromLabelPadding:7};function Bv(t){const e={...t,extent:Ja(t)},n=rn(e.orient),r=Ka(n),i=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[r]:i,[r+"2"]:i-e.chromTickSize/e.extent*(i?1:-1),color:t.chromTickColor,size:e.chromTickWidth}}),s=()=>{let c;switch(e.orient){case"top":c={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":c={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":c={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":c={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:c={}}return{name:"chromosome_labels",mark:{type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,...c},encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let a;switch(e.orient){case"bottom":case"top":a={};break;case"left":a={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":a={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:a={}}const u=Fh({...t,...a});if(t.chromTicks||t.chromLabels){const c={name:Eh,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&c.layer.push(o()),t.chromLabels){c.layer.push(s());let f;u.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(h=>h.name=="labels").forEach(h=>{f=h.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}u.layer.push(c)}return u}const Mh={anchor:"middle",frame:"group",offset:10,orient:"top",align:void 0,angle:0,baseline:"alphabetic",dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:"normal",fontWeight:"normal"},Fv={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},Mv={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},Iv={start:0,middle:.5,end:1},Tv={start:"left",middle:"center",end:"right"};function Pv(t){var c,f,l;if(!t)return;const e=Z(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n=(c={"track-title":Fv,overlay:Mv}[e.style])!=null?c:{},r={...Mh,...n,...e};let i={},o={x:0,y:0};const s=Iv[(f=r.anchor)!=null?f:"middle"];switch(r.orient){case"top":o={x:s,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-s},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:s,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:s},i={baseline:"alphabetic",angle:-90};break}const a={...Mh,...i,...n,...e},u={xOffset:0,yOffset:0};switch(r.orient){case"top":u.yOffset=-a.offset;break;case"right":u.xOffset=a.offset;break;case"bottom":u.yOffset=a.offset;break;case"left":u.xOffset=-a.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...u,text:a.text,align:(l=a.align)!=null?l:Tv[a.anchor],angle:a.angle,baseline:a.baseline,dx:a.dx,dy:a.dy,color:a.color,font:a.font,size:a.fontSize,fontStyle:a.fontStyle,fontWeight:a.fontWeight}}}function Lv(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:s,y:a}=t.point;if(r){const u=r.mark.encoders;u.x&&!u.x2&&(s=+u.x(r.datum)*e.width+e.x),u.y&&!u.y2&&(a=(1-+u.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:a,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:s,y:a,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})}else if(t.type=="mousedown"&&t.uiEvent.button===0){const i=t.uiEvent;i.preventDefault();let o=i;const s=u=>{n({x:o.clientX,y:o.clientY,xDelta:u.clientX-o.clientX,yDelta:u.clientY-o.clientY,zDelta:0}),o=u},a=u=>{document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",a)};document.addEventListener("mouseup",a,!1),document.addEventListener("mousemove",s,!1)}}class Ih extends Nn{constructor(n,r,i,o,s){var a;super(n,r,i,o);pe(this,Jr);pe(this,$e);pe(this,Do);pe(this,Bo);pe(this,on);pe(this,_r);pe(this,$r);pe(this,ei);pe(this,Fo);pe(this,Un,1/0);pe(this,Hn,10);pe(this,Re,[]);pe(this,Qn,0);this.spec=n,ti(this,Hn,(a=n.spacing)!=null?a:10),ti(this,Un,s),ti(this,Re,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){var r;(r=n.parent)!=null||(n.parent=this),W(this,Re).push(ue(this,Jr,cu).call(this,n)),qh(this,Qn)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=W(this,Re).findIndex(o=>o.view==n);if(i>=0)W(this,Re)[i]=ue(this,Jr,cu).call(this,r);else throw new Error("Not my child view!")}get children(){return W(this,Re).map(n=>n.view)}get childCount(){return W(this,Re).length}onScalesResolved(){super.onScalesResolved(),ue(this,Bo,_h).call(this)}*[Symbol.iterator](){for(const n of W(this,Re)){n.background&&(yield n.background);for(const r of Object.values(n.axes))r&&(yield r);yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=ue(this,on,ni).call(this,"column"),r=ue(this,on,ni).call(this,"row");return!n.length||!r.length?je.zero():new je(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new tn(ue(this,$r,fu).call(this,"column"),ue(this,$r,fu).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){var c;if(!this.isVisible())return;r=r.shrink(this.getPadding()),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},s=_0(ue(this,_r,lu).call(this,"column"),r.width,o),a=_0(ue(this,_r,lu).call(this,"row"),r.height,o),u=new wh(W(this,$e,Mt).length,(c=W(this,Un))!=null?c:1/0);for(const[f,l]of W(this,$e,Mt).entries()){const{view:h,axes:p,background:d,title:g}=l,[A,m]=u.getCellCoords(f),b=s[ue(this,ei,hu).call(this,"column",A)],y=a[ue(this,ei,hu).call(this,"row",m)],w=h.getSize(),E=h.getPadding().subtract(h.getOverhang()),C=b.location+E.left,B=y.location+E.top,I=(w.width.grow?b.size:w.width.px)-E.width,P=(w.height.grow?y.size:w.height.px)-E.height,U=new On(()=>r.x+C,()=>r.y+B,()=>I,()=>P);l.coords=U,d==null||d.render(n,U,i);const M=Nv(h);M&&h.render(n,U,i);for(const[ve,oe]of Object.entries(p)){const Se=oe.axisProps;let et;const De=oe.getPerpendicularSize();ve=="bottom"?et=U.translate(0,U.height+Se.offset).modify({height:De}):ve=="top"?et=U.translate(0,-De-Se.offset).modify({height:De}):ve=="left"?et=U.translate(-De-Se.offset,0).modify({width:De}):ve=="right"&&(et=U.translate(U.width+Se.offset,0).modify({width:De})),oe.render(n,et)}M||h.render(n,U,i),g==null||g.render(n,U,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=W(this,$e,Mt).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof we||i instanceof nn)&&Lv(n,r.coords,o=>ue(this,Fo,$h).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}Un=new WeakMap,Hn=new WeakMap,Re=new WeakMap,Qn=new WeakMap,Jr=new WeakSet,cu=function(n){var i;const r={view:n,background:void 0,axes:{},coords:On.ZERO};if(n instanceof we||n instanceof nn){const o=(i=n.spec)==null?void 0:i.view;if((o==null?void 0:o.fill)||(o==null?void 0:o.stroke)){const a=new we(Rv(o),this.context,n,"background"+W(this,Qn));a.blockEncodingInheritance=!0,r.background=a}const s=Pv(n.spec.title);if(s){const a=new we(s,this.context,n,"title"+W(this,Qn));a.blockEncodingInheritance=!0,r.title=a}}return r},$e=new WeakSet,Mt=function(){return W(this,Re).filter(n=>n.view.isVisible())},Do=new WeakSet,Jh=function(){var n;return new wh(W(this,$e,Mt).length,(n=W(this,Un))!=null?n:1/0)},Bo=new WeakSet,_h=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of W(this,Re)){const{view:r,axes:i}=n,o=(s,a,u)=>{var f;const c=s.getAxisProps();if(c!==null){if(!c.orient){for(const l of qa[a])if(!i[l]){c.orient=l;break}if(!c.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if((f=c.title)!=null||(c.title=s.getTitle()),!qa[a].includes(c.orient))throw new Error(`Invalid axis orientation "${c.orient}" on channel "${a}"!`);if(i[c.orient])throw new Error(`An axis with the orient "${c.orient}" already exists!`);i[c.orient]=new Cv(c,s.scaleResolution.type,this.context,u)}};if(r instanceof we||r instanceof nn)for(const s of["x","y"]){const a=r.resolutions.axis[s];!a||o(a,s,r)}if(r instanceof nn){for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&c.orient&&o(u,a,s)}for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&!c.orient&&o(u,a,s)}}}},on=new WeakSet,ni=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(s,a)=>s.map(u=>{const c=W(this,$e,Mt)[u].axes[r[a]];if(c)return Math.max(c.getPerpendicularSize()+c.axisProps.offset,0);const f=W(this,$e,Mt)[u].view.getOverhang();return n=="column"?a?f.right:f.left:a?f.bottom:f.top}).reduce((u,c)=>Math.max(u,c),0);return W(this,Do,Jh)[n=="column"?"colIndices":"rowIndices"].map(s=>({axisBefore:o(s,0),axisAfter:o(s,1),view:Bw(s.map(a=>W(this,$e,Mt)[a].view.getSize()[i]))}))},_r=new WeakSet,lu=function(n){const r=ue(this,on,ni).call(this,n),i=[];i.push(Xr);for(const[o,s]of r.entries())o>0&&i.push({px:W(this,Hn),grow:0}),(o==0||this.wrappingFacet)&&i.push(Xr),i.push({px:s.axisBefore,grow:0}),i.push(s.view),i.push({px:s.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(Xr);return i},$r=new WeakSet,fu=function(n){var s,a;let r=0,i=0;const o=ue(this,on,ni).call(this,n);for(const[u,c]of o.entries())u>0&&(i+=W(this,Hn)),(u==0||this.wrappingFacet)&&(i+=0),i+=c.axisBefore,i+=(s=c.view.px)!=null?s:0,r+=(a=c.view.grow)!=null?a:0,i+=c.axisAfter,(u==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},ei=new WeakSet,hu=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Fo=new WeakSet,$h=function(n,r,i){for(const[o,s]of Object.entries(kv(r))){if(s.size<=0)continue;const a=n.normalizePoint(i.x,i.y),u=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),c={x:u.x-a.x,y:u.y-a.y};for(const f of s)f.zoom(2**i.zDelta,o=="y"?1-a[o]:a[o],o=="x"?c.x:-c.y)}this.context.animator.requestRender()};function Rv(t){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:t.fill?1:0,...t,type:"rect",clip:!1,tooltip:null}}}function kv(t){const e={x:new Set,y:new Set};return t.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e}function Nv(t){let e=!0;return t.visit(n=>{n instanceof we&&e&&(e=n.mark.properties.clip)}),e}class _a extends Ih{constructor(e,n,r,i){super(e,n,r,i,nu(e)?e.columns:tu(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=nu(e)?e.concat:tu(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class zv{constructor(){this.types=[];const e=n=>(r,i,o,s)=>{var a;return new n(r,i,o,(a=r.name)!=null?a:s)};this.addViewType(Ov,e(bh)),this.addViewType(eu,e(nn)),this.addViewType($a,e(we)),this.addViewType(tu,e(_a)),this.addViewType(Gv,e(_a)),this.addViewType(nu,e(_a))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(s=>s.specGuard(e));if(o)return o.factory(e,n,r,i!=null?i:"unnamed");throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const n=this.types.filter(r=>r.specGuard(e));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}}function $a(t){return"mark"in t&&(Z(t.mark)||ke(t.mark))}function eu(t){return"layer"in t&&ke(t.layer)}function Th(t){return t&&($a(t)||eu(t))&&"aggregateSamples"in t}function Ov(t){return"import"in t}function tu(t){return"vconcat"in t&&Me(t.vconcat)}function Gv(t){return"hconcat"in t&&Me(t.hconcat)}function nu(t){return"concat"in t&&Me(t.concat)}const Uv={point:dw,rect:sw,rule:mw,link:bw,text:Dw};class we extends Nn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=Uv[this.getMarkType()];if(o)this.mark=new o(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.sampleAggregateViews=[],this._initializeAggregateViews(),this.coords=void 0}*[Symbol.iterator](){for(const e of this.sampleAggregateViews)yield e}replaceChild(e,n){const r=this.sampleAggregateViews.indexOf(e);if(r>=0)this.sampleAggregateViews[r]=n;else throw new Error("Not my child view!")}render(e,n,r={}){!this.isVisible()||(this.coords=n,e.pushView(this,n),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(e){var r;const n=this.mark.encoding;for(const[i,o]of Object.entries(n)){if(!Le(o))continue;let s=En((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!kr(s))continue;let a=this;for(;a.parent instanceof Nn&&["shared","excluded"].includes(a.parent.getConfiguredOrDefaultResolution(s,e))&&a.getConfiguredOrDefaultResolution(s,e)!="excluded";)a=a.parent;a.resolutions[e][s]||(a.resolutions[e][s]=e=="scale"?new hv(s):new mv(s)),kr(i)?a.resolutions[e][s].pushUnitView(this,i):e=="scale"&&a.resolutions[e][s].pushUnitView(this,i)}}getAccessor(e){return this._cache("accessor/"+e,()=>{const n=this.mark.encoding;if(n&&n[e])return this.context.accessorFactory.createAccessor(n[e])})}getFacetAccessor(e){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(e){if(Nr(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Le(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){var i,o;const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const s=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return gh((o=n.type)!=null?o:"nominal",s.fromComplexInterval(r))}}extractDataDomain(e){var a;const r=(a=this._validateDomainQuery(e).type)!=null?a:"nominal",i=u=>{let c;const f=this.mark.encoding[u];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(c=gh(r),l.constant)c.extend(l({}));else{const h=this.getCollector();h!=null&&h.completed&&h.visitData(p=>c.extend(l(p)))}}return c};let o=i(e);const s=aa[e];if(s){const u=i(s);u&&o.extendAll(u)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return Rr.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(Th(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&Cn(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding={...(n=r.encoding)!=null?n:{},sample:null};const o=this.context.createView(r,this,"summaryView");o.getFacetFields=s=>{},this.sampleAggregateViews.push(o)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*ru(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of ru(r,[...e,n]))yield i;else yield[[...e,n],r]}class iu extends J{constructor(e){super(),this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Pt([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){lw(e)&&(this._data=[],this.facetBatches.set(Ke(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?Au(e.field,e.order):void 0,r=s=>{n&&s.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const s=this.params.groupby.map(u=>H(u)),a=hi(this._data,...s);this.facetBatches.clear();for(const[u,c]of ru(a))this.facetBatches.set(u,c)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const[s,a]of this.facetBatches.entries()){if(s){const u={type:"facet",facetId:s};for(const c of this.children)c.beginBatch(u)}for(const u of a)this._propagate(u)}super.complete();for(const s of this.observers)s(this)}getData(){switch(this._checkStatus(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const r of e.values())for(let i=0;i<r.length;i++)yield r[i]}}}}}visitData(e){this._checkStatus();for(const n of this.facetBatches.values())for(let r=0;r<n.length;r++)e(n[r])}getItemCount(){let e=0;for(const n of this.facetBatches.values())e+=n.length;return e}_checkStatus(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}}class So{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(;r>0;){const i=r-1>>1,o=this.values[i];if(n>=o)break;this.ids[r]=this.ids[i],this.values[r]=o,r=i}this.ids[r]=e,this.values[r]=n}pop(){if(this.length===0)return;const e=this.ids[0];if(this.length--,this.length>0){const n=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let o=0;for(;o<i;){let s=(o<<1)+1;const a=s+1;let u=this.ids[s],c=this.values[s];const f=this.values[a];if(a<this.length&&f<c&&(s=a,u=this.ids[a],c=f),c>=r)break;this.ids[o]=u,this.values[o]=c,o=s}this.ids[o]=n,this.values[o]=r}return e}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}}class Hv extends J{get behavior(){return ut}constructor(e){super(),this.params=e,this.startAccessor=H(e.start),this.endAccessor=H(e.end),this.chromAccessor=e.chrom?H(e.chrom):n=>{},this.weightAccessor=e.weight?H(e.weight):n=>1,this.as={coverage:e.as||"coverage",start:e.asStart||e.start,end:e.asEnd||e.end,chrom:e.asChrom||e.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([n,r])=>r).map(([n,r])=>`${JSON.stringify(r)}: ${n}`).join(", ")+"};"),this.ends=new So}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,o=this.endAccessor,s=this.chromAccessor,a=this.weightAccessor;let u,c,f,l=0,h;const p=this.ends;p.clear();const d=(A,m,b)=>{if(A==m)return;let y=!1;u&&(u[e]===b?(u[n]=m,y=!0):u[e]!=0&&this._propagate(u)),y||(u=this.createSegment(A,m,b,f))},g=()=>{let A;for(;(A=p.peekValue())!==void 0;)d(h,A,l),h=A,l-=p.pop();h=void 0,u&&(this._propagate(u),u=void 0)};this.handle=A=>{const m=i(A);let b;for(;(b=p.peekValue())!==void 0&&b<m;)d(h,b,l),h=b,l-=p.pop();if(r){let w=s(A);w!==c&&(g(),f=w,c=f)}h!==void 0&&d(h,m,l),h=m;const y=a(A);l+=y,p.push(y,o(A))},this.complete=()=>{g(),super.complete()}}}function Qv(t,e,n=0,r=t.length){const i=new So,o=r-n;let s;for(s=0;s<e&&s<o;s++)i.push(s,t[n+s]);for(;s<o;s++){const c=t[n+s];c>=i.peekValue()&&(i.push(s,c),i.pop())}const a=[];let u;for(;(u=i.pop())!==void 0;)a.push(n+u);return a.reverse()}class jv{constructor(e,n=-1/0,r=1/0){this.maxSize=e,this.lowerLimit=n,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(e,n,r=0){if(e>=this.lowerLimits[r]&&n<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const o=this._findSlot(e,n,i);return o>=0?o:this._findSlot(e,n,this.upperChildren[r])}else return r}else return-1}reserve(e,n){if(n-e<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(e,n);if(r<0)return!1;const i=this.n++,o=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[o]=n,this.upperLimits[o]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=o,!0}}class Vv extends J{constructor(e,n){var i,o;if(super(),this.params=e,this._data=[],this.channel=(i=e.channel)!=null?i:"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=H(this.params.pos),this.posBisector=fi(this.posAccessor),this.scoreAccessor=H(this.params.score),this.widthAccessor=H(this.params.width),this.laneAccessor=this.params.lane?H(this.params.lane):s=>0,this.padding=(o=this.params.padding)!=null?o:0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",s=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const e=this.posAccessor;this._data.sort((n,r)=>e(n)-e(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new jv(200));this.schedule(),super.complete()}_filterAndPropagate(){var s;super.reset();const e=this.resolution.getScale(),n=(s=this.resolution.members[0].view.coords)==null?void 0:s[this.channel=="x"?"width":"height"];if(!n)return;for(const a of this.reservationMaps.values())a.reset();const r=e.domain(),i=70,o=Qv(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of o){const u=this._data[a],c=e(this.posAccessor(u))*n,f=this.widthAccessor(u)/2+this.padding;this.reservationMaps.get(this.laneAccessor(u)).reserve(c-f,c+f)&&this._propagate(u)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class Yv extends J{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=ia(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const Wv="0".charCodeAt(0);function*Xv(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const o=t.charCodeAt(i);o==n?(yield r,r=0):r=r*10+o-Wv}yield r}class Zv extends J{get behavior(){return ut}constructor(e){var s,a;super();const n=H((s=e.exons)!=null?s:"exons"),r=H((a=e.start)!=null?a:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=u=>{let c=r(u),f=c,l=!0;const h=n(u);for(const p of Xv(h)){if(l)f=c+p;else{c=f+p;const d=Object.assign({},u);d[i]=f,d[o]=c,this._propagate(d)}l=!l}}}}class Kv extends J{get behavior(){return ut}constructor(e){super();const n=Ke(e.field).map(o=>H(o)),r=Ke(e.separator),i=Ke(e.as||e.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{if(n.some(u=>!u(o)))return;const s=n.map((u,c)=>u(o).split(r[c]));qv(s,o);const a=s[0].length;for(let u=0;u<a;u++){const c=Object.assign({},o);for(let f=0;f<n.length;f++)c[i[f]]=s[f][u];this._propagate(c)}}}}function qv(t,e){const n=t.map(r=>r.length);if(!n.every(r=>r==n[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(e))}class Jv extends J{get behavior(){return Ft}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=ia(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Ph extends J{get behavior(){return Ft}constructor(e,n){var d;super();const r=(d=e.channel)!=null?d:"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=H(e.chrom),s=Ke(e.pos).map(g=>H(g)),a=Ke(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const u=Ke(e.offset);let c;if(u.length==0)c=new Array(s.length).fill(0);else if(u.length==1)c=new Array(s.length).fill(u[0]);else if(u.length==s.length)c=u;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",a.map((g,A)=>`datum[${JSON.stringify(g)}] = chromOffset + +posAccessors[${A}](datum) - ${c[A]};`).join(`
144
- `));let l,h=0;const p=g=>{if(g!==l){if(h=i.cumulativeChromPositions.get(g),h===void 0)throw new Error("Unknown chromosome/contig: "+g);l=g}return h};this.handle=g=>{f(g,p(o(g)),s),this._propagate(g)}}}const Lh={pages:["Lato-Regular.png"],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:247,page:0},{id:91,width:22,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:297,page:0},{id:93,width:19,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:347,page:0},{id:123,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:397,page:0},{id:106,width:19,height:48,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:0,y:447,page:0},{id:81,width:43,height:47,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:21,y:447,page:0},{id:77,width:45,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:38.997,chnl:15,x:66,y:447,page:0},{id:64,width:43,height:44,xoffset:0,yoffset:-28.539,xadvance:35.133,chnl:15,x:23,y:397,page:0},{id:92,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:68,y:397,page:0},{id:47,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:98,y:397,page:0},{id:109,width:42,height:32,xoffset:0,yoffset:-21.609,xadvance:34.545,chnl:15,x:113,y:447,page:0},{id:119,width:42,height:31,xoffset:0,yoffset:-21.315,xadvance:32.991,chnl:15,x:157,y:447,page:0},{id:42,width:25,height:42,xoffset:0,yoffset:-31.626,xadvance:17.85,chnl:15,x:128,y:397,page:0},{id:37,width:42,height:41,xoffset:0,yoffset:-30.387,xadvance:33.663000000000004,chnl:15,x:155,y:397,page:0},{id:79,width:42,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534000000000002,xadvance:14.721,chnl:15,x:243,y:397,page:0},{id:100,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:269,y:397,page:0},{id:98,width:32,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:302,y:397,page:0},{id:56,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:29.904000000000003,chnl:15,x:370,y:397,page:0},{id:108,width:17,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:9.912,chnl:15,x:412,y:397,page:0},{id:107,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:21.336000000000002,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:18.795,chnl:15,x:94,y:347,page:0},{id:105,width:18,height:41,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:123,y:347,page:0},{id:51,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:143,y:347,page:0},{id:104,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.436,chnl:15,x:177,y:347,page:0},{id:67,width:37,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:28.056,chnl:15,x:210,y:347,page:0},{id:88,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.258000000000003,chnl:15,x:249,y:347,page:0},{id:68,width:40,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:31.941000000000003,chnl:15,x:288,y:347,page:0},{id:70,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:23.751,chnl:15,x:330,y:347,page:0},{id:34,width:23,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:15.561000000000002,chnl:15,x:364,y:347,page:0},{id:72,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:389,y:347,page:0},{id:73,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.760000000000002,chnl:15,x:429,y:347,page:0},{id:74,width:24,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:17.745,chnl:15,x:449,y:347,page:0},{id:75,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.825000000000003,chnl:15,x:24,y:297,page:0},{id:76,width:31,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:21.567,chnl:15,x:475,y:347,page:0},{id:66,width:35,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.153000000000002,chnl:15,x:64,y:297,page:0},{id:78,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:101,y:297,page:0},{id:33,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.298,chnl:15,x:141,y:297,page:0},{id:80,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.221,chnl:15,x:161,y:297,page:0},{id:65,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:197,y:297,page:0},{id:82,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.313000000000002,chnl:15,x:237,y:297,page:0},{id:35,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:275,y:297,page:0},{id:84,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.801000000000002,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891000000000002,chnl:15,x:346,y:297,page:0},{id:86,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:385,y:297,page:0},{id:39,width:16,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:8.568000000000001,chnl:15,x:425,y:297,page:0},{id:69,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.255000000000003,chnl:15,x:443,y:297,page:0},{id:89,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.208000000000002,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284000000000002,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156000000000002,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:128,y:247,page:0},{id:94,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:162,y:247,page:0},{id:96,width:21,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:16.8,chnl:15,x:196,y:247,page:0},{id:55,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:219,y:247,page:0},{id:54,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:254,y:247,page:0},{id:53,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:289,y:247,page:0},{id:52,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:323,y:247,page:0},{id:103,width:31,height:39,xoffset:0,yoffset:-21.630000000000003,xadvance:21.84,chnl:15,x:358,y:247,page:0},{id:112,width:32,height:39,xoffset:0,yoffset:-21.651,xadvance:23.541,chnl:15,x:391,y:247,page:0},{id:113,width:31,height:39,xoffset:0,yoffset:-21.651,xadvance:23.520000000000003,chnl:15,x:425,y:247,page:0},{id:116,width:25,height:39,xoffset:0,yoffset:-28.182000000000002,xadvance:15.057,chnl:15,x:458,y:247,page:0},{id:121,width:31,height:38,xoffset:0,yoffset:-21.273,xadvance:21.651,chnl:15,x:34,y:196,page:0},{id:59,width:18,height:36,xoffset:0,yoffset:-20.706,xadvance:10.983,chnl:15,x:485,y:247,page:0},{id:43,width:32,height:34,xoffset:0,yoffset:-24.486,xadvance:24.360000000000003,chnl:15,x:67,y:196,page:0},{id:60,width:30,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:101,y:196,page:0},{id:62,width:31,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:133,y:196,page:0},{id:117,width:30,height:32,xoffset:0,yoffset:-21.273,xadvance:23.415000000000003,chnl:15,x:166,y:196,page:0},{id:99,width:29,height:32,xoffset:0,yoffset:-21.609,xadvance:20.055,chnl:15,x:198,y:196,page:0},{id:110,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:23.436,chnl:15,x:229,y:196,page:0},{id:111,width:32,height:32,xoffset:0,yoffset:-21.609,xadvance:23.814,chnl:15,x:262,y:196,page:0},{id:126,width:32,height:26,xoffset:0,yoffset:-16.128,xadvance:24.360000000000003,chnl:15,x:201,y:447,page:0},{id:101,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:22.176000000000002,chnl:15,x:296,y:196,page:0},{id:114,width:25,height:32,xoffset:0,yoffset:-21.651,xadvance:15.288,chnl:15,x:329,y:196,page:0},{id:115,width:27,height:32,xoffset:0,yoffset:-21.609,xadvance:18.186,chnl:15,x:356,y:196,page:0},{id:97,width:28,height:32,xoffset:0,yoffset:-21.651,xadvance:20.874000000000002,chnl:15,x:385,y:196,page:0},{id:118,width:31,height:31,xoffset:0,yoffset:-21.273,xadvance:21.672,chnl:15,x:415,y:196,page:0},{id:61,width:31,height:29,xoffset:0,yoffset:-19.089000000000002,xadvance:24.360000000000003,chnl:15,x:448,y:196,page:0},{id:120,width:30,height:31,xoffset:0,yoffset:-21.273,xadvance:20.916,chnl:15,x:21,y:145,page:0},{id:58,width:18,height:31,xoffset:0,yoffset:-20.706,xadvance:10.5,chnl:15,x:53,y:145,page:0},{id:122,width:28,height:31,xoffset:0,yoffset:-21.273,xadvance:18.984,chnl:15,x:73,y:145,page:0},{id:95,width:28,height:16,xoffset:0,yoffset:0,xadvance:19.278000000000002,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:"Lato Regular",size:42,bold:0,italic:0,charset:[" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]};class _v extends J{get behavior(){return Ft}constructor(e){super();const n=Qa(Lh),r=H(e.field),i=e.as,o=e.fontSize;this.handle=s=>{const a=r(s);a!==void 0?s[i]=n.measureWidth(a,o):s[i]=0,this._propagate(s)}}}const $v=65536;class eC extends J{get behavior(){return Ft}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=me(e.spacing)?e.spacing:1,i=H(e.start),o=H(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array($v),a=H(e.preference),u=e.preferredOrder;let c=1/0;this.handle=f=>{const l=i(f);l<c&&s.fill(-1/0),c=l;const h=u.indexOf(a(f));let p=-1;if(h>=0&&s[h]<l)p=h;else{const d=i(f);for(p=0;p<s.length&&!(s[p]<d);p++);if(p>=s.length)throw new Error("Out of lanes!")}s[p]=o(f)+r,f[n]=p,this._propagate(f)}}else{const s=new So,a=new So;let u=-1/0,c=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<u);){const p=s.pop();a.push(p,p)}u=l;let h=a.pop();h===void 0&&(h=c++),f[n]=h,this._propagate(f),s.push(h,o(f)+r)}}}}class tC extends J{get behavior(){return ut}constructor(e){if(super(),e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>H(i)),r=e.as?e.as:n.map(K);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class nC extends J{get behavior(){return Ft}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=H(e.field);this.handle=o=>{const s=i(o);if(Z(s)){const a=s.match(n);if(a){if(a.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let u=0;u<r.length;u++)o[r[u]]=a[u+1]}else if(e.skipInvalidInput)for(let u=0;u<r.length;u++)o[r[u]]=void 0;else throw new Error(`"${s}" does not match the given regex: ${n.toString()}`)}else if(!e.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof s}, field content: "${s}".`);this._propagate(o)}}}class rC extends J{get behavior(){return ut}constructor(e){super();const n=Ke(e.columnRegex).map(h=>new RegExp(h)),r=Ke(e.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,o=e.asKey||"sample";let s,a,u;const c=h=>{var A;const p=Object.keys(h),d=new Map;for(const[m,b]of n.entries())for(const y of p){const w=(A=b.exec(y))==null?void 0:A[1];if(w!==void 0){let E=d.get(w);E||(E=[],d.set(w,E)),E[m]=y}}s=[...d.entries()],a=p.filter(m=>!n.some(b=>b.test(m))&&!(i&&i.test(m)));const g=[...a.map(m=>JSON.stringify(m)+": datum["+JSON.stringify(m)+"]"),JSON.stringify(o)+": sampleId",...r.map(m=>JSON.stringify(m)+": null")];u=new Function("datum","sampleId",`return {
143
+ */const Vw="locus",Yw="index";var Ww=5;function Xw(t){const e=t.type;return!t.bins&&(e===bn||e===wr||e===vr)}function sh(t){return Pe(t)&&![Ze,Yw,Vw].includes(t)}function ah(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var Zw=fi(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma","zoom","fp64","name"]);function uh(t,e,n){n=ah(n);for(const r in t)if(!Zw[r]){if(r==="padding"&&sh(e.type))continue;ge(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}nv(e,t,tv(e,t,_w(e,t,n)))}function Kw(t,e){const n=qw(t),r=O(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return uh(t,i,e),i}function qw(t){var e=t.type,n="",r;return e===Ze?Ze+"-"+bn:(Jw(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?Ze+"-":r===3?wn+"-":""),(n+e||bn).toLowerCase())}function Jw(t){const e=t.type;return Pe(e)&&e!==jl&&e!==Vl&&(t.scheme||t.range&&t.range.length&&t.range.every(Z))}function _w(t,e,n){if(!t.domain)return 0;n=ah(n);var r=$w(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&Xw(t),a,u;return i?(sh(o)&&e.padding&&i[0]!==Ne(i)&&(i=ev(o,i,e.range,e.padding,e.exponent,e.constant)),(s||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(a=(i=i.slice()).length-1||1,s&&(i[0]>0&&(i[0]=0),i[a]<0&&(i[a]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[a]=e.domainMax),e.domainMid!=null&&(u=e.domainMid,(u<i[0]||u>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",u),i.splice(a,0,u))),t.domain(ch(o,i,n)),o===Ws&&t.unknown(e.domainImplicit?ds:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&ih(t,e.nice)||null),i.length):0}function $w(t,e,n){return e?(t.domain(ch(t.type,e,n)),e.length):-1}function ev(t,e,n,r,i,o){var s=Math.abs(Ne(n)-n[0]),a=s/(s-2*r),u=t===bt?Au(e,null,a):t===vr?Po(e,null,a,.5):t===wr?Po(e,null,a,i||1):t===Ui?ld(e,null,a,o||1):mu(e,null,a);return e=e.slice(),e[0]=u[0],e[e.length-1]=u[1],e}function ch(t,e,n){if(Jl(t)){var r=Math.abs(e.reduce(function(i,o){return i+(o<0?-1:o>0?1:0)},0));r!==e.length&&n.warn("Log scale domain includes zero: "+li(e))}return e}function tv(t,e,n){let r=e.bins;if(r&&!Me(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?Ne(i):r.stop,a=r.step;a||X("Scale bins parameter missing step property."),r=Kn(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Zs&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function nv(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=rv(r,e,n);else if(e.scheme&&(o=iv(r,e,n),ge(o))){if(t.interpolator)return t.interpolator(o);X(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Qi(r))return t.interpolator(ji(Xa(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(_l(e.interpolate,e.interpolateGamma)):ge(t.round)?t.round(i):ge(t.rangeRound)&&t.interpolate(i?yr:xt),o&&t.range(Xa(o,e.reverse))}function rv(t,e,n){t!==Xl&&t!==Xs&&X("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Xs?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Vs(n,i,r)]}function iv(t,e,n){var r=e.schemeExtent,i,o;return Me(e.scheme)?o=ji(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=qs(i),o||X(`Unrecognized scheme name: ${e.scheme}`)),n=t===Wl?n+1:t===Zs?n-1:t===Ys||t===Yl?+e.schemeCount||Ww:n,Qi(t)?lh(o,r,e.reverse):ge(o)?dA(lh(o,r),n):t===Ws?o:o.slice(0,n)}function lh(t,e,n){return ge(t)&&(e||n)?hA(t,Xa(e||[0,1],n)):t}function Xa(t,e){return e?t.slice().reverse():t}const fh=se(",d");function ov(t,e){return t.chrom+":"+fh(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+fh(Math.ceil(e.pos))}const sv="https://genomespy.app/data/genomes/";class av{constructor(e){if(this.config=e,!this.config.contigs&&typeof this.config.name!="string")throw new Error("No name has been defined for the genome assembly!");this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,this.config.contigs&&this.setChromSizes(this.config.contigs)}get name(){return this.config.name}async load(e){if(!this.config.contigs){this.config.baseUrl?this.baseUrl=/^http(s)?/.test(this.config.baseUrl)?this.config.baseUrl:e+"/"+this.config.baseUrl:this.baseUrl=sv;try{this.setChromSizes(uv(await Di({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}setChromSizes(e){let n=0;this.startByIndex=[0];for(let r=0;r<e.length;r++){this.startByIndex.push(n);const i=e[r].size,o={...e[r],continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(o);const s=o.name.replace(/^chr/i,"");for(const a of["chr"+s,"CHR"+s,"Chr"+s,o.number,""+o.number,s,o.name])this.cumulativeChromPositions.set(a,n),this.chromosomesByName.set(a,o);n+=o.size}this.totalSize=n}getExtent(){return[0,this.totalSize]}toContinuous(e,n){let r=this.cumulativeChromPositions.get(e);if(r===void 0)throw new Error("Unknown chromosome/contig: "+e);return r+ +n}toChromosome(e){if(e>=this.totalSize)return;e=Math.floor(e);const n=an(this.startByIndex,e)-1;if(n>0&&n<=this.chromosomes.length)return this.chromosomes[n-1]}toChromosomal(e){const n=this.toChromosome(e);if(!!n)return{chrom:n.name,pos:Math.floor(e)-n.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return ov(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i,o,s;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(s=r.pos)!=null?s:(o=this.chromosomesByName.get(r.chrom))==null?void 0:o.size)]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),s=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,s)]}}}function uv(t){return Md(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function hh(t){return ke(t)&&"chrom"in t}function cv(t){return t.every(hh)}class qr extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof qr&&e.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${e.type}`);for(const n of e)this.extend(n);return this}extendAllWithAccessor(e,n){for(const r of e)this.extend(n(r));return this}}class Za extends qr{constructor(){super(),this.type="quantitative"}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}}class dh extends qr{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)?this:(this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this)}}class ph extends dh{constructor(){super(),this.type="nominal"}}class lv extends qr{constructor(e){super();let n=0;for(let r=1;r<e.length;r++)n+=Math.sign(e[r]-e[r-1]);if(Math.abs(n)!=e.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(e));e.forEach(r=>this.push(r))}extend(e){if(this.includes(e))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const gh={quantitative:Za,index:Za,locus:Za,nominal:ph,ordinal:dh};function mh(t,e){if(t=="quantitative"&&fv(e)){const n=new lv(e);return n.type=t,n}else if(gh[t]){const n=new gh[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function fv(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function hv(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}const Ah="quantitative",xh="ordinal",yh="nominal",bh="locus",dv="index";class pv{constructor(e){this.channel=e,this.members=[],this.type=null,this._zoomExtent=void 0,this._domainListeners=new Set,this.name=void 0,this._scale=void 0}addEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.add(n)}removeEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.delete(n)}_notifyDomainListeners(){for(const e of this._domainListeners.values())e({type:"domain",scaleResolution:this})}pushUnitView(e,n){var s;const r=sa(e,n),i=r.type,o=(s=r==null?void 0:r.scale)==null?void 0:s.name;if(o){if(this.name!==void 0&&o!=this.name)throw new Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!this.type)this.type=i;else if(i!==this.type&&!zr(n))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${i}. Use "resolve: independent" for channel ${this.channel}`);this.members.push({view:e,channel:n})}isExplicitDomain(){return!!this.getConfiguredDomain()}_getMergedScaleProps(){return kn(this,"mergedScaleProps",()=>{const e=this.members.map(n=>sa(n.view,n.channel).scale).filter(n=>n!==void 0);return Eo(e,"scale",["domain"])})}getScaleProps(){return kn(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n={...this._getDefaultScaleProperties(this.type),...e};n.type||(n.type=gv(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Wt(n.type)&&(n.domain=new ph),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),this.channel=="y"&&Wt(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),mv(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==bh?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>zr(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>zr(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){j0(this,"scaleProps");const e=this.getScaleProps();uh(e,this._scale),Pe(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=Kw(e);return this._scale=n,em(n)&&n.genome(this.getGenome()),Pe(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e,n;return(n=(e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))!=null?n:this.getDomain()}isZoomed(){return this.isZoomable()&&nf(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!xf(this.channel))return!1;const e=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(e)?!!this.getScaleProps().zoom:!1}zoom(e,n,r){if(!this.isZoomable())return!1;const i=this.getScale(),o=i.domain();let s=[...o],a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(a+=i.align()),i.type){case"linear":case"index":case"locus":s=ad(s,r||0),s=mu(s,a,e);break;case"log":s=ud(s,r||0),s=Au(s,a,e);break;case"pow":case"sqrt":{const u=i;s=cd(s,r||0,u.exponent()),s=Po(s,a,e,u.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=fd(s,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(u=>s[u]!=o[u])?(i.domain(s),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(ui(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(a=this.members[0])==null?void 0:a.view.context.animator,o=this.getScale(),s=o.domain();if(n>0&&s.length==2){const u=s[1]-s[0],c=s[0]+u/2,f=r[1]-r[0],l=r[0]+f/2,h=xl([c,0,u],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:hv,onUpdate:p=>{const[d,,g]=h(p);o.domain([d-g/2,d+g/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}resetZoom(){if(!this.isZoomable())throw new Error("Not a zoomable scale!");const e=this.getDomain(),n=this.getInitialDomain();return[0,1].some(r=>n[r]!=e[r])?(this._scale.domain(n),this._notifyDomainListeners(),!0):!1}getZoomLevel(){return this.isZoomable()?ci(this._zoomExtent)/ci(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(Av(n)&&Me(n.extent))return this.fromComplexInterval(n.extent);if(n)return e.type=="locus"?this.getGenome().getExtent():this._scale.domain()}_getDefaultScaleProperties(e){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),Nr(n)?r.nice=!this.isExplicitDomain():qt(n)?r.scheme=e==yh?"tableau10":e==xh?"blues":"viridis":qi(n)?r.range=bf(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}getGenome(){var n;if(this.type!=="locus")return;const e=(n=this.members[0].view.context.genomeStore)==null?void 0:n.getGenome();if(!e)throw new Error("No genome has been defined!");return e}invertToComplex(e){const n=this.getScale();if("invert"in n){const r=n.invert(e);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(e){const n=this.getGenome();return n?n.toChromosomal(e):e}fromComplex(e){return hh(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&cv(e)?this.getGenome().toContinuousInterval(e):e}_getViewPaths(){return this.members.map(e=>e.view.getPathString()).join(", ")}_reduceDomains(e){const n=this.members.map(e).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))}}function gv(t,e){if(e==dv||e==bh){if(xf(t))return e;throw new Error(`${t} does not support ${e} data type. Only positional channels do.`)}const n={x:["band","band","linear"],y:["band","band","linear"],size:[void 0,"point","linear"],opacity:[void 0,"point","linear"],fillOpacity:[void 0,"point","linear"],strokeOpacity:[void 0,"point","linear"],color:["ordinal","ordinal","linear"],fill:["ordinal","ordinal","linear"],stroke:["ordinal","ordinal","linear"],strokeWidth:[void 0,void 0,"linear"],shape:["ordinal","ordinal",void 0],dx:[void 0,void 0,"null"],dy:[void 0,void 0,"null"],angle:[void 0,void 0,"linear"]},i=["uniqueId","facetIndex","semanticScore","search","text","sample"].includes(t)?"null":n[t]?n[t][[yh,xh,Ah].indexOf(e)]:e==Ah?"linear":"ordinal";if(i===void 0)throw new Error(`Channel "${t}" is not compatible with "${e}" data type. Use of a proper scale may be needed.`);return i}function mv(t,e){Nr(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Pe(t.type)&&(t.clamp=!0)}function Av(t){return ke(t)}function Ka(...t){for(const e of t)if(e!==void 0)return e}class xv{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=Cn(this.members))==null?void 0:e.view.getScaleResolution(this.channel)}pushUnitView(e,n){const r=e.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:e,channel:n})}getAxisProps(){return kn(this,"axisProps",()=>{const e=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return e.length>0&&e.some(n=>n===null)?null:Eo(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=sa(o.view,o.channel);if(!Ue(s))return{member:o,explicitTitle:Ka((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:Ka(Lr(s)?s.field:void 0,aa(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(zr(o.member.channel)&&!o.explicitTitle){const a=En(o.member.channel);return((s=n.find(u=>u.member.view==o.member.view&&u.member.channel==a))==null?void 0:s.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>Ka(o.explicitTitle,o.implicitTitle)).filter(Z));return i.size?[...i].join(", "):null}}class wh extends nh{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class nn extends Nn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(tu(o)||eu(o))return n.createView(o,this,"layer"+s);throw new Error("LayerView accepts only unit or layer specs as children!")})}*[Symbol.iterator](){for(const e of this.children)yield e}render(e,n,r={}){if(!!this.isVisible()){e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(e),!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}}class vh{constructor(e,n){this.n=e,this.maxCols=n!=null?n:1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const o=[];e.push(o);for(let s=0;s<n;s++){const a=i*n+s;a<this.n&&o.push(a)}}return e}get colIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const o=[];e.push(o);for(let s=0;s<r;s++){const a=s*n+i;a<this.n&&o.push(a)}}return e}getCellIndex(e,n){let r=0;if(this.maxCols==1/0)r=n==0?e:void 0;else{if(e>=this.maxCols)return;r=n*this.nCols+e}return r<this.n?r:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}function ct(t){return()=>t}const lt=class{static create(e,n,r,i){return new lt(ct(e),ct(n),ct(r),ct(i))}_offset(e,n){const r=this["_"+e];if(n===0)return r;switch(typeof n){case"number":return()=>r()+n;case"function":return()=>r()+n();default:throw new Error("Not a number of function")}}_passThrough(e){return this._offset(e,0)}constructor(e,n,r,i){this._x=e,this._y=n,this._width=r,this._height=i}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(e){return e?this===e||this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height:!1}modify(e){if(!Object.keys(e).length)return this;const n=r=>{const i=e[r];return typeof i=="number"?ct(i):typeof i=="function"?i:this._passThrough(r)};return new lt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new lt(this._offset("x",e),this._offset("y",n),this._passThrough("width"),this._passThrough("height"))}translateBy(e){return this.translate(e.x,e.y)}expand(e,n=1){return e.left==0&&e.top==0&&e.right==0&&e.bottom==0?this:new lt(e.left?this._offset("x",-e.left*n):this._passThrough("x"),e.top?this._offset("y",-e.top*n):this._passThrough("y"),e.width?this._offset("width",e.width*n):this._passThrough("width"),e.height?this._offset("height",e.height*n):this._passThrough("height"))}shrink(e){return this.expand(e,-1)}intersect(e){return this===e?this:new lt(()=>Math.max(this.x,e.x),()=>Math.max(this.y,e.y),()=>Math.min(this.x2,e.x2)-Math.max(this.x,e.x),()=>Math.min(this.y2,e.y2)-Math.max(this.y,e.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new lt(ct(this.x),ct(this.y),ct(this.width),ct(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let On=lt;Jh(On,"ZERO",lt.create(0,0,0,0));function yv(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class Gn extends J{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Ch(t){var n,r;const e={...t.format};if((n=e.type)!=null||(e.type=Cv(t)&&bv(t.url)),(r=e.parse)!=null||(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function bv(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const So=t=>typeof t!="object"?wv:vv,wv=t=>({data:t}),vv=t=>t;function Cv(t){return"url"in t}function Ev(t){return"dynamicCallbackSource"in t}class Eh extends Gn{constructor(e){super(),this.callback=e}loadSynchronously(){if(!this.callback)return;const e=this.callback();if(!e||typeof e[Symbol.iterator]!="function")throw new Error("Dynamic data callback didn't return iterable data!");this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=So(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const Sh="chromosome_ticks_and_labels",Dh={x:"width",y:"height"};function qa(t){return t=="x"?"y":"x"}const Ja={x:["bottom","top"],y:["left","right"]},Bh=Object.fromEntries(Object.entries(Ja).map(([t,e])=>e.map(n=>[n,t])).flat(1));function rn(t){return Bh[t]}class Sv extends nn{constructor(e,n,r,i){const o=n=="locus",s={...o?Fv:Fh,...Bv(n,e),...e};if(super(o?Mv(s):Mh(s),r,i,`axis_${e.orient}`),this.axisProps=s,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new Eh(()=>this.ticks),o){const a=rn(this.axisProps.orient),u=this.getScaleResolution(a).getGenome();this.findChildByName(Sh).getDynamicDataSource=()=>new Eh(()=>u.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return Bh[this.axisProps.orient]=="x"?new tn(n,e):new tn(e,n)}getPerpendicularSize(){return _a(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=rn(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(nf(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=Dv(this.axisProps,n,this.axisLength,i);o!==i&&(this.ticks=o,this.tickSource.loadSynchronously()),this.axisUpdateRequested=!1}onBeforeRender(){super.onBeforeRender(),this._updateAxisData()}render(e,n,r={}){!this.isVisible()||(this.axisLength=n[Dh[rn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function _a(t){const e=rn(t.orient);let n=t.ticks&&t.tickSize||0;return t.labels&&(n+=t.labelPadding,e=="x"?n+=t.labelFontSize:n+=30),t.title&&(n+=t.titlePadding+t.titleFontSize),n=Math.min(t.maxExtent||1/0,Math.max(t.minExtent||0,n)),n}function Dv(t,e,n,r=[]){const i=a=>25+60*yv(100,700,a);let o=me(t.tickCount)?t.tickCount:Math.round(n/i(n));o=ih(e,o,t.tickMinStep);const s=t.values?oh(e,t.values,o):zw(e,o);if(xA(s,r,a=>a,a=>a.value))return r;{const a=Gw(e,o,t.format);return s.map(u=>({value:u,label:a(u)}))}}const Fh={values:null,minExtent:20,maxExtent:1/0,offset:0,domain:!0,domainWidth:1,domainColor:"gray",domainDash:null,domainDashOffset:0,domainCap:"square",ticks:!0,tickSize:5,tickWidth:1,tickColor:"gray",tickDash:null,tickDashOffset:0,tickCap:"square",tickCount:null,tickMinStep:null,labels:!0,labelAlign:"center",labelBaseline:"middle",labelPadding:4,labelFontSize:10,labelLimit:180,labelColor:"black",format:null,titleColor:"black",titleFont:"sans-serif",titleFontSize:10,titlePadding:3};function Bv(t,e){var a;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",s=(a=e.labelAngle)!=null?a:(n=="top"||n=="bottom")&&r?-90:0;switch(n){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(s)>30?(i=s>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:s,labelBaseline:o}}function Mh(t){const e={...t,extent:_a(t)},n=rn(e.orient),r=qa(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,s=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),a=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[r+"Offset"]:(e.tickSize+e.labelPadding)*i,[r]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),u=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),c=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:e.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(e.orient)],text:e.title,color:e.titleColor,[n]:.5,[r]:1-o}}),f=()=>{const h={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&h.layer.push(u()),e.labels&&h.layer.push(a()),h},l={[Dh[qa(rn(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(s()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(c()),l}const Fv={...Fh,chromTicks:!0,chromTickSize:18,chromTickWidth:1,chromTickColor:"#989898",chromTickDash:[4,2],chromTickDashOffset:1,chromLabels:!0,chromLabelFontSize:13,chromLabelFontWeight:"normal",chromLabelFontStyle:"normal",chromLabelColor:"black",chromLabelAlign:"left",chromLabelPadding:7};function Mv(t){const e={...t,extent:_a(t)},n=rn(e.orient),r=qa(n),i=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[r]:i,[r+"2"]:i-e.chromTickSize/e.extent*(i?1:-1),color:t.chromTickColor,size:e.chromTickWidth}}),s=()=>{let c;switch(e.orient){case"top":c={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":c={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":c={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":c={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:c={}}return{name:"chromosome_labels",mark:{type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,...c},encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let a;switch(e.orient){case"bottom":case"top":a={};break;case"left":a={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":a={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:a={}}const u=Mh({...t,...a});if(t.chromTicks||t.chromLabels){const c={name:Sh,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&c.layer.push(o()),t.chromLabels){c.layer.push(s());let f;u.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(h=>h.name=="labels").forEach(h=>{f=h.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}u.layer.push(c)}return u}const Ih={anchor:"middle",frame:"group",offset:10,orient:"top",align:void 0,angle:0,baseline:"alphabetic",dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:"normal",fontWeight:"normal"},Iv={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},Tv={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},Pv={start:0,middle:.5,end:1},Lv={start:"left",middle:"center",end:"right"};function Rv(t){var c,f,l;if(!t)return;const e=Z(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n=(c={"track-title":Iv,overlay:Tv}[e.style])!=null?c:{},r={...Ih,...n,...e};let i={},o={x:0,y:0};const s=Pv[(f=r.anchor)!=null?f:"middle"];switch(r.orient){case"top":o={x:s,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-s},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:s,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:s},i={baseline:"alphabetic",angle:-90};break}const a={...Ih,...i,...n,...e},u={xOffset:0,yOffset:0};switch(r.orient){case"top":u.yOffset=-a.offset;break;case"right":u.xOffset=a.offset;break;case"bottom":u.yOffset=a.offset;break;case"left":u.xOffset=-a.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...u,text:a.text,align:(l=a.align)!=null?l:Lv[a.anchor],angle:a.angle,baseline:a.baseline,dx:a.dx,dy:a.dy,color:a.color,font:a.font,size:a.fontSize,fontStyle:a.fontStyle,fontWeight:a.fontWeight}}}function kv(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:s,y:a}=t.point;if(r){const u=r.mark.encoders;u.x&&!u.x2&&(s=+u.x(r.datum)*e.width+e.x),u.y&&!u.y2&&(a=(1-+u.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:a,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:s,y:a,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})}else if(t.type=="mousedown"&&t.uiEvent.button===0){const i=t.uiEvent;i.preventDefault();let o=i;const s=u=>{n({x:o.clientX,y:o.clientY,xDelta:u.clientX-o.clientX,yDelta:u.clientY-o.clientY,zDelta:0}),o=u},a=u=>{document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",a)};document.addEventListener("mouseup",a,!1),document.addEventListener("mousemove",s,!1)}}class Th extends Nn{constructor(n,r,i,o,s){var a;super(n,r,i,o);he(this,_r);he(this,$e);he(this,Bo);he(this,Fo);he(this,on);he(this,$r);he(this,ei);he(this,ti);he(this,Mo);he(this,Un,1/0);he(this,Hn,10);he(this,Re,[]);he(this,Qn,0);this.spec=n,Yn(this,Hn,(a=n.spacing)!=null?a:10),Yn(this,Un,s),Yn(this,Re,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){var r;(r=n.parent)!=null||(n.parent=this),V(this,Re).push(ue(this,_r,lu).call(this,n)),_h(this,Qn)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=V(this,Re).findIndex(o=>o.view==n);if(i>=0)V(this,Re)[i]=ue(this,_r,lu).call(this,r);else throw new Error("Not my child view!")}get children(){return V(this,Re).map(n=>n.view)}get childCount(){return V(this,Re).length}onScalesResolved(){super.onScalesResolved(),ue(this,Fo,ed).call(this)}*[Symbol.iterator](){for(const n of V(this,Re)){n.background&&(yield n.background);for(const r of Object.values(n.axes))r&&(yield r);yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=ue(this,on,ri).call(this,"column"),r=ue(this,on,ri).call(this,"row");return!n.length||!r.length?je.zero():new je(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new tn(ue(this,ei,hu).call(this,"column"),ue(this,ei,hu).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){var c;if(!this.isVisible())return;r=r.shrink(this.getPadding()),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},s=$0(ue(this,$r,fu).call(this,"column"),r.width,o),a=$0(ue(this,$r,fu).call(this,"row"),r.height,o),u=new vh(V(this,$e,Mt).length,(c=V(this,Un))!=null?c:1/0);for(const[f,l]of V(this,$e,Mt).entries()){const{view:h,axes:p,background:d,title:g}=l,[A,m]=u.getCellCoords(f),b=s[ue(this,ti,du).call(this,"column",A)],y=a[ue(this,ti,du).call(this,"row",m)],w=h.getSize(),E=h.getPadding().subtract(h.getOverhang()),C=b.location+E.left,B=y.location+E.top,I=(w.width.grow?b.size:w.width.px)-E.width,P=(w.height.grow?y.size:w.height.px)-E.height,U=new On(()=>r.x+C,()=>r.y+B,()=>I,()=>P);l.coords=U,d==null||d.render(n,U,i);const M=Ov(h);M&&h.render(n,U,i);for(const[ve,oe]of Object.entries(p)){const Se=oe.axisProps;let et;const De=oe.getPerpendicularSize();ve=="bottom"?et=U.translate(0,U.height+Se.offset).modify({height:De}):ve=="top"?et=U.translate(0,-De-Se.offset).modify({height:De}):ve=="left"?et=U.translate(-De-Se.offset,0).modify({width:De}):ve=="right"&&(et=U.translate(U.width+Se.offset,0).modify({width:De})),oe.render(n,et)}M||h.render(n,U,i),g==null||g.render(n,U,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=V(this,$e,Mt).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof we||i instanceof nn)&&kv(n,r.coords,o=>ue(this,Mo,td).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}Un=new WeakMap,Hn=new WeakMap,Re=new WeakMap,Qn=new WeakMap,_r=new WeakSet,lu=function(n){var i;const r={view:n,background:void 0,axes:{},coords:On.ZERO};if(n instanceof we||n instanceof nn){const o=(i=n.spec)==null?void 0:i.view;if((o==null?void 0:o.fill)||(o==null?void 0:o.stroke)){const a=new we(Nv(o),this.context,n,"background"+V(this,Qn));a.blockEncodingInheritance=!0,r.background=a}const s=Rv(n.spec.title);if(s){const a=new we(s,this.context,n,"title"+V(this,Qn));a.blockEncodingInheritance=!0,r.title=a}}return r},$e=new WeakSet,Mt=function(){return V(this,Re).filter(n=>n.view.isVisible())},Bo=new WeakSet,$h=function(){var n;return new vh(V(this,$e,Mt).length,(n=V(this,Un))!=null?n:1/0)},Fo=new WeakSet,ed=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of V(this,Re)){const{view:r,axes:i}=n,o=(s,a,u)=>{var f;const c=s.getAxisProps();if(c!==null){if(!c.orient){for(const l of Ja[a])if(!i[l]){c.orient=l;break}if(!c.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if((f=c.title)!=null||(c.title=s.getTitle()),!Ja[a].includes(c.orient))throw new Error(`Invalid axis orientation "${c.orient}" on channel "${a}"!`);if(i[c.orient])throw new Error(`An axis with the orient "${c.orient}" already exists!`);i[c.orient]=new Sv(c,s.scaleResolution.type,this.context,u)}};if(r instanceof we||r instanceof nn)for(const s of["x","y"]){const a=r.resolutions.axis[s];!a||o(a,s,r)}if(r instanceof nn){for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&c.orient&&o(u,a,s)}for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&!c.orient&&o(u,a,s)}}}},on=new WeakSet,ri=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(s,a)=>s.map(u=>{const c=V(this,$e,Mt)[u].axes[r[a]];if(c)return Math.max(c.getPerpendicularSize()+c.axisProps.offset,0);const f=V(this,$e,Mt)[u].view.getOverhang();return n=="column"?a?f.right:f.left:a?f.bottom:f.top}).reduce((u,c)=>Math.max(u,c),0);return V(this,Bo,$h)[n=="column"?"colIndices":"rowIndices"].map(s=>({axisBefore:o(s,0),axisAfter:o(s,1),view:Mw(s.map(a=>V(this,$e,Mt)[a].view.getSize()[i]))}))},$r=new WeakSet,fu=function(n){const r=ue(this,on,ri).call(this,n),i=[];i.push(Zr);for(const[o,s]of r.entries())o>0&&i.push({px:V(this,Hn),grow:0}),(o==0||this.wrappingFacet)&&i.push(Zr),i.push({px:s.axisBefore,grow:0}),i.push(s.view),i.push({px:s.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(Zr);return i},ei=new WeakSet,hu=function(n){var s,a;let r=0,i=0;const o=ue(this,on,ri).call(this,n);for(const[u,c]of o.entries())u>0&&(i+=V(this,Hn)),(u==0||this.wrappingFacet)&&(i+=0),i+=c.axisBefore,i+=(s=c.view.px)!=null?s:0,r+=(a=c.view.grow)!=null?a:0,i+=c.axisAfter,(u==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},ti=new WeakSet,du=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Mo=new WeakSet,td=function(n,r,i){for(const[o,s]of Object.entries(zv(r))){if(s.size<=0)continue;const a=n.normalizePoint(i.x,i.y),u=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),c={x:u.x-a.x,y:u.y-a.y};for(const f of s)f.zoom(2**i.zDelta,o=="y"?1-a[o]:a[o],o=="x"?c.x:-c.y)}this.context.animator.requestRender()};function Nv(t){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:t.fill?1:0,...t,type:"rect",clip:!1,tooltip:null}}}function zv(t){const e={x:new Set,y:new Set};return t.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e}function Ov(t){let e=!0;return t.visit(n=>{n instanceof we&&e&&(e=n.mark.properties.clip)}),e}class $a extends Th{constructor(e,n,r,i){super(e,n,r,i,ru(e)?e.columns:nu(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=ru(e)?e.concat:nu(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class Gv{constructor(){this.types=[];const e=n=>(r,i,o,s)=>{var a;return new n(r,i,o,(a=r.name)!=null?a:s)};this.addViewType(Uv,e(wh)),this.addViewType(tu,e(nn)),this.addViewType(eu,e(we)),this.addViewType(nu,e($a)),this.addViewType(Hv,e($a)),this.addViewType(ru,e($a))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(s=>s.specGuard(e));if(o)return o.factory(e,n,r,i!=null?i:"unnamed");throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const n=this.types.filter(r=>r.specGuard(e));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}}function eu(t){return"mark"in t&&(Z(t.mark)||ke(t.mark))}function tu(t){return"layer"in t&&ke(t.layer)}function Ph(t){return t&&(eu(t)||tu(t))&&"aggregateSamples"in t}function Uv(t){return"import"in t}function nu(t){return"vconcat"in t&&Me(t.vconcat)}function Hv(t){return"hconcat"in t&&Me(t.hconcat)}function ru(t){return"concat"in t&&Me(t.concat)}const Qv={point:gw,rect:uw,rule:xw,link:vw,text:Fw};class we extends Nn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=Qv[this.getMarkType()];if(o)this.mark=new o(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.sampleAggregateViews=[],this._initializeAggregateViews(),this.coords=void 0}*[Symbol.iterator](){for(const e of this.sampleAggregateViews)yield e}replaceChild(e,n){const r=this.sampleAggregateViews.indexOf(e);if(r>=0)this.sampleAggregateViews[r]=n;else throw new Error("Not my child view!")}render(e,n,r={}){!this.isVisible()||(this.coords=n,e.pushView(this,n),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(e){var r;const n=this.mark.encoding;for(const[i,o]of Object.entries(n)){if(!Le(o))continue;let s=En((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!Nr(s))continue;let a=this;for(;a.parent instanceof Nn&&["shared","excluded"].includes(a.parent.getConfiguredOrDefaultResolution(s,e))&&a.getConfiguredOrDefaultResolution(s,e)!="excluded";)a=a.parent;a.resolutions[e][s]||(a.resolutions[e][s]=e=="scale"?new pv(s):new xv(s)),Nr(i)?a.resolutions[e][s].pushUnitView(this,i):e=="scale"&&a.resolutions[e][s].pushUnitView(this,i)}}getAccessor(e){return this._cache("accessor/"+e,()=>{const n=this.mark.encoding;if(n&&n[e])return this.context.accessorFactory.createAccessor(n[e])})}getFacetAccessor(e){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(e){if(zr(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Le(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){var i,o;const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const s=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return mh((o=n.type)!=null?o:"nominal",s.fromComplexInterval(r))}}extractDataDomain(e){var a;const r=(a=this._validateDomainQuery(e).type)!=null?a:"nominal",i=u=>{let c;const f=this.mark.encoding[u];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(c=mh(r),l.constant)c.extend(l({}));else{const h=this.getCollector();h!=null&&h.completed&&h.visitData(p=>c.extend(l(p)))}}return c};let o=i(e);const s=ua[e];if(s){const u=i(s);u&&o.extendAll(u)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return kr.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(Ph(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&Cn(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding={...(n=r.encoding)!=null?n:{},sample:null};const o=this.context.createView(r,this,"summaryView");o.getFacetFields=s=>{},this.sampleAggregateViews.push(o)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*iu(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of iu(r,[...e,n]))yield i;else yield[[...e,n],r]}class ou extends J{constructor(e){super(),this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Pt([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){hw(e)&&(this._data=[],this.facetBatches.set(Ke(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?xu(e.field,e.order):void 0,r=s=>{n&&s.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const s=this.params.groupby.map(u=>H(u)),a=di(this._data,...s);this.facetBatches.clear();for(const[u,c]of iu(a))this.facetBatches.set(u,c)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const[s,a]of this.facetBatches.entries()){if(s){const u={type:"facet",facetId:s};for(const c of this.children)c.beginBatch(u)}for(const u of a)this._propagate(u)}super.complete();for(const s of this.observers)s(this)}getData(){switch(this._checkStatus(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const r of e.values())for(let i=0;i<r.length;i++)yield r[i]}}}}}visitData(e){this._checkStatus();for(const n of this.facetBatches.values())for(let r=0;r<n.length;r++)e(n[r])}getItemCount(){let e=0;for(const n of this.facetBatches.values())e+=n.length;return e}_checkStatus(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}}class Do{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(;r>0;){const i=r-1>>1,o=this.values[i];if(n>=o)break;this.ids[r]=this.ids[i],this.values[r]=o,r=i}this.ids[r]=e,this.values[r]=n}pop(){if(this.length===0)return;const e=this.ids[0];if(this.length--,this.length>0){const n=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let o=0;for(;o<i;){let s=(o<<1)+1;const a=s+1;let u=this.ids[s],c=this.values[s];const f=this.values[a];if(a<this.length&&f<c&&(s=a,u=this.ids[a],c=f),c>=r)break;this.ids[o]=u,this.values[o]=c,o=s}this.ids[o]=n,this.values[o]=r}return e}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}}class jv extends J{get behavior(){return ut}constructor(e){super(),this.params=e,this.startAccessor=H(e.start),this.endAccessor=H(e.end),this.chromAccessor=e.chrom?H(e.chrom):n=>{},this.weightAccessor=e.weight?H(e.weight):n=>1,this.as={coverage:e.as||"coverage",start:e.asStart||e.start,end:e.asEnd||e.end,chrom:e.asChrom||e.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([n,r])=>r).map(([n,r])=>`${JSON.stringify(r)}: ${n}`).join(", ")+"};"),this.ends=new Do}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,o=this.endAccessor,s=this.chromAccessor,a=this.weightAccessor;let u,c,f,l=0,h;const p=this.ends;p.clear();const d=(A,m,b)=>{if(A==m)return;let y=!1;u&&(u[e]===b?(u[n]=m,y=!0):u[e]!=0&&this._propagate(u)),y||(u=this.createSegment(A,m,b,f))},g=()=>{let A;for(;(A=p.peekValue())!==void 0;)d(h,A,l),h=A,l-=p.pop();h=void 0,u&&(this._propagate(u),u=void 0)};this.handle=A=>{const m=i(A);let b;for(;(b=p.peekValue())!==void 0&&b<m;)d(h,b,l),h=b,l-=p.pop();if(r){let w=s(A);w!==c&&(g(),f=w,c=f)}h!==void 0&&d(h,m,l),h=m;const y=a(A);l+=y,p.push(y,o(A))},this.complete=()=>{g(),super.complete()}}}function Vv(t,e,n=0,r=t.length){const i=new Do,o=r-n;let s;for(s=0;s<e&&s<o;s++)i.push(s,t[n+s]);for(;s<o;s++){const c=t[n+s];c>=i.peekValue()&&(i.push(s,c),i.pop())}const a=[];let u;for(;(u=i.pop())!==void 0;)a.push(n+u);return a.reverse()}class Yv{constructor(e,n=-1/0,r=1/0){this.maxSize=e,this.lowerLimit=n,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(e,n,r=0){if(e>=this.lowerLimits[r]&&n<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const o=this._findSlot(e,n,i);return o>=0?o:this._findSlot(e,n,this.upperChildren[r])}else return r}else return-1}reserve(e,n){if(n-e<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(e,n);if(r<0)return!1;const i=this.n++,o=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[o]=n,this.upperLimits[o]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=o,!0}}class Wv extends J{constructor(e,n){var i,o;if(super(),this.params=e,this._data=[],this.channel=(i=e.channel)!=null?i:"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=H(this.params.pos),this.posBisector=hi(this.posAccessor),this.scoreAccessor=H(this.params.score),this.widthAccessor=H(this.params.width),this.laneAccessor=this.params.lane?H(this.params.lane):s=>0,this.padding=(o=this.params.padding)!=null?o:0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",s=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const e=this.posAccessor;this._data.sort((n,r)=>e(n)-e(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new Yv(200));this.schedule(),super.complete()}_filterAndPropagate(){var s;super.reset();const e=this.resolution.getScale(),n=(s=this.resolution.members[0].view.coords)==null?void 0:s[this.channel=="x"?"width":"height"];if(!n)return;for(const a of this.reservationMaps.values())a.reset();const r=e.domain(),i=70,o=Vv(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of o){const u=this._data[a],c=e(this.posAccessor(u))*n,f=this.widthAccessor(u)/2+this.padding;this.reservationMaps.get(this.laneAccessor(u)).reserve(c-f,c+f)&&this._propagate(u)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class Xv extends J{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=oa(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const Zv="0".charCodeAt(0);function*Kv(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const o=t.charCodeAt(i);o==n?(yield r,r=0):r=r*10+o-Zv}yield r}class qv extends J{get behavior(){return ut}constructor(e){var s,a;super();const n=H((s=e.exons)!=null?s:"exons"),r=H((a=e.start)!=null?a:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=u=>{let c=r(u),f=c,l=!0;const h=n(u);for(const p of Kv(h)){if(l)f=c+p;else{c=f+p;const d=Object.assign({},u);d[i]=f,d[o]=c,this._propagate(d)}l=!l}}}}class Jv extends J{get behavior(){return ut}constructor(e){super();const n=Ke(e.field).map(o=>H(o)),r=Ke(e.separator),i=Ke(e.as||e.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{if(n.some(u=>!u(o)))return;const s=n.map((u,c)=>u(o).split(r[c]));_v(s,o);const a=s[0].length;for(let u=0;u<a;u++){const c=Object.assign({},o);for(let f=0;f<n.length;f++)c[i[f]]=s[f][u];this._propagate(c)}}}}function _v(t,e){const n=t.map(r=>r.length);if(!n.every(r=>r==n[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(e))}class $v extends J{get behavior(){return Ft}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=oa(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Lh extends J{get behavior(){return Ft}constructor(e,n){var d;super();const r=(d=e.channel)!=null?d:"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=H(e.chrom),s=Ke(e.pos).map(g=>H(g)),a=Ke(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const u=Ke(e.offset);let c;if(u.length==0)c=new Array(s.length).fill(0);else if(u.length==1)c=new Array(s.length).fill(u[0]);else if(u.length==s.length)c=u;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",a.map((g,A)=>`datum[${JSON.stringify(g)}] = chromOffset + +posAccessors[${A}](datum) - ${c[A]};`).join(`
144
+ `));let l,h=0;const p=g=>{if(g!==l){if(h=i.cumulativeChromPositions.get(g),h===void 0)throw new Error("Unknown chromosome/contig: "+g);l=g}return h};this.handle=g=>{f(g,p(o(g)),s),this._propagate(g)}}}const Rh={pages:["Lato-Regular.png"],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:247,page:0},{id:91,width:22,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:297,page:0},{id:93,width:19,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:347,page:0},{id:123,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:397,page:0},{id:106,width:19,height:48,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:0,y:447,page:0},{id:81,width:43,height:47,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:21,y:447,page:0},{id:77,width:45,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:38.997,chnl:15,x:66,y:447,page:0},{id:64,width:43,height:44,xoffset:0,yoffset:-28.539,xadvance:35.133,chnl:15,x:23,y:397,page:0},{id:92,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:68,y:397,page:0},{id:47,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:98,y:397,page:0},{id:109,width:42,height:32,xoffset:0,yoffset:-21.609,xadvance:34.545,chnl:15,x:113,y:447,page:0},{id:119,width:42,height:31,xoffset:0,yoffset:-21.315,xadvance:32.991,chnl:15,x:157,y:447,page:0},{id:42,width:25,height:42,xoffset:0,yoffset:-31.626,xadvance:17.85,chnl:15,x:128,y:397,page:0},{id:37,width:42,height:41,xoffset:0,yoffset:-30.387,xadvance:33.663000000000004,chnl:15,x:155,y:397,page:0},{id:79,width:42,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534000000000002,xadvance:14.721,chnl:15,x:243,y:397,page:0},{id:100,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:269,y:397,page:0},{id:98,width:32,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:302,y:397,page:0},{id:56,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:29.904000000000003,chnl:15,x:370,y:397,page:0},{id:108,width:17,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:9.912,chnl:15,x:412,y:397,page:0},{id:107,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:21.336000000000002,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:18.795,chnl:15,x:94,y:347,page:0},{id:105,width:18,height:41,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:123,y:347,page:0},{id:51,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:143,y:347,page:0},{id:104,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.436,chnl:15,x:177,y:347,page:0},{id:67,width:37,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:28.056,chnl:15,x:210,y:347,page:0},{id:88,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.258000000000003,chnl:15,x:249,y:347,page:0},{id:68,width:40,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:31.941000000000003,chnl:15,x:288,y:347,page:0},{id:70,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:23.751,chnl:15,x:330,y:347,page:0},{id:34,width:23,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:15.561000000000002,chnl:15,x:364,y:347,page:0},{id:72,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:389,y:347,page:0},{id:73,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.760000000000002,chnl:15,x:429,y:347,page:0},{id:74,width:24,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:17.745,chnl:15,x:449,y:347,page:0},{id:75,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.825000000000003,chnl:15,x:24,y:297,page:0},{id:76,width:31,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:21.567,chnl:15,x:475,y:347,page:0},{id:66,width:35,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.153000000000002,chnl:15,x:64,y:297,page:0},{id:78,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:101,y:297,page:0},{id:33,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.298,chnl:15,x:141,y:297,page:0},{id:80,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.221,chnl:15,x:161,y:297,page:0},{id:65,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:197,y:297,page:0},{id:82,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.313000000000002,chnl:15,x:237,y:297,page:0},{id:35,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:275,y:297,page:0},{id:84,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.801000000000002,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891000000000002,chnl:15,x:346,y:297,page:0},{id:86,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:385,y:297,page:0},{id:39,width:16,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:8.568000000000001,chnl:15,x:425,y:297,page:0},{id:69,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.255000000000003,chnl:15,x:443,y:297,page:0},{id:89,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.208000000000002,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284000000000002,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156000000000002,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:128,y:247,page:0},{id:94,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:162,y:247,page:0},{id:96,width:21,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:16.8,chnl:15,x:196,y:247,page:0},{id:55,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:219,y:247,page:0},{id:54,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:254,y:247,page:0},{id:53,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:289,y:247,page:0},{id:52,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:323,y:247,page:0},{id:103,width:31,height:39,xoffset:0,yoffset:-21.630000000000003,xadvance:21.84,chnl:15,x:358,y:247,page:0},{id:112,width:32,height:39,xoffset:0,yoffset:-21.651,xadvance:23.541,chnl:15,x:391,y:247,page:0},{id:113,width:31,height:39,xoffset:0,yoffset:-21.651,xadvance:23.520000000000003,chnl:15,x:425,y:247,page:0},{id:116,width:25,height:39,xoffset:0,yoffset:-28.182000000000002,xadvance:15.057,chnl:15,x:458,y:247,page:0},{id:121,width:31,height:38,xoffset:0,yoffset:-21.273,xadvance:21.651,chnl:15,x:34,y:196,page:0},{id:59,width:18,height:36,xoffset:0,yoffset:-20.706,xadvance:10.983,chnl:15,x:485,y:247,page:0},{id:43,width:32,height:34,xoffset:0,yoffset:-24.486,xadvance:24.360000000000003,chnl:15,x:67,y:196,page:0},{id:60,width:30,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:101,y:196,page:0},{id:62,width:31,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:133,y:196,page:0},{id:117,width:30,height:32,xoffset:0,yoffset:-21.273,xadvance:23.415000000000003,chnl:15,x:166,y:196,page:0},{id:99,width:29,height:32,xoffset:0,yoffset:-21.609,xadvance:20.055,chnl:15,x:198,y:196,page:0},{id:110,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:23.436,chnl:15,x:229,y:196,page:0},{id:111,width:32,height:32,xoffset:0,yoffset:-21.609,xadvance:23.814,chnl:15,x:262,y:196,page:0},{id:126,width:32,height:26,xoffset:0,yoffset:-16.128,xadvance:24.360000000000003,chnl:15,x:201,y:447,page:0},{id:101,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:22.176000000000002,chnl:15,x:296,y:196,page:0},{id:114,width:25,height:32,xoffset:0,yoffset:-21.651,xadvance:15.288,chnl:15,x:329,y:196,page:0},{id:115,width:27,height:32,xoffset:0,yoffset:-21.609,xadvance:18.186,chnl:15,x:356,y:196,page:0},{id:97,width:28,height:32,xoffset:0,yoffset:-21.651,xadvance:20.874000000000002,chnl:15,x:385,y:196,page:0},{id:118,width:31,height:31,xoffset:0,yoffset:-21.273,xadvance:21.672,chnl:15,x:415,y:196,page:0},{id:61,width:31,height:29,xoffset:0,yoffset:-19.089000000000002,xadvance:24.360000000000003,chnl:15,x:448,y:196,page:0},{id:120,width:30,height:31,xoffset:0,yoffset:-21.273,xadvance:20.916,chnl:15,x:21,y:145,page:0},{id:58,width:18,height:31,xoffset:0,yoffset:-20.706,xadvance:10.5,chnl:15,x:53,y:145,page:0},{id:122,width:28,height:31,xoffset:0,yoffset:-21.273,xadvance:18.984,chnl:15,x:73,y:145,page:0},{id:95,width:28,height:16,xoffset:0,yoffset:0,xadvance:19.278000000000002,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:"Lato Regular",size:42,bold:0,italic:0,charset:[" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]};class eC extends J{get behavior(){return Ft}constructor(e){super();const n=ja(Rh),r=H(e.field),i=e.as,o=e.fontSize;this.handle=s=>{const a=r(s);a!==void 0?s[i]=n.measureWidth(a,o):s[i]=0,this._propagate(s)}}}const tC=65536;class nC extends J{get behavior(){return Ft}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=me(e.spacing)?e.spacing:1,i=H(e.start),o=H(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array(tC),a=H(e.preference),u=e.preferredOrder;let c=1/0;this.handle=f=>{const l=i(f);l<c&&s.fill(-1/0),c=l;const h=u.indexOf(a(f));let p=-1;if(h>=0&&s[h]<l)p=h;else{const d=i(f);for(p=0;p<s.length&&!(s[p]<d);p++);if(p>=s.length)throw new Error("Out of lanes!")}s[p]=o(f)+r,f[n]=p,this._propagate(f)}}else{const s=new Do,a=new Do;let u=-1/0,c=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<u);){const p=s.pop();a.push(p,p)}u=l;let h=a.pop();h===void 0&&(h=c++),f[n]=h,this._propagate(f),s.push(h,o(f)+r)}}}}class rC extends J{get behavior(){return ut}constructor(e){if(super(),e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>H(i)),r=e.as?e.as:n.map(K);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class iC extends J{get behavior(){return Ft}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=H(e.field);this.handle=o=>{const s=i(o);if(Z(s)){const a=s.match(n);if(a){if(a.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let u=0;u<r.length;u++)o[r[u]]=a[u+1]}else if(e.skipInvalidInput)for(let u=0;u<r.length;u++)o[r[u]]=void 0;else throw new Error(`"${s}" does not match the given regex: ${n.toString()}`)}else if(!e.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof s}, field content: "${s}".`);this._propagate(o)}}}class oC extends J{get behavior(){return ut}constructor(e){super();const n=Ke(e.columnRegex).map(h=>new RegExp(h)),r=Ke(e.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,o=e.asKey||"sample";let s,a,u;const c=h=>{var A;const p=Object.keys(h),d=new Map;for(const[m,b]of n.entries())for(const y of p){const w=(A=b.exec(y))==null?void 0:A[1];if(w!==void 0){let E=d.get(w);E||(E=[],d.set(w,E)),E[m]=y}}s=[...d.entries()],a=p.filter(m=>!n.some(b=>b.test(m))&&!(i&&i.test(m)));const g=[...a.map(m=>JSON.stringify(m)+": datum["+JSON.stringify(m)+"]"),JSON.stringify(o)+": sampleId",...r.map(m=>JSON.stringify(m)+": null")];u=new Function("datum","sampleId",`return {
145
145
  `+g.join(`,
146
146
  `)+`
147
- };`)},f=h=>{s||c(h);for(const[p,d]of s){const g=u(h,p);for(let A=0;A<d.length;A++)g[r[A]]=h[d[A]];this._propagate(g)}},l=h=>{c(h),f(h),this.handle=f};this.handle=l,this.beginBatch=h=>{q0(h)&&(this.handle=l),super.beginBatch(h)}}}class iC extends J{get behavior(){return Ft}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){var f;const e=this.params,n=e.as||["y0","y1"],r=e.sort?Au(e.sort.field,e.sort.order):void 0,i=e.field?H(e.field):()=>1,o=e.groupby.map(l=>H(l)),s=Qd(this.buffer,l=>o.map(h=>h(l)).join()).map(l=>l[1]);let a=l=>!0;if(e.baseField){const l=H(e.baseField);a=h=>l(h)!==null}let u,c;switch(e.offset){case"normalize":u=(l,h)=>l/h,c=(l,h)=>pi(l,h);break;case"center":u=(l,h)=>l-h/2,c=(l,h)=>pi(l,h);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);u=(h,p)=>h/p,c=(h,p)=>{const g=pi(h,y=>+!a(y)),A=pi(h,p),m=A-g;let b=0;for(let y=0;y<h.length;y++){const w=h[y];if(a(w)){const E=p(w)/m;b-=E*Math.log2(E)}}return m/(l-(b+0))*(m/A)}}break;default:u=(l,h)=>l,c=(l,h)=>1}for(const l of s){r&&l.sort(r);const h=c(l,i);let p=0;for(const d of l){const g=p+i(d);a(d)&&(d[n[0]]=u(p,h),d[n[1]]=u(g,h),this._propagate(d),p=g)}}super.complete()}}class oC extends J{get behavior(){return ut}constructor(e){var o,s;super();const n=H((o=e.field)!=null?o:"sequence"),[r,i]=(s=e.as)!=null?s:["pos","sequence"];this.handle=a=>{const u=Object.assign({},a,{[i]:"",[r]:0}),c=n(a);for(let f=0;f<c.length;f++){const l=Object.assign({},u);l[r]=f,l[i]=c.charAt(f),this._propagate(l)}}}}class sC extends J{get behavior(){return ut}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const n=this.params.groupby,r=n.map(o=>H(o)),i=hi(this.buffer,...r);for(const[o,s]of ru(i)){const a={count:s.length};for(let u=0;u<n.length;u++)a[n[u]]=o[u];this._propagate(a)}super.complete()}}const aC="_uniqueId",Rh=1e4,kh=[null];class Nh extends J{get behavior(){return Ft}constructor(e){var n;super(),this.params=e,this.as=(n=e.as)!=null?n:aC,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(e){e[this.as]=this._nextId(),this._propagate(e)}_nextId(){return++this._id%Rh==0&&(this._id=this._getBlock()*Rh),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=kh.length;return kh[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const uC={aggregate:sC,collect:iu,coverage:Hv,filterScoredLabels:Vv,filter:Yv,flattenCompressedExons:Zv,flattenDelimited:Kv,flattenSequence:oC,formula:Jv,identifier:Nh,linearizeGenomicCoordinate:Ph,measureText:_v,pileup:eC,project:tC,regexExtract:nC,regexFold:rC,sample:J0,stack:iC};function cC(t,e){const n=uC[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function lC(t){return"values"in t}class fC extends Gn{constructor(e){var n;if(super(),this.params=e,typeof e.values=="string"&&!((n=e==null?void 0:e.format)!=null&&n.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}loadSynchronously(){const e=this.params.values;let n=[],r=i=>i;if(Array.isArray(e))e.length>0&&(n=e,r=Eo(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=vc(e,vh(this.params));else throw new Error('"values" in data configuration is not an array, object, or a string!');this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}function hC(t){return"url"in t}class dC extends Gn{constructor(e,n){super(),this.params=e,this.baseUrl=n}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}async load(){const e=this.params.url,n=Array.isArray(e)?e:[e],r=async o=>Si({baseURL:this.baseUrl}).load(o).catch(s=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${s.message}`)}),i=(o,s)=>{try{const a=vc(o,vh(this.params));this.beginBatch({type:"file",url:s});for(const u of a)this._propagate(u)}catch(a){throw new Error(`Cannot parse: ${s}: ${a.message}`)}};this.reset(),await Promise.all(n.map(o=>r(o).then(i))),this.complete()}}function pC(t){return"sequence"in t}class gC extends Gn{constructor(e){if(super(),this.sequence=e.sequence,!("start"in this.sequence))throw new Error("'start' is missing from sequence parameters!");if(!("stop"in this.sequence))throw new Error("'stop' is missing from sequence parameters!")}loadSynchronously(){const e=this.sequence.as||"data",n=this.sequence.step||1,r=this.sequence.stop;this.reset(),this.beginBatch({type:"file"});for(let i=this.sequence.start;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}}function mC(t){return"dynamicSource"in t}class AC extends Gn{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=Eo(r)),this._propagate(n(r));this.complete()}async load(){}}function xC(t,e){if(lC(t))return new fC(t);if(hC(t))return new dC(t,e);if(pC(t))return new gC(t);if(mC(t))return new AC;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function yC(t){const e=Object.keys(t).filter(r=>typeof r=="string"),n=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
148
- `)+" };");return n.properties=e,n}class zh extends J{get behavior(){return ut}constructor(){super();const e=n=>{const r=yC(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{q0(n)&&(this.handle=e),super.beginBatch(n)}}}class Oh{constructor(){this._dataSourcesByHost=new Map,this._collectorsByHost=new Map,this._observers=new Map}get dataSources(){return[...new Set(this._dataSourcesByHost.values()).values()]}get collectors(){return[...this._collectorsByHost.values()]}addObserver(e,n){let r=this._observers.get(n);r||(r=[],this._observers.set(n,r)),r.push(e)}_relayObserverCallback(e,n){const r=this._observers.get(n);if(r)for(const i of r)i(e)}addDataSource(e,n){this._dataSourcesByHost.set(n,e)}findDataSourceByKey(e){return this._dataSourcesByHost.get(e)}addCollector(e,n){this._collectorsByHost.set(n,e),e.observers.push(r=>this._relayObserverCallback(r,n))}findCollectorByKey(e){return this._collectorsByHost.get(e)}initialize(){for(const e of this.dataSources)e.visit(n=>n.initialize())}}function bC(t){return"name"in t}class wC extends Gn{constructor(e,n){super(),this.getNamedData=n,this.params=e}get identifier(){return this.params.name}_getValues(){const e=this.getNamedData(this.params.name);if(e)return e;throw new Error("Cannot find named data: "+this.params.name)}loadSynchronously(){const e=this._getValues();let n=r=>r;if(Array.isArray(e))e.length>0&&(n=Eo(e[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const r of e)this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}function vC(t,e){const n=[];let r;const i=e!=null?e:new Oh,o=[];function s(f,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(f),r=f,f}function a(f,l){return s(f,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${l?JSON.stringify(l):""}`))}function u(f,l){for(const h of f){let p;try{p=cC(h,l)}catch(d){throw console.warn(d),new Error(`Cannot initialize "${h.type}" transform: ${d}`)}p.behavior&Ft&&a(new zh),a(p)}}const c=f=>{if(n.push(r),f.spec.data){const l=vv(f.spec.data)?f.getDynamicDataSource():bC(f.spec.data)?new wC(f.spec.data,f.context.getNamedData):xC(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&u(f.spec.transform,f),f instanceof we){if(!r)throw new Error("A unit view has no (inherited) data source");const l=CC(f);if(l){o.push(l.rewrite);for(const p of l.transforms)a(p)}f.mark.isPickingParticipant()&&a(new Nh({type:"identifier"}));const h=new iu({type:"collect",groupby:f.getFacetFields(),sort:EC(f,l==null?void 0:l.rewrittenEncoding)});s(h),i.addCollector(h,f)}Th(f.spec)};return c.postOrder=f=>{r=n.pop()},t.visit(c),o.forEach(f=>f()),i}function CC(t){var o,s,a,u;const e=[],n={},r=[];for(const[c,f]of Object.entries(t.getEncoding())){const l=c;kr(l)&&mf(f)&&r.push({channel:l,chromPosDef:f})}const i=hi(r,c=>En(c.channel),c=>c.chromPosDef.chrom);for(const[c,f]of i.entries())for(const[l,h]of f.entries()){const p=[],d=[],g=[];for(const{channel:A,chromPosDef:m}of h){const b=E=>E.replace(/[^A-Za-z0-9_]/g,""),y=["_linearized_",b(m.chrom),"_",b(m.pos)].join(""),w={...(a=(s=(o=t.spec.encoding)==null?void 0:o[A])!=null?s:t.getEncoding()[A])!=null?a:{},field:y};delete w.chrom,delete w.pos,!w.type&&m.type&&(w.type=m.type),n[A]=w,p.push(m.pos),g.push((u=m.offset)!=null?u:0),d.push(y)}e.push(new Ph({type:"linearizeGenomicCoordinate",channel:c,chrom:l,pos:p,offset:g,as:d},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding={...t.spec.encoding,...n},Q0(t.mark,"encoding")}}:void 0}function EC(t,e){var r;const n={...t.getEncoding(),...e}.x;if(Le(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Pr(n))return{field:n.field};if(!Lr(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function Gh(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Gh(n,t))return!1;return!0}function ou(t,e=!1){if(t instanceof iu&&(e=!0),t instanceof zh)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&ou(n,e);return}t.behavior&ut&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)ou(t.children[n],e||n<r-1)}function SC(t){const e=[...t._dataSourcesByHost.entries()],n=new Map;for(const r of e){const i=r[1];i.identifier&&!n.has(i.identifier)&&n.set(i.identifier,i)}t._dataSourcesByHost.clear();for(let[r,i]of e){const o=n.get(i.identifier);o&&(o.adoptChildrenOf(i),i=o),t.addDataSource(i,r)}}function DC(t){if(ou(t),!Gh(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function BC(t){for(const e of t.dataSources)DC(e);SC(t)}function FC(t){t.visit(n=>{n instanceof we&&n.resolve("scale")});const e=new Set;t.visit(n=>{for(const r of Object.values(n.resolutions.scale)){const i=r.name;if(i&&e.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);e.add(i)}}),t.visit(n=>{n instanceof we&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function MC(t){for(const e of Rr){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}async function IC(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=Si({baseURL:e}),i=t.import.url,o=JSON.parse(await r.load(i).catch(a=>{throw new Error(`Could not load imported view spec: ${i}
149
- Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]*\//))==null?void 0:s[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function Uh(t){const e=[];t.visit(n=>{if(n instanceof bh)return e.push(n),$0});for(const n of e){const r=n.context,i=await IC(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Uh(o)}}class Hh{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Qh extends Hh{constructor(e,n){super(e),this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(e,n){this.views.add(e),this.coords=n}renderMark(e,n){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(n);r&&this.buffer.push({mark:e,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const e=this.webGLHelper.gl,n=this.globalOptions.picking;e.bindFramebuffer(e.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&e.bindFramebuffer(e.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let e=!0,n=!0;const r=s=>()=>{e&&s()},i=s=>()=>{e&&n&&s()},o=hi(this.buffer,s=>s.mark);for(const[s,a]of o.entries()){if(!s.isReady())continue;this.batch.push(()=>{e=s.unitView.getEffectiveOpacity()>0}),this.batch.push(...s.prepareRender(this.globalOptions).map(c=>r(c)));let u;for(const c of a){const f=c.coords;f.equals(u)||this.batch.push(r(()=>{n=s.setViewport(f,c.clipRect)})),this.batch.push(i(c.callback)),u=c.coords}}}}class TC extends Hh{constructor(...e){super({}),this.contexts=e}pushView(e,n){for(const r of this.contexts)r.pushView(e,n)}popView(e){for(const n of this.contexts)n.popView(e)}renderMark(e,n){for(const r of this.contexts)r.renderMark(e,n)}}class PC{constructor(e,n){this.point=e,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class LC{constructor(e,n){this.x=e,this.y=n}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}}const RC=t=>new Promise(e=>setTimeout(e,t));function kC(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const s=performance.now(),a=s+(t.duration||1e3),u=typeof t.from=="number"?t.from:0,c=typeof t.to=="number"?t.to:1,f=t.easingFunction||(g=>g),l=g=>(g-s)/(a-s),h=g=>g*(c-u)+u,p=g=>Math.max(0,Math.min(1,g)),d=g=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(h(f(p(l(g))))),g<a?e(d):(t.onUpdate(h(f(1))),i()))};e(d)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):RC(t.delay).then(r):r()}class NC{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){const n=this.transitions.indexOf(e);n>=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(e);this._renderCallback(e)}))}transition(e){return kC({requestAnimationFrame:n=>this.requestTransition(n),...e})}}function jh(){const t=e=>e;return t.invert=e=>e,t.copy=jh,t.invertRange=()=>{},t}class zC{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new ov(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const n=this.genomes.get(e);if(!n)throw new Error(`No genome with the name ${e} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}const OC="data:image/png;base64,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",GC={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class UC{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Pt([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Qa(Lh),texture:this._createTextureNow(OC)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(Z(r)&&(r=GC[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:n,weight:r};let o=this._fonts.get(i);return o||(o={metrics:void 0,texture:void 0},this._fonts.set(i,o),this._promises.push(this._loadFontEntry(o,i))),o}async _loadFontEntry(e,n){try{const r=await this._loadMetadata(n.family),i=QC(r,n),o=this.fontRepository+Vh(n.family)+"/"+i.replace(/\.\w+/,""),s=this._createTexture(o+".png"),a=this._loadFont(o+".json");e.texture=await s,e.metrics=await a}catch(r){console.log("Cannot load font. Using default.",r),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let n=this._fontPromises.get(e);return n||(n=fetch(e).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>Qa(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Vh(e);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>HC(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){const n=this._webGLHelper.gl;return new Promise((r,i)=>{Qr(n,{src:e,min:n.LINEAR},(o,s,a)=>{o?i(o):r(s)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,s)=>{r=Qr(n,{src:e,min:n.LINEAR},(a,u,c)=>{a?s(a):o(u)})});return this._promises.push(i),r}}function Vh(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function HC(t){const e=t.split(`
150
- `),n=[];let r;for(const i of e)if(i.startsWith("fonts {")&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),i.startsWith("}")&&(n.push(r),r=void 0),r){let o=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(o){const s=o[1];r[s]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const s=o[1];r[s]=+o[2]}}return n}function QC(t,e){let n,r=Number.POSITIVE_INFINITY;for(const i of t)if(e.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&e.style==i.style){const o=Math.abs(e.weight-i.weight);o<r&&(r=o,n=i)}return n==null?void 0:n.filename}function jC(t,e){const n=[];let r;for(const i of t.split(`
151
- `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class VC{constructor(e,n){this.animator=e,this.disabled=!!n,this.damping=.015,this.acceleration=.3,this.accelerationThreshold=100,this.lowerLimit=.5,this.loop=!1,this.momentum=0,this.timestamp=0,this.callback=null,this._transitionCallback=this.animate.bind(this),this.clear()}clear(){this.momentum=0,this.timestamp=null,this.loop=null,this.callback=null}cancel(){this.loop&&(this.animator.cancelTransition(this._transitionCallback),this.clear())}setMomentum(e,n){if(this.disabled){n(e);return}e*this.momentum<0?this.momentum=0:Math.abs(e)>this.accelerationThreshold?this.momentum=xd([this.momentum,e],this.acceleration):this.momentum=e,this.callback=n,this.loop||this.animate()}animate(e){this.callback(this.momentum);const n=e-this.timestamp||0;this.timestamp=e;const r=Math.abs(this.momentum);this.momentum=Math.sign(this.momentum)*Math.max(0,r-((r*this.damping)**1.5+.04)*n),Math.abs(this.momentum)>this.lowerLimit?(this.loop=!0,this.animator.requestTransition(this._transitionCallback)):this.clear()}}function YC(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const o=i;!r.includes(i)&&n.includes(typeof t[o])&&(e[o]=t[o])}return e}function WC(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((u,c)=>{const f=()=>{clearTimeout(r),i=l=>{},u(t(...a))};n&&i("debounced"),clearTimeout(r),i=c,r=setTimeout(f,e)})}}const Yh=new Map;async function XC(t,e,n){var o;const r=t.symbol;let i=(o=Yh.get(r))!=null?o:await qC(t.symbol);return i?(Yh.set(r,i),rt`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function ZC(t){console.log("Searching: "+t);const e={mode:"cors"},r=(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=${t}[GENE]&sort=relevance&retmode=json`,e).then(i=>i.json())).esearchresult.idlist[0];return r?(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id=${r}&retmode=json`,e).then(s=>s.json())).result[r]:null}const KC=WC(ZC,500);function qC(t){return KC(t)}const JC=se(".4~r"),_C=se(".4~e");function $C(t){return t===null?rt`<span class="na">NA</span>`:Z(t)?t.substring(0,30):Number.isInteger(t)?""+t:me(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?_C(t):JC(t):ai(t)?t?"True":"False":"?"+typeof t+" "+t}async function eE(t,e,n){const r=(a,u)=>{var c;for(const[f,l]of Object.entries(e.encoders))if((c=l==null?void 0:l.accessor)!=null&&c.fields.includes(a))switch(f){case"color":case"fill":case"stroke":return rt`<span class="color-legend" style="${`background-color: ${l(u)}`}"></span>`}return""},i=rt`<table class="attributes">${Object.entries(t).filter(([a,u])=>!a.startsWith("_")).map(([a,u])=>rt`<tr><th>${a}</th><td>${$C(u)} ${r(a,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),s=o?rt`<div class="title"><strong>${o}</strong></div>`:"";return rt`${s}${i}`}class tE extends Ih{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}O("index",fs,["continuous"]),O("locus",Jg,["continuous"]),O("null",jh,[]),wc("fasta",jC);class Wh{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new O1,this.viewFactory=new zv,this.namedDataProviders=[],this.animator=new NC(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=o=>o.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new VC(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers={default:eE,refseqgene:XC,...(i=r.tooltipHandlers)!=null?i:{}},this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedData(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new $b(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new AA(this.container),this.loadingMessageElement.querySelector(".message").addEventListener("transitionend",()=>{this.loadingMessageElement.style.display="none"})}destroy(){this.container.classList.remove("genome-spy"),this.container.classList.remove("loading");for(const[e,n]of this._keyboardListeners)for(const r of n)document.removeEventListener(e,r);for(this._glHelper.finalize();this.container.firstChild;)this.container.firstChild.remove()}async _prepareViewsAndData(){this.spec.genome&&(this.genomeStore=new zC(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Oh,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new UC(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,u)=>{document.addEventListener(a,u);let c=this._keyboardListeners.get(a);c||(c=[],this._keyboardListeners.set(a,c)),c.push(u)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,u,c){return e.viewFactory.createView(a,n,u,c)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await Uh(this.viewRoot),(this.viewRoot instanceof we||this.viewRoot instanceof nn)&&(this.viewRoot=new tE(n,this.viewRoot)),FC(this.viewRoot),MC(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof we&&i.push(a)});const o=vC(this.viewRoot,n.dataFlow);BC(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(a=>console.log(a.subtreeToString())),i.forEach(a=>a.mark.initializeEncoders());const s=Promise.all(i.map(a=>a.mark.initializeGraphics()));for(const a of i)o.addObserver(u=>{a.mark.initializeData(),a.mark.updateGraphicsData()},a);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(a=>a.load())),this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))u.reconfigure()}),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(u)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>bo(a,"size")),this._glHelper.invalidateSize()}async launch(){try{return this._prepareContainer(),await this._prepareViewsAndData(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),this._glHelper.addEventListener("resize",()=>{this.computeLayout(),this.renderAll()}),!0}catch(e){const n=`${e.view?`At "${e.view.getPathString()}": `:""}${e.toString()}`;return console.error(e.stack),nE(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const e=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),s=new LC(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=u=>{this.viewRoot.propagateInteractionEvent(new PC(s,u)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(s.x,s.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const u=r;if(Math.abs(u.deltaX)>Math.abs(u.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const c=YC(u);this._wheelInertia.setMomentum(u.deltaY*(u.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",{...c,deltaMode:0,deltaX:0,deltaY:f});a(l)}),u.preventDefault();return}}if(r.type=="click"){const u=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(c=>c.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(c=>c(u))}a(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var o;const r=this._glHelper.readPickingPixel(e,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(s=>{if(s instanceof we){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(u=>{a(u)==i&&(this._currentHover={mark:s.mark,datum:u,uniqueId:i})})}if(this._currentHover)return Zr}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{var c;if(!s.isPickingParticipant())return;const u=s.properties.tooltip;if(u!==null){const f=(c=u==null?void 0:u.handler)!=null?c:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(a,s,u==null?void 0:u.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new Qh({picking:!1},this._glHelper),this._pickingContext=new Qh({picking:!0},this._glHelper),e.render(new TC(this._renderingContext,this._pickingContext),On.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){!this._dirtyPickingBuffer||(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof we&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function nE(t,e){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=e,n.appendChild(r),t.appendChild(n)}const rE="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";async function iE(t,e,n={}){var o,s,a;let r;if(Z(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const u=ke(e)?e:await Xh(e);if((o=u.baseUrl)!=null||(u.baseUrl=""),(s=u.width)!=null||(u.width="container"),(a=u.padding)!=null||(u.padding=10),r==document.body){const c=document.createElement("div");c.style.position="fixed",c.style.inset="0",c.style.overflow="hidden",r.appendChild(c),r=c}i=new Wh(r,u,n),oE(i,n),await i.launch()}catch(u){r.innerText=u.toString(),console.error(u)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(u,c){const f=i._eventListeners;let l=f.get(u);l||(l=new Set,f.set(u,l)),l.add(c)},removeEventListener(u,c){var l;(l=i._eventListeners.get(u))==null||l.delete(c)},getScaleResolutionByName(u){return i.getNamedScaleResolutions().get(u)}}}function oE(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function Xh(t){let e;try{e=JSON.parse(await Si().load(t))}catch(n){throw new Error(`Could not load or parse configuration: ${t}, reason: ${n.message}`)}if(!e.baseUrl){const n=t.match(/^[^?#]*\//);e.baseUrl=n&&n[0]||"./"}return e}R.GenomeSpy=Wh,R.embed=iE,R.html=rt,R.icon=rE,R.loadSpec=Xh,Object.defineProperties(R,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
147
+ };`)},f=h=>{s||c(h);for(const[p,d]of s){const g=u(h,p);for(let A=0;A<d.length;A++)g[r[A]]=h[d[A]];this._propagate(g)}},l=h=>{c(h),f(h),this.handle=f};this.handle=l,this.beginBatch=h=>{J0(h)&&(this.handle=l),super.beginBatch(h)}}}class sC extends J{get behavior(){return Ft}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){var f;const e=this.params,n=e.as||["y0","y1"],r=e.sort?xu(e.sort.field,e.sort.order):void 0,i=e.field?H(e.field):()=>1,o=e.groupby.map(l=>H(l)),s=Vd(this.buffer,l=>o.map(h=>h(l)).join()).map(l=>l[1]);let a=l=>!0;if(e.baseField){const l=H(e.baseField);a=h=>l(h)!==null}let u,c;switch(e.offset){case"normalize":u=(l,h)=>l/h,c=(l,h)=>gi(l,h);break;case"center":u=(l,h)=>l-h/2,c=(l,h)=>gi(l,h);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);u=(h,p)=>h/p,c=(h,p)=>{const g=gi(h,y=>+!a(y)),A=gi(h,p),m=A-g;let b=0;for(let y=0;y<h.length;y++){const w=h[y];if(a(w)){const E=p(w)/m;b-=E*Math.log2(E)}}return m/(l-(b+0))*(m/A)}}break;default:u=(l,h)=>l,c=(l,h)=>1}for(const l of s){r&&l.sort(r);const h=c(l,i);let p=0;for(const d of l){const g=p+i(d);a(d)&&(d[n[0]]=u(p,h),d[n[1]]=u(g,h),this._propagate(d),p=g)}}super.complete()}}class aC extends J{get behavior(){return ut}constructor(e){var o,s;super();const n=H((o=e.field)!=null?o:"sequence"),[r,i]=(s=e.as)!=null?s:["pos","sequence"];this.handle=a=>{const u=Object.assign({},a,{[i]:"",[r]:0}),c=n(a);for(let f=0;f<c.length;f++){const l=Object.assign({},u);l[r]=f,l[i]=c.charAt(f),this._propagate(l)}}}}class uC extends J{get behavior(){return ut}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const n=this.params.groupby,r=n.map(o=>H(o)),i=di(this.buffer,...r);for(const[o,s]of iu(i)){const a={count:s.length};for(let u=0;u<n.length;u++)a[n[u]]=o[u];this._propagate(a)}super.complete()}}const cC="_uniqueId",kh=1e4,Nh=[null];class zh extends J{get behavior(){return Ft}constructor(e){var n;super(),this.params=e,this.as=(n=e.as)!=null?n:cC,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(e){e[this.as]=this._nextId(),this._propagate(e)}_nextId(){return++this._id%kh==0&&(this._id=this._getBlock()*kh),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Nh.length;return Nh[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const lC={aggregate:uC,collect:ou,coverage:jv,filterScoredLabels:Wv,filter:Xv,flattenCompressedExons:qv,flattenDelimited:Jv,flattenSequence:aC,formula:$v,identifier:zh,linearizeGenomicCoordinate:Lh,measureText:eC,pileup:nC,project:rC,regexExtract:iC,regexFold:oC,sample:_0,stack:sC};function fC(t,e){const n=lC[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function hC(t){return"values"in t}class dC extends Gn{constructor(e){var n;if(super(),this.params=e,typeof e.values=="string"&&!((n=e==null?void 0:e.format)!=null&&n.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}loadSynchronously(){const e=this.params.values;let n=[],r=i=>i;if(Array.isArray(e))e.length>0&&(n=e,r=So(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=Cc(e,Ch(this.params));else throw new Error('"values" in data configuration is not an array, object, or a string!');this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}function pC(t){return"url"in t}class gC extends Gn{constructor(e,n){super(),this.params=e,this.baseUrl=n}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}async load(){const e=this.params.url,n=Array.isArray(e)?e:[e],r=async o=>Di({baseURL:this.baseUrl}).load(o).catch(s=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${s.message}`)}),i=(o,s)=>{try{const a=Cc(o,Ch(this.params));this.beginBatch({type:"file",url:s});for(const u of a)this._propagate(u)}catch(a){throw new Error(`Cannot parse: ${s}: ${a.message}`)}};this.reset(),await Promise.all(n.map(o=>r(o).then(i))),this.complete()}}function mC(t){return"sequence"in t}class AC extends Gn{constructor(e){if(super(),this.sequence=e.sequence,!("start"in this.sequence))throw new Error("'start' is missing from sequence parameters!");if(!("stop"in this.sequence))throw new Error("'stop' is missing from sequence parameters!")}loadSynchronously(){const e=this.sequence.as||"data",n=this.sequence.step||1,r=this.sequence.stop;this.reset(),this.beginBatch({type:"file"});for(let i=this.sequence.start;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}}function xC(t){return"dynamicSource"in t}class yC extends Gn{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=So(r)),this._propagate(n(r));this.complete()}async load(){}}function bC(t,e){if(hC(t))return new dC(t);if(pC(t))return new gC(t,e);if(mC(t))return new AC(t);if(xC(t))return new yC;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function wC(t){const e=Object.keys(t).filter(r=>typeof r=="string"),n=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
148
+ `)+" };");return n.properties=e,n}class Oh extends J{get behavior(){return ut}constructor(){super();const e=n=>{const r=wC(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{J0(n)&&(this.handle=e),super.beginBatch(n)}}}function vC(t){return"name"in t}class Gh extends Gn{constructor(n,r){super();he(this,ni,void 0);this.provider=r,this.params=n}get identifier(){return this.params.name}updateDynamicData(n){Yn(this,ni,n),this.loadSynchronously()}loadSynchronously(){var i,o;const n=(o=(i=V(this,ni))!=null?i:this.provider(this.params.name))!=null?o:[];let r=s=>s;if(Array.isArray(n))n.length>0&&(r=So(n[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const s of n)this._propagate(r(s));this.complete()}async load(){this.loadSynchronously()}}ni=new WeakMap;class Uh{constructor(){this._dataSourcesByHost=new Map,this._collectorsByHost=new Map,this._observers=new Map}get dataSources(){return[...new Set(this._dataSourcesByHost.values()).values()]}get collectors(){return[...this._collectorsByHost.values()]}addObserver(e,n){let r=this._observers.get(n);r||(r=[],this._observers.set(n,r)),r.push(e)}_relayObserverCallback(e,n){const r=this._observers.get(n);if(r)for(const i of r)i(e)}addDataSource(e,n){this._dataSourcesByHost.set(n,e)}findDataSourceByKey(e){return this._dataSourcesByHost.get(e)}findNamedDataSource(e){let n,r=[];for(const[i,o]of this._dataSourcesByHost.entries())if(o instanceof Gh&&e==o.identifier){if(n&&n!==o)throw new Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);n=o,r.push(i)}if(n)return{dataSource:n,hosts:r}}addCollector(e,n){this._collectorsByHost.set(n,e),e.observers.push(r=>this._relayObserverCallback(r,n))}findCollectorByKey(e){return this._collectorsByHost.get(e)}initialize(){for(const e of this.dataSources)e.visit(n=>n.initialize())}}function CC(t,e){const n=[];let r;const i=e!=null?e:new Uh,o=[];function s(f,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(f),r=f,f}function a(f,l){return s(f,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${l?JSON.stringify(l):""}`))}function u(f,l){for(const h of f){let p;try{p=fC(h,l)}catch(d){throw console.warn(d),new Error(`Cannot initialize "${h.type}" transform: ${d}`)}p.behavior&Ft&&a(new Oh),a(p)}}const c=f=>{if(n.push(r),f.spec.data){const l=Ev(f.spec.data)?f.getDynamicDataSource():vC(f.spec.data)?new Gh(f.spec.data,f.context.getNamedDataFromProvider):bC(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&u(f.spec.transform,f),f instanceof we){if(!r)throw new Error("A unit view has no (inherited) data source");const l=EC(f);if(l){o.push(l.rewrite);for(const p of l.transforms)a(p)}f.mark.isPickingParticipant()&&a(new zh({type:"identifier"}));const h=new ou({type:"collect",groupby:f.getFacetFields(),sort:SC(f,l==null?void 0:l.rewrittenEncoding)});s(h),i.addCollector(h,f)}Ph(f.spec)};return c.postOrder=f=>{r=n.pop()},t.visit(c),o.forEach(f=>f()),i}function EC(t){var o,s,a,u;const e=[],n={},r=[];for(const[c,f]of Object.entries(t.getEncoding())){const l=c;Nr(l)&&Af(f)&&r.push({channel:l,chromPosDef:f})}const i=di(r,c=>En(c.channel),c=>c.chromPosDef.chrom);for(const[c,f]of i.entries())for(const[l,h]of f.entries()){const p=[],d=[],g=[];for(const{channel:A,chromPosDef:m}of h){const b=E=>E.replace(/[^A-Za-z0-9_]/g,""),y=["_linearized_",b(m.chrom),"_",b(m.pos)].join(""),w={...(a=(s=(o=t.spec.encoding)==null?void 0:o[A])!=null?s:t.getEncoding()[A])!=null?a:{},field:y};delete w.chrom,delete w.pos,!w.type&&m.type&&(w.type=m.type),n[A]=w,p.push(m.pos),g.push((u=m.offset)!=null?u:0),d.push(y)}e.push(new Lh({type:"linearizeGenomicCoordinate",channel:c,chrom:l,pos:p,offset:g,as:d},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding={...t.spec.encoding,...n},j0(t.mark,"encoding")}}:void 0}function SC(t,e){var r;const n={...t.getEncoding(),...e}.x;if(Le(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Lr(n))return{field:n.field};if(!Rr(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function Hh(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Hh(n,t))return!1;return!0}function su(t,e=!1){if(t instanceof ou&&(e=!0),t instanceof Oh)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&su(n,e);return}t.behavior&ut&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)su(t.children[n],e||n<r-1)}function DC(t){const e=[...t._dataSourcesByHost.entries()],n=new Map;for(const r of e){const i=r[1];i.identifier&&!n.has(i.identifier)&&n.set(i.identifier,i)}t._dataSourcesByHost.clear();for(let[r,i]of e){const o=n.get(i.identifier);o&&(o.adoptChildrenOf(i),i=o),t.addDataSource(i,r)}}function BC(t){if(su(t),!Hh(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function FC(t){for(const e of t.dataSources)BC(e);DC(t)}function MC(t){t.visit(n=>{n instanceof we&&n.resolve("scale")});const e=new Set;t.visit(n=>{for(const r of Object.values(n.resolutions.scale)){const i=r.name;if(i&&e.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);e.add(i)}}),t.visit(n=>{n instanceof we&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function IC(t){for(const e of kr){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}async function TC(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=Di({baseURL:e}),i=t.import.url,o=JSON.parse(await r.load(i).catch(a=>{throw new Error(`Could not load imported view spec: ${i}
149
+ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]*\//))==null?void 0:s[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function Qh(t){const e=[];t.visit(n=>{if(n instanceof wh)return e.push(n),eh});for(const n of e){const r=n.context,i=await TC(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Qh(o)}}class jh{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Vh extends jh{constructor(e,n){super(e),this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(e,n){this.views.add(e),this.coords=n}renderMark(e,n){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(n);r&&this.buffer.push({mark:e,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const e=this.webGLHelper.gl,n=this.globalOptions.picking;e.bindFramebuffer(e.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&e.bindFramebuffer(e.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let e=!0,n=!0;const r=s=>()=>{e&&s()},i=s=>()=>{e&&n&&s()},o=di(this.buffer,s=>s.mark);for(const[s,a]of o.entries()){if(!s.isReady())continue;this.batch.push(()=>{e=s.unitView.getEffectiveOpacity()>0}),this.batch.push(...s.prepareRender(this.globalOptions).map(c=>r(c)));let u;for(const c of a){const f=c.coords;f.equals(u)||this.batch.push(r(()=>{n=s.setViewport(f,c.clipRect)})),this.batch.push(i(c.callback)),u=c.coords}}}}class PC extends jh{constructor(...e){super({}),this.contexts=e}pushView(e,n){for(const r of this.contexts)r.pushView(e,n)}popView(e){for(const n of this.contexts)n.popView(e)}renderMark(e,n){for(const r of this.contexts)r.renderMark(e,n)}}class LC{constructor(e,n){this.point=e,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class RC{constructor(e,n){this.x=e,this.y=n}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}}const kC=t=>new Promise(e=>setTimeout(e,t));function NC(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const s=performance.now(),a=s+(t.duration||1e3),u=typeof t.from=="number"?t.from:0,c=typeof t.to=="number"?t.to:1,f=t.easingFunction||(g=>g),l=g=>(g-s)/(a-s),h=g=>g*(c-u)+u,p=g=>Math.max(0,Math.min(1,g)),d=g=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(h(f(p(l(g))))),g<a?e(d):(t.onUpdate(h(f(1))),i()))};e(d)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):kC(t.delay).then(r):r()}class zC{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){const n=this.transitions.indexOf(e);n>=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(e);this._renderCallback(e)}))}transition(e){return NC({requestAnimationFrame:n=>this.requestTransition(n),...e})}}function Yh(){const t=e=>e;return t.invert=e=>e,t.copy=Yh,t.invertRange=()=>{},t}class OC{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new av(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const n=this.genomes.get(e);if(!n)throw new Error(`No genome with the name ${e} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}const GC="data:image/png;base64,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",UC={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class HC{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Pt([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:ja(Rh),texture:this._createTextureNow(GC)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(Z(r)&&(r=UC[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:n,weight:r};let o=this._fonts.get(i);return o||(o={metrics:void 0,texture:void 0},this._fonts.set(i,o),this._promises.push(this._loadFontEntry(o,i))),o}async _loadFontEntry(e,n){try{const r=await this._loadMetadata(n.family),i=jC(r,n),o=this.fontRepository+Wh(n.family)+"/"+i.replace(/\.\w+/,""),s=this._createTexture(o+".png"),a=this._loadFont(o+".json");e.texture=await s,e.metrics=await a}catch(r){console.log("Cannot load font. Using default.",r),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let n=this._fontPromises.get(e);return n||(n=fetch(e).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>ja(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Wh(e);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>QC(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){const n=this._webGLHelper.gl;return new Promise((r,i)=>{jr(n,{src:e,min:n.LINEAR},(o,s,a)=>{o?i(o):r(s)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,s)=>{r=jr(n,{src:e,min:n.LINEAR},(a,u,c)=>{a?s(a):o(u)})});return this._promises.push(i),r}}function Wh(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function QC(t){const e=t.split(`
150
+ `),n=[];let r;for(const i of e)if(i.startsWith("fonts {")&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),i.startsWith("}")&&(n.push(r),r=void 0),r){let o=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(o){const s=o[1];r[s]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const s=o[1];r[s]=+o[2]}}return n}function jC(t,e){let n,r=Number.POSITIVE_INFINITY;for(const i of t)if(e.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&e.style==i.style){const o=Math.abs(e.weight-i.weight);o<r&&(r=o,n=i)}return n==null?void 0:n.filename}function VC(t,e){const n=[];let r;for(const i of t.split(`
151
+ `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class YC{constructor(e,n){this.animator=e,this.disabled=!!n,this.damping=.015,this.acceleration=.3,this.accelerationThreshold=100,this.lowerLimit=.5,this.loop=!1,this.momentum=0,this.timestamp=0,this.callback=null,this._transitionCallback=this.animate.bind(this),this.clear()}clear(){this.momentum=0,this.timestamp=null,this.loop=null,this.callback=null}cancel(){this.loop&&(this.animator.cancelTransition(this._transitionCallback),this.clear())}setMomentum(e,n){if(this.disabled){n(e);return}e*this.momentum<0?this.momentum=0:Math.abs(e)>this.accelerationThreshold?this.momentum=bd([this.momentum,e],this.acceleration):this.momentum=e,this.callback=n,this.loop||this.animate()}animate(e){this.callback(this.momentum);const n=e-this.timestamp||0;this.timestamp=e;const r=Math.abs(this.momentum);this.momentum=Math.sign(this.momentum)*Math.max(0,r-((r*this.damping)**1.5+.04)*n),Math.abs(this.momentum)>this.lowerLimit?(this.loop=!0,this.animator.requestTransition(this._transitionCallback)):this.clear()}}function WC(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const o=i;!r.includes(i)&&n.includes(typeof t[o])&&(e[o]=t[o])}return e}function XC(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((u,c)=>{const f=()=>{clearTimeout(r),i=l=>{},u(t(...a))};n&&i("debounced"),clearTimeout(r),i=c,r=setTimeout(f,e)})}}const Xh=new Map;async function ZC(t,e,n){var o;const r=t.symbol;let i=(o=Xh.get(r))!=null?o:await JC(t.symbol);return i?(Xh.set(r,i),rt`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function KC(t){console.log("Searching: "+t);const e={mode:"cors"},r=(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=${t}[GENE]&sort=relevance&retmode=json`,e).then(i=>i.json())).esearchresult.idlist[0];return r?(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id=${r}&retmode=json`,e).then(s=>s.json())).result[r]:null}const qC=XC(KC,500);function JC(t){return qC(t)}const _C=se(".4~r"),$C=se(".4~e");function eE(t){return t===null?rt`<span class="na">NA</span>`:Z(t)?t.substring(0,30):Number.isInteger(t)?""+t:me(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?$C(t):_C(t):ui(t)?t?"True":"False":"?"+typeof t+" "+t}async function tE(t,e,n){const r=(a,u)=>{var c;for(const[f,l]of Object.entries(e.encoders))if((c=l==null?void 0:l.accessor)!=null&&c.fields.includes(a))switch(f){case"color":case"fill":case"stroke":return rt`<span class="color-legend" style="${`background-color: ${l(u)}`}"></span>`}return""},i=rt`<table class="attributes">${Object.entries(t).filter(([a,u])=>!a.startsWith("_")).map(([a,u])=>rt`<tr><th>${a}</th><td>${eE(u)} ${r(a,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),s=o?rt`<div class="title"><strong>${o}</strong></div>`:"";return rt`${s}${i}`}class nE extends Th{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}O("index",hs,["continuous"]),O("locus",$g,["continuous"]),O("null",Yh,[]),vc("fasta",VC);class Zh{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new U1,this.viewFactory=new Gv,this.namedDataProviders=[],this.animator=new zC(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=o=>o.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new YC(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers={default:tE,refseqgene:ZC,...(i=r.tooltipHandlers)!=null?i:{}},this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}updateNamedData(e,n){const r=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!r)throw new Error("No such named data source: "+e);r.dataSource.updateDynamicData(n);for(const i of r.hosts)i.visit(o=>{for(const s of Object.values(o.resolutions.scale))s.reconfigure()});this.animator.requestRender()}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new tw(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new yA(this.container),this.loadingMessageElement.querySelector(".message").addEventListener("transitionend",()=>{this.loadingMessageElement.style.display="none"})}destroy(){this.container.classList.remove("genome-spy"),this.container.classList.remove("loading");for(const[e,n]of this._keyboardListeners)for(const r of n)document.removeEventListener(e,r);for(this._glHelper.finalize();this.container.firstChild;)this.container.firstChild.remove()}async _prepareViewsAndData(){this.spec.genome&&(this.genomeStore=new OC(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Uh,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new HC(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,u)=>{document.addEventListener(a,u);let c=this._keyboardListeners.get(a);c||(c=[],this._keyboardListeners.set(a,c)),c.push(u)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,u,c){return e.viewFactory.createView(a,n,u,c)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await Qh(this.viewRoot),(this.viewRoot instanceof we||this.viewRoot instanceof nn)&&(this.viewRoot=new nE(n,this.viewRoot)),MC(this.viewRoot),IC(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof we&&i.push(a)});const o=CC(this.viewRoot,n.dataFlow);FC(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(a=>console.log(a.subtreeToString())),i.forEach(a=>a.mark.initializeEncoders());const s=Promise.all(i.map(a=>a.mark.initializeGraphics()));for(const a of i)o.addObserver(u=>{a.mark.initializeData(),a.mark.updateGraphicsData()},a);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(a=>a.load())),this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))u.reconfigure()}),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(u)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>wo(a,"size")),this._glHelper.invalidateSize()}async launch(){try{return this._prepareContainer(),await this._prepareViewsAndData(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),this._glHelper.addEventListener("resize",()=>{this.computeLayout(),this.renderAll()}),!0}catch(e){const n=`${e.view?`At "${e.view.getPathString()}": `:""}${e.toString()}`;return console.error(e.stack),rE(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const e=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),s=new RC(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=u=>{this.viewRoot.propagateInteractionEvent(new LC(s,u)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(s.x,s.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const u=r;if(Math.abs(u.deltaX)>Math.abs(u.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const c=WC(u);this._wheelInertia.setMomentum(u.deltaY*(u.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",{...c,deltaMode:0,deltaX:0,deltaY:f});a(l)}),u.preventDefault();return}}if(r.type=="click"){const u=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(c=>c.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(c=>c(u))}a(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var o;const r=this._glHelper.readPickingPixel(e,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(s=>{if(s instanceof we){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(u=>{a(u)==i&&(this._currentHover={mark:s.mark,datum:u,uniqueId:i})})}if(this._currentHover)return Kr}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{var c;if(!s.isPickingParticipant())return;const u=s.properties.tooltip;if(u!==null){const f=(c=u==null?void 0:u.handler)!=null?c:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(a,s,u==null?void 0:u.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new Vh({picking:!1},this._glHelper),this._pickingContext=new Vh({picking:!0},this._glHelper),e.render(new PC(this._renderingContext,this._pickingContext),On.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){!this._dirtyPickingBuffer||(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof we&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function rE(t,e){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=e,n.appendChild(r),t.appendChild(n)}const iE="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";async function oE(t,e,n={}){var o,s,a;let r;if(Z(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const u=ke(e)?e:await Kh(e);if((o=u.baseUrl)!=null||(u.baseUrl=""),(s=u.width)!=null||(u.width="container"),(a=u.padding)!=null||(u.padding=10),r==document.body){const c=document.createElement("div");c.style.position="fixed",c.style.inset="0",c.style.overflow="hidden",r.appendChild(c),r=c}i=new Zh(r,u,n),sE(i,n),await i.launch()}catch(u){r.innerText=u.toString(),console.error(u)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(u,c){const f=i._eventListeners;let l=f.get(u);l||(l=new Set,f.set(u,l)),l.add(c)},removeEventListener(u,c){var l;(l=i._eventListeners.get(u))==null||l.delete(c)},getScaleResolutionByName(u){return i.getNamedScaleResolutions().get(u)},updateNamedData:i.updateNamedData.bind(i)}}function sE(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function Kh(t){let e;try{e=JSON.parse(await Di().load(t))}catch(n){throw new Error(`Could not load or parse configuration: ${t}, reason: ${n.message}`)}if(!e.baseUrl){const n=t.match(/^[^?#]*\//);e.baseUrl=n&&n[0]||"./"}return e}R.GenomeSpy=Zh,R.embed=oE,R.html=rt,R.icon=iE,R.loadSpec=Kh,Object.defineProperties(R,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});