@genome-spy/app 0.23.0 → 0.24.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 +75 -68
- package/dist/style.css +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
var
|
2
|
-
\r]`),n=t.charCodeAt(0);function r(l,d){var h,p,m=i(l,function(y,g){if(h)return h(y,g-1);p=y,h=d?
|
3
|
-
`)}function s(l,d){return d==null&&(d=
|
1
|
+
var uk=Object.defineProperty;var lk=(j,z,ae)=>z in j?uk(j,z,{enumerable:!0,configurable:!0,writable:!0,value:ae}):j[z]=ae;var sb=(j,z,ae)=>(lk(j,typeof z!="symbol"?z+"":z,ae),ae),sd=(j,z,ae)=>{if(!z.has(j))throw TypeError("Cannot "+ae)};var ie=(j,z,ae)=>(sd(j,z,"read from private field"),ae?ae.call(j):z.get(j)),Me=(j,z,ae)=>{if(z.has(j))throw TypeError("Cannot add the same private member more than once");z instanceof WeakSet?z.add(j):z.set(j,ae)},Ho=(j,z,ae,Cn)=>(sd(j,z,"write to private field"),Cn?Cn.call(j,ae):z.set(j,ae),ae),cb=(j,z,ae,Cn)=>({set _(_s){Ho(j,z,_s,ae)},get _(){return ie(j,z,Cn)}}),be=(j,z,ae)=>(sd(j,z,"access private method"),ae);(function(j,z){typeof exports=="object"&&typeof module<"u"?z(exports):typeof define=="function"&&define.amd?define(["exports"],z):(j=typeof globalThis<"u"?globalThis:j||self,z(j.genomeSpyApp={}))})(this,function(j){var Fo,cd,ai,si,tt,ci,Po,ud,Ct,xn,Gs,ub,Hs,lb,hr,Qo,zo,ld,Ro,fd,jo,dd,Qs,fb,Vs,db;"use strict";function z(t,e,n){return t.fields=e||[],t.fname=n,t}function ae(t){return t==null?null:t.fname}function Cn(t){return t==null?null:t.fields}function _s(t){return t.length===1?hb(t[0]):pb(t)}const hb=t=>function(e){return e[t]},pb=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function oe(t){throw Error(t)}function mb(t){const e=[],n=t.length;let r=null,i=0,o="",a,s,c;t=t+"";function u(){e.push(o+t.substring(a,s)),o="",a=s+1}for(a=s=0;s<n;++s)if(c=t[s],c==="\\")o+=t.substring(a,s),o+=t.substring(++s,++s),a=s;else if(c===r)u(),r=null,i=-1;else{if(r)continue;a===i&&c==='"'||a===i&&c==="'"?(a=s+1,r=c):c==="."&&!i?s>a?u():a=s+1:c==="["?(s>a&&u(),i=a=s+1):c==="]"&&(i||oe("Access path missing open bracket: "+t),i>0&&u(),i=0,a=s+1)}return i&&oe("Access path missing closing bracket: "+t),r&&oe("Access path missing closing quote: "+t),s>a&&(s++,u()),e}function Vo(t,e,n){const r=mb(t);return t=r.length===1?r[0]:t,z((n&&n.get||_s)(r),[t],e||t)}Vo("id");const Yo=z(t=>t,[],"identity");z(()=>0,[],"zero"),z(()=>1,[],"one"),z(()=>!0,[],"true"),z(()=>!1,[],"false");var Xe=Array.isArray;function Re(t){return t===Object(t)}function nt(t){return t[t.length-1]}function ui(t){return t==null||t===""?null:+t}const hd=t=>e=>t*Math.exp(e),pd=t=>e=>Math.log(t*e),gb=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),yb=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,_o=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function Ws(t,e,n,r){const i=n(t[0]),o=n(nt(t)),a=(o-i)*e;return[r(i-a),r(o-a)]}function vb(t,e){return Ws(t,e,ui,Yo)}function bb(t,e){var n=Math.sign(t[0]);return Ws(t,e,pd(n),hd(n))}function Ab(t,e,n){return Ws(t,e,_o(n),_o(1/n))}function Wo(t,e,n,r,i){const o=r(t[0]),a=r(nt(t)),s=e!=null?r(e):(o+a)/2;return[i(s+(o-s)*n),i(s+(a-s)*n)]}function Xs(t,e,n){return Wo(t,e,n,ui,Yo)}function md(t,e,n){const r=Math.sign(t[0]);return Wo(t,e,n,pd(r),hd(r))}function Zs(t,e,n,r){return Wo(t,e,n,_o(r),_o(1/r))}function wb(t,e,n,r){return Wo(t,e,n,gb(r),yb(r))}function qs(t){return t!=null?Xe(t)?t:[t]:[]}function xb(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 ke(t){return typeof t=="function"}const Cb="descending";function gd(t,e,n){n=n||{},e=qs(e)||[];const r=[],i=[],o={},a=n.comparator||Eb;return qs(t).forEach((s,c)=>{s!=null&&(r.push(e[c]===Cb?-1:1),i.push(s=ke(s)?s:Vo(s,null,n)),(Cn(s)||[]).forEach(u=>o[u]=1))}),i.length===0?null:z(a(i,r),Object.keys(o))}const yd=(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),Eb=(t,e)=>t.length===1?Sb(t[0],e[0]):Db(t,e,t.length),Sb=(t,e)=>function(n,r){return yd(t(n),t(r))*e},Db=(t,e,n)=>(e.push(0),function(r,i){let o,a=0,s=-1;for(;a===0&&++s<n;)o=t[s],a=yd(o(r),o(i));return a*e[s]});function Mb(t){return ke(t)?t:()=>t}function Ks(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 Tb=Object.prototype.hasOwnProperty;function En(t,e){return Tb.call(t,e)}function Xo(t){return typeof t=="boolean"}function Ib(t){return Object.prototype.toString.call(t)==="[object Date]"}function Nb(t){return t&&ke(t[Symbol.iterator])}function ce(t){return typeof t=="number"}function ee(t){return typeof t=="string"}function kb(t,e){const n=t[0],r=nt(t),i=+e;return i?i===1?r:n+i*(r-n):n}function Zo(t){return t&&nt(t)-t[0]||0}function qo(t){return Xe(t)?"["+t.map(qo)+"]":Re(t)||ee(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function Lb(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const Ob=t=>ce(t)||Ib(t)?t:Date.parse(t);function Bb(t,e){return e=e||Ob,t==null||t===""?null:e(t)}function Fb(t){return t==null||t===""?null:t+""}function Ko(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var vd={},Js={},$s=34,li=10,ec=13;function bd(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Pb(t,e){var n=bd(t);return function(r,i){return e(n(r),i,t)}}function Ad(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 Le(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function zb(t){return t<0?"-"+Le(-t,6):t>9999?"+"+Le(t,6):Le(t,4)}function Rb(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":zb(t.getUTCFullYear())+"-"+Le(t.getUTCMonth()+1,2)+"-"+Le(t.getUTCDate(),2)+(i?"T"+Le(e,2)+":"+Le(n,2)+":"+Le(r,2)+"."+Le(i,3)+"Z":r?"T"+Le(e,2)+":"+Le(n,2)+":"+Le(r,2)+"Z":n||e?"T"+Le(e,2)+":"+Le(n,2)+"Z":"")}function wd(t){var e=new RegExp('["'+t+`
|
2
|
+
\r]`),n=t.charCodeAt(0);function r(l,d){var h,p,m=i(l,function(y,g){if(h)return h(y,g-1);p=y,h=d?Pb(y,d):bd(y)});return m.columns=p||[],m}function i(l,d){var h=[],p=l.length,m=0,y=0,g,A=p<=0,w=!1;l.charCodeAt(p-1)===li&&--p,l.charCodeAt(p-1)===ec&&--p;function C(){if(A)return Js;if(w)return w=!1,vd;var v,x=m,E;if(l.charCodeAt(x)===$s){for(;m++<p&&l.charCodeAt(m)!==$s||l.charCodeAt(++m)===$s;);return(v=m)>=p?A=!0:(E=l.charCodeAt(m++))===li?w=!0:E===ec&&(w=!0,l.charCodeAt(m)===li&&++m),l.slice(x+1,v-1).replace(/""/g,'"')}for(;m<p;){if((E=l.charCodeAt(v=m++))===li)w=!0;else if(E===ec)w=!0,l.charCodeAt(m)===li&&++m;else if(E!==n)continue;return l.slice(x,v)}return A=!0,l.slice(x,p)}for(;(g=C())!==Js;){for(var b=[];g!==vd&&g!==Js;)b.push(g),g=C();d&&(b=d(b,y++))==null||h.push(b)}return h}function o(l,d){return l.map(function(h){return d.map(function(p){return f(h[p])}).join(t)})}function a(l,d){return d==null&&(d=Ad(l)),[d.map(f).join(t)].concat(o(l,d)).join(`
|
3
|
+
`)}function s(l,d){return d==null&&(d=Ad(l)),o(l,d).join(`
|
4
4
|
`)}function c(l){return l.map(u).join(`
|
5
|
-
`)}function u(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?yv(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:a,formatBody:s,formatRows:c,formatRow:u,formatValue:f}}var vv=yd(" "),bv=vv.parseRows;function Av(t){return t}function xv(t){if(t==null)return Av;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],a=t.translate[1];return function(s,c){c||(e=n=0);var u=2,f=s.length,l=new Array(f);for(l[0]=(e+=s[0])*r+o,l[1]=(n+=s[1])*i+a;u<f;)l[u]=s[u],++u;return l}}function wv(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Cv(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return vd(t,n)})}:vd(t,e)}function vd(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=bd(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 bd(t,e){var n=xv(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var d=r[f<0?~f:f],h=0,p=d.length;h<p;++h)l.push(n(d[h],h));f<0&&wv(l,p)}function o(f){return n(f)}function a(f){for(var l=[],d=0,h=f.length;d<h;++d)i(f[d],l);return l.length<2&&l.push(l[0]),l}function s(f){for(var l=a(f);l.length<4;)l.push(l[0]);return l}function c(f){return f.map(s)}function u(f){var l=f.type,d;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(u)};case"Point":d=o(f.coordinates);break;case"MultiPoint":d=f.coordinates.map(o);break;case"LineString":d=a(f.arcs);break;case"MultiLineString":d=f.arcs.map(a);break;case"Polygon":d=c(f.arcs);break;case"MultiPolygon":d=f.arcs.map(c);break;default:return null}return{type:l,coordinates:d}}return u(e)}function Sv(t,e){var n={},r={},i={},o=[],a=-1;e.forEach(function(u,f){var l=t.arcs[u<0?~u:u],d;l.length<3&&!l[1][0]&&!l[1][1]&&(d=e[++a],e[a]=u,e[f]=d)}),e.forEach(function(u){var f=s(u),l=f[0],d=f[1],h,p;if(h=i[l])if(delete i[h.end],h.push(u),h.end=d,p=r[d]){delete r[p.start];var m=p===h?h:h.concat(p);r[m.start=h.start]=i[m.end=p.end]=m}else r[h.start]=i[h.end]=h;else if(h=r[d])if(delete r[h.start],h.unshift(u),h.start=l,p=i[l]){delete i[p.end];var y=p===h?h:p.concat(h);r[y.start=p.start]=i[y.end=h.end]=y}else r[h.start]=i[h.end]=h;else h=[u],r[h.start=l]=i[h.end=d]=h});function s(u){var f=t.arcs[u<0?~u:u],l=f[0],d;return t.transform?(d=[0,0],f.forEach(function(h){d[0]+=h[0],d[1]+=h[1]})):d=f[f.length-1],u<0?[d,l]:[l,d]}function c(u,f){for(var l in u){var d=u[l];delete f[d.start],delete d.start,delete d.end,d.forEach(function(h){n[h<0?~h:h]=1}),o.push(d)}}return c(i,r),c(r,i),e.forEach(function(u){n[u<0?~u:u]||o.push([u])}),o}function Ev(t){return bd(t,Dv.apply(this,arguments))}function Dv(t,e,n){var r,i,o;if(arguments.length>1)r=Mv(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Sv(t,r)}}function Mv(t,e,n){var r=[],i=[],o;function a(l){var d=l<0?~l:l;(i[d]||(i[d]=[])).push({i:l,g:o})}function s(l){l.forEach(a)}function c(l){l.forEach(s)}function u(l){l.forEach(c)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":s(l.arcs);break;case"MultiLineString":case"Polygon":c(l.arcs);break;case"MultiPolygon":u(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 Dn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Tv(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function qo(t){let e,n,r;t.length!==2?(e=Dn,n=(s,c)=>Dn(t(s),c),r=(s,c)=>t(s)-c):(e=t===Dn||t===Tv?t:Iv,n=t,r=t);function i(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function a(s,c,u=0,f=s.length){const l=i(s,c,u,f-1);return l>u&&r(s[l-1],c)>-r(s[l],c)?l-1:l}return{left:i,center:a,right:o}}function Iv(){return 0}function Ad(t){return t===null?NaN:+t}const xd=qo(Dn),tc=xd.right;xd.left,qo(Ad).center;var dr=tc;function kv(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 Mn extends Map{constructor(e,n=Bv){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(wd(this,e))}has(e){return super.has(wd(this,e))}set(e,n){return super.set(Nv(this,e),n)}delete(e){return super.delete(Lv(this,e))}}function wd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Nv({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Lv({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Bv(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Ko(t){return t}function ai(t,...e){return nc(t,Ko,Ko,e)}function Ov(t,...e){return nc(t,Array.from,Ko,e)}function Pv(t,e,...n){return nc(t,Ko,e,n)}function nc(t,e,n,r){return function i(o,a){if(a>=r.length)return n(o);const s=new Mn,c=r[a++];let u=-1;for(const f of o){const l=c(f,++u,o),d=s.get(l);d?d.push(f):s.set(l,[f])}for(const[f,l]of s)s.set(f,i(l,a));return e(s)}(t,0)}function Fv(t,e){return Array.from(e,n=>t[n])}function zv(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n]=e;if(n&&n.length!==2||e.length>1){const r=Uint32Array.from(t,(i,o)=>o);return e.length>1?(e=e.map(i=>t.map(i)),r.sort((i,o)=>{for(const a of e){const s=rc(a[i],a[o]);if(s)return s}})):(n=t.map(n),r.sort((i,o)=>rc(n[i],n[o]))),Fv(t,r)}return t.sort(Rv(n))}function Rv(t=Dn){if(t===Dn)return rc;if(typeof t!="function")throw new TypeError("compare is not a function");return(e,n)=>{const r=t(e,n);return r||r===0?r:(t(n,n)===0)-(t(e,e)===0)}}function rc(t,e){return(t==null||!(t>=t))-(e==null||!(e>=e))||(t<e?-1:t>e?1:0)}var ic=Math.sqrt(50),oc=Math.sqrt(10),ac=Math.sqrt(2);function Jo(t,e,n){var r,i=-1,o,a,s;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(s=Cd(t,e,n))===0||!isFinite(s))return[];if(s>0){let c=Math.round(t/s),u=Math.round(e/s);for(c*s<t&&++c,u*s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)*s}else{s=-s;let c=Math.round(t*s),u=Math.round(e*s);for(c/s<t&&++c,u/s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)/s}return r&&a.reverse(),a}function Cd(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>=ic?10:o>=oc?5:o>=ac?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ic?10:o>=oc?5:o>=ac?2:1)}function Tn(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>=ic?i*=10:o>=oc?i*=5:o>=ac&&(i*=2),e<t?-i:i}function sc(t,e,n=Ad){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),a=+n(t[o],o,t),s=+n(t[o+1],o+1,t);return a+(s-a)*(i-o)}}function Wt(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 $o(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 jv(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function ea(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 hr(t){return t=ea(Math.abs(t)),t?t[1]:NaN}function Uv(t,e){return function(n,r){for(var i=n.length,o=[],a=0,s=t[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),o.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}function Gv(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Hv=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Xt(t){if(!(e=Hv.exec(t)))throw new Error("invalid format: "+t);var e;return new cc({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]})}Xt.prototype=cc.prototype;function cc(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+""}cc.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 Qv(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 Sd;function Vv(t,e){var n=ea(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Sd=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+ea(t,Math.max(0,e+o-1))[0]}function Ed(t,e){var n=ea(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")}var Dd={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:jv,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)=>Ed(t*100,e),r:Ed,s:Vv,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Md(t){return t}var Td=Array.prototype.map,Id=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Yv(t){var e=t.grouping===void 0||t.thousands===void 0?Md:Uv(Td.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?Md:Gv(Td.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Xt(l);var d=l.fill,h=l.align,p=l.sign,m=l.symbol,y=l.zero,g=l.width,x=l.comma,A=l.precision,C=l.trim,b=l.type;b==="n"?(x=!0,b="g"):Dd[b]||(A===void 0&&(A=12),C=!0,b="g"),(y||d==="0"&&h==="=")&&(y=!0,d="0",h="=");var v=m==="$"?n:m==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w=m==="$"?r:/[%p]/.test(b)?a:"",E=Dd[b],k=/[defgprs%]/.test(b);A=A===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,A)):Math.max(0,Math.min(20,A));function L(I){var P=v,Z=w,Q,fe,Se;if(b==="c")Z=E(I)+Z,I="";else{I=+I;var Cn=I<0||1/I<0;if(I=isNaN(I)?c:E(Math.abs(I),A),C&&(I=Qv(I)),Cn&&+I==0&&p!=="+"&&(Cn=!1),P=(Cn?p==="("?p:s:p==="-"||p==="("?"":p)+P,Z=(b==="s"?Id[8+Sd/3]:"")+Z+(Cn&&p==="("?")":""),k){for(Q=-1,fe=I.length;++Q<fe;)if(Se=I.charCodeAt(Q),48>Se||Se>57){Z=(Se===46?i+I.slice(Q+1):I.slice(Q))+Z,I=I.slice(0,Q);break}}}x&&!y&&(I=e(I,1/0));var W=P.length+I.length+Z.length,We=W<g?new Array(g-W+1).join(d):"";switch(x&&y&&(I=e(We+I,We.length?g-Z.length:1/0),We=""),h){case"<":I=P+I+Z+We;break;case"=":I=P+We+I+Z;break;case"^":I=We.slice(0,W=We.length>>1)+P+I+Z+We.slice(W);break;default:I=We+P+I+Z;break}return o(I)}return L.toString=function(){return l+""},L}function f(l,d){var h=u((l=Xt(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(hr(d)/3)))*3,m=Math.pow(10,-p),y=Id[8+p/3];return function(g){return h(m*g)+y}}return{format:u,formatPrefix:f}}var ta,he,uc;_v({thousands:",",grouping:[3],currency:["$",""]});function _v(t){return ta=Yv(t),he=ta.format,uc=ta.formatPrefix,ta}function kd(t){return Math.max(0,-hr(Math.abs(t)))}function Nd(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(hr(e)/3)))*3-hr(Math.abs(t)))}function Ld(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,hr(e)-hr(t))+1}var lc=new Date,fc=new Date;function me(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 a=i(o),s=i.ceil(o);return o-a<s-o?a:s},i.offset=function(o,a){return e(o=new Date(+o),a==null?1:Math.floor(a)),o},i.range=function(o,a,s){var c=[],u;if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o<a)||!(s>0))return c;do c.push(u=new Date(+o)),e(o,s),t(o);while(u<o&&o<a);return c},i.filter=function(o){return me(function(a){if(a>=a)for(;t(a),!o(a);)a.setTime(a-1)},function(a,s){if(a>=a)if(s<0)for(;++s<=0;)for(;e(a,-1),!o(a););else for(;--s>=0;)for(;e(a,1),!o(a););})},n&&(i.count=function(o,a){return lc.setTime(+o),fc.setTime(+a),t(lc),t(fc),Math.floor(n(lc,fc))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(a){return r(a)%o===0}:function(a){return i.count(0,a)%o===0}):i}),i}var dc=me(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});dc.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?me(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):dc};var hc=dc;const Mt=1e3,Ke=Mt*60,Tt=Ke*60,In=Tt*24,pc=In*7,Bd=In*30,mc=In*365;var Wv=me(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*Mt)},function(t,e){return(e-t)/Mt},function(t){return t.getUTCSeconds()}),Zt=Wv,Xv=me(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Mt)},function(t,e){t.setTime(+t+e*Ke)},function(t,e){return(e-t)/Ke},function(t){return t.getMinutes()}),gc=Xv,Zv=me(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Mt-t.getMinutes()*Ke)},function(t,e){t.setTime(+t+e*Tt)},function(t,e){return(e-t)/Tt},function(t){return t.getHours()}),yc=Zv,qv=me(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ke)/In,t=>t.getDate()-1),kn=qv;function Nn(t){return me(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())*Ke)/pc})}var na=Nn(0),vc=Nn(1);Nn(2),Nn(3);var si=Nn(4);Nn(5),Nn(6);var Kv=me(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()}),ra=Kv,Od=me(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()});Od.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:me(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)})};var qt=Od,Jv=me(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ke)},function(t,e){return(e-t)/Ke},function(t){return t.getUTCMinutes()}),bc=Jv,$v=me(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*Tt)},function(t,e){return(e-t)/Tt},function(t){return t.getUTCHours()}),Ac=$v,eb=me(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/In},function(t){return t.getUTCDate()-1}),Ln=eb;function Bn(t){return me(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)/pc})}var ia=Bn(0),xc=Bn(1);Bn(2),Bn(3);var ci=Bn(4);Bn(5),Bn(6);var tb=me(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()}),oa=tb,Pd=me(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()});Pd.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:me(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)})};var Kt=Pd;function Fd(t,e,n,r,i,o){const a=[[Zt,1,Mt],[Zt,5,5*Mt],[Zt,15,15*Mt],[Zt,30,30*Mt],[o,1,Ke],[o,5,5*Ke],[o,15,15*Ke],[o,30,30*Ke],[i,1,Tt],[i,3,3*Tt],[i,6,6*Tt],[i,12,12*Tt],[r,1,In],[r,2,2*In],[n,1,pc],[e,1,Bd],[e,3,3*Bd],[t,1,mc]];function s(u,f,l){const d=f<u;d&&([u,f]=[f,u]);const h=l&&typeof l.range=="function"?l:c(u,f,l),p=h?h.range(u,+f+1):[];return d?p.reverse():p}function c(u,f,l){const d=Math.abs(f-u)/l,h=qo(([,,y])=>y).right(a,d);if(h===a.length)return t.every(Tn(u/mc,f/mc,l));if(h===0)return hc.every(Math.max(Tn(u,f,l),1));const[p,m]=a[d/a[h-1][2]<a[h][2]/d?h-1:h];return p.every(m)}return[s,c]}const[nb,rb]=Fd(Kt,oa,ia,Ln,Ac,bc),[ib,ob]=Fd(qt,ra,na,kn,yc,gc),ui="year",li="quarter",fi="month",di="week",hi="date",aa="day",wc="dayofyear",pi="hours",mi="minutes",gi="seconds",sa="milliseconds";[ui,li,fi,di,hi,aa,wc,pi,mi,gi,sa].reduce((t,e,n)=>(t[e]=1+n,t),{});const ab={[ui]:qt,[li]:ra.every(3),[fi]:ra,[di]:na,[hi]:kn,[aa]:kn,[wc]:kn,[pi]:yc,[mi]:gc,[gi]:Zt,[sa]:hc},sb={[ui]:Kt,[li]:oa.every(3),[fi]:oa,[di]:ia,[hi]:Ln,[aa]:Ln,[wc]:Ln,[pi]:Ac,[mi]:bc,[gi]:Zt,[sa]:hc};function cb(t){return ab[t]}function ub(t){return sb[t]}function Cc(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 Sc(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 yi(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function zd(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,s=t.months,c=t.shortMonths,u=vi(i),f=bi(i),l=vi(o),d=bi(o),h=vi(a),p=bi(a),m=vi(s),y=bi(s),g=vi(c),x=bi(c),A={a:Cn,A:W,b:We,B:Ro,c:null,d:Qd,e:Qd,f:Lb,g:Hb,G:Vb,H:Ib,I:kb,j:Nb,L:Vd,m:Bb,M:Ob,p:jo,q:Vs,Q:qd,s:Kd,S:Pb,u:Fb,U:zb,V:Rb,w:jb,W:Ub,x:null,X:null,y:Gb,Y:Qb,Z:Yb,"%":Zd},C={a:td,A:kk,b:Nk,B:Lk,c:null,d:_d,e:_d,f:Zb,g:oA,G:sA,H:_b,I:Wb,j:Xb,L:Wd,m:qb,M:Kb,p:Bk,q:Ok,Q:qd,s:Kd,S:Jb,u:$b,U:eA,V:tA,w:nA,W:rA,x:null,X:null,y:iA,Y:aA,Z:cA,"%":Zd},b={a:L,A:I,b:P,B:Z,c:Q,d:Gd,e:Gd,f:Eb,g:Ud,G:jd,H:Hd,I:Hd,j:xb,L:Sb,m:Ab,M:wb,p:k,q:bb,Q:Mb,s:Tb,S:Cb,u:pb,U:mb,V:gb,w:hb,W:yb,x:fe,X:Se,y:Ud,Y:jd,Z:vb,"%":Db};A.x=v(n,A),A.X=v(r,A),A.c=v(e,A),C.x=v(n,C),C.X=v(r,C),C.c=v(e,C);function v(O,H){return function(X){var M=[],Re=-1,$=0,Xe=O.length,Ze,fr,F2;for(X instanceof Date||(X=new Date(+X));++Re<Xe;)O.charCodeAt(Re)===37&&(M.push(O.slice($,Re)),(fr=Rd[Ze=O.charAt(++Re)])!=null?Ze=O.charAt(++Re):fr=Ze==="e"?" ":"0",(F2=H[Ze])&&(Ze=F2(X,fr)),M.push(Ze),$=Re+1);return M.push(O.slice($,Re)),M.join("")}}function w(O,H){return function(X){var M=yi(1900,void 0,1),Re=E(M,O,X+="",0),$,Xe;if(Re!=X.length)return null;if("Q"in M)return new Date(M.Q);if("s"in M)return new Date(M.s*1e3+("L"in M?M.L:0));if(H&&!("Z"in M)&&(M.Z=0),"p"in M&&(M.H=M.H%12+M.p*12),M.m===void 0&&(M.m="q"in M?M.q:0),"V"in M){if(M.V<1||M.V>53)return null;"w"in M||(M.w=1),"Z"in M?($=Sc(yi(M.y,0,1)),Xe=$.getUTCDay(),$=Xe>4||Xe===0?xc.ceil($):xc($),$=Ln.offset($,(M.V-1)*7),M.y=$.getUTCFullYear(),M.m=$.getUTCMonth(),M.d=$.getUTCDate()+(M.w+6)%7):($=Cc(yi(M.y,0,1)),Xe=$.getDay(),$=Xe>4||Xe===0?vc.ceil($):vc($),$=kn.offset($,(M.V-1)*7),M.y=$.getFullYear(),M.m=$.getMonth(),M.d=$.getDate()+(M.w+6)%7)}else("W"in M||"U"in M)&&("w"in M||(M.w="u"in M?M.u%7:"W"in M?1:0),Xe="Z"in M?Sc(yi(M.y,0,1)).getUTCDay():Cc(yi(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(Xe+5)%7:M.w+M.U*7-(Xe+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,Sc(M)):Cc(M)}}function E(O,H,X,M){for(var Re=0,$=H.length,Xe=X.length,Ze,fr;Re<$;){if(M>=Xe)return-1;if(Ze=H.charCodeAt(Re++),Ze===37){if(Ze=H.charAt(Re++),fr=b[Ze in Rd?H.charAt(Re++):Ze],!fr||(M=fr(O,X,M))<0)return-1}else if(Ze!=X.charCodeAt(M++))return-1}return M}function k(O,H,X){var M=u.exec(H.slice(X));return M?(O.p=f.get(M[0].toLowerCase()),X+M[0].length):-1}function L(O,H,X){var M=h.exec(H.slice(X));return M?(O.w=p.get(M[0].toLowerCase()),X+M[0].length):-1}function I(O,H,X){var M=l.exec(H.slice(X));return M?(O.w=d.get(M[0].toLowerCase()),X+M[0].length):-1}function P(O,H,X){var M=g.exec(H.slice(X));return M?(O.m=x.get(M[0].toLowerCase()),X+M[0].length):-1}function Z(O,H,X){var M=m.exec(H.slice(X));return M?(O.m=y.get(M[0].toLowerCase()),X+M[0].length):-1}function Q(O,H,X){return E(O,e,H,X)}function fe(O,H,X){return E(O,n,H,X)}function Se(O,H,X){return E(O,r,H,X)}function Cn(O){return a[O.getDay()]}function W(O){return o[O.getDay()]}function We(O){return c[O.getMonth()]}function Ro(O){return s[O.getMonth()]}function jo(O){return i[+(O.getHours()>=12)]}function Vs(O){return 1+~~(O.getMonth()/3)}function td(O){return a[O.getUTCDay()]}function kk(O){return o[O.getUTCDay()]}function Nk(O){return c[O.getUTCMonth()]}function Lk(O){return s[O.getUTCMonth()]}function Bk(O){return i[+(O.getUTCHours()>=12)]}function Ok(O){return 1+~~(O.getUTCMonth()/3)}return{format:function(O){var H=v(O+="",A);return H.toString=function(){return O},H},parse:function(O){var H=w(O+="",!1);return H.toString=function(){return O},H},utcFormat:function(O){var H=v(O+="",C);return H.toString=function(){return O},H},utcParse:function(O){var H=w(O+="",!0);return H.toString=function(){return O},H}}}var Rd={"-":"",_:" ","0":"0"},ge=/^\s*\d+/,lb=/^%/,fb=/[\\^$*+?|[\]().{}]/g;function Y(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 db(t){return t.replace(fb,"\\$&")}function vi(t){return new RegExp("^(?:"+t.map(db).join("|")+")","i")}function bi(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function hb(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function pb(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function mb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function gb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function yb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function jd(t,e,n){var r=ge.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Ud(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function vb(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 bb(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Ab(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Gd(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function xb(t,e,n){var r=ge.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Hd(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function wb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Cb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Sb(t,e,n){var r=ge.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Eb(t,e,n){var r=ge.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Db(t,e,n){var r=lb.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Mb(t,e,n){var r=ge.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Tb(t,e,n){var r=ge.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Qd(t,e){return Y(t.getDate(),e,2)}function Ib(t,e){return Y(t.getHours(),e,2)}function kb(t,e){return Y(t.getHours()%12||12,e,2)}function Nb(t,e){return Y(1+kn.count(qt(t),t),e,3)}function Vd(t,e){return Y(t.getMilliseconds(),e,3)}function Lb(t,e){return Vd(t,e)+"000"}function Bb(t,e){return Y(t.getMonth()+1,e,2)}function Ob(t,e){return Y(t.getMinutes(),e,2)}function Pb(t,e){return Y(t.getSeconds(),e,2)}function Fb(t){var e=t.getDay();return e===0?7:e}function zb(t,e){return Y(na.count(qt(t)-1,t),e,2)}function Yd(t){var e=t.getDay();return e>=4||e===0?si(t):si.ceil(t)}function Rb(t,e){return t=Yd(t),Y(si.count(qt(t),t)+(qt(t).getDay()===4),e,2)}function jb(t){return t.getDay()}function Ub(t,e){return Y(vc.count(qt(t)-1,t),e,2)}function Gb(t,e){return Y(t.getFullYear()%100,e,2)}function Hb(t,e){return t=Yd(t),Y(t.getFullYear()%100,e,2)}function Qb(t,e){return Y(t.getFullYear()%1e4,e,4)}function Vb(t,e){var n=t.getDay();return t=n>=4||n===0?si(t):si.ceil(t),Y(t.getFullYear()%1e4,e,4)}function Yb(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Y(e/60|0,"0",2)+Y(e%60,"0",2)}function _d(t,e){return Y(t.getUTCDate(),e,2)}function _b(t,e){return Y(t.getUTCHours(),e,2)}function Wb(t,e){return Y(t.getUTCHours()%12||12,e,2)}function Xb(t,e){return Y(1+Ln.count(Kt(t),t),e,3)}function Wd(t,e){return Y(t.getUTCMilliseconds(),e,3)}function Zb(t,e){return Wd(t,e)+"000"}function qb(t,e){return Y(t.getUTCMonth()+1,e,2)}function Kb(t,e){return Y(t.getUTCMinutes(),e,2)}function Jb(t,e){return Y(t.getUTCSeconds(),e,2)}function $b(t){var e=t.getUTCDay();return e===0?7:e}function eA(t,e){return Y(ia.count(Kt(t)-1,t),e,2)}function Xd(t){var e=t.getUTCDay();return e>=4||e===0?ci(t):ci.ceil(t)}function tA(t,e){return t=Xd(t),Y(ci.count(Kt(t),t)+(Kt(t).getUTCDay()===4),e,2)}function nA(t){return t.getUTCDay()}function rA(t,e){return Y(xc.count(Kt(t)-1,t),e,2)}function iA(t,e){return Y(t.getUTCFullYear()%100,e,2)}function oA(t,e){return t=Xd(t),Y(t.getUTCFullYear()%100,e,2)}function aA(t,e){return Y(t.getUTCFullYear()%1e4,e,4)}function sA(t,e){var n=t.getUTCDay();return t=n>=4||n===0?ci(t):ci.ceil(t),Y(t.getUTCFullYear()%1e4,e,4)}function cA(){return"+0000"}function Zd(){return"%"}function qd(t){return+t}function Kd(t){return Math.floor(+t/1e3)}var pr,Ec,Jd,Dc,$d;uA({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 uA(t){return pr=zd(t),Ec=pr.format,Jd=pr.parse,Dc=pr.utcFormat,$d=pr.utcParse,pr}function Ai(t){const e={};return n=>e[n]||(e[n]=t(n))}function lA(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=fA(r,i);const a=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function fA(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 dA(t){const e=Ai(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=Xt(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return lA(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,a){a=Xt(a==null?",f":a);const s=Tn(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(a.precision==null)switch(a.type){case"s":return isNaN(u=Nd(s,c))||(a.precision=u),n(a,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=Ld(s,c))||(a.precision=u-(a.type==="e"));break}case"f":case"%":{isNaN(u=kd(s))||(a.precision=u-(a.type==="%")*2);break}}return e(a)}}}hA();function hA(){return dA({format:he,formatPrefix:uc})}function eh(t,e,n){n=n||{},je(n)||ce("Invalid time multi-format specifier: ".concat(n));const r=e(gi),i=e(mi),o=e(pi),a=e(hi),s=e(di),c=e(fi),u=e(li),f=e(ui),l=t(n[sa]||".%L"),d=t(n[gi]||":%S"),h=t(n[mi]||"%I:%M"),p=t(n[pi]||"%I %p"),m=t(n[hi]||n[aa]||"%a %d"),y=t(n[di]||"%b %d"),g=t(n[fi]||"%B"),x=t(n[li]||"%B"),A=t(n[ui]||"%Y");return C=>(r(C)<C?l:i(C)<C?d:o(C)<C?h:a(C)<C?p:c(C)<C?s(C)<C?m:y:f(C)<C?u(C)<C?g:x:A)(C)}function th(t){const e=Ai(t.format),n=Ai(t.utcFormat);return{timeFormat:r=>re(r)?e(r):eh(e,cb,r),utcFormat:r=>re(r)?n(r):eh(n,ub,r),timeParse:Ai(t.parse),utcParse:Ai(t.utcParse)}}let Mc;pA();function pA(){return Mc=th({format:Ec,parse:Jd,utcFormat:Dc,utcParse:$d})}function mA(t){return th(zd(t))}function gA(t){return arguments.length?Mc=mA(t):Mc}const yA=/^(data:|([A-Za-z]+:)?\/\/)/,vA=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,bA=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,nh="file://";function AA(t,e){return n=>({options:n||{},sanitize:wA,load:xA,fileAccess:!!e,file:CA(e),http:EA(t)})}async function xA(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function wA(t,e){e=Ks({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,a;const s=vA.test(t.replace(bA,""));(t==null||typeof t!="string"||!s)&&ce("Sanitize failure, invalid URI: "+Xo(t));const c=yA.test(t);return(a=e.baseURL)&&!c&&(!t.startsWith("/")&&!a.endsWith("/")&&(t="/"+t),t=a+t),o=(i=t.startsWith(nh))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(nh.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 CA(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):SA}async function SA(){ce("No file system access.")}function EA(t){return t?async function(e,n){const r=Ks({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Be(o[i])?o[i]():o.text():ce(o.status+""+o.statusText)}:DA}async function DA(){ce("No HTTP fetch method available.")}const MA=t=>t!=null&&t===t,TA=t=>t==="true"||t==="false"||t===!0||t===!1,IA=t=>!Number.isNaN(Date.parse(t)),rh=t=>!Number.isNaN(+t)&&!(t instanceof Date),kA=t=>rh(t)&&Number.isInteger(+t),ih={boolean:fv,integer:ii,number:ii,date:hv,string:pv,unknown:Qo},ca=[TA,kA,rh,IA],NA=["boolean","integer","number","date"];function oh(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=ca.length,i=ca.map((o,a)=>a+1);for(let o=0,a=0,s,c;o<n;++o)for(c=e?t[o][e]:t[o],s=0;s<r;++s)if(i[s]&&MA(c)&&!ca[s](c)&&(i[s]=0,++a,a===ca.length))return"string";return NA[i.reduce((o,a)=>o===0?a:o,0)-1]}function LA(t,e){return e.reduce((n,r)=>(n[r]=oh(t,r),n),{})}function ah(t){const e=function(n,r){const i={delimiter:t};return Tc(n,r?Ks(r,i):i)};return e.responseType="text",e}function Tc(t,e){return e.header&&(t=e.header.map(Xo).join(e.delimiter)+`
|
6
|
-
`+t),yd(e.delimiter).parse(t+"")}Tc.responseType="text";function BA(t){return typeof Buffer=="function"&&Be(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function Ic(t,e){const n=e&&e.property?Ho(e.property):Qo;return je(t)&&!BA(t)?OA(n(t),e):n(JSON.parse(t))}Ic.responseType="json";function OA(t,e){return!qe(t)&&uv(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const PA={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function sh(t,e){let n,r,i,o;return t=Ic(t,e),e&&e.feature?(n=Cv,i=e.feature):e&&e.mesh?(n=Ev,i=e.mesh,o=PA[e.filter]):ce("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):ce("Invalid TopoJSON object: "+i),r&&r.features||[r]}sh.responseType="json";const kc={dsv:Tc,csv:ah(","),tsv:ah(" "),json:Ic,topojson:sh};function ch(t,e){return arguments.length>1?(kc[t]=e,this):En(kc,t)?kc[t]:null}function uh(t,e,n,r){e=e||{};const i=ch(e.type||"json");return i||ce("Unknown data format type: "+e.type),t=i(t,e),e.parse&&FA(t,e.parse,n,r),En(t,"columns")&&delete t.columns,t}function FA(t,e,n,r){if(!t.length)return;const i=gA();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),a,s,c,u,f,l;e==="auto"&&(e=LA(t,o)),o=Object.keys(e);const d=o.map(h=>{const p=e[h];let m,y;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return m=p.split(/:(.+)?/,2),y=m[1],(y[0]==="'"&&y[y.length-1]==="'"||y[0]==='"'&&y[y.length-1]==='"')&&(y=y.slice(1,-1)),(m[0]==="utc"?r:n)(y);if(!ih[p])throw Error("Illegal format pattern: "+h+":"+p);return ih[p]});for(c=0,f=t.length,l=o.length;c<f;++c)for(a=t[c],u=0;u<l;++u)s=o[u],a[s]=d[u](a[s])}const xi=AA(typeof fetch!="undefined"&&fetch,null),lh=1;function Nc(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,a=.5,s=0;const u=f=>(f+a-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0]-a,u.domain=function(f){if(arguments.length){if(t=kv(f),n=t[1]-t[0],n<lh){n=lh;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return u}else return t},u.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],u):e},u.numberingOffset=function(f){return arguments.length?(s=f,u):s},u.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),u):i},u.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),u):i},u.paddingOuter=function(f){return arguments.length?(o=f,u):o},u.align=function(f){return arguments.length?(a=Math.max(0,Math.min(1,f)),u):a},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=f=>{const l=u.align(),d=u.numberingOffset();return Jo(t[0]-l+d,t[1]-l+d,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(h=>h-s)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const h=Tn(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?he(","):he(".3s");return p=>h(p+s)},u.copy=()=>Nc().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(s),u}function zA(){const t=Nc().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(),[a,s]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),c=Math.max(1,Tn(i[0],i[1],r)),u=[];for(let f=a.index;f<=s.index;f++){const l=e.chromosomes[f],d=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),h=Math.min(l.continuousEnd-c/4,i[1]+1);for(let p=d;p<=h;p+=c){const m=p-o;m>=i[0]&&m<i[1]&&u.push(m)}}return u},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(),a=o[1]-o[0],s=t.numberingOffset(),u=Tn(o[0],o[1],Math.min(r,Math.ceil(a)))<1e6?he(","):he(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+s)};const n=t.copy;return t.copy=()=>n().genome(e),t}function RA(t){return t.type=="locus"}function ht(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Jt(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 Lc=Symbol("implicit");function Bc(){var t=new Mn,e=[],n=[],r=Lc;function i(o){let a=t.get(o);if(a===void 0){if(r!==Lc)return r;t.set(o,a=e.push(o)-1)}return n[a%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Mn;for(const a of o)t.has(a)||t.set(a,e.push(a)-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 Bc(e,n).unknown(r)},ht.apply(i,arguments),i}function mr(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function wi(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function $t(){}var On=.7,gr=1/On,yr="\\s*([+-]?\\d+)\\s*",Ci="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",pt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",jA=/^#([0-9a-f]{3,8})$/,UA=new RegExp(`^rgb\\(${yr},${yr},${yr}\\)$`),GA=new RegExp(`^rgb\\(${pt},${pt},${pt}\\)$`),HA=new RegExp(`^rgba\\(${yr},${yr},${yr},${Ci}\\)$`),QA=new RegExp(`^rgba\\(${pt},${pt},${pt},${Ci}\\)$`),VA=new RegExp(`^hsl\\(${Ci},${pt},${pt}\\)$`),YA=new RegExp(`^hsla\\(${Ci},${pt},${pt},${Ci}\\)$`),fh={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};mr($t,Pn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:dh,formatHex:dh,formatHex8:_A,formatHsl:WA,formatRgb:hh,toString:hh});function dh(){return this.rgb().formatHex()}function _A(){return this.rgb().formatHex8()}function WA(){return vh(this).formatHsl()}function hh(){return this.rgb().formatRgb()}function Pn(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=jA.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?ph(e):n===3?new ye(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?ua(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?ua(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=UA.exec(t))?new ye(e[1],e[2],e[3],1):(e=GA.exec(t))?new ye(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=HA.exec(t))?ua(e[1],e[2],e[3],e[4]):(e=QA.exec(t))?ua(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=VA.exec(t))?yh(e[1],e[2]/100,e[3]/100,1):(e=YA.exec(t))?yh(e[1],e[2]/100,e[3]/100,e[4]):fh.hasOwnProperty(t)?ph(fh[t]):t==="transparent"?new ye(NaN,NaN,NaN,0):null}function ph(t){return new ye(t>>16&255,t>>8&255,t&255,1)}function ua(t,e,n,r){return r<=0&&(t=e=n=NaN),new ye(t,e,n,r)}function Oc(t){return t instanceof $t||(t=Pn(t)),t?(t=t.rgb(),new ye(t.r,t.g,t.b,t.opacity)):new ye}function la(t,e,n,r){return arguments.length===1?Oc(t):new ye(t,e,n,r==null?1:r)}function ye(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}mr(ye,la,wi($t,{brighter(t){return t=t==null?gr:Math.pow(gr,t),new ye(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?On:Math.pow(On,t),new ye(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ye(Fn(this.r),Fn(this.g),Fn(this.b),fa(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:mh,formatHex:mh,formatHex8:XA,formatRgb:gh,toString:gh}));function mh(){return`#${zn(this.r)}${zn(this.g)}${zn(this.b)}`}function XA(){return`#${zn(this.r)}${zn(this.g)}${zn(this.b)}${zn((isNaN(this.opacity)?1:this.opacity)*255)}`}function gh(){const t=fa(this.opacity);return`${t===1?"rgb(":"rgba("}${Fn(this.r)}, ${Fn(this.g)}, ${Fn(this.b)}${t===1?")":`, ${t})`}`}function fa(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Fn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function zn(t){return t=Fn(t),(t<16?"0":"")+t.toString(16)}function yh(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new ot(t,e,n,r)}function vh(t){if(t instanceof ot)return new ot(t.h,t.s,t.l,t.opacity);if(t instanceof $t||(t=Pn(t)),!t)return new ot;if(t instanceof ot)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),a=NaN,s=o-i,c=(o+i)/2;return s?(e===o?a=(n-r)/s+(n<r)*6:n===o?a=(r-e)/s+2:a=(e-n)/s+4,s/=c<.5?o+i:2-o-i,a*=60):s=c>0&&c<1?0:a,new ot(a,s,c,t.opacity)}function Pc(t,e,n,r){return arguments.length===1?vh(t):new ot(t,e,n,r==null?1:r)}function ot(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mr(ot,Pc,wi($t,{brighter(t){return t=t==null?gr:Math.pow(gr,t),new ot(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?On:Math.pow(On,t),new ot(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 ye(Fc(t>=240?t-240:t+120,i,r),Fc(t,i,r),Fc(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new ot(bh(this.h),da(this.s),da(this.l),fa(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=fa(this.opacity);return`${t===1?"hsl(":"hsla("}${bh(this.h)}, ${da(this.s)*100}%, ${da(this.l)*100}%${t===1?")":`, ${t})`}`}}));function bh(t){return t=(t||0)%360,t<0?t+360:t}function da(t){return Math.max(0,Math.min(1,t||0))}function Fc(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 Ah=Math.PI/180,xh=180/Math.PI,ha=18,wh=.96422,Ch=1,Sh=.82521,Eh=4/29,vr=6/29,Dh=3*vr*vr,ZA=vr*vr*vr;function Mh(t){if(t instanceof mt)return new mt(t.l,t.a,t.b,t.opacity);if(t instanceof It)return Th(t);t instanceof ye||(t=Oc(t));var e=Gc(t.r),n=Gc(t.g),r=Gc(t.b),i=Rc((.2225045*e+.7168786*n+.0606169*r)/Ch),o,a;return e===n&&n===r?o=a=i:(o=Rc((.4360747*e+.3850649*n+.1430804*r)/wh),a=Rc((.0139322*e+.0971045*n+.7141733*r)/Sh)),new mt(116*i-16,500*(o-i),200*(i-a),t.opacity)}function zc(t,e,n,r){return arguments.length===1?Mh(t):new mt(t,e,n,r==null?1:r)}function mt(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}mr(mt,zc,wi($t,{brighter(t){return new mt(this.l+ha*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new mt(this.l-ha*(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=wh*jc(e),t=Ch*jc(t),n=Sh*jc(n),new ye(Uc(3.1338561*e-1.6168667*t-.4906146*n),Uc(-.9787684*e+1.9161415*t+.033454*n),Uc(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function Rc(t){return t>ZA?Math.pow(t,1/3):t/Dh+Eh}function jc(t){return t>vr?t*t*t:Dh*(t-Eh)}function Uc(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Gc(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function qA(t){if(t instanceof It)return new It(t.h,t.c,t.l,t.opacity);if(t instanceof mt||(t=Mh(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)*xh;return new It(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Hc(t,e,n,r){return arguments.length===1?qA(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 Th(t){if(isNaN(t.h))return new mt(t.l,0,0,t.opacity);var e=t.h*Ah;return new mt(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}mr(It,Hc,wi($t,{brighter(t){return new It(this.h,this.c,this.l+ha*(t==null?1:t),this.opacity)},darker(t){return new It(this.h,this.c,this.l-ha*(t==null?1:t),this.opacity)},rgb(){return Th(this).rgb()}}));var Ih=-.14861,Qc=1.78277,Vc=-.29227,pa=-.90649,Si=1.97294,kh=Si*pa,Nh=Si*Qc,Lh=Qc*Vc-pa*Ih;function KA(t){if(t instanceof Rn)return new Rn(t.h,t.s,t.l,t.opacity);t instanceof ye||(t=Oc(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Lh*r+kh*e-Nh*n)/(Lh+kh-Nh),o=r-i,a=(Si*(n-i)-Vc*o)/pa,s=Math.sqrt(a*a+o*o)/(Si*i*(1-i)),c=s?Math.atan2(a,o)*xh-120:NaN;return new Rn(c<0?c+360:c,s,i,t.opacity)}function Yc(t,e,n,r){return arguments.length===1?KA(t):new Rn(t,e,n,r==null?1:r)}function Rn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mr(Rn,Yc,wi($t,{brighter(t){return t=t==null?gr:Math.pow(gr,t),new Rn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?On:Math.pow(On,t),new Rn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Ah,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ye(255*(e+n*(Ih*r+Qc*i)),255*(e+n*(Vc*r+pa*i)),255*(e+n*(Si*r)),this.opacity)}}));function Bh(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}function Oh(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],a=r>0?t[r-1]:2*i-o,s=r<e-1?t[r+2]:2*o-i;return Bh((n-r/e)*e,a,i,o,s)}}function Ph(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],a=t[(r+1)%e],s=t[(r+2)%e];return Bh((n-r/e)*e,i,o,a,s)}}var ma=t=>()=>t;function Fh(t,e){return function(n){return t+n*e}}function JA(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 ga(t,e){var n=e-t;return n?Fh(t,n>180||n<-180?n-360*Math.round(n/360):n):ma(isNaN(t)?e:t)}function $A(t){return(t=+t)==1?ve:function(e,n){return n-e?JA(e,n,t):ma(isNaN(e)?n:e)}}function ve(t,e){var n=e-t;return n?Fh(t,n):ma(isNaN(t)?e:t)}var _c=function t(e){var n=$A(e);function r(i,o){var a=n((i=la(i)).r,(o=la(o)).r),s=n(i.g,o.g),c=n(i.b,o.b),u=ve(i.opacity,o.opacity);return function(f){return i.r=a(f),i.g=s(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function zh(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),a,s;for(a=0;a<n;++a)s=la(e[a]),r[a]=s.r||0,i[a]=s.g||0,o[a]=s.b||0;return r=t(r),i=t(i),o=t(o),s.opacity=1,function(c){return s.r=r(c),s.g=i(c),s.b=o(c),s+""}}}var ex=zh(Oh),tx=zh(Ph);function Wc(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 Rh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function nx(t,e){return(Rh(e)?Wc:jh)(t,e)}function jh(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),a;for(a=0;a<r;++a)i[a]=en(t[a],e[a]);for(;a<n;++a)o[a]=e[a];return function(s){for(a=0;a<r;++a)o[a]=i[a](s);return o}}function Uh(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function at(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Gh(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]=en(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var Xc=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Zc=new RegExp(Xc.source,"g");function rx(t){return function(){return t}}function ix(t){return function(e){return t(e)+""}}function Hh(t,e){var n=Xc.lastIndex=Zc.lastIndex=0,r,i,o,a=-1,s=[],c=[];for(t=t+"",e=e+"";(r=Xc.exec(t))&&(i=Zc.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),s[a]?s[a]+=o:s[++a]=o),(r=r[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,c.push({i:a,x:at(r,i)})),n=Zc.lastIndex;return n<e.length&&(o=e.slice(n),s[a]?s[a]+=o:s[++a]=o),s.length<2?c[0]?ix(c[0].x):rx(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)s[(l=c[f]).i]=l.x(u);return s.join("")})}function en(t,e){var n=typeof e,r;return e==null||n==="boolean"?ma(e):(n==="number"?at:n==="string"?(r=Pn(e))?(e=r,_c):Hh:e instanceof Pn?_c:e instanceof Date?Uh:Rh(e)?Wc:Array.isArray(e)?jh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Gh:at)(t,e)}function ox(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function ax(t,e){var n=ga(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Ei(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var Qh=180/Math.PI,qc={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Vh(t,e,n,r,i,o){var a,s,c;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*Qh,skewX:Math.atan(c)*Qh,scaleX:a,scaleY:s}}var ya;function sx(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?qc:Vh(e.a,e.b,e.c,e.d,e.e,e.f)}function cx(t){return t==null||(ya||(ya=document.createElementNS("http://www.w3.org/2000/svg","g")),ya.setAttribute("transform",t),!(t=ya.transform.baseVal.consolidate()))?qc:(t=t.matrix,Vh(t.a,t.b,t.c,t.d,t.e,t.f))}function Yh(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,d,h,p){if(u!==l||f!==d){var m=h.push("translate(",null,e,null,n);p.push({i:m-4,x:at(u,l)},{i:m-2,x:at(f,d)})}else(l||d)&&h.push("translate("+l+e+d+n)}function a(u,f,l,d){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),d.push({i:l.push(i(l)+"rotate(",null,r)-2,x:at(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function s(u,f,l,d){u!==f?d.push({i:l.push(i(l)+"skewX(",null,r)-2,x:at(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,d,h,p){if(u!==l||f!==d){var m=h.push(i(h)+"scale(",null,",",null,")");p.push({i:m-4,x:at(u,l)},{i:m-2,x:at(f,d)})}else(l!==1||d!==1)&&h.push(i(h)+"scale("+l+","+d+")")}return function(u,f){var l=[],d=[];return u=t(u),f=t(f),o(u.translateX,u.translateY,f.translateX,f.translateY,l,d),a(u.rotate,f.rotate,l,d),s(u.skewX,f.skewX,l,d),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,d),u=f=null,function(h){for(var p=-1,m=d.length,y;++p<m;)l[(y=d[p]).i]=y.x(h);return l.join("")}}}var ux=Yh(sx,"px, ","px)","deg)"),lx=Yh(cx,", ",")",")"),fx=1e-12;function _h(t){return((t=Math.exp(t))+1/t)/2}function dx(t){return((t=Math.exp(t))-1/t)/2}function hx(t){return((t=Math.exp(2*t))-1)/(t+1)}var Wh=function t(e,n,r){function i(o,a){var s=o[0],c=o[1],u=o[2],f=a[0],l=a[1],d=a[2],h=f-s,p=l-c,m=h*h+p*p,y,g;if(m<fx)g=Math.log(d/u)/e,y=function(w){return[s+w*h,c+w*p,u*Math.exp(e*w*g)]};else{var x=Math.sqrt(m),A=(d*d-u*u+r*m)/(2*u*n*x),C=(d*d-u*u-r*m)/(2*d*n*x),b=Math.log(Math.sqrt(A*A+1)-A),v=Math.log(Math.sqrt(C*C+1)-C);g=(v-b)/e,y=function(w){var E=w*g,k=_h(b),L=u/(n*x)*(k*hx(e*E+b)-dx(b));return[s+L*h,c+L*p,u*k/_h(e*E+b)]}}return y.duration=g*1e3*e/Math.SQRT2,y}return i.rho=function(o){var a=Math.max(.001,+o),s=a*a,c=s*s;return t(a,s,c)},i}(Math.SQRT2,2,4);function Xh(t){return function(e,n){var r=t((e=Pc(e)).h,(n=Pc(n)).h),i=ve(e.s,n.s),o=ve(e.l,n.l),a=ve(e.opacity,n.opacity);return function(s){return e.h=r(s),e.s=i(s),e.l=o(s),e.opacity=a(s),e+""}}}var px=Xh(ga),mx=Xh(ve);function gx(t,e){var n=ve((t=zc(t)).l,(e=zc(e)).l),r=ve(t.a,e.a),i=ve(t.b,e.b),o=ve(t.opacity,e.opacity);return function(a){return t.l=n(a),t.a=r(a),t.b=i(a),t.opacity=o(a),t+""}}function Zh(t){return function(e,n){var r=t((e=Hc(e)).h,(n=Hc(n)).h),i=ve(e.c,n.c),o=ve(e.l,n.l),a=ve(e.opacity,n.opacity);return function(s){return e.h=r(s),e.c=i(s),e.l=o(s),e.opacity=a(s),e+""}}}var yx=Zh(ga),vx=Zh(ve);function qh(t){return function e(n){n=+n;function r(i,o){var a=t((i=Yc(i)).h,(o=Yc(o)).h),s=ve(i.s,o.s),c=ve(i.l,o.l),u=ve(i.opacity,o.opacity);return function(f){return i.h=a(f),i.s=s(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}var bx=qh(ga),Ax=qh(ve);function Kc(t,e){e===void 0&&(e=t,t=en);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(a){var s=Math.max(0,Math.min(r-1,Math.floor(a*=r)));return o[s](a-s)}}function xx(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var wx=Object.freeze(Object.defineProperty({__proto__:null,interpolate:en,interpolateArray:nx,interpolateBasis:Oh,interpolateBasisClosed:Ph,interpolateDate:Uh,interpolateDiscrete:ox,interpolateHue:ax,interpolateNumber:at,interpolateNumberArray:Wc,interpolateObject:Gh,interpolateRound:Ei,interpolateString:Hh,interpolateTransformCss:ux,interpolateTransformSvg:lx,interpolateZoom:Wh,interpolateRgb:_c,interpolateRgbBasis:ex,interpolateRgbBasisClosed:tx,interpolateHsl:px,interpolateHslLong:mx,interpolateLab:gx,interpolateHcl:yx,interpolateHclLong:vx,interpolateCubehelix:bx,interpolateCubehelixLong:Ax,piecewise:Kc,quantize:xx},Symbol.toStringTag,{value:"Module"}));function Cx(t){return function(){return t}}function Jc(t){return+t}var Kh=[0,1];function Pe(t){return t}function $c(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Cx(isNaN(e)?NaN:.5)}function Sx(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Ex(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i<r?(r=$c(i,r),o=n(a,o)):(r=$c(r,i),o=n(o,a)),function(s){return o(r(s))}}function Dx(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<r;)i[a]=$c(t[a],t[a+1]),o[a]=n(e[a],e[a+1]);return function(s){var c=dr(t,s,1,r)-1;return o[c](i[c](s))}}function Di(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function va(){var t=Kh,e=Kh,n=en,r,i,o,a=Pe,s,c,u;function f(){var d=Math.min(t.length,e.length);return a!==Pe&&(a=Sx(t[0],t[d-1])),s=d>2?Dx:Ex,c=u=null,l}function l(d){return d==null||isNaN(d=+d)?o:(c||(c=s(t.map(r),e,n)))(r(a(d)))}return l.invert=function(d){return a(i((u||(u=s(e,t.map(r),at)))(d)))},l.domain=function(d){return arguments.length?(t=Array.from(d,Jc),f()):t.slice()},l.range=function(d){return arguments.length?(e=Array.from(d),f()):e.slice()},l.rangeRound=function(d){return e=Array.from(d),n=Ei,f()},l.clamp=function(d){return arguments.length?(a=d?!0:Pe,f()):a!==Pe},l.interpolate=function(d){return arguments.length?(n=d,f()):n},l.unknown=function(d){return arguments.length?(o=d,l):o},function(d,h){return r=d,i=h,f()}}function Jh(){return va()(Pe,Pe)}function $h(t,e,n,r){var i=Tn(t,e,n),o;switch(r=Xt(r==null?",f":r),r.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Nd(i,a))&&(r.precision=o),uc(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Ld(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=kd(i))&&(r.precision=o-(r.type==="%")*2);break}}return he(r)}function jn(t){var e=t.domain;return t.ticks=function(n){var r=e();return Jo(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return $h(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,a=r[i],s=r[o],c,u,f=10;for(s<a&&(u=a,a=s,s=u,u=i,i=o,o=u);f-- >0;){if(u=Cd(a,s,n),u===c)return r[i]=a,r[o]=s,e(r);if(u>0)a=Math.floor(a/u)*u,s=Math.ceil(s/u)*u;else if(u<0)a=Math.ceil(a*u)/u,s=Math.floor(s*u)/u;else break;c=u}return t},t}function e0(){var t=Jh();return t.copy=function(){return Di(t,e0())},ht.apply(t,arguments),jn(t)}function t0(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,Jc),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return t0(t).unknown(e)},t=arguments.length?Array.from(t,Jc):[0,1],jn(n)}function n0(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],a;return o<i&&(a=n,n=r,r=a,a=i,i=o,o=a),t[n]=e.floor(i),t[r]=e.ceil(o),t}function r0(t){return Math.log(t)}function i0(t){return Math.exp(t)}function Mx(t){return-Math.log(-t)}function Tx(t){return-Math.exp(-t)}function Ix(t){return isFinite(t)?+("1e"+t):t<0?0:t}function kx(t){return t===10?Ix:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Nx(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 o0(t){return(e,n)=>-t(-e,n)}function eu(t){const e=t(r0,i0),n=e.domain;let r=10,i,o;function a(){return i=Nx(r),o=kx(r),n()[0]<0?(i=o0(i),o=o0(o),t(Mx,Tx)):t(r0,i0),e}return e.base=function(s){return arguments.length?(r=+s,a()):r},e.domain=function(s){return arguments.length?(n(s),a()):n()},e.ticks=s=>{const c=n();let u=c[0],f=c[c.length-1];const l=f<u;l&&([u,f]=[f,u]);let d=i(u),h=i(f),p,m;const y=s==null?10:+s;let g=[];if(!(r%1)&&h-d<y){if(d=Math.floor(d),h=Math.ceil(h),u>0){for(;d<=h;++d)for(p=1;p<r;++p)if(m=d<0?p/o(-d):p*o(d),!(m<u)){if(m>f)break;g.push(m)}}else for(;d<=h;++d)for(p=r-1;p>=1;--p)if(m=d>0?p/o(-d):p*o(d),!(m<u)){if(m>f)break;g.push(m)}g.length*2<y&&(g=Jo(u,f,y))}else g=Jo(d,h,Math.min(h-d,y)).map(o);return l?g.reverse():g},e.tickFormat=(s,c)=>{if(s==null&&(s=10),c==null&&(c=r===10?"s":","),typeof c!="function"&&(!(r%1)&&(c=Xt(c)).precision==null&&(c.trim=!0),c=he(c)),s===1/0)return c;const u=Math.max(1,r*s/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=()=>n(n0(n(),{floor:s=>o(Math.floor(i(s))),ceil:s=>o(Math.ceil(i(s)))})),e}function tu(){const t=eu(va()).domain([1,10]);return t.copy=()=>Di(t,tu()).base(t.base()),ht.apply(t,arguments),t}function a0(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function s0(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function nu(t){var e=1,n=t(a0(e),s0(e));return n.constant=function(r){return arguments.length?t(a0(e=+r),s0(e)):e},jn(n)}function c0(){var t=nu(va());return t.copy=function(){return Di(t,c0()).constant(t.constant())},ht.apply(t,arguments)}function u0(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Lx(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Bx(t){return t<0?-t*t:t*t}function ru(t){var e=t(Pe,Pe),n=1;function r(){return n===1?t(Pe,Pe):n===.5?t(Lx,Bx):t(u0(n),u0(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},jn(e)}function iu(){var t=ru(va());return t.copy=function(){return Di(t,iu()).exponent(t.exponent())},ht.apply(t,arguments),t}function Ox(){return iu.apply(null,arguments).exponent(.5)}function l0(){var t=[],e=[],n=[],r;function i(){var a=0,s=Math.max(1,e.length);for(n=new Array(s-1);++a<s;)n[a-1]=sc(t,a/s);return o}function o(a){return a==null||isNaN(a=+a)?r:e[dr(n,a)]}return o.invertExtent=function(a){var s=e.indexOf(a);return s<0?[NaN,NaN]:[s>0?n[s-1]:t[0],s<n.length?n[s]:t[t.length-1]]},o.domain=function(a){if(!arguments.length)return t.slice();t=[];for(let s of a)s!=null&&!isNaN(s=+s)&&t.push(s);return t.sort(Dn),i()},o.range=function(a){return arguments.length?(e=Array.from(a),i()):e.slice()},o.unknown=function(a){return arguments.length?(r=a,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return l0().domain(t).range(e).unknown(r)},ht.apply(o,arguments)}function f0(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function a(c){return c!=null&&c<=c?i[dr(r,c,0,n)]:o}function s(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return a}return a.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,s()):[t,e]},a.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,s()):i.slice()},a.invertExtent=function(c){var u=i.indexOf(c);return u<0?[NaN,NaN]:u<1?[t,r[0]]:u>=n?[r[n-1],e]:[r[u-1],r[u]]},a.unknown=function(c){return arguments.length&&(o=c),a},a.thresholds=function(){return r.slice()},a.copy=function(){return f0().domain([t,e]).range(i).unknown(o)},ht.apply(jn(a),arguments)}function d0(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[dr(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 a=e.indexOf(o);return[t[a-1],t[a]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return d0().domain(t).range(e).unknown(n)},ht.apply(i,arguments)}function Px(t){return new Date(t)}function Fx(t){return t instanceof Date?+t:+new Date(+t)}function ou(t,e,n,r,i,o,a,s,c,u){var f=Jh(),l=f.invert,d=f.domain,h=u(".%L"),p=u(":%S"),m=u("%I:%M"),y=u("%I %p"),g=u("%a %d"),x=u("%b %d"),A=u("%B"),C=u("%Y");function b(v){return(c(v)<v?h:s(v)<v?p:a(v)<v?m:o(v)<v?y:r(v)<v?i(v)<v?g:x:n(v)<v?A:C)(v)}return f.invert=function(v){return new Date(l(v))},f.domain=function(v){return arguments.length?d(Array.from(v,Fx)):d().map(Px)},f.ticks=function(v){var w=d();return t(w[0],w[w.length-1],v==null?10:v)},f.tickFormat=function(v,w){return w==null?b:u(w)},f.nice=function(v){var w=d();return(!v||typeof v.range!="function")&&(v=e(w[0],w[w.length-1],v==null?10:v)),v?d(n0(w,v)):f},f.copy=function(){return Di(f,ou(t,e,n,r,i,o,a,s,c,u))},f}function zx(){return ht.apply(ou(ib,ob,qt,ra,na,kn,yc,gc,Zt,Ec).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Rx(){return ht.apply(ou(nb,rb,Kt,oa,ia,Ln,Ac,bc,Zt,Dc).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function ba(){var t=0,e=1,n,r,i,o,a=Pe,s=!1,c;function u(l){return l==null||isNaN(l=+l)?c:a(i===0?.5:(l=(o(l)-n)*i,s?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),u):[t,e]},u.clamp=function(l){return arguments.length?(s=!!l,u):s},u.interpolator=function(l){return arguments.length?(a=l,u):a};function f(l){return function(d){var h,p;return arguments.length?([h,p]=d,a=l(h,p),u):[a(0),a(1)]}}return u.range=f(en),u.rangeRound=f(Ei),u.unknown=function(l){return arguments.length?(c=l,u):c},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),u}}function tn(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function au(){var t=jn(ba()(Pe));return t.copy=function(){return tn(t,au())},Jt.apply(t,arguments)}function h0(){var t=eu(ba()).domain([1,10]);return t.copy=function(){return tn(t,h0()).base(t.base())},Jt.apply(t,arguments)}function p0(){var t=nu(ba());return t.copy=function(){return tn(t,p0()).constant(t.constant())},Jt.apply(t,arguments)}function su(){var t=ru(ba());return t.copy=function(){return tn(t,su()).exponent(t.exponent())},Jt.apply(t,arguments)}function jx(){return su.apply(null,arguments).exponent(.5)}function Aa(){var t=0,e=.5,n=1,r=1,i,o,a,s,c,u=Pe,f,l=!1,d;function h(m){return isNaN(m=+m)?d:(m=.5+((m=+f(m))-o)*(r*m<r*o?s:c),u(l?Math.max(0,Math.min(1,m)):m))}h.domain=function(m){return arguments.length?([t,e,n]=m,i=f(t=+t),o=f(e=+e),a=f(n=+n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,h):[t,e,n]},h.clamp=function(m){return arguments.length?(l=!!m,h):l},h.interpolator=function(m){return arguments.length?(u=m,h):u};function p(m){return function(y){var g,x,A;return arguments.length?([g,x,A]=y,u=Kc(m,[g,x,A]),h):[u(0),u(.5),u(1)]}}return h.range=p(en),h.rangeRound=p(Ei),h.unknown=function(m){return arguments.length?(d=m,h):d},function(m){return f=m,i=m(t),o=m(e),a=m(n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,h}}function m0(){var t=jn(Aa()(Pe));return t.copy=function(){return tn(t,m0())},Jt.apply(t,arguments)}function g0(){var t=eu(Aa()).domain([.1,1,10]);return t.copy=function(){return tn(t,g0()).base(t.base())},Jt.apply(t,arguments)}function y0(){var t=nu(Aa());return t.copy=function(){return tn(t,y0()).constant(t.constant())},Jt.apply(t,arguments)}function cu(){var t=ru(Aa());return t.copy=function(){return tn(t,cu()).exponent(t.exponent())},Jt.apply(t,arguments)}function Ux(){return cu.apply(null,arguments).exponent(.5)}function uu(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const Gx="identity",br="linear",nn="log",Mi="pow",Ti="sqrt",xa="symlog",v0="time",b0="utc",gt="sequential",Ar="diverging",lu="quantile",A0="quantize",x0="threshold",fu="ordinal",du="point",w0="band",hu="bin-ordinal",pe="continuous",Ii="discrete",ki="discretizing",Je="interpolating",C0="temporal";function Hx(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 Qx(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,a,s,c,u;for(i<r&&(s=r,r=i,i=s),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),a=c);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[a]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function pu(){const t=Bc().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,a=!1,s=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,d=r[1]<r[0],h=r[1-d],p=uu(l,s,c);let m=r[d-0];i=(h-m)/(p||1),a&&(i=Math.floor(i)),m+=(h-m-i*(l-s))*u,o=i*(1-s),a&&(m=Math.round(m),o=Math.round(o));const y=Wt(l).map(g=>m+i*g);return n(d?y.reverse():y)}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]],a=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(a=!!l,f()):a},t.padding=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),s=c,f()):s},t.paddingInner=function(l){return arguments.length?(s=Math.max(0,Math.min(1,l)),f()):s},t.paddingOuter=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const d=r[1]<r[0],h=d?n().reverse():n(),p=h.length-1;let m=+l[0],y=+l[1],g,x,A;if(!(m!==m||y!==y)&&(y<m&&(A=m,m=y,y=A),!(y<h[0]||m>r[1-d])))return g=Math.max(0,tc(h,m)-1),x=m===y?g:tc(h,y)-1,m-h[g]>o+1e-10&&++g,d&&(A=g,g=p-x,x=p-A),g>x?void 0:e().slice(g,x+1)},t.invert=function(l){const d=t.invertRange([l,l]);return d&&d[0]},t.copy=function(){return pu().domain(e()).range(r).round(a).paddingInner(s).paddingOuter(c).align(u)},f()}function S0(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return S0(e())},t}function Vx(){return S0(pu().paddingInner(1))}var Yx=Array.prototype.map;function _x(t){return Yx.call(t,ii)}const Wx=Array.prototype.slice;function E0(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(dr(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=_x(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Wx.call(r),n):e.slice()},n.tickFormat=function(r,i){return $h(t[0],it(t),r==null?10:r,i)},n.copy=function(){return E0().domain(n.domain()).range(n.range())},n}const wa={};function Xx(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Hx(o):o.invertExtent?Qx(o):void 0),o.type=t,o};return r.metadata=Zo(qs(n)),r}function q(t,e,n){return arguments.length>1?(wa[t]=Xx(t,e,n),this):Zx(t)?wa[t]:void 0}q(Gx,t0),q(br,e0,pe),q(nn,tu,[pe,nn]),q(Mi,iu,pe),q(Ti,Ox,pe),q(xa,c0,pe),q(v0,zx,[pe,C0]),q(b0,Rx,[pe,C0]),q(gt,au,[pe,Je]),q("".concat(gt,"-").concat(br),au,[pe,Je]),q("".concat(gt,"-").concat(nn),h0,[pe,Je,nn]),q("".concat(gt,"-").concat(Mi),su,[pe,Je]),q("".concat(gt,"-").concat(Ti),jx,[pe,Je]),q("".concat(gt,"-").concat(xa),p0,[pe,Je]),q("".concat(Ar,"-").concat(br),m0,[pe,Je]),q("".concat(Ar,"-").concat(nn),g0,[pe,Je,nn]),q("".concat(Ar,"-").concat(Mi),cu,[pe,Je]),q("".concat(Ar,"-").concat(Ti),Ux,[pe,Je]),q("".concat(Ar,"-").concat(xa),y0,[pe,Je]),q(lu,l0,[ki,lu]),q(A0,f0,ki),q(x0,d0,ki),q(hu,E0,[Ii,ki]),q(fu,Bc,Ii),q(w0,pu,Ii),q(du,Vx,Ii);function Zx(t){return En(wa,t)}function Ni(t,e){const n=wa[t];return n&&n.metadata[e]}function Ue(t){return Ni(t,pe)}function rn(t){return Ni(t,Ii)}function xr(t){return Ni(t,ki)}function D0(t){return Ni(t,nn)}function Ca(t){return Ni(t,Je)}function qx(t,e){const n=e[0],r=it(e)-n;return function(i){return t(n+i*r)}}function Sa(t,e,n){return Kc(M0(e||"rgb",n),t)}function Kx(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function M0(t,e){const n=wx[Jx(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Jx(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const $x={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"},ew={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 T0(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 I0(t,e){for(const n in t)mu(n,e(t[n]))}const k0={};I0(ew,T0),I0($x,t=>Sa(T0(t)));function mu(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(k0[t]=e,this):k0[t]}var jk="";function tw(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}/**
|
5
|
+
`)}function u(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?Rb(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:a,formatBody:s,formatRows:c,formatRow:u,formatValue:f}}var jb=wd(" "),Ub=jb.parseRows;function Gb(t){return t}function Hb(t){if(t==null)return Gb;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],a=t.translate[1];return function(s,c){c||(e=n=0);var u=2,f=s.length,l=new Array(f);for(l[0]=(e+=s[0])*r+o,l[1]=(n+=s[1])*i+a;u<f;)l[u]=s[u],++u;return l}}function Qb(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Vb(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return xd(t,n)})}:xd(t,e)}function xd(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=Cd(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 Cd(t,e){var n=Hb(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var d=r[f<0?~f:f],h=0,p=d.length;h<p;++h)l.push(n(d[h],h));f<0&&Qb(l,p)}function o(f){return n(f)}function a(f){for(var l=[],d=0,h=f.length;d<h;++d)i(f[d],l);return l.length<2&&l.push(l[0]),l}function s(f){for(var l=a(f);l.length<4;)l.push(l[0]);return l}function c(f){return f.map(s)}function u(f){var l=f.type,d;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(u)};case"Point":d=o(f.coordinates);break;case"MultiPoint":d=f.coordinates.map(o);break;case"LineString":d=a(f.arcs);break;case"MultiLineString":d=f.arcs.map(a);break;case"Polygon":d=c(f.arcs);break;case"MultiPolygon":d=f.arcs.map(c);break;default:return null}return{type:l,coordinates:d}}return u(e)}function Yb(t,e){var n={},r={},i={},o=[],a=-1;e.forEach(function(u,f){var l=t.arcs[u<0?~u:u],d;l.length<3&&!l[1][0]&&!l[1][1]&&(d=e[++a],e[a]=u,e[f]=d)}),e.forEach(function(u){var f=s(u),l=f[0],d=f[1],h,p;if(h=i[l])if(delete i[h.end],h.push(u),h.end=d,p=r[d]){delete r[p.start];var m=p===h?h:h.concat(p);r[m.start=h.start]=i[m.end=p.end]=m}else r[h.start]=i[h.end]=h;else if(h=r[d])if(delete r[h.start],h.unshift(u),h.start=l,p=i[l]){delete i[p.end];var y=p===h?h:p.concat(h);r[y.start=p.start]=i[y.end=h.end]=y}else r[h.start]=i[h.end]=h;else h=[u],r[h.start=l]=i[h.end=d]=h});function s(u){var f=t.arcs[u<0?~u:u],l=f[0],d;return t.transform?(d=[0,0],f.forEach(function(h){d[0]+=h[0],d[1]+=h[1]})):d=f[f.length-1],u<0?[d,l]:[l,d]}function c(u,f){for(var l in u){var d=u[l];delete f[d.start],delete d.start,delete d.end,d.forEach(function(h){n[h<0?~h:h]=1}),o.push(d)}}return c(i,r),c(r,i),e.forEach(function(u){n[u<0?~u:u]||o.push([u])}),o}function _b(t){return Cd(t,Wb.apply(this,arguments))}function Wb(t,e,n){var r,i,o;if(arguments.length>1)r=Xb(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Yb(t,r)}}function Xb(t,e,n){var r=[],i=[],o;function a(l){var d=l<0?~l:l;(i[d]||(i[d]=[])).push({i:l,g:o})}function s(l){l.forEach(a)}function c(l){l.forEach(s)}function u(l){l.forEach(c)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":s(l.arcs);break;case"MultiLineString":case"Polygon":c(l.arcs);break;case"MultiPolygon":u(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 Sn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Zb(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Jo(t){let e,n,r;t.length!==2?(e=Sn,n=(s,c)=>Sn(t(s),c),r=(s,c)=>t(s)-c):(e=t===Sn||t===Zb?t:qb,n=t,r=t);function i(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function a(s,c,u=0,f=s.length){const l=i(s,c,u,f-1);return l>u&&r(s[l-1],c)>-r(s[l],c)?l-1:l}return{left:i,center:a,right:o}}function qb(){return 0}function Ed(t){return t===null?NaN:+t}const Sd=Jo(Sn),tc=Sd.right;Sd.left,Jo(Ed).center;const mr=tc;function Kb(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 Dn extends Map{constructor(e,n=e2){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(Dd(this,e))}has(e){return super.has(Dd(this,e))}set(e,n){return super.set(Jb(this,e),n)}delete(e){return super.delete($b(this,e))}}function Dd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Jb({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function $b({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function e2(t){return t!==null&&typeof t=="object"?t.valueOf():t}function $o(t){return t}function fi(t,...e){return nc(t,$o,$o,e)}function t2(t,...e){return nc(t,Array.from,$o,e)}function n2(t,e,...n){return nc(t,$o,e,n)}function nc(t,e,n,r){return function i(o,a){if(a>=r.length)return n(o);const s=new Dn,c=r[a++];let u=-1;for(const f of o){const l=c(f,++u,o),d=s.get(l);d?d.push(f):s.set(l,[f])}for(const[f,l]of s)s.set(f,i(l,a));return e(s)}(t,0)}function r2(t,e){return Array.from(e,n=>t[n])}function i2(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n]=e;if(n&&n.length!==2||e.length>1){const r=Uint32Array.from(t,(i,o)=>o);return e.length>1?(e=e.map(i=>t.map(i)),r.sort((i,o)=>{for(const a of e){const s=rc(a[i],a[o]);if(s)return s}})):(n=t.map(n),r.sort((i,o)=>rc(n[i],n[o]))),r2(t,r)}return t.sort(o2(n))}function o2(t=Sn){if(t===Sn)return rc;if(typeof t!="function")throw new TypeError("compare is not a function");return(e,n)=>{const r=t(e,n);return r||r===0?r:(t(n,n)===0)-(t(e,e)===0)}}function rc(t,e){return(t==null||!(t>=t))-(e==null||!(e>=e))||(t<e?-1:t>e?1:0)}var ic=Math.sqrt(50),oc=Math.sqrt(10),ac=Math.sqrt(2);function ea(t,e,n){var r,i=-1,o,a,s;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(s=Md(t,e,n))===0||!isFinite(s))return[];if(s>0){let c=Math.round(t/s),u=Math.round(e/s);for(c*s<t&&++c,u*s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)*s}else{s=-s;let c=Math.round(t*s),u=Math.round(e*s);for(c/s<t&&++c,u/s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)/s}return r&&a.reverse(),a}function Md(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>=ic?10:o>=oc?5:o>=ac?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ic?10:o>=oc?5:o>=ac?2:1)}function Mn(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>=ic?i*=10:o>=oc?i*=5:o>=ac&&(i*=2),e<t?-i:i}function sc(t,e,n=Ed){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),a=+n(t[o],o,t),s=+n(t[o+1],o+1,t);return a+(s-a)*(i-o)}}function Yt(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 ta(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 a2(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function na(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 gr(t){return t=na(Math.abs(t)),t?t[1]:NaN}function s2(t,e){return function(n,r){for(var i=n.length,o=[],a=0,s=t[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),o.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}function c2(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var u2=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function _t(t){if(!(e=u2.exec(t)))throw new Error("invalid format: "+t);var e;return new cc({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]})}_t.prototype=cc.prototype;function cc(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+""}cc.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 l2(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 Td;function f2(t,e){var n=na(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Td=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+na(t,Math.max(0,e+o-1))[0]}function Id(t,e){var n=na(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 Nd={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:a2,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)=>Id(t*100,e),r:Id,s:f2,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function kd(t){return t}var Ld=Array.prototype.map,Od=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function d2(t){var e=t.grouping===void 0||t.thousands===void 0?kd:s2(Ld.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?kd:c2(Ld.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=_t(l);var d=l.fill,h=l.align,p=l.sign,m=l.symbol,y=l.zero,g=l.width,A=l.comma,w=l.precision,C=l.trim,b=l.type;b==="n"?(A=!0,b="g"):Nd[b]||(w===void 0&&(w=12),C=!0,b="g"),(y||d==="0"&&h==="=")&&(y=!0,d="0",h="=");var v=m==="$"?n:m==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",x=m==="$"?r:/[%p]/.test(b)?a:"",E=Nd[b],I=/[defgprs%]/.test(b);w=w===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function L(T){var B=v,H=x,U,we,Ne;if(b==="c")H=E(T)+H,T="";else{T=+T;var wn=T<0||1/T<0;if(T=isNaN(T)?c:E(Math.abs(T),w),C&&(T=l2(T)),wn&&+T==0&&p!=="+"&&(wn=!1),B=(wn?p==="("?p:s:p==="-"||p==="("?"":p)+B,H=(b==="s"?Od[8+Td/3]:"")+H+(wn&&p==="("?")":""),I){for(U=-1,we=T.length;++U<we;)if(Ne=T.charCodeAt(U),48>Ne||Ne>57){H=(Ne===46?i+T.slice(U+1):T.slice(U))+H,T=T.slice(0,U);break}}}A&&!y&&(T=e(T,1/0));var Y=B.length+T.length+H.length,Ye=Y<g?new Array(g-Y+1).join(d):"";switch(A&&y&&(T=e(Ye+T,Ye.length?g-H.length:1/0),Ye=""),h){case"<":T=B+T+H+Ye;break;case"=":T=B+Ye+T+H;break;case"^":T=Ye.slice(0,Y=Ye.length>>1)+B+T+H+Ye.slice(Y);break;default:T=Ye+B+T+H;break}return o(T)}return L.toString=function(){return l+""},L}function f(l,d){var h=u((l=_t(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(gr(d)/3)))*3,m=Math.pow(10,-p),y=Od[8+p/3];return function(g){return h(m*g)+y}}return{format:u,formatPrefix:f}}var ra,le,uc;h2({thousands:",",grouping:[3],currency:["$",""]});function h2(t){return ra=d2(t),le=ra.format,uc=ra.formatPrefix,ra}function Bd(t){return Math.max(0,-gr(Math.abs(t)))}function Fd(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(gr(e)/3)))*3-gr(Math.abs(t)))}function Pd(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,gr(e)-gr(t))+1}var lc=new Date,fc=new Date;function de(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 a=i(o),s=i.ceil(o);return o-a<s-o?a:s},i.offset=function(o,a){return e(o=new Date(+o),a==null?1:Math.floor(a)),o},i.range=function(o,a,s){var c=[],u;if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o<a)||!(s>0))return c;do c.push(u=new Date(+o)),e(o,s),t(o);while(u<o&&o<a);return c},i.filter=function(o){return de(function(a){if(a>=a)for(;t(a),!o(a);)a.setTime(a-1)},function(a,s){if(a>=a)if(s<0)for(;++s<=0;)for(;e(a,-1),!o(a););else for(;--s>=0;)for(;e(a,1),!o(a););})},n&&(i.count=function(o,a){return lc.setTime(+o),fc.setTime(+a),t(lc),t(fc),Math.floor(n(lc,fc))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(a){return r(a)%o===0}:function(a){return i.count(0,a)%o===0}):i}),i}var ia=de(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});ia.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?de(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):ia};const dc=ia;ia.range;const Et=1e3,Ze=Et*60,St=Ze*60,Tn=St*24,hc=Tn*7,zd=Tn*30,pc=Tn*365;var Rd=de(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*Et)},function(t,e){return(e-t)/Et},function(t){return t.getUTCSeconds()});const Wt=Rd;Rd.range;var jd=de(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Et)},function(t,e){t.setTime(+t+e*Ze)},function(t,e){return(e-t)/Ze},function(t){return t.getMinutes()});const mc=jd;jd.range;var Ud=de(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Et-t.getMinutes()*Ze)},function(t,e){t.setTime(+t+e*St)},function(t,e){return(e-t)/St},function(t){return t.getHours()});const gc=Ud;Ud.range;var Gd=de(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ze)/Tn,t=>t.getDate()-1);const In=Gd;Gd.range;function Nn(t){return de(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())*Ze)/hc})}var di=Nn(0),oa=Nn(1),p2=Nn(2),m2=Nn(3),yr=Nn(4),g2=Nn(5),y2=Nn(6);di.range,oa.range,p2.range,m2.range,yr.range,g2.range,y2.range;var Hd=de(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 aa=Hd;Hd.range;var yc=de(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()});yc.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:de(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 Xt=yc;yc.range;var Qd=de(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ze)},function(t,e){return(e-t)/Ze},function(t){return t.getUTCMinutes()});const vc=Qd;Qd.range;var Vd=de(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*St)},function(t,e){return(e-t)/St},function(t){return t.getUTCHours()});const bc=Vd;Vd.range;var Yd=de(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Tn},function(t){return t.getUTCDate()-1});const kn=Yd;Yd.range;function Ln(t){return de(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)/hc})}var hi=Ln(0),sa=Ln(1),v2=Ln(2),b2=Ln(3),vr=Ln(4),A2=Ln(5),w2=Ln(6);hi.range,sa.range,v2.range,b2.range,vr.range,A2.range,w2.range;var _d=de(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 ca=_d;_d.range;var Ac=de(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()});Ac.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:de(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 Zt=Ac;Ac.range;function Wd(t,e,n,r,i,o){const a=[[Wt,1,Et],[Wt,5,5*Et],[Wt,15,15*Et],[Wt,30,30*Et],[o,1,Ze],[o,5,5*Ze],[o,15,15*Ze],[o,30,30*Ze],[i,1,St],[i,3,3*St],[i,6,6*St],[i,12,12*St],[r,1,Tn],[r,2,2*Tn],[n,1,hc],[e,1,zd],[e,3,3*zd],[t,1,pc]];function s(u,f,l){const d=f<u;d&&([u,f]=[f,u]);const h=l&&typeof l.range=="function"?l:c(u,f,l),p=h?h.range(u,+f+1):[];return d?p.reverse():p}function c(u,f,l){const d=Math.abs(f-u)/l,h=Jo(([,,y])=>y).right(a,d);if(h===a.length)return t.every(Mn(u/pc,f/pc,l));if(h===0)return dc.every(Math.max(Mn(u,f,l),1));const[p,m]=a[d/a[h-1][2]<a[h][2]/d?h-1:h];return p.every(m)}return[s,c]}const[x2,C2]=Wd(Zt,ca,hi,kn,bc,vc),[E2,S2]=Wd(Xt,aa,di,In,gc,mc),pi="year",mi="quarter",gi="month",yi="week",vi="date",ua="day",wc="dayofyear",bi="hours",Ai="minutes",wi="seconds",la="milliseconds";[pi,mi,gi,yi,vi,ua,wc,bi,Ai,wi,la].reduce((t,e,n)=>(t[e]=1+n,t),{});const D2={[pi]:Xt,[mi]:aa.every(3),[gi]:aa,[yi]:di,[vi]:In,[ua]:In,[wc]:In,[bi]:gc,[Ai]:mc,[wi]:Wt,[la]:dc},M2={[pi]:Zt,[mi]:ca.every(3),[gi]:ca,[yi]:hi,[vi]:kn,[ua]:kn,[wc]:kn,[bi]:bc,[Ai]:vc,[wi]:Wt,[la]:dc};function T2(t){return D2[t]}function I2(t){return M2[t]}function xc(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 Cc(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 xi(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Xd(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,s=t.months,c=t.shortMonths,u=Ci(i),f=Ei(i),l=Ci(o),d=Ei(o),h=Ci(a),p=Ei(a),m=Ci(s),y=Ei(s),g=Ci(c),A=Ei(c),w={a:wn,A:Y,b:Ye,B:Uo,c:null,d:eh,e:eh,f:J2,g:cA,G:lA,H:Z2,I:q2,j:K2,L:th,m:$2,M:eA,p:Go,q:Ys,Q:sh,s:ch,S:tA,u:nA,U:rA,V:iA,w:oA,W:aA,x:null,X:null,y:sA,Y:uA,Z:fA,"%":ah},C={a:ad,A:ik,b:ok,B:ak,c:null,d:rh,e:rh,f:mA,g:SA,G:MA,H:dA,I:hA,j:pA,L:ih,m:gA,M:yA,p:sk,q:ck,Q:sh,s:ch,S:vA,u:bA,U:AA,V:wA,w:xA,W:CA,x:null,X:null,y:EA,Y:DA,Z:TA,"%":ah},b={a:L,A:T,b:B,B:H,c:U,d:Jd,e:Jd,f:Y2,g:Kd,G:qd,H:$d,I:$d,j:G2,L:V2,m:U2,M:H2,p:I,q:j2,Q:W2,s:X2,S:Q2,u:B2,U:F2,V:P2,w:O2,W:z2,x:we,X:Ne,y:Kd,Y:qd,Z:R2,"%":_2};w.x=v(n,w),w.X=v(r,w),w.c=v(e,w),C.x=v(n,C),C.X=v(r,C),C.c=v(e,C);function v(O,G){return function(_){var M=[],ze=-1,K=0,_e=O.length,We,pr,ab;for(_ instanceof Date||(_=new Date(+_));++ze<_e;)O.charCodeAt(ze)===37&&(M.push(O.slice(K,ze)),(pr=Zd[We=O.charAt(++ze)])!=null?We=O.charAt(++ze):pr=We==="e"?" ":"0",(ab=G[We])&&(We=ab(_,pr)),M.push(We),K=ze+1);return M.push(O.slice(K,ze)),M.join("")}}function x(O,G){return function(_){var M=xi(1900,void 0,1),ze=E(M,O,_+="",0),K,_e;if(ze!=_.length)return null;if("Q"in M)return new Date(M.Q);if("s"in M)return new Date(M.s*1e3+("L"in M?M.L:0));if(G&&!("Z"in M)&&(M.Z=0),"p"in M&&(M.H=M.H%12+M.p*12),M.m===void 0&&(M.m="q"in M?M.q:0),"V"in M){if(M.V<1||M.V>53)return null;"w"in M||(M.w=1),"Z"in M?(K=Cc(xi(M.y,0,1)),_e=K.getUTCDay(),K=_e>4||_e===0?sa.ceil(K):sa(K),K=kn.offset(K,(M.V-1)*7),M.y=K.getUTCFullYear(),M.m=K.getUTCMonth(),M.d=K.getUTCDate()+(M.w+6)%7):(K=xc(xi(M.y,0,1)),_e=K.getDay(),K=_e>4||_e===0?oa.ceil(K):oa(K),K=In.offset(K,(M.V-1)*7),M.y=K.getFullYear(),M.m=K.getMonth(),M.d=K.getDate()+(M.w+6)%7)}else("W"in M||"U"in M)&&("w"in M||(M.w="u"in M?M.u%7:"W"in M?1:0),_e="Z"in M?Cc(xi(M.y,0,1)).getUTCDay():xc(xi(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(_e+5)%7:M.w+M.U*7-(_e+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,Cc(M)):xc(M)}}function E(O,G,_,M){for(var ze=0,K=G.length,_e=_.length,We,pr;ze<K;){if(M>=_e)return-1;if(We=G.charCodeAt(ze++),We===37){if(We=G.charAt(ze++),pr=b[We in Zd?G.charAt(ze++):We],!pr||(M=pr(O,_,M))<0)return-1}else if(We!=_.charCodeAt(M++))return-1}return M}function I(O,G,_){var M=u.exec(G.slice(_));return M?(O.p=f.get(M[0].toLowerCase()),_+M[0].length):-1}function L(O,G,_){var M=h.exec(G.slice(_));return M?(O.w=p.get(M[0].toLowerCase()),_+M[0].length):-1}function T(O,G,_){var M=l.exec(G.slice(_));return M?(O.w=d.get(M[0].toLowerCase()),_+M[0].length):-1}function B(O,G,_){var M=g.exec(G.slice(_));return M?(O.m=A.get(M[0].toLowerCase()),_+M[0].length):-1}function H(O,G,_){var M=m.exec(G.slice(_));return M?(O.m=y.get(M[0].toLowerCase()),_+M[0].length):-1}function U(O,G,_){return E(O,e,G,_)}function we(O,G,_){return E(O,n,G,_)}function Ne(O,G,_){return E(O,r,G,_)}function wn(O){return a[O.getDay()]}function Y(O){return o[O.getDay()]}function Ye(O){return c[O.getMonth()]}function Uo(O){return s[O.getMonth()]}function Go(O){return i[+(O.getHours()>=12)]}function Ys(O){return 1+~~(O.getMonth()/3)}function ad(O){return a[O.getUTCDay()]}function ik(O){return o[O.getUTCDay()]}function ok(O){return c[O.getUTCMonth()]}function ak(O){return s[O.getUTCMonth()]}function sk(O){return i[+(O.getUTCHours()>=12)]}function ck(O){return 1+~~(O.getUTCMonth()/3)}return{format:function(O){var G=v(O+="",w);return G.toString=function(){return O},G},parse:function(O){var G=x(O+="",!1);return G.toString=function(){return O},G},utcFormat:function(O){var G=v(O+="",C);return G.toString=function(){return O},G},utcParse:function(O){var G=x(O+="",!0);return G.toString=function(){return O},G}}}var Zd={"-":"",_:" ",0:"0"},he=/^\s*\d+/,N2=/^%/,k2=/[\\^$*+?|[\]().{}]/g;function Q(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 L2(t){return t.replace(k2,"\\$&")}function Ci(t){return new RegExp("^(?:"+t.map(L2).join("|")+")","i")}function Ei(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function O2(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function B2(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function F2(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function P2(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function z2(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function qd(t,e,n){var r=he.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Kd(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function R2(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 j2(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function U2(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Jd(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function G2(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function $d(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function H2(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Q2(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function V2(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Y2(t,e,n){var r=he.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function _2(t,e,n){var r=N2.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function W2(t,e,n){var r=he.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function X2(t,e,n){var r=he.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function eh(t,e){return Q(t.getDate(),e,2)}function Z2(t,e){return Q(t.getHours(),e,2)}function q2(t,e){return Q(t.getHours()%12||12,e,2)}function K2(t,e){return Q(1+In.count(Xt(t),t),e,3)}function th(t,e){return Q(t.getMilliseconds(),e,3)}function J2(t,e){return th(t,e)+"000"}function $2(t,e){return Q(t.getMonth()+1,e,2)}function eA(t,e){return Q(t.getMinutes(),e,2)}function tA(t,e){return Q(t.getSeconds(),e,2)}function nA(t){var e=t.getDay();return e===0?7:e}function rA(t,e){return Q(di.count(Xt(t)-1,t),e,2)}function nh(t){var e=t.getDay();return e>=4||e===0?yr(t):yr.ceil(t)}function iA(t,e){return t=nh(t),Q(yr.count(Xt(t),t)+(Xt(t).getDay()===4),e,2)}function oA(t){return t.getDay()}function aA(t,e){return Q(oa.count(Xt(t)-1,t),e,2)}function sA(t,e){return Q(t.getFullYear()%100,e,2)}function cA(t,e){return t=nh(t),Q(t.getFullYear()%100,e,2)}function uA(t,e){return Q(t.getFullYear()%1e4,e,4)}function lA(t,e){var n=t.getDay();return t=n>=4||n===0?yr(t):yr.ceil(t),Q(t.getFullYear()%1e4,e,4)}function fA(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Q(e/60|0,"0",2)+Q(e%60,"0",2)}function rh(t,e){return Q(t.getUTCDate(),e,2)}function dA(t,e){return Q(t.getUTCHours(),e,2)}function hA(t,e){return Q(t.getUTCHours()%12||12,e,2)}function pA(t,e){return Q(1+kn.count(Zt(t),t),e,3)}function ih(t,e){return Q(t.getUTCMilliseconds(),e,3)}function mA(t,e){return ih(t,e)+"000"}function gA(t,e){return Q(t.getUTCMonth()+1,e,2)}function yA(t,e){return Q(t.getUTCMinutes(),e,2)}function vA(t,e){return Q(t.getUTCSeconds(),e,2)}function bA(t){var e=t.getUTCDay();return e===0?7:e}function AA(t,e){return Q(hi.count(Zt(t)-1,t),e,2)}function oh(t){var e=t.getUTCDay();return e>=4||e===0?vr(t):vr.ceil(t)}function wA(t,e){return t=oh(t),Q(vr.count(Zt(t),t)+(Zt(t).getUTCDay()===4),e,2)}function xA(t){return t.getUTCDay()}function CA(t,e){return Q(sa.count(Zt(t)-1,t),e,2)}function EA(t,e){return Q(t.getUTCFullYear()%100,e,2)}function SA(t,e){return t=oh(t),Q(t.getUTCFullYear()%100,e,2)}function DA(t,e){return Q(t.getUTCFullYear()%1e4,e,4)}function MA(t,e){var n=t.getUTCDay();return t=n>=4||n===0?vr(t):vr.ceil(t),Q(t.getUTCFullYear()%1e4,e,4)}function TA(){return"+0000"}function ah(){return"%"}function sh(t){return+t}function ch(t){return Math.floor(+t/1e3)}var br,Ec,uh,Sc,lh;IA({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 IA(t){return br=Xd(t),Ec=br.format,uh=br.parse,Sc=br.utcFormat,lh=br.utcParse,br}function Si(t){const e={};return n=>e[n]||(e[n]=t(n))}function NA(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=kA(r,i);const a=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function kA(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 LA(t){const e=Si(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=_t(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return NA(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,a){a=_t(a==null?",f":a);const s=Mn(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(a.precision==null)switch(a.type){case"s":return isNaN(u=Fd(s,c))||(a.precision=u),n(a,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=Pd(s,c))||(a.precision=u-(a.type==="e"));break}case"f":case"%":{isNaN(u=Bd(s))||(a.precision=u-(a.type==="%")*2);break}}return e(a)}}}OA();function OA(){return LA({format:le,formatPrefix:uc})}function fh(t,e,n){n=n||{},Re(n)||oe("Invalid time multi-format specifier: ".concat(n));const r=e(wi),i=e(Ai),o=e(bi),a=e(vi),s=e(yi),c=e(gi),u=e(mi),f=e(pi),l=t(n[la]||".%L"),d=t(n[wi]||":%S"),h=t(n[Ai]||"%I:%M"),p=t(n[bi]||"%I %p"),m=t(n[vi]||n[ua]||"%a %d"),y=t(n[yi]||"%b %d"),g=t(n[gi]||"%B"),A=t(n[mi]||"%B"),w=t(n[pi]||"%Y");return C=>(r(C)<C?l:i(C)<C?d:o(C)<C?h:a(C)<C?p:c(C)<C?s(C)<C?m:y:f(C)<C?u(C)<C?g:A:w)(C)}function dh(t){const e=Si(t.format),n=Si(t.utcFormat);return{timeFormat:r=>ee(r)?e(r):fh(e,T2,r),utcFormat:r=>ee(r)?n(r):fh(n,I2,r),timeParse:Si(t.parse),utcParse:Si(t.utcParse)}}let Dc;BA();function BA(){return Dc=dh({format:Ec,parse:uh,utcFormat:Sc,utcParse:lh})}function FA(t){return dh(Xd(t))}function PA(t){return arguments.length?Dc=FA(t):Dc}const zA=/^(data:|([A-Za-z]+:)?\/\/)/,RA=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,jA=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,hh="file://";function UA(t,e){return n=>({options:n||{},sanitize:HA,load:GA,fileAccess:!!e,file:QA(e),http:YA(t)})}async function GA(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function HA(t,e){e=Ks({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,a;const s=RA.test(t.replace(jA,""));(t==null||typeof t!="string"||!s)&&oe("Sanitize failure, invalid URI: "+qo(t));const c=zA.test(t);return(a=e.baseURL)&&!c&&(!t.startsWith("/")&&!a.endsWith("/")&&(t="/"+t),t=a+t),o=(i=t.startsWith(hh))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(hh.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 QA(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):VA}async function VA(){oe("No file system access.")}function YA(t){return t?async function(e,n){const r=Ks({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?ke(o[i])?o[i]():o.text():oe(o.status+""+o.statusText)}:_A}async function _A(){oe("No HTTP fetch method available.")}const WA=t=>t!=null&&t===t,XA=t=>t==="true"||t==="false"||t===!0||t===!1,ZA=t=>!Number.isNaN(Date.parse(t)),ph=t=>!Number.isNaN(+t)&&!(t instanceof Date),qA=t=>ph(t)&&Number.isInteger(+t),mh={boolean:Lb,integer:ui,number:ui,date:Bb,string:Fb,unknown:Yo},fa=[XA,qA,ph,ZA],KA=["boolean","integer","number","date"];function gh(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=fa.length,i=fa.map((o,a)=>a+1);for(let o=0,a=0,s,c;o<n;++o)for(c=e?t[o][e]:t[o],s=0;s<r;++s)if(i[s]&&WA(c)&&!fa[s](c)&&(i[s]=0,++a,a===fa.length))return"string";return KA[i.reduce((o,a)=>o===0?a:o,0)-1]}function JA(t,e){return e.reduce((n,r)=>(n[r]=gh(t,r),n),{})}function yh(t){const e=function(n,r){const i={delimiter:t};return Mc(n,r?Ks(r,i):i)};return e.responseType="text",e}function Mc(t,e){return e.header&&(t=e.header.map(qo).join(e.delimiter)+`
|
6
|
+
`+t),wd(e.delimiter).parse(t+"")}Mc.responseType="text";function $A(t){return typeof Buffer=="function"&&ke(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function Tc(t,e){const n=e&&e.property?Vo(e.property):Yo;return Re(t)&&!$A(t)?ew(n(t),e):n(JSON.parse(t))}Tc.responseType="json";function ew(t,e){return!Xe(t)&&Nb(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const tw={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function vh(t,e){let n,r,i,o;return t=Tc(t,e),e&&e.feature?(n=Vb,i=e.feature):e&&e.mesh?(n=_b,i=e.mesh,o=tw[e.filter]):oe("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):oe("Invalid TopoJSON object: "+i),r&&r.features||[r]}vh.responseType="json";const Ic={dsv:Mc,csv:yh(","),tsv:yh(" "),json:Tc,topojson:vh};function bh(t,e){return arguments.length>1?(Ic[t]=e,this):En(Ic,t)?Ic[t]:null}function Ah(t,e,n,r){e=e||{};const i=bh(e.type||"json");return i||oe("Unknown data format type: "+e.type),t=i(t,e),e.parse&&nw(t,e.parse,n,r),En(t,"columns")&&delete t.columns,t}function nw(t,e,n,r){if(!t.length)return;const i=PA();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),a,s,c,u,f,l;e==="auto"&&(e=JA(t,o)),o=Object.keys(e);const d=o.map(h=>{const p=e[h];let m,y;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return m=p.split(/:(.+)?/,2),y=m[1],(y[0]==="'"&&y[y.length-1]==="'"||y[0]==='"'&&y[y.length-1]==='"')&&(y=y.slice(1,-1)),(m[0]==="utc"?r:n)(y);if(!mh[p])throw Error("Illegal format pattern: "+h+":"+p);return mh[p]});for(c=0,f=t.length,l=o.length;c<f;++c)for(a=t[c],u=0;u<l;++u)s=o[u],a[s]=d[u](a[s])}const Di=UA(typeof fetch<"u"&&fetch,null),wh=1;function Nc(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,a=.5,s=0;const u=f=>(f+a-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0]-a,u.domain=function(f){if(arguments.length){if(t=Kb(f),n=t[1]-t[0],n<wh){n=wh;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return u}else return t},u.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],u):e},u.numberingOffset=function(f){return arguments.length?(s=f,u):s},u.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),u):i},u.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),u):i},u.paddingOuter=function(f){return arguments.length?(o=f,u):o},u.align=function(f){return arguments.length?(a=Math.max(0,Math.min(1,f)),u):a},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=f=>{const l=u.align(),d=u.numberingOffset();return ea(t[0]-l+d,t[1]-l+d,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(h=>h-s)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const h=Mn(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?le(","):le(".3s");return p=>h(p+s)},u.copy=()=>Nc().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(s),u}function rw(){const t=Nc().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(),[a,s]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),c=Math.max(1,Mn(i[0],i[1],r)),u=[];for(let f=a.index;f<=s.index;f++){const l=e.chromosomes[f],d=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),h=Math.min(l.continuousEnd-c/4,i[1]+1);for(let p=d;p<=h;p+=c){const m=p-o;m>=i[0]&&m<i[1]&&u.push(m)}}return u},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(),a=o[1]-o[0],s=t.numberingOffset(),u=Mn(o[0],o[1],Math.min(r,Math.ceil(a)))<1e6?le(","):le(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+s)};const n=t.copy;return t.copy=()=>n().genome(e),t}function iw(t){return t.type=="locus"}function lt(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function qt(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 kc=Symbol("implicit");function Lc(){var t=new Dn,e=[],n=[],r=kc;function i(o){let a=t.get(o);if(a===void 0){if(r!==kc)return r;t.set(o,a=e.push(o)-1)}return n[a%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Dn;for(const a of o)t.has(a)||t.set(a,e.push(a)-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 Lc(e,n).unknown(r)},lt.apply(i,arguments),i}function Ar(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Mi(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Kt(){}var On=.7,wr=1/On,xr="\\s*([+-]?\\d+)\\s*",Ti="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",ft="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",ow=/^#([0-9a-f]{3,8})$/,aw=new RegExp(`^rgb\\(${xr},${xr},${xr}\\)$`),sw=new RegExp(`^rgb\\(${ft},${ft},${ft}\\)$`),cw=new RegExp(`^rgba\\(${xr},${xr},${xr},${Ti}\\)$`),uw=new RegExp(`^rgba\\(${ft},${ft},${ft},${Ti}\\)$`),lw=new RegExp(`^hsl\\(${Ti},${ft},${ft}\\)$`),fw=new RegExp(`^hsla\\(${Ti},${ft},${ft},${Ti}\\)$`),xh={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};Ar(Kt,Bn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ch,formatHex:Ch,formatHex8:dw,formatHsl:hw,formatRgb:Eh,toString:Eh});function Ch(){return this.rgb().formatHex()}function dw(){return this.rgb().formatHex8()}function hw(){return Ih(this).formatHsl()}function Eh(){return this.rgb().formatRgb()}function Bn(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=ow.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Sh(e):n===3?new pe(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?da(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?da(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=aw.exec(t))?new pe(e[1],e[2],e[3],1):(e=sw.exec(t))?new pe(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=cw.exec(t))?da(e[1],e[2],e[3],e[4]):(e=uw.exec(t))?da(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=lw.exec(t))?Th(e[1],e[2]/100,e[3]/100,1):(e=fw.exec(t))?Th(e[1],e[2]/100,e[3]/100,e[4]):xh.hasOwnProperty(t)?Sh(xh[t]):t==="transparent"?new pe(NaN,NaN,NaN,0):null}function Sh(t){return new pe(t>>16&255,t>>8&255,t&255,1)}function da(t,e,n,r){return r<=0&&(t=e=n=NaN),new pe(t,e,n,r)}function Oc(t){return t instanceof Kt||(t=Bn(t)),t?(t=t.rgb(),new pe(t.r,t.g,t.b,t.opacity)):new pe}function ha(t,e,n,r){return arguments.length===1?Oc(t):new pe(t,e,n,r==null?1:r)}function pe(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Ar(pe,ha,Mi(Kt,{brighter(t){return t=t==null?wr:Math.pow(wr,t),new pe(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?On:Math.pow(On,t),new pe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new pe(Fn(this.r),Fn(this.g),Fn(this.b),pa(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:Dh,formatHex:Dh,formatHex8:pw,formatRgb:Mh,toString:Mh}));function Dh(){return`#${Pn(this.r)}${Pn(this.g)}${Pn(this.b)}`}function pw(){return`#${Pn(this.r)}${Pn(this.g)}${Pn(this.b)}${Pn((isNaN(this.opacity)?1:this.opacity)*255)}`}function Mh(){const t=pa(this.opacity);return`${t===1?"rgb(":"rgba("}${Fn(this.r)}, ${Fn(this.g)}, ${Fn(this.b)}${t===1?")":`, ${t})`}`}function pa(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Fn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Pn(t){return t=Fn(t),(t<16?"0":"")+t.toString(16)}function Th(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new rt(t,e,n,r)}function Ih(t){if(t instanceof rt)return new rt(t.h,t.s,t.l,t.opacity);if(t instanceof Kt||(t=Bn(t)),!t)return new rt;if(t instanceof rt)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),a=NaN,s=o-i,c=(o+i)/2;return s?(e===o?a=(n-r)/s+(n<r)*6:n===o?a=(r-e)/s+2:a=(e-n)/s+4,s/=c<.5?o+i:2-o-i,a*=60):s=c>0&&c<1?0:a,new rt(a,s,c,t.opacity)}function Bc(t,e,n,r){return arguments.length===1?Ih(t):new rt(t,e,n,r==null?1:r)}function rt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Ar(rt,Bc,Mi(Kt,{brighter(t){return t=t==null?wr:Math.pow(wr,t),new rt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?On:Math.pow(On,t),new rt(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 pe(Fc(t>=240?t-240:t+120,i,r),Fc(t,i,r),Fc(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new rt(Nh(this.h),ma(this.s),ma(this.l),pa(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=pa(this.opacity);return`${t===1?"hsl(":"hsla("}${Nh(this.h)}, ${ma(this.s)*100}%, ${ma(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Nh(t){return t=(t||0)%360,t<0?t+360:t}function ma(t){return Math.max(0,Math.min(1,t||0))}function Fc(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 kh=Math.PI/180,Lh=180/Math.PI,ga=18,Oh=.96422,Bh=1,Fh=.82521,Ph=4/29,Cr=6/29,zh=3*Cr*Cr,mw=Cr*Cr*Cr;function Rh(t){if(t instanceof dt)return new dt(t.l,t.a,t.b,t.opacity);if(t instanceof Dt)return jh(t);t instanceof pe||(t=Oc(t));var e=Uc(t.r),n=Uc(t.g),r=Uc(t.b),i=zc((.2225045*e+.7168786*n+.0606169*r)/Bh),o,a;return e===n&&n===r?o=a=i:(o=zc((.4360747*e+.3850649*n+.1430804*r)/Oh),a=zc((.0139322*e+.0971045*n+.7141733*r)/Fh)),new dt(116*i-16,500*(o-i),200*(i-a),t.opacity)}function Pc(t,e,n,r){return arguments.length===1?Rh(t):new dt(t,e,n,r==null?1:r)}function dt(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}Ar(dt,Pc,Mi(Kt,{brighter(t){return new dt(this.l+ga*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new dt(this.l-ga*(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=Oh*Rc(e),t=Bh*Rc(t),n=Fh*Rc(n),new pe(jc(3.1338561*e-1.6168667*t-.4906146*n),jc(-.9787684*e+1.9161415*t+.033454*n),jc(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function zc(t){return t>mw?Math.pow(t,1/3):t/zh+Ph}function Rc(t){return t>Cr?t*t*t:zh*(t-Ph)}function jc(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Uc(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function gw(t){if(t instanceof Dt)return new Dt(t.h,t.c,t.l,t.opacity);if(t instanceof dt||(t=Rh(t)),t.a===0&&t.b===0)return new Dt(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Lh;return new Dt(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Gc(t,e,n,r){return arguments.length===1?gw(t):new Dt(t,e,n,r==null?1:r)}function Dt(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function jh(t){if(isNaN(t.h))return new dt(t.l,0,0,t.opacity);var e=t.h*kh;return new dt(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Ar(Dt,Gc,Mi(Kt,{brighter(t){return new Dt(this.h,this.c,this.l+ga*(t==null?1:t),this.opacity)},darker(t){return new Dt(this.h,this.c,this.l-ga*(t==null?1:t),this.opacity)},rgb(){return jh(this).rgb()}}));var Uh=-.14861,Hc=1.78277,Qc=-.29227,ya=-.90649,Ii=1.97294,Gh=Ii*ya,Hh=Ii*Hc,Qh=Hc*Qc-ya*Uh;function yw(t){if(t instanceof zn)return new zn(t.h,t.s,t.l,t.opacity);t instanceof pe||(t=Oc(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Qh*r+Gh*e-Hh*n)/(Qh+Gh-Hh),o=r-i,a=(Ii*(n-i)-Qc*o)/ya,s=Math.sqrt(a*a+o*o)/(Ii*i*(1-i)),c=s?Math.atan2(a,o)*Lh-120:NaN;return new zn(c<0?c+360:c,s,i,t.opacity)}function Vc(t,e,n,r){return arguments.length===1?yw(t):new zn(t,e,n,r==null?1:r)}function zn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Ar(zn,Vc,Mi(Kt,{brighter(t){return t=t==null?wr:Math.pow(wr,t),new zn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?On:Math.pow(On,t),new zn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*kh,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new pe(255*(e+n*(Uh*r+Hc*i)),255*(e+n*(Qc*r+ya*i)),255*(e+n*(Ii*r)),this.opacity)}}));function Vh(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}function Yh(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],a=r>0?t[r-1]:2*i-o,s=r<e-1?t[r+2]:2*o-i;return Vh((n-r/e)*e,a,i,o,s)}}function _h(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],a=t[(r+1)%e],s=t[(r+2)%e];return Vh((n-r/e)*e,i,o,a,s)}}const va=t=>()=>t;function Wh(t,e){return function(n){return t+n*e}}function vw(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 ba(t,e){var n=e-t;return n?Wh(t,n>180||n<-180?n-360*Math.round(n/360):n):va(isNaN(t)?e:t)}function bw(t){return(t=+t)==1?me:function(e,n){return n-e?vw(e,n,t):va(isNaN(e)?n:e)}}function me(t,e){var n=e-t;return n?Wh(t,n):va(isNaN(t)?e:t)}const Yc=function t(e){var n=bw(e);function r(i,o){var a=n((i=ha(i)).r,(o=ha(o)).r),s=n(i.g,o.g),c=n(i.b,o.b),u=me(i.opacity,o.opacity);return function(f){return i.r=a(f),i.g=s(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function Xh(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),a,s;for(a=0;a<n;++a)s=ha(e[a]),r[a]=s.r||0,i[a]=s.g||0,o[a]=s.b||0;return r=t(r),i=t(i),o=t(o),s.opacity=1,function(c){return s.r=r(c),s.g=i(c),s.b=o(c),s+""}}}var Aw=Xh(Yh),ww=Xh(_h);function _c(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 Zh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function xw(t,e){return(Zh(e)?_c:qh)(t,e)}function qh(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),a;for(a=0;a<r;++a)i[a]=Jt(t[a],e[a]);for(;a<n;++a)o[a]=e[a];return function(s){for(a=0;a<r;++a)o[a]=i[a](s);return o}}function Kh(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function it(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Jh(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]=Jt(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var Wc=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Xc=new RegExp(Wc.source,"g");function Cw(t){return function(){return t}}function Ew(t){return function(e){return t(e)+""}}function $h(t,e){var n=Wc.lastIndex=Xc.lastIndex=0,r,i,o,a=-1,s=[],c=[];for(t=t+"",e=e+"";(r=Wc.exec(t))&&(i=Xc.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),s[a]?s[a]+=o:s[++a]=o),(r=r[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,c.push({i:a,x:it(r,i)})),n=Xc.lastIndex;return n<e.length&&(o=e.slice(n),s[a]?s[a]+=o:s[++a]=o),s.length<2?c[0]?Ew(c[0].x):Cw(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)s[(l=c[f]).i]=l.x(u);return s.join("")})}function Jt(t,e){var n=typeof e,r;return e==null||n==="boolean"?va(e):(n==="number"?it:n==="string"?(r=Bn(e))?(e=r,Yc):$h:e instanceof Bn?Yc:e instanceof Date?Kh:Zh(e)?_c:Array.isArray(e)?qh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Jh:it)(t,e)}function Sw(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Dw(t,e){var n=ba(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Ni(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var e0=180/Math.PI,Zc={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function t0(t,e,n,r,i,o){var a,s,c;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*e0,skewX:Math.atan(c)*e0,scaleX:a,scaleY:s}}var Aa;function Mw(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Zc:t0(e.a,e.b,e.c,e.d,e.e,e.f)}function Tw(t){return t==null||(Aa||(Aa=document.createElementNS("http://www.w3.org/2000/svg","g")),Aa.setAttribute("transform",t),!(t=Aa.transform.baseVal.consolidate()))?Zc:(t=t.matrix,t0(t.a,t.b,t.c,t.d,t.e,t.f))}function n0(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,d,h,p){if(u!==l||f!==d){var m=h.push("translate(",null,e,null,n);p.push({i:m-4,x:it(u,l)},{i:m-2,x:it(f,d)})}else(l||d)&&h.push("translate("+l+e+d+n)}function a(u,f,l,d){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),d.push({i:l.push(i(l)+"rotate(",null,r)-2,x:it(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function s(u,f,l,d){u!==f?d.push({i:l.push(i(l)+"skewX(",null,r)-2,x:it(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,d,h,p){if(u!==l||f!==d){var m=h.push(i(h)+"scale(",null,",",null,")");p.push({i:m-4,x:it(u,l)},{i:m-2,x:it(f,d)})}else(l!==1||d!==1)&&h.push(i(h)+"scale("+l+","+d+")")}return function(u,f){var l=[],d=[];return u=t(u),f=t(f),o(u.translateX,u.translateY,f.translateX,f.translateY,l,d),a(u.rotate,f.rotate,l,d),s(u.skewX,f.skewX,l,d),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,d),u=f=null,function(h){for(var p=-1,m=d.length,y;++p<m;)l[(y=d[p]).i]=y.x(h);return l.join("")}}}var Iw=n0(Mw,"px, ","px)","deg)"),Nw=n0(Tw,", ",")",")"),kw=1e-12;function r0(t){return((t=Math.exp(t))+1/t)/2}function Lw(t){return((t=Math.exp(t))-1/t)/2}function Ow(t){return((t=Math.exp(2*t))-1)/(t+1)}const i0=function t(e,n,r){function i(o,a){var s=o[0],c=o[1],u=o[2],f=a[0],l=a[1],d=a[2],h=f-s,p=l-c,m=h*h+p*p,y,g;if(m<kw)g=Math.log(d/u)/e,y=function(x){return[s+x*h,c+x*p,u*Math.exp(e*x*g)]};else{var A=Math.sqrt(m),w=(d*d-u*u+r*m)/(2*u*n*A),C=(d*d-u*u-r*m)/(2*d*n*A),b=Math.log(Math.sqrt(w*w+1)-w),v=Math.log(Math.sqrt(C*C+1)-C);g=(v-b)/e,y=function(x){var E=x*g,I=r0(b),L=u/(n*A)*(I*Ow(e*E+b)-Lw(b));return[s+L*h,c+L*p,u*I/r0(e*E+b)]}}return y.duration=g*1e3*e/Math.SQRT2,y}return i.rho=function(o){var a=Math.max(.001,+o),s=a*a,c=s*s;return t(a,s,c)},i}(Math.SQRT2,2,4);function o0(t){return function(e,n){var r=t((e=Bc(e)).h,(n=Bc(n)).h),i=me(e.s,n.s),o=me(e.l,n.l),a=me(e.opacity,n.opacity);return function(s){return e.h=r(s),e.s=i(s),e.l=o(s),e.opacity=a(s),e+""}}}const Bw=o0(ba);var Fw=o0(me);function Pw(t,e){var n=me((t=Pc(t)).l,(e=Pc(e)).l),r=me(t.a,e.a),i=me(t.b,e.b),o=me(t.opacity,e.opacity);return function(a){return t.l=n(a),t.a=r(a),t.b=i(a),t.opacity=o(a),t+""}}function a0(t){return function(e,n){var r=t((e=Gc(e)).h,(n=Gc(n)).h),i=me(e.c,n.c),o=me(e.l,n.l),a=me(e.opacity,n.opacity);return function(s){return e.h=r(s),e.c=i(s),e.l=o(s),e.opacity=a(s),e+""}}}const zw=a0(ba);var Rw=a0(me);function s0(t){return function e(n){n=+n;function r(i,o){var a=t((i=Vc(i)).h,(o=Vc(o)).h),s=me(i.s,o.s),c=me(i.l,o.l),u=me(i.opacity,o.opacity);return function(f){return i.h=a(f),i.s=s(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}const jw=s0(ba);var Uw=s0(me);function qc(t,e){e===void 0&&(e=t,t=Jt);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(a){var s=Math.max(0,Math.min(r-1,Math.floor(a*=r)));return o[s](a-s)}}function Gw(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}const Hw=Object.freeze(Object.defineProperty({__proto__:null,interpolate:Jt,interpolateArray:xw,interpolateBasis:Yh,interpolateBasisClosed:_h,interpolateDate:Kh,interpolateDiscrete:Sw,interpolateHue:Dw,interpolateNumber:it,interpolateNumberArray:_c,interpolateObject:Jh,interpolateRound:Ni,interpolateString:$h,interpolateTransformCss:Iw,interpolateTransformSvg:Nw,interpolateZoom:i0,interpolateRgb:Yc,interpolateRgbBasis:Aw,interpolateRgbBasisClosed:ww,interpolateHsl:Bw,interpolateHslLong:Fw,interpolateLab:Pw,interpolateHcl:zw,interpolateHclLong:Rw,interpolateCubehelix:jw,interpolateCubehelixLong:Uw,piecewise:qc,quantize:Gw},Symbol.toStringTag,{value:"Module"}));function Qw(t){return function(){return t}}function Kc(t){return+t}var c0=[0,1];function Oe(t){return t}function Jc(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Qw(isNaN(e)?NaN:.5)}function Vw(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Yw(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i<r?(r=Jc(i,r),o=n(a,o)):(r=Jc(r,i),o=n(o,a)),function(s){return o(r(s))}}function _w(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<r;)i[a]=Jc(t[a],t[a+1]),o[a]=n(e[a],e[a+1]);return function(s){var c=mr(t,s,1,r)-1;return o[c](i[c](s))}}function ki(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function wa(){var t=c0,e=c0,n=Jt,r,i,o,a=Oe,s,c,u;function f(){var d=Math.min(t.length,e.length);return a!==Oe&&(a=Vw(t[0],t[d-1])),s=d>2?_w:Yw,c=u=null,l}function l(d){return d==null||isNaN(d=+d)?o:(c||(c=s(t.map(r),e,n)))(r(a(d)))}return l.invert=function(d){return a(i((u||(u=s(e,t.map(r),it)))(d)))},l.domain=function(d){return arguments.length?(t=Array.from(d,Kc),f()):t.slice()},l.range=function(d){return arguments.length?(e=Array.from(d),f()):e.slice()},l.rangeRound=function(d){return e=Array.from(d),n=Ni,f()},l.clamp=function(d){return arguments.length?(a=d?!0:Oe,f()):a!==Oe},l.interpolate=function(d){return arguments.length?(n=d,f()):n},l.unknown=function(d){return arguments.length?(o=d,l):o},function(d,h){return r=d,i=h,f()}}function u0(){return wa()(Oe,Oe)}function l0(t,e,n,r){var i=Mn(t,e,n),o;switch(r=_t(r==null?",f":r),r.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Fd(i,a))&&(r.precision=o),uc(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Pd(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Bd(i))&&(r.precision=o-(r.type==="%")*2);break}}return le(r)}function Rn(t){var e=t.domain;return t.ticks=function(n){var r=e();return ea(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return l0(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,a=r[i],s=r[o],c,u,f=10;for(s<a&&(u=a,a=s,s=u,u=i,i=o,o=u);f-- >0;){if(u=Md(a,s,n),u===c)return r[i]=a,r[o]=s,e(r);if(u>0)a=Math.floor(a/u)*u,s=Math.ceil(s/u)*u;else if(u<0)a=Math.ceil(a*u)/u,s=Math.floor(s*u)/u;else break;c=u}return t},t}function f0(){var t=u0();return t.copy=function(){return ki(t,f0())},lt.apply(t,arguments),Rn(t)}function d0(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,Kc),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return d0(t).unknown(e)},t=arguments.length?Array.from(t,Kc):[0,1],Rn(n)}function h0(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],a;return o<i&&(a=n,n=r,r=a,a=i,i=o,o=a),t[n]=e.floor(i),t[r]=e.ceil(o),t}function p0(t){return Math.log(t)}function m0(t){return Math.exp(t)}function Ww(t){return-Math.log(-t)}function Xw(t){return-Math.exp(-t)}function Zw(t){return isFinite(t)?+("1e"+t):t<0?0:t}function qw(t){return t===10?Zw:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Kw(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 g0(t){return(e,n)=>-t(-e,n)}function $c(t){const e=t(p0,m0),n=e.domain;let r=10,i,o;function a(){return i=Kw(r),o=qw(r),n()[0]<0?(i=g0(i),o=g0(o),t(Ww,Xw)):t(p0,m0),e}return e.base=function(s){return arguments.length?(r=+s,a()):r},e.domain=function(s){return arguments.length?(n(s),a()):n()},e.ticks=s=>{const c=n();let u=c[0],f=c[c.length-1];const l=f<u;l&&([u,f]=[f,u]);let d=i(u),h=i(f),p,m;const y=s==null?10:+s;let g=[];if(!(r%1)&&h-d<y){if(d=Math.floor(d),h=Math.ceil(h),u>0){for(;d<=h;++d)for(p=1;p<r;++p)if(m=d<0?p/o(-d):p*o(d),!(m<u)){if(m>f)break;g.push(m)}}else for(;d<=h;++d)for(p=r-1;p>=1;--p)if(m=d>0?p/o(-d):p*o(d),!(m<u)){if(m>f)break;g.push(m)}g.length*2<y&&(g=ea(u,f,y))}else g=ea(d,h,Math.min(h-d,y)).map(o);return l?g.reverse():g},e.tickFormat=(s,c)=>{if(s==null&&(s=10),c==null&&(c=r===10?"s":","),typeof c!="function"&&(!(r%1)&&(c=_t(c)).precision==null&&(c.trim=!0),c=le(c)),s===1/0)return c;const u=Math.max(1,r*s/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=()=>n(h0(n(),{floor:s=>o(Math.floor(i(s))),ceil:s=>o(Math.ceil(i(s)))})),e}function eu(){const t=$c(wa()).domain([1,10]);return t.copy=()=>ki(t,eu()).base(t.base()),lt.apply(t,arguments),t}function y0(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function v0(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function tu(t){var e=1,n=t(y0(e),v0(e));return n.constant=function(r){return arguments.length?t(y0(e=+r),v0(e)):e},Rn(n)}function b0(){var t=tu(wa());return t.copy=function(){return ki(t,b0()).constant(t.constant())},lt.apply(t,arguments)}function A0(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Jw(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function $w(t){return t<0?-t*t:t*t}function nu(t){var e=t(Oe,Oe),n=1;function r(){return n===1?t(Oe,Oe):n===.5?t(Jw,$w):t(A0(n),A0(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Rn(e)}function ru(){var t=nu(wa());return t.copy=function(){return ki(t,ru()).exponent(t.exponent())},lt.apply(t,arguments),t}function ex(){return ru.apply(null,arguments).exponent(.5)}function w0(){var t=[],e=[],n=[],r;function i(){var a=0,s=Math.max(1,e.length);for(n=new Array(s-1);++a<s;)n[a-1]=sc(t,a/s);return o}function o(a){return a==null||isNaN(a=+a)?r:e[mr(n,a)]}return o.invertExtent=function(a){var s=e.indexOf(a);return s<0?[NaN,NaN]:[s>0?n[s-1]:t[0],s<n.length?n[s]:t[t.length-1]]},o.domain=function(a){if(!arguments.length)return t.slice();t=[];for(let s of a)s!=null&&!isNaN(s=+s)&&t.push(s);return t.sort(Sn),i()},o.range=function(a){return arguments.length?(e=Array.from(a),i()):e.slice()},o.unknown=function(a){return arguments.length?(r=a,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return w0().domain(t).range(e).unknown(r)},lt.apply(o,arguments)}function x0(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function a(c){return c!=null&&c<=c?i[mr(r,c,0,n)]:o}function s(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return a}return a.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,s()):[t,e]},a.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,s()):i.slice()},a.invertExtent=function(c){var u=i.indexOf(c);return u<0?[NaN,NaN]:u<1?[t,r[0]]:u>=n?[r[n-1],e]:[r[u-1],r[u]]},a.unknown=function(c){return arguments.length&&(o=c),a},a.thresholds=function(){return r.slice()},a.copy=function(){return x0().domain([t,e]).range(i).unknown(o)},lt.apply(Rn(a),arguments)}function C0(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[mr(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 a=e.indexOf(o);return[t[a-1],t[a]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return C0().domain(t).range(e).unknown(n)},lt.apply(i,arguments)}function tx(t){return new Date(t)}function nx(t){return t instanceof Date?+t:+new Date(+t)}function iu(t,e,n,r,i,o,a,s,c,u){var f=u0(),l=f.invert,d=f.domain,h=u(".%L"),p=u(":%S"),m=u("%I:%M"),y=u("%I %p"),g=u("%a %d"),A=u("%b %d"),w=u("%B"),C=u("%Y");function b(v){return(c(v)<v?h:s(v)<v?p:a(v)<v?m:o(v)<v?y:r(v)<v?i(v)<v?g:A:n(v)<v?w:C)(v)}return f.invert=function(v){return new Date(l(v))},f.domain=function(v){return arguments.length?d(Array.from(v,nx)):d().map(tx)},f.ticks=function(v){var x=d();return t(x[0],x[x.length-1],v==null?10:v)},f.tickFormat=function(v,x){return x==null?b:u(x)},f.nice=function(v){var x=d();return(!v||typeof v.range!="function")&&(v=e(x[0],x[x.length-1],v==null?10:v)),v?d(h0(x,v)):f},f.copy=function(){return ki(f,iu(t,e,n,r,i,o,a,s,c,u))},f}function rx(){return lt.apply(iu(E2,S2,Xt,aa,di,In,gc,mc,Wt,Ec).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function ix(){return lt.apply(iu(x2,C2,Zt,ca,hi,kn,bc,vc,Wt,Sc).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function xa(){var t=0,e=1,n,r,i,o,a=Oe,s=!1,c;function u(l){return l==null||isNaN(l=+l)?c:a(i===0?.5:(l=(o(l)-n)*i,s?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),u):[t,e]},u.clamp=function(l){return arguments.length?(s=!!l,u):s},u.interpolator=function(l){return arguments.length?(a=l,u):a};function f(l){return function(d){var h,p;return arguments.length?([h,p]=d,a=l(h,p),u):[a(0),a(1)]}}return u.range=f(Jt),u.rangeRound=f(Ni),u.unknown=function(l){return arguments.length?(c=l,u):c},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),u}}function $t(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function ou(){var t=Rn(xa()(Oe));return t.copy=function(){return $t(t,ou())},qt.apply(t,arguments)}function E0(){var t=$c(xa()).domain([1,10]);return t.copy=function(){return $t(t,E0()).base(t.base())},qt.apply(t,arguments)}function S0(){var t=tu(xa());return t.copy=function(){return $t(t,S0()).constant(t.constant())},qt.apply(t,arguments)}function au(){var t=nu(xa());return t.copy=function(){return $t(t,au()).exponent(t.exponent())},qt.apply(t,arguments)}function ox(){return au.apply(null,arguments).exponent(.5)}function Ca(){var t=0,e=.5,n=1,r=1,i,o,a,s,c,u=Oe,f,l=!1,d;function h(m){return isNaN(m=+m)?d:(m=.5+((m=+f(m))-o)*(r*m<r*o?s:c),u(l?Math.max(0,Math.min(1,m)):m))}h.domain=function(m){return arguments.length?([t,e,n]=m,i=f(t=+t),o=f(e=+e),a=f(n=+n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,h):[t,e,n]},h.clamp=function(m){return arguments.length?(l=!!m,h):l},h.interpolator=function(m){return arguments.length?(u=m,h):u};function p(m){return function(y){var g,A,w;return arguments.length?([g,A,w]=y,u=qc(m,[g,A,w]),h):[u(0),u(.5),u(1)]}}return h.range=p(Jt),h.rangeRound=p(Ni),h.unknown=function(m){return arguments.length?(d=m,h):d},function(m){return f=m,i=m(t),o=m(e),a=m(n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,h}}function D0(){var t=Rn(Ca()(Oe));return t.copy=function(){return $t(t,D0())},qt.apply(t,arguments)}function M0(){var t=$c(Ca()).domain([.1,1,10]);return t.copy=function(){return $t(t,M0()).base(t.base())},qt.apply(t,arguments)}function T0(){var t=tu(Ca());return t.copy=function(){return $t(t,T0()).constant(t.constant())},qt.apply(t,arguments)}function su(){var t=nu(Ca());return t.copy=function(){return $t(t,su()).exponent(t.exponent())},qt.apply(t,arguments)}function ax(){return su.apply(null,arguments).exponent(.5)}function cu(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const sx="identity",Er="linear",en="log",Li="pow",Oi="sqrt",Ea="symlog",I0="time",N0="utc",ht="sequential",Sr="diverging",uu="quantile",k0="quantize",L0="threshold",lu="ordinal",fu="point",O0="band",du="bin-ordinal",fe="continuous",Bi="discrete",Fi="discretizing",qe="interpolating",B0="temporal";function cx(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 ux(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,a,s,c,u;for(i<r&&(s=r,r=i,i=s),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),a=c);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[a]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function hu(){const t=Lc().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,a=!1,s=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,d=r[1]<r[0],h=r[1-d],p=cu(l,s,c);let m=r[d-0];i=(h-m)/(p||1),a&&(i=Math.floor(i)),m+=(h-m-i*(l-s))*u,o=i*(1-s),a&&(m=Math.round(m),o=Math.round(o));const y=Yt(l).map(g=>m+i*g);return n(d?y.reverse():y)}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]],a=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(a=!!l,f()):a},t.padding=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),s=c,f()):s},t.paddingInner=function(l){return arguments.length?(s=Math.max(0,Math.min(1,l)),f()):s},t.paddingOuter=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const d=r[1]<r[0],h=d?n().reverse():n(),p=h.length-1;let m=+l[0],y=+l[1],g,A,w;if(!(m!==m||y!==y)&&(y<m&&(w=m,m=y,y=w),!(y<h[0]||m>r[1-d])))return g=Math.max(0,tc(h,m)-1),A=m===y?g:tc(h,y)-1,m-h[g]>o+1e-10&&++g,d&&(w=g,g=p-A,A=p-w),g>A?void 0:e().slice(g,A+1)},t.invert=function(l){const d=t.invertRange([l,l]);return d&&d[0]},t.copy=function(){return hu().domain(e()).range(r).round(a).paddingInner(s).paddingOuter(c).align(u)},f()}function F0(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return F0(e())},t}function lx(){return F0(hu().paddingInner(1))}var fx=Array.prototype.map;function dx(t){return fx.call(t,ui)}const hx=Array.prototype.slice;function P0(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(mr(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=dx(r),n):t.slice()},n.range=function(r){return arguments.length?(e=hx.call(r),n):e.slice()},n.tickFormat=function(r,i){return l0(t[0],nt(t),r==null?10:r,i)},n.copy=function(){return P0().domain(n.domain()).range(n.range())},n}const Sa={};function px(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?cx(o):o.invertExtent?ux(o):void 0),o.type=t,o};return r.metadata=Ko(qs(n)),r}function W(t,e,n){return arguments.length>1?(Sa[t]=px(t,e,n),this):mx(t)?Sa[t]:void 0}W(sx,d0),W(Er,f0,fe),W(en,eu,[fe,en]),W(Li,ru,fe),W(Oi,ex,fe),W(Ea,b0,fe),W(I0,rx,[fe,B0]),W(N0,ix,[fe,B0]),W(ht,ou,[fe,qe]),W("".concat(ht,"-").concat(Er),ou,[fe,qe]),W("".concat(ht,"-").concat(en),E0,[fe,qe,en]),W("".concat(ht,"-").concat(Li),au,[fe,qe]),W("".concat(ht,"-").concat(Oi),ox,[fe,qe]),W("".concat(ht,"-").concat(Ea),S0,[fe,qe]),W("".concat(Sr,"-").concat(Er),D0,[fe,qe]),W("".concat(Sr,"-").concat(en),M0,[fe,qe,en]),W("".concat(Sr,"-").concat(Li),su,[fe,qe]),W("".concat(Sr,"-").concat(Oi),ax,[fe,qe]),W("".concat(Sr,"-").concat(Ea),T0,[fe,qe]),W(uu,w0,[Fi,uu]),W(k0,x0,Fi),W(L0,C0,Fi),W(du,P0,[Bi,Fi]),W(lu,Lc,Bi),W(O0,hu,Bi),W(fu,lx,Bi);function mx(t){return En(Sa,t)}function Pi(t,e){const n=Sa[t];return n&&n.metadata[e]}function je(t){return Pi(t,fe)}function tn(t){return Pi(t,Bi)}function Dr(t){return Pi(t,Fi)}function z0(t){return Pi(t,en)}function Da(t){return Pi(t,qe)}function gx(t,e){const n=e[0],r=nt(e)-n;return function(i){return t(n+i*r)}}function Ma(t,e,n){return qc(R0(e||"rgb",n),t)}function yx(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function R0(t,e){const n=Hw[vx(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function vx(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const bx={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"},Ax={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 j0(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 U0(t,e){for(const n in t)pu(n,e(t[n]))}const G0={};U0(Ax,j0),U0(bx,t=>Ma(j0(t)));function pu(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(G0[t]=e,this):G0[t]}const dk="";function wx(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}/**
|
7
7
|
* @license
|
8
8
|
* Copyright 2017 Google LLC
|
9
9
|
* SPDX-License-Identifier: BSD-3-Clause
|
10
|
-
*/var gu;const wr=globalThis.trustedTypes,N0=wr?wr.createPolicy("lit-html",{createHTML:t=>t}):void 0,on=`lit$${(Math.random()+"").slice(9)}$`,L0="?"+on,nw=`<${L0}>`,Cr=document,Li=(t="")=>Cr.createComment(t),Bi=t=>t===null||typeof t!="object"&&typeof t!="function",B0=Array.isArray,rw=t=>{var e;return B0(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},Oi=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,O0=/-->/g,P0=/>/g,Un=/>|[ \n\r](?:([^\s"'>=/]+)([ \n\r]*=[ \n\r]*(?:[^ \n\r"'`<>=]|("|')|))|$)/g,F0=/'/g,z0=/"/g,R0=/^(?:script|style|textarea|title)$/i,iw=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),D=iw(1),Ee=Symbol.for("lit-noChange"),G=Symbol.for("lit-nothing"),j0=new WeakMap,Ge=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let a=o._$litPart$;if(a===void 0){const s=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=a=new Fi(e.insertBefore(Li(),s),s,void 0,n!=null?n:{})}return a._$AI(t),a},Sr=Cr.createTreeWalker(Cr,129,null,!1),ow=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",a=Oi;for(let c=0;c<n;c++){const u=t[c];let f,l,d=-1,h=0;for(;h<u.length&&(a.lastIndex=h,l=a.exec(u),l!==null);)h=a.lastIndex,a===Oi?l[1]==="!--"?a=O0:l[1]!==void 0?a=P0:l[2]!==void 0?(R0.test(l[2])&&(i=RegExp("</"+l[2],"g")),a=Un):l[3]!==void 0&&(a=Un):a===Un?l[0]===">"?(a=i!=null?i:Oi,d=-1):l[1]===void 0?d=-2:(d=a.lastIndex-l[2].length,f=l[1],a=l[3]===void 0?Un:l[3]==='"'?z0:F0):a===z0||a===F0?a=Un:a===O0||a===P0?a=Oi:(a=Un,i=void 0);const p=a===Un&&t[c+1].startsWith("/>")?" ":"";o+=a===Oi?u+nw:d>=0?(r.push(f),u.slice(0,d)+"$lit$"+u.slice(d)+on+p):u+on+(d===-2?(r.push(void 0),c):p)}const s=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[N0!==void 0?N0.createHTML(s):s,r]};class Pi{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,a=0;const s=e.length-1,c=this.parts,[u,f]=ow(e,n);if(this.el=Pi.createElement(u,r),Sr.currentNode=this.el.content,n===2){const l=this.el.content,d=l.firstChild;d.remove(),l.append(...d.childNodes)}for(;(i=Sr.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const d of i.getAttributeNames())if(d.endsWith("$lit$")||d.startsWith(on)){const h=f[a++];if(l.push(d),h!==void 0){const p=i.getAttribute(h.toLowerCase()+"$lit$").split(on),m=/([.?@])?(.*)/.exec(h);c.push({type:1,index:o,name:m[2],strings:p,ctor:m[1]==="."?sw:m[1]==="?"?uw:m[1]==="@"?lw:Ea})}else c.push({type:6,index:o})}for(const d of l)i.removeAttribute(d)}if(R0.test(i.tagName)){const l=i.textContent.split(on),d=l.length-1;if(d>0){i.textContent=wr?wr.emptyScript:"";for(let h=0;h<d;h++)i.append(l[h],Li()),Sr.nextNode(),c.push({type:2,index:++o});i.append(l[d],Li())}}}else if(i.nodeType===8)if(i.data===L0)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(on,l+1))!==-1;)c.push({type:7,index:o}),l+=on.length-1}o++}}static createElement(e,n){const r=Cr.createElement("template");return r.innerHTML=e,r}}function Er(t,e,n=t,r){var i,o,a,s;if(e===Ee)return e;let c=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const u=Bi(e)?void 0:e._$litDirective$;return(c==null?void 0:c.constructor)!==u&&((o=c==null?void 0:c._$AO)===null||o===void 0||o.call(c,!1),u===void 0?c=void 0:(c=new u(t),c._$AT(t,n,r)),r!==void 0?((a=(s=n)._$Cl)!==null&&a!==void 0?a:s._$Cl=[])[r]=c:n._$Cu=c),c!==void 0&&(e=Er(t,c._$AS(t,e.values),c,r)),e}class aw{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:Cr).importNode(r,!0);Sr.currentNode=o;let a=Sr.nextNode(),s=0,c=0,u=i[0];for(;u!==void 0;){if(s===u.index){let f;u.type===2?f=new Fi(a,a.nextSibling,this,e):u.type===1?f=new u.ctor(a,u.name,u.strings,this,e):u.type===6&&(f=new fw(a,this,e)),this.v.push(f),u=i[++c]}s!==(u==null?void 0:u.index)&&(a=Sr.nextNode(),s++)}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 Fi{constructor(e,n,r,i){var o;this.type=2,this._$AH=G,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=Er(this,e,n),Bi(e)?e===G||e==null||e===""?(this._$AH!==G&&this._$AR(),this._$AH=G):e!==this._$AH&&e!==Ee&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.k(e):rw(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!==G&&Bi(this._$AH)?this._$AA.nextSibling.data=e:this.k(Cr.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=Pi.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 a=new aw(o,this),s=a.p(this.options);a.m(r),this.k(s),this._$AH=a}}_$AC(e){let n=j0.get(e.strings);return n===void 0&&j0.set(e.strings,n=new Pi(e)),n}S(e){B0(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 Fi(this.M(Li()),this.M(Li()),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 Ea{constructor(e,n,r,i,o){this.type=1,this._$AH=G,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=G}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let a=!1;if(o===void 0)e=Er(this,e,n,0),a=!Bi(e)||e!==this._$AH&&e!==Ee,a&&(this._$AH=e);else{const s=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=Er(this,s[r+c],n,c),u===Ee&&(u=this._$AH[c]),a||(a=!Bi(u)||u!==this._$AH[c]),u===G?e=G:e!==G&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}a&&!i&&this.C(e)}C(e){e===G?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class sw extends Ea{constructor(){super(...arguments),this.type=3}C(e){this.element[this.name]=e===G?void 0:e}}const cw=wr?wr.emptyScript:"";class uw extends Ea{constructor(){super(...arguments),this.type=4}C(e){e&&e!==G?this.element.setAttribute(this.name,cw):this.element.removeAttribute(this.name)}}class lw extends Ea{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=Er(this,e,n,0))!==null&&r!==void 0?r:G)===Ee)return;const i=this._$AH,o=e===G&&i!==G||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,a=e!==G&&(i===G||o);o&&this.element.removeEventListener(this.name,this,i),a&&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 fw{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){Er(this,e)}}const U0=window.litHtmlPolyfillSupport;U0==null||U0(Pi,Fi),((gu=globalThis.litHtmlVersions)!==null&&gu!==void 0?gu:globalThis.litHtmlVersions=[]).push("2.2.3");function G0(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function dw(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function $e(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function He(t){return t[t.length-1]}const Gn="gs-suppress-tooltip";class hw{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=He(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=tw(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&pw(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&&(Ge("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Ge(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(D`${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 pw(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const mw="RawCode",gw="Literal",yw="Property",vw="Identifier",bw="ArrayExpression",Aw="BinaryExpression",xw="CallExpression",ww="ConditionalExpression",Cw="LogicalExpression",Sw="MemberExpression",Ew="ObjectExpression",Dw="UnaryExpression";function st(t){this.type=t}st.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=Mw(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function Mw(t){switch(t.type){case bw:return t.elements;case Aw:case Cw:return[t.left,t.right];case xw:return[t.callee].concat(t.arguments);case ww:return[t.test,t.consequent,t.alternate];case Sw:return[t.object,t.property];case Ew:return t.properties;case yw:return[t.key,t.value];case Dw:return[t.argument];case vw:case gw:case mw:default:return[]}}var yt,B,S,De,K,Da=1,zi=2,Hn=3,an=4,Ma=5,Qn=6,Fe=7,Ri=8,Tw=9;yt={},yt[Da]="Boolean",yt[zi]="<end>",yt[Hn]="Identifier",yt[an]="Keyword",yt[Ma]="Null",yt[Qn]="Numeric",yt[Fe]="Punctuator",yt[Ri]="String",yt[Tw]="RegularExpression";var Iw="ArrayExpression",kw="BinaryExpression",Nw="CallExpression",Lw="ConditionalExpression",H0="Identifier",Bw="Literal",Ow="LogicalExpression",Pw="MemberExpression",Fw="ObjectExpression",zw="Property",Rw="UnaryExpression",be="Unexpected token %0",jw="Unexpected number",Uw="Unexpected string",Gw="Unexpected identifier",Hw="Unexpected reserved word",Qw="Unexpected end of input",yu="Invalid regular expression",vu="Invalid regular expression: missing /",Q0="Octal literals are not allowed in strict mode.",Vw="Duplicate data property in object literal not allowed in strict mode",Ce="ILLEGAL",ji="Disabled.",Yw=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]"),_w=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 Ta(t,e){if(!t)throw new Error("ASSERT: "+e)}function kt(t){return t>=48&&t<=57}function bu(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Ui(t){return"01234567".indexOf(t)>=0}function Ww(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 Gi(t){return t===10||t===13||t===8232||t===8233}function Hi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Yw.test(String.fromCharCode(t))}function Ia(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&_w.test(String.fromCharCode(t))}const Xw={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 V0(){for(;S<De;){const t=B.charCodeAt(S);if(Ww(t)||Gi(t))++S;else break}}function Au(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)S<De&&bu(B[S])?(r=B[S++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):_({},be,Ce);return String.fromCharCode(i)}function Zw(){var t,e,n,r;for(t=B[S],e=0,t==="}"&&_({},be,Ce);S<De&&(t=B[S++],!!bu(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&_({},be,Ce),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function Y0(){var t,e;for(t=B.charCodeAt(S++),e=String.fromCharCode(t),t===92&&(B.charCodeAt(S)!==117&&_({},be,Ce),++S,t=Au("u"),(!t||t==="\\"||!Hi(t.charCodeAt(0)))&&_({},be,Ce),e=t);S<De&&(t=B.charCodeAt(S),!!Ia(t));)++S,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),B.charCodeAt(S)!==117&&_({},be,Ce),++S,t=Au("u"),(!t||t==="\\"||!Ia(t.charCodeAt(0)))&&_({},be,Ce),e+=t);return e}function qw(){var t,e;for(t=S++;S<De;){if(e=B.charCodeAt(S),e===92)return S=t,Y0();if(Ia(e))++S;else break}return B.slice(t,S)}function Kw(){var t,e,n;return t=S,e=B.charCodeAt(S)===92?Y0():qw(),e.length===1?n=Hn:Xw.hasOwnProperty(e)?n=an:e==="null"?n=Ma:e==="true"||e==="false"?n=Da:n=Hn,{type:n,value:e,start:t,end:S}}function xu(){var t=S,e=B.charCodeAt(S),n,r=B[S],i,o,a;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++S,{type:Fe,value:String.fromCharCode(e),start:t,end:S};default:if(n=B.charCodeAt(S+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 S+=2,{type:Fe,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:S};case 33:case 61:return S+=2,B.charCodeAt(S)===61&&++S,{type:Fe,value:B.slice(t,S),start:t,end:S}}}if(a=B.substr(S,4),a===">>>=")return S+=4,{type:Fe,value:a,start:t,end:S};if(o=a.substr(0,3),o===">>>"||o==="<<="||o===">>=")return S+=3,{type:Fe,value:o,start:t,end:S};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return S+=2,{type:Fe,value:i,start:t,end:S};if(i==="//"&&_({},be,Ce),"<>=!+-*%&|^/".indexOf(r)>=0)return++S,{type:Fe,value:r,start:t,end:S};_({},be,Ce)}function Jw(t){let e="";for(;S<De&&bu(B[S]);)e+=B[S++];return e.length===0&&_({},be,Ce),Hi(B.charCodeAt(S))&&_({},be,Ce),{type:Qn,value:parseInt("0x"+e,16),start:t,end:S}}function $w(t){let e="0"+B[S++];for(;S<De&&Ui(B[S]);)e+=B[S++];return(Hi(B.charCodeAt(S))||kt(B.charCodeAt(S)))&&_({},be,Ce),{type:Qn,value:parseInt(e,8),octal:!0,start:t,end:S}}function _0(){var t,e,n;if(n=B[S],Ta(kt(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=S,t="",n!=="."){if(t=B[S++],n=B[S],t==="0"){if(n==="x"||n==="X")return++S,Jw(e);if(Ui(n))return $w(e);n&&kt(n.charCodeAt(0))&&_({},be,Ce)}for(;kt(B.charCodeAt(S));)t+=B[S++];n=B[S]}if(n==="."){for(t+=B[S++];kt(B.charCodeAt(S));)t+=B[S++];n=B[S]}if(n==="e"||n==="E")if(t+=B[S++],n=B[S],(n==="+"||n==="-")&&(t+=B[S++]),kt(B.charCodeAt(S)))for(;kt(B.charCodeAt(S));)t+=B[S++];else _({},be,Ce);return Hi(B.charCodeAt(S))&&_({},be,Ce),{type:Qn,value:parseFloat(t),start:e,end:S}}function e4(){var t="",e,n,r,i,o=!1;for(e=B[S],Ta(e==="'"||e==='"',"String literal must starts with a quote"),n=S,++S;S<De;)if(r=B[S++],r===e){e="";break}else if(r==="\\")if(r=B[S++],!r||!Gi(r.charCodeAt(0)))switch(r){case"u":case"x":B[S]==="{"?(++S,t+=Zw()):t+=Au(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:
|
12
|
-
`&&++S;else{if(Gi(r.charCodeAt(0)))break;t+=r}return e!==""&&_({},be,Ce),{type:Ri,value:t,octal:o,start:n,end:S}}function t4(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";_({},yu)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{_({},yu)}try{return new RegExp(t,e)}catch{return null}}function n4(){var t,e,n,r,i;for(t=B[S],Ta(t==="/","Regular expression literal must start with a slash"),e=B[S++],n=!1,r=!1;S<De;)if(t=B[S++],e+=t,t==="\\")t=B[S++],Gi(t.charCodeAt(0))&&_({},vu),e+=t;else if(Gi(t.charCodeAt(0)))_({},vu);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||_({},vu),i=e.substr(1,e.length-2),{value:i,literal:e}}function r4(){var t,e,n;for(e="",n="";S<De&&(t=B[S],!!Ia(t.charCodeAt(0)));)++S,t==="\\"&&S<De?_({},be,Ce):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&_({},yu,n),{value:n,literal:e}}function i4(){var t,e,n,r;return K=null,V0(),t=S,e=n4(),n=r4(),r=t4(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:S}}function o4(t){return t.type===Hn||t.type===an||t.type===Da||t.type===Ma}function W0(){if(V0(),S>=De)return{type:zi,start:S,end:S};const t=B.charCodeAt(S);return Hi(t)?Kw():t===40||t===41||t===59?xu():t===39||t===34?e4():t===46?kt(B.charCodeAt(S+1))?_0():xu():kt(t)?_0():xu()}function ze(){const t=K;return S=t.end,K=W0(),S=t.end,t}function X0(){const t=S;K=W0(),S=t}function a4(t){const e=new st(Iw);return e.elements=t,e}function Z0(t,e,n){const r=new st(t==="||"||t==="&&"?Ow:kw);return r.operator=t,r.left=e,r.right=n,r}function s4(t,e){const n=new st(Nw);return n.callee=t,n.arguments=e,n}function c4(t,e,n){const r=new st(Lw);return r.test=t,r.consequent=e,r.alternate=n,r}function wu(t){const e=new st(H0);return e.name=t,e}function Qi(t){const e=new st(Bw);return e.value=t.value,e.raw=B.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function q0(t,e,n){const r=new st(Pw);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function u4(t){const e=new st(Fw);return e.properties=t,e}function K0(t,e,n){const r=new st(zw);return r.key=e,r.value=n,r.kind=t,r}function l4(t,e){const n=new st(Rw);return n.operator=t,n.argument=e,n.prefix=!0,n}function _(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,a)=>(Ta(a<r.length,"Message reference must be in range"),r[a]));throw n=new Error(i),n.index=S,n.description=i,n}function ka(t){t.type===zi&&_(t,Qw),t.type===Qn&&_(t,jw),t.type===Ri&&_(t,Uw),t.type===Hn&&_(t,Gw),t.type===an&&_(t,Hw),_(t,be,t.value)}function Me(t){const e=ze();(e.type!==Fe||e.value!==t)&&ka(e)}function ee(t){return K.type===Fe&&K.value===t}function Cu(t){return K.type===an&&K.value===t}function f4(){const t=[];for(S=K.start,Me("[");!ee("]");)ee(",")?(ze(),t.push(null)):(t.push(Vn()),ee("]")||Me(","));return ze(),a4(t)}function J0(){S=K.start;const t=ze();return t.type===Ri||t.type===Qn?(t.octal&&_(t,Q0),Qi(t)):wu(t.value)}function d4(){var t,e,n,r;if(S=K.start,t=K,t.type===Hn)return n=J0(),Me(":"),r=Vn(),K0("init",n,r);if(t.type===zi||t.type===Fe)ka(t);else return e=J0(),Me(":"),r=Vn(),K0("init",e,r)}function h4(){var t=[],e,n,r,i={},o=String;for(S=K.start,Me("{");!ee("}");)e=d4(),e.key.type===H0?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?_({},Vw):i[r]=!0,t.push(e),ee("}")||Me(",");return Me("}"),u4(t)}function p4(){Me("(");const t=Su();return Me(")"),t}const m4={if:1};function g4(){var t,e,n;if(ee("("))return p4();if(ee("["))return f4();if(ee("{"))return h4();if(t=K.type,S=K.start,t===Hn||m4[K.value])n=wu(ze().value);else if(t===Ri||t===Qn)K.octal&&_(K,Q0),n=Qi(ze());else{if(t===an)throw new Error(ji);t===Da?(e=ze(),e.value=e.value==="true",n=Qi(e)):t===Ma?(e=ze(),e.value=null,n=Qi(e)):ee("/")||ee("/=")?(n=Qi(i4()),X0()):ka(ze())}return n}function y4(){const t=[];if(Me("("),!ee(")"))for(;S<De&&(t.push(Vn()),!ee(")"));)Me(",");return Me(")"),t}function v4(){S=K.start;const t=ze();return o4(t)||ka(t),wu(t.value)}function b4(){return Me("."),v4()}function A4(){Me("[");const t=Su();return Me("]"),t}function x4(){var t,e,n;for(t=g4();;)if(ee("."))n=b4(),t=q0(".",t,n);else if(ee("("))e=y4(),t=s4(t,e);else if(ee("["))n=A4(),t=q0("[",t,n);else break;return t}function $0(){const t=x4();if(K.type===Fe&&(ee("++")||ee("--")))throw new Error(ji);return t}function Na(){var t,e;if(K.type!==Fe&&K.type!==an)e=$0();else{if(ee("++")||ee("--"))throw new Error(ji);if(ee("+")||ee("-")||ee("~")||ee("!"))t=ze(),e=Na(),e=l4(t.value,e);else{if(Cu("delete")||Cu("void")||Cu("typeof"))throw new Error(ji);e=$0()}}return e}function ep(t){let e=0;if(t.type!==Fe&&t.type!==an)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 w4(){var t,e,n,r,i,o,a,s,c,u;if(t=K,c=Na(),r=K,i=ep(r),i===0)return c;for(r.prec=i,ze(),e=[t,K],a=Na(),o=[c,r,a];(i=ep(K))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,c=o.pop(),e.pop(),n=Z0(s,c,a),o.push(n);r=ze(),r.prec=i,o.push(r),e.push(K),n=Na(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=Z0(o[u-1].value,o[u-2],n),u-=2;return n}function Vn(){var t,e,n;return t=w4(),ee("?")&&(ze(),e=Vn(),Me(":"),n=Vn(),t=c4(t,e,n)),t}function Su(){const t=Vn();if(ee(","))throw new Error(ji);return t}function C4(t){B=t,S=0,De=B.length,K=null,X0();const e=Su();if(K.type!==zi)throw new Error("Unexpect token after expression.");return e}var S4={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 E4(t){function e(a,s,c,u){let f=t(s[0]);return c&&(f=c+"("+f+")",c.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+a+(u<0?"":u===0?"()":"("+s.slice(1).map(t).join(",")+")")}function n(a,s,c){return u=>e(a,u,s,c)}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(a){a.length<3&&ce("Missing arguments to clamp function."),a.length>3&&ce("Too many arguments to clamp function.");const s=a.map(t);return"Math.max("+s[1]+", Math.min("+s[2]+","+s[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(a){a.length<3&&ce("Missing arguments to if function."),a.length>3&&ce("Too many arguments to if function.");const s=a.map(t);return"("+s[0]+"?"+s[1]+":"+s[2]+")"}}}function D4(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function M4(t){t=t||{};const e=t.allowed?Zo(t.allowed):{},n=t.forbidden?Zo(t.forbidden):{},r=t.constants||S4,i=(t.functions||E4)(l),o=t.globalvar,a=t.fieldvar,s=Be(o)?o:p=>`${o}["${p}"]`;let c={},u={},f=0;function l(p){if(re(p))return p;const m=d[p.type];return m==null&&ce("Unsupported type: "+p.type),m(p)}const d={Literal:p=>p.raw,Identifier:p=>{const m=p.name;return f>0?m:En(n,m)?ce("Illegal identifier: "+m):En(r,m)?r[m]:En(e,m)?m:(c[m]=1,s(m))},MemberExpression:p=>{const m=!p.computed,y=l(p.object);m&&(f+=1);const g=l(p.property);return y===a&&(u[D4(g)]=1),m&&(f-=1),y+(m?"."+g:"["+g+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&ce("Illegal callee type: "+p.callee.type);const m=p.callee.name,y=p.arguments,g=En(i,m)&&i[m];return g||ce("Unrecognized function: "+m),Be(g)?g(y):g+"("+y.map(l).join(",")+")"},ArrayExpression:p=>"["+p.elements.map(l).join(",")+"]",BinaryExpression:p=>"("+l(p.left)+" "+p.operator+" "+l(p.right)+")",UnaryExpression:p=>"("+p.operator+l(p.argument)+")",ConditionalExpression:p=>"("+l(p.test)+"?"+l(p.consequent)+":"+l(p.alternate)+")",LogicalExpression:p=>"("+l(p.left)+p.operator+l(p.right)+")",ObjectExpression:p=>"{"+p.properties.map(l).join(",")+"}",Property:p=>{f+=1;const m=l(p.key);return f-=1,m+":"+l(p.value)}};function h(p){const m={code:l(p),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},m}return h.functions=i,h.constants=r,h}function Eu(t,e={}){const n=M4({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=C4(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),a=s=>o(s,e);return a.fields=i.fields,a}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function T4(){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 I4(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(et(i)&&i.resolutionChannel||r);n[r]=k4(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function k4(t,e,n,r){let i;if(ct(t)){const o=t.value;i=a=>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)),rn(e.type)){const o=T4();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 a in i)a in i&&(o[a]=i[a]);return o},i}function ct(t){return t&&"value"in t}function Yn(t){return t&&"field"in t}function Vi(t){return t&&"datum"in t}function et(t){return Yn(t)||Vi(t)||Mu(t)||tp(t)}function Du(t,e){const n=t.mark.encoding[e];if(et(n))return n;throw new Error("Not a channel def with scale!")}function tp(t){return t&&"chrom"in t}function Mu(t){return t&&"expr"in t}const Yi=["x","y"],N4=["x2","y2"],L4=[...Yi,...N4];function np(t){return Yi.includes(t)}function _i(t){return L4.includes(t)}const Tu={x:"x2",y:"y2"},rp=Object.fromEntries(Object.entries(Tu).map(t=>[t[1],t[0]]));function Wi(t){return t in rp}function B4(t){const e=Tu[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Dr(t){var e;return(e=rp[t])!=null?e:t}function _n(t){return["color","fill","stroke"].includes(Dr(t))}function La(t){return["shape","squeeze"].includes(t)}function ip(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function op(t){if(!La(t))throw new Error("Not a discrete channel: "+t);const e=new Map(ip(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 J(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return R(n,[t],e)}else return Ho(t)}class O4{constructor(){this.accessorCreators=[],this.register(e=>{if(Yn(e))try{const n=J(e.field);return n.constant=!1,n.fields=we(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>Mu(e)?P4(e.expr):void 0),this.register(e=>{if(Vi(e)){const r=av(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 P4(t){const e=Eu(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 mu;const Mr=globalThis.trustedTypes,H0=Mr?Mr.createPolicy("lit-html",{createHTML:t=>t}):void 0,nn=`lit$${(Math.random()+"").slice(9)}$`,Q0="?"+nn,xx=`<${Q0}>`,Tr=document,zi=(t="")=>Tr.createComment(t),Ri=t=>t===null||typeof t!="object"&&typeof t!="function",V0=Array.isArray,Cx=t=>{var e;return V0(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},ji=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Y0=/-->/g,_0=/>/g,jn=/>|[ \n\r](?:([^\s"'>=/]+)([ \n\r]*=[ \n\r]*(?:[^ \n\r"'`<>=]|("|')|))|$)/g,W0=/'/g,X0=/"/g,Z0=/^(?:script|style|textarea|title)$/i,Ex=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),D=Ex(1),xe=Symbol.for("lit-noChange"),R=Symbol.for("lit-nothing"),q0=new WeakMap,Be=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let a=o._$litPart$;if(a===void 0){const s=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=a=new Gi(e.insertBefore(zi(),s),s,void 0,n!=null?n:{})}return a._$AI(t),a},Ir=Tr.createTreeWalker(Tr,129,null,!1),Sx=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",a=ji;for(let c=0;c<n;c++){const u=t[c];let f,l,d=-1,h=0;for(;h<u.length&&(a.lastIndex=h,l=a.exec(u),l!==null);)h=a.lastIndex,a===ji?l[1]==="!--"?a=Y0:l[1]!==void 0?a=_0:l[2]!==void 0?(Z0.test(l[2])&&(i=RegExp("</"+l[2],"g")),a=jn):l[3]!==void 0&&(a=jn):a===jn?l[0]===">"?(a=i!=null?i:ji,d=-1):l[1]===void 0?d=-2:(d=a.lastIndex-l[2].length,f=l[1],a=l[3]===void 0?jn:l[3]==='"'?X0:W0):a===X0||a===W0?a=jn:a===Y0||a===_0?a=ji:(a=jn,i=void 0);const p=a===jn&&t[c+1].startsWith("/>")?" ":"";o+=a===ji?u+xx:d>=0?(r.push(f),u.slice(0,d)+"$lit$"+u.slice(d)+nn+p):u+nn+(d===-2?(r.push(void 0),c):p)}const s=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[H0!==void 0?H0.createHTML(s):s,r]};class Ui{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,a=0;const s=e.length-1,c=this.parts,[u,f]=Sx(e,n);if(this.el=Ui.createElement(u,r),Ir.currentNode=this.el.content,n===2){const l=this.el.content,d=l.firstChild;d.remove(),l.append(...d.childNodes)}for(;(i=Ir.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const d of i.getAttributeNames())if(d.endsWith("$lit$")||d.startsWith(nn)){const h=f[a++];if(l.push(d),h!==void 0){const p=i.getAttribute(h.toLowerCase()+"$lit$").split(nn),m=/([.?@])?(.*)/.exec(h);c.push({type:1,index:o,name:m[2],strings:p,ctor:m[1]==="."?Mx:m[1]==="?"?Ix:m[1]==="@"?Nx:Ta})}else c.push({type:6,index:o})}for(const d of l)i.removeAttribute(d)}if(Z0.test(i.tagName)){const l=i.textContent.split(nn),d=l.length-1;if(d>0){i.textContent=Mr?Mr.emptyScript:"";for(let h=0;h<d;h++)i.append(l[h],zi()),Ir.nextNode(),c.push({type:2,index:++o});i.append(l[d],zi())}}}else if(i.nodeType===8)if(i.data===Q0)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(nn,l+1))!==-1;)c.push({type:7,index:o}),l+=nn.length-1}o++}}static createElement(e,n){const r=Tr.createElement("template");return r.innerHTML=e,r}}function Nr(t,e,n=t,r){var i,o,a,s;if(e===xe)return e;let c=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const u=Ri(e)?void 0:e._$litDirective$;return(c==null?void 0:c.constructor)!==u&&((o=c==null?void 0:c._$AO)===null||o===void 0||o.call(c,!1),u===void 0?c=void 0:(c=new u(t),c._$AT(t,n,r)),r!==void 0?((a=(s=n)._$Cl)!==null&&a!==void 0?a:s._$Cl=[])[r]=c:n._$Cu=c),c!==void 0&&(e=Nr(t,c._$AS(t,e.values),c,r)),e}class Dx{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:Tr).importNode(r,!0);Ir.currentNode=o;let a=Ir.nextNode(),s=0,c=0,u=i[0];for(;u!==void 0;){if(s===u.index){let f;u.type===2?f=new Gi(a,a.nextSibling,this,e):u.type===1?f=new u.ctor(a,u.name,u.strings,this,e):u.type===6&&(f=new kx(a,this,e)),this.v.push(f),u=i[++c]}s!==(u==null?void 0:u.index)&&(a=Ir.nextNode(),s++)}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 Gi{constructor(e,n,r,i){var o;this.type=2,this._$AH=R,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=Nr(this,e,n),Ri(e)?e===R||e==null||e===""?(this._$AH!==R&&this._$AR(),this._$AH=R):e!==this._$AH&&e!==xe&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.k(e):Cx(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!==R&&Ri(this._$AH)?this._$AA.nextSibling.data=e:this.k(Tr.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=Ui.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 a=new Dx(o,this),s=a.p(this.options);a.m(r),this.k(s),this._$AH=a}}_$AC(e){let n=q0.get(e.strings);return n===void 0&&q0.set(e.strings,n=new Ui(e)),n}S(e){V0(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 Gi(this.M(zi()),this.M(zi()),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 Ta{constructor(e,n,r,i,o){this.type=1,this._$AH=R,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=R}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let a=!1;if(o===void 0)e=Nr(this,e,n,0),a=!Ri(e)||e!==this._$AH&&e!==xe,a&&(this._$AH=e);else{const s=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=Nr(this,s[r+c],n,c),u===xe&&(u=this._$AH[c]),a||(a=!Ri(u)||u!==this._$AH[c]),u===R?e=R:e!==R&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}a&&!i&&this.C(e)}C(e){e===R?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Mx extends Ta{constructor(){super(...arguments),this.type=3}C(e){this.element[this.name]=e===R?void 0:e}}const Tx=Mr?Mr.emptyScript:"";class Ix extends Ta{constructor(){super(...arguments),this.type=4}C(e){e&&e!==R?this.element.setAttribute(this.name,Tx):this.element.removeAttribute(this.name)}}class Nx extends Ta{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=Nr(this,e,n,0))!==null&&r!==void 0?r:R)===xe)return;const i=this._$AH,o=e===R&&i!==R||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,a=e!==R&&(i===R||o);o&&this.element.removeEventListener(this.name,this,i),a&&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 kx{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){Nr(this,e)}}const K0=window.litHtmlPolyfillSupport;K0==null||K0(Ui,Gi),((mu=globalThis.litHtmlVersions)!==null&&mu!==void 0?mu:globalThis.litHtmlVersions=[]).push("2.2.3");function J0(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function Lx(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 Ue(t){return t[t.length-1]}const Un="gs-suppress-tooltip";class Ox{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=Ue(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=wx(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&Bx(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&&(Be("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Be(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(D`${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 Bx(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const Fx="RawCode",Px="Literal",zx="Property",Rx="Identifier",jx="ArrayExpression",Ux="BinaryExpression",Gx="CallExpression",Hx="ConditionalExpression",Qx="LogicalExpression",Vx="MemberExpression",Yx="ObjectExpression",_x="UnaryExpression";function ot(t){this.type=t}ot.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=Wx(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function Wx(t){switch(t.type){case jx:return t.elements;case Ux:case Qx:return[t.left,t.right];case Gx:return[t.callee].concat(t.arguments);case Hx:return[t.test,t.consequent,t.alternate];case Vx:return[t.object,t.property];case Yx:return t.properties;case zx:return[t.key,t.value];case _x:return[t.argument];case Rx:case Px:case Fx:default:return[]}}var pt,k,S,Ce,X,Ia=1,Hi=2,Gn=3,rn=4,Na=5,Hn=6,Fe=7,Qi=8,Xx=9;pt={},pt[Ia]="Boolean",pt[Hi]="<end>",pt[Gn]="Identifier",pt[rn]="Keyword",pt[Na]="Null",pt[Hn]="Numeric",pt[Fe]="Punctuator",pt[Qi]="String",pt[Xx]="RegularExpression";var Zx="ArrayExpression",qx="BinaryExpression",Kx="CallExpression",Jx="ConditionalExpression",$0="Identifier",$x="Literal",e4="LogicalExpression",t4="MemberExpression",n4="ObjectExpression",r4="Property",i4="UnaryExpression",ge="Unexpected token %0",o4="Unexpected number",a4="Unexpected string",s4="Unexpected identifier",c4="Unexpected reserved word",u4="Unexpected end of input",gu="Invalid regular expression",yu="Invalid regular expression: missing /",ep="Octal literals are not allowed in strict mode.",l4="Duplicate data property in object literal not allowed in strict mode",Ae="ILLEGAL",Vi="Disabled.",f4=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]"),d4=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 ka(t,e){if(!t)throw new Error("ASSERT: "+e)}function Mt(t){return t>=48&&t<=57}function vu(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Yi(t){return"01234567".indexOf(t)>=0}function h4(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 _i(t){return t===10||t===13||t===8232||t===8233}function Wi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&f4.test(String.fromCharCode(t))}function La(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&d4.test(String.fromCharCode(t))}const p4={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 tp(){for(;S<Ce;){const t=k.charCodeAt(S);if(h4(t)||_i(t))++S;else break}}function bu(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)S<Ce&&vu(k[S])?(r=k[S++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):V({},ge,Ae);return String.fromCharCode(i)}function m4(){var t,e,n,r;for(t=k[S],e=0,t==="}"&&V({},ge,Ae);S<Ce&&(t=k[S++],!!vu(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&V({},ge,Ae),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function np(){var t,e;for(t=k.charCodeAt(S++),e=String.fromCharCode(t),t===92&&(k.charCodeAt(S)!==117&&V({},ge,Ae),++S,t=bu("u"),(!t||t==="\\"||!Wi(t.charCodeAt(0)))&&V({},ge,Ae),e=t);S<Ce&&(t=k.charCodeAt(S),!!La(t));)++S,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),k.charCodeAt(S)!==117&&V({},ge,Ae),++S,t=bu("u"),(!t||t==="\\"||!La(t.charCodeAt(0)))&&V({},ge,Ae),e+=t);return e}function g4(){var t,e;for(t=S++;S<Ce;){if(e=k.charCodeAt(S),e===92)return S=t,np();if(La(e))++S;else break}return k.slice(t,S)}function y4(){var t,e,n;return t=S,e=k.charCodeAt(S)===92?np():g4(),e.length===1?n=Gn:p4.hasOwnProperty(e)?n=rn:e==="null"?n=Na:e==="true"||e==="false"?n=Ia:n=Gn,{type:n,value:e,start:t,end:S}}function Au(){var t=S,e=k.charCodeAt(S),n,r=k[S],i,o,a;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++S,{type:Fe,value:String.fromCharCode(e),start:t,end:S};default:if(n=k.charCodeAt(S+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 S+=2,{type:Fe,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:S};case 33:case 61:return S+=2,k.charCodeAt(S)===61&&++S,{type:Fe,value:k.slice(t,S),start:t,end:S}}}if(a=k.substr(S,4),a===">>>=")return S+=4,{type:Fe,value:a,start:t,end:S};if(o=a.substr(0,3),o===">>>"||o==="<<="||o===">>=")return S+=3,{type:Fe,value:o,start:t,end:S};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return S+=2,{type:Fe,value:i,start:t,end:S};if(i==="//"&&V({},ge,Ae),"<>=!+-*%&|^/".indexOf(r)>=0)return++S,{type:Fe,value:r,start:t,end:S};V({},ge,Ae)}function v4(t){let e="";for(;S<Ce&&vu(k[S]);)e+=k[S++];return e.length===0&&V({},ge,Ae),Wi(k.charCodeAt(S))&&V({},ge,Ae),{type:Hn,value:parseInt("0x"+e,16),start:t,end:S}}function b4(t){let e="0"+k[S++];for(;S<Ce&&Yi(k[S]);)e+=k[S++];return(Wi(k.charCodeAt(S))||Mt(k.charCodeAt(S)))&&V({},ge,Ae),{type:Hn,value:parseInt(e,8),octal:!0,start:t,end:S}}function rp(){var t,e,n;if(n=k[S],ka(Mt(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=S,t="",n!=="."){if(t=k[S++],n=k[S],t==="0"){if(n==="x"||n==="X")return++S,v4(e);if(Yi(n))return b4(e);n&&Mt(n.charCodeAt(0))&&V({},ge,Ae)}for(;Mt(k.charCodeAt(S));)t+=k[S++];n=k[S]}if(n==="."){for(t+=k[S++];Mt(k.charCodeAt(S));)t+=k[S++];n=k[S]}if(n==="e"||n==="E")if(t+=k[S++],n=k[S],(n==="+"||n==="-")&&(t+=k[S++]),Mt(k.charCodeAt(S)))for(;Mt(k.charCodeAt(S));)t+=k[S++];else V({},ge,Ae);return Wi(k.charCodeAt(S))&&V({},ge,Ae),{type:Hn,value:parseFloat(t),start:e,end:S}}function A4(){var t="",e,n,r,i,o=!1;for(e=k[S],ka(e==="'"||e==='"',"String literal must starts with a quote"),n=S,++S;S<Ce;)if(r=k[S++],r===e){e="";break}else if(r==="\\")if(r=k[S++],!r||!_i(r.charCodeAt(0)))switch(r){case"u":case"x":k[S]==="{"?(++S,t+=m4()):t+=bu(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:Yi(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),S<Ce&&Yi(k[S])&&(o=!0,i=i*8+"01234567".indexOf(k[S++]),"0123".indexOf(r)>=0&&S<Ce&&Yi(k[S])&&(i=i*8+"01234567".indexOf(k[S++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&k[S]===`
|
12
|
+
`&&++S;else{if(_i(r.charCodeAt(0)))break;t+=r}return e!==""&&V({},ge,Ae),{type:Qi,value:t,octal:o,start:n,end:S}}function w4(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";V({},gu)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{V({},gu)}try{return new RegExp(t,e)}catch{return null}}function x4(){var t,e,n,r,i;for(t=k[S],ka(t==="/","Regular expression literal must start with a slash"),e=k[S++],n=!1,r=!1;S<Ce;)if(t=k[S++],e+=t,t==="\\")t=k[S++],_i(t.charCodeAt(0))&&V({},yu),e+=t;else if(_i(t.charCodeAt(0)))V({},yu);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||V({},yu),i=e.substr(1,e.length-2),{value:i,literal:e}}function C4(){var t,e,n;for(e="",n="";S<Ce&&(t=k[S],!!La(t.charCodeAt(0)));)++S,t==="\\"&&S<Ce?V({},ge,Ae):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&V({},gu,n),{value:n,literal:e}}function E4(){var t,e,n,r;return X=null,tp(),t=S,e=x4(),n=C4(),r=w4(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:S}}function S4(t){return t.type===Gn||t.type===rn||t.type===Ia||t.type===Na}function ip(){if(tp(),S>=Ce)return{type:Hi,start:S,end:S};const t=k.charCodeAt(S);return Wi(t)?y4():t===40||t===41||t===59?Au():t===39||t===34?A4():t===46?Mt(k.charCodeAt(S+1))?rp():Au():Mt(t)?rp():Au()}function Pe(){const t=X;return S=t.end,X=ip(),S=t.end,t}function op(){const t=S;X=ip(),S=t}function D4(t){const e=new ot(Zx);return e.elements=t,e}function ap(t,e,n){const r=new ot(t==="||"||t==="&&"?e4:qx);return r.operator=t,r.left=e,r.right=n,r}function M4(t,e){const n=new ot(Kx);return n.callee=t,n.arguments=e,n}function T4(t,e,n){const r=new ot(Jx);return r.test=t,r.consequent=e,r.alternate=n,r}function wu(t){const e=new ot($0);return e.name=t,e}function Xi(t){const e=new ot($x);return e.value=t.value,e.raw=k.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function sp(t,e,n){const r=new ot(t4);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function I4(t){const e=new ot(n4);return e.properties=t,e}function cp(t,e,n){const r=new ot(r4);return r.key=e,r.value=n,r.kind=t,r}function N4(t,e){const n=new ot(i4);return n.operator=t,n.argument=e,n.prefix=!0,n}function V(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,a)=>(ka(a<r.length,"Message reference must be in range"),r[a]));throw n=new Error(i),n.index=S,n.description=i,n}function Oa(t){t.type===Hi&&V(t,u4),t.type===Hn&&V(t,o4),t.type===Qi&&V(t,a4),t.type===Gn&&V(t,s4),t.type===rn&&V(t,c4),V(t,ge,t.value)}function Ee(t){const e=Pe();(e.type!==Fe||e.value!==t)&&Oa(e)}function J(t){return X.type===Fe&&X.value===t}function xu(t){return X.type===rn&&X.value===t}function k4(){const t=[];for(S=X.start,Ee("[");!J("]");)J(",")?(Pe(),t.push(null)):(t.push(Qn()),J("]")||Ee(","));return Pe(),D4(t)}function up(){S=X.start;const t=Pe();return t.type===Qi||t.type===Hn?(t.octal&&V(t,ep),Xi(t)):wu(t.value)}function L4(){var t,e,n,r;if(S=X.start,t=X,t.type===Gn)return n=up(),Ee(":"),r=Qn(),cp("init",n,r);if(t.type===Hi||t.type===Fe)Oa(t);else return e=up(),Ee(":"),r=Qn(),cp("init",e,r)}function O4(){var t=[],e,n,r,i={},o=String;for(S=X.start,Ee("{");!J("}");)e=L4(),e.key.type===$0?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?V({},l4):i[r]=!0,t.push(e),J("}")||Ee(",");return Ee("}"),I4(t)}function B4(){Ee("(");const t=Cu();return Ee(")"),t}const F4={if:1};function P4(){var t,e,n;if(J("("))return B4();if(J("["))return k4();if(J("{"))return O4();if(t=X.type,S=X.start,t===Gn||F4[X.value])n=wu(Pe().value);else if(t===Qi||t===Hn)X.octal&&V(X,ep),n=Xi(Pe());else{if(t===rn)throw new Error(Vi);t===Ia?(e=Pe(),e.value=e.value==="true",n=Xi(e)):t===Na?(e=Pe(),e.value=null,n=Xi(e)):J("/")||J("/=")?(n=Xi(E4()),op()):Oa(Pe())}return n}function z4(){const t=[];if(Ee("("),!J(")"))for(;S<Ce&&(t.push(Qn()),!J(")"));)Ee(",");return Ee(")"),t}function R4(){S=X.start;const t=Pe();return S4(t)||Oa(t),wu(t.value)}function j4(){return Ee("."),R4()}function U4(){Ee("[");const t=Cu();return Ee("]"),t}function G4(){var t,e,n;for(t=P4();;)if(J("."))n=j4(),t=sp(".",t,n);else if(J("("))e=z4(),t=M4(t,e);else if(J("["))n=U4(),t=sp("[",t,n);else break;return t}function lp(){const t=G4();if(X.type===Fe&&(J("++")||J("--")))throw new Error(Vi);return t}function Ba(){var t,e;if(X.type!==Fe&&X.type!==rn)e=lp();else{if(J("++")||J("--"))throw new Error(Vi);if(J("+")||J("-")||J("~")||J("!"))t=Pe(),e=Ba(),e=N4(t.value,e);else{if(xu("delete")||xu("void")||xu("typeof"))throw new Error(Vi);e=lp()}}return e}function fp(t){let e=0;if(t.type!==Fe&&t.type!==rn)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 H4(){var t,e,n,r,i,o,a,s,c,u;if(t=X,c=Ba(),r=X,i=fp(r),i===0)return c;for(r.prec=i,Pe(),e=[t,X],a=Ba(),o=[c,r,a];(i=fp(X))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,c=o.pop(),e.pop(),n=ap(s,c,a),o.push(n);r=Pe(),r.prec=i,o.push(r),e.push(X),n=Ba(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=ap(o[u-1].value,o[u-2],n),u-=2;return n}function Qn(){var t,e,n;return t=H4(),J("?")&&(Pe(),e=Qn(),Ee(":"),n=Qn(),t=T4(t,e,n)),t}function Cu(){const t=Qn();if(J(","))throw new Error(Vi);return t}function Q4(t){k=t,S=0,Ce=k.length,X=null,op();const e=Cu();if(X.type!==Hi)throw new Error("Unexpect token after expression.");return e}var V4={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 Y4(t){function e(a,s,c,u){let f=t(s[0]);return c&&(f=c+"("+f+")",c.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+a+(u<0?"":u===0?"()":"("+s.slice(1).map(t).join(",")+")")}function n(a,s,c){return u=>e(a,u,s,c)}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(a){a.length<3&&oe("Missing arguments to clamp function."),a.length>3&&oe("Too many arguments to clamp function.");const s=a.map(t);return"Math.max("+s[1]+", Math.min("+s[2]+","+s[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(a){a.length<3&&oe("Missing arguments to if function."),a.length>3&&oe("Too many arguments to if function.");const s=a.map(t);return"("+s[0]+"?"+s[1]+":"+s[2]+")"}}}function _4(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function W4(t){t=t||{};const e=t.allowed?Ko(t.allowed):{},n=t.forbidden?Ko(t.forbidden):{},r=t.constants||V4,i=(t.functions||Y4)(l),o=t.globalvar,a=t.fieldvar,s=ke(o)?o:p=>`${o}["${p}"]`;let c={},u={},f=0;function l(p){if(ee(p))return p;const m=d[p.type];return m==null&&oe("Unsupported type: "+p.type),m(p)}const d={Literal:p=>p.raw,Identifier:p=>{const m=p.name;return f>0?m:En(n,m)?oe("Illegal identifier: "+m):En(r,m)?r[m]:En(e,m)?m:(c[m]=1,s(m))},MemberExpression:p=>{const m=!p.computed,y=l(p.object);m&&(f+=1);const g=l(p.property);return y===a&&(u[_4(g)]=1),m&&(f-=1),y+(m?"."+g:"["+g+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&oe("Illegal callee type: "+p.callee.type);const m=p.callee.name,y=p.arguments,g=En(i,m)&&i[m];return g||oe("Unrecognized function: "+m),ke(g)?g(y):g+"("+y.map(l).join(",")+")"},ArrayExpression:p=>"["+p.elements.map(l).join(",")+"]",BinaryExpression:p=>"("+l(p.left)+" "+p.operator+" "+l(p.right)+")",UnaryExpression:p=>"("+p.operator+l(p.argument)+")",ConditionalExpression:p=>"("+l(p.test)+"?"+l(p.consequent)+":"+l(p.alternate)+")",LogicalExpression:p=>"("+l(p.left)+p.operator+l(p.right)+")",ObjectExpression:p=>"{"+p.properties.map(l).join(",")+"}",Property:p=>{f+=1;const m=l(p.key);return f-=1,m+":"+l(p.value)}};function h(p){const m={code:l(p),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},m}return h.functions=i,h.constants=r,h}function Eu(t,e={}){const n=W4({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=Q4(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),a=s=>o(s,e);return a.fields=i.fields,a}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function X4(){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 Z4(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Je(i)&&i.resolutionChannel||r);n[r]=q4(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function q4(t,e,n,r){let i;if(at(t)){const o=t.value;i=a=>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)),tn(e.type)){const o=X4();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 a in i)a in i&&(o[a]=i[a]);return o},i}function at(t){return t&&"value"in t}function Vn(t){return t&&"field"in t}function Zi(t){return t&&"datum"in t}function Je(t){return Vn(t)||Zi(t)||Du(t)||dp(t)}function Su(t,e){const n=t.mark.encoding[e];if(Je(n))return n;throw new Error("Not a channel def with scale!")}function dp(t){return t&&"chrom"in t}function Du(t){return t&&"expr"in t}const qi=["x","y"],K4=["x2","y2"],J4=[...qi,...K4];function hp(t){return qi.includes(t)}function Ki(t){return J4.includes(t)}const Mu={x:"x2",y:"y2"},pp=Object.fromEntries(Object.entries(Mu).map(t=>[t[1],t[0]]));function Ji(t){return t in pp}function $4(t){const e=Mu[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function kr(t){var e;return(e=pp[t])!=null?e:t}function Yn(t){return["color","fill","stroke"].includes(kr(t))}function Fa(t){return["shape","squeeze"].includes(t)}function mp(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function gp(t){if(!Fa(t))throw new Error("Not a discrete channel: "+t);const e=new Map(mp(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 Z(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return z(n,[t],e)}else return Vo(t)}class e3{constructor(){this.accessorCreators=[],this.register(e=>{if(Vn(e))try{const n=Z(e.field);return n.constant=!1,n.fields=Cn(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>Du(e)?t3(e.expr):void 0),this.register(e=>{if(Zi(e)){const r=Mb(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 t3(t){const e=Eu(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 Iu=5120,Xi=5121,ku=5122,Nu=5123,Lu=5124,Bu=5125,Ou=5126,F4=32819,z4=32820,R4=33635,j4=5131,U4=33640,G4=35899,H4=35902,Q4=36269,V4=34042,ap={};{const t=ap;t[Iu]=Int8Array,t[Xi]=Uint8Array,t[ku]=Int16Array,t[Nu]=Uint16Array,t[Lu]=Int32Array,t[Bu]=Uint32Array,t[Ou]=Float32Array,t[F4]=Uint16Array,t[z4]=Uint16Array,t[R4]=Uint16Array,t[j4]=Uint16Array,t[U4]=Uint32Array,t[G4]=Uint32Array,t[H4]=Uint32Array,t[Q4]=Uint32Array,t[V4]=Uint32Array}function Pu(t){if(t instanceof Int8Array)return Iu;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return Xi;if(t instanceof Int16Array)return ku;if(t instanceof Uint16Array)return Nu;if(t instanceof Int32Array)return Lu;if(t instanceof Uint32Array)return Bu;if(t instanceof Float32Array)return Ou;throw new Error("unsupported typed array type")}function Y4(t){if(t===Int8Array)return Iu;if(t===Uint8Array||t===Uint8ClampedArray)return Xi;if(t===Int16Array)return ku;if(t===Uint16Array)return Nu;if(t===Int32Array)return Lu;if(t===Uint32Array)return Bu;if(t===Float32Array)return Ou;throw new Error("unsupported typed array type")}function _4(t){const e=ap[t];if(!e)throw new Error("unknown gl type");return e}const Ba=typeof SharedArrayBuffer!="undefined"?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 W4(...t){console.error(...t)}function sp(...t){console.warn(...t)}function X4(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function cp(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function Oa(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function Z4(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const up=35044,vt=34962,q4=34963,K4=34660,J4=5120,$4=5121,e3=5122,t3=5123,n3=5124,r3=5125,i3=5126,lp={attribPrefix:""};function fp(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||up)}function dp(t,e,n,r){if(X4(t,e))return e;n=n||vt;const i=t.createBuffer();return fp(t,n,i,e,r),i}function hp(t){return t==="indices"}function o3(t){return t instanceof Int8Array||t instanceof Uint8Array}function a3(t){return t===Int8Array||t===Uint8Array}function s3(t){return t.length?t:t.data}const c3=/coord|texture/i,u3=/color|colour/i;function pp(t,e){let n;if(c3.test(t)?n=2:u3.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 l3(t,e){return t.numComponents||t.size||pp(e,s3(t).length)}function Fu(t,e){if(Ba(t))return t;if(Ba(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(hp(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function f3(t,e){const n={};return Object.keys(e).forEach(function(r){if(!hp(r)){const i=e[r],o=i.attrib||i.name||i.attribName||lp.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Ba(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let a,s,c,u;if(i.buffer&&i.buffer instanceof WebGLBuffer)a=i.buffer,u=i.numComponents||i.size,s=i.type,c=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,d=f*l.BYTES_PER_ELEMENT;s=Y4(l),c=i.normalize!==void 0?i.normalize:a3(l),u=i.numComponents||i.size||pp(r,f),a=t.createBuffer(),t.bindBuffer(vt,a),t.bufferData(vt,d,i.drawType||up)}else{const f=Fu(i,r);a=dp(t,f,void 0,i.drawType),s=Pu(f),c=i.normalize!==void 0?i.normalize:o3(f),u=l3(i,r)}n[o]={buffer:a,numComponents:u,type:s,normalize:c,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(vt,null),n}function d3(t,e,n,r){n=Fu(n),r!==void 0?(t.bindBuffer(vt,e.buffer),t.bufferSubData(vt,r,n)):fp(t,vt,e.buffer,n,e.drawType)}function h3(t,e){return e===J4||e===$4?1:e===e3||e===t3?2:e===n3||e===r3||e===i3?4:0}const zu=["position","positions","a_position"];function p3(t,e){let n,r;for(r=0;r<zu.length&&(n=zu[r],!(n in e||(n=lp.attribPrefix+n,n in e)));++r);r===zu.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(vt,i.buffer);const o=t.getBufferParameter(vt,K4);t.bindBuffer(vt,null);const a=h3(t,i.type),s=o/a,c=i.numComponents||i.size,u=s/c;if(u%1!==0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function m3(t,e,n){const r=f3(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const a=Fu(o,"indices");i.indices=dp(t,a,q4),i.numElements=a.length,i.elementType=Pu(a)}else i.numElements||(i.numElements=p3(t,i.attribs));return i}function Mr(t){return!!t.texStorage2D}const Ru=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 a=e[r[o]];e[r[o]]=a?`${a} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),sn={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Tr=Ba,mp=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),gp=6406,bt=6407,ie=6408,yp=6409,vp=6410,Zi=6402,bp=34041,Pa=33071,g3=9728,y3=9729,Nt=3553,Lt=34067,cn=32879,un=35866,Fa=34069,v3=34070,b3=34071,A3=34072,x3=34073,w3=34074,ju=10241,Uu=10240,za=10242,Ra=10243,Ap=32882,C3=33082,S3=33083,E3=33084,D3=33085,Gu=3317,xp=3314,wp=32878,Cp=3316,Sp=3315,Ep=32877,M3=37443,T3=37441,I3=37440,k3=33321,N3=36756,L3=33325,B3=33326,O3=33330,P3=33329,F3=33338,z3=33337,R3=33340,j3=33339,U3=33323,G3=36757,H3=33327,Q3=33328,V3=33336,Y3=33335,_3=33332,W3=33331,X3=33334,Z3=33333,q3=32849,K3=35905,J3=36194,$3=36758,eC=35898,tC=35901,nC=34843,rC=34837,iC=36221,oC=36239,aC=36215,sC=36233,cC=36209,uC=36227,lC=32856,fC=35907,dC=36759,hC=32855,pC=32854,mC=32857,gC=34842,yC=34836,vC=36220,bC=36238,AC=36975,xC=36214,wC=36232,CC=36226,SC=36208,EC=33189,DC=33190,MC=36012,TC=36013,IC=35056,ln=5120,oe=5121,ja=5122,Ir=5123,Ua=5124,Wn=5125,Te=5126,Dp=32819,Mp=32820,Tp=33635,ut=5131,qi=36193,Hu=33640,kC=35899,NC=35902,LC=36269,BC=34042,Ga=33319,kr=33320,Ha=6403,Nr=36244,Lr=36248,Xn=36249;let Qu;function Qa(t){if(!Qu){const e={};e[gp]={textureFormat:gp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[oe,ut,qi,Te]},e[yp]={textureFormat:yp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[oe,ut,qi,Te]},e[vp]={textureFormat:vp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[oe,ut,qi,Te]},e[bt]={textureFormat:bt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[oe,ut,qi,Te,Tp]},e[ie]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[oe,ut,qi,Te,Dp,Mp]},e[Zi]={textureFormat:Zi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Wn,Ir]},e[k3]={textureFormat:Ha,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[oe]},e[N3]={textureFormat:Ha,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[ln]},e[L3]={textureFormat:Ha,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Te,ut]},e[B3]={textureFormat:Ha,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Te]},e[O3]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[oe]},e[P3]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ln]},e[_3]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Ir]},e[W3]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ja]},e[X3]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Wn]},e[Z3]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ua]},e[U3]={textureFormat:Ga,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[oe]},e[G3]={textureFormat:Ga,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[ln]},e[H3]={textureFormat:Ga,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Te,ut]},e[Q3]={textureFormat:Ga,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Te]},e[V3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[oe]},e[Y3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ln]},e[F3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ir]},e[z3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ja]},e[R3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Wn]},e[j3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Ua]},e[q3]={textureFormat:bt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[oe]},e[K3]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[oe]},e[J3]={textureFormat:bt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[oe,Tp]},e[$3]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ln]},e[eC]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Te,ut,kC]},e[tC]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Te,ut,NC]},e[nC]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Te,ut]},e[rC]={textureFormat:bt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Te]},e[iC]={textureFormat:Lr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[oe]},e[oC]={textureFormat:Lr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ln]},e[aC]={textureFormat:Lr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Ir]},e[sC]={textureFormat:Lr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ja]},e[cC]={textureFormat:Lr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Wn]},e[uC]={textureFormat:Lr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Ua]},e[lC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[oe]},e[fC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[oe]},e[dC]={textureFormat:ie,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[ln]},e[hC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[oe,Mp,Hu]},e[pC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[oe,Dp]},e[mC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Hu]},e[gC]={textureFormat:ie,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Te,ut]},e[yC]={textureFormat:ie,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Te]},e[vC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[oe]},e[bC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ln]},e[AC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Hu]},e[xC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Ir]},e[wC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ja]},e[CC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Ua]},e[SC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Wn]},e[EC]={textureFormat:Zi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Ir,Wn]},e[DC]={textureFormat:Zi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Wn]},e[MC]={textureFormat:Zi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Te]},e[IC]={textureFormat:bp,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[BC]},e[TC]={textureFormat:bp,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[LC]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const a=r.type[o];r.bytesPerElementMap[a]=i})}),Qu=e}return Qu[t]}function OC(t,e){const n=Qa(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Br(t){const e=Qa(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Ip(t){return(t&t-1)===0}function PC(t,e,n,r){if(!Mr(t))return Ip(e)&&Ip(n);const i=Qa(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function FC(t){const e=Qa(t);if(!e)throw"unknown internal format";return e.textureFilterable}function kp(t,e,n){return Tr(e)?Pu(e):n||oe}function Va(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Lt?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 Or(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(M3,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(T3,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(I3,e.flipY)}function Np(t){t.pixelStorei(Gu,4),Mr(t)&&(t.pixelStorei(xp,0),t.pixelStorei(wp,0),t.pixelStorei(Cp,0),t.pixelStorei(Sp,0),t.pixelStorei(Ep,0))}function zC(t,e,n,r){r.minMag&&(n.call(t,e,ju,r.minMag),n.call(t,e,Uu,r.minMag)),r.min&&n.call(t,e,ju,r.min),r.mag&&n.call(t,e,Uu,r.mag),r.wrap&&(n.call(t,e,za,r.wrap),n.call(t,e,Ra,r.wrap),(e===cn||Z4(t,e))&&n.call(t,e,Ap,r.wrap)),r.wrapR&&n.call(t,e,Ap,r.wrapR),r.wrapS&&n.call(t,e,za,r.wrapS),r.wrapT&&n.call(t,e,Ra,r.wrapT),r.minLod&&n.call(t,e,C3,r.minLod),r.maxLod&&n.call(t,e,S3,r.maxLod),r.baseLevel&&n.call(t,e,E3,r.baseLevel),r.maxLevel&&n.call(t,e,D3,r.maxLevel)}function Lp(t,e,n){const r=n.target||Nt;t.bindTexture(r,e),zC(t,r,t.texParameteri,n)}function RC(t){return t=t||sn.textureColor,Tr(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Vu(t,e,n,r,i,o){n=n||sn.textureOptions,o=o||ie;const a=n.target||Nt;if(r=r||n.width,i=i||n.height,t.bindTexture(a,e),PC(t,r,i,o))t.generateMipmap(a);else{const s=FC(o)?y3:g3;t.texParameteri(a,ju,s),t.texParameteri(a,Uu,s),t.texParameteri(a,za,Pa),t.texParameteri(a,Ra,Pa)}}function Ki(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Yu(t,e){return e=e||{},e.cubeFaceOrder||[Fa,v3,b3,A3,x3,w3]}function _u(t,e){const r=Yu(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function Bp(t,e,n,r){r=r||sn.textureOptions;const i=r.target||Nt,o=r.level||0;let a=n.width,s=n.height;const c=r.internalFormat||r.format||ie,u=Br(c),f=r.format||u.format,l=r.type||u.type;if(Or(t,r),t.bindTexture(i,e),i===Lt){const d=n.width,h=n.height;let p,m;if(d/6===h)p=h,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(h/6===d)p=d,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(d/3===h/2)p=d/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(d/2===h/3)p=d/2,m=[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 y=mp();y?(y.canvas.width=p,y.canvas.height=p,a=p,s=p,_u(t,r).forEach(function(g){const x=m[g.ndx*2+0]*p,A=m[g.ndx*2+1]*p;y.drawImage(n,x,A,p,p,0,0,p,p),t.texImage2D(g.face,o,c,f,l,y.canvas)}),y.canvas.width=1,y.canvas.height=1):typeof createImageBitmap!="undefined"&&(a=p,s=p,_u(t,r).forEach(function(g){const x=m[g.ndx*2+0]*p,A=m[g.ndx*2+1]*p;t.texImage2D(g.face,o,c,p,p,0,f,l,null),createImageBitmap(n,x,A,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){Or(t,r),t.bindTexture(i,e),t.texImage2D(g.face,o,c,f,l,C),Ki(r)&&Vu(t,e,r,a,s,c)})}))}else if(i===cn||i===un){const d=Math.min(n.width,n.height),h=Math.max(n.width,n.height),p=h/d;if(p%1!==0)throw"can not compute 3D dimensions of element";const m=n.width===h?1:0,y=n.height===h?1:0;t.pixelStorei(Gu,1),t.pixelStorei(xp,n.width),t.pixelStorei(wp,0),t.pixelStorei(Ep,0),t.texImage3D(i,o,c,d,d,d,0,f,l,null);for(let g=0;g<p;++g){const x=g*d*m,A=g*d*y;t.pixelStorei(Cp,x),t.pixelStorei(Sp,A),t.texSubImage3D(i,o,0,0,g,d,d,1,f,l,n)}Np(t)}else t.texImage2D(i,o,c,f,l,n);Ki(r)&&Vu(t,e,r,a,s,c),Lp(t,e,r)}function Ji(){}function jC(t){if(typeof document!="undefined"){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 UC(t,e){return e===void 0&&!jC(t)?"anonymous":e}function GC(t,e,n){n=n||Ji;let r;if(e=e!==void 0?e:sn.crossOrigin,e=UC(t,e),typeof Image!="undefined"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",a),r=null},o=function(){const c="couldn't load image: "+t;W4(c),n(c,r),i()},a=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",a),r.src=t,r}else if(typeof ImageBitmap!="undefined"){let i,o;const a=function(){n(i,o)},s={};e&&(s.mode="cors"),fetch(t,s).then(function(c){if(!c.ok)throw c;return c.blob()}).then(function(c){return createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(c){o=c,setTimeout(a)}).catch(function(c){i=c,setTimeout(a)}),r=null}return r}function Op(t){return typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap||typeof ImageData!="undefined"&&t instanceof ImageData||typeof HTMLElement!="undefined"&&t instanceof HTMLElement}function Wu(t,e,n){return Op(t)?(setTimeout(function(){n(null,t)}),t):GC(t,e,n)}function Xu(t,e,n){n=n||sn.textureOptions;const r=n.target||Nt;if(t.bindTexture(r,e),n.color===!1)return;const i=RC(n.color);if(r===Lt)for(let o=0;o<6;++o)t.texImage2D(Fa+o,0,ie,1,1,0,ie,oe,i);else r===cn||r===un?t.texImage3D(r,0,ie,1,1,1,0,ie,oe,i):t.texImage2D(r,0,ie,1,1,0,ie,oe,i)}function HC(t,e,n,r){return r=r||Ji,n=n||sn.textureOptions,Xu(t,e,n),n=Object.assign({},n),Wu(n.src,n.crossOrigin,function(o,a){o?r(o,e,a):(Bp(t,e,a,n),r(null,e,a))})}function QC(t,e,n,r){r=r||Ji;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,a=n.internalFormat||n.format||ie,s=Br(a),c=n.format||s.format,u=n.type||oe,f=n.target||Nt;if(f!==Lt)throw"target must be TEXTURE_CUBE_MAP";Xu(t,e,n),n=Object.assign({},n);let l=6;const d=[],h=Yu(t,n);let p;function m(y){return function(g,x){--l,g?d.push(g):x.width!==x.height?d.push("cubemap face img is not a square: "+x.src):(Or(t,n),t.bindTexture(f,e),l===5?Yu().forEach(function(A){t.texImage2D(A,o,a,c,u,x)}):t.texImage2D(y,o,a,c,u,x),Ki(n)&&t.generateMipmap(f)),l===0&&r(d.length?d:void 0,e,p)}}p=i.map(function(y,g){return Wu(y,n.crossOrigin,m(h[g]))})}function VC(t,e,n,r){r=r||Ji;const i=n.src,o=n.internalFormat||n.format||ie,a=Br(o),s=n.format||a.format,c=n.type||oe,u=n.target||un;if(u!==cn&&u!==un)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Xu(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let d;const h=n.level||0;let p=n.width,m=n.height;const y=i.length;let g=!0;function x(A){return function(C,b){if(--f,C)l.push(C);else{if(Or(t,n),t.bindTexture(u,e),g){g=!1,p=n.width||b.width,m=n.height||b.height,t.texImage3D(u,h,o,p,m,y,0,s,c,null);for(let v=0;v<y;++v)t.texSubImage3D(u,h,0,0,v,p,m,1,s,c,b)}else{let v=b,w;(b.width!==p||b.height!==m)&&(w=mp(),v=w.canvas,w.canvas.width=p,w.canvas.height=m,w.drawImage(b,0,0,p,m)),t.texSubImage3D(u,h,0,0,A,p,m,1,s,c,v),w&&v===w.canvas&&(w.canvas.width=0,w.canvas.height=0)}Ki(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,d)}}d=i.map(function(A,C){return Wu(A,n.crossOrigin,x(C))})}function Pp(t,e,n,r){r=r||sn.textureOptions;const i=r.target||Nt;t.bindTexture(i,e);let o=r.width,a=r.height,s=r.depth;const c=r.level||0,u=r.internalFormat||r.format||ie,f=Br(u),l=r.format||f.format,d=r.type||kp(t,n,f.type);if(Tr(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const y=_4(d);n=new y(n)}const h=OC(u,d),p=n.byteLength/h;if(p%1)throw"length wrong size for format: "+Ru(t,l);let m;if(i===cn||i===un)if(!o&&!a&&!s){const y=Math.cbrt(p);if(y%1!==0)throw"can't guess cube size of array of numElements: "+p;o=y,a=y,s=y}else o&&(!a||!s)?(m=Va(t,i,a,s,p/o),a=m.width,s=m.height):a&&(!o||!s)?(m=Va(t,i,o,s,p/a),o=m.width,s=m.height):(m=Va(t,i,o,a,p/s),o=m.width,a=m.height);else m=Va(t,i,o,a,p),o=m.width,a=m.height;if(Np(t),t.pixelStorei(Gu,r.unpackAlignment||1),Or(t,r),i===Lt){const y=h/n.BYTES_PER_ELEMENT,g=p/6*y;_u(t,r).forEach(x=>{const A=g*x.ndx,C=n.subarray(A,A+g);t.texImage2D(x.face,c,u,o,a,0,l,d,C)})}else i===cn||i===un?t.texImage3D(i,c,u,o,a,s,0,l,d,n):t.texImage2D(i,c,u,o,a,0,l,d,n);return{width:o,height:a,depth:s,type:d}}function YC(t,e,n){const r=n.target||Nt;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||ie,a=Br(o),s=n.format||a.format,c=n.type||a.type;if(Or(t,n),r===Lt)for(let u=0;u<6;++u)t.texImage2D(Fa+u,i,o,n.width,n.height,0,s,c,null);else r===cn||r===un?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,s,c,null):t.texImage2D(r,i,o,n.width,n.height,0,s,c,null)}function $i(t,e,n){n=n||Ji,e=e||sn.textureOptions;const r=t.createTexture(),i=e.target||Nt;let o=e.width||1,a=e.height||1;const s=e.internalFormat||ie;t.bindTexture(i,r),i===Lt&&(t.texParameteri(i,za,Pa),t.texParameteri(i,Ra,Pa));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")HC(t,r,e,n);else if(Tr(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||Tr(c[0]))){const u=Pp(t,r,c,e);o=u.width,a=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||Op(c[0]))?i===Lt?QC(t,r,e,n):VC(t,r,e,n):(Bp(t,r,c,e),o=c.width,a=c.height);else YC(t,r,e);return Ki(e)&&Vu(t,r,e,o,a,s),Lp(t,r,e),r}function _C(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const a=n.target||Nt;t.bindTexture(a,e);const s=n.level||0,c=n.internalFormat||n.format||ie,u=Br(c),f=n.format||u.format;let l;const d=n.src;if(d&&(Tr(d)||Array.isArray(d)&&typeof d[0]=="number")?l=n.type||kp(t,d,u.type):l=n.type||u.type,a===Lt)for(let h=0;h<6;++h)t.texImage2D(Fa+h,s,c,r,i,0,f,l,null);else a===cn||a===un?t.texImage3D(a,s,c,r,i,o,0,f,l,null):t.texImage2D(a,s,c,r,i,0,f,l,null)}const WC=sp,Ya=33984,XC=35048,_a=34962,ZC=34963,Zu=35345,Fp=35718,qC=35721,KC=35971,JC=35382,$C=35396,eS=35398,tS=35392,nS=35395,Wa=5126,zp=35664,Rp=35665,jp=35666,qu=5124,Up=35667,Gp=35668,Hp=35669,Qp=35670,Vp=35671,Yp=35672,_p=35673,Wp=35674,Xp=35675,Zp=35676,rS=35678,iS=35680,oS=35679,aS=35682,sS=35685,cS=35686,uS=35687,lS=35688,fS=35689,dS=35690,hS=36289,pS=36292,mS=36293,Ku=5125,qp=36294,Kp=36295,Jp=36296,gS=36298,yS=36299,vS=36300,bS=36303,AS=36306,xS=36307,wS=36308,CS=36311,Xa=3553,Za=34067,Ju=32879,qa=35866,j={};function $p(t,e){return j[e].bindPoint}function SS(t,e){return function(n){t.uniform1f(e,n)}}function ES(t,e){return function(n){t.uniform1fv(e,n)}}function DS(t,e){return function(n){t.uniform2fv(e,n)}}function MS(t,e){return function(n){t.uniform3fv(e,n)}}function TS(t,e){return function(n){t.uniform4fv(e,n)}}function em(t,e){return function(n){t.uniform1i(e,n)}}function tm(t,e){return function(n){t.uniform1iv(e,n)}}function nm(t,e){return function(n){t.uniform2iv(e,n)}}function rm(t,e){return function(n){t.uniform3iv(e,n)}}function im(t,e){return function(n){t.uniform4iv(e,n)}}function IS(t,e){return function(n){t.uniform1ui(e,n)}}function kS(t,e){return function(n){t.uniform1uiv(e,n)}}function NS(t,e){return function(n){t.uniform2uiv(e,n)}}function LS(t,e){return function(n){t.uniform3uiv(e,n)}}function BS(t,e){return function(n){t.uniform4uiv(e,n)}}function OS(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function PS(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function FS(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function zS(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function RS(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function jS(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function US(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function GS(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function HS(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Ne(t,e,n,r){const i=$p(t,e);return Mr(t)?function(o){let a,s;Oa(t,o)?(a=o,s=null):(a=o.texture,s=o.sampler),t.uniform1i(r,n),t.activeTexture(Ya+n),t.bindTexture(i,a),t.bindSampler(n,s)}:function(o){t.uniform1i(r,n),t.activeTexture(Ya+n),t.bindTexture(i,o)}}function Le(t,e,n,r,i){const o=$p(t,e),a=new Int32Array(i);for(let s=0;s<i;++s)a[s]=n+s;return Mr(t)?function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(Ya+a[u]);let f,l;Oa(t,c)?(f=c,l=null):(f=c.texture,l=c.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(Ya+a[u]),t.bindTexture(o,c)})}}j[Wa]={Type:Float32Array,size:4,setter:SS,arraySetter:ES},j[zp]={Type:Float32Array,size:8,setter:DS,cols:2},j[Rp]={Type:Float32Array,size:12,setter:MS,cols:3},j[jp]={Type:Float32Array,size:16,setter:TS,cols:4},j[qu]={Type:Int32Array,size:4,setter:em,arraySetter:tm},j[Up]={Type:Int32Array,size:8,setter:nm,cols:2},j[Gp]={Type:Int32Array,size:12,setter:rm,cols:3},j[Hp]={Type:Int32Array,size:16,setter:im,cols:4},j[Ku]={Type:Uint32Array,size:4,setter:IS,arraySetter:kS},j[qp]={Type:Uint32Array,size:8,setter:NS,cols:2},j[Kp]={Type:Uint32Array,size:12,setter:LS,cols:3},j[Jp]={Type:Uint32Array,size:16,setter:BS,cols:4},j[Qp]={Type:Uint32Array,size:4,setter:em,arraySetter:tm},j[Vp]={Type:Uint32Array,size:8,setter:nm,cols:2},j[Yp]={Type:Uint32Array,size:12,setter:rm,cols:3},j[_p]={Type:Uint32Array,size:16,setter:im,cols:4},j[Wp]={Type:Float32Array,size:32,setter:OS,rows:2,cols:2},j[Xp]={Type:Float32Array,size:48,setter:PS,rows:3,cols:3},j[Zp]={Type:Float32Array,size:64,setter:FS,rows:4,cols:4},j[sS]={Type:Float32Array,size:32,setter:zS,rows:2,cols:3},j[cS]={Type:Float32Array,size:32,setter:jS,rows:2,cols:4},j[uS]={Type:Float32Array,size:48,setter:RS,rows:3,cols:2},j[lS]={Type:Float32Array,size:48,setter:GS,rows:3,cols:4},j[fS]={Type:Float32Array,size:64,setter:US,rows:4,cols:2},j[dS]={Type:Float32Array,size:64,setter:HS,rows:4,cols:3},j[rS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Xa},j[iS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Za},j[oS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Ju},j[aS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Xa},j[hS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:qa},j[pS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:qa},j[mS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Za},j[gS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Xa},j[yS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Ju},j[vS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Za},j[bS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:qa},j[AS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Xa},j[xS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Ju},j[wS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Za},j[CS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:qa};function Ka(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(_a,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||Wa,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function fn(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(_a,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||qu,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Ja(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(_a,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ku,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function $u(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(_a,o.buffer);const a=o.size||o.numComponents||r,s=a/i,c=o.type||Wa,f=j[c].size*a,l=o.normalize||!1,d=o.offset||0,h=f/i;for(let p=0;p<i;++p)t.enableVertexAttribArray(e+p),t.vertexAttribPointer(e+p,s,c,l,f,d+h*p),o.divisor!==void 0&&t.vertexAttribDivisor(e+p,o.divisor)}}const de={};de[Wa]={size:4,setter:Ka},de[zp]={size:8,setter:Ka},de[Rp]={size:12,setter:Ka},de[jp]={size:16,setter:Ka},de[qu]={size:4,setter:fn},de[Up]={size:8,setter:fn},de[Gp]={size:12,setter:fn},de[Hp]={size:16,setter:fn},de[Ku]={size:4,setter:Ja},de[qp]={size:8,setter:Ja},de[Kp]={size:12,setter:Ja},de[Jp]={size:16,setter:Ja},de[Qp]={size:4,setter:fn},de[Vp]={size:8,setter:fn},de[Yp]={size:12,setter:fn},de[_p]={size:16,setter:fn},de[Wp]={size:4,setter:$u,count:2},de[Xp]={size:9,setter:$u,count:3},de[Zp]={size:16,setter:$u,count:4};function om(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const QS=/(\.|\[|]|\w+)/g,VS=t=>t>="0"&&t<="9";function am(t,e,n,r){const i=t.split(QS).filter(s=>s!=="");let o=0,a="";for(;;){const s=i[o++];a+=s;const c=VS(s[0]),u=c?parseInt(s):s;if(c&&(a+=i[o++]),o===i.length){n[u]=e;break}else{const l=i[o++],d=l==="[",h=n[u]||(d?[]:{});n[u]=h,n=h,r[a]=r[a]||function(p){return function(m){fm(p,m)}}(h),a+=l}}}function YS(t,e){let n=0;function r(s,c,u){const f=c.name.endsWith("[0]"),l=c.type,d=j[l];if(!d)throw new Error(`unknown type: 0x${l.toString(16)}`);let h;if(d.bindPoint){const p=n;n+=c.size,f?h=d.arraySetter(t,l,p,u,c.size):h=d.setter(t,l,p,u,c.size)}else d.arraySetter&&f?h=d.arraySetter(t,u):h=d.setter(t,u);return h.location=u,h}const i={},o={},a=t.getProgramParameter(e,Fp);for(let s=0;s<a;++s){const c=t.getActiveUniform(e,s);if(om(c))continue;let u=c.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const f=t.getUniformLocation(e,c.name);if(f){const l=r(e,c,f);i[u]=l,am(u,l,o,i)}}return i}function _S(t,e){const n={},r=t.getProgramParameter(e,KC);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 WS(t,e){const n=t.getProgramParameter(e,Fp),r=[],i=[];for(let s=0;s<n;++s){i.push(s),r.push({});const c=t.getActiveUniform(e,s);r[s].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(s){const c=s[0],u=s[1];t.getActiveUniforms(e,i,t[c]).forEach(function(f,l){r[l][u]=f})});const o={},a=t.getProgramParameter(e,JC);for(let s=0;s<a;++s){const c=t.getActiveUniformBlockName(e,s),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,s,$C),usedByFragmentShader:t.getActiveUniformBlockParameter(e,s,eS),size:t.getActiveUniformBlockParameter(e,s,tS),uniformIndices:t.getActiveUniformBlockParameter(e,s,nS)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const sm=/\[\d+\]\.$/,XS=(t,e)=>((t+(e-1))/e|0)*e;function ZS(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(a){let s=0,c=0;for(let u=0;u<o;++u){for(let f=0;f<r;++f)t[s++]=a[c++];s+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function qS(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,a=i[r];if(!a)return WC("no uniform block object named:",r),{name:r,uniforms:{}};const s=new ArrayBuffer(a.size),c=t.createBuffer(),u=a.index;t.bindBuffer(Zu,c),t.uniformBlockBinding(e,a.index,u);let f=r+".";sm.test(f)&&(f=f.replace(sm,"."));const l={},d={},h={};return a.uniformIndices.forEach(function(p){const m=o[p];let y=m.name;y.startsWith(f)&&(y=y.substr(f.length));const g=y.endsWith("[0]");g&&(y=y.substr(0,y.length-3));const x=j[m.type],A=x.Type,C=g?XS(x.size,16)*m.size:x.size*m.size,b=new A(s,m.offset,C/A.BYTES_PER_ELEMENT);l[y]=b;const v=ZS(b,g,x.rows,x.cols);d[y]=v,am(y,v,h,d)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:l,setters:d}}function cm(t,e,n){return qS(t,e.program,e.uniformBlockSpec,n)}function KS(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Zu,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function um(t,e,n){KS(t,e,n)&&t.bufferData(Zu,n.array,XC)}function lm(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function fm(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):fm(t[n],e[n])}}function Qe(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 a=o.length;for(let s=0;s<a;++s)Qe(n,o[s])}else for(const a in o){const s=n[a];s&&s(o[a])}}}function JS(t,e){const n={},r=t.getProgramParameter(e,qC);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(om(o))continue;const a=t.getAttribLocation(e,o.name),s=de[o.type],c=s.setter(t,a,s);c.location=a,n[o.name]=c}return n}function $S(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Pr(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):($S(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(ZC,n.indices))}function eE(t,e){const n=YS(t,e),r=JS(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Mr(t)&&(i.uniformBlockSpec=WS(t,e),i.transformFeedbackInfo=_S(t,e)),i}const tE=4,dm=5123;function eo(t,e,n,r,i,o){n=n===void 0?tE:n;const a=e.indices,s=e.elementType,c=r===void 0?e.numElements:r;i=i===void 0?0:i,s||a?o!==void 0?t.drawElementsInstanced(n,c,s===void 0?dm:e.elementType,i,o):t.drawElements(n,c,s===void 0?dm:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const nE=36160,Zn=36161,rE=3553,iE=5121,oE=6402,aE=6408,sE=33190,cE=36012,uE=35056,lE=36013,fE=32854,dE=32855,hE=36194,hm=33189,pm=6401,mm=36168,el=34041,pE=36064,$a=36096,gm=36128,tl=33306,nl=33071,rl=9729,ym=[{format:aE,type:iE,min:rl,wrap:nl},{format:el}],lt={};lt[el]=tl,lt[pm]=gm,lt[mm]=gm,lt[oE]=$a,lt[hm]=$a,lt[sE]=$a,lt[cE]=$a,lt[uE]=tl,lt[lE]=tl;function mE(t,e){return lt[t]||lt[e]}const dn={};dn[fE]=!0,dn[dE]=!0,dn[hE]=!0,dn[el]=!0,dn[hm]=!0,dn[pm]=!0,dn[mm]=!0;function gE(t){return dn[t]}function yE(t,e,n,r){const i=nE,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||ym;let a=0;const s={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.samples,l=c.format;let d=c.attachmentPoint||mE(l,c.internalFormat);if(d||(d=pE+a++),!u)if(f!==void 0||gE(l))u=t.createRenderbuffer(),t.bindRenderbuffer(Zn,u),f>1?t.renderbufferStorageMultisample(Zn,f,l,n,r):t.renderbufferStorage(Zn,l,n,r);else{const h=Object.assign({},c);h.width=n,h.height=r,h.auto===void 0&&(h.auto=!1,h.min=h.min||h.minMag||rl,h.mag=h.mag||h.minMag||rl,h.wrapS=h.wrapS||h.wrap||nl,h.wrapT=h.wrapT||h.wrap||nl),u=$i(t,h)}if(cp(t,u))t.framebufferRenderbuffer(i,d,Zn,u);else if(Oa(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,d,u,c.level||0,c.layer):t.framebufferTexture2D(i,d,c.target||rE,u,c.level||0);else throw new Error("unknown attachment type");s.attachments.push(u)}),s}function vE(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||ym,n.forEach(function(o,a){const s=e.attachments[a],c=o.format,u=o.samples;if(u!==void 0||cp(t,s))t.bindRenderbuffer(Zn,s),u>1?t.renderbufferStorageMultisample(Zn,u,c,r,i):t.renderbufferStorage(Zn,c,r,i);else if(Oa(t,s))_C(t,s,o,r,i);else throw new Error("unknown attachment type")})}function bE(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Pr(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const AE=/^(.*?)_/;function xE(t,e){Ru(t,0);const n=t.getExtension(e);if(n){const r={},i=AE.exec(e)[1],o="_"+i;for(const a in n){const s=n[a],c=typeof s=="function",u=c?i:o;let f=a;a.endsWith(u)&&(f=a.substring(0,a.length-u.length)),t[f]!==void 0?!c&&t[f]!==s&&sp(f,t[f],s,a):c?t[f]=function(l){return function(){return l.apply(n,arguments)}}(s):(t[f]=s,r[f]=s)}r.constructor={name:n.constructor.name},Ru(r,0)}return n}const vm=["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 bm(t){for(let e=0;e<vm.length;++e)xE(t,vm[e])}function wE(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){bm(r);break}return r}function CE(t,e){return wE(t,e)}var SE=`/**
|
14
|
+
see: http://github.com/greggman/twgl.js for details */const Tu=5120,$i=5121,Iu=5122,Nu=5123,ku=5124,Lu=5125,Ou=5126,n3=32819,r3=32820,i3=33635,o3=5131,a3=33640,s3=35899,c3=35902,u3=36269,l3=34042,yp={};{const t=yp;t[Tu]=Int8Array,t[$i]=Uint8Array,t[Iu]=Int16Array,t[Nu]=Uint16Array,t[ku]=Int32Array,t[Lu]=Uint32Array,t[Ou]=Float32Array,t[n3]=Uint16Array,t[r3]=Uint16Array,t[i3]=Uint16Array,t[o3]=Uint16Array,t[a3]=Uint32Array,t[s3]=Uint32Array,t[c3]=Uint32Array,t[u3]=Uint32Array,t[l3]=Uint32Array}function Bu(t){if(t instanceof Int8Array)return Tu;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return $i;if(t instanceof Int16Array)return Iu;if(t instanceof Uint16Array)return Nu;if(t instanceof Int32Array)return ku;if(t instanceof Uint32Array)return Lu;if(t instanceof Float32Array)return Ou;throw new Error("unsupported typed array type")}function f3(t){if(t===Int8Array)return Tu;if(t===Uint8Array||t===Uint8ClampedArray)return $i;if(t===Int16Array)return Iu;if(t===Uint16Array)return Nu;if(t===Int32Array)return ku;if(t===Uint32Array)return Lu;if(t===Float32Array)return Ou;throw new Error("unsupported typed array type")}function d3(t){const e=yp[t];if(!e)throw new Error("unknown gl type");return e}const Pa=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 h3(...t){console.error(...t)}function vp(...t){console.warn(...t)}function p3(t,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function bp(t,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function za(t,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function m3(t,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const Ap=35044,mt=34962,g3=34963,y3=34660,v3=5120,b3=5121,A3=5122,w3=5123,x3=5124,C3=5125,E3=5126,wp={attribPrefix:""};function xp(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Ap)}function Cp(t,e,n,r){if(p3(t,e))return e;n=n||mt;const i=t.createBuffer();return xp(t,n,i,e,r),i}function Ep(t){return t==="indices"}function S3(t){return t instanceof Int8Array||t instanceof Uint8Array}function D3(t){return t===Int8Array||t===Uint8Array}function M3(t){return t.length?t:t.data}const T3=/coord|texture/i,I3=/color|colour/i;function Sp(t,e){let n;if(T3.test(t)?n=2:I3.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 N3(t,e){return t.numComponents||t.size||Sp(e,M3(t).length)}function Fu(t,e){if(Pa(t))return t;if(Pa(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(Ep(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function k3(t,e){const n={};return Object.keys(e).forEach(function(r){if(!Ep(r)){const i=e[r],o=i.attrib||i.name||i.attribName||wp.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Pa(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let a,s,c,u;if(i.buffer&&i.buffer instanceof WebGLBuffer)a=i.buffer,u=i.numComponents||i.size,s=i.type,c=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,d=f*l.BYTES_PER_ELEMENT;s=f3(l),c=i.normalize!==void 0?i.normalize:D3(l),u=i.numComponents||i.size||Sp(r,f),a=t.createBuffer(),t.bindBuffer(mt,a),t.bufferData(mt,d,i.drawType||Ap)}else{const f=Fu(i,r);a=Cp(t,f,void 0,i.drawType),s=Bu(f),c=i.normalize!==void 0?i.normalize:S3(f),u=N3(i,r)}n[o]={buffer:a,numComponents:u,type:s,normalize:c,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(mt,null),n}function L3(t,e,n,r){n=Fu(n),r!==void 0?(t.bindBuffer(mt,e.buffer),t.bufferSubData(mt,r,n)):xp(t,mt,e.buffer,n,e.drawType)}function O3(t,e){return e===v3||e===b3?1:e===A3||e===w3?2:e===x3||e===C3||e===E3?4:0}const Pu=["position","positions","a_position"];function B3(t,e){let n,r;for(r=0;r<Pu.length&&(n=Pu[r],!(n in e||(n=wp.attribPrefix+n,n in e)));++r);r===Pu.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(mt,i.buffer);const o=t.getBufferParameter(mt,y3);t.bindBuffer(mt,null);const a=O3(t,i.type),s=o/a,c=i.numComponents||i.size,u=s/c;if(u%1!==0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function F3(t,e,n){const r=k3(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const a=Fu(o,"indices");i.indices=Cp(t,a,g3),i.numElements=a.length,i.elementType=Bu(a)}else i.numElements||(i.numElements=B3(t,i.attribs));return i}function Lr(t){return!!t.texStorage2D}const zu=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 a=e[r[o]];e[r[o]]=a?`${a} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),on={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Or=Pa,Dp=function(){let t;return function(){return t=t||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Mp=6406,gt=6407,te=6408,Tp=6409,Ip=6410,eo=6402,Np=34041,Ra=33071,P3=9728,z3=9729,Tt=3553,It=34067,an=32879,sn=35866,ja=34069,R3=34070,j3=34071,U3=34072,G3=34073,H3=34074,Ru=10241,ju=10240,Ua=10242,Ga=10243,kp=32882,Q3=33082,V3=33083,Y3=33084,_3=33085,Uu=3317,Lp=3314,Op=32878,Bp=3316,Fp=3315,Pp=32877,W3=37443,X3=37441,Z3=37440,q3=33321,K3=36756,J3=33325,$3=33326,eC=33330,tC=33329,nC=33338,rC=33337,iC=33340,oC=33339,aC=33323,sC=36757,cC=33327,uC=33328,lC=33336,fC=33335,dC=33332,hC=33331,pC=33334,mC=33333,gC=32849,yC=35905,vC=36194,bC=36758,AC=35898,wC=35901,xC=34843,CC=34837,EC=36221,SC=36239,DC=36215,MC=36233,TC=36209,IC=36227,NC=32856,kC=35907,LC=36759,OC=32855,BC=32854,FC=32857,PC=34842,zC=34836,RC=36220,jC=36238,UC=36975,GC=36214,HC=36232,QC=36226,VC=36208,YC=33189,_C=33190,WC=36012,XC=36013,ZC=35056,cn=5120,ne=5121,Ha=5122,Br=5123,Qa=5124,_n=5125,Se=5126,zp=32819,Rp=32820,jp=33635,st=5131,to=36193,Gu=33640,qC=35899,KC=35902,JC=36269,$C=34042,Va=33319,Fr=33320,Ya=6403,Pr=36244,zr=36248,Wn=36249;let Hu;function _a(t){if(!Hu){const e={};e[Mp]={textureFormat:Mp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ne,st,to,Se]},e[Tp]={textureFormat:Tp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ne,st,to,Se]},e[Ip]={textureFormat:Ip,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[ne,st,to,Se]},e[gt]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[ne,st,to,Se,jp]},e[te]={textureFormat:te,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[ne,st,to,Se,zp,Rp]},e[eo]={textureFormat:eo,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[_n,Br]},e[q3]={textureFormat:Ya,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[ne]},e[K3]={textureFormat:Ya,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[cn]},e[J3]={textureFormat:Ya,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Se,st]},e[$3]={textureFormat:Ya,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Se]},e[eC]={textureFormat:Pr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ne]},e[tC]={textureFormat:Pr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[cn]},e[dC]={textureFormat:Pr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Br]},e[hC]={textureFormat:Pr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Ha]},e[pC]={textureFormat:Pr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[_n]},e[mC]={textureFormat:Pr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Qa]},e[aC]={textureFormat:Va,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[ne]},e[sC]={textureFormat:Va,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[cn]},e[cC]={textureFormat:Va,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Se,st]},e[uC]={textureFormat:Va,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Se]},e[lC]={textureFormat:Fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ne]},e[fC]={textureFormat:Fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[cn]},e[nC]={textureFormat:Fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Br]},e[rC]={textureFormat:Fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ha]},e[iC]={textureFormat:Fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[_n]},e[oC]={textureFormat:Fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Qa]},e[gC]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[ne]},e[yC]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ne]},e[vC]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[ne,jp]},e[bC]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[cn]},e[AC]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Se,st,qC]},e[wC]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Se,st,KC]},e[xC]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Se,st]},e[CC]={textureFormat:gt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Se]},e[EC]={textureFormat:zr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ne]},e[SC]={textureFormat:zr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[cn]},e[DC]={textureFormat:zr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Br]},e[MC]={textureFormat:zr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Ha]},e[TC]={textureFormat:zr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[_n]},e[IC]={textureFormat:zr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Qa]},e[NC]={textureFormat:te,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ne]},e[kC]={textureFormat:te,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ne]},e[LC]={textureFormat:te,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[cn]},e[OC]={textureFormat:te,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[ne,Rp,Gu]},e[BC]={textureFormat:te,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[ne,zp]},e[FC]={textureFormat:te,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Gu]},e[PC]={textureFormat:te,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Se,st]},e[zC]={textureFormat:te,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Se]},e[RC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ne]},e[jC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[cn]},e[UC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Gu]},e[GC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Br]},e[HC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Ha]},e[QC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Qa]},e[VC]={textureFormat:Wn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[_n]},e[YC]={textureFormat:eo,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Br,_n]},e[_C]={textureFormat:eo,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[_n]},e[WC]={textureFormat:eo,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Se]},e[ZC]={textureFormat:Np,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[$C]},e[XC]={textureFormat:Np,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[JC]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const a=r.type[o];r.bytesPerElementMap[a]=i})}),Hu=e}return Hu[t]}function eE(t,e){const n=_a(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Rr(t){const e=_a(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Up(t){return(t&t-1)===0}function tE(t,e,n,r){if(!Lr(t))return Up(e)&&Up(n);const i=_a(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function nE(t){const e=_a(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Gp(t,e,n){return Or(e)?Bu(e):n||ne}function Wa(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===It?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 jr(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(W3,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(X3,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(Z3,e.flipY)}function Hp(t){t.pixelStorei(Uu,4),Lr(t)&&(t.pixelStorei(Lp,0),t.pixelStorei(Op,0),t.pixelStorei(Bp,0),t.pixelStorei(Fp,0),t.pixelStorei(Pp,0))}function rE(t,e,n,r){r.minMag&&(n.call(t,e,Ru,r.minMag),n.call(t,e,ju,r.minMag)),r.min&&n.call(t,e,Ru,r.min),r.mag&&n.call(t,e,ju,r.mag),r.wrap&&(n.call(t,e,Ua,r.wrap),n.call(t,e,Ga,r.wrap),(e===an||m3(t,e))&&n.call(t,e,kp,r.wrap)),r.wrapR&&n.call(t,e,kp,r.wrapR),r.wrapS&&n.call(t,e,Ua,r.wrapS),r.wrapT&&n.call(t,e,Ga,r.wrapT),r.minLod&&n.call(t,e,Q3,r.minLod),r.maxLod&&n.call(t,e,V3,r.maxLod),r.baseLevel&&n.call(t,e,Y3,r.baseLevel),r.maxLevel&&n.call(t,e,_3,r.maxLevel)}function Qp(t,e,n){const r=n.target||Tt;t.bindTexture(r,e),rE(t,r,t.texParameteri,n)}function iE(t){return t=t||on.textureColor,Or(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Qu(t,e,n,r,i,o){n=n||on.textureOptions,o=o||te;const a=n.target||Tt;if(r=r||n.width,i=i||n.height,t.bindTexture(a,e),tE(t,r,i,o))t.generateMipmap(a);else{const s=nE(o)?z3:P3;t.texParameteri(a,Ru,s),t.texParameteri(a,ju,s),t.texParameteri(a,Ua,Ra),t.texParameteri(a,Ga,Ra)}}function no(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Vu(t,e){return e=e||{},e.cubeFaceOrder||[ja,R3,j3,U3,G3,H3]}function Yu(t,e){const r=Vu(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function Vp(t,e,n,r){r=r||on.textureOptions;const i=r.target||Tt,o=r.level||0;let a=n.width,s=n.height;const c=r.internalFormat||r.format||te,u=Rr(c),f=r.format||u.format,l=r.type||u.type;if(jr(t,r),t.bindTexture(i,e),i===It){const d=n.width,h=n.height;let p,m;if(d/6===h)p=h,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(h/6===d)p=d,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(d/3===h/2)p=d/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(d/2===h/3)p=d/2,m=[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 y=Dp();y?(y.canvas.width=p,y.canvas.height=p,a=p,s=p,Yu(t,r).forEach(function(g){const A=m[g.ndx*2+0]*p,w=m[g.ndx*2+1]*p;y.drawImage(n,A,w,p,p,0,0,p,p),t.texImage2D(g.face,o,c,f,l,y.canvas)}),y.canvas.width=1,y.canvas.height=1):typeof createImageBitmap<"u"&&(a=p,s=p,Yu(t,r).forEach(function(g){const A=m[g.ndx*2+0]*p,w=m[g.ndx*2+1]*p;t.texImage2D(g.face,o,c,p,p,0,f,l,null),createImageBitmap(n,A,w,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){jr(t,r),t.bindTexture(i,e),t.texImage2D(g.face,o,c,f,l,C),no(r)&&Qu(t,e,r,a,s,c)})}))}else if(i===an||i===sn){const d=Math.min(n.width,n.height),h=Math.max(n.width,n.height),p=h/d;if(p%1!==0)throw"can not compute 3D dimensions of element";const m=n.width===h?1:0,y=n.height===h?1:0;t.pixelStorei(Uu,1),t.pixelStorei(Lp,n.width),t.pixelStorei(Op,0),t.pixelStorei(Pp,0),t.texImage3D(i,o,c,d,d,d,0,f,l,null);for(let g=0;g<p;++g){const A=g*d*m,w=g*d*y;t.pixelStorei(Bp,A),t.pixelStorei(Fp,w),t.texSubImage3D(i,o,0,0,g,d,d,1,f,l,n)}Hp(t)}else t.texImage2D(i,o,c,f,l,n);no(r)&&Qu(t,e,r,a,s,c),Qp(t,e,r)}function ro(){}function oE(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 aE(t,e){return e===void 0&&!oE(t)?"anonymous":e}function sE(t,e,n){n=n||ro;let r;if(e=e!==void 0?e:on.crossOrigin,e=aE(t,e),typeof Image<"u"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",a),r=null},o=function(){const c="couldn't load image: "+t;h3(c),n(c,r),i()},a=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",a),r.src=t,r}else if(typeof ImageBitmap<"u"){let i,o;const a=function(){n(i,o)},s={};e&&(s.mode="cors"),fetch(t,s).then(function(c){if(!c.ok)throw c;return c.blob()}).then(function(c){return createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(c){o=c,setTimeout(a)}).catch(function(c){i=c,setTimeout(a)}),r=null}return r}function Yp(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof ImageData<"u"&&t instanceof ImageData||typeof HTMLElement<"u"&&t instanceof HTMLElement}function _u(t,e,n){return Yp(t)?(setTimeout(function(){n(null,t)}),t):sE(t,e,n)}function Wu(t,e,n){n=n||on.textureOptions;const r=n.target||Tt;if(t.bindTexture(r,e),n.color===!1)return;const i=iE(n.color);if(r===It)for(let o=0;o<6;++o)t.texImage2D(ja+o,0,te,1,1,0,te,ne,i);else r===an||r===sn?t.texImage3D(r,0,te,1,1,1,0,te,ne,i):t.texImage2D(r,0,te,1,1,0,te,ne,i)}function cE(t,e,n,r){return r=r||ro,n=n||on.textureOptions,Wu(t,e,n),n=Object.assign({},n),_u(n.src,n.crossOrigin,function(o,a){o?r(o,e,a):(Vp(t,e,a,n),r(null,e,a))})}function uE(t,e,n,r){r=r||ro;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,a=n.internalFormat||n.format||te,s=Rr(a),c=n.format||s.format,u=n.type||ne,f=n.target||Tt;if(f!==It)throw"target must be TEXTURE_CUBE_MAP";Wu(t,e,n),n=Object.assign({},n);let l=6;const d=[],h=Vu(t,n);let p;function m(y){return function(g,A){--l,g?d.push(g):A.width!==A.height?d.push("cubemap face img is not a square: "+A.src):(jr(t,n),t.bindTexture(f,e),l===5?Vu().forEach(function(w){t.texImage2D(w,o,a,c,u,A)}):t.texImage2D(y,o,a,c,u,A),no(n)&&t.generateMipmap(f)),l===0&&r(d.length?d:void 0,e,p)}}p=i.map(function(y,g){return _u(y,n.crossOrigin,m(h[g]))})}function lE(t,e,n,r){r=r||ro;const i=n.src,o=n.internalFormat||n.format||te,a=Rr(o),s=n.format||a.format,c=n.type||ne,u=n.target||sn;if(u!==an&&u!==sn)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Wu(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let d;const h=n.level||0;let p=n.width,m=n.height;const y=i.length;let g=!0;function A(w){return function(C,b){if(--f,C)l.push(C);else{if(jr(t,n),t.bindTexture(u,e),g){g=!1,p=n.width||b.width,m=n.height||b.height,t.texImage3D(u,h,o,p,m,y,0,s,c,null);for(let v=0;v<y;++v)t.texSubImage3D(u,h,0,0,v,p,m,1,s,c,b)}else{let v=b,x;(b.width!==p||b.height!==m)&&(x=Dp(),v=x.canvas,x.canvas.width=p,x.canvas.height=m,x.drawImage(b,0,0,p,m)),t.texSubImage3D(u,h,0,0,w,p,m,1,s,c,v),x&&v===x.canvas&&(x.canvas.width=0,x.canvas.height=0)}no(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,d)}}d=i.map(function(w,C){return _u(w,n.crossOrigin,A(C))})}function _p(t,e,n,r){r=r||on.textureOptions;const i=r.target||Tt;t.bindTexture(i,e);let o=r.width,a=r.height,s=r.depth;const c=r.level||0,u=r.internalFormat||r.format||te,f=Rr(u),l=r.format||f.format,d=r.type||Gp(t,n,f.type);if(Or(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const y=d3(d);n=new y(n)}const h=eE(u,d),p=n.byteLength/h;if(p%1)throw"length wrong size for format: "+zu(t,l);let m;if(i===an||i===sn)if(!o&&!a&&!s){const y=Math.cbrt(p);if(y%1!==0)throw"can't guess cube size of array of numElements: "+p;o=y,a=y,s=y}else o&&(!a||!s)?(m=Wa(t,i,a,s,p/o),a=m.width,s=m.height):a&&(!o||!s)?(m=Wa(t,i,o,s,p/a),o=m.width,s=m.height):(m=Wa(t,i,o,a,p/s),o=m.width,a=m.height);else m=Wa(t,i,o,a,p),o=m.width,a=m.height;if(Hp(t),t.pixelStorei(Uu,r.unpackAlignment||1),jr(t,r),i===It){const y=h/n.BYTES_PER_ELEMENT,g=p/6*y;Yu(t,r).forEach(A=>{const w=g*A.ndx,C=n.subarray(w,w+g);t.texImage2D(A.face,c,u,o,a,0,l,d,C)})}else i===an||i===sn?t.texImage3D(i,c,u,o,a,s,0,l,d,n):t.texImage2D(i,c,u,o,a,0,l,d,n);return{width:o,height:a,depth:s,type:d}}function fE(t,e,n){const r=n.target||Tt;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||te,a=Rr(o),s=n.format||a.format,c=n.type||a.type;if(jr(t,n),r===It)for(let u=0;u<6;++u)t.texImage2D(ja+u,i,o,n.width,n.height,0,s,c,null);else r===an||r===sn?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,s,c,null):t.texImage2D(r,i,o,n.width,n.height,0,s,c,null)}function io(t,e,n){n=n||ro,e=e||on.textureOptions;const r=t.createTexture(),i=e.target||Tt;let o=e.width||1,a=e.height||1;const s=e.internalFormat||te;t.bindTexture(i,r),i===It&&(t.texParameteri(i,Ua,Ra),t.texParameteri(i,Ga,Ra));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")cE(t,r,e,n);else if(Or(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||Or(c[0]))){const u=_p(t,r,c,e);o=u.width,a=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||Yp(c[0]))?i===It?uE(t,r,e,n):lE(t,r,e,n):(Vp(t,r,c,e),o=c.width,a=c.height);else fE(t,r,e);return no(e)&&Qu(t,r,e,o,a,s),Qp(t,r,e),r}function dE(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const a=n.target||Tt;t.bindTexture(a,e);const s=n.level||0,c=n.internalFormat||n.format||te,u=Rr(c),f=n.format||u.format;let l;const d=n.src;if(d&&(Or(d)||Array.isArray(d)&&typeof d[0]=="number")?l=n.type||Gp(t,d,u.type):l=n.type||u.type,a===It)for(let h=0;h<6;++h)t.texImage2D(ja+h,s,c,r,i,0,f,l,null);else a===an||a===sn?t.texImage3D(a,s,c,r,i,o,0,f,l,null):t.texImage2D(a,s,c,r,i,0,f,l,null)}const hE=vp,Xa=33984,pE=35048,Za=34962,mE=34963,Xu=35345,Wp=35718,gE=35721,yE=35971,vE=35382,bE=35396,AE=35398,wE=35392,xE=35395,qa=5126,Xp=35664,Zp=35665,qp=35666,Zu=5124,Kp=35667,Jp=35668,$p=35669,em=35670,tm=35671,nm=35672,rm=35673,im=35674,om=35675,am=35676,CE=35678,EE=35680,SE=35679,DE=35682,ME=35685,TE=35686,IE=35687,NE=35688,kE=35689,LE=35690,OE=36289,BE=36292,FE=36293,qu=5125,sm=36294,cm=36295,um=36296,PE=36298,zE=36299,RE=36300,jE=36303,UE=36306,GE=36307,HE=36308,QE=36311,Ka=3553,Ja=34067,Ku=32879,$a=35866,P={};function lm(t,e){return P[e].bindPoint}function VE(t,e){return function(n){t.uniform1f(e,n)}}function YE(t,e){return function(n){t.uniform1fv(e,n)}}function _E(t,e){return function(n){t.uniform2fv(e,n)}}function WE(t,e){return function(n){t.uniform3fv(e,n)}}function XE(t,e){return function(n){t.uniform4fv(e,n)}}function fm(t,e){return function(n){t.uniform1i(e,n)}}function dm(t,e){return function(n){t.uniform1iv(e,n)}}function hm(t,e){return function(n){t.uniform2iv(e,n)}}function pm(t,e){return function(n){t.uniform3iv(e,n)}}function mm(t,e){return function(n){t.uniform4iv(e,n)}}function ZE(t,e){return function(n){t.uniform1ui(e,n)}}function qE(t,e){return function(n){t.uniform1uiv(e,n)}}function KE(t,e){return function(n){t.uniform2uiv(e,n)}}function JE(t,e){return function(n){t.uniform3uiv(e,n)}}function $E(t,e){return function(n){t.uniform4uiv(e,n)}}function eS(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function tS(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function nS(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function rS(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function iS(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function oS(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function aS(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function sS(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function cS(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Te(t,e,n,r){const i=lm(t,e);return Lr(t)?function(o){let a,s;za(t,o)?(a=o,s=null):(a=o.texture,s=o.sampler),t.uniform1i(r,n),t.activeTexture(Xa+n),t.bindTexture(i,a),t.bindSampler(n,s)}:function(o){t.uniform1i(r,n),t.activeTexture(Xa+n),t.bindTexture(i,o)}}function Ie(t,e,n,r,i){const o=lm(t,e),a=new Int32Array(i);for(let s=0;s<i;++s)a[s]=n+s;return Lr(t)?function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(Xa+a[u]);let f,l;za(t,c)?(f=c,l=null):(f=c.texture,l=c.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(Xa+a[u]),t.bindTexture(o,c)})}}P[qa]={Type:Float32Array,size:4,setter:VE,arraySetter:YE},P[Xp]={Type:Float32Array,size:8,setter:_E,cols:2},P[Zp]={Type:Float32Array,size:12,setter:WE,cols:3},P[qp]={Type:Float32Array,size:16,setter:XE,cols:4},P[Zu]={Type:Int32Array,size:4,setter:fm,arraySetter:dm},P[Kp]={Type:Int32Array,size:8,setter:hm,cols:2},P[Jp]={Type:Int32Array,size:12,setter:pm,cols:3},P[$p]={Type:Int32Array,size:16,setter:mm,cols:4},P[qu]={Type:Uint32Array,size:4,setter:ZE,arraySetter:qE},P[sm]={Type:Uint32Array,size:8,setter:KE,cols:2},P[cm]={Type:Uint32Array,size:12,setter:JE,cols:3},P[um]={Type:Uint32Array,size:16,setter:$E,cols:4},P[em]={Type:Uint32Array,size:4,setter:fm,arraySetter:dm},P[tm]={Type:Uint32Array,size:8,setter:hm,cols:2},P[nm]={Type:Uint32Array,size:12,setter:pm,cols:3},P[rm]={Type:Uint32Array,size:16,setter:mm,cols:4},P[im]={Type:Float32Array,size:32,setter:eS,rows:2,cols:2},P[om]={Type:Float32Array,size:48,setter:tS,rows:3,cols:3},P[am]={Type:Float32Array,size:64,setter:nS,rows:4,cols:4},P[ME]={Type:Float32Array,size:32,setter:rS,rows:2,cols:3},P[TE]={Type:Float32Array,size:32,setter:oS,rows:2,cols:4},P[IE]={Type:Float32Array,size:48,setter:iS,rows:3,cols:2},P[NE]={Type:Float32Array,size:48,setter:sS,rows:3,cols:4},P[kE]={Type:Float32Array,size:64,setter:aS,rows:4,cols:2},P[LE]={Type:Float32Array,size:64,setter:cS,rows:4,cols:3},P[CE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:Ka},P[EE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:Ja},P[SE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:Ku},P[DE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:Ka},P[OE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:$a},P[BE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:$a},P[FE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:Ja},P[PE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:Ka},P[zE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:Ku},P[RE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:Ja},P[jE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:$a},P[UE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:Ka},P[GE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:Ku},P[HE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:Ja},P[QE]={Type:null,size:0,setter:Te,arraySetter:Ie,bindPoint:$a};function es(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(Za,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||qa,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function un(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(Za,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Zu,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function ts(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(Za,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||qu,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Ju(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(Za,o.buffer);const a=o.size||o.numComponents||r,s=a/i,c=o.type||qa,f=P[c].size*a,l=o.normalize||!1,d=o.offset||0,h=f/i;for(let p=0;p<i;++p)t.enableVertexAttribArray(e+p),t.vertexAttribPointer(e+p,s,c,l,f,d+h*p),o.divisor!==void 0&&t.vertexAttribDivisor(e+p,o.divisor)}}const ue={};ue[qa]={size:4,setter:es},ue[Xp]={size:8,setter:es},ue[Zp]={size:12,setter:es},ue[qp]={size:16,setter:es},ue[Zu]={size:4,setter:un},ue[Kp]={size:8,setter:un},ue[Jp]={size:12,setter:un},ue[$p]={size:16,setter:un},ue[qu]={size:4,setter:ts},ue[sm]={size:8,setter:ts},ue[cm]={size:12,setter:ts},ue[um]={size:16,setter:ts},ue[em]={size:4,setter:un},ue[tm]={size:8,setter:un},ue[nm]={size:12,setter:un},ue[rm]={size:16,setter:un},ue[im]={size:4,setter:Ju,count:2},ue[om]={size:9,setter:Ju,count:3},ue[am]={size:16,setter:Ju,count:4};function gm(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const uS=/(\.|\[|]|\w+)/g,lS=t=>t>="0"&&t<="9";function ym(t,e,n,r){const i=t.split(uS).filter(s=>s!=="");let o=0,a="";for(;;){const s=i[o++];a+=s;const c=lS(s[0]),u=c?parseInt(s):s;if(c&&(a+=i[o++]),o===i.length){n[u]=e;break}else{const l=i[o++],d=l==="[",h=n[u]||(d?[]:{});n[u]=h,n=h,r[a]=r[a]||function(p){return function(m){xm(p,m)}}(h),a+=l}}}function fS(t,e){let n=0;function r(s,c,u){const f=c.name.endsWith("[0]"),l=c.type,d=P[l];if(!d)throw new Error(`unknown type: 0x${l.toString(16)}`);let h;if(d.bindPoint){const p=n;n+=c.size,f?h=d.arraySetter(t,l,p,u,c.size):h=d.setter(t,l,p,u,c.size)}else d.arraySetter&&f?h=d.arraySetter(t,u):h=d.setter(t,u);return h.location=u,h}const i={},o={},a=t.getProgramParameter(e,Wp);for(let s=0;s<a;++s){const c=t.getActiveUniform(e,s);if(gm(c))continue;let u=c.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const f=t.getUniformLocation(e,c.name);if(f){const l=r(e,c,f);i[u]=l,ym(u,l,o,i)}}return i}function dS(t,e){const n={},r=t.getProgramParameter(e,yE);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 hS(t,e){const n=t.getProgramParameter(e,Wp),r=[],i=[];for(let s=0;s<n;++s){i.push(s),r.push({});const c=t.getActiveUniform(e,s);r[s].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(s){const c=s[0],u=s[1];t.getActiveUniforms(e,i,t[c]).forEach(function(f,l){r[l][u]=f})});const o={},a=t.getProgramParameter(e,vE);for(let s=0;s<a;++s){const c=t.getActiveUniformBlockName(e,s),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,s,bE),usedByFragmentShader:t.getActiveUniformBlockParameter(e,s,AE),size:t.getActiveUniformBlockParameter(e,s,wE),uniformIndices:t.getActiveUniformBlockParameter(e,s,xE)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const vm=/\[\d+\]\.$/,pS=(t,e)=>((t+(e-1))/e|0)*e;function mS(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(a){let s=0,c=0;for(let u=0;u<o;++u){for(let f=0;f<r;++f)t[s++]=a[c++];s+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function gS(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,a=i[r];if(!a)return hE("no uniform block object named:",r),{name:r,uniforms:{}};const s=new ArrayBuffer(a.size),c=t.createBuffer(),u=a.index;t.bindBuffer(Xu,c),t.uniformBlockBinding(e,a.index,u);let f=r+".";vm.test(f)&&(f=f.replace(vm,"."));const l={},d={},h={};return a.uniformIndices.forEach(function(p){const m=o[p];let y=m.name;y.startsWith(f)&&(y=y.substr(f.length));const g=y.endsWith("[0]");g&&(y=y.substr(0,y.length-3));const A=P[m.type],w=A.Type,C=g?pS(A.size,16)*m.size:A.size*m.size,b=new w(s,m.offset,C/w.BYTES_PER_ELEMENT);l[y]=b;const v=mS(b,g,A.rows,A.cols);d[y]=v,ym(y,v,h,d)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:l,setters:d}}function bm(t,e,n){return gS(t,e.program,e.uniformBlockSpec,n)}function yS(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Xu,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function Am(t,e,n){yS(t,e,n)&&t.bufferData(Xu,n.array,pE)}function wm(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function xm(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):xm(t[n],e[n])}}function Ge(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 a=o.length;for(let s=0;s<a;++s)Ge(n,o[s])}else for(const a in o){const s=n[a];s&&s(o[a])}}}function vS(t,e){const n={},r=t.getProgramParameter(e,gE);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(gm(o))continue;const a=t.getAttribLocation(e,o.name),s=ue[o.type],c=s.setter(t,a,s);c.location=a,n[o.name]=c}return n}function bS(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Ur(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(bS(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(mE,n.indices))}function AS(t,e){const n=fS(t,e),r=vS(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Lr(t)&&(i.uniformBlockSpec=hS(t,e),i.transformFeedbackInfo=dS(t,e)),i}const wS=4,Cm=5123;function oo(t,e,n,r,i,o){n=n===void 0?wS:n;const a=e.indices,s=e.elementType,c=r===void 0?e.numElements:r;i=i===void 0?0:i,s||a?o!==void 0?t.drawElementsInstanced(n,c,s===void 0?Cm:e.elementType,i,o):t.drawElements(n,c,s===void 0?Cm:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const xS=36160,Xn=36161,CS=3553,ES=5121,SS=6402,DS=6408,MS=33190,TS=36012,IS=35056,NS=36013,kS=32854,LS=32855,OS=36194,Em=33189,Sm=6401,Dm=36168,$u=34041,BS=36064,ns=36096,Mm=36128,el=33306,tl=33071,nl=9729,Tm=[{format:DS,type:ES,min:nl,wrap:tl},{format:$u}],ct={};ct[$u]=el,ct[Sm]=Mm,ct[Dm]=Mm,ct[SS]=ns,ct[Em]=ns,ct[MS]=ns,ct[TS]=ns,ct[IS]=el,ct[NS]=el;function FS(t,e){return ct[t]||ct[e]}const ln={};ln[kS]=!0,ln[LS]=!0,ln[OS]=!0,ln[$u]=!0,ln[Em]=!0,ln[Sm]=!0,ln[Dm]=!0;function PS(t){return ln[t]}function zS(t,e,n,r){const i=xS,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||Tm;let a=0;const s={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.samples,l=c.format;let d=c.attachmentPoint||FS(l,c.internalFormat);if(d||(d=BS+a++),!u)if(f!==void 0||PS(l))u=t.createRenderbuffer(),t.bindRenderbuffer(Xn,u),f>1?t.renderbufferStorageMultisample(Xn,f,l,n,r):t.renderbufferStorage(Xn,l,n,r);else{const h=Object.assign({},c);h.width=n,h.height=r,h.auto===void 0&&(h.auto=!1,h.min=h.min||h.minMag||nl,h.mag=h.mag||h.minMag||nl,h.wrapS=h.wrapS||h.wrap||tl,h.wrapT=h.wrapT||h.wrap||tl),u=io(t,h)}if(bp(t,u))t.framebufferRenderbuffer(i,d,Xn,u);else if(za(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,d,u,c.level||0,c.layer):t.framebufferTexture2D(i,d,c.target||CS,u,c.level||0);else throw new Error("unknown attachment type");s.attachments.push(u)}),s}function RS(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||Tm,n.forEach(function(o,a){const s=e.attachments[a],c=o.format,u=o.samples;if(u!==void 0||bp(t,s))t.bindRenderbuffer(Xn,s),u>1?t.renderbufferStorageMultisample(Xn,u,c,r,i):t.renderbufferStorage(Xn,c,r,i);else if(za(t,s))dE(t,s,o,r,i);else throw new Error("unknown attachment type")})}function jS(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Ur(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const US=/^(.*?)_/;function GS(t,e){zu(t,0);const n=t.getExtension(e);if(n){const r={},i=US.exec(e)[1],o="_"+i;for(const a in n){const s=n[a],c=typeof s=="function",u=c?i:o;let f=a;a.endsWith(u)&&(f=a.substring(0,a.length-u.length)),t[f]!==void 0?!c&&t[f]!==s&&vp(f,t[f],s,a):c?t[f]=function(l){return function(){return l.apply(n,arguments)}}(s):(t[f]=s,r[f]=s)}r.constructor={name:n.constructor.name},zu(r,0)}return n}const Im=["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 Nm(t){for(let e=0;e<Im.length;++e)GS(t,Im[e])}function HS(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){Nm(r);break}return r}function QS(t,e){return HS(t,e)}const VS=`/**
|
15
15
|
* The vertex position wrt the rectangle specified by (x, x2, y, y2).
|
16
16
|
* [0, 0] = [x, y], [1, 1] = [x2, y2].
|
17
17
|
* The x or y component may contain fractional values if the rectangle
|
@@ -125,7 +125,7 @@ void main(void) {
|
|
125
125
|
|
126
126
|
setupPicking();
|
127
127
|
}
|
128
|
-
`,
|
128
|
+
`,YS=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
|
129
129
|
in vec2 vPosInPixels;
|
130
130
|
#endif
|
131
131
|
|
@@ -176,20 +176,20 @@ void main(void) {
|
|
176
176
|
fragColor = vPickingColor;
|
177
177
|
}
|
178
178
|
}
|
179
|
-
|
179
|
+
`,rl="attr_",km="uDomain_",_S="range_",Lm="scale_",Om="getScaled_",il="uRangeTexture_",Bm=3402823466e29;function WS(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 XS(t,e){let n;if(Fa(t))n=Zn(gp(t)(e));else if(ee(e))if(Yn(t))n=qS(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(Xo(e))n=Zn(e?1:0);else if(e===null)if(Yn(t))n=Zn([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=Zn(e);return`
|
180
180
|
#define ${t}_DEFINED
|
181
|
-
${n.type} ${
|
181
|
+
${n.type} ${Om}${t}() {
|
182
182
|
// Constant value
|
183
183
|
return ${n};
|
184
|
-
}`}function
|
185
|
-
${y} ${
|
186
|
-
${
|
184
|
+
}`}function ZS(t,e,n){var x,E;if(at(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=kr(t),i=rl+t,o=km+r,a=_S+r,s=rs(e.type),c=s?"vec2":"float",u=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:d}=WS(e.type),h=(I,...L)=>KS.apply(null,[I,"value",...L]);let p;switch(d){case"linear":p=h("scaleLinear","domain",a);break;case"log":p=h("scaleLog","domain",a,e.base());break;case"symlog":p=h("scaleSymlog","domain",a,e.constant());break;case"pow":case"sqrt":p=h("scalePow","domain",a,e.exponent());break;case"index":case"locus":p=h("scaleBandHp","domain",a,e.paddingInner(),e.paddingOuter(),e.align(),(x=n.band)!=null?x:.5);break;case"point":case"band":p=h("scaleBand","domain",a,e.paddingInner(),e.paddingOuter(),e.align(),(E=n.band)!=null?E:.5);break;case"ordinal":case"null":case"identity":p=h("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const m=Da(e.type)||je(e.type)&&Yn(t)?[0,1]:e.range?e.range():void 0;if(m&&t==r&&m.length&&m.every(ce)){const I=Fm(m);l.push(`const ${I.type} ${a} = ${I};`)}const y=Yn(t)?"vec3":"float";let g;if(Yn(t)){const I=il+r;if(t==r&&l.push(`uniform sampler2D ${I};`),je(e.type))g=`getInterpolatedColor(${I}, transformed)`;else if(tn(e.type)||Dr(e.type))g=`getDiscreteColor(${I}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||Dr(e.type)){const I=il+r;t==r&&l.push(`uniform sampler2D ${I};`),g=`getDiscreteColor(${I}, int(transformed)).r`}Zi(n)?l.push(`uniform highp ${c} ${i};`):l.push(`in highp ${c} ${i};`);const A=[],w=je(e.type)&&u>2,C=Dr(e.type)||w;if(A.push("int slot = 0;"),C){const I=o;A.push(w?`while (slot < ${I}.length() - 2 && value >= ${I}[slot + 1]) { slot++; }`:`while (slot < ${I}.length() && value >= ${I}[slot]) { slot++; }`)}const b=je(e.type)||Dr(e.type)||["band","point"].includes(e.type);if(p){const I=o;b&&(s?A.push(`vec3 domain = ${I};`):A.push(`vec2 domain = vec2(${I}[slot], ${I}[slot + 1]);`)),A.push(`float transformed = ${p};`),w&&A.push(`transformed = (float(slot) + transformed) / (float(${I}.length()) - 1.0);`)}else A.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&A.push(`transformed = clampToRange(transformed, ${Fm(m)});`),A.push(`return ${g!=null?g:"transformed"};`),l.push(`
|
185
|
+
${y} ${Lm}${t}(${c} value) {
|
186
|
+
${A.map(I=>` ${I}
|
187
187
|
`).join("")}
|
188
188
|
}`),l.push(`
|
189
|
-
${y} ${
|
190
|
-
return ${
|
189
|
+
${y} ${Om}${t}() {
|
190
|
+
return ${Lm}${t}(${i});
|
191
191
|
}`);const v=l.join(`
|
192
|
-
`);if(b&&t==r){const
|
192
|
+
`);if(b&&t==r){const I=je(e.type)||Dr(e.type)?u:2;f=s?`highp vec3 ${o};`:`mediump float ${o}[${I}];`}return{glsl:v,domainUniform:f}}function ol(t){if(!ce(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+Bm;if(t==-1/0)return""+-Bm;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function Zn(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(ol).join(", ")})`):(n="float",r=ol(t[0])),Object.assign(r,{type:n,numComponents:e})}function qS(t){const e=Bn(t).rgb();return Zn([e.r,e.g,e.b].map(n=>n/255))}function Fm(t){return Zn([t[0],Ue(t)])}function KS(t,...e){const n=[];for(const r of e)ce(r)?n.push(ol(r)):Xe(r)?n.push(Zn(r)):n.push(r);return`${t}(${n.join(", ")})`}function rs(t){return t=="index"||t=="locus"}function al(t,e){const r=t%2048,i=Math.round(t-r);return e!=null||(e=[]),e[0]=i,e[1]=r,e}function JS(t){return[...al(t[0]),t[1]-t[0]]}class $S{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(rl+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(!ce(this.size))throw new Error("The number of vertices must be defined!");let i,o,a=0;const s=new Float32Array(this.size*n);if(this.arrays[e]={data:s,numComponents:n},n==1){let c=0;const u=f=>{c=+f};i=()=>{s[a++]=c},o=u}else{let c=r!=null?r:[0];const u=r?f=>{}:f=>{c=f};switch(n){case 1:break;case 2:i=()=>{s[a++]=c[0],s[a++]=c[1]},o=u;break;case 3:i=()=>{s[a++]=c[0],s[a++]=c[1],s[a++]=c[2]},o=u;break;case 4:i=()=>{s[a++]=c[0],s[a++]=c[1],s[a++]=c[2],s[a++]=c[3]},o=u;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}];
|
193
193
|
`,n+=`p${i}();
|
194
194
|
`;const r=new Function("that",`${e}
|
195
195
|
|
@@ -197,7 +197,7 @@ ${y} ${wm}${t}() {
|
|
197
197
|
${n}
|
198
198
|
that.vertexCount++;
|
199
199
|
};
|
200
|
-
`);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
|
200
|
+
`);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 Gr=5,sl=127;function cl(t){const e=[];for(let p=0;p<=sl;p++)e.push(void 0);const n=new Map;for(const p of t.chars)p.id<=sl?e[p.id]=p:n.set(p.id,p);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(p){return(p<=sl?e[p]:n.get(p))||e[63]}function o(p){return i(p.charCodeAt(0))}const a=t.common.base,s=o("x"),c=o("X"),u=o("q"),f=s.height-Gr*2,l=c.height-Gr*2,d=u.height-s.height+u.yoffset-s.yoffset;function h(p,m=1){let y=0;for(let g=0;g<p.length;g++)y+=i(p.charCodeAt(g)).xadvance;return y/a*m}return{measureWidth:h,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:d,common:t.common}}function ul(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const Pm=2**31-1,eD=-(2**31);function tD(t,e,n,r=n){const i=new Int32Array(t);i.fill(Pm);let o=eD,a=!1;const s=new Int32Array(t),c=e[0],f=(e[1]-e[0])/t,l=(y,g)=>{const A=(y-c)/f,w=Math.floor(A);return ul(g&&w==A?w-1:w,0,t-1)};function d(y,g,A){g>o?o=g:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const w=n(y),C=l(w,!1);i[C]>g&&(i[C]=g),s[C]<A&&(s[C]=A)}function h(y,g,A){g>o?o=g:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const w=n(y),C=r(y),b=l(w,!1),v=l(C,!0);for(let x=b;x<=v;x++)i[x]>g&&(i[x]=g),s[x]<A&&(s[x]=A)}const p=(y,g,A=[0,0])=>{const w=l(y,!1),C=l(g,!0),b=i[w],v=Math.max(s[C],b);return A[0]=b,A[1]=v,A},m=()=>{for(let g=1;g<s.length;g++)s[g]<s[g-1]&&(s[g]=s[g-1]);let y=!0;for(let g=i.length-1;g>0;g--)y&&i[g]==Pm?(i[g]=s[g],y=!1):i[g-1]>i[g]&&(i[g-1]=i[g]);return p};if(d.getIndex=m,h.getIndex=m,!a)return n==r?d:h}class ao{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 $S(n);for(const[i,o]of Object.entries(this.variableEncoders)){const a=o.accessor,s=[0,0],c=rs(o.scale.type),u=o.indexer,f=u?l=>u(a(l)):c?l=>al(a(l),s):a;this.variableBuilder.addConverter(i,{f,numComponents:c?2:1,arrayReference:c?s:void 0})}this.lastOffset=0,this.rangeMap=new Dn([],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 a=n[o];this.variableBuilder.pushFromDatum(a),this.addToXIndex(a)}this.registerBatch(e)}prepareXIndexer(e,n=0,r=n+e.length){const i=()=>{this.addToXIndex=c=>{},this.xIndexer=void 0};if(!e.length||r-n<0){i();return}const o=c=>{var u;return c&&je((u=c.scale)==null?void 0:u.type)&&c},a=o(this.variableEncoders.x),s=o(this.variableEncoders.x2);if(a){const c=a.accessor,u=s?s.accessor:c,f=[c(e[n]),u(e[r-1])];if(f[1]>f[0]){this.xIndexer=tD(50,f,c,u);let l=this.variableBuilder.vertexCount;this.addToXIndex=d=>{let h=this.variableBuilder.vertexCount;this.xIndexer(d,l,h),l=h}}else i()}else i()}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class nD extends ao{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,[a,s]=this.visibleRange,c=d=>d.accessor||(h=>0),u=c(o.x),f=c(o.x2);this.prepareXIndexer(n,r,i);const l=[0,0];this.updateFrac(l);for(let d=r;d<i;d++){const h=n[d];let p=u(h),m=f(h);if(p>m&&([p,m]=[m,p]),m<a||p>s)continue;p<a&&(p=a),m>s&&(m=s),this.variableBuilder.updateFromDatum(h),l[0]=0,l[1]=0;const y=1;this.variableBuilder.pushAll();for(let g=0;g<=y;g++)l[0]=g/y,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(h)}this.registerBatch(e)}}class rD extends ao{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 a=n[o];this.variableBuilder.updateFromDatum(a),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const s=1;for(let c=0;c<=s;c++)this.updatePos(c/s),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(a)}this.registerBatch(e)}}class iD extends ao{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class oD extends ao{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 aD extends ao{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 s=e.text.channelDef;this.numberFormat=!at(s)&&s.format?le(s.format):c=>c,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 h;const o=this.properties.align||"left",a=(h=this.properties.logoLetters)!=null?h:!1,s=this.metadata.common.base,c=this.metadata.common.scaleH;let u=-Gr;switch(this.properties.baseline){case"top":u+=this.metrics.capHeight;break;case"middle":u+=this.metrics.capHeight/2;break;case"bottom":u-=this.metrics.descent;break}const f=this.encoders.text.accessor||this.encoders.text,l=[0,0];this.updateVertexCoord(l);const d=[0,0];this.updateTextureCoord(d),this.prepareXIndexer(n,r,i);for(let p=r;p<i;p++){const m=n[p],y=this.numberFormat(f(m)),g=ee(y)?y:y===null?"":""+y;if(g.length==0)continue;this.variableBuilder.updateFromDatum(m);const A=a?g.length:this.metrics.measureWidth(g);this.updateWidth(A);let w=o=="right"?-A:o=="center"?-A/2:0;if(!a){const x=this.metrics.getCharByCode(g.charCodeAt(0));w-=(x.width-x.xadvance)/s/2}let C=-.5,b=1,v=1;for(let x=0;x<g.length;x++){const E=this.metrics.getCharByCode(g.charCodeAt(x)),I=a?1:E.xadvance/s;if(E.id==32){w+=I;continue}a?(v=(E.width+Gr*2)/E.width,w=-v/2,b=(E.height+Gr*2)/E.height,C=-.5-Gr/E.height):(b=E.height/s,C=-(E.height+E.yoffset+u)/s,v=E.width/s);const L=E.x,T=E.y;l[0]=w,l[1]=C+b,d[0]=L/c,d[1]=T/c,this.variableBuilder.pushAll(),l[0]=w+v,l[1]=C+b,d[0]=(L+E.width)/c,d[1]=T/c,this.variableBuilder.pushAll(),l[0]=w,l[1]=C,d[0]=L/c,d[1]=(T+E.height)/c,this.variableBuilder.pushAll(),l[0]=w+v,l[1]=C+b,d[0]=(L+E.width)/c,d[1]=T/c,this.variableBuilder.pushAll(),l[0]=w,l[1]=C,d[0]=L/c,d[1]=(T+E.height)/c,this.variableBuilder.pushAll(),l[0]=w+v,l[1]=C,d[0]=(L+E.width)/c,d[1]=(T+E.height)/c,this.variableBuilder.pushAll(),w+=I}this.addToXIndex(m)}this.registerBatch(e)}}const zm=`#define PI 3.141593
|
201
201
|
|
202
202
|
uniform View {
|
203
203
|
/** Offset in "unit" units */
|
@@ -260,7 +260,7 @@ vec4 distanceToColor(float d, vec4 fill, vec4 stroke, float halfStrokeWidth) {
|
|
260
260
|
return fill * distanceToRatio(-d);
|
261
261
|
}
|
262
262
|
}
|
263
|
-
`,
|
263
|
+
`,sD=`const float inf = 1.0 / 0.0;
|
264
264
|
|
265
265
|
// Utils ------------
|
266
266
|
|
@@ -372,7 +372,7 @@ float scaleBandHp(vec2 value, vec3 domainExtent, vec2 range,
|
|
372
372
|
|
373
373
|
return dot(vec4(start, hi, lo, bandwidth), vec4(1.0, step, step, band));
|
374
374
|
}
|
375
|
-
`,
|
375
|
+
`,cD=`
|
376
376
|
/**
|
377
377
|
* Describes where a sample facet should be shown. Interpolating between the
|
378
378
|
* current and target positions/heights allows for transitioning between facet
|
@@ -479,7 +479,7 @@ float getSampleFacetHeight(vec2 pos) {
|
|
479
479
|
return facetPos.height;
|
480
480
|
}
|
481
481
|
}
|
482
|
-
`,
|
482
|
+
`,uD=`/*
|
483
483
|
* Based on concepts presented at:
|
484
484
|
* https://webglfundamentals.org/webgl/lessons/webgl-picking.html
|
485
485
|
* https://deck.gl/docs/developer-guide/custom-layers/picking
|
@@ -506,22 +506,22 @@ bool setupPicking() {
|
|
506
506
|
}
|
507
507
|
return false;
|
508
508
|
}
|
509
|
-
`,
|
510
|
-
|
509
|
+
`,lD=`flat in highp vec4 vPickingColor;
|
510
|
+
`,is=Symbol("cacheMap");function Hr(t,e,n){let r=co(t).get(e);return r===void 0&&(r=n(e),co(t).set(e,r)),r}function Rm(t,e){co(t).delete(e)}function so(t,e){const n=co(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);co(t).delete(e)}function jm(t){t[is]=new Map}function co(t){return t[is]||jm(t),t[is]}function fD(t,e,n,r){const i=ee(t)?t:t.name,o=!ee(t)&&t.extent||[0,1];if(n===void 0&&!ee(t)&&(n=t.count),i){const a=pu(i);if(ke(a)){const s=Gm(a,{extent:o,count:n});return uo(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},s,r)}else{if(Xe(a))return Um(a,e);throw new Error("Unknown scheme: "+i)}}}function dD(t,e="rgb",n,r){const i=Ma(t,ee(e)?e:e.type,ee(e)?void 0:e.gamma),o=Gm(i);return uo(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function hD(t,e,n,r){const i=Math.max(t.length,n||0),o=new Float32Array(i);for(let a=0;a<i;a++)o[a]=t[a%t.length];return uo(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function Um(t,e,n,r){const i=Hm(t,n);return uo(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function Gm(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=Ue(e)-i,a=Yt(r).map(s=>s/(r-1)).map(s=>i+s/o).map(t);return n&&a.reverse(),Hm(a)}function Hm(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=Bn(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 pD{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=QS(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(!Lr(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");Nm(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=zS(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;";Xe(n)&&(n=n.join(`
|
511
511
|
|
512
512
|
`));const o=this.gl,a=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let s=this._shaderCache.get(a);if(!s){const c=[r,i,n].join(`
|
513
513
|
|
514
|
-
`);s=o.createShader(e),o.shaderSource(s,c),o.compileShader(s),this._shaderCache.set(a,s)}return s}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,
|
514
|
+
`);s=o.createShader(e),o.shaderSource(s,c),o.compileShader(s),this._shaderCache.set(a,s)}return s}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,RS(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,a,s,c;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=(a=(o=this._sizeSource)==null?void 0:o.call(this))!=null?a:{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=(s=e.width)!=null?s:this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=(c=e.height)!=null?c: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(a,s){return tn(s.type)?s.domain().length:s.type=="threshold"?s.domain().length+1:s.type=="quantize"||s.type=="quantile"?a!=null?a:4:a}const o=e.channel;if(Yn(o)){const a=e.getScaleProps(),s=e.getScale();let c;if(a.scheme){let u=ee(a.scheme)?void 0:a.scheme.count;u=i(u,s),c=fD(a.scheme,this.gl,u,r)}else{const u=s.range();Da(s.type)?c=dD(u,a.interpolate,this.gl,r):c=Um(u,this.gl,s.domain().length,r)}this.rangeTextures.set(e,c)}else{const a=e.getScale();if(a.type==="ordinal"||Dr(a.type)){const s=Fa(o)?gp(o):u=>u,c=e.getScale().range();this.rangeTextures.set(e,hD(c.map(s),this.gl,a.domain().length,r))}}}}function mD(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((a,s)=>{const c=parseInt(a[1]),u=i[s+1],f=u?u.index:e.length,l=e.substring(a.index,f);return[c-1,l]}));return t.split(`
|
515
515
|
`).map((a,s)=>{const c=o.get(s);return`${s+1+n}: ${a}${c?`
|
516
516
|
|
517
517
|
^^^ ${c}`:""}`}).join(`
|
518
|
-
`)}function
|
519
|
-
Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:a}}return{program:r,getProgramErrors:i}}function
|
518
|
+
`)}function gD(t,e,n){const r=t.createProgram();t.attachShader(r,e),t.attachShader(r,n),t.linkProgram(r);function i(){let o,a;if(!t.getProgramParameter(r,t.LINK_STATUS)){o=t.getProgramInfoLog(r);for(const c of[e,n])t.getShaderParameter(c,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(c),a=mD(t.getShaderSource(c),o,0)+`
|
519
|
+
Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:a}}return{program:r,getProgramErrors:i}}function uo(t,e,n,r){return r?_p(t,r,n,e):r=io(t,{...e,src:n}),r}function yD(...t){const e={get(n,r,i){for(const o of t){const s=o()[r];if(s!==void 0)return s}},has(n,r,i){for(const o of t){const a=o();if(r in a)return!0}return!1}};return new Proxy({},e)}function vD(t){return ee(t)||ce(t)||Xo(t)}const bD="SAMPLE_FACET_UNIFORM",Qm="SAMPLE_FACET_TEXTURE";class lo{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 AD,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=yD(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 Hr(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=a=>{const s=this.properties[a];return vD(s)&&{value:s}},i=Object.fromEntries(this.getSupportedChannels().map(a=>[a,r(a)]).filter(a=>a[1].value!==void 0)),o=this.fixEncoding({...e,...i,...n});for(const a of Object.keys(o))this.getSupportedChannels().includes(a)||delete o[a];return o})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=Z4(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return Qm;if(this.unitView.getFacetAccessor())return bD}createAndLinkShaders(e,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let o=[];const a=this.getSampleFacetMode();a&&r.push(`#define ${a}`);for(const d of i){let h;if(d in this.encoding)h=d;else continue;const p=this.encoding[h];if(!!p)if(at(p))o.push(XS(h,p.value));else{const m=Je(p)&&p.resolutionChannel||h,y=this.unitView.getScaleResolution(m).getScale(),g=ZS(h,y,p);o.push(g.glsl),g.domainUniform&&this.domainUniforms.push(g.domainUniform)}}const s=this.domainUniforms.length?`layout(std140) uniform Domains {
|
520
520
|
`+this.domainUniforms.map(d=>` ${d}
|
521
521
|
`).join("")+`};
|
522
522
|
|
523
523
|
`:"",u=[`precision highp float;
|
524
|
-
`,...r,
|
524
|
+
`,...r,zm,sD,s,...o,cD,uD,e],f=[...r,zm,lD,n],l=this.gl;this.programStatus=gD(l,this.glHelper.compileShader(l.VERTEX_SHADER,u),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=AS(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=bm(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=bm(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),Ge(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(Zi(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):rs(r.scale.type)?al(+n.datum):+n.datum;Ge(this.programInfo,{[rl+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&&L3(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=F3(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 a;const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=jS(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[s,c]of Object.entries(this.domainUniformInfo.setters)){const u=s.substring(km.length),f=this.encoding[u],l=Je(f)&&f.resolutionChannel||u,d=this.unitView.getScaleResolution(l);if(d){const h=d.getScale();i.push(()=>{const p=tn(h.type)?[0,h.domain().length]:h.domain();c(rs(h.type)?JS(p):p)})}}i.push(()=>Am(r,this.programInfo,this.domainUniformInfo))}for(const[s,c]of Object.entries(this.encoding))if(Je(c)){const u=Je(c)&&c.resolutionChannel||s,f=this.unitView.getScaleResolution(u),l=n.rangeTextures.get(f);l&&i.push(()=>Ge(this.programInfo,{[il+s]:l}))}this.getSampleFacetMode()==Qm&&i.push(()=>{let s;for(const c of this.unitView.getAncestors())if(s=c.getSampleFacetTexture(),s)break;if(!s)throw new Error("No facet texture available. This is bug.");Ge(this.programInfo,{uSampleFacetTexture:s})});const o=((a=e.picking)!=null?a:!1)&&this.isPickingParticipant();return i.push(()=>wm(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 a=n.targetLocSize?n.targetLocSize.location:i,s=n.targetLocSize?n.targetLocSize.size:o;this.gl.uniform4f(r.location,i,o,a,s)}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(),a=o&&je(o.type),s=["index","locus"].includes(o==null?void 0:o.type)?-1:0,c=[0,0];i=l=>{if(a&&l.xIndex){const d=o.domain(),h=l.xIndex(d[0]+s,d[1],c),p=h[0],m=h[1]-p;m>0&&e(p,m)}else e(l.offset,l.count)};const u=this.rangeMap.get(n.facetId);return n.sampleFacetRenderingOptions?function(){u.count&&r.prepareSampleFacetRendering(n)&&i(u)}:function(){u.count&&i(u)}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,a=this.glHelper.getLogicalCanvasSize(),s=.5,c=(o.xOffset||0)+s,u=(o.yOffset||0)+s;let f,l=e;if(o.clip||n){let d=0,h=0,p;n?(l=o.clip?e.intersect(n):n,p=[e.width/l.width,e.height/l.height],h=Math.max(0,e.y2-n.y2),d=Math.max(0,e.x2-n.x2)):p=[1,1];const m=[e.x,a.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(w=>w*r),y=m.map(w=>Math.floor(w)),[g,A]=m.map((w,C)=>w-y[C]);i.viewport(...y),i.scissor(...y),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(c+d+g)/l.width,-(u+h-A)/l.height],uViewScale:p}}else i.viewport(0,0,a.width*r,a.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+c)/a.width,(a.height-e.y-u-e.height)/a.height],uViewScale:[e.width/a.width,e.height/a.height]};return wm(this.viewUniformInfo,{...f,uViewportSize:[e.width,e.height],uDevicePixelRatio:this.glHelper.dpr}),Am(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(e,n){}}class AD extends Dn{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 ll(t,e){var o;const n=$4(e);let r=t[e]&&{...t[e]},i=t[n]&&{...t[n]};if(!(at(r)||at(i))){if(r){if(!Je(t[e]))return;if(i){if(r.type!="quantitative"){const a=(1-(r.band||1))/2;r.band=a,i.band=-a}}else if(r.type=="quantitative")i={datum:0};else{i={...r};const a=(1-((o=r.band)!=null?o:1))/2;r.band=0+a,i.band=1-a}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function Vm(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke={resolutionChannel:"color",...t.color}),at(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity={resolutionChannel:"opacity",...t.opacity})}function Ym(t,e){at(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 wD extends lo{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 Hr(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&at(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return ll(e,"x"),ll(e,"y"),Vm(e,this.properties.filled),Ym(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!(at(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(VS,YS,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){var n,r,i,o;super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ge(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 nD({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(()=>Ur(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{oo(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,a=r.x2.accessor;if(i)return i.find(s=>n>=o(s)&&n<a(s))}}const xD=`/**
|
525
525
|
* The stroke should only grow inwards, e.g, the diameter/outline is not affected by the stroke width.
|
526
526
|
* Thus, a point that has a zero size has no visible stroke. This allows strokes to be used with
|
527
527
|
* geometric zoom, etc.
|
@@ -650,7 +650,7 @@ void main(void) {
|
|
650
650
|
|
651
651
|
setupPicking();
|
652
652
|
}
|
653
|
-
`,
|
653
|
+
`,CD=`const lowp vec4 white = vec4(1.0);
|
654
654
|
const lowp vec4 black = vec4(0.0, 0.0, 0.0, 1.0);
|
655
655
|
|
656
656
|
uniform bool uInwardStroke;
|
@@ -773,10 +773,10 @@ void main() {
|
|
773
773
|
}
|
774
774
|
}
|
775
775
|
|
776
|
-
|
777
|
-
`)+`return function propagate(datum) {${
|
776
|
+
`,Nt=1<<0,fn=1<<1,ED={};class se{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",Yt(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
|
777
|
+
`)+`return function propagate(datum) {${Yt(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
|
778
778
|
`)}}`)(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])+`
|
779
|
-
`+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():
|
779
|
+
`+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():ED}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 _m(t){return t.type=="file"}function SD(t){return t.type=="facet"}class Wm extends se{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 Xm(t,e,n){const r=new Wm({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const DD={};class MD extends lo{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(),...DD}}fixEncoding(e){return Vm(e,this.properties.filled),Ym(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(Xm(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(xD,CD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ge(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new iD({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 sc(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Ge(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Ur(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&oo(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}const TD=`// Line caps
|
780
780
|
const int BUTT = 0;
|
781
781
|
const int SQUARE = 1;
|
782
782
|
const int ROUND = 2;
|
@@ -865,7 +865,7 @@ void main(void) {
|
|
865
865
|
|
866
866
|
setupPicking();
|
867
867
|
}
|
868
|
-
`,
|
868
|
+
`,ID=`// Line ending
|
869
869
|
const int BUTT = 0;
|
870
870
|
const int SQUARE = 1;
|
871
871
|
const int ROUND = 2;
|
@@ -917,7 +917,7 @@ void main(void) {
|
|
917
917
|
fragColor = vPickingColor;
|
918
918
|
}
|
919
919
|
}
|
920
|
-
`;class
|
920
|
+
`;class ND extends lo{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&&Je(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Je(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=kD(this.properties.strokeDash);this.dashTexture=io(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(TD,ID)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ge(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 rD({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(()=>Ge(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Ur(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>oo(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function kD(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,a)=>o+a),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 LD=`uniform float uSagittaScaleFactor;
|
921
921
|
|
922
922
|
/** Make very small arcs visible */
|
923
923
|
uniform float uMinSagittaLength;
|
@@ -1028,7 +1028,7 @@ void main(void) {
|
|
1028
1028
|
|
1029
1029
|
setupPicking();
|
1030
1030
|
}
|
1031
|
-
`,
|
1031
|
+
`,OD=`in lowp vec4 vColor;
|
1032
1032
|
in float vSize;
|
1033
1033
|
in float vNormalLengthInPixels;
|
1034
1034
|
|
@@ -1046,7 +1046,7 @@ void main(void) {
|
|
1046
1046
|
fragColor = vPickingColor;
|
1047
1047
|
}
|
1048
1048
|
}
|
1049
|
-
`;class
|
1049
|
+
`;class BD extends lo{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(LD,OD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ge(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new oD({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:FD(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,a])=>[o,{...a,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[a,s]=o;s.buffer&&this.arrays[a].numComponents&&(s.offset=r*this.arrays[a].numComponents*4)}Ur(n,this.programInfo,this.bufferInfo),oo(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function FD(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}const PD=`uniform float uSdfNumerator;
|
1050
1050
|
|
1051
1051
|
uniform vec2 uD; // dx & dy
|
1052
1052
|
|
@@ -1292,7 +1292,7 @@ void main(void) {
|
|
1292
1292
|
|
1293
1293
|
setupPicking();
|
1294
1294
|
}
|
1295
|
-
`,
|
1295
|
+
`,zD=`uniform sampler2D uTexture;
|
1296
1296
|
|
1297
1297
|
in vec2 vTexCoord;
|
1298
1298
|
in float vEdgeFadeOpacity;
|
@@ -1323,7 +1323,7 @@ void main() {
|
|
1323
1323
|
fragColor = vPickingColor;
|
1324
1324
|
}
|
1325
1325
|
}
|
1326
|
-
`;const vD={left:-1,center:0,right:1},bD={top:-1,middle:0,bottom:1,alphabetic:1};class AD extends oo{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 Yi)this.properties.fitToBand&&fl(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(gD,yD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Qe(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[vD[e.align],bD[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 a=r.text.format?he(r.text.format):u=>u;for(const u of n){const f=a(i(u)),l=re(f)?f:f===null?"":""+f;o+=l&&l.length||0}const s=new UE({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});s.addBatches(e.facetBatches);const c=s.toArrays();this.rangeMap.migrateEntries(c.rangeMap),this.updateBufferInfo(c)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Qe(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Pr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>eo(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function ao(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let a=0,s=0;for(const p of t)a+=ns(p.px)+(dl(p)?0:n),s+=ns(p.grow);a-=n;const c=Math.max(0,e-a),u=r!==void 0?p=>Math.round(p*r)/r:p=>p,f=[],l=[],d=p=>{const m=f.length;if(!m)return;const y=(p?n:0)*(o?-1:1);h-=y;for(let g=0;g<m;g++)l.push({location:h+(g+1)/(m+1)*y,size:0});h+=y,f.length=0};let h=o?Math.max(e,a):0+i;if(t.length==1&&dl(t[0]))return[{location:h,size:0}];for(let p=0;p<t.length;p++){const m=t[p];if(dl(m))f.push(m);else{d(l.length>0);const y=ns(m.px)+(s?ns(m.grow)/s*c:0);o&&(h-=y),l.push({location:u(h),size:u(y)}),o?h-=n:h+=y+n}}return h+=o?n:-n,d(!1),l}function xD(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 ed=class{constructor(e,n){ke(this,Bo);this.width=e,this.height=n}addPadding(e){return xe(this,Bo,id).call(this,e.width,e.height)}subtractPadding(e){return xe(this,Bo,id).call(this,-e.width,-e.height)}};let Kn=ed;Bo=new WeakSet,id=function(e,n){var r,i;return new ed({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 so=Object.freeze({px:0,grow:0}),wD=new Kn(so,so);function dl(t){return!t.px&&!t.grow}function ns(t){return t||0}function CD(t){return t&&(le(t.px)||le(t.grow))}function SD(t){if(Gm(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(CD(t))return t;if(le(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}`)}function ED(t,e,n){return{get location(){const r=n();switch(r){case 0:return t.location;case 1:return e.location;default:return r*e.location+(1-r)*t.location}},get size(){const r=n();switch(r){case 0:return t.size;case 1:return e.size;default:return r*e.size+(1-r)*t.size}}}}function DD(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function MD(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function Rm(t,e){return e>=t.location&&e<t.location+t.size}class tt{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 tt(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new tt(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new tt(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):hl}static createFromRecord(e){return new tt(e.top,e.right,e.bottom,e.left)}static zero(){return hl}static createUniformPadding(e){return new tt(e,e,e,e)}}const hl=tt.createUniformPadding(0);Object.freeze(hl);const TD=/^([A-Za-z]+:)?\/\//;function ID(t,e){if(e&&TD.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const rs="VISIT_SKIP",Jn="VISIT_STOP",jm=t=>t;class Um{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={},Tm(this),this.opacityFunction=jm,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>tt.createFromConfig(this.spec.padding))}getOverhang(){return tt.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):wD)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(Gm(r)){const a=r.step,s=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(s){let c=0;if(rn(s.type))c=s.domain().length;else if(["locus","index"].includes(s.type)){const f=s.domain();c=He(f)-f[0]}else throw new Error(`Cannot use step-based size with "${s.type}" scale!`);const u=s;return c=uu(c,u.paddingInner(),u.paddingOuter()),{px:c*a,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&SD(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new Kn(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!==Jn)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===jm)&&(this.opacityFunction=ND(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r=T(T({},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 Yn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Dr(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 ID(()=>{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 re(e)?e:e.text}_cache(e,n){return zr(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":no(this,e);break;case"ancestors":for(const r of this.getAncestors())no(r,e);break;case"progeny":this.visit(r=>no(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function kD(t){return"unitsPerPixel"in t}function ND(t){const e=t.spec.opacity;if(e!==void 0){if(le(e))return n=>n*e;if(kD(e)){const n=o=>{var s;const a=(s=t.getScaleResolution(o))==null?void 0:s.getScale();if(["linear","index","locus"].includes(a==null?void 0:a.type))return a},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=tu().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const s=Wo(r.domain())/1e3;return i(s)*o}}}return n=>n}const Gm=t=>!!(t!=null&&t.step);class $n extends Um{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===Jn)return n;if(n!==rs){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Jn)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 $n)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,Jn}),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 is(t,e,n){if(n=n||[],t.some(a=>a===null)){if(t.every(a=>a===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(a,s)=>a===s||Rr(a)&&Rr(s)||Rr(a)&&s===!0||a===!0&&je(s),o=a=>{for(let s in a){const c=a[s];if(!n.includes(s)&&c!==void 0)if(r[s]!==void 0&&!i(r[s],c))console.warn(`Conflicting property ${s} of ${e}: (${JSON.stringify(r[s])} and ${JSON.stringify(a[s])}). Using ${JSON.stringify(r[s])}.`);else{const u=r[s];if(Rr(u))Rr(c)&&(r[s]=is([u,c],s));else if(Rr(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[s]=is([{},c],s)}else r[s]=c}}};for(const a of t)o(a);return r}function Rr(t){return je(t)&&!Array.isArray(t)}/*!
|
1326
|
+
`,RD={left:-1,center:0,right:1},jD={top:-1,middle:0,bottom:1,alphabetic:1};class UD extends lo{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 qi)this.properties.fitToBand&&ll(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(PD,zD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ge(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[RD[e.align],jD[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 a=r.text.format?le(r.text.format):u=>u;for(const u of n){const f=a(i(u)),l=ee(f)?f:f===null?"":""+f;o+=l&&l.length||0}const s=new aD({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});s.addBatches(e.facetBatches);const c=s.toArrays();this.rangeMap.migrateEntries(c.rangeMap),this.updateBufferInfo(c)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Ge(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Ur(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>oo(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function fo(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let a=0,s=0;for(const p of t)a+=os(p.px)+(fl(p)?0:n),s+=os(p.grow);a-=n;const c=Math.max(0,e-a),u=r!==void 0?p=>Math.round(p*r)/r:p=>p,f=[],l=[],d=p=>{const m=f.length;if(!m)return;const y=(p?n:0)*(o?-1:1);h-=y;for(let g=0;g<m;g++)l.push({location:h+(g+1)/(m+1)*y,size:0});h+=y,f.length=0};let h=o?Math.max(e,a):0+i;if(t.length==1&&fl(t[0]))return[{location:h,size:0}];for(let p=0;p<t.length;p++){const m=t[p];if(fl(m))f.push(m);else{d(l.length>0);const y=os(m.px)+(s?os(m.grow)/s*c:0);o&&(h-=y),l.push({location:u(h),size:u(y)}),o?h-=n:h+=y+n}}return h+=o?n:-n,d(!1),l}function GD(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 od=class{constructor(e,n){Me(this,Fo);this.width=e,this.height=n}addPadding(e){return be(this,Fo,cd).call(this,e.width,e.height)}subtractPadding(e){return be(this,Fo,cd).call(this,-e.width,-e.height)}};let qn=od;Fo=new WeakSet,cd=function(e,n){var r,i;return new od({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 ho=Object.freeze({px:0,grow:0}),HD=new qn(ho,ho);function fl(t){return!t.px&&!t.grow}function os(t){return t||0}function QD(t){return t&&(ce(t.px)||ce(t.grow))}function VD(t){if(Jm(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(QD(t))return t;if(ce(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}`)}function YD(t,e,n){return{get location(){const r=n();switch(r){case 0:return t.location;case 1:return e.location;default:return r*e.location+(1-r)*t.location}},get size(){const r=n();switch(r){case 0:return t.size;case 1:return e.size;default:return r*e.size+(1-r)*t.size}}}}function _D(t,e){const n=ce(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function WD(t,e){const n=ce(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function Zm(t,e){return e>=t.location&&e<t.location+t.size}class $e{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 $e(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new $e(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new $e(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):dl}static createFromRecord(e){return new $e(e.top,e.right,e.bottom,e.left)}static zero(){return dl}static createUniformPadding(e){return new $e(e,e,e,e)}}const dl=$e.createUniformPadding(0);Object.freeze(dl);const XD=/^([A-Za-z]+:)?\/\//;function ZD(t,e){if(e&&XD.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const as="VISIT_SKIP",Kn="VISIT_STOP",qm=t=>t;class Km{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={},jm(this),this.opacityFunction=qm,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>$e.createFromConfig(this.spec.padding))}getOverhang(){return $e.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):HD)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(Jm(r)){const a=r.step,s=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(s){let c=0;if(tn(s.type))c=s.domain().length;else if(["locus","index"].includes(s.type)){const f=s.domain();c=Ue(f)-f[0]}else throw new Error(`Cannot use step-based size with "${s.type}" scale!`);const u=s;return c=cu(c,u.paddingInner(),u.paddingOuter()),{px:c*a,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&VD(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new qn(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!==Kn)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===qm)&&(this.opacityFunction=KD(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 Vn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=kr(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 ZD(()=>{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 ee(e)?e:e.text}_cache(e,n){return Hr(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":so(this,e);break;case"ancestors":for(const r of this.getAncestors())so(r,e);break;case"progeny":this.visit(r=>so(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function qD(t){return"unitsPerPixel"in t}function KD(t){const e=t.spec.opacity;if(e!==void 0){if(ce(e))return n=>n*e;if(qD(e)){const n=o=>{var s;const a=(s=t.getScaleResolution(o))==null?void 0:s.getScale();if(["linear","index","locus"].includes(a==null?void 0:a.type))return a},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=eu().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const s=Zo(r.domain())/1e3;return i(s)*o}}}return n=>n}const Jm=t=>!!(t!=null&&t.step);class Jn extends Km{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===Kn)return n;if(n!==as){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Kn)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 Jn)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,Kn}),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 ss(t,e,n){if(n=n||[],t.some(a=>a===null)){if(t.every(a=>a===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(a,s)=>a===s||Qr(a)&&Qr(s)||Qr(a)&&s===!0||a===!0&&Re(s),o=a=>{for(let s in a){const c=a[s];if(!n.includes(s)&&c!==void 0)if(r[s]!==void 0&&!i(r[s],c))console.warn(`Conflicting property ${s} of ${e}: (${JSON.stringify(r[s])} and ${JSON.stringify(a[s])}). Using ${JSON.stringify(r[s])}.`);else{const u=r[s];if(Qr(u))Qr(c)&&(r[s]=ss([u,c],s));else if(Qr(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[s]=ss([{},c],s)}else r[s]=c}}};for(const a of t)o(a);return r}function Qr(t){return Re(t)&&!Array.isArray(t)}/*!
|
1327
1327
|
* Adapted from vega-encode:
|
1328
1328
|
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
|
1329
1329
|
*
|
@@ -1331,7 +1331,7 @@ void main() {
|
|
1331
1331
|
* All rights reserved.
|
1332
1332
|
*
|
1333
1333
|
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
1334
|
-
*/function
|
1334
|
+
*/function $m(t,e,n){return ce(e)&&n!=null&&(e=Math.min(e,~~(Zo(t.domain())/n)||1)),Re(e)&&(e.step,e=e.interval),e}function eg(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(nt(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(s){return s=t(s),i<=s&&s<=o}),n>0&&e.length>1){for(var a=[e[0],nt(e)];e.length>n&&e.length>=3;)e=e.filter(function(s,c){return!(c%2)});e.length<3&&(e=a)}return e}function JD(t,e){return t.bins?eg(t,$D(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function $D(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function eM(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?le(n):String;if(z0(t.type)){var i=nM(n);r=t.bins?i:tM(r,i)}return r}function tM(t,e){return function(n){return t(n)?e(n):""}}function nM(t){var e=_t(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return rM(le(e),le(".1f")(1)[1])}else return le(e)}function rM(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,a;if(i<0)return r;for(o=iM(r,i),a=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function iM(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}/*!
|
1335
1335
|
* Adapted from vega-encode:
|
1336
1336
|
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
|
1337
1337
|
*
|
@@ -1339,45 +1339,45 @@ void main() {
|
|
1339
1339
|
* All rights reserved.
|
1340
1340
|
*
|
1341
1341
|
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
1342
|
-
*/const jD="locus",UD="index";var GD=5;function HD(t){const e=t.type;return!t.bins&&(e===br||e===Mi||e===Ti)}function Vm(t){return Ue(t)&&![gt,UD,jD].includes(t)}function Ym(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var QD=Zo(["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 _m(t,e,n){n=Ym(n);for(const r in t)if(!QD[r]){if(r==="padding"&&Vm(e.type))continue;Be(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}KD(e,t,qD(e,t,WD(e,t,n)))}function VD(t,e){const n=YD(t),r=q(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return _m(t,i,e),i}function YD(t){var e=t.type,n="",r;return e===gt?gt+"-"+br:(_D(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?gt+"-":r===3?Ar+"-":""),(n+e||br).toLowerCase())}function _D(t){const e=t.type;return Ue(e)&&e!==v0&&e!==b0&&(t.scheme||t.range&&t.range.length&&t.range.every(re))}function WD(t,e,n){if(!t.domain)return 0;n=Ym(n);var r=XD(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,a=e.zero||e.zero===void 0&&HD(t),s,c;return i?(Vm(o)&&e.padding&&i[0]!==it(i)&&(i=ZD(o,i,e.range,e.padding,e.exponent,e.constant)),(a||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(s=(i=i.slice()).length-1||1,a&&(i[0]>0&&(i[0]=0),i[s]<0&&(i[s]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[s]=e.domainMax),e.domainMid!=null&&(c=e.domainMid,(c<i[0]||c>i[s])&&n.warn("Scale domainMid exceeds domain min or max.",c),i.splice(s,0,c))),t.domain(Wm(o,i,n)),o===fu&&t.unknown(e.domainImplicit?Lc:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&Hm(t,e.nice)||null),i.length):0}function XD(t,e,n){return e?(t.domain(Wm(t.type,e,n)),e.length):-1}function ZD(t,e,n,r,i,o){var a=Math.abs(it(n)-n[0]),s=a/(a-2*r),c=t===nn?fd(e,null,s):t===Ti?Zs(e,null,s,.5):t===Mi?Zs(e,null,s,i||1):t===xa?ev(e,null,s,o||1):Xs(e,null,s);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function Wm(t,e,n){if(D0(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: "+Xo(e))}return e}function qD(t,e,n){let r=e.bins;if(r&&!qe(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,a=r.stop==null?it(i):r.stop,s=r.step;s||ce("Scale bins parameter missing step property."),r=Wt(o,a+s,s)}return r?t.bins=r:t.bins&&delete t.bins,t.type===hu&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function KD(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=JD(r,e,n);else if(e.scheme&&(o=$D(r,e,n),Be(o))){if(t.interpolator)return t.interpolator(o);ce(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Ca(r))return t.interpolator(Sa(pl(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(M0(e.interpolate,e.interpolateGamma)):Be(t.round)?t.round(i):Be(t.rangeRound)&&t.interpolate(i?Ei:en),o&&t.range(pl(o,e.reverse))}function JD(t,e,n){t!==w0&&t!==du&&ce("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===du?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*uu(n,i,r)]}function $D(t,e,n){var r=e.schemeExtent,i,o;return qe(e.scheme)?o=Sa(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=mu(i),o||ce(`Unrecognized scheme name: ${e.scheme}`)),n=t===x0?n+1:t===hu?n-1:t===lu||t===A0?+e.schemeCount||GD:n,Ca(t)?Xm(o,r,e.reverse):Be(o)?Kx(Xm(o,r),n):t===fu?o:o.slice(0,n)}function Xm(t,e,n){return Be(t)&&(e||n)?qx(t,pl(e||[0,1],n)):t}function pl(t,e){return e?t.slice().reverse():t}const ml=he(",d");function eM(t){return t.chrom+":"+ml(Math.floor(t.pos+1))}function tM(t,e){return t.chrom+":"+ml(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+ml(Math.ceil(e.pos))}const nM="https://genomespy.app/data/genomes/";class rM{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=nM;try{this.setChromSizes(iM(await xi({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=U(T({},e[r]),{continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)});this.chromosomes.push(o);const a=o.name.replace(/^chr/i,"");for(const s of["chr"+a,"CHR"+a,"Chr"+a,o.number,""+o.number,a,o.name])this.cumulativeChromPositions.set(s,n),this.chromosomesByName.set(s,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=dr(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 tM(...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,a;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(a=r.pos)!=null?a:(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(s=>s===void 0)){const s=this.getChromosome(r);return s?[s.continuousStart,s.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),a=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,a)]}}}function iM(t){return bv(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function Zm(t){return je(t)&&"chrom"in t}function oM(t){return t.every(Zm)}class co extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof co&&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 gl extends co{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 qm extends co{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 Km extends qm{constructor(){super(),this.type="nominal"}}class aM extends co{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 Jm={quantitative:gl,index:gl,locus:gl,nominal:Km,ordinal:qm};function $m(t,e){if(t=="quantitative"&&sM(e)){const n=new aM(e);return n.type=t,n}else if(Jm[t]){const n=new Jm[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function sM(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function eg(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function cM(t){return--t*t*t+1}function uM(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function lM(t){return 1-uM(t)}const tg="quantitative",yl="ordinal",vl="nominal",ng="locus",fM="index";class dM{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 a;const r=Du(e,n),i=r.type,o=(a=r==null?void 0:r.scale)==null?void 0:a.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&&!Wi(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 zr(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Du(n.view,n.channel).scale).filter(n=>n!==void 0);return is(e,"scale",["domain"])})}getScaleProps(){return zr(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n=T(T({},this._getDefaultScaleProperties(this.type)),e);n.type||(n.type=hM(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:rn(n.type)&&(n.domain=new Km),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),this.channel=="y"&&rn(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),pM(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==ng?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>Wi(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>Wi(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){Mm(this,"scaleProps");const e=this.getScaleProps();_m(e,this._scale),Ue(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=VD(e);return this._scale=n,RA(n)&&n.genome(this.getGenome()),Ue(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()&&G0(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!np(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 a=[...o],s=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(s+=i.align()),i.type){case"linear":case"index":case"locus":a=K2(a,r||0),a=Xs(a,s,e);break;case"log":a=J2(a,r||0),a=fd(a,s,e);break;case"pow":case"sqrt":{const c=i;a=$2(a,r||0,c.exponent()),a=Zs(a,s,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(a=tv(a,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(c=>a[c]!=o[c])?(i.domain(a),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var s;if(_o(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(s=this.members[0])==null?void 0:s.view.context.animator,o=this.getScale(),a=o.domain();if(n>0&&a.length==2){const c=a[1]-a[0],u=a[0]+c/2,f=r[1]-r[0],l=r[0]+f/2,d=Wh([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*d.duration,easingFunction:eg,onUpdate:h=>{const[p,,m]=d(h);o.domain([p-m/2,p+m/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()?Wo(this._zoomExtent)/Wo(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(mM(n)&&qe(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),_i(n)?r.nice=!this.isExplicitDomain():_n(n)?r.scheme=e==vl?"tableau10":e==yl?"blues":"viridis":La(n)?r.range=ip(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 Zm(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&oM(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 hM(t,e){if(e==fM||e==ng){if(np(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][[vl,yl,tg].indexOf(e)]:e==tg?"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 pM(t,e){_i(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Ue(t.type)&&(t.clamp=!0)}function mM(t){return je(t)}function bl(...t){for(const e of t)if(e!==void 0)return e}class gM{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=He(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 zr(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:is(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var s;const a=Du(o.view,o.channel);if(!ct(a))return{member:o,explicitTitle:bl((s=a.axis)==null?void 0:s.title,a.title),implicitTitle:bl(Yn(a)?a.field:void 0,Mu(a)?a.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var a;if(Wi(o.member.channel)&&!o.explicitTitle){const s=Dr(o.member.channel);return((a=n.find(c=>c.member.view==o.member.view&&c.member.channel==s))==null?void 0:a.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>bl(o.explicitTitle,o.implicitTitle)).filter(re));return i.size?[...i].join(", "):null}}class rg extends Um{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class Ot extends $n{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,a)=>{if(Sl(o)||Cl(o))return n.createView(o,this,"layer"+a);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 ig{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 a=0;a<n;a++){const s=i*n+a;s<this.n&&o.push(s)}}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 a=0;a<r;a++){const s=a*n+i;s<this.n&&o.push(s)}}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 Pt(t){return()=>t}const _t=class{static create(e,n,r,i){return new _t(Pt(e),Pt(n),Pt(r),Pt(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"?Pt(i):typeof i=="function"?i:this._passThrough(r)};return new _t(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new _t(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 _t(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 _t(()=>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 _t(Pt(this.x),Pt(this.y),Pt(this.width),Pt(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 pn=_t;U2(pn,"ZERO",_t.create(0,0,0,0));function og(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class er extends ue{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function ag(t){var n,r;const e=T({},t.format);if((n=e.type)!=null||(e.type=AM(t)&&yM(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 yM(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const os=t=>typeof t!="object"?vM:bM,vM=t=>({data:t}),bM=t=>t;function AM(t){return"url"in t}function xM(t){return"dynamicCallbackSource"in t}class sg extends er{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=os(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const cg="chromosome_ticks_and_labels",ug={x:"width",y:"height"};function Al(t){return t=="x"?"y":"x"}const xl={x:["bottom","top"],y:["left","right"]},lg=Object.fromEntries(Object.entries(xl).map(([t,e])=>e.map(n=>[n,t])).flat(1));function tr(t){return lg[t]}class fg extends Ot{constructor(e,n,r,i){const o=n=="locus",a=T(T(T({},o?SM:dg),CM(n,e)),e);if(super(o?EM(a):hg(a),r,i,`axis_${e.orient}`),this.axisProps=a,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new sg(()=>this.ticks),o){const s=tr(this.axisProps.orient),c=this.getScaleResolution(s).getGenome();this.findChildByName(cg).getDynamicDataSource=()=>new sg(()=>c.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return lg[this.axisProps.orient]=="x"?new Kn(n,e):new Kn(e,n)}getPerpendicularSize(){return wl(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=tr(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(G0(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=wM(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[ug[tr(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function wl(t){const e=tr(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 wM(t,e,n,r=[]){const i=s=>25+60*og(100,700,s);let o=le(t.tickCount)?t.tickCount:Math.round(n/i(n));o=Hm(e,o,t.tickMinStep);const a=t.values?Qm(e,t.values,o):LD(e,o);if(dw(a,r,s=>s,s=>s.value))return r;{const s=OD(e,o,t.format);return a.map(c=>({value:c,label:s(c)}))}}const dg={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 CM(t,e){var s;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",a=(s=e.labelAngle)!=null?s:(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(a)>30?(i=a>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:a,labelBaseline:o}}function hg(t){const e=U(T({},t),{extent:wl(t)}),n=tr(e.orient),r=Al(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,a=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),s=()=>({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"}}}),c=()=>({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)}}}),u=()=>({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 d={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&d.layer.push(c()),e.labels&&d.layer.push(s()),d},l={[ug[Al(tr(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(a()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(u()),l}const SM=U(T({},dg),{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 EM(t){const e=U(T({},t),{extent:wl(t)}),n=tr(e.orient),r=Al(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}}),a=()=>{let u;switch(e.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:T({type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1},u),encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let s;switch(e.orient){case"bottom":case"top":s={};break;case"left":s={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":s={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:s={}}const c=hg(T(T({},t),s));if(t.chromTicks||t.chromLabels){const u={name:cg,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&u.layer.push(o()),t.chromLabels){u.layer.push(a());let f;c.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(d=>d.name=="labels").forEach(d=>{f=d.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}c.layer.push(u)}return c}const pg={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"},DM={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},MM={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},TM={start:0,middle:.5,end:1},IM={start:"left",middle:"center",end:"right"};function kM(t){var u,f,l;if(!t)return;const e=re(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n=(u={"track-title":DM,overlay:MM}[e.style])!=null?u:{},r=T(T(T({},pg),n),e);let i={},o={x:0,y:0};const a=TM[(f=r.anchor)!=null?f:"middle"];switch(r.orient){case"top":o={x:a,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-a},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:a,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:a},i={baseline:"alphabetic",angle:-90};break}const s=T(T(T(T({},pg),i),n),e),c={xOffset:0,yOffset:0};switch(r.orient){case"top":c.yOffset=-s.offset;break;case"right":c.xOffset=s.offset;break;case"bottom":c.yOffset=s.offset;break;case"left":c.xOffset=-s.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:U(T(T({type:"text",tooltip:null,clip:!1},o),c),{text:s.text,align:(l=s.align)!=null?l:IM[s.anchor],angle:s.angle,baseline:s.baseline,dx:s.dx,dy:s.dy,color:s.color,font:s.font,size:s.fontSize,fontStyle:s.fontStyle,fontWeight:s.fontWeight})}}function mg(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:a,y:s}=t.point;if(r){const c=r.mark.encoders;c.x&&!c.x2&&(a=+c.x(r.datum)*e.width+e.x),c.y&&!c.y2&&(s=(1-+c.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:a,y:s,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:a,y:s,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 a=c=>{n({x:o.clientX,y:o.clientY,xDelta:c.clientX-o.clientX,yDelta:c.clientY-o.clientY,zDelta:0}),o=c},s=c=>{document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",a,!1)}}class gg extends $n{constructor(n,r,i,o,a){var s;super(n,r,i,o);ke(this,Oo);ke(this,Dt);ke(this,Us);ke(this,Gs);ke(this,lr);ke(this,Po);ke(this,Fo);ke(this,zo);ke(this,Hs);ke(this,ti,1/0);ke(this,ni,10);ke(this,rt,[]);ke(this,ri,0);this.spec=n,Uo(this,ni,(s=n.spacing)!=null?s:10),Uo(this,ti,a),Uo(this,rt,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){var r;(r=n.parent)!=null||(n.parent=this),se(this,rt).push(xe(this,Oo,od).call(this,n)),G2(this,ri)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=se(this,rt).findIndex(o=>o.view==n);if(i>=0)se(this,rt)[i]=xe(this,Oo,od).call(this,r);else throw new Error("Not my child view!")}get children(){return se(this,rt).map(n=>n.view)}get childCount(){return se(this,rt).length}onScalesResolved(){super.onScalesResolved(),xe(this,Gs,Q2).call(this)}*[Symbol.iterator](){for(const n of se(this,rt)){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=xe(this,lr,Go).call(this,"column"),r=xe(this,lr,Go).call(this,"row");return!n.length||!r.length?tt.zero():new tt(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new Kn(xe(this,Fo,sd).call(this,"column"),xe(this,Fo,sd).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){var u;if(!this.isVisible())return;r=r.shrink(this.getPadding()),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},a=ao(xe(this,Po,ad).call(this,"column"),r.width,o),s=ao(xe(this,Po,ad).call(this,"row"),r.height,o),c=new ig(se(this,Dt,Sn).length,(u=se(this,ti))!=null?u:1/0);for(const[f,l]of se(this,Dt,Sn).entries()){const{view:d,axes:h,background:p,title:m}=l,[y,g]=c.getCellCoords(f),x=a[xe(this,zo,cd).call(this,"column",y)],A=s[xe(this,zo,cd).call(this,"row",g)],C=d.getSize(),b=d.getPadding().subtract(d.getOverhang()),v=x.location+b.left,w=A.location+b.top,E=(C.width.grow?x.size:C.width.px)-b.width,k=(C.height.grow?A.size:C.height.px)-b.height,L=new pn(()=>r.x+v,()=>r.y+w,()=>E,()=>k);l.coords=L,p==null||p.render(n,L,i);const I=BM(d);I&&d.render(n,L,i);for(const[P,Z]of Object.entries(h)){const Q=Z.axisProps;let fe;const Se=Z.getPerpendicularSize();P=="bottom"?fe=L.translate(0,L.height+Q.offset).modify({height:Se}):P=="top"?fe=L.translate(0,-Se-Q.offset).modify({height:Se}):P=="left"?fe=L.translate(-Se-Q.offset,0).modify({width:Se}):P=="right"&&(fe=L.translate(L.width+Q.offset,0).modify({width:Se})),Z.render(n,fe)}I||d.render(n,L,i),m==null||m.render(n,L,U(T({},i),{clipRect:void 0}))}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=se(this,Dt,Sn).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof Ae||i instanceof Ot)&&mg(n,r.coords,o=>xe(this,Hs,V2).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}ti=new WeakMap,ni=new WeakMap,rt=new WeakMap,ri=new WeakMap,Oo=new WeakSet,od=function(n){var i;const r={view:n,background:void 0,axes:{},coords:pn.ZERO};if(n instanceof Ae||n instanceof Ot){const o=(i=n.spec)==null?void 0:i.view;if((o==null?void 0:o.fill)||(o==null?void 0:o.stroke)){const s=new Ae(NM(o),this.context,n,"background"+se(this,ri));s.blockEncodingInheritance=!0,r.background=s}const a=kM(n.spec.title);if(a){const s=new Ae(a,this.context,n,"title"+se(this,ri));s.blockEncodingInheritance=!0,r.title=s}}return r},Dt=new WeakSet,Sn=function(){return se(this,rt).filter(n=>n.view.isVisible())},Us=new WeakSet,H2=function(){var n;return new ig(se(this,Dt,Sn).length,(n=se(this,ti))!=null?n:1/0)},Gs=new WeakSet,Q2=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of se(this,rt)){const{view:r,axes:i}=n,o=(a,s,c)=>{var f;const u=a.getAxisProps();if(u!==null){if(!u.orient){for(const l of xl[s])if(!i[l]){u.orient=l;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if((f=u.title)!=null||(u.title=a.getTitle()),!xl[s].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${s}"!`);if(i[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);i[u.orient]=new fg(u,a.scaleResolution.type,this.context,c)}};if(r instanceof Ae||r instanceof Ot)for(const a of["x","y"]){const s=r.resolutions.axis[a];!s||o(s,a,r)}if(r instanceof Ot){for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&u.orient&&o(c,s,a)}for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&!u.orient&&o(c,s,a)}}}},lr=new WeakSet,Go=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(a,s)=>a.map(c=>{const u=se(this,Dt,Sn)[c].axes[r[s]];if(u)return Math.max(u.getPerpendicularSize()+u.axisProps.offset,0);const f=se(this,Dt,Sn)[c].view.getOverhang();return n=="column"?s?f.right:f.left:s?f.bottom:f.top}).reduce((c,u)=>Math.max(c,u),0);return se(this,Us,H2)[n=="column"?"colIndices":"rowIndices"].map(a=>({axisBefore:o(a,0),axisAfter:o(a,1),view:xD(a.map(s=>se(this,Dt,Sn)[s].view.getSize()[i]))}))},Po=new WeakSet,ad=function(n){const r=xe(this,lr,Go).call(this,n),i=[];i.push(so);for(const[o,a]of r.entries())o>0&&i.push({px:se(this,ni),grow:0}),(o==0||this.wrappingFacet)&&i.push(so),i.push({px:a.axisBefore,grow:0}),i.push(a.view),i.push({px:a.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(so);return i},Fo=new WeakSet,sd=function(n){var a,s;let r=0,i=0;const o=xe(this,lr,Go).call(this,n);for(const[c,u]of o.entries())c>0&&(i+=se(this,ni)),(c==0||this.wrappingFacet)&&(i+=0),i+=u.axisBefore,i+=(a=u.view.px)!=null?a:0,r+=(s=u.view.grow)!=null?s:0,i+=u.axisAfter,(c==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},zo=new WeakSet,cd=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Hs=new WeakSet,V2=function(n,r,i){for(const[o,a]of Object.entries(LM(r))){if(a.size<=0)continue;const s=n.normalizePoint(i.x,i.y),c=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),u={x:c.x-s.x,y:c.y-s.y};for(const f of a)f.zoom(2**i.zDelta,o=="y"?1-s[o]:s[o],o=="x"?u.x:-u.y)}this.context.animator.requestRender()};function NM(t){return{configurableVisibility:!1,data:{values:[{}]},mark:U(T({fill:null,strokeWidth:1,fillOpacity:t.fill?1:0},t),{type:"rect",clip:!1,tooltip:null})}}function LM(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 BM(t){let e=!0;return t.visit(n=>{n instanceof Ae&&e&&(e=n.mark.properties.clip)}),e}class jr extends gg{constructor(e,n,r,i){super(e,n,r,i,Dl(e)?e.columns:El(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=Dl(e)?e.concat:El(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class OM{constructor(){this.types=[];const e=n=>(r,i,o,a)=>{var s;return new n(r,i,o,(s=r.name)!=null?s:a)};this.addViewType(PM,e(rg)),this.addViewType(Sl,e(Ot)),this.addViewType(Cl,e(Ae)),this.addViewType(El,e(jr)),this.addViewType(FM,e(jr)),this.addViewType(Dl,e(jr))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(a=>a.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 Cl(t){return"mark"in t&&(re(t.mark)||je(t.mark))}function Sl(t){return"layer"in t&&je(t.layer)}function yg(t){return t&&(Cl(t)||Sl(t))&&"aggregateSamples"in t}function PM(t){return"import"in t}function El(t){return"vconcat"in t&&qe(t.vconcat)}function FM(t){return"hconcat"in t&&qe(t.hconcat)}function Dl(t){return"concat"in t&&qe(t.concat)}const zM={point:sD,rect:tD,rule:lD,link:pD,text:AD};class Ae extends $n{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=zM[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(!et(o))continue;let a=Dr((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!_i(a))continue;let s=this;for(;s.parent instanceof $n&&["shared","excluded"].includes(s.parent.getConfiguredOrDefaultResolution(a,e))&&s.getConfiguredOrDefaultResolution(a,e)!="excluded";)s=s.parent;s.resolutions[e][a]||(s.resolutions[e][a]=e=="scale"?new dM(a):new gM(a)),_i(i)?s.resolutions[e][a].pushUnitView(this,i):e=="scale"&&s.resolutions[e][a].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(Wi(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!et(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 a=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return $m((o=n.type)!=null?o:"nominal",a.fromComplexInterval(r))}}extractDataDomain(e){var s;const r=(s=this._validateDomainQuery(e).type)!=null?s:"nominal",i=c=>{let u;const f=this.mark.encoding[c];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(u=$m(r),l.constant)u.extend(l({}));else{const d=this.getCollector();d!=null&&d.completed&&d.visitData(h=>u.extend(l(h)))}}return u};let o=i(e);const a=Tu[e];if(a){const c=i(a);c&&o.extendAll(c)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return Yi.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(yg(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&He(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding=U(T({},(n=r.encoding)!=null?n:{}),{sample:null});const o=this.context.createView(r,this,"summaryView");o.getFacetFields=a=>{},this.sampleAggregateViews.push(o)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*Ml(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of Ml(r,[...e,n]))yield i;else yield[[...e,n],r]}class Ur extends ue{constructor(e){super(),this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Mn([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){oD(e)&&(this._data=[],this.facetBatches.set($e(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?dd(e.field,e.order):void 0,r=a=>{n&&a.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const a=this.params.groupby.map(c=>J(c)),s=ai(this._data,...a);this.facetBatches.clear();for(const[c,u]of Ml(s))this.facetBatches.set(c,u)}for(const a of this.facetBatches.values())r(a);if(this.children.length)for(const[a,s]of this.facetBatches.entries()){if(a){const c={type:"facet",facetId:a};for(const u of this.children)u.beginBatch(c)}for(const c of s)this._propagate(c)}super.complete();for(const a of this.observers)a(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 uo{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 a=(o<<1)+1;const s=a+1;let c=this.ids[a],u=this.values[a];const f=this.values[s];if(s<this.length&&f<u&&(a=s,c=this.ids[s],u=f),u>=r)break;this.ids[o]=c,this.values[o]=u,o=a}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 RM extends ue{get behavior(){return Bt}constructor(e){super(),this.params=e,this.startAccessor=J(e.start),this.endAccessor=J(e.end),this.chromAccessor=e.chrom?J(e.chrom):n=>{},this.weightAccessor=e.weight?J(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 uo}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,a=this.chromAccessor,s=this.weightAccessor;let c,u,f,l=0,d;const h=this.ends;h.clear();const p=(y,g,x)=>{if(y==g)return;let A=!1;c&&(c[e]===x?(c[n]=g,A=!0):c[e]!=0&&this._propagate(c)),A||(c=this.createSegment(y,g,x,f))},m=()=>{let y;for(;(y=h.peekValue())!==void 0;)p(d,y,l),d=y,l-=h.pop();d=void 0,c&&(this._propagate(c),c=void 0)};this.handle=y=>{const g=i(y);let x;for(;(x=h.peekValue())!==void 0&&x<g;)p(d,x,l),d=x,l-=h.pop();if(r){let C=a(y);C!==u&&(m(),f=C,u=f)}d!==void 0&&p(d,g,l),d=g;const A=s(y);l+=A,h.push(A,o(y))},this.complete=()=>{m(),super.complete()}}}function jM(t,e,n=0,r=t.length){const i=new uo,o=r-n;let a;for(a=0;a<e&&a<o;a++)i.push(a,t[n+a]);for(;a<o;a++){const u=t[n+a];u>=i.peekValue()&&(i.push(a,u),i.pop())}const s=[];let c;for(;(c=i.pop())!==void 0;)s.push(n+c);return s.reverse()}class UM{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 GM extends ue{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=J(this.params.pos),this.posBisector=qo(this.posAccessor),this.scoreAccessor=J(this.params.score),this.widthAccessor=J(this.params.width),this.laneAccessor=this.params.lane?J(this.params.lane):a=>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",a=>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 UM(200));this.schedule(),super.complete()}_filterAndPropagate(){var a;super.reset();const e=this.resolution.getScale(),n=(a=this.resolution.members[0].view.coords)==null?void 0:a[this.channel=="x"?"width":"height"];if(!n)return;for(const s of this.reservationMaps.values())s.reset();const r=e.domain(),i=70,o=jM(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const s of o){const c=this._data[s],u=e(this.posAccessor(c))*n,f=this.widthAccessor(c)/2+this.padding;this.reservationMaps.get(this.laneAccessor(c)).reserve(u-f,u+f)&&this._propagate(c)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class HM extends ue{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=Eu(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const QM="0".charCodeAt(0);function*VM(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-QM}yield r}class YM extends ue{get behavior(){return Bt}constructor(e){var a,s;super();const n=J((a=e.exons)!=null?a:"exons"),r=J((s=e.start)!=null?s:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=c=>{let u=r(c),f=u,l=!0;const d=n(c);for(const h of VM(d)){if(l)f=u+h;else{u=f+h;const p=Object.assign({},c);p[i]=f,p[o]=u,this._propagate(p)}l=!l}}}}class _M extends ue{get behavior(){return Bt}constructor(e){super();const n=$e(e.field).map(o=>J(o)),r=$e(e.separator),i=$e(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(c=>!c(o)))return;const a=n.map((c,u)=>c(o).split(r[u]));WM(a,o);const s=a[0].length;for(let c=0;c<s;c++){const u=Object.assign({},o);for(let f=0;f<n.length;f++)u[i[f]]=a[f][c];this._propagate(u)}}}}function WM(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 XM extends ue{get behavior(){return hn}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Eu(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class vg extends ue{get behavior(){return hn}constructor(e,n){var p;super();const r=(p=e.channel)!=null?p:"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=J(e.chrom),a=$e(e.pos).map(m=>J(m)),s=$e(e.as);if(a.length!=s.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=$e(e.offset);let u;if(c.length==0)u=new Array(a.length).fill(0);else if(c.length==1)u=new Array(a.length).fill(c[0]);else if(c.length==a.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",s.map((m,y)=>`datum[${JSON.stringify(m)}] = chromOffset + +posAccessors[${y}](datum) - ${u[y]};`).join(`
|
1343
|
-
`));let l,d=0;const h=m=>{if(m!==l){if(d=i.cumulativeChromPositions.get(m),d===void 0)throw new Error("Unknown chromosome/contig: "+m);l=m}return d};this.handle=m=>{f(m,h(o(m)),a),this._propagate(m)}}}var bg={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 ZM extends ue{get behavior(){return hn}constructor(e){super();const n=ul(bg),r=J(e.field),i=e.as,o=e.fontSize;this.handle=a=>{const s=r(a);s!==void 0?a[i]=n.measureWidth(s,o):a[i]=0,this._propagate(a)}}}const qM=65536;class KM extends ue{get behavior(){return hn}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=le(e.spacing)?e.spacing:1,i=J(e.start),o=J(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const a=new Float64Array(qM),s=J(e.preference),c=e.preferredOrder;let u=1/0;this.handle=f=>{const l=i(f);l<u&&a.fill(-1/0),u=l;const d=c.indexOf(s(f));let h=-1;if(d>=0&&a[d]<l)h=d;else{const p=i(f);for(h=0;h<a.length&&!(a[h]<p);h++);if(h>=a.length)throw new Error("Out of lanes!")}a[h]=o(f)+r,f[n]=h,this._propagate(f)}}else{const a=new uo,s=new uo;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;a.length&&(a.peekValue()<=l||l<c);){const h=a.pop();s.push(h,h)}c=l;let d=s.pop();d===void 0&&(d=u++),f[n]=d,this._propagate(f),a.push(d,o(f)+r)}}}}class JM extends ue{get behavior(){return Bt}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=>J(i)),r=e.as?e.as:n.map(V);this.handle=i=>{const o={};for(let a=0;a<n.length;a++)o[r[a]]=n[a](i);this._propagate(o)}}}class $M extends ue{get behavior(){return hn}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=J(e.field);this.handle=o=>{const a=i(o);if(re(a)){const s=a.match(n);if(s){if(s.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let c=0;c<r.length;c++)o[r[c]]=s[c+1]}else if(e.skipInvalidInput)for(let c=0;c<r.length;c++)o[r[c]]=void 0;else throw new Error(`"${a}" 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 a}, field content: "${a}".`);this._propagate(o)}}}class e8 extends ue{get behavior(){return Bt}constructor(e){super();const n=$e(e.columnRegex).map(d=>new RegExp(d)),r=$e(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 a,s,c;const u=d=>{var y;const h=Object.keys(d),p=new Map;for(const[g,x]of n.entries())for(const A of h){const C=(y=x.exec(A))==null?void 0:y[1];if(C!==void 0){let b=p.get(C);b||(b=[],p.set(C,b)),b[g]=A}}a=[...p.entries()],s=h.filter(g=>!n.some(x=>x.test(g))&&!(i&&i.test(g)));const m=[...s.map(g=>JSON.stringify(g)+": datum["+JSON.stringify(g)+"]"),JSON.stringify(o)+": sampleId",...r.map(g=>JSON.stringify(g)+": null")];c=new Function("datum","sampleId",`return {
|
1342
|
+
*/const oM="locus",aM="index";var sM=5;function cM(t){const e=t.type;return!t.bins&&(e===Er||e===Li||e===Oi)}function tg(t){return je(t)&&![ht,aM,oM].includes(t)}function ng(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var uM=Ko(["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 rg(t,e,n){n=ng(n);for(const r in t)if(!uM[r]){if(r==="padding"&&tg(e.type))continue;ke(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}yM(e,t,gM(e,t,hM(e,t,n)))}function lM(t,e){const n=fM(t),r=W(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return rg(t,i,e),i}function fM(t){var e=t.type,n="",r;return e===ht?ht+"-"+Er:(dM(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?ht+"-":r===3?Sr+"-":""),(n+e||Er).toLowerCase())}function dM(t){const e=t.type;return je(e)&&e!==I0&&e!==N0&&(t.scheme||t.range&&t.range.length&&t.range.every(ee))}function hM(t,e,n){if(!t.domain)return 0;n=ng(n);var r=pM(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,a=e.zero||e.zero===void 0&&cM(t),s,c;return i?(tg(o)&&e.padding&&i[0]!==nt(i)&&(i=mM(o,i,e.range,e.padding,e.exponent,e.constant)),(a||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(s=(i=i.slice()).length-1||1,a&&(i[0]>0&&(i[0]=0),i[s]<0&&(i[s]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[s]=e.domainMax),e.domainMid!=null&&(c=e.domainMid,(c<i[0]||c>i[s])&&n.warn("Scale domainMid exceeds domain min or max.",c),i.splice(s,0,c))),t.domain(ig(o,i,n)),o===lu&&t.unknown(e.domainImplicit?kc:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&$m(t,e.nice)||null),i.length):0}function pM(t,e,n){return e?(t.domain(ig(t.type,e,n)),e.length):-1}function mM(t,e,n,r,i,o){var a=Math.abs(nt(n)-n[0]),s=a/(a-2*r),c=t===en?md(e,null,s):t===Oi?Zs(e,null,s,.5):t===Li?Zs(e,null,s,i||1):t===Ea?wb(e,null,s,o||1):Xs(e,null,s);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function ig(t,e,n){if(z0(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: "+qo(e))}return e}function gM(t,e,n){let r=e.bins;if(r&&!Xe(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,a=r.stop==null?nt(i):r.stop,s=r.step;s||oe("Scale bins parameter missing step property."),r=Yt(o,a+s,s)}return r?t.bins=r:t.bins&&delete t.bins,t.type===du&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function yM(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=vM(r,e,n);else if(e.scheme&&(o=bM(r,e,n),ke(o))){if(t.interpolator)return t.interpolator(o);oe(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Da(r))return t.interpolator(Ma(hl(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(R0(e.interpolate,e.interpolateGamma)):ke(t.round)?t.round(i):ke(t.rangeRound)&&t.interpolate(i?Ni:Jt),o&&t.range(hl(o,e.reverse))}function vM(t,e,n){t!==O0&&t!==fu&&oe("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===fu?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*cu(n,i,r)]}function bM(t,e,n){var r=e.schemeExtent,i,o;return Xe(e.scheme)?o=Ma(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=pu(i),o||oe(`Unrecognized scheme name: ${e.scheme}`)),n=t===L0?n+1:t===du?n-1:t===uu||t===k0?+e.schemeCount||sM:n,Da(t)?og(o,r,e.reverse):ke(o)?yx(og(o,r),n):t===lu?o:o.slice(0,n)}function og(t,e,n){return ke(t)&&(e||n)?gx(t,hl(e||[0,1],n)):t}function hl(t,e){return e?t.slice().reverse():t}const pl=le(",d");function AM(t){return t.chrom+":"+pl(Math.floor(t.pos+1))}function wM(t,e){return t.chrom+":"+pl(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+pl(Math.ceil(e.pos))}const xM="https://genomespy.app/data/genomes/";class CM{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=xM;try{this.setChromSizes(EM(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 a=o.name.replace(/^chr/i,"");for(const s of["chr"+a,"CHR"+a,"Chr"+a,o.number,""+o.number,a,o.name])this.cumulativeChromPositions.set(s,n),this.chromosomesByName.set(s,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=mr(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 wM(...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,a;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(a=r.pos)!=null?a:(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(s=>s===void 0)){const s=this.getChromosome(r);return s?[s.continuousStart,s.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),a=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,a)]}}}function EM(t){return Ub(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function ag(t){return Re(t)&&"chrom"in t}function SM(t){return t.every(ag)}class po extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof po&&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 ml extends po{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 sg extends po{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 cg extends sg{constructor(){super(),this.type="nominal"}}class DM extends po{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 ug={quantitative:ml,index:ml,locus:ml,nominal:cg,ordinal:sg};function lg(t,e){if(t=="quantitative"&&MM(e)){const n=new DM(e);return n.type=t,n}else if(ug[t]){const n=new ug[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function MM(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function fg(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function TM(t){return--t*t*t+1}function IM(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function NM(t){return 1-IM(t)}const dg="quantitative",gl="ordinal",yl="nominal",hg="locus",kM="index";class LM{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 a;const r=Su(e,n),i=r.type,o=(a=r==null?void 0:r.scale)==null?void 0:a.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&&!Ji(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 Hr(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Su(n.view,n.channel).scale).filter(n=>n!==void 0);return ss(e,"scale",["domain"])})}getScaleProps(){return Hr(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=OM(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:tn(n.type)&&(n.domain=new cg),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),this.channel=="y"&&tn(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),BM(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==hg?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>Ji(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>Ji(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){Rm(this,"scaleProps");const e=this.getScaleProps();rg(e,this._scale),je(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=lM(e);return this._scale=n,iw(n)&&n.genome(this.getGenome()),je(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()&&J0(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!hp(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 a=[...o],s=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(s+=i.align()),i.type){case"linear":case"index":case"locus":a=vb(a,r||0),a=Xs(a,s,e);break;case"log":a=bb(a,r||0),a=md(a,s,e);break;case"pow":case"sqrt":{const c=i;a=Ab(a,r||0,c.exponent()),a=Zs(a,s,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(a=xb(a,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(c=>a[c]!=o[c])?(i.domain(a),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var s;if(Xo(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(s=this.members[0])==null?void 0:s.view.context.animator,o=this.getScale(),a=o.domain();if(n>0&&a.length==2){const c=a[1]-a[0],u=a[0]+c/2,f=r[1]-r[0],l=r[0]+f/2,d=i0([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*d.duration,easingFunction:fg,onUpdate:h=>{const[p,,m]=d(h);o.domain([p-m/2,p+m/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()?Zo(this._zoomExtent)/Zo(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(FM(n)&&Xe(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),Ki(n)?r.nice=!this.isExplicitDomain():Yn(n)?r.scheme=e==yl?"tableau10":e==gl?"blues":"viridis":Fa(n)?r.range=mp(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 ag(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&SM(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 OM(t,e){if(e==kM||e==hg){if(hp(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][[yl,gl,dg].indexOf(e)]:e==dg?"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 BM(t,e){Ki(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&je(t.type)&&(t.clamp=!0)}function FM(t){return Re(t)}function vl(...t){for(const e of t)if(e!==void 0)return e}class PM{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=Ue(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 Hr(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:ss(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var s;const a=Su(o.view,o.channel);if(!at(a))return{member:o,explicitTitle:vl((s=a.axis)==null?void 0:s.title,a.title),implicitTitle:vl(Vn(a)?a.field:void 0,Du(a)?a.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var a;if(Ji(o.member.channel)&&!o.explicitTitle){const s=kr(o.member.channel);return((a=n.find(c=>c.member.view==o.member.view&&c.member.channel==s))==null?void 0:a.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>vl(o.explicitTitle,o.implicitTitle)).filter(ee));return i.size?[...i].join(", "):null}}class pg extends Km{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class kt extends Jn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,a)=>{if(Cl(o)||xl(o))return n.createView(o,this,"layer"+a);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 mg{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 a=0;a<n;a++){const s=i*n+a;s<this.n&&o.push(s)}}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 a=0;a<r;a++){const s=a*n+i;s<this.n&&o.push(s)}}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 Lt(t){return()=>t}const Vt=class{static create(e,n,r,i){return new Vt(Lt(e),Lt(n),Lt(r),Lt(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"?Lt(i):typeof i=="function"?i:this._passThrough(r)};return new Vt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new Vt(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 Vt(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 Vt(()=>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 Vt(Lt(this.x),Lt(this.y),Lt(this.width),Lt(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 dn=Vt;sb(dn,"ZERO",Vt.create(0,0,0,0));function gg(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class $n extends se{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function yg(t){var n,r;const e={...t.format};if((n=e.type)!=null||(e.type=UM(t)&&zM(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 zM(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const cs=t=>typeof t!="object"?RM:jM,RM=t=>({data:t}),jM=t=>t;function UM(t){return"url"in t}function GM(t){return"dynamicCallbackSource"in t}class vg extends $n{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=cs(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const bg="chromosome_ticks_and_labels",Ag={x:"width",y:"height"};function bl(t){return t=="x"?"y":"x"}const Al={x:["bottom","top"],y:["left","right"]},wg=Object.fromEntries(Object.entries(Al).map(([t,e])=>e.map(n=>[n,t])).flat(1));function er(t){return wg[t]}class xg extends kt{constructor(e,n,r,i){const o=n=="locus",a={...o?VM:Cg,...QM(n,e),...e};if(super(o?YM(a):Eg(a),r,i,`axis_${e.orient}`),this.axisProps=a,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new vg(()=>this.ticks),o){const s=er(this.axisProps.orient),c=this.getScaleResolution(s).getGenome();this.findChildByName(bg).getDynamicDataSource=()=>new vg(()=>c.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return wg[this.axisProps.orient]=="x"?new qn(n,e):new qn(e,n)}getPerpendicularSize(){return wl(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=er(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(J0(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=HM(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[Ag[er(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function wl(t){const e=er(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 HM(t,e,n,r=[]){const i=s=>25+60*gg(100,700,s);let o=ce(t.tickCount)?t.tickCount:Math.round(n/i(n));o=$m(e,o,t.tickMinStep);const a=t.values?eg(e,t.values,o):JD(e,o);if(Lx(a,r,s=>s,s=>s.value))return r;{const s=eM(e,o,t.format);return a.map(c=>({value:c,label:s(c)}))}}const Cg={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 QM(t,e){var s;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",a=(s=e.labelAngle)!=null?s:(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(a)>30?(i=a>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:a,labelBaseline:o}}function Eg(t){const e={...t,extent:wl(t)},n=er(e.orient),r=bl(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,a=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),s=()=>({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"}}}),c=()=>({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)}}}),u=()=>({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 d={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&d.layer.push(c()),e.labels&&d.layer.push(s()),d},l={[Ag[bl(er(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(a()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(u()),l}const VM={...Cg,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 YM(t){const e={...t,extent:wl(t)},n=er(e.orient),r=bl(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}}),a=()=>{let u;switch(e.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:u={}}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,...u},encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let s;switch(e.orient){case"bottom":case"top":s={};break;case"left":s={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":s={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:s={}}const c=Eg({...t,...s});if(t.chromTicks||t.chromLabels){const u={name:bg,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&u.layer.push(o()),t.chromLabels){u.layer.push(a());let f;c.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(d=>d.name=="labels").forEach(d=>{f=d.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}c.layer.push(u)}return c}const Sg={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"},_M={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},WM={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},XM={start:0,middle:.5,end:1},ZM={start:"left",middle:"center",end:"right"};function qM(t){var u,f,l;if(!t)return;const e=ee(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n=(u={"track-title":_M,overlay:WM}[e.style])!=null?u:{},r={...Sg,...n,...e};let i={},o={x:0,y:0};const a=XM[(f=r.anchor)!=null?f:"middle"];switch(r.orient){case"top":o={x:a,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-a},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:a,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:a},i={baseline:"alphabetic",angle:-90};break}const s={...Sg,...i,...n,...e},c={xOffset:0,yOffset:0};switch(r.orient){case"top":c.yOffset=-s.offset;break;case"right":c.xOffset=s.offset;break;case"bottom":c.yOffset=s.offset;break;case"left":c.xOffset=-s.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...c,text:s.text,align:(l=s.align)!=null?l:ZM[s.anchor],angle:s.angle,baseline:s.baseline,dx:s.dx,dy:s.dy,color:s.color,font:s.font,size:s.fontSize,fontStyle:s.fontStyle,fontWeight:s.fontWeight}}}function Dg(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:a,y:s}=t.point;if(r){const c=r.mark.encoders;c.x&&!c.x2&&(a=+c.x(r.datum)*e.width+e.x),c.y&&!c.y2&&(s=(1-+c.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:a,y:s,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:a,y:s,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 a=c=>{n({x:o.clientX,y:o.clientY,xDelta:c.clientX-o.clientX,yDelta:c.clientY-o.clientY,zDelta:0}),o=c},s=c=>{document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",a,!1)}}class Mg extends Jn{constructor(n,r,i,o,a){var s;super(n,r,i,o);Me(this,Po);Me(this,Ct);Me(this,Gs);Me(this,Hs);Me(this,hr);Me(this,zo);Me(this,Ro);Me(this,jo);Me(this,Qs);Me(this,ai,1/0);Me(this,si,10);Me(this,tt,[]);Me(this,ci,0);this.spec=n,Ho(this,si,(s=n.spacing)!=null?s:10),Ho(this,ai,a),Ho(this,tt,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){var r;(r=n.parent)!=null||(n.parent=this),ie(this,tt).push(be(this,Po,ud).call(this,n)),cb(this,ci)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=ie(this,tt).findIndex(o=>o.view==n);if(i>=0)ie(this,tt)[i]=be(this,Po,ud).call(this,r);else throw new Error("Not my child view!")}get children(){return ie(this,tt).map(n=>n.view)}get childCount(){return ie(this,tt).length}onScalesResolved(){super.onScalesResolved(),be(this,Hs,lb).call(this)}*[Symbol.iterator](){for(const n of ie(this,tt)){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=be(this,hr,Qo).call(this,"column"),r=be(this,hr,Qo).call(this,"row");return!n.length||!r.length?$e.zero():new $e(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new qn(be(this,Ro,fd).call(this,"column"),be(this,Ro,fd).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){var u;if(!this.isVisible())return;r=r.shrink(this.getPadding()),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},a=fo(be(this,zo,ld).call(this,"column"),r.width,o),s=fo(be(this,zo,ld).call(this,"row"),r.height,o),c=new mg(ie(this,Ct,xn).length,(u=ie(this,ai))!=null?u:1/0);for(const[f,l]of ie(this,Ct,xn).entries()){const{view:d,axes:h,background:p,title:m}=l,[y,g]=c.getCellCoords(f),A=a[be(this,jo,dd).call(this,"column",y)],w=s[be(this,jo,dd).call(this,"row",g)],C=d.getSize(),b=d.getPadding().subtract(d.getOverhang()),v=A.location+b.left,x=w.location+b.top,E=(C.width.grow?A.size:C.width.px)-b.width,I=(C.height.grow?w.size:C.height.px)-b.height,L=new dn(()=>r.x+v,()=>r.y+x,()=>E,()=>I);l.coords=L,p==null||p.render(n,L,i);const T=$M(d);T&&d.render(n,L,i);for(const[B,H]of Object.entries(h)){const U=H.axisProps;let we;const Ne=H.getPerpendicularSize();B=="bottom"?we=L.translate(0,L.height+U.offset).modify({height:Ne}):B=="top"?we=L.translate(0,-Ne-U.offset).modify({height:Ne}):B=="left"?we=L.translate(-Ne-U.offset,0).modify({width:Ne}):B=="right"&&(we=L.translate(L.width+U.offset,0).modify({width:Ne})),H.render(n,we)}T||d.render(n,L,i),m==null||m.render(n,L,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=ie(this,Ct,xn).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof ye||i instanceof kt)&&Dg(n,r.coords,o=>be(this,Qs,fb).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}ai=new WeakMap,si=new WeakMap,tt=new WeakMap,ci=new WeakMap,Po=new WeakSet,ud=function(n){var i;const r={view:n,background:void 0,axes:{},coords:dn.ZERO};if(n instanceof ye||n instanceof kt){const o=(i=n.spec)==null?void 0:i.view;if((o==null?void 0:o.fill)||(o==null?void 0:o.stroke)){const s=new ye(KM(o),this.context,n,"background"+ie(this,ci));s.blockEncodingInheritance=!0,r.background=s}const a=qM(n.spec.title);if(a){const s=new ye(a,this.context,n,"title"+ie(this,ci));s.blockEncodingInheritance=!0,r.title=s}}return r},Ct=new WeakSet,xn=function(){return ie(this,tt).filter(n=>n.view.isVisible())},Gs=new WeakSet,ub=function(){var n;return new mg(ie(this,Ct,xn).length,(n=ie(this,ai))!=null?n:1/0)},Hs=new WeakSet,lb=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of ie(this,tt)){const{view:r,axes:i}=n,o=(a,s,c)=>{var f;const u=a.getAxisProps();if(u!==null){if(!u.orient){for(const l of Al[s])if(!i[l]){u.orient=l;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if((f=u.title)!=null||(u.title=a.getTitle()),!Al[s].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${s}"!`);if(i[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);i[u.orient]=new xg(u,a.scaleResolution.type,this.context,c)}};if(r instanceof ye||r instanceof kt)for(const a of["x","y"]){const s=r.resolutions.axis[a];!s||o(s,a,r)}if(r instanceof kt){for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&u.orient&&o(c,s,a)}for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&!u.orient&&o(c,s,a)}}}},hr=new WeakSet,Qo=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(a,s)=>a.map(c=>{const u=ie(this,Ct,xn)[c].axes[r[s]];if(u)return Math.max(u.getPerpendicularSize()+u.axisProps.offset,0);const f=ie(this,Ct,xn)[c].view.getOverhang();return n=="column"?s?f.right:f.left:s?f.bottom:f.top}).reduce((c,u)=>Math.max(c,u),0);return ie(this,Gs,ub)[n=="column"?"colIndices":"rowIndices"].map(a=>({axisBefore:o(a,0),axisAfter:o(a,1),view:GD(a.map(s=>ie(this,Ct,xn)[s].view.getSize()[i]))}))},zo=new WeakSet,ld=function(n){const r=be(this,hr,Qo).call(this,n),i=[];i.push(ho);for(const[o,a]of r.entries())o>0&&i.push({px:ie(this,si),grow:0}),(o==0||this.wrappingFacet)&&i.push(ho),i.push({px:a.axisBefore,grow:0}),i.push(a.view),i.push({px:a.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(ho);return i},Ro=new WeakSet,fd=function(n){var a,s;let r=0,i=0;const o=be(this,hr,Qo).call(this,n);for(const[c,u]of o.entries())c>0&&(i+=ie(this,si)),(c==0||this.wrappingFacet)&&(i+=0),i+=u.axisBefore,i+=(a=u.view.px)!=null?a:0,r+=(s=u.view.grow)!=null?s:0,i+=u.axisAfter,(c==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},jo=new WeakSet,dd=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Qs=new WeakSet,fb=function(n,r,i){for(const[o,a]of Object.entries(JM(r))){if(a.size<=0)continue;const s=n.normalizePoint(i.x,i.y),c=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),u={x:c.x-s.x,y:c.y-s.y};for(const f of a)f.zoom(2**i.zDelta,o=="y"?1-s[o]:s[o],o=="x"?u.x:-u.y)}this.context.animator.requestRender()};function KM(t){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:t.fill?1:0,...t,type:"rect",clip:!1,tooltip:null}}}function JM(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 $M(t){let e=!0;return t.visit(n=>{n instanceof ye&&e&&(e=n.mark.properties.clip)}),e}class Vr extends Mg{constructor(e,n,r,i){super(e,n,r,i,Sl(e)?e.columns:El(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=Sl(e)?e.concat:El(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class e8{constructor(){this.types=[];const e=n=>(r,i,o,a)=>{var s;return new n(r,i,o,(s=r.name)!=null?s:a)};this.addViewType(t8,e(pg)),this.addViewType(Cl,e(kt)),this.addViewType(xl,e(ye)),this.addViewType(El,e(Vr)),this.addViewType(n8,e(Vr)),this.addViewType(Sl,e(Vr))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(a=>a.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 xl(t){return"mark"in t&&(ee(t.mark)||Re(t.mark))}function Cl(t){return"layer"in t&&Re(t.layer)}function Tg(t){return t&&(xl(t)||Cl(t))&&"aggregateSamples"in t}function t8(t){return"import"in t}function El(t){return"vconcat"in t&&Xe(t.vconcat)}function n8(t){return"hconcat"in t&&Xe(t.hconcat)}function Sl(t){return"concat"in t&&Xe(t.concat)}const r8={point:MD,rect:wD,rule:ND,link:BD,text:UD};class ye extends Jn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=r8[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(!Je(o))continue;let a=kr((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!Ki(a))continue;let s=this;for(;s.parent instanceof Jn&&["shared","excluded"].includes(s.parent.getConfiguredOrDefaultResolution(a,e))&&s.getConfiguredOrDefaultResolution(a,e)!="excluded";)s=s.parent;s.resolutions[e][a]||(s.resolutions[e][a]=e=="scale"?new LM(a):new PM(a)),Ki(i)?s.resolutions[e][a].pushUnitView(this,i):e=="scale"&&s.resolutions[e][a].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(Ji(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Je(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 a=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return lg((o=n.type)!=null?o:"nominal",a.fromComplexInterval(r))}}extractDataDomain(e){var s;const r=(s=this._validateDomainQuery(e).type)!=null?s:"nominal",i=c=>{let u;const f=this.mark.encoding[c];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(u=lg(r),l.constant)u.extend(l({}));else{const d=this.getCollector();d!=null&&d.completed&&d.visitData(h=>u.extend(l(h)))}}return u};let o=i(e);const a=Mu[e];if(a){const c=i(a);c&&o.extendAll(c)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return qi.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(Tg(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&Ue(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=a=>{},this.sampleAggregateViews.push(o)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*Dl(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of Dl(r,[...e,n]))yield i;else yield[[...e,n],r]}class Yr extends se{constructor(e){super(),this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Dn([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){SD(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?gd(e.field,e.order):void 0,r=a=>{n&&a.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const a=this.params.groupby.map(c=>Z(c)),s=fi(this._data,...a);this.facetBatches.clear();for(const[c,u]of Dl(s))this.facetBatches.set(c,u)}for(const a of this.facetBatches.values())r(a);if(this.children.length)for(const[a,s]of this.facetBatches.entries()){if(a){const c={type:"facet",facetId:a};for(const u of this.children)u.beginBatch(c)}for(const c of s)this._propagate(c)}super.complete();for(const a of this.observers)a(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 mo{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 a=(o<<1)+1;const s=a+1;let c=this.ids[a],u=this.values[a];const f=this.values[s];if(s<this.length&&f<u&&(a=s,c=this.ids[s],u=f),u>=r)break;this.ids[o]=c,this.values[o]=u,o=a}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 i8 extends se{get behavior(){return Nt}constructor(e){super(),this.params=e,this.startAccessor=Z(e.start),this.endAccessor=Z(e.end),this.chromAccessor=e.chrom?Z(e.chrom):n=>{},this.weightAccessor=e.weight?Z(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 mo}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,a=this.chromAccessor,s=this.weightAccessor;let c,u,f,l=0,d;const h=this.ends;h.clear();const p=(y,g,A)=>{if(y==g)return;let w=!1;c&&(c[e]===A?(c[n]=g,w=!0):c[e]!=0&&this._propagate(c)),w||(c=this.createSegment(y,g,A,f))},m=()=>{let y;for(;(y=h.peekValue())!==void 0;)p(d,y,l),d=y,l-=h.pop();d=void 0,c&&(this._propagate(c),c=void 0)};this.handle=y=>{const g=i(y);let A;for(;(A=h.peekValue())!==void 0&&A<g;)p(d,A,l),d=A,l-=h.pop();if(r){let C=a(y);C!==u&&(m(),f=C,u=f)}d!==void 0&&p(d,g,l),d=g;const w=s(y);l+=w,h.push(w,o(y))},this.complete=()=>{m(),super.complete()}}}function o8(t,e,n=0,r=t.length){const i=new mo,o=r-n;let a;for(a=0;a<e&&a<o;a++)i.push(a,t[n+a]);for(;a<o;a++){const u=t[n+a];u>=i.peekValue()&&(i.push(a,u),i.pop())}const s=[];let c;for(;(c=i.pop())!==void 0;)s.push(n+c);return s.reverse()}class a8{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 s8 extends se{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=Z(this.params.pos),this.posBisector=Jo(this.posAccessor),this.scoreAccessor=Z(this.params.score),this.widthAccessor=Z(this.params.width),this.laneAccessor=this.params.lane?Z(this.params.lane):a=>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",a=>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 a8(200));this.schedule(),super.complete()}_filterAndPropagate(){var a;super.reset();const e=this.resolution.getScale(),n=(a=this.resolution.members[0].view.coords)==null?void 0:a[this.channel=="x"?"width":"height"];if(!n)return;for(const s of this.reservationMaps.values())s.reset();const r=e.domain(),i=70,o=o8(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const s of o){const c=this._data[s],u=e(this.posAccessor(c))*n,f=this.widthAccessor(c)/2+this.padding;this.reservationMaps.get(this.laneAccessor(c)).reserve(u-f,u+f)&&this._propagate(c)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class c8 extends se{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=Eu(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const u8="0".charCodeAt(0);function*l8(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-u8}yield r}class f8 extends se{get behavior(){return Nt}constructor(e){var a,s;super();const n=Z((a=e.exons)!=null?a:"exons"),r=Z((s=e.start)!=null?s:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=c=>{let u=r(c),f=u,l=!0;const d=n(c);for(const h of l8(d)){if(l)f=u+h;else{u=f+h;const p=Object.assign({},c);p[i]=f,p[o]=u,this._propagate(p)}l=!l}}}}class d8 extends se{get behavior(){return Nt}constructor(e){super();const n=Ke(e.field).map(o=>Z(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(c=>!c(o)))return;const a=n.map((c,u)=>c(o).split(r[u]));h8(a,o);const s=a[0].length;for(let c=0;c<s;c++){const u=Object.assign({},o);for(let f=0;f<n.length;f++)u[i[f]]=a[f][c];this._propagate(u)}}}}function h8(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 p8 extends se{get behavior(){return fn}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Eu(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Ig extends se{get behavior(){return fn}constructor(e,n){var p;super();const r=(p=e.channel)!=null?p:"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=Z(e.chrom),a=Ke(e.pos).map(m=>Z(m)),s=Ke(e.as);if(a.length!=s.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=Ke(e.offset);let u;if(c.length==0)u=new Array(a.length).fill(0);else if(c.length==1)u=new Array(a.length).fill(c[0]);else if(c.length==a.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",s.map((m,y)=>`datum[${JSON.stringify(m)}] = chromOffset + +posAccessors[${y}](datum) - ${u[y]};`).join(`
|
1343
|
+
`));let l,d=0;const h=m=>{if(m!==l){if(d=i.cumulativeChromPositions.get(m),d===void 0)throw new Error("Unknown chromosome/contig: "+m);l=m}return d};this.handle=m=>{f(m,h(o(m)),a),this._propagate(m)}}}const Ng={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 m8 extends se{get behavior(){return fn}constructor(e){super();const n=cl(Ng),r=Z(e.field),i=e.as,o=e.fontSize;this.handle=a=>{const s=r(a);s!==void 0?a[i]=n.measureWidth(s,o):a[i]=0,this._propagate(a)}}}const g8=65536;class y8 extends se{get behavior(){return fn}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=ce(e.spacing)?e.spacing:1,i=Z(e.start),o=Z(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const a=new Float64Array(g8),s=Z(e.preference),c=e.preferredOrder;let u=1/0;this.handle=f=>{const l=i(f);l<u&&a.fill(-1/0),u=l;const d=c.indexOf(s(f));let h=-1;if(d>=0&&a[d]<l)h=d;else{const p=i(f);for(h=0;h<a.length&&!(a[h]<p);h++);if(h>=a.length)throw new Error("Out of lanes!")}a[h]=o(f)+r,f[n]=h,this._propagate(f)}}else{const a=new mo,s=new mo;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;a.length&&(a.peekValue()<=l||l<c);){const h=a.pop();s.push(h,h)}c=l;let d=s.pop();d===void 0&&(d=u++),f[n]=d,this._propagate(f),a.push(d,o(f)+r)}}}}class v8 extends se{get behavior(){return Nt}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=>Z(i)),r=e.as?e.as:n.map(ae);this.handle=i=>{const o={};for(let a=0;a<n.length;a++)o[r[a]]=n[a](i);this._propagate(o)}}}class b8 extends se{get behavior(){return fn}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=Z(e.field);this.handle=o=>{const a=i(o);if(ee(a)){const s=a.match(n);if(s){if(s.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let c=0;c<r.length;c++)o[r[c]]=s[c+1]}else if(e.skipInvalidInput)for(let c=0;c<r.length;c++)o[r[c]]=void 0;else throw new Error(`"${a}" 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 a}, field content: "${a}".`);this._propagate(o)}}}class A8 extends se{get behavior(){return Nt}constructor(e){super();const n=Ke(e.columnRegex).map(d=>new RegExp(d)),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 a,s,c;const u=d=>{var y;const h=Object.keys(d),p=new Map;for(const[g,A]of n.entries())for(const w of h){const C=(y=A.exec(w))==null?void 0:y[1];if(C!==void 0){let b=p.get(C);b||(b=[],p.set(C,b)),b[g]=w}}a=[...p.entries()],s=h.filter(g=>!n.some(A=>A.test(g))&&!(i&&i.test(g)));const m=[...s.map(g=>JSON.stringify(g)+": datum["+JSON.stringify(g)+"]"),JSON.stringify(o)+": sampleId",...r.map(g=>JSON.stringify(g)+": null")];c=new Function("datum","sampleId",`return {
|
1344
1344
|
`+m.join(`,
|
1345
1345
|
`)+`
|
1346
|
-
};`)},f=d=>{a||u(d);for(const[h,p]of a){const m=c(d,h);for(let y=0;y<p.length;y++)m[r[y]]=d[p[y]];this._propagate(m)}},l=d=>{u(d),f(d),this.handle=f};this.handle=l,this.beginBatch=d=>{
|
1347
|
-
`)+" };");return n.properties=e,n}class
|
1348
|
-
Reason: ${s.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(a=i.match(/^[^?#]*\//))==null?void 0:a[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function kg(t){const e=[];t.visit(n=>{if(n instanceof rg)return e.push(n),rs});for(const n of e){const r=n.context,i=await E8(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await kg(o)}}function Ng(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...Pv(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const D8=t=>!/^(layer|concat)\d+$/.test(t);class Lg{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Bg extends Lg{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=a=>()=>{e&&a()},i=a=>()=>{e&&n&&a()},o=ai(this.buffer,a=>a.mark);for(const[a,s]of o.entries()){if(!a.isReady())continue;this.batch.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.batch.push(...a.prepareRender(this.globalOptions).map(u=>r(u)));let c;for(const u of s){const f=u.coords;f.equals(c)||this.batch.push(r(()=>{n=a.setViewport(f,u.clipRect)})),this.batch.push(i(u.callback)),c=u.coords}}}}class M8 extends Lg{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 T8{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 I8{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 k8=t=>new Promise(e=>setTimeout(e,t));function as(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const a=performance.now(),s=a+(t.duration||1e3),c=typeof t.from=="number"?t.from:0,u=typeof t.to=="number"?t.to:1,f=t.easingFunction||(m=>m),l=m=>(m-a)/(s-a),d=m=>m*(u-c)+c,h=m=>Math.max(0,Math.min(1,m)),p=m=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(d(f(h(l(m))))),m<s?e(p):(t.onUpdate(d(f(1))),i()))};e(p)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):k8(t.delay).then(r):r()}class N8{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 as(T({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function Og(){const t=e=>e;return t.invert=e=>e,t.copy=Og,t.invertRange=()=>{},t}class L8{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new rM(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}}}var B8="data:image/png;base64,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";const O8={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class P8{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Mn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:ul(bg),texture:this._createTextureNow(B8)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(re(r)&&(r=O8[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=z8(r,n),o=this.fontRepository+Pg(n.family)+"/"+i.replace(/\.\w+/,""),a=this._createTexture(o+".png"),s=this._loadFont(o+".json");e.texture=await a,e.metrics=await s}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=>ul(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Pg(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=>F8(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)=>{$i(n,{src:e,min:n.LINEAR},(o,a,s)=>{o?i(o):r(a)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,a)=>{r=$i(n,{src:e,min:n.LINEAR},(s,c,u)=>{s?a(s):o(c)})});return this._promises.push(i),r}}function Pg(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function F8(t){const e=t.split(`
|
1349
|
-
`),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 a=o[1];r[a]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const a=o[1];r[a]=+o[2]}}return n}function
|
1350
|
-
`))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 j8{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=lv([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 U8(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 ss(t,e,n=!0){let r,i=a=>{};return function(...s){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...s))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const Fg=new Map;async function G8(t,e,n){var o;const r=t.symbol;let i=(o=Fg.get(r))!=null?o:await V8(t.symbol);return i?(Fg.set(r,i),D`<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 H8(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(a=>a.json())).result[r]:null}const Q8=ss(H8,500);function V8(t){return Q8(t)}const Y8=he(".4~r"),_8=he(".4~e");function zg(t){return t===null?D`<span class="na">NA</span>`:re(t)?t.substring(0,30):Number.isInteger(t)?""+t:le(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?_8(t):Y8(t):_o(t)?t?"True":"False":"?"+typeof t+" "+t}async function W8(t,e,n){const r=(s,c)=>{var u;for(const[f,l]of Object.entries(e.encoders))if((u=l==null?void 0:l.accessor)!=null&&u.fields.includes(s))switch(f){case"color":case"fill":case"stroke":return D`<span class="color-legend" style="${`background-color: ${l(c)}`}"></span>`}return""},i=D`<table class="attributes">${Object.entries(t).filter(([s,c])=>!s.startsWith("_")).map(([s,c])=>D`<tr><th>${s}</th><td>${zg(c)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),a=o?D`<div class="title"><strong>${o}</strong></div>`:"";return D`${a}${i}`}class X8 extends gg{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}q("index",Nc,["continuous"]),q("locus",zA,["continuous"]),q("null",Og,[]),ch("fasta",R8);class Rg{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new O4,this.viewFactory=new OM,this.namedDataProviders=[],this.animator=new N8(()=>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 j8(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:W8,refseqgene:G8},(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 XE(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 hw(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 L8(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Dg,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new P8(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(s,c)=>{document.addEventListener(s,c);let u=this._keyboardListeners.get(s);u||(u=[],this._keyboardListeners.set(s,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:s=>e.viewFactory.isViewSpec(s),createView:function(s,c,u){return e.viewFactory.createView(s,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(s=>r.datasets[s]),this.viewRoot=n.createView(r,null,"viewRoot"),await kg(this.viewRoot),(this.viewRoot instanceof Ae||this.viewRoot instanceof Ot)&&(this.viewRoot=new X8(n,this.viewRoot)),Ig(this.viewRoot),C8(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(s=>{s instanceof Ae&&i.push(s)});const o=Mg(this.viewRoot,n.dataFlow);w8(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(s=>console.log(s.subtreeToString())),i.forEach(s=>s.mark.initializeEncoders());const a=Promise.all(i.map(s=>s.mark.initializeGraphics()));for(const s of i)o.addObserver(c=>{s.mark.initializeData(),s.mark.updateGraphicsData()},s);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(s=>s.load())),this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))c.reconfigure()}),this.broadcast("dataLoaded"),await a,this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))this._glHelper.createRangeTexture(c)});for(const s of i)s.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(s=>no(s,"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),Z8(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(),a=new I8(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),s=c=>{this.viewRoot.propagateInteractionEvent(new T8(a,c)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(a.x,a.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const c=r;if(Math.abs(c.deltaX)>Math.abs(c.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const u=U8(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",U(T({},u),{deltaMode:0,deltaX:0,deltaY:f}));s(l)}),c.preventDefault();return}}if(r.type=="click"){const c=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(u=>u.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(u=>u(c))}s(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(a=>{if(a instanceof Ae){if(a.mark.isPickingParticipant()){const s=a.mark.encoders.uniqueId.accessor;a.getCollector().visitData(c=>{s(c)==i&&(this._currentHover={mark:a.mark,datum:c,uniqueId:i})})}if(this._currentHover)return Jn}}),this._currentHover){const a=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async s=>{var u;if(!a.isPickingParticipant())return;const c=a.properties.tooltip;if(c!==null){const f=(u=c==null?void 0:c.handler)!=null?u:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(s,a,c==null?void 0:c.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 Bg({picking:!1},this._glHelper),this._pickingContext=new Bg({picking:!0},this._glHelper),e.render(new M8(this._renderingContext,this._pickingContext),pn.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 Ae&&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 Z8(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)}var Yk="",q8="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
|
1346
|
+
};`)},f=d=>{a||u(d);for(const[h,p]of a){const m=c(d,h);for(let y=0;y<p.length;y++)m[r[y]]=d[p[y]];this._propagate(m)}},l=d=>{u(d),f(d),this.handle=f};this.handle=l,this.beginBatch=d=>{_m(d)&&(this.handle=l),super.beginBatch(d)}}}class w8 extends se{get behavior(){return fn}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?gd(e.sort.field,e.sort.order):void 0,i=e.field?Z(e.field):()=>1,o=e.groupby.map(l=>Z(l)),a=t2(this.buffer,l=>o.map(d=>d(l)).join()).map(l=>l[1]);let s=l=>!0;if(e.baseField){const l=Z(e.baseField);s=d=>l(d)!==null}let c,u;switch(e.offset){case"normalize":c=(l,d)=>l/d,u=(l,d)=>ta(l,d);break;case"center":c=(l,d)=>l-d/2,u=(l,d)=>ta(l,d);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);c=(d,h)=>d/h,u=(d,h)=>{const m=ta(d,w=>+!s(w)),y=ta(d,h),g=y-m;let A=0;for(let w=0;w<d.length;w++){const C=d[w];if(s(C)){const b=h(C)/g;A-=b*Math.log2(b)}}return g/(l-(A+0))*(g/y)}}break;default:c=(l,d)=>l,u=(l,d)=>1}for(const l of a){r&&l.sort(r);const d=u(l,i);let h=0;for(const p of l){const m=h+i(p);s(p)&&(p[n[0]]=c(h,d),p[n[1]]=c(m,d),this._propagate(p),h=m)}}super.complete()}}class x8 extends se{get behavior(){return Nt}constructor(e){var o,a;super();const n=Z((o=e.field)!=null?o:"sequence"),[r,i]=(a=e.as)!=null?a:["pos","sequence"];this.handle=s=>{const c=Object.assign({},s,{[i]:"",[r]:0}),u=n(s);for(let f=0;f<u.length;f++){const l=Object.assign({},c);l[r]=f,l[i]=u.charAt(f),this._propagate(l)}}}}class C8 extends se{get behavior(){return Nt}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=>Z(o)),i=fi(this.buffer,...r);for(const[o,a]of Dl(i)){const s={count:a.length};for(let c=0;c<n.length;c++)s[n[c]]=o[c];this._propagate(s)}super.complete()}}const E8="_uniqueId",kg=1e4,Lg=[null];class Og extends se{get behavior(){return fn}constructor(e){var n;super(),this.params=e,this.as=(n=e.as)!=null?n:E8,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%kg==0&&(this._id=this._getBlock()*kg),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Lg.length;return Lg[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const Bg={aggregate:C8,collect:Yr,coverage:i8,filterScoredLabels:s8,filter:c8,flattenCompressedExons:f8,flattenDelimited:d8,flattenSequence:x8,formula:p8,identifier:Og,linearizeGenomicCoordinate:Ig,measureText:m8,pileup:y8,project:v8,regexExtract:b8,regexFold:A8,sample:Wm,stack:w8};function S8(t,e){const n=Bg[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function D8(t){return"values"in t}class M8 extends $n{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=cs(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=Ah(e,yg(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 T8(t){return"url"in t}class I8 extends $n{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(a=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${a.message}`)}),i=(o,a)=>{try{const s=Ah(o,yg(this.params));this.beginBatch({type:"file",url:a});for(const c of s)this._propagate(c)}catch(s){throw new Error(`Cannot parse: ${a}: ${s.message}`)}};this.reset(),await Promise.all(n.map(o=>r(o).then(i))),this.complete()}}function N8(t){return"sequence"in t}class k8 extends $n{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 L8(t){return"dynamicSource"in t}class O8 extends $n{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=cs(r)),this._propagate(n(r));this.complete()}async load(){}}function Fg(t,e){if(D8(t))return new M8(t);if(T8(t))return new I8(t,e);if(N8(t))return new k8(t);if(L8(t))return new O8;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function B8(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(`,
|
1347
|
+
`)+" };");return n.properties=e,n}class Pg extends se{get behavior(){return Nt}constructor(){super();const e=n=>{const r=B8(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{_m(n)&&(this.handle=e),super.beginBatch(n)}}}class zg{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 F8(t){return"name"in t}class P8 extends $n{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=cs(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 Rg(t,e){const n=[];let r;const i=e!=null?e:new zg,o=[];function a(f,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(f),r=f,f}function s(f,l){return a(f,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${l?JSON.stringify(l):""}`))}function c(f,l){for(const d of f){let h;try{h=S8(d,l)}catch(p){throw console.warn(p),new Error(`Cannot initialize "${d.type}" transform: ${p}`)}h.behavior&fn&&s(new Pg),s(h)}}const u=f=>{if(n.push(r),f.spec.data){const l=GM(f.spec.data)?f.getDynamicDataSource():F8(f.spec.data)?new P8(f.spec.data,f.context.getNamedData):Fg(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&c(f.spec.transform,f),f instanceof ye){if(!r)throw new Error("A unit view has no (inherited) data source");const l=z8(f);if(l){o.push(l.rewrite);for(const h of l.transforms)s(h)}f.mark.isPickingParticipant()&&s(new Og({type:"identifier"}));const d=new Yr({type:"collect",groupby:f.getFacetFields(),sort:R8(f,l==null?void 0:l.rewrittenEncoding)});a(d),i.addCollector(d,f)}Tg(f.spec)};return u.postOrder=f=>{r=n.pop()},t.visit(u),o.forEach(f=>f()),i}function z8(t){var o,a,s,c;const e=[],n={},r=[];for(const[u,f]of Object.entries(t.getEncoding())){const l=u;Ki(l)&&dp(f)&&r.push({channel:l,chromPosDef:f})}const i=fi(r,u=>kr(u.channel),u=>u.chromPosDef.chrom);for(const[u,f]of i.entries())for(const[l,d]of f.entries()){const h=[],p=[],m=[];for(const{channel:y,chromPosDef:g}of d){const A=b=>b.replace(/[^A-Za-z0-9_]/g,""),w=["_linearized_",A(g.chrom),"_",A(g.pos)].join(""),C={...(s=(a=(o=t.spec.encoding)==null?void 0:o[y])!=null?a:t.getEncoding()[y])!=null?s:{},field:w};delete C.chrom,delete C.pos,!C.type&&g.type&&(C.type=g.type),n[y]=C,h.push(g.pos),m.push((c=g.offset)!=null?c:0),p.push(w)}e.push(new Ig({type:"linearizeGenomicCoordinate",channel:u,chrom:l,pos:h,offset:m,as:p},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding={...t.spec.encoding,...n},Rm(t.mark,"encoding")}}:void 0}function R8(t,e){var r;const n={...t.getEncoding(),...e}.x;if(Je(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Vn(n))return{field:n.field};if(!Zi(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function j8(t,...e){let n=t;for(const o of e)n.addChild(o),n=o;let r;n instanceof Yr?r=n:(r=new Yr,n.addChild(r));let i;return t instanceof $n?i=async()=>(await t.load(),r.getData()):i=async()=>{throw new Error("The root node is not derived from DataSource!")},{dataSource:t,collector:r,loadAndCollect:i}}function jg(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!jg(n,t))return!1;return!0}function Ml(t,e=!1){if(t instanceof Yr&&(e=!0),t instanceof Pg)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&Ml(n,e);return}t.behavior&Nt&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)Ml(t.children[n],e||n<r-1)}function U8(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 G8(t){if(Ml(t),!jg(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function H8(t){for(const e of t.dataSources)G8(e);U8(t)}function Ug(t){t.visit(n=>{n instanceof ye&&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 ye&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function Q8(t){for(const e of qi){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function V8(t){const e=[];return t.visit(n=>{if(n instanceof ye){const r=n.getEncoding();for(const[i,o]of Object.entries(r))Vn(o)&&"type"in o&&e.push({view:n,channel:i,field:o.field,type:o.type});return as}}),e}async function Y8(t,e,n){var a;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(s=>{throw new Error(`Could not load imported view spec: ${i}
|
1348
|
+
Reason: ${s.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(a=i.match(/^[^?#]*\//))==null?void 0:a[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function Gg(t){const e=[];t.visit(n=>{if(n instanceof pg)return e.push(n),as});for(const n of e){const r=n.context,i=await Y8(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Gg(o)}}function Hg(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...n2(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const _8=t=>!/^(layer|concat)\d+$/.test(t);class Qg{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Vg extends Qg{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=a=>()=>{e&&a()},i=a=>()=>{e&&n&&a()},o=fi(this.buffer,a=>a.mark);for(const[a,s]of o.entries()){if(!a.isReady())continue;this.batch.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.batch.push(...a.prepareRender(this.globalOptions).map(u=>r(u)));let c;for(const u of s){const f=u.coords;f.equals(c)||this.batch.push(r(()=>{n=a.setViewport(f,u.clipRect)})),this.batch.push(i(u.callback)),c=u.coords}}}}class W8 extends Qg{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 X8{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 Z8{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 q8=t=>new Promise(e=>setTimeout(e,t));function us(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const a=performance.now(),s=a+(t.duration||1e3),c=typeof t.from=="number"?t.from:0,u=typeof t.to=="number"?t.to:1,f=t.easingFunction||(m=>m),l=m=>(m-a)/(s-a),d=m=>m*(u-c)+c,h=m=>Math.max(0,Math.min(1,m)),p=m=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(d(f(h(l(m))))),m<s?e(p):(t.onUpdate(d(f(1))),i()))};e(p)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):q8(t.delay).then(r):r()}class K8{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 us({requestAnimationFrame:n=>this.requestTransition(n),...e})}}function Yg(){const t=e=>e;return t.invert=e=>e,t.copy=Yg,t.invertRange=()=>{},t}class J8{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new CM(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 $8="data:image/png;base64,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",e5={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class t5{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Dn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:cl(Ng),texture:this._createTextureNow($8)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(ee(r)&&(r=e5[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=r5(r,n),o=this.fontRepository+_g(n.family)+"/"+i.replace(/\.\w+/,""),a=this._createTexture(o+".png"),s=this._loadFont(o+".json");e.texture=await a,e.metrics=await s}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=>cl(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=_g(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=>n5(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)=>{io(n,{src:e,min:n.LINEAR},(o,a,s)=>{o?i(o):r(a)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,a)=>{r=io(n,{src:e,min:n.LINEAR},(s,c,u)=>{s?a(s):o(c)})});return this._promises.push(i),r}}function _g(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function n5(t){const e=t.split(`
|
1349
|
+
`),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 a=o[1];r[a]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const a=o[1];r[a]=+o[2]}}return n}function r5(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 i5(t,e){const n=[];let r;for(const i of t.split(`
|
1350
|
+
`))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 o5{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=kb([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 a5(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 ls(t,e,n=!0){let r,i=a=>{};return function(...s){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...s))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const Wg=new Map;async function s5(t,e,n){var o;const r=t.symbol;let i=(o=Wg.get(r))!=null?o:await l5(t.symbol);return i?(Wg.set(r,i),D`<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 c5(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(a=>a.json())).result[r]:null}const u5=ls(c5,500);function l5(t){return u5(t)}const f5=le(".4~r"),d5=le(".4~e");function Xg(t){return t===null?D`<span class="na">NA</span>`:ee(t)?t.substring(0,30):Number.isInteger(t)?""+t:ce(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?d5(t):f5(t):Xo(t)?t?"True":"False":"?"+typeof t+" "+t}async function h5(t,e,n){const r=(s,c)=>{var u;for(const[f,l]of Object.entries(e.encoders))if((u=l==null?void 0:l.accessor)!=null&&u.fields.includes(s))switch(f){case"color":case"fill":case"stroke":return D`<span class="color-legend" style="${`background-color: ${l(c)}`}"></span>`}return""},i=D`<table class="attributes">${Object.entries(t).filter(([s,c])=>!s.startsWith("_")).map(([s,c])=>D`<tr><th>${s}</th><td>${Xg(c)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),a=o?D`<div class="title"><strong>${o}</strong></div>`:"";return D`${a}${i}`}class p5 extends Mg{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}W("index",Nc,["continuous"]),W("locus",rw,["continuous"]),W("null",Yg,[]),bh("fasta",i5);class Zg{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new e3,this.viewFactory=new e8,this.namedDataProviders=[],this.animator=new K8(()=>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 o5(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers={default:h5,refseqgene:s5,...(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 pD(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 Ox(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 J8(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new zg,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new t5(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(s,c)=>{document.addEventListener(s,c);let u=this._keyboardListeners.get(s);u||(u=[],this._keyboardListeners.set(s,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:s=>e.viewFactory.isViewSpec(s),createView:function(s,c,u){return e.viewFactory.createView(s,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(s=>r.datasets[s]),this.viewRoot=n.createView(r,null,"viewRoot"),await Gg(this.viewRoot),(this.viewRoot instanceof ye||this.viewRoot instanceof kt)&&(this.viewRoot=new p5(n,this.viewRoot)),Ug(this.viewRoot),Q8(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(s=>{s instanceof ye&&i.push(s)});const o=Rg(this.viewRoot,n.dataFlow);H8(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(s=>console.log(s.subtreeToString())),i.forEach(s=>s.mark.initializeEncoders());const a=Promise.all(i.map(s=>s.mark.initializeGraphics()));for(const s of i)o.addObserver(c=>{s.mark.initializeData(),s.mark.updateGraphicsData()},s);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(s=>s.load())),this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))c.reconfigure()}),this.broadcast("dataLoaded"),await a,this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))this._glHelper.createRangeTexture(c)});for(const s of i)s.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(s=>so(s,"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),m5(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(),a=new Z8(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),s=c=>{this.viewRoot.propagateInteractionEvent(new X8(a,c)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(a.x,a.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const c=r;if(Math.abs(c.deltaX)>Math.abs(c.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const u=a5(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",{...u,deltaMode:0,deltaX:0,deltaY:f});s(l)}),c.preventDefault();return}}if(r.type=="click"){const c=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(u=>u.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(u=>u(c))}s(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(a=>{if(a instanceof ye){if(a.mark.isPickingParticipant()){const s=a.mark.encoders.uniqueId.accessor;a.getCollector().visitData(c=>{s(c)==i&&(this._currentHover={mark:a.mark,datum:c,uniqueId:i})})}if(this._currentHover)return Kn}}),this._currentHover){const a=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async s=>{var u;if(!a.isPickingParticipant())return;const c=a.properties.tooltip;if(c!==null){const f=(u=c==null?void 0:c.handler)!=null?u:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(s,a,c==null?void 0:c.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 Vg({picking:!1},this._glHelper),this._pickingContext=new Vg({picking:!0},this._glHelper),e.render(new W8(this._renderingContext,this._pickingContext),dn.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 ye&&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 m5(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 vk="",g5="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
|
1351
1351
|
* @license
|
1352
1352
|
* Copyright 2019 Google LLC
|
1353
1353
|
* SPDX-License-Identifier: BSD-3-Clause
|
1354
|
-
*/const
|
1354
|
+
*/const Tl=window.ShadowRoot&&(window.ShadyCSS===void 0||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,qg=Symbol(),Kg=new Map;class y5{constructor(e,n){if(this._$cssResult$=!0,n!==qg)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e}get styleSheet(){let e=Kg.get(this.cssText);return Tl&&e===void 0&&(Kg.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const v5=t=>new y5(typeof t=="string"?t:t+"",qg),b5=(t,e)=>{Tl?t.adoptedStyleSheets=e.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet):e.forEach(n=>{const r=document.createElement("style"),i=window.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=n.cssText,t.appendChild(r)})},Jg=Tl?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return v5(n)})(t):t;/**
|
1355
1355
|
* @license
|
1356
1356
|
* Copyright 2017 Google LLC
|
1357
1357
|
* SPDX-License-Identifier: BSD-3-Clause
|
1358
|
-
*/var
|
1358
|
+
*/var Il;const $g=window.trustedTypes,A5=$g?$g.emptyScript:"",e1=window.reactiveElementPolyfillSupport,Nl={toAttribute(t,e){switch(e){case Boolean:t=t?A5:null;break;case Object:case Array:t=t==null?t:JSON.stringify(t)}return t},fromAttribute(t,e){let n=t;switch(e){case Boolean:n=t!==null;break;case Number:n=t===null?null:Number(t);break;case Object:case Array:try{n=JSON.parse(t)}catch{n=null}}return n}},t1=(t,e)=>e!==t&&(e==e||t==t),kl={attribute:!0,type:String,converter:Nl,reflect:!1,hasChanged:t1};class _r extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(e){var n;(n=this.l)!==null&&n!==void 0||(this.l=[]),this.l.push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach((n,r)=>{const i=this._$Eh(r,n);i!==void 0&&(this._$Eu.set(i,r),e.push(i))}),e}static createProperty(e,n=kl){if(n.state&&(n.attribute=!1),this.finalize(),this.elementProperties.set(e,n),!n.noAccessor&&!this.prototype.hasOwnProperty(e)){const r=typeof e=="symbol"?Symbol():"__"+e,i=this.getPropertyDescriptor(e,r,n);i!==void 0&&Object.defineProperty(this.prototype,e,i)}}static getPropertyDescriptor(e,n,r){return{get(){return this[n]},set(i){const o=this[e];this[n]=i,this.requestUpdate(e,o,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)||kl}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const e=Object.getPrototypeOf(this);if(e.finalize(),this.elementProperties=new Map(e.elementProperties),this._$Eu=new Map,this.hasOwnProperty("properties")){const n=this.properties,r=[...Object.getOwnPropertyNames(n),...Object.getOwnPropertySymbols(n)];for(const i of r)this.createProperty(i,n[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(e){const n=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const i of r)n.unshift(Jg(i))}else e!==void 0&&n.push(Jg(e));return n}static _$Eh(e,n){const r=n.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}o(){var e;this._$Ep=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$Em(),this.requestUpdate(),(e=this.constructor.l)===null||e===void 0||e.forEach(n=>n(this))}addController(e){var n,r;((n=this._$Eg)!==null&&n!==void 0?n:this._$Eg=[]).push(e),this.renderRoot!==void 0&&this.isConnected&&((r=e.hostConnected)===null||r===void 0||r.call(e))}removeController(e){var n;(n=this._$Eg)===null||n===void 0||n.splice(this._$Eg.indexOf(e)>>>0,1)}_$Em(){this.constructor.elementProperties.forEach((e,n)=>{this.hasOwnProperty(n)&&(this._$Et.set(n,this[n]),delete this[n])})}createRenderRoot(){var e;const n=(e=this.shadowRoot)!==null&&e!==void 0?e:this.attachShadow(this.constructor.shadowRootOptions);return b5(n,this.constructor.elementStyles),n}connectedCallback(){var e;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$Eg)===null||e===void 0||e.forEach(n=>{var r;return(r=n.hostConnected)===null||r===void 0?void 0:r.call(n)})}enableUpdating(e){}disconnectedCallback(){var e;(e=this._$Eg)===null||e===void 0||e.forEach(n=>{var r;return(r=n.hostDisconnected)===null||r===void 0?void 0:r.call(n)})}attributeChangedCallback(e,n,r){this._$AK(e,r)}_$ES(e,n,r=kl){var i,o;const a=this.constructor._$Eh(e,r);if(a!==void 0&&r.reflect===!0){const s=((o=(i=r.converter)===null||i===void 0?void 0:i.toAttribute)!==null&&o!==void 0?o:Nl.toAttribute)(n,r.type);this._$Ei=e,s==null?this.removeAttribute(a):this.setAttribute(a,s),this._$Ei=null}}_$AK(e,n){var r,i,o;const a=this.constructor,s=a._$Eu.get(e);if(s!==void 0&&this._$Ei!==s){const c=a.getPropertyOptions(s),u=c.converter,f=(o=(i=(r=u)===null||r===void 0?void 0:r.fromAttribute)!==null&&i!==void 0?i:typeof u=="function"?u:null)!==null&&o!==void 0?o:Nl.fromAttribute;this._$Ei=s,this[s]=f(n,c.type),this._$Ei=null}}requestUpdate(e,n,r){let i=!0;e!==void 0&&(((r=r||this.constructor.getPropertyOptions(e)).hasChanged||t1)(this[e],n)?(this._$AL.has(e)||this._$AL.set(e,n),r.reflect===!0&&this._$Ei!==e&&(this._$EC===void 0&&(this._$EC=new Map),this._$EC.set(e,r))):i=!1),!this.isUpdatePending&&i&&(this._$Ep=this._$E_())}async _$E_(){this.isUpdatePending=!0;try{await this._$Ep}catch(n){Promise.reject(n)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;this.hasUpdated,this._$Et&&(this._$Et.forEach((i,o)=>this[o]=i),this._$Et=void 0);let n=!1;const r=this._$AL;try{n=this.shouldUpdate(r),n?(this.willUpdate(r),(e=this._$Eg)===null||e===void 0||e.forEach(i=>{var o;return(o=i.hostUpdate)===null||o===void 0?void 0:o.call(i)}),this.update(r)):this._$EU()}catch(i){throw n=!1,this._$EU(),i}n&&this._$AE(r)}willUpdate(e){}_$AE(e){var n;(n=this._$Eg)===null||n===void 0||n.forEach(r=>{var i;return(i=r.hostUpdated)===null||i===void 0?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ep}shouldUpdate(e){return!0}update(e){this._$EC!==void 0&&(this._$EC.forEach((n,r)=>this._$ES(r,this[r],n)),this._$EC=void 0),this._$EU()}updated(e){}firstUpdated(e){}}_r.finalized=!0,_r.elementProperties=new Map,_r.elementStyles=[],_r.shadowRootOptions={mode:"open"},e1==null||e1({ReactiveElement:_r}),((Il=globalThis.reactiveElementVersions)!==null&&Il!==void 0?Il:globalThis.reactiveElementVersions=[]).push("1.3.2");/**
|
1359
1359
|
* @license
|
1360
1360
|
* Copyright 2017 Google LLC
|
1361
1361
|
* SPDX-License-Identifier: BSD-3-Clause
|
1362
|
-
*/var
|
1362
|
+
*/var Ll,Ol;class Ot extends _r{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var e,n;const r=super.createRenderRoot();return(e=(n=this.renderOptions).renderBefore)!==null&&e!==void 0||(n.renderBefore=r.firstChild),r}update(e){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Dt=Be(n,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!1)}render(){return xe}}Ot.finalized=!0,Ot._$litElement$=!0,(Ll=globalThis.litElementHydrateSupport)===null||Ll===void 0||Ll.call(globalThis,{LitElement:Ot});const n1=globalThis.litElementPolyfillSupport;n1==null||n1({LitElement:Ot}),((Ol=globalThis.litElementVersions)!==null&&Ol!==void 0?Ol:globalThis.litElementVersions=[]).push("3.2.0");/**
|
1363
1363
|
* @license
|
1364
1364
|
* Copyright 2017 Google LLC
|
1365
1365
|
* SPDX-License-Identifier: BSD-3-Clause
|
1366
|
-
*/const
|
1366
|
+
*/const Bt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Wr=t=>(...e)=>({_$litDirective$:t,values:e});class go{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,n,r){this._$Ct=e,this._$AM=n,this._$Ci=r}_$AS(e,n){return this.update(e,n)}update(e,n){return this.render(...n)}}/**
|
1367
1367
|
* @license
|
1368
1368
|
* Copyright 2018 Google LLC
|
1369
1369
|
* SPDX-License-Identifier: BSD-3-Clause
|
1370
|
-
*/const
|
1370
|
+
*/const w5=Wr(class extends go{constructor(t){var e;if(super(t),t.type!==Bt.ATTRIBUTE||t.name!=="class"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return" "+Object.keys(t).filter(e=>t[e]).join(" ")+" "}update(t,[e]){var n,r;if(this.et===void 0){this.et=new Set,t.strings!==void 0&&(this.st=new Set(t.strings.join(" ").split(/\s/).filter(o=>o!=="")));for(const o in e)e[o]&&!(!((n=this.st)===null||n===void 0)&&n.has(o))&&this.et.add(o);return this.render(e)}const i=t.element.classList;this.et.forEach(o=>{o in e||(i.remove(o),this.et.delete(o))});for(const o in e){const a=!!e[o];a===this.et.has(o)||((r=this.st)===null||r===void 0?void 0:r.has(o))||(a?(i.add(o),this.et.add(o)):(i.remove(o),this.et.delete(o)))}return xe}});/*!
|
1371
1371
|
* Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
|
1372
1372
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
1373
1373
|
* Copyright 2022 Fonticons, Inc.
|
1374
|
-
*/var n5={prefix:"fas",iconName:"arrow-down-wide-short",icon:[576,512,["sort-amount-asc","sort-amount-down"],"f160","M416 288h-95.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H416c17.67 0 32-14.33 32-32S433.7 288 416 288zM544 32h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 32 544 32zM352 416h-32c-17.67 0-32 14.33-32 32s14.33 32 32 32h32c17.67 0 31.1-14.33 31.1-32S369.7 416 352 416zM480 160h-159.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H480c17.67 0 32-14.33 32-32S497.7 160 480 160zM192.4 330.7L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-6.312-6.883-14.94-10.38-23.61-10.38c-7.719 0-15.47 2.781-21.61 8.414c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C224.6 316.8 204.4 317.7 192.4 330.7z"]},r5=n5,i5={prefix:"fas",iconName:"arrow-rotate-left",icon:[512,512,[8634,"arrow-left-rotate","arrow-rotate-back","arrow-rotate-backward","undo"],"f0e2","M480 256c0 123.4-100.5 223.9-223.9 223.9c-48.86 0-95.19-15.58-134.2-44.86c-14.14-10.59-17-30.66-6.391-44.81c10.61-14.09 30.69-16.97 44.8-6.375c27.84 20.91 61 31.94 95.89 31.94C344.3 415.8 416 344.1 416 256s-71.67-159.8-159.8-159.8C205.9 96.22 158.6 120.3 128.6 160H192c17.67 0 32 14.31 32 32S209.7 224 192 224H48c-17.67 0-32-14.31-32-32V48c0-17.69 14.33-32 32-32s32 14.31 32 32v70.23C122.1 64.58 186.1 32.11 256.1 32.11C379.5 32.11 480 132.6 480 256z"]},o5=i5,a5={prefix:"fas",iconName:"arrow-rotate-right",icon:[512,512,[8635,"arrow-right-rotate","arrow-rotate-forward","redo"],"f01e","M496 48V192c0 17.69-14.31 32-32 32H320c-17.69 0-32-14.31-32-32s14.31-32 32-32h63.39c-29.97-39.7-77.25-63.78-127.6-63.78C167.7 96.22 96 167.9 96 256s71.69 159.8 159.8 159.8c34.88 0 68.03-11.03 95.88-31.94c14.22-10.53 34.22-7.75 44.81 6.375c10.59 14.16 7.75 34.22-6.375 44.81c-39.03 29.28-85.36 44.86-134.2 44.86C132.5 479.9 32 379.4 32 256s100.5-223.9 223.9-223.9c69.15 0 134 32.47 176.1 86.12V48c0-17.69 14.31-32 32-32S496 30.31 496 48z"]},s5=a5,c5={prefix:"fas",iconName:"backward-step",icon:[320,512,["step-backward"],"f048","M31.1 64.03c-17.67 0-31.1 14.33-31.1 32v319.9c0 17.67 14.33 32 32 32C49.67 447.1 64 433.6 64 415.1V96.03C64 78.36 49.67 64.03 31.1 64.03zM267.5 71.41l-192 159.1C67.82 237.8 64 246.9 64 256c0 9.094 3.82 18.18 11.44 24.62l192 159.1c20.63 17.12 52.51 2.75 52.51-24.62v-319.9C319.1 68.66 288.1 54.28 267.5 71.41z"]},u5=c5,_g={prefix:"fas",iconName:"bookmark",icon:[384,512,[61591,128278],"f02e","M384 48V512l-192-112L0 512V48C0 21.5 21.5 0 48 0h288C362.5 0 384 21.5 384 48z"]},l5={prefix:"fas",iconName:"check",icon:[448,512,[10004,10003],"f00c","M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"]},f5={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"]},Wg={prefix:"fas",iconName:"circle",icon:[512,512,[128308,128309,128992,128993,128994,128995,128996,9898,9899,11044,61708,61915,9679],"f111","M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z"]},d5={prefix:"fas",iconName:"circle-exclamation",icon:[512,512,["exclamation-circle"],"f06a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM232 152C232 138.8 242.8 128 256 128s24 10.75 24 24v128c0 13.25-10.75 24-24 24S232 293.3 232 280V152zM256 400c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 385.9 273.4 400 256 400z"]},h5=d5,p5={prefix:"fas",iconName:"circle-info",icon:[512,512,["info-circle"],"f05a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"]},Xg=p5,m5={prefix:"fas",iconName:"circle-question",icon:[512,512,[62108,"question-circle"],"f059","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 400c-18 0-32-14-32-32s13.1-32 32-32c17.1 0 32 14 32 32S273.1 400 256 400zM325.1 258L280 286V288c0 13-11 24-24 24S232 301 232 288V272c0-8 4-16 12-21l57-34C308 213 312 206 312 198C312 186 301.1 176 289.1 176h-51.1C225.1 176 216 186 216 198c0 13-11 24-24 24s-24-11-24-24C168 159 199 128 237.1 128h51.1C329 128 360 159 360 198C360 222 347 245 325.1 258z"]},g5=m5,y5={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200C94.93 200 120 225.1 120 256zM280 256C280 286.9 254.9 312 224 312C193.1 312 168 286.9 168 256C168 225.1 193.1 200 224 200C254.9 200 280 225.1 280 256zM328 256C328 225.1 353.1 200 384 200C414.9 200 440 225.1 440 256C440 286.9 414.9 312 384 312C353.1 312 328 286.9 328 256z"]},v5=y5,b5={prefix:"fas",iconName:"ellipsis-vertical",icon:[128,512,["ellipsis-v"],"f142","M64 360C94.93 360 120 385.1 120 416C120 446.9 94.93 472 64 472C33.07 472 8 446.9 8 416C8 385.1 33.07 360 64 360zM64 200C94.93 200 120 225.1 120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200zM64 152C33.07 152 8 126.9 8 96C8 65.07 33.07 40 64 40C94.93 40 120 65.07 120 96C120 126.9 94.93 152 64 152z"]},A5=b5,fo={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M3.853 54.87C10.47 40.9 24.54 32 40 32H472C487.5 32 501.5 40.9 508.1 54.87C514.8 68.84 512.7 85.37 502.1 97.33L320 320.9V448C320 460.1 313.2 471.2 302.3 476.6C291.5 482 278.5 480.9 268.8 473.6L204.8 425.6C196.7 419.6 192 410.1 192 400V320.9L9.042 97.33C-.745 85.37-2.765 68.84 3.854 54.87L3.853 54.87z"]},x5={prefix:"fas",iconName:"forward-step",icon:[320,512,["step-forward"],"f051","M287.1 447.1c17.67 0 31.1-14.33 31.1-32V96.03c0-17.67-14.33-32-32-32c-17.67 0-31.1 14.33-31.1 31.1v319.9C255.1 433.6 270.3 447.1 287.1 447.1zM52.51 440.6l192-159.1c7.625-6.436 11.43-15.53 11.43-24.62c0-9.094-3.809-18.18-11.43-24.62l-192-159.1C31.88 54.28 0 68.66 0 96.03v319.9C0 443.3 31.88 457.7 52.51 440.6z"]},w5=x5,C5={prefix:"fas",iconName:"maximize",icon:[448,512,["expand-arrows-alt"],"f31e","M447.1 319.1v135.1c0 13.26-10.75 23.1-23.1 23.1h-135.1c-12.94 0-24.61-7.781-29.56-19.75c-4.906-11.1-2.203-25.72 6.937-34.87l30.06-30.06L224 323.9l-71.43 71.44l30.06 30.06c9.156 9.156 11.91 22.91 6.937 34.87C184.6 472.2 172.9 479.1 160 479.1H24c-13.25 0-23.1-10.74-23.1-23.1v-135.1c0-12.94 7.781-24.61 19.75-29.56C23.72 288.8 27.88 288 32 288c8.312 0 16.5 3.242 22.63 9.367l30.06 30.06l71.44-71.44L84.69 184.6L54.63 214.6c-9.156 9.156-22.91 11.91-34.87 6.937C7.798 216.6 .0013 204.9 .0013 191.1v-135.1c0-13.26 10.75-23.1 23.1-23.1h135.1c12.94 0 24.61 7.781 29.56 19.75C191.2 55.72 191.1 59.87 191.1 63.1c0 8.312-3.237 16.5-9.362 22.63L152.6 116.7l71.44 71.44l71.43-71.44l-30.06-30.06c-9.156-9.156-11.91-22.91-6.937-34.87c4.937-11.95 16.62-19.75 29.56-19.75h135.1c13.26 0 23.1 10.75 23.1 23.1v135.1c0 12.94-7.781 24.61-19.75 29.56c-11.1 4.906-25.72 2.203-34.87-6.937l-30.06-30.06l-71.43 71.43l71.44 71.44l30.06-30.06c9.156-9.156 22.91-11.91 34.87-6.937C440.2 295.4 447.1 307.1 447.1 319.1z"]},S5=C5,E5={prefix:"fas",iconName:"medal",icon:[512,512,[127941],"f5a2","M223.7 130.8L149.1 7.77C147.1 2.949 141.9 0 136.3 0H16.03c-12.95 0-20.53 14.58-13.1 25.18l111.3 158.9C143.9 156.4 181.7 137.3 223.7 130.8zM256 160c-97.25 0-176 78.75-176 176S158.8 512 256 512s176-78.75 176-176S353.3 160 256 160zM348.5 317.3l-37.88 37l8.875 52.25c1.625 9.25-8.25 16.5-16.63 12l-46.88-24.62L209.1 418.5c-8.375 4.5-18.25-2.75-16.63-12l8.875-52.25l-37.88-37C156.6 310.6 160.5 299 169.9 297.6l52.38-7.625L245.7 242.5c2-4.25 6.125-6.375 10.25-6.375S264.2 238.3 266.2 242.5l23.5 47.5l52.38 7.625C351.6 299 355.4 310.6 348.5 317.3zM495.1 0H375.7c-5.621 0-10.83 2.949-13.72 7.77l-73.76 122.1c42 6.5 79.88 25.62 109.5 53.38l111.3-158.9C516.5 14.58 508.9 0 495.1 0z"]},ho={prefix:"fas",iconName:"object-group",icon:[576,512,[],"f247","M128 160C128 142.3 142.3 128 160 128H288C305.7 128 320 142.3 320 160V256C320 273.7 305.7 288 288 288H160C142.3 288 128 273.7 128 256V160zM288 320C323.3 320 352 291.3 352 256V224H416C433.7 224 448 238.3 448 256V352C448 369.7 433.7 384 416 384H288C270.3 384 256 369.7 256 352V320H288zM32 119.4C12.87 108.4 0 87.69 0 64C0 28.65 28.65 0 64 0C87.69 0 108.4 12.87 119.4 32H456.6C467.6 12.87 488.3 0 512 0C547.3 0 576 28.65 576 64C576 87.69 563.1 108.4 544 119.4V392.6C563.1 403.6 576 424.3 576 448C576 483.3 547.3 512 512 512C488.3 512 467.6 499.1 456.6 480H119.4C108.4 499.1 87.69 512 64 512C28.65 512 0 483.3 0 448C0 424.3 12.87 403.6 32 392.6V119.4zM119.4 96C113.8 105.7 105.7 113.8 96 119.4V392.6C105.7 398.2 113.8 406.3 119.4 416H456.6C462.2 406.3 470.3 398.2 480 392.6V119.4C470.3 113.8 462.2 105.7 456.6 96H119.4z"]},D5={prefix:"fas",iconName:"pen",icon:[512,512,[128394],"f304","M362.7 19.32C387.7-5.678 428.3-5.678 453.3 19.32L492.7 58.75C517.7 83.74 517.7 124.3 492.7 149.3L444.3 197.7L314.3 67.72L362.7 19.32zM421.7 220.3L188.5 453.4C178.1 463.8 165.2 471.5 151.1 475.6L30.77 511C22.35 513.5 13.24 511.2 7.03 504.1C.8198 498.8-1.502 489.7 .976 481.2L36.37 360.9C40.53 346.8 48.16 333.9 58.57 323.5L291.7 90.34L421.7 220.3z"]},Pl={prefix:"fas",iconName:"share",icon:[512,512,["arrow-turn-right","mail-forward"],"f064","M503.7 226.2l-176 151.1c-15.38 13.3-39.69 2.545-39.69-18.16V272.1C132.9 274.3 66.06 312.8 111.4 457.8c5.031 16.09-14.41 28.56-28.06 18.62C39.59 444.6 0 383.8 0 322.3c0-152.2 127.4-184.4 288-186.3V56.02c0-20.67 24.28-31.46 39.69-18.16l176 151.1C514.8 199.4 514.8 216.6 503.7 226.2z"]},M5={prefix:"fas",iconName:"sliders",icon:[512,512,["sliders-h"],"f1de","M0 416C0 398.3 14.33 384 32 384H86.66C99 355.7 127.2 336 160 336C192.8 336 220.1 355.7 233.3 384H480C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H233.3C220.1 476.3 192.8 496 160 496C127.2 496 99 476.3 86.66 448H32C14.33 448 0 433.7 0 416V416zM192 416C192 398.3 177.7 384 160 384C142.3 384 128 398.3 128 416C128 433.7 142.3 448 160 448C177.7 448 192 433.7 192 416zM352 176C384.8 176 412.1 195.7 425.3 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H425.3C412.1 316.3 384.8 336 352 336C319.2 336 291 316.3 278.7 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H278.7C291 195.7 319.2 176 352 176zM384 256C384 238.3 369.7 224 352 224C334.3 224 320 238.3 320 256C320 273.7 334.3 288 352 288C369.7 288 384 273.7 384 256zM480 64C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H265.3C252.1 156.3 224.8 176 192 176C159.2 176 131 156.3 118.7 128H32C14.33 128 0 113.7 0 96C0 78.33 14.33 64 32 64H118.7C131 35.75 159.2 16 192 16C224.8 16 252.1 35.75 265.3 64H480zM160 96C160 113.7 174.3 128 192 128C209.7 128 224 113.7 224 96C224 78.33 209.7 64 192 64C174.3 64 160 78.33 160 96z"]},T5=M5,I5={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM394.8 466.1C393.2 492.3 372.3 512 346.9 512H101.1C75.75 512 54.77 492.3 53.19 466.1L31.1 128H416L394.8 466.1z"]},k5={prefix:"fas",iconName:"trash-can",icon:[448,512,[61460,"trash-alt"],"f2ed","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM31.1 128H416V448C416 483.3 387.3 512 352 512H95.1C60.65 512 31.1 483.3 31.1 448V128zM111.1 208V432C111.1 440.8 119.2 448 127.1 448C136.8 448 143.1 440.8 143.1 432V208C143.1 199.2 136.8 192 127.1 192C119.2 192 111.1 199.2 111.1 208zM207.1 208V432C207.1 440.8 215.2 448 223.1 448C232.8 448 240 440.8 240 432V208C240 199.2 232.8 192 223.1 192C215.2 192 207.1 199.2 207.1 208zM304 208V432C304 440.8 311.2 448 320 448C328.8 448 336 440.8 336 432V208C336 199.2 328.8 192 320 192C311.2 192 304 199.2 304 208z"]},Fl=k5,N5={prefix:"fas",iconName:"up-down",icon:[256,512,[11021,8597,"arrows-alt-v"],"f338","M249.6 392.3l-104 112c-9.094 9.781-26.09 9.781-35.19 0l-103.1-112c-6.484-6.984-8.219-17.17-4.406-25.92S14.45 352 24 352H80V160H24C14.45 160 5.812 154.3 1.999 145.6C-1.813 136.8-.0781 126.7 6.406 119.7l104-112c9.094-9.781 26.09-9.781 35.19 0l104 112c6.484 6.984 8.219 17.17 4.406 25.92C250.2 154.3 241.5 160 232 160H176v192h56c9.547 0 18.19 5.656 22 14.41S256.1 385.3 249.6 392.3z"]},L5=N5;/*!
|
1374
|
+
*/var x5={prefix:"fas",iconName:"arrow-down-wide-short",icon:[576,512,["sort-amount-asc","sort-amount-down"],"f160","M416 288h-95.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H416c17.67 0 32-14.33 32-32S433.7 288 416 288zM544 32h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 32 544 32zM352 416h-32c-17.67 0-32 14.33-32 32s14.33 32 32 32h32c17.67 0 31.1-14.33 31.1-32S369.7 416 352 416zM480 160h-159.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H480c17.67 0 32-14.33 32-32S497.7 160 480 160zM192.4 330.7L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-6.312-6.883-14.94-10.38-23.61-10.38c-7.719 0-15.47 2.781-21.61 8.414c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C224.6 316.8 204.4 317.7 192.4 330.7z"]},C5=x5,E5={prefix:"fas",iconName:"arrow-rotate-left",icon:[512,512,[8634,"arrow-left-rotate","arrow-rotate-back","arrow-rotate-backward","undo"],"f0e2","M480 256c0 123.4-100.5 223.9-223.9 223.9c-48.86 0-95.19-15.58-134.2-44.86c-14.14-10.59-17-30.66-6.391-44.81c10.61-14.09 30.69-16.97 44.8-6.375c27.84 20.91 61 31.94 95.89 31.94C344.3 415.8 416 344.1 416 256s-71.67-159.8-159.8-159.8C205.9 96.22 158.6 120.3 128.6 160H192c17.67 0 32 14.31 32 32S209.7 224 192 224H48c-17.67 0-32-14.31-32-32V48c0-17.69 14.33-32 32-32s32 14.31 32 32v70.23C122.1 64.58 186.1 32.11 256.1 32.11C379.5 32.11 480 132.6 480 256z"]},S5=E5,D5={prefix:"fas",iconName:"arrow-rotate-right",icon:[512,512,[8635,"arrow-right-rotate","arrow-rotate-forward","redo"],"f01e","M496 48V192c0 17.69-14.31 32-32 32H320c-17.69 0-32-14.31-32-32s14.31-32 32-32h63.39c-29.97-39.7-77.25-63.78-127.6-63.78C167.7 96.22 96 167.9 96 256s71.69 159.8 159.8 159.8c34.88 0 68.03-11.03 95.88-31.94c14.22-10.53 34.22-7.75 44.81 6.375c10.59 14.16 7.75 34.22-6.375 44.81c-39.03 29.28-85.36 44.86-134.2 44.86C132.5 479.9 32 379.4 32 256s100.5-223.9 223.9-223.9c69.15 0 134 32.47 176.1 86.12V48c0-17.69 14.31-32 32-32S496 30.31 496 48z"]},M5=D5,T5={prefix:"fas",iconName:"backward-step",icon:[320,512,["step-backward"],"f048","M31.1 64.03c-17.67 0-31.1 14.33-31.1 32v319.9c0 17.67 14.33 32 32 32C49.67 447.1 64 433.6 64 415.1V96.03C64 78.36 49.67 64.03 31.1 64.03zM267.5 71.41l-192 159.1C67.82 237.8 64 246.9 64 256c0 9.094 3.82 18.18 11.44 24.62l192 159.1c20.63 17.12 52.51 2.75 52.51-24.62v-319.9C319.1 68.66 288.1 54.28 267.5 71.41z"]},I5=T5,r1={prefix:"fas",iconName:"bookmark",icon:[384,512,[61591,128278],"f02e","M384 48V512l-192-112L0 512V48C0 21.5 21.5 0 48 0h288C362.5 0 384 21.5 384 48z"]},N5={prefix:"fas",iconName:"check",icon:[448,512,[10004,10003],"f00c","M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"]},k5={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"]},i1={prefix:"fas",iconName:"circle",icon:[512,512,[128308,128309,128992,128993,128994,128995,128996,9898,9899,11044,61708,61915,9679],"f111","M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z"]},L5={prefix:"fas",iconName:"circle-exclamation",icon:[512,512,["exclamation-circle"],"f06a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM232 152C232 138.8 242.8 128 256 128s24 10.75 24 24v128c0 13.25-10.75 24-24 24S232 293.3 232 280V152zM256 400c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 385.9 273.4 400 256 400z"]},O5=L5,B5={prefix:"fas",iconName:"circle-info",icon:[512,512,["info-circle"],"f05a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"]},o1=B5,F5={prefix:"fas",iconName:"circle-question",icon:[512,512,[62108,"question-circle"],"f059","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 400c-18 0-32-14-32-32s13.1-32 32-32c17.1 0 32 14 32 32S273.1 400 256 400zM325.1 258L280 286V288c0 13-11 24-24 24S232 301 232 288V272c0-8 4-16 12-21l57-34C308 213 312 206 312 198C312 186 301.1 176 289.1 176h-51.1C225.1 176 216 186 216 198c0 13-11 24-24 24s-24-11-24-24C168 159 199 128 237.1 128h51.1C329 128 360 159 360 198C360 222 347 245 325.1 258z"]},P5=F5,z5={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200C94.93 200 120 225.1 120 256zM280 256C280 286.9 254.9 312 224 312C193.1 312 168 286.9 168 256C168 225.1 193.1 200 224 200C254.9 200 280 225.1 280 256zM328 256C328 225.1 353.1 200 384 200C414.9 200 440 225.1 440 256C440 286.9 414.9 312 384 312C353.1 312 328 286.9 328 256z"]},R5=z5,j5={prefix:"fas",iconName:"ellipsis-vertical",icon:[128,512,["ellipsis-v"],"f142","M64 360C94.93 360 120 385.1 120 416C120 446.9 94.93 472 64 472C33.07 472 8 446.9 8 416C8 385.1 33.07 360 64 360zM64 200C94.93 200 120 225.1 120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200zM64 152C33.07 152 8 126.9 8 96C8 65.07 33.07 40 64 40C94.93 40 120 65.07 120 96C120 126.9 94.93 152 64 152z"]},U5=j5,tr={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M3.853 54.87C10.47 40.9 24.54 32 40 32H472C487.5 32 501.5 40.9 508.1 54.87C514.8 68.84 512.7 85.37 502.1 97.33L320 320.9V448C320 460.1 313.2 471.2 302.3 476.6C291.5 482 278.5 480.9 268.8 473.6L204.8 425.6C196.7 419.6 192 410.1 192 400V320.9L9.042 97.33C-.745 85.37-2.765 68.84 3.854 54.87L3.853 54.87z"]},G5={prefix:"fas",iconName:"forward-step",icon:[320,512,["step-forward"],"f051","M287.1 447.1c17.67 0 31.1-14.33 31.1-32V96.03c0-17.67-14.33-32-32-32c-17.67 0-31.1 14.33-31.1 31.1v319.9C255.1 433.6 270.3 447.1 287.1 447.1zM52.51 440.6l192-159.1c7.625-6.436 11.43-15.53 11.43-24.62c0-9.094-3.809-18.18-11.43-24.62l-192-159.1C31.88 54.28 0 68.66 0 96.03v319.9C0 443.3 31.88 457.7 52.51 440.6z"]},H5=G5,Q5={prefix:"fas",iconName:"maximize",icon:[448,512,["expand-arrows-alt"],"f31e","M447.1 319.1v135.1c0 13.26-10.75 23.1-23.1 23.1h-135.1c-12.94 0-24.61-7.781-29.56-19.75c-4.906-11.1-2.203-25.72 6.937-34.87l30.06-30.06L224 323.9l-71.43 71.44l30.06 30.06c9.156 9.156 11.91 22.91 6.937 34.87C184.6 472.2 172.9 479.1 160 479.1H24c-13.25 0-23.1-10.74-23.1-23.1v-135.1c0-12.94 7.781-24.61 19.75-29.56C23.72 288.8 27.88 288 32 288c8.312 0 16.5 3.242 22.63 9.367l30.06 30.06l71.44-71.44L84.69 184.6L54.63 214.6c-9.156 9.156-22.91 11.91-34.87 6.937C7.798 216.6 .0013 204.9 .0013 191.1v-135.1c0-13.26 10.75-23.1 23.1-23.1h135.1c12.94 0 24.61 7.781 29.56 19.75C191.2 55.72 191.1 59.87 191.1 63.1c0 8.312-3.237 16.5-9.362 22.63L152.6 116.7l71.44 71.44l71.43-71.44l-30.06-30.06c-9.156-9.156-11.91-22.91-6.937-34.87c4.937-11.95 16.62-19.75 29.56-19.75h135.1c13.26 0 23.1 10.75 23.1 23.1v135.1c0 12.94-7.781 24.61-19.75 29.56c-11.1 4.906-25.72 2.203-34.87-6.937l-30.06-30.06l-71.43 71.43l71.44 71.44l30.06-30.06c9.156-9.156 22.91-11.91 34.87-6.937C440.2 295.4 447.1 307.1 447.1 319.1z"]},V5=Q5,a1={prefix:"fas",iconName:"medal",icon:[512,512,[127941],"f5a2","M223.7 130.8L149.1 7.77C147.1 2.949 141.9 0 136.3 0H16.03c-12.95 0-20.53 14.58-13.1 25.18l111.3 158.9C143.9 156.4 181.7 137.3 223.7 130.8zM256 160c-97.25 0-176 78.75-176 176S158.8 512 256 512s176-78.75 176-176S353.3 160 256 160zM348.5 317.3l-37.88 37l8.875 52.25c1.625 9.25-8.25 16.5-16.63 12l-46.88-24.62L209.1 418.5c-8.375 4.5-18.25-2.75-16.63-12l8.875-52.25l-37.88-37C156.6 310.6 160.5 299 169.9 297.6l52.38-7.625L245.7 242.5c2-4.25 6.125-6.375 10.25-6.375S264.2 238.3 266.2 242.5l23.5 47.5l52.38 7.625C351.6 299 355.4 310.6 348.5 317.3zM495.1 0H375.7c-5.621 0-10.83 2.949-13.72 7.77l-73.76 122.1c42 6.5 79.88 25.62 109.5 53.38l111.3-158.9C516.5 14.58 508.9 0 495.1 0z"]},yo={prefix:"fas",iconName:"object-group",icon:[576,512,[],"f247","M128 160C128 142.3 142.3 128 160 128H288C305.7 128 320 142.3 320 160V256C320 273.7 305.7 288 288 288H160C142.3 288 128 273.7 128 256V160zM288 320C323.3 320 352 291.3 352 256V224H416C433.7 224 448 238.3 448 256V352C448 369.7 433.7 384 416 384H288C270.3 384 256 369.7 256 352V320H288zM32 119.4C12.87 108.4 0 87.69 0 64C0 28.65 28.65 0 64 0C87.69 0 108.4 12.87 119.4 32H456.6C467.6 12.87 488.3 0 512 0C547.3 0 576 28.65 576 64C576 87.69 563.1 108.4 544 119.4V392.6C563.1 403.6 576 424.3 576 448C576 483.3 547.3 512 512 512C488.3 512 467.6 499.1 456.6 480H119.4C108.4 499.1 87.69 512 64 512C28.65 512 0 483.3 0 448C0 424.3 12.87 403.6 32 392.6V119.4zM119.4 96C113.8 105.7 105.7 113.8 96 119.4V392.6C105.7 398.2 113.8 406.3 119.4 416H456.6C462.2 406.3 470.3 398.2 480 392.6V119.4C470.3 113.8 462.2 105.7 456.6 96H119.4z"]},Y5={prefix:"fas",iconName:"pen",icon:[512,512,[128394],"f304","M362.7 19.32C387.7-5.678 428.3-5.678 453.3 19.32L492.7 58.75C517.7 83.74 517.7 124.3 492.7 149.3L444.3 197.7L314.3 67.72L362.7 19.32zM421.7 220.3L188.5 453.4C178.1 463.8 165.2 471.5 151.1 475.6L30.77 511C22.35 513.5 13.24 511.2 7.03 504.1C.8198 498.8-1.502 489.7 .976 481.2L36.37 360.9C40.53 346.8 48.16 333.9 58.57 323.5L291.7 90.34L421.7 220.3z"]},Bl={prefix:"fas",iconName:"share",icon:[512,512,["arrow-turn-right","mail-forward"],"f064","M503.7 226.2l-176 151.1c-15.38 13.3-39.69 2.545-39.69-18.16V272.1C132.9 274.3 66.06 312.8 111.4 457.8c5.031 16.09-14.41 28.56-28.06 18.62C39.59 444.6 0 383.8 0 322.3c0-152.2 127.4-184.4 288-186.3V56.02c0-20.67 24.28-31.46 39.69-18.16l176 151.1C514.8 199.4 514.8 216.6 503.7 226.2z"]},_5={prefix:"fas",iconName:"sliders",icon:[512,512,["sliders-h"],"f1de","M0 416C0 398.3 14.33 384 32 384H86.66C99 355.7 127.2 336 160 336C192.8 336 220.1 355.7 233.3 384H480C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H233.3C220.1 476.3 192.8 496 160 496C127.2 496 99 476.3 86.66 448H32C14.33 448 0 433.7 0 416V416zM192 416C192 398.3 177.7 384 160 384C142.3 384 128 398.3 128 416C128 433.7 142.3 448 160 448C177.7 448 192 433.7 192 416zM352 176C384.8 176 412.1 195.7 425.3 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H425.3C412.1 316.3 384.8 336 352 336C319.2 336 291 316.3 278.7 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H278.7C291 195.7 319.2 176 352 176zM384 256C384 238.3 369.7 224 352 224C334.3 224 320 238.3 320 256C320 273.7 334.3 288 352 288C369.7 288 384 273.7 384 256zM480 64C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H265.3C252.1 156.3 224.8 176 192 176C159.2 176 131 156.3 118.7 128H32C14.33 128 0 113.7 0 96C0 78.33 14.33 64 32 64H118.7C131 35.75 159.2 16 192 16C224.8 16 252.1 35.75 265.3 64H480zM160 96C160 113.7 174.3 128 192 128C209.7 128 224 113.7 224 96C224 78.33 209.7 64 192 64C174.3 64 160 78.33 160 96z"]},W5=_5,X5={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM394.8 466.1C393.2 492.3 372.3 512 346.9 512H101.1C75.75 512 54.77 492.3 53.19 466.1L31.1 128H416L394.8 466.1z"]},Z5={prefix:"fas",iconName:"trash-can",icon:[448,512,[61460,"trash-alt"],"f2ed","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM31.1 128H416V448C416 483.3 387.3 512 352 512H95.1C60.65 512 31.1 483.3 31.1 448V128zM111.1 208V432C111.1 440.8 119.2 448 127.1 448C136.8 448 143.1 440.8 143.1 432V208C143.1 199.2 136.8 192 127.1 192C119.2 192 111.1 199.2 111.1 208zM207.1 208V432C207.1 440.8 215.2 448 223.1 448C232.8 448 240 440.8 240 432V208C240 199.2 232.8 192 223.1 192C215.2 192 207.1 199.2 207.1 208zM304 208V432C304 440.8 311.2 448 320 448C328.8 448 336 440.8 336 432V208C336 199.2 328.8 192 320 192C311.2 192 304 199.2 304 208z"]},Fl=Z5,q5={prefix:"fas",iconName:"up-down",icon:[256,512,[11021,8597,"arrows-alt-v"],"f338","M249.6 392.3l-104 112c-9.094 9.781-26.09 9.781-35.19 0l-103.1-112c-6.484-6.984-8.219-17.17-4.406-25.92S14.45 352 24 352H80V160H24C14.45 160 5.812 154.3 1.999 145.6C-1.813 136.8-.0781 126.7 6.406 119.7l104-112c9.094-9.781 26.09-9.781 35.19 0l104 112c6.484 6.984 8.219 17.17 4.406 25.92C250.2 154.3 241.5 160 232 160H176v192h56c9.547 0 18.19 5.656 22 14.41S256.1 385.3 249.6 392.3z"]},K5=q5;/*!
|
1375
1375
|
* Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
|
1376
1376
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
1377
1377
|
* Copyright 2022 Fonticons, Inc.
|
1378
|
-
*/function
|
1379
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function
|
1380
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var
|
1378
|
+
*/function s1(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function N(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?s1(Object(n),!0).forEach(function(r){eT(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):s1(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function fs(t){return fs=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},fs(t)}function J5(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function c1(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function $5(t,e,n){return e&&c1(t.prototype,e),n&&c1(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function eT(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Pl(t,e){return nT(t)||iT(t,e)||u1(t,e)||aT()}function ds(t){return tT(t)||rT(t)||u1(t)||oT()}function tT(t){if(Array.isArray(t))return zl(t)}function nT(t){if(Array.isArray(t))return t}function rT(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function iT(t,e){var n=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(n!=null){var r=[],i=!0,o=!1,a,s;try{for(n=n.call(t);!(i=(a=n.next()).done)&&(r.push(a.value),!(e&&r.length===e));i=!0);}catch(c){o=!0,s=c}finally{try{!i&&n.return!=null&&n.return()}finally{if(o)throw s}}return r}}function u1(t,e){if(!!t){if(typeof t=="string")return zl(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);if(n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set")return Array.from(t);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return zl(t,e)}}function zl(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function oT(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
1379
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function aT(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
1380
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var l1=function(){},Rl={},f1={},d1=null,h1={mark:l1,measure:l1};try{typeof window<"u"&&(Rl=window),typeof document<"u"&&(f1=document),typeof MutationObserver<"u"&&(d1=MutationObserver),typeof performance<"u"&&(h1=performance)}catch{}var sT=Rl.navigator||{},p1=sT.userAgent,m1=p1===void 0?"":p1,hn=Rl,$=f1,g1=d1,hs=h1;hn.document;var Ft=!!$.documentElement&&!!$.head&&typeof $.addEventListener=="function"&&typeof $.createElement=="function",y1=~m1.indexOf("MSIE")||~m1.indexOf("Trident/"),Pt="___FONT_AWESOME___",jl=16,v1="fa",b1="svg-inline--fa",nr="data-fa-i2svg",Ul="data-fa-pseudo-element",cT="data-fa-pseudo-element-pending",Gl="data-prefix",Hl="data-icon",A1="fontawesome-i2svg",uT="async",lT=["HTML","HEAD","STYLE","SCRIPT"],w1=function(){try{return process.env.NODE_ENV==="production"}catch{return!1}}(),Ql={fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit","fa-kit":"kit",fa:"solid"},ps={solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"},x1={fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},fT={"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},dT=/fa[srltdbk\-\ ]/,C1="fa-layers-text",hT=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Kit)?.*/i,pT={900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},E1=[1,2,3,4,5,6,7,8,9,10],mT=E1.concat([11,12,13,14,15,16,17,18,19,20]),gT=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],rr={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},yT=[].concat(ds(Object.keys(ps)),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",rr.GROUP,rr.SWAP_OPACITY,rr.PRIMARY,rr.SECONDARY]).concat(E1.map(function(t){return"".concat(t,"x")})).concat(mT.map(function(t){return"w-".concat(t)})),S1=hn.FontAwesomeConfig||{};function vT(t){var e=$.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function bT(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if($&&typeof $.querySelector=="function"){var AT=[["data-family-prefix","familyPrefix"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]];AT.forEach(function(t){var e=Pl(t,2),n=e[0],r=e[1],i=bT(vT(n));i!=null&&(S1[r]=i)})}var wT={familyPrefix:v1,styleDefault:"solid",replacementClass:b1,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},vo=N(N({},wT),S1);vo.autoReplaceSvg||(vo.observeMutations=!1);var F={};Object.keys(vo).forEach(function(t){Object.defineProperty(F,t,{enumerable:!0,set:function(n){vo[t]=n,ms.forEach(function(r){return r(F)})},get:function(){return vo[t]}})}),hn.FontAwesomeConfig=F;var ms=[];function xT(t){return ms.push(t),function(){ms.splice(ms.indexOf(t),1)}}var pn=jl,yt={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function CT(t){if(!(!t||!Ft)){var e=$.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=$.head.childNodes,r=null,i=n.length-1;i>-1;i--){var o=n[i],a=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(a)>-1&&(r=o)}return $.head.insertBefore(e,r),t}}var ET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function bo(){for(var t=12,e="";t-- >0;)e+=ET[Math.random()*62|0];return e}function Xr(t){for(var e=[],n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function Vl(t){return t.classList?Xr(t.classList):(t.getAttribute("class")||"").split(" ").filter(function(e){return e})}function D1(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function ST(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(D1(t[n]),'" ')},"").trim()}function gs(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,": ").concat(t[n].trim(),";")},"")}function Yl(t){return t.size!==yt.size||t.x!==yt.x||t.y!==yt.y||t.rotate!==yt.rotate||t.flipX||t.flipY}function DT(t){var e=t.transform,n=t.containerWidth,r=t.iconWidth,i={transform:"translate(".concat(n/2," 256)")},o="translate(".concat(e.x*32,", ").concat(e.y*32,") "),a="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),s="rotate(".concat(e.rotate," 0 0)"),c={transform:"".concat(o," ").concat(a," ").concat(s)},u={transform:"translate(".concat(r/2*-1," -256)")};return{outer:i,inner:c,path:u}}function MT(t){var e=t.transform,n=t.width,r=n===void 0?jl:n,i=t.height,o=i===void 0?jl:i,a=t.startCentered,s=a===void 0?!1:a,c="";return s&&y1?c+="translate(".concat(e.x/pn-r/2,"em, ").concat(e.y/pn-o/2,"em) "):s?c+="translate(calc(-50% + ".concat(e.x/pn,"em), calc(-50% + ").concat(e.y/pn,"em)) "):c+="translate(".concat(e.x/pn,"em, ").concat(e.y/pn,"em) "),c+="scale(".concat(e.size/pn*(e.flipX?-1:1),", ").concat(e.size/pn*(e.flipY?-1:1),") "),c+="rotate(".concat(e.rotate,"deg) "),c}var TT=`:root, :host {
|
1381
1381
|
--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";
|
1382
1382
|
--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";
|
1383
1383
|
--fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";
|
@@ -2128,40 +2128,47 @@ svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
|
2128
2128
|
.fad.fa-inverse,
|
2129
2129
|
.fa-duotone.fa-inverse {
|
2130
2130
|
color: var(--fa-inverse, #fff);
|
2131
|
-
}`;function m1(){var t=a1,e=s1,n=F.familyPrefix,r=F.replacementClass,i=uT;if(n!==t||r!==e){var o=new RegExp("\\.".concat(t,"\\-"),"g"),a=new RegExp("\\--".concat(t,"\\-"),"g"),s=new RegExp("\\.".concat(e),"g");i=i.replace(o,".".concat(n,"-")).replace(a,"--".concat(n,"-")).replace(s,".".concat(r))}return i}var g1=!1;function Wl(){F.autoAddCss&&!g1&&(iT(m1()),g1=!0)}var lT={mixout:function(){return{dom:{css:m1,insertCss:Wl}}},hooks:function(){return{beforeDOMElementCreation:function(){Wl()},beforeI2svg:function(){Wl()}}}},Ut=mn||{};Ut[jt]||(Ut[jt]={}),Ut[jt].styles||(Ut[jt].styles={}),Ut[jt].hooks||(Ut[jt].hooks={}),Ut[jt].shims||(Ut[jt].shims=[]);var ft=Ut[jt],y1=[],fT=function t(){te.removeEventListener("DOMContentLoaded",t),ps=1,y1.map(function(e){return e()})},ps=!1;Rt&&(ps=(te.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(te.readyState),ps||te.addEventListener("DOMContentLoaded",fT));function dT(t){!Rt||(ps?setTimeout(t,0):y1.push(t))}function go(t){var e=t.tag,n=t.attributes,r=n===void 0?{}:n,i=t.children,o=i===void 0?[]:i;return typeof t=="string"?p1(t):"<".concat(e," ").concat(aT(r),">").concat(o.map(go).join(""),"</").concat(e,">")}function v1(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}var hT=function(e,n){return function(r,i,o,a){return e.call(n,r,i,o,a)}},Xl=function(e,n,r,i){var o=Object.keys(e),a=o.length,s=i!==void 0?hT(n,i):n,c,u,f;for(r===void 0?(c=1,f=e[o[0]]):(c=0,f=r);c<a;c++)u=o[c],f=s(f,e[u],u,e);return f};function pT(t){for(var e=[],n=0,r=t.length;n<r;){var i=t.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var o=t.charCodeAt(n++);(o&64512)==56320?e.push(((i&1023)<<10)+(o&1023)+65536):(e.push(i),n--)}else e.push(i)}return e}function Zl(t){var e=pT(t);return e.length===1?e[0].toString(16):null}function mT(t,e){var n=t.length,r=t.charCodeAt(e),i;return r>=55296&&r<=56319&&n>e+1&&(i=t.charCodeAt(e+1),i>=56320&&i<=57343)?(r-55296)*1024+i-56320+65536:r}function b1(t){return Object.keys(t).reduce(function(e,n){var r=t[n],i=!!r.icon;return i?e[r.iconName]=r.icon:e[n]=r,e},{})}function ql(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,i=r===void 0?!1:r,o=b1(e);typeof ft.hooks.addPack=="function"&&!i?ft.hooks.addPack(t,b1(e)):ft.styles[t]=N(N({},ft.styles[t]||{}),o),t==="fas"&&ql("fa",e)}var yo=ft.styles,gT=ft.shims,yT=Object.values(l1),Kl=null,A1={},x1={},w1={},C1={},S1={},vT=Object.keys(Vl);function bT(t){return~J5.indexOf(t)}function AT(t,e){var n=e.split("-"),r=n[0],i=n.slice(1).join("-");return r===t&&i!==""&&!bT(i)?i:null}var E1=function(){var e=function(o){return Xl(yo,function(a,s,c){return a[c]=Xl(s,o,{}),a},{})};A1=e(function(i,o,a){if(o[3]&&(i[o[3]]=a),o[2]){var s=o[2].filter(function(c){return typeof c=="number"});s.forEach(function(c){i[c.toString(16)]=a})}return i}),x1=e(function(i,o,a){if(i[a]=a,o[2]){var s=o[2].filter(function(c){return typeof c=="string"});s.forEach(function(c){i[c]=a})}return i}),S1=e(function(i,o,a){var s=o[2];return i[a]=a,s.forEach(function(c){i[c]=a}),i});var n="far"in yo||F.autoFetchSvg,r=Xl(gT,function(i,o){var a=o[0],s=o[1],c=o[2];return s==="far"&&!n&&(s="fas"),typeof a=="string"&&(i.names[a]={prefix:s,iconName:c}),typeof a=="number"&&(i.unicodes[a.toString(16)]={prefix:s,iconName:c}),i},{names:{},unicodes:{}});w1=r.names,C1=r.unicodes,Kl=ms(F.styleDefault)};rT(function(t){Kl=ms(t.styleDefault)}),E1();function Jl(t,e){return(A1[t]||{})[e]}function xT(t,e){return(x1[t]||{})[e]}function Vr(t,e){return(S1[t]||{})[e]}function D1(t){return w1[t]||{prefix:null,iconName:null}}function wT(t){var e=C1[t],n=Jl("fas",t);return e||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function yn(){return Kl}var $l=function(){return{prefix:null,iconName:null,rest:[]}};function ms(t){var e=Vl[t],n=fs[t]||fs[e],r=t in ft.styles?t:null;return n||r||null}function gs(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.skipLookups,r=n===void 0?!1:n,i=null,o=t.reduce(function(a,s){var c=AT(F.familyPrefix,s);if(yo[s]?(s=yT.includes(s)?_5[s]:s,i=s,a.prefix=s):vT.indexOf(s)>-1?(i=s,a.prefix=ms(s)):c?a.iconName=c:s!==F.replacementClass&&a.rest.push(s),!r&&a.prefix&&a.iconName){var u=i==="fa"?D1(a.iconName):{},f=Vr(a.prefix,a.iconName);u.prefix&&(i=null),a.iconName=u.iconName||f||a.iconName,a.prefix=u.prefix||a.prefix,a.prefix==="far"&&!yo.far&&yo.fas&&!F.autoFetchSvg&&(a.prefix="fas")}return a},$l());return(o.prefix==="fa"||i==="fa")&&(o.prefix=yn()||"fas"),o}var CT=function(){function t(){B5(this,t),this.definitions={}}return O5(t,[{key:"add",value:function(){for(var n=this,r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];var a=i.reduce(this._pullDefinitions,{});Object.keys(a).forEach(function(s){n.definitions[s]=N(N({},n.definitions[s]||{}),a[s]),ql(s,a[s]);var c=l1[s];c&&ql(c,a[s]),E1()})}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(n,r){var i=r.prefix&&r.iconName&&r.icon?{0:r}:r;return Object.keys(i).map(function(o){var a=i[o],s=a.prefix,c=a.iconName,u=a.icon,f=u[2];n[s]||(n[s]={}),f.length>0&&f.forEach(function(l){typeof l=="string"&&(n[s][l]=u)}),n[s][c]=u}),n}}]),t}(),M1=[],Yr={},_r={},ST=Object.keys(_r);function ET(t,e){var n=e.mixoutsTo;return M1=t,Yr={},Object.keys(_r).forEach(function(r){ST.indexOf(r)===-1&&delete _r[r]}),M1.forEach(function(r){var i=r.mixout?r.mixout():{};if(Object.keys(i).forEach(function(a){typeof i[a]=="function"&&(n[a]=i[a]),cs(i[a])==="object"&&Object.keys(i[a]).forEach(function(s){n[a]||(n[a]={}),n[a][s]=i[a][s]})}),r.hooks){var o=r.hooks();Object.keys(o).forEach(function(a){Yr[a]||(Yr[a]=[]),Yr[a].push(o[a])})}r.provides&&r.provides(_r)}),n}function ef(t,e){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];var o=Yr[t]||[];return o.forEach(function(a){e=a.apply(null,[e].concat(r))}),e}function ir(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=Yr[t]||[];i.forEach(function(o){o.apply(null,n)})}function Gt(){var t=arguments[0],e=Array.prototype.slice.call(arguments,1);return _r[t]?_r[t].apply(null,e):void 0}function tf(t){t.prefix==="fa"&&(t.prefix="fas");var e=t.iconName,n=t.prefix||yn();if(!!e)return e=Vr(n,e)||e,v1(T1.definitions,n,e)||v1(ft.styles,n,e)}var T1=new CT,DT=function(){F.autoReplaceSvg=!1,F.observeMutations=!1,ir("noAuto")},MT={i2svg:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Rt?(ir("beforeI2svg",e),Gt("pseudoElements2svg",e),Gt("i2svg",e)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot;F.autoReplaceSvg===!1&&(F.autoReplaceSvg=!0),F.observeMutations=!0,dT(function(){IT({autoReplaceSvgRoot:n}),ir("watch",e)})}},TT={icon:function(e){if(e===null)return null;if(cs(e)==="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Vr(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&e.length===2){var n=e[1].indexOf("fa-")===0?e[1].slice(3):e[1],r=ms(e[0]);return{prefix:r,iconName:Vr(r,n)||n}}if(typeof e=="string"&&(e.indexOf("".concat(F.familyPrefix,"-"))>-1||e.match(W5))){var i=gs(e.split(" "),{skipLookups:!0});return{prefix:i.prefix||yn(),iconName:Vr(i.prefix,i.iconName)||i.iconName}}if(typeof e=="string"){var o=yn();return{prefix:o,iconName:Vr(o,e)||e}}}},Ve={noAuto:DT,config:F,dom:MT,parse:TT,library:T1,findIconDefinition:tf,toHtml:go},IT=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot,r=n===void 0?te:n;(Object.keys(ft.styles).length>0||F.autoFetchSvg)&&Rt&&F.autoReplaceSvg&&Ve.dom.i2svg({node:r})};function ys(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return go(r)})}}),Object.defineProperty(t,"node",{get:function(){if(!!Rt){var r=te.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function kT(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,a=t.transform;if(_l(a)&&n.found&&!r.found){var s=n.width,c=n.height,u={x:s/c/2,y:.5};i.style=hs(N(N({},o),{},{"transform-origin":"".concat(u.x+a.x/16,"em ").concat(u.y+a.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}function NT(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,a=o===!0?"".concat(e,"-").concat(F.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:N(N({},i),{},{id:a}),children:r}]}]}function nf(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,o=t.iconName,a=t.transform,s=t.symbol,c=t.title,u=t.maskId,f=t.titleId,l=t.extra,d=t.watchable,h=d===void 0?!1:d,p=r.found?r:n,m=p.width,y=p.height,g=i==="fak",x=[F.replacementClass,o?"".concat(F.familyPrefix,"-").concat(o):""].filter(function(k){return l.classes.indexOf(k)===-1}).filter(function(k){return k!==""||!!k}).concat(l.classes).join(" "),A={children:[],attributes:N(N({},l.attributes),{},{"data-prefix":i,"data-icon":o,class:x,role:l.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(m," ").concat(y)})},C=g&&!~l.classes.indexOf("fa-fw")?{width:"".concat(m/y*16*.0625,"em")}:{};h&&(A.attributes[nr]=""),c&&(A.children.push({tag:"title",attributes:{id:A.attributes["aria-labelledby"]||"title-".concat(f||mo())},children:[c]}),delete A.attributes.title);var b=N(N({},A),{},{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:a,symbol:s,styles:N(N({},C),l.styles)}),v=r.found&&n.found?Gt("generateAbstractMask",b)||{children:[],attributes:{}}:Gt("generateAbstractIcon",b)||{children:[],attributes:{}},w=v.children,E=v.attributes;return b.children=w,b.attributes=E,s?NT(b):kT(b)}function I1(t){var e=t.content,n=t.width,r=t.height,i=t.transform,o=t.title,a=t.extra,s=t.watchable,c=s===void 0?!1:s,u=N(N(N({},a.attributes),o?{title:o}:{}),{},{class:a.classes.join(" ")});c&&(u[nr]="");var f=N({},a.styles);_l(i)&&(f.transform=cT({transform:i,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var l=hs(f);l.length>0&&(u.style=l);var d=[];return d.push({tag:"span",attributes:u,children:[e]}),o&&d.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),d}function LT(t){var e=t.content,n=t.title,r=t.extra,i=N(N(N({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),o=hs(r.styles);o.length>0&&(i.style=o);var a=[];return a.push({tag:"span",attributes:i,children:[e]}),n&&a.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),a}var rf=ft.styles;function of(t){var e=t[0],n=t[1],r=t.slice(4),i=zl(r,1),o=i[0],a=null;return Array.isArray(o)?a={tag:"g",attributes:{class:"".concat(F.familyPrefix,"-").concat(rr.GROUP)},children:[{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(rr.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(rr.PRIMARY),fill:"currentColor",d:o[1]}}]}:a={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:a}}var BT={found:!1,width:512,height:512};function OT(t,e){!u1&&!F.showMissingIcons&&t&&console.error('Icon with name "'.concat(t,'" and prefix "').concat(e,'" is missing.'))}function af(t,e){var n=e;return e==="fa"&&F.styleDefault!==null&&(e=yn()),new Promise(function(r,i){if(Gt("missingIconAbstract"),n==="fa"){var o=D1(t)||{};t=o.iconName||t,e=o.prefix||e}if(t&&e&&rf[e]&&rf[e][t]){var a=rf[e][t];return r(of(a))}OT(t,e),r(N(N({},BT),{},{icon:F.showMissingIcons&&t?Gt("missingIconAbstract")||{}:{}}))})}var k1=function(){},sf=F.measurePerformance&&ls&&ls.mark&&ls.measure?ls:{mark:k1,measure:k1},vo='FA "6.1.1"',PT=function(e){return sf.mark("".concat(vo," ").concat(e," begins")),function(){return N1(e)}},N1=function(e){sf.mark("".concat(vo," ").concat(e," ends")),sf.measure("".concat(vo," ").concat(e),"".concat(vo," ").concat(e," begins"),"".concat(vo," ").concat(e," ends"))},cf={begin:PT,end:N1},vs=function(){};function L1(t){var e=t.getAttribute?t.getAttribute(nr):null;return typeof e=="string"}function FT(t){var e=t.getAttribute?t.getAttribute(Hl):null,n=t.getAttribute?t.getAttribute(Ql):null;return e&&n}function zT(t){return t&&t.classList&&t.classList.contains&&t.classList.contains(F.replacementClass)}function RT(){if(F.autoReplaceSvg===!0)return bs.replace;var t=bs[F.autoReplaceSvg];return t||bs.replace}function jT(t){return te.createElementNS("http://www.w3.org/2000/svg",t)}function UT(t){return te.createElement(t)}function B1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.ceFn,r=n===void 0?t.tag==="svg"?jT:UT:n;if(typeof t=="string")return te.createTextNode(t);var i=r(t.tag);Object.keys(t.attributes||[]).forEach(function(a){i.setAttribute(a,t.attributes[a])});var o=t.children||[];return o.forEach(function(a){i.appendChild(B1(a,{ceFn:r}))}),i}function GT(t){var e=" ".concat(t.outerHTML," ");return e="".concat(e,"Font Awesome fontawesome.com "),e}var bs={replace:function(e){var n=e[0];if(n.parentNode)if(e[1].forEach(function(i){n.parentNode.insertBefore(B1(i),n)}),n.getAttribute(nr)===null&&F.keepOriginalSource){var r=te.createComment(GT(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(e){var n=e[0],r=e[1];if(~Yl(n).indexOf(F.replacementClass))return bs.replace(e);var i=new RegExp("".concat(F.familyPrefix,"-.*"));if(delete r[0].attributes.id,r[0].attributes.class){var o=r[0].attributes.class.split(" ").reduce(function(s,c){return c===F.replacementClass||c.match(i)?s.toSvg.push(c):s.toNode.push(c),s},{toNode:[],toSvg:[]});r[0].attributes.class=o.toSvg.join(" "),o.toNode.length===0?n.removeAttribute("class"):n.setAttribute("class",o.toNode.join(" "))}var a=r.map(function(s){return go(s)}).join(`
|
2132
|
-
`);n.setAttribute(nr,""),n.innerHTML=a}};function
|
2133
|
-
`),t.removeAttribute(n),r()}).catch(i)}else r()}else r()})}function
|
2131
|
+
}`;function M1(){var t=v1,e=b1,n=F.familyPrefix,r=F.replacementClass,i=TT;if(n!==t||r!==e){var o=new RegExp("\\.".concat(t,"\\-"),"g"),a=new RegExp("\\--".concat(t,"\\-"),"g"),s=new RegExp("\\.".concat(e),"g");i=i.replace(o,".".concat(n,"-")).replace(a,"--".concat(n,"-")).replace(s,".".concat(r))}return i}var T1=!1;function _l(){F.autoAddCss&&!T1&&(CT(M1()),T1=!0)}var IT={mixout:function(){return{dom:{css:M1,insertCss:_l}}},hooks:function(){return{beforeDOMElementCreation:function(){_l()},beforeI2svg:function(){_l()}}}},zt=hn||{};zt[Pt]||(zt[Pt]={}),zt[Pt].styles||(zt[Pt].styles={}),zt[Pt].hooks||(zt[Pt].hooks={}),zt[Pt].shims||(zt[Pt].shims=[]);var ut=zt[Pt],I1=[],NT=function t(){$.removeEventListener("DOMContentLoaded",t),ys=1,I1.map(function(e){return e()})},ys=!1;Ft&&(ys=($.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test($.readyState),ys||$.addEventListener("DOMContentLoaded",NT));function kT(t){!Ft||(ys?setTimeout(t,0):I1.push(t))}function Ao(t){var e=t.tag,n=t.attributes,r=n===void 0?{}:n,i=t.children,o=i===void 0?[]:i;return typeof t=="string"?D1(t):"<".concat(e," ").concat(ST(r),">").concat(o.map(Ao).join(""),"</").concat(e,">")}function N1(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}var LT=function(e,n){return function(r,i,o,a){return e.call(n,r,i,o,a)}},Wl=function(e,n,r,i){var o=Object.keys(e),a=o.length,s=i!==void 0?LT(n,i):n,c,u,f;for(r===void 0?(c=1,f=e[o[0]]):(c=0,f=r);c<a;c++)u=o[c],f=s(f,e[u],u,e);return f};function OT(t){for(var e=[],n=0,r=t.length;n<r;){var i=t.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var o=t.charCodeAt(n++);(o&64512)==56320?e.push(((i&1023)<<10)+(o&1023)+65536):(e.push(i),n--)}else e.push(i)}return e}function Xl(t){var e=OT(t);return e.length===1?e[0].toString(16):null}function BT(t,e){var n=t.length,r=t.charCodeAt(e),i;return r>=55296&&r<=56319&&n>e+1&&(i=t.charCodeAt(e+1),i>=56320&&i<=57343)?(r-55296)*1024+i-56320+65536:r}function k1(t){return Object.keys(t).reduce(function(e,n){var r=t[n],i=!!r.icon;return i?e[r.iconName]=r.icon:e[n]=r,e},{})}function Zl(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,i=r===void 0?!1:r,o=k1(e);typeof ut.hooks.addPack=="function"&&!i?ut.hooks.addPack(t,k1(e)):ut.styles[t]=N(N({},ut.styles[t]||{}),o),t==="fas"&&Zl("fa",e)}var wo=ut.styles,FT=ut.shims,PT=Object.values(x1),ql=null,L1={},O1={},B1={},F1={},P1={},zT=Object.keys(Ql);function RT(t){return~yT.indexOf(t)}function jT(t,e){var n=e.split("-"),r=n[0],i=n.slice(1).join("-");return r===t&&i!==""&&!RT(i)?i:null}var z1=function(){var e=function(o){return Wl(wo,function(a,s,c){return a[c]=Wl(s,o,{}),a},{})};L1=e(function(i,o,a){if(o[3]&&(i[o[3]]=a),o[2]){var s=o[2].filter(function(c){return typeof c=="number"});s.forEach(function(c){i[c.toString(16)]=a})}return i}),O1=e(function(i,o,a){if(i[a]=a,o[2]){var s=o[2].filter(function(c){return typeof c=="string"});s.forEach(function(c){i[c]=a})}return i}),P1=e(function(i,o,a){var s=o[2];return i[a]=a,s.forEach(function(c){i[c]=a}),i});var n="far"in wo||F.autoFetchSvg,r=Wl(FT,function(i,o){var a=o[0],s=o[1],c=o[2];return s==="far"&&!n&&(s="fas"),typeof a=="string"&&(i.names[a]={prefix:s,iconName:c}),typeof a=="number"&&(i.unicodes[a.toString(16)]={prefix:s,iconName:c}),i},{names:{},unicodes:{}});B1=r.names,F1=r.unicodes,ql=vs(F.styleDefault)};xT(function(t){ql=vs(t.styleDefault)}),z1();function Kl(t,e){return(L1[t]||{})[e]}function UT(t,e){return(O1[t]||{})[e]}function Zr(t,e){return(P1[t]||{})[e]}function R1(t){return B1[t]||{prefix:null,iconName:null}}function GT(t){var e=F1[t],n=Kl("fas",t);return e||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function mn(){return ql}var Jl=function(){return{prefix:null,iconName:null,rest:[]}};function vs(t){var e=Ql[t],n=ps[t]||ps[e],r=t in ut.styles?t:null;return n||r||null}function bs(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.skipLookups,r=n===void 0?!1:n,i=null,o=t.reduce(function(a,s){var c=jT(F.familyPrefix,s);if(wo[s]?(s=PT.includes(s)?fT[s]:s,i=s,a.prefix=s):zT.indexOf(s)>-1?(i=s,a.prefix=vs(s)):c?a.iconName=c:s!==F.replacementClass&&a.rest.push(s),!r&&a.prefix&&a.iconName){var u=i==="fa"?R1(a.iconName):{},f=Zr(a.prefix,a.iconName);u.prefix&&(i=null),a.iconName=u.iconName||f||a.iconName,a.prefix=u.prefix||a.prefix,a.prefix==="far"&&!wo.far&&wo.fas&&!F.autoFetchSvg&&(a.prefix="fas")}return a},Jl());return(o.prefix==="fa"||i==="fa")&&(o.prefix=mn()||"fas"),o}var HT=function(){function t(){J5(this,t),this.definitions={}}return $5(t,[{key:"add",value:function(){for(var n=this,r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];var a=i.reduce(this._pullDefinitions,{});Object.keys(a).forEach(function(s){n.definitions[s]=N(N({},n.definitions[s]||{}),a[s]),Zl(s,a[s]);var c=x1[s];c&&Zl(c,a[s]),z1()})}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(n,r){var i=r.prefix&&r.iconName&&r.icon?{0:r}:r;return Object.keys(i).map(function(o){var a=i[o],s=a.prefix,c=a.iconName,u=a.icon,f=u[2];n[s]||(n[s]={}),f.length>0&&f.forEach(function(l){typeof l=="string"&&(n[s][l]=u)}),n[s][c]=u}),n}}]),t}(),j1=[],qr={},Kr={},QT=Object.keys(Kr);function VT(t,e){var n=e.mixoutsTo;return j1=t,qr={},Object.keys(Kr).forEach(function(r){QT.indexOf(r)===-1&&delete Kr[r]}),j1.forEach(function(r){var i=r.mixout?r.mixout():{};if(Object.keys(i).forEach(function(a){typeof i[a]=="function"&&(n[a]=i[a]),fs(i[a])==="object"&&Object.keys(i[a]).forEach(function(s){n[a]||(n[a]={}),n[a][s]=i[a][s]})}),r.hooks){var o=r.hooks();Object.keys(o).forEach(function(a){qr[a]||(qr[a]=[]),qr[a].push(o[a])})}r.provides&&r.provides(Kr)}),n}function $l(t,e){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];var o=qr[t]||[];return o.forEach(function(a){e=a.apply(null,[e].concat(r))}),e}function ir(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=qr[t]||[];i.forEach(function(o){o.apply(null,n)})}function Rt(){var t=arguments[0],e=Array.prototype.slice.call(arguments,1);return Kr[t]?Kr[t].apply(null,e):void 0}function ef(t){t.prefix==="fa"&&(t.prefix="fas");var e=t.iconName,n=t.prefix||mn();if(!!e)return e=Zr(n,e)||e,N1(U1.definitions,n,e)||N1(ut.styles,n,e)}var U1=new HT,YT=function(){F.autoReplaceSvg=!1,F.observeMutations=!1,ir("noAuto")},_T={i2svg:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Ft?(ir("beforeI2svg",e),Rt("pseudoElements2svg",e),Rt("i2svg",e)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot;F.autoReplaceSvg===!1&&(F.autoReplaceSvg=!0),F.observeMutations=!0,kT(function(){XT({autoReplaceSvgRoot:n}),ir("watch",e)})}},WT={icon:function(e){if(e===null)return null;if(fs(e)==="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Zr(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&e.length===2){var n=e[1].indexOf("fa-")===0?e[1].slice(3):e[1],r=vs(e[0]);return{prefix:r,iconName:Zr(r,n)||n}}if(typeof e=="string"&&(e.indexOf("".concat(F.familyPrefix,"-"))>-1||e.match(dT))){var i=bs(e.split(" "),{skipLookups:!0});return{prefix:i.prefix||mn(),iconName:Zr(i.prefix,i.iconName)||i.iconName}}if(typeof e=="string"){var o=mn();return{prefix:o,iconName:Zr(o,e)||e}}}},He={noAuto:YT,config:F,dom:_T,parse:WT,library:U1,findIconDefinition:ef,toHtml:Ao},XT=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot,r=n===void 0?$:n;(Object.keys(ut.styles).length>0||F.autoFetchSvg)&&Ft&&F.autoReplaceSvg&&He.dom.i2svg({node:r})};function As(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return Ao(r)})}}),Object.defineProperty(t,"node",{get:function(){if(!!Ft){var r=$.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function ZT(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,a=t.transform;if(Yl(a)&&n.found&&!r.found){var s=n.width,c=n.height,u={x:s/c/2,y:.5};i.style=gs(N(N({},o),{},{"transform-origin":"".concat(u.x+a.x/16,"em ").concat(u.y+a.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}function qT(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,a=o===!0?"".concat(e,"-").concat(F.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:N(N({},i),{},{id:a}),children:r}]}]}function tf(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,o=t.iconName,a=t.transform,s=t.symbol,c=t.title,u=t.maskId,f=t.titleId,l=t.extra,d=t.watchable,h=d===void 0?!1:d,p=r.found?r:n,m=p.width,y=p.height,g=i==="fak",A=[F.replacementClass,o?"".concat(F.familyPrefix,"-").concat(o):""].filter(function(I){return l.classes.indexOf(I)===-1}).filter(function(I){return I!==""||!!I}).concat(l.classes).join(" "),w={children:[],attributes:N(N({},l.attributes),{},{"data-prefix":i,"data-icon":o,class:A,role:l.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(m," ").concat(y)})},C=g&&!~l.classes.indexOf("fa-fw")?{width:"".concat(m/y*16*.0625,"em")}:{};h&&(w.attributes[nr]=""),c&&(w.children.push({tag:"title",attributes:{id:w.attributes["aria-labelledby"]||"title-".concat(f||bo())},children:[c]}),delete w.attributes.title);var b=N(N({},w),{},{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:a,symbol:s,styles:N(N({},C),l.styles)}),v=r.found&&n.found?Rt("generateAbstractMask",b)||{children:[],attributes:{}}:Rt("generateAbstractIcon",b)||{children:[],attributes:{}},x=v.children,E=v.attributes;return b.children=x,b.attributes=E,s?qT(b):ZT(b)}function G1(t){var e=t.content,n=t.width,r=t.height,i=t.transform,o=t.title,a=t.extra,s=t.watchable,c=s===void 0?!1:s,u=N(N(N({},a.attributes),o?{title:o}:{}),{},{class:a.classes.join(" ")});c&&(u[nr]="");var f=N({},a.styles);Yl(i)&&(f.transform=MT({transform:i,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var l=gs(f);l.length>0&&(u.style=l);var d=[];return d.push({tag:"span",attributes:u,children:[e]}),o&&d.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),d}function KT(t){var e=t.content,n=t.title,r=t.extra,i=N(N(N({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),o=gs(r.styles);o.length>0&&(i.style=o);var a=[];return a.push({tag:"span",attributes:i,children:[e]}),n&&a.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),a}var nf=ut.styles;function rf(t){var e=t[0],n=t[1],r=t.slice(4),i=Pl(r,1),o=i[0],a=null;return Array.isArray(o)?a={tag:"g",attributes:{class:"".concat(F.familyPrefix,"-").concat(rr.GROUP)},children:[{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(rr.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(rr.PRIMARY),fill:"currentColor",d:o[1]}}]}:a={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:a}}var JT={found:!1,width:512,height:512};function $T(t,e){!w1&&!F.showMissingIcons&&t&&console.error('Icon with name "'.concat(t,'" and prefix "').concat(e,'" is missing.'))}function of(t,e){var n=e;return e==="fa"&&F.styleDefault!==null&&(e=mn()),new Promise(function(r,i){if(Rt("missingIconAbstract"),n==="fa"){var o=R1(t)||{};t=o.iconName||t,e=o.prefix||e}if(t&&e&&nf[e]&&nf[e][t]){var a=nf[e][t];return r(rf(a))}$T(t,e),r(N(N({},JT),{},{icon:F.showMissingIcons&&t?Rt("missingIconAbstract")||{}:{}}))})}var H1=function(){},af=F.measurePerformance&&hs&&hs.mark&&hs.measure?hs:{mark:H1,measure:H1},xo='FA "6.1.1"',eI=function(e){return af.mark("".concat(xo," ").concat(e," begins")),function(){return Q1(e)}},Q1=function(e){af.mark("".concat(xo," ").concat(e," ends")),af.measure("".concat(xo," ").concat(e),"".concat(xo," ").concat(e," begins"),"".concat(xo," ").concat(e," ends"))},sf={begin:eI,end:Q1},ws=function(){};function V1(t){var e=t.getAttribute?t.getAttribute(nr):null;return typeof e=="string"}function tI(t){var e=t.getAttribute?t.getAttribute(Gl):null,n=t.getAttribute?t.getAttribute(Hl):null;return e&&n}function nI(t){return t&&t.classList&&t.classList.contains&&t.classList.contains(F.replacementClass)}function rI(){if(F.autoReplaceSvg===!0)return xs.replace;var t=xs[F.autoReplaceSvg];return t||xs.replace}function iI(t){return $.createElementNS("http://www.w3.org/2000/svg",t)}function oI(t){return $.createElement(t)}function Y1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.ceFn,r=n===void 0?t.tag==="svg"?iI:oI:n;if(typeof t=="string")return $.createTextNode(t);var i=r(t.tag);Object.keys(t.attributes||[]).forEach(function(a){i.setAttribute(a,t.attributes[a])});var o=t.children||[];return o.forEach(function(a){i.appendChild(Y1(a,{ceFn:r}))}),i}function aI(t){var e=" ".concat(t.outerHTML," ");return e="".concat(e,"Font Awesome fontawesome.com "),e}var xs={replace:function(e){var n=e[0];if(n.parentNode)if(e[1].forEach(function(i){n.parentNode.insertBefore(Y1(i),n)}),n.getAttribute(nr)===null&&F.keepOriginalSource){var r=$.createComment(aI(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(e){var n=e[0],r=e[1];if(~Vl(n).indexOf(F.replacementClass))return xs.replace(e);var i=new RegExp("".concat(F.familyPrefix,"-.*"));if(delete r[0].attributes.id,r[0].attributes.class){var o=r[0].attributes.class.split(" ").reduce(function(s,c){return c===F.replacementClass||c.match(i)?s.toSvg.push(c):s.toNode.push(c),s},{toNode:[],toSvg:[]});r[0].attributes.class=o.toSvg.join(" "),o.toNode.length===0?n.removeAttribute("class"):n.setAttribute("class",o.toNode.join(" "))}var a=r.map(function(s){return Ao(s)}).join(`
|
2132
|
+
`);n.setAttribute(nr,""),n.innerHTML=a}};function _1(t){t()}function W1(t,e){var n=typeof e=="function"?e:ws;if(t.length===0)n();else{var r=_1;F.mutateApproach===uT&&(r=hn.requestAnimationFrame||_1),r(function(){var i=rI(),o=sf.begin("mutate");t.map(i),o(),n()})}}var cf=!1;function X1(){cf=!0}function uf(){cf=!1}var Cs=null;function Z1(t){if(!!g1&&!!F.observeMutations){var e=t.treeCallback,n=e===void 0?ws:e,r=t.nodeCallback,i=r===void 0?ws:r,o=t.pseudoElementsCallback,a=o===void 0?ws:o,s=t.observeMutationsRoot,c=s===void 0?$:s;Cs=new g1(function(u){if(!cf){var f=mn();Xr(u).forEach(function(l){if(l.type==="childList"&&l.addedNodes.length>0&&!V1(l.addedNodes[0])&&(F.searchPseudoElements&&a(l.target),n(l.target)),l.type==="attributes"&&l.target.parentNode&&F.searchPseudoElements&&a(l.target.parentNode),l.type==="attributes"&&V1(l.target)&&~gT.indexOf(l.attributeName))if(l.attributeName==="class"&&tI(l.target)){var d=bs(Vl(l.target)),h=d.prefix,p=d.iconName;l.target.setAttribute(Gl,h||f),p&&l.target.setAttribute(Hl,p)}else nI(l.target)&&i(l.target)})}}),Ft&&Cs.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function sI(){!Cs||Cs.disconnect()}function cI(t){var e=t.getAttribute("style"),n=[];return e&&(n=e.split(";").reduce(function(r,i){var o=i.split(":"),a=o[0],s=o.slice(1);return a&&s.length>0&&(r[a]=s.join(":").trim()),r},{})),n}function uI(t){var e=t.getAttribute("data-prefix"),n=t.getAttribute("data-icon"),r=t.innerText!==void 0?t.innerText.trim():"",i=bs(Vl(t));return i.prefix||(i.prefix=mn()),e&&n&&(i.prefix=e,i.iconName=n),i.iconName&&i.prefix||i.prefix&&r.length>0&&(i.iconName=UT(i.prefix,t.innerText)||Kl(i.prefix,Xl(t.innerText))),i}function lI(t){var e=Xr(t.attributes).reduce(function(i,o){return i.name!=="class"&&i.name!=="style"&&(i[o.name]=o.value),i},{}),n=t.getAttribute("title"),r=t.getAttribute("data-fa-title-id");return F.autoA11y&&(n?e["aria-labelledby"]="".concat(F.replacementClass,"-title-").concat(r||bo()):(e["aria-hidden"]="true",e.focusable="false")),e}function fI(){return{iconName:null,title:null,titleId:null,prefix:null,transform:yt,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function q1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=uI(t),r=n.iconName,i=n.prefix,o=n.rest,a=lI(t),s=$l("parseNodeAttributes",{},t),c=e.styleParser?cI(t):[];return N({iconName:r,title:t.getAttribute("title"),titleId:t.getAttribute("data-fa-title-id"),prefix:i,transform:yt,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:o,styles:c,attributes:a}},s)}var dI=ut.styles;function K1(t){var e=F.autoReplaceSvg==="nest"?q1(t,{styleParser:!1}):q1(t);return~e.extra.classes.indexOf(C1)?Rt("generateLayersText",t,e):Rt("generateSvgReplacementMutation",t,e)}function J1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!Ft)return Promise.resolve();var n=$.documentElement.classList,r=function(l){return n.add("".concat(A1,"-").concat(l))},i=function(l){return n.remove("".concat(A1,"-").concat(l))},o=F.autoFetchSvg?Object.keys(Ql):Object.keys(dI),a=[".".concat(C1,":not([").concat(nr,"])")].concat(o.map(function(f){return".".concat(f,":not([").concat(nr,"])")})).join(", ");if(a.length===0)return Promise.resolve();var s=[];try{s=Xr(t.querySelectorAll(a))}catch{}if(s.length>0)r("pending"),i("complete");else return Promise.resolve();var c=sf.begin("onTree"),u=s.reduce(function(f,l){try{var d=K1(l);d&&f.push(d)}catch(h){w1||h.name==="MissingIcon"&&console.error(h)}return f},[]);return new Promise(function(f,l){Promise.all(u).then(function(d){W1(d,function(){r("active"),r("complete"),i("pending"),typeof e=="function"&&e(),c(),f()})}).catch(function(d){c(),l(d)})})}function hI(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;K1(t).then(function(n){n&&W1([n],e)})}function pI(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(e||{}).icon?e:ef(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:ef(i||{})),t(r,N(N({},n),{},{mask:i}))}}var mI=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.transform,i=r===void 0?yt:r,o=n.symbol,a=o===void 0?!1:o,s=n.mask,c=s===void 0?null:s,u=n.maskId,f=u===void 0?null:u,l=n.title,d=l===void 0?null:l,h=n.titleId,p=h===void 0?null:h,m=n.classes,y=m===void 0?[]:m,g=n.attributes,A=g===void 0?{}:g,w=n.styles,C=w===void 0?{}:w;if(!!e){var b=e.prefix,v=e.iconName,x=e.icon;return As(N({type:"icon"},e),function(){return ir("beforeDOMElementCreation",{iconDefinition:e,params:n}),F.autoA11y&&(d?A["aria-labelledby"]="".concat(F.replacementClass,"-title-").concat(p||bo()):(A["aria-hidden"]="true",A.focusable="false")),tf({icons:{main:rf(x),mask:c?rf(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:b,iconName:v,transform:N(N({},yt),i),symbol:a,title:d,maskId:f,titleId:p,extra:{attributes:A,styles:C,classes:y}})})}},gI={mixout:function(){return{icon:pI(mI)}},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=J1,n.nodeCallback=hI,n}}},provides:function(e){e.i2svg=function(n){var r=n.node,i=r===void 0?$:r,o=n.callback,a=o===void 0?function(){}:o;return J1(i,a)},e.generateSvgReplacementMutation=function(n,r){var i=r.iconName,o=r.title,a=r.titleId,s=r.prefix,c=r.transform,u=r.symbol,f=r.mask,l=r.maskId,d=r.extra;return new Promise(function(h,p){Promise.all([of(i,s),f.iconName?of(f.iconName,f.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(m){var y=Pl(m,2),g=y[0],A=y[1];h([n,tf({icons:{main:g,mask:A},prefix:s,iconName:i,transform:c,symbol:u,maskId:l,title:o,titleId:a,extra:d,watchable:!0})])}).catch(p)})},e.generateAbstractIcon=function(n){var r=n.children,i=n.attributes,o=n.main,a=n.transform,s=n.styles,c=gs(s);c.length>0&&(i.style=c);var u;return Yl(a)&&(u=Rt("generateAbstractTransformGrouping",{main:o,transform:a,containerWidth:o.width,iconWidth:o.width})),r.push(u||o.icon),{children:r,attributes:i}}}},yI={mixout:function(){return{layer:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.classes,o=i===void 0?[]:i;return As({type:"layer"},function(){ir("beforeDOMElementCreation",{assembler:n,params:r});var a=[];return n(function(s){Array.isArray(s)?s.map(function(c){a=a.concat(c.abstract)}):a=a.concat(s.abstract)}),[{tag:"span",attributes:{class:["".concat(F.familyPrefix,"-layers")].concat(ds(o)).join(" ")},children:a}]})}}}},vI={mixout:function(){return{counter:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.title,o=i===void 0?null:i,a=r.classes,s=a===void 0?[]:a,c=r.attributes,u=c===void 0?{}:c,f=r.styles,l=f===void 0?{}:f;return As({type:"counter",content:n},function(){return ir("beforeDOMElementCreation",{content:n,params:r}),KT({content:n.toString(),title:o,extra:{attributes:u,styles:l,classes:["".concat(F.familyPrefix,"-layers-counter")].concat(ds(s))}})})}}}},bI={mixout:function(){return{text:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.transform,o=i===void 0?yt:i,a=r.title,s=a===void 0?null:a,c=r.classes,u=c===void 0?[]:c,f=r.attributes,l=f===void 0?{}:f,d=r.styles,h=d===void 0?{}:d;return As({type:"text",content:n},function(){return ir("beforeDOMElementCreation",{content:n,params:r}),G1({content:n,transform:N(N({},yt),o),title:s,extra:{attributes:l,styles:h,classes:["".concat(F.familyPrefix,"-layers-text")].concat(ds(u))}})})}}},provides:function(e){e.generateLayersText=function(n,r){var i=r.title,o=r.transform,a=r.extra,s=null,c=null;if(y1){var u=parseInt(getComputedStyle(n).fontSize,10),f=n.getBoundingClientRect();s=f.width/u,c=f.height/u}return F.autoA11y&&!i&&(a.attributes["aria-hidden"]="true"),Promise.resolve([n,G1({content:n.innerHTML,width:s,height:c,transform:o,title:i,extra:a,watchable:!0})])}}},AI=new RegExp('"',"ug"),$1=[1105920,1112319];function wI(t){var e=t.replace(AI,""),n=BT(e,0),r=n>=$1[0]&&n<=$1[1],i=e.length===2?e[0]===e[1]:!1;return{value:Xl(i?e[0]:e),isSecondary:r||i}}function ey(t,e){var n="".concat(cT).concat(e.replace(":","-"));return new Promise(function(r,i){if(t.getAttribute(n)!==null)return r();var o=Xr(t.children),a=o.filter(function(v){return v.getAttribute(Ul)===e})[0],s=hn.getComputedStyle(t,e),c=s.getPropertyValue("font-family").match(hT),u=s.getPropertyValue("font-weight"),f=s.getPropertyValue("content");if(a&&!c)return t.removeChild(a),r();if(c&&f!=="none"&&f!==""){var l=s.getPropertyValue("content"),d=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(c[2])?ps[c[2].toLowerCase()]:pT[u],h=wI(l),p=h.value,m=h.isSecondary,y=c[0].startsWith("FontAwesome"),g=Kl(d,p),A=g;if(y){var w=GT(p);w.iconName&&w.prefix&&(g=w.iconName,d=w.prefix)}if(g&&!m&&(!a||a.getAttribute(Gl)!==d||a.getAttribute(Hl)!==A)){t.setAttribute(n,A),a&&t.removeChild(a);var C=fI(),b=C.extra;b.attributes[Ul]=e,of(g,d).then(function(v){var x=tf(N(N({},C),{},{icons:{main:v,mask:Jl()},prefix:d,iconName:A,extra:b,watchable:!0})),E=$.createElement("svg");e==="::before"?t.insertBefore(E,t.firstChild):t.appendChild(E),E.outerHTML=x.map(function(I){return Ao(I)}).join(`
|
2133
|
+
`),t.removeAttribute(n),r()}).catch(i)}else r()}else r()})}function xI(t){return Promise.all([ey(t,"::before"),ey(t,"::after")])}function CI(t){return t.parentNode!==document.head&&!~lT.indexOf(t.tagName.toUpperCase())&&!t.getAttribute(Ul)&&(!t.parentNode||t.parentNode.tagName!=="svg")}function ty(t){if(!!Ft)return new Promise(function(e,n){var r=Xr(t.querySelectorAll("*")).filter(CI).map(xI),i=sf.begin("searchPseudoElements");X1(),Promise.all(r).then(function(){i(),uf(),e()}).catch(function(){i(),uf(),n()})})}var EI={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=ty,n}}},provides:function(e){e.pseudoElements2svg=function(n){var r=n.node,i=r===void 0?$:r;F.searchPseudoElements&&ty(i)}}},ny=!1,SI={mixout:function(){return{dom:{unwatch:function(){X1(),ny=!0}}}},hooks:function(){return{bootstrap:function(){Z1($l("mutationObserverCallbacks",{}))},noAuto:function(){sI()},watch:function(n){var r=n.observeMutationsRoot;ny?uf():Z1($l("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},ry=function(e){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e.toLowerCase().split(" ").reduce(function(r,i){var o=i.toLowerCase().split("-"),a=o[0],s=o.slice(1).join("-");if(a&&s==="h")return r.flipX=!0,r;if(a&&s==="v")return r.flipY=!0,r;if(s=parseFloat(s),isNaN(s))return r;switch(a){case"grow":r.size=r.size+s;break;case"shrink":r.size=r.size-s;break;case"left":r.x=r.x-s;break;case"right":r.x=r.x+s;break;case"up":r.y=r.y-s;break;case"down":r.y=r.y+s;break;case"rotate":r.rotate=r.rotate+s;break}return r},n)},DI={mixout:function(){return{parse:{transform:function(n){return ry(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-transform");return i&&(n.transform=ry(i)),n}}},provides:function(e){e.generateAbstractTransformGrouping=function(n){var r=n.main,i=n.transform,o=n.containerWidth,a=n.iconWidth,s={transform:"translate(".concat(o/2," 256)")},c="translate(".concat(i.x*32,", ").concat(i.y*32,") "),u="scale(".concat(i.size/16*(i.flipX?-1:1),", ").concat(i.size/16*(i.flipY?-1:1),") "),f="rotate(".concat(i.rotate," 0 0)"),l={transform:"".concat(c," ").concat(u," ").concat(f)},d={transform:"translate(".concat(a/2*-1," -256)")},h={outer:s,inner:l,path:d};return{tag:"g",attributes:N({},h.outer),children:[{tag:"g",attributes:N({},h.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:N(N({},r.icon.attributes),h.path)}]}]}}}},lf={x:0,y:0,width:"100%",height:"100%"};function iy(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}function MI(t){return t.tag==="g"?t.children:[t]}var TI={hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-mask"),o=i?bs(i.split(" ").map(function(a){return a.trim()})):Jl();return o.prefix||(o.prefix=mn()),n.mask=o,n.maskId=r.getAttribute("data-fa-mask-id"),n}}},provides:function(e){e.generateAbstractMask=function(n){var r=n.children,i=n.attributes,o=n.main,a=n.mask,s=n.maskId,c=n.transform,u=o.width,f=o.icon,l=a.width,d=a.icon,h=DT({transform:c,containerWidth:l,iconWidth:u}),p={tag:"rect",attributes:N(N({},lf),{},{fill:"white"})},m=f.children?{children:f.children.map(iy)}:{},y={tag:"g",attributes:N({},h.inner),children:[iy(N({tag:f.tag,attributes:N(N({},f.attributes),h.path)},m))]},g={tag:"g",attributes:N({},h.outer),children:[y]},A="mask-".concat(s||bo()),w="clip-".concat(s||bo()),C={tag:"mask",attributes:N(N({},lf),{},{id:A,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[p,g]},b={tag:"defs",children:[{tag:"clipPath",attributes:{id:w},children:MI(d)},C]};return r.push(b,{tag:"rect",attributes:N({fill:"currentColor","clip-path":"url(#".concat(w,")"),mask:"url(#".concat(A,")")},lf)}),{children:r,attributes:i}}}},II={provides:function(e){var n=!1;hn.matchMedia&&(n=hn.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){var r=[],i={fill:"currentColor"},o={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};r.push({tag:"path",attributes:N(N({},i),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var a=N(N({},o),{},{attributeName:"opacity"}),s={tag:"circle",attributes:N(N({},i),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||s.children.push({tag:"animate",attributes:N(N({},o),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:N(N({},a),{},{values:"1;0;1;1;0;1;"})}),r.push(s),r.push({tag:"path",attributes:N(N({},i),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:n?[]:[{tag:"animate",attributes:N(N({},a),{},{values:"1;0;0;0;0;1;"})}]}),n||r.push({tag:"path",attributes:N(N({},i),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:N(N({},a),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:r}}}},NI={hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-symbol"),o=i===null?!1:i===""?!0:i;return n.symbol=o,n}}}},kI=[IT,gI,yI,vI,bI,EI,SI,DI,TI,II,NI];VT(kI,{mixoutsTo:He}),He.noAuto,He.config,He.library,He.dom,He.parse,He.findIconDefinition,He.toHtml;var q=He.icon;He.layer,He.text,He.counter;/**
|
2134
2134
|
* @license
|
2135
2135
|
* Copyright 2018 Google LLC
|
2136
2136
|
* SPDX-License-Identifier: BSD-3-Clause
|
2137
|
-
*/const h6=Hr(class extends lo{constructor(t){var e;if(super(t),t.type!==zt.ATTRIBUTE||t.name!=="style"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce((e,n)=>{const r=t[n];return r==null?e:e+`${n=n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(t,[e]){const{style:n}=t.element;if(this.ct===void 0){this.ct=new Set;for(const r in e)this.ct.add(r);return this.render(e)}this.ct.forEach(r=>{e[r]==null&&(this.ct.delete(r),r.includes("-")?n.removeProperty(r):n[r]="")});for(const r in e){const i=e[r];i!=null&&(this.ct.add(r),r.includes("-")?n.setProperty(r,i):n[r]=i)}return Ee}}),W1="close-dialog";function p6(){return new CustomEvent(W1,{bubbles:!0})}function Wr(t="default",e=document.body){const n=document.createElement("div");n.classList.add("gs-modal"),t!="default"&&n.classList.add(t);const r=o=>{var a;switch(o.key){case"Escape":{const s=n.querySelector(".btn-cancel");s&&(s.click(),o.stopPropagation());break}case"Enter":{if(((a=o.target)==null?void 0:a.tagName)=="TEXTAREA")return;n.querySelector(".btn-primary").click(),o.stopPropagation();break}}};n.addEventListener("keydown",r),Ge(D`<div class="backdrop"></div><div class="content"></div>`,n);const i=()=>{n.querySelector(".backdrop").addEventListener("transitionend",()=>n.remove()),n.classList.remove("visible"),document.body.classList.remove(Gn)};return n.addEventListener("keydown",o=>{o.stopPropagation()}),n.addEventListener(W1,i),e.appendChild(n),window.requestAnimationFrame(()=>n.classList.add("visible")),t!="tour"&&document.body.classList.add(Gn),{content:n.querySelector(".content"),close:i}}function Ye(t,e={}){var i;const n=Wr(),r=e.title;return(i=e.okLabel)!=null||(e.okLabel="OK"),new Promise((o,a)=>{const s=()=>{n.close(),o(!0)},c=D`${r?D`<div class="modal-title">${r}</div>`:G}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?D`<button @click="${()=>{n.close(),o(!1)}}">Cancel</button>`:G} <button @click="${s}">${e.okLabel}</button></div>`;Ge(c,n.content)})}function m6(t,e){var n,r;rn((n=t.scale)==null?void 0:n.type)?g6(t,e):Ue((r=t.scale)==null?void 0:r.type)?y6(t,e):Ye("Not implemented (yet).")}function g6(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=Wr(),o=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,a=new Set,s=h=>{n(e.actions.filterByNominal({values:r.domain().filter(p=>a.has(p)),attribute:t.attribute,remove:h})),i.close()},c=h=>{const p=h.target;p.checked?a.add(p.value):a.delete(p.value),d()},u=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button ?disabled="${!a.size}" @click="${()=>s(!1)}">${ne(fo).node[0]} Retain</button> <button ?disabled="${!a.size}" @click="${()=>s(!0)}">${ne(Fl).node[0]} Remove</button></div>`,f=r,l=D`<p>Please select one or more categories and choose an action.</p><ul class="gs-checkbox-list" @input="${c}" tabindex="0">${r.domain().map(h=>D`<li><label class="checkbox"><span class="color" style="${h6({backgroundColor:f(h).toString()})}"></span> <input type="checkbox" .value="${h}"> ${h}</label></li>`)}</ul>`;function d(){Ge(D`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}d(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function y6(t,e){const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=Wr(),a=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=h=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn-primary" ?disabled="${typeof i=="undefined"}" @click="${()=>s()}">${ne(fo).node[0]} Retain</button></div>`,u=h=>{r=h.target.value,d()},f=h=>{const p=h.target.value;i=p.length>0?+p:void 0,d()},l=D`<div class="gs-form-group"><label>Select samples where <em>${t.name}</em> is</label> <select .value="${r}" @change="${u}">${Object.entries(v6).map(([h,p])=>D`<option .value="${h}">${p}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function d(){Ge(D`${a}<div class="modal-body">${l}</div>${c()}`,o.content)}d(),o.content.querySelector("select").focus()}const v6={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function b6(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=[{operand:void 0,operator:"lt"}],i=Wr(),o=D`<div class="modal-title">Group by threshold on <em>${t.name}</em></div>`,a=d=>{n(e.actions.groupByThresholds({attribute:t.attribute,thresholds:r})),i.close()},s=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn-primary" ?disabled="${!A6(r)}" @click="${()=>a()}">${ne(ho).node[0]} Group</button></div>`,c=d=>{const h=d.target.value;r[0].operator=h,l()},u=d=>{const h=d.target.value;r[0].operand=h.length>0?+h:void 0,l()},f=D`<div class="gs-form-group"><label>Split into 2 groups using the threshold:</label><div class="threshold-flex"><select .value="${r[0].operator}" @change="${c}"><option value="lt">${"<"}</option><option value="lte">${"\u2264"}</option></select> <input .value="${""+r[0].operand}" type="number" placeholder="Numeric value" @input="${u}"></div></div>`;function l(){Ge(D`${o}<div class="modal-body">${f}</div>${s()}`,i.content)}l(),i.content.querySelector("select").focus()}function A6(t){return t[0].operator&&typeof t[0].operand=="number"}function df(t,e,n,r){var l;const i=r.actions,o=e.attribute,a=r.provenance.storeHelper.getDispatcher(),s=[];t&&s.push({label:t,type:"header"});const c=d=>{const h=r.provenance.getActionInfo(d);return{label:h.title,icon:h.icon,callback:()=>a(d)}},u=(...d)=>s.push(...d.map(c));u(i.sortBy({attribute:o}));const f=(l=e==null?void 0:e.type)!=null?l:"identifier";return f!="quantitative"?(f!="identifier"&&u(i.groupByNominal({attribute:o}),i.retainFirstOfEach({attribute:o})),u(i.filterByNominal({attribute:o,values:[n]}),i.filterByNominal({attribute:o,remove:!0,values:[n]}))):(u(i.groupToQuartiles({attribute:o})),s.push({icon:ho,label:"Group by thresholds...",callback:()=>b6(e,r)}),x6(n)?u(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):u(i.removeUndefined({attribute:o}))),f!=="identifier"&&s.push({icon:fo,label:"Advanced filter...",callback:()=>m6(e,r)}),s}function x6(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function w6(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Ht={},or={};Object.defineProperty(or,"__esModule",{value:!0}),or.ActionCreators=or.ActionTypes=void 0;var ar={UNDO:"@@redux-undo/UNDO",REDO:"@@redux-undo/REDO",JUMP_TO_FUTURE:"@@redux-undo/JUMP_TO_FUTURE",JUMP_TO_PAST:"@@redux-undo/JUMP_TO_PAST",JUMP:"@@redux-undo/JUMP",CLEAR_HISTORY:"@@redux-undo/CLEAR_HISTORY"};or.ActionTypes=ar;var C6={undo:function(){return{type:ar.UNDO}},redo:function(){return{type:ar.REDO}},jumpToFuture:function(e){return{type:ar.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:ar.JUMP_TO_PAST,index:e}},jump:function(e){return{type:ar.JUMP,index:e}},clearHistory:function(){return{type:ar.CLEAR_HISTORY}}};or.ActionCreators=C6;var xt={};Object.defineProperty(xt,"__esModule",{value:!0}),xt.parseActions=xs,xt.isHistory=S6,xt.includeAction=E6,xt.excludeAction=D6,xt.combineFilters=M6,xt.groupByActionTypes=T6,xt.newHistory=I6;function xs(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function S6(t){return typeof t.present!="undefined"&&typeof t.future!="undefined"&&typeof t.past!="undefined"&&Array.isArray(t.future)&&Array.isArray(t.past)}function E6(t){var e=xs(t);return function(n){return e.indexOf(n.type)>=0}}function D6(t){var e=xs(t);return function(n){return e.indexOf(n.type)<0}}function M6(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.reduce(function(r,i){return function(o,a,s){return r(o,a,s)&&i(o,a,s)}},function(){return!0})}function T6(t){var e=xs(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function I6(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;return{past:t,present:e,future:n,group:r,_latestUnfiltered:e,index:t.length,limit:t.length+n.length+1}}var X1={},Xr={};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.set=R6,Xr.start=P6,Xr.end=F6,Xr.log=z6;function wt(t){return L6(t)||N6(t)||k6()}function k6(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function N6(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function L6(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}var ws,nt,hf={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function B6(){nt={header:[],prev:[],action:[],next:[],msgs:[]}}function O6(){var t=nt,e=t.header,n=t.prev,r=t.next,i=t.action,o=t.msgs;if(console.group){var a,s,c,u,f;(a=console).groupCollapsed.apply(a,wt(e)),(s=console).log.apply(s,wt(n)),(c=console).log.apply(c,wt(i)),(u=console).log.apply(u,wt(r)),(f=console).log.apply(f,wt(o)),console.groupEnd()}else{var l,d,h,p,m;(l=console).log.apply(l,wt(e)),(d=console).log.apply(d,wt(n)),(h=console).log.apply(h,wt(i)),(p=console).log.apply(p,wt(r)),(m=console).log.apply(m,wt(o))}}function pf(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function P6(t,e){B6(),ws&&(console.group?(nt.header=["%credux-undo","font-style: italic","action",t.type],nt.action=pf("action",hf.action,t),nt.prev=pf("prev history",hf.prevState,e)):(nt.header=["redux-undo action",t.type],nt.action=["action",t],nt.prev=["prev history",e]))}function F6(t){ws&&(console.group?nt.next=pf("next history",hf.nextState,t):nt.next=["next history",t],O6())}function z6(){if(ws){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];nt.msgs=nt.msgs.concat([].concat(e,[`
|
2138
|
-
`]))}}function R6(t){ws=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(w){return typeof w}:e=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=C;var n=a(Xr),r=or,i=xt;function o(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return o=function(){return b},b}function a(b){if(b&&b.__esModule)return b;if(b===null||e(b)!=="object"&&typeof b!="function")return{default:b};var v=o();if(v&&v.has(b))return v.get(b);var w={},E=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var k in b)if(Object.prototype.hasOwnProperty.call(b,k)){var L=E?Object.getOwnPropertyDescriptor(b,k):null;L&&(L.get||L.set)?Object.defineProperty(w,k,L):w[k]=b[k]}return w.default=b,v&&v.set(b,w),w}function s(b,v){var w=Object.keys(b);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(b);v&&(E=E.filter(function(k){return Object.getOwnPropertyDescriptor(b,k).enumerable})),w.push.apply(w,E)}return w}function c(b){for(var v=1;v<arguments.length;v++){var w=arguments[v]!=null?arguments[v]:{};v%2?s(Object(w),!0).forEach(function(E){u(b,E,w[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(w)):s(Object(w)).forEach(function(E){Object.defineProperty(b,E,Object.getOwnPropertyDescriptor(w,E))})}return b}function u(b,v,w){return v in b?Object.defineProperty(b,v,{value:w,enumerable:!0,configurable:!0,writable:!0}):b[v]=w,b}function f(b){return h(b)||d(b)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function d(b){if(Symbol.iterator in Object(b)||Object.prototype.toString.call(b)==="[object Arguments]")return Array.from(b)}function h(b){if(Array.isArray(b)){for(var v=0,w=new Array(b.length);v<b.length;v++)w[v]=b[v];return w}}function p(b,v){var w=(0,i.newHistory)([],b,[]);return v&&(w._latestUnfiltered=null),w}function m(b,v,w,E){var k=b.past.length+1;n.log("inserting",v),n.log("new free: ",w-k);var L=b.past,I=b._latestUnfiltered,P=w&&w<=k,Z=L.slice(P?1:0),Q=I!=null?[].concat(f(Z),[I]):Z;return(0,i.newHistory)(Q,v,[],E)}function y(b,v){if(v<0||v>=b.future.length)return b;var w=b.past,E=b.future,k=b._latestUnfiltered,L=[].concat(f(w),[k],f(E.slice(0,v))),I=E[v],P=E.slice(v+1);return(0,i.newHistory)(L,I,P)}function g(b,v){if(v<0||v>=b.past.length)return b;var w=b.past,E=b.future,k=b._latestUnfiltered,L=w.slice(0,v),I=[].concat(f(w.slice(v+1)),[k],f(E)),P=w[v];return(0,i.newHistory)(L,P,I)}function x(b,v){return v>0?y(b,v-1):v<0?g(b,b.past.length+v):b}function A(b,v){return v.indexOf(b)>-1?b:!b}function C(b){var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(v.debug);var w=c({limit:void 0,filter:function(){return!0},groupBy:function(){return null},undoType:r.ActionTypes.UNDO,redoType:r.ActionTypes.REDO,jumpToPastType:r.ActionTypes.JUMP_TO_PAST,jumpToFutureType:r.ActionTypes.JUMP_TO_FUTURE,jumpType:r.ActionTypes.JUMP,neverSkipReducer:!1,ignoreInitialState:!1,syncFilter:!1},v,{initTypes:(0,i.parseActions)(v.initTypes,["@@redux-undo/INIT"]),clearHistoryType:(0,i.parseActions)(v.clearHistoryType,[r.ActionTypes.CLEAR_HISTORY])}),E=w.neverSkipReducer?function(L,I){for(var P=arguments.length,Z=new Array(P>2?P-2:0),Q=2;Q<P;Q++)Z[Q-2]=arguments[Q];return c({},L,{present:b.apply(void 0,[L.present,I].concat(Z))})}:function(L){return L},k;return function(){var L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:k,I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(I,L);for(var P=L,Z=arguments.length,Q=new Array(Z>2?Z-2:0),fe=2;fe<Z;fe++)Q[fe-2]=arguments[fe];if(!k)if(n.log("history is uninitialized"),L===void 0){var Se={type:"@@redux-undo/CREATE_HISTORY"},Cn=b.apply(void 0,[L,Se].concat(Q));return P=p(Cn,w.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(P),P}else(0,i.isHistory)(L)?(P=k=w.ignoreInitialState?L:(0,i.newHistory)(L.past,L.present,L.future),n.log("initialHistory initialized: initialState is a history",k)):(P=k=p(L,w.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",k));var W;switch(I.type){case void 0:return P;case w.undoType:return W=x(P,-1),n.log("perform undo"),n.end(W),E.apply(void 0,[W,I].concat(Q));case w.redoType:return W=x(P,1),n.log("perform redo"),n.end(W),E.apply(void 0,[W,I].concat(Q));case w.jumpToPastType:return W=g(P,I.index),n.log("perform jumpToPast to ".concat(I.index)),n.end(W),E.apply(void 0,[W,I].concat(Q));case w.jumpToFutureType:return W=y(P,I.index),n.log("perform jumpToFuture to ".concat(I.index)),n.end(W),E.apply(void 0,[W,I].concat(Q));case w.jumpType:return W=x(P,I.index),n.log("perform jump to ".concat(I.index)),n.end(W),E.apply(void 0,[W,I].concat(Q));case A(I.type,w.clearHistoryType):return W=p(P.present,w.ignoreInitialState),n.log("perform clearHistory"),n.end(W),E.apply(void 0,[W,I].concat(Q));default:if(W=b.apply(void 0,[P.present,I].concat(Q)),w.initTypes.some(function(td){return td===I.type}))return n.log("reset history due to init action"),n.end(k),k;if(P._latestUnfiltered===W)return P;var We=typeof w.filter=="function"&&!w.filter(I,W,P);if(We){var Ro=(0,i.newHistory)(P.past,W,P.future,P.group);return w.syncFilter||(Ro._latestUnfiltered=P._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(Ro),Ro}var jo=w.groupBy(I,W,P);if(jo!=null&&jo===P.group){var Vs=(0,i.newHistory)(P.past,W,P.future,P.group);return n.log("groupBy grouped the action with the previous action"),n.end(Vs),Vs}return P=m(P,W,w.limit,jo),n.log("inserted new state into history"),n.end(P),P}}}})(X1),function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ActionTypes",{enumerable:!0,get:function(){return e.ActionTypes}}),Object.defineProperty(t,"ActionCreators",{enumerable:!0,get:function(){return e.ActionCreators}}),Object.defineProperty(t,"parseActions",{enumerable:!0,get:function(){return n.parseActions}}),Object.defineProperty(t,"isHistory",{enumerable:!0,get:function(){return n.isHistory}}),Object.defineProperty(t,"includeAction",{enumerable:!0,get:function(){return n.includeAction}}),Object.defineProperty(t,"excludeAction",{enumerable:!0,get:function(){return n.excludeAction}}),Object.defineProperty(t,"combineFilters",{enumerable:!0,get:function(){return n.combineFilters}}),Object.defineProperty(t,"groupByActionTypes",{enumerable:!0,get:function(){return n.groupByActionTypes}}),Object.defineProperty(t,"newHistory",{enumerable:!0,get:function(){return n.newHistory}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.default}});var e=or,n=xt,r=i(X1);function i(o){return o&&o.__esModule?o:{default:o}}}(Ht);var j6=w6(Ht);function mf(t){return t.split("-")[0]}function Z1(t){return t.split("-")[1]}function q1(t){return["top","bottom"].includes(mf(t))?"x":"y"}function K1(t){return t==="y"?"height":"width"}function J1(t,e,n){let{reference:r,floating:i}=t;const o=r.x+r.width/2-i.width/2,a=r.y+r.height/2-i.height/2,s=q1(e),c=K1(s),u=r[c]/2-i[c]/2,f=mf(e),l=s==="x";let d;switch(f){case"top":d={x:o,y:r.y-i.height};break;case"bottom":d={x:o,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:a};break;case"left":d={x:r.x-i.width,y:a};break;default:d={x:r.x,y:r.y}}switch(Z1(e)){case"start":d[s]-=u*(n&&l?-1:1);break;case"end":d[s]+=u*(n&&l?-1:1);break}return d}const U6=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,s=await(a.isRTL==null?void 0:a.isRTL(e));let c=await a.getElementRects({reference:t,floating:e,strategy:i}),{x:u,y:f}=J1(c,r,s),l=r,d={};for(let h=0;h<o.length;h++){const{name:p,fn:m}=o[h],{x:y,y:g,data:x,reset:A}=await m({x:u,y:f,initialPlacement:r,placement:l,strategy:i,middlewareData:d,rects:c,platform:a,elements:{reference:t,floating:e}});if(u=y!=null?y:u,f=g!=null?g:f,d=U(T({},d),{[p]:T(T({},d[p]),x)}),A){typeof A=="object"&&(A.placement&&(l=A.placement),A.rects&&(c=A.rects===!0?await a.getElementRects({reference:t,floating:e,strategy:i}):A.rects),{x:u,y:f}=J1(c,l,s)),h=-1;continue}}return{x:u,y:f,placement:l,strategy:i,middlewareData:d}};function G6(t){return T({top:0,right:0,bottom:0,left:0},t)}function H6(t){return typeof t!="number"?G6(t):{top:t,right:t,bottom:t,left:t}}function Cs(t){return U(T({},t),{top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height})}async function Q6(t,e){var n;e===void 0&&(e={});const{x:r,y:i,platform:o,rects:a,elements:s,strategy:c}=t,{boundary:u="clippingAncestors",rootBoundary:f="viewport",elementContext:l="floating",altBoundary:d=!1,padding:h=0}=e,p=H6(h),y=s[d?l==="floating"?"reference":"floating":l],g=Cs(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(y)))==null||n?y:y.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(s.floating)),boundary:u,rootBoundary:f,strategy:c})),x=Cs(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({rect:l==="floating"?U(T({},a.floating),{x:r,y:i}):a.reference,offsetParent:await(o.getOffsetParent==null?void 0:o.getOffsetParent(s.floating)),strategy:c}):a[l]);return{top:g.top-x.top+p.top,bottom:x.bottom-g.bottom+p.bottom,left:g.left-x.left+p.left,right:x.right-g.right+p.right}}const V6={left:"right",right:"left",bottom:"top",top:"bottom"};function Ss(t){return t.replace(/left|right|bottom|top/g,e=>V6[e])}function Y6(t,e,n){n===void 0&&(n=!1);const r=Z1(t),i=q1(t),o=K1(i);let a=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[o]>e.floating[o]&&(a=Ss(a)),{main:a,cross:Ss(a)}}const _6={start:"end",end:"start"};function $1(t){return t.replace(/start|end/g,e=>_6[e])}function W6(t){const e=Ss(t);return[$1(t),e,$1(e)]}const X6=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n;const{placement:r,middlewareData:i,rects:o,initialPlacement:a,platform:s,elements:c}=e,k=t,{mainAxis:u=!0,crossAxis:f=!0,fallbackPlacements:l,fallbackStrategy:d="bestFit",flipAlignment:h=!0}=k,p=j2(k,["mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","flipAlignment"]),m=mf(r),g=l||(m===a||!h?[Ss(a)]:W6(a)),x=[a,...g],A=await Q6(e,p),C=[];let b=((n=i.flip)==null?void 0:n.overflows)||[];if(u&&C.push(A[m]),f){const{main:L,cross:I}=Y6(r,o,await(s.isRTL==null?void 0:s.isRTL(c.floating)));C.push(A[L],A[I])}if(b=[...b,{placement:r,overflows:C}],!C.every(L=>L<=0)){var v,w;const L=((v=(w=i.flip)==null?void 0:w.index)!=null?v:0)+1,I=x[L];if(I)return{data:{index:L,overflows:b},reset:{placement:I}};let P="bottom";switch(d){case"bestFit":{var E;const Z=(E=b.map(Q=>[Q,Q.overflows.filter(fe=>fe>0).reduce((fe,Se)=>fe+Se,0)]).sort((Q,fe)=>Q[1]-fe[1])[0])==null?void 0:E[0].placement;Z&&(P=Z);break}case"initialPlacement":P=a;break}if(r!==P)return{reset:{placement:P}}}return{}}}};function ey(t){return t&&t.document&&t.location&&t.alert&&t.setInterval}function Qt(t){if(t==null)return window;if(!ey(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function bo(t){return Qt(t).getComputedStyle(t)}function Vt(t){return ey(t)?"":t?(t.nodeName||"").toLowerCase():""}function ty(){const t=navigator.userAgentData;return t!=null&&t.brands?t.brands.map(e=>e.brand+"/"+e.version).join(" "):navigator.userAgent}function Ct(t){return t instanceof Qt(t).HTMLElement}function Zr(t){return t instanceof Qt(t).Element}function Z6(t){return t instanceof Qt(t).Node}function gf(t){if(typeof ShadowRoot=="undefined")return!1;const e=Qt(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Es(t){const{overflow:e,overflowX:n,overflowY:r}=bo(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function q6(t){return["table","td","th"].includes(Vt(t))}function ny(t){const e=/firefox/i.test(ty()),n=bo(t);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||e&&n.willChange==="filter"||e&&(n.filter?n.filter!=="none":!1)}function ry(){return!/^((?!chrome|android).)*safari/i.test(ty())}const iy=Math.min,Ao=Math.max,Ds=Math.round;function sr(t,e,n){var r,i,o,a;e===void 0&&(e=!1),n===void 0&&(n=!1);const s=t.getBoundingClientRect();let c=1,u=1;e&&Ct(t)&&(c=t.offsetWidth>0&&Ds(s.width)/t.offsetWidth||1,u=t.offsetHeight>0&&Ds(s.height)/t.offsetHeight||1);const f=Zr(t)?Qt(t):window,l=!ry()&&n,d=(s.left+(l&&(r=(i=f.visualViewport)==null?void 0:i.offsetLeft)!=null?r:0))/c,h=(s.top+(l&&(o=(a=f.visualViewport)==null?void 0:a.offsetTop)!=null?o:0))/u,p=s.width/c,m=s.height/u;return{width:p,height:m,top:h,right:d+p,bottom:h+m,left:d,x:d,y:h}}function vn(t){return((Z6(t)?t.ownerDocument:t.document)||window.document).documentElement}function Ms(t){return Zr(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function oy(t){return sr(vn(t)).left+Ms(t).scrollLeft}function K6(t){const e=sr(t);return Ds(e.width)!==t.offsetWidth||Ds(e.height)!==t.offsetHeight}function J6(t,e,n){const r=Ct(e),i=vn(e),o=sr(t,r&&K6(e),n==="fixed");let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(r||!r&&n!=="fixed")if((Vt(e)!=="body"||Es(i))&&(a=Ms(e)),Ct(e)){const c=sr(e,!0);s.x=c.x+e.clientLeft,s.y=c.y+e.clientTop}else i&&(s.x=oy(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function ay(t){return Vt(t)==="html"?t:t.assignedSlot||t.parentNode||(gf(t)?t.host:null)||vn(t)}function sy(t){return!Ct(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function $6(t){let e=ay(t);for(gf(e)&&(e=e.host);Ct(e)&&!["html","body"].includes(Vt(e));){if(ny(e))return e;e=e.parentNode}return null}function yf(t){const e=Qt(t);let n=sy(t);for(;n&&q6(n)&&getComputedStyle(n).position==="static";)n=sy(n);return n&&(Vt(n)==="html"||Vt(n)==="body"&&getComputedStyle(n).position==="static"&&!ny(n))?e:n||$6(t)||e}function cy(t){if(Ct(t))return{width:t.offsetWidth,height:t.offsetHeight};const e=sr(t);return{width:e.width,height:e.height}}function eI(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=Ct(n),o=vn(n);if(n===o)return e;let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&r!=="fixed")&&((Vt(n)!=="body"||Es(o))&&(a=Ms(n)),Ct(n))){const c=sr(n,!0);s.x=c.x+n.clientLeft,s.y=c.y+n.clientTop}return U(T({},e),{x:e.x-a.scrollLeft+s.x,y:e.y-a.scrollTop+s.y})}function tI(t,e){const n=Qt(t),r=vn(t),i=n.visualViewport;let o=r.clientWidth,a=r.clientHeight,s=0,c=0;if(i){o=i.width,a=i.height;const u=ry();(u||!u&&e==="fixed")&&(s=i.offsetLeft,c=i.offsetTop)}return{width:o,height:a,x:s,y:c}}function nI(t){var e;const n=vn(t),r=Ms(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=Ao(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=Ao(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let s=-r.scrollLeft+oy(t);const c=-r.scrollTop;return bo(i||n).direction==="rtl"&&(s+=Ao(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:c}}function uy(t){const e=ay(t);return["html","body","#document"].includes(Vt(e))?t.ownerDocument.body:Ct(e)&&Es(e)?e:uy(e)}function ly(t,e){var n;e===void 0&&(e=[]);const r=uy(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=Qt(r),a=i?[o].concat(o.visualViewport||[],Es(r)?r:[]):r,s=e.concat(a);return i?s:s.concat(ly(a))}function rI(t,e){const n=e==null||e.getRootNode==null?void 0:e.getRootNode();if(t!=null&&t.contains(e))return!0;if(n&&gf(n)){let r=e;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function iI(t,e){const n=sr(t,!1,e==="fixed"),r=n.top+t.clientTop,i=n.left+t.clientLeft;return{top:r,left:i,x:i,y:r,right:i+t.clientWidth,bottom:r+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}function fy(t,e,n){return e==="viewport"?Cs(tI(t,n)):Zr(e)?iI(e,n):Cs(nI(vn(t)))}function oI(t){const e=ly(t),r=["absolute","fixed"].includes(bo(t).position)&&Ct(t)?yf(t):t;return Zr(r)?e.filter(i=>Zr(i)&&rI(i,r)&&Vt(i)!=="body"):[]}function aI(t){let{element:e,boundary:n,rootBoundary:r,strategy:i}=t;const a=[...n==="clippingAncestors"?oI(e):[].concat(n),r],s=a[0],c=a.reduce((u,f)=>{const l=fy(e,f,i);return u.top=Ao(l.top,u.top),u.right=iy(l.right,u.right),u.bottom=iy(l.bottom,u.bottom),u.left=Ao(l.left,u.left),u},fy(e,s,i));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}const sI={getClippingRect:aI,convertOffsetParentRelativeRectToViewportRelativeRect:eI,isElement:Zr,getDimensions:cy,getOffsetParent:yf,getDocumentElement:vn,getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:J6(e,yf(n),r),floating:U(T({},cy(n)),{x:0,y:0})}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>bo(t).direction==="rtl"},cI=(t,e,n)=>U6(t,e,T({platform:sI},n));let St;const xo=[],vf=ss(t=>t(),150,!1);function wo(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}St&&(St.remove(),St=void 0,document.body.classList.remove(Gn))}function dy(t){var e;if(!(t<1)){for(let n=t;n<xo.length;n++)(e=xo[n])==null||e.remove(),xo[n]=void 0;for(const n of xo[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const uI=()=>D`<li class="menu-divider"></li>`,lI=t=>D`<li class="menu-header">${t.label||"-"}</li>`,fI=(t,e)=>D`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>vf(()=>{const r=n.target.closest("li");pI(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>vf(()=>dy(e+1))}"><span>${t.label}</span></a></li>`,dI=t=>D`<li><a @mouseup="${()=>{wo(),t.callback()}}">${t.icon?ne(t.icon).node[0]:""} ${t.label}</a> ${t.ellipsisCallback?D`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${ne(A5).node[0]}</a>`:G}</li>`,hI=t=>D`<li><span class="disabled-item">${t.icon?ne(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function hy(t,e=1){switch(t.type){case"divider":return uI();case"header":return lI(t);default:return t.submenu?fI(t,e):t.callback?dI(t):hI(t)}}function pI(t,e,n){py(t,e,n,"right-start"),e.classList.add("active")}function py(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{vf(()=>{})}),Ge(t.map(o=>hy(o,n)),i),St.appendChild(i),dy(n),xo[n]=i,cI(e,i,{placement:r!=null?r:"right-start",middleware:[X6()]}).then(({x:o,y:a})=>{const s=i.querySelector(":scope > li");s&&(a-=s.getBoundingClientRect().top),i.style.left=`${o}px`,i.style.top=`${a}px`})}function my(t,e,n){n!=null||(n="bottom-start"),wo();const r=performance.now(),i=document.body;St=document.createElement("div"),St.classList.add("gs-context-menu-backdrop"),St.addEventListener("click",wo),St.addEventListener("contextmenu",wo),St.addEventListener("mouseup",()=>{performance.now()-r>500&&wo()},{once:!0}),i.appendChild(St),document.body.classList.add(Gn),py(t.items,e,0,n)}function gy(t,e){my(t,mI(e),"right-start"),e.preventDefault()}function mI(t){return{getBoundingClientRect(){return{width:0,height:0,x:t.clientX,y:t.clientY,top:t.clientY,left:t.clientX,right:t.clientX,bottom:t.clientY,toJSON:void 0}}}}const bf={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},Ts="SAMPLE_ATTRIBUTE",yy="SAMPLE_NAME",gI=/^attribute-(.*)$/;class vy extends jr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing:1,resolve:{scale:{default:"independent"},axis:{default:"independent"}}},e.context,void 0,"sample-metadata"),this.sampleView=e,this._attributeHighlighState={backgroundOpacity:1,currentAttribute:void 0,abortController:new AbortController},this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(Ts,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(yy,n=>by),this.addInteractionEventListener("contextmenu",this.handleContextMenu.bind(this)),this.addInteractionEventListener("mousemove",(n,r)=>{var s;const i=r.target,o=this._findSampleForMouseEvent(n,r),a=i&&((s=this.getAttributeInfoFromView(i))==null?void 0:s.name)||void 0;if(o){const c=JSON.stringify([o.id,a]);this.context.updateTooltip(c,u=>Promise.resolve(this.sampleToTooltip(u)))}this._handleAttributeHighlight(a)}),He([...this.sampleView.getAncestors()]).addInteractionEventListener("mousemove",(n,r)=>{if(!!this._attributeHighlighState.currentAttribute){if(r.target){for(const i of r.target.getAncestors())if(i==this)return}this._handleAttributeHighlight(void 0)}})}getEncoding(){return{}}render(e,n,r={}){!this.isVisible()||super.render(e,n,U(T({},r),{clipRect:this.sampleView._clipBySummary(n)}))}_handleAttributeHighlight(e){const n=this._attributeHighlighState;e!=n.currentAttribute&&(n.abortController.abort(),n.abortController=new AbortController,this.context.animator.transition(T({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:eg,signal:n.abortController.signal},e?{to:.1,duration:1e3,delay:n.backgroundOpacity<1?0:500}:{to:1,duration:200,delay:150})).catch(r=>{}),this.context.animator.requestRender()),n.currentAttribute=e}getSample(e){var n;return(n=this.sampleView.sampleHierarchy.sampleData)==null?void 0:n.entities[e]}_findSampleForMouseEvent(e,n){return this.sampleView.getSampleAt(n.point.y-this.sampleView.childCoords.y)}_getAttributeOpacity(e){const n=this._attributeHighlighState;return e==n.currentAttribute?1:n.backgroundOpacity}handleContextMenu(e,n){const r=n.uiEvent,i=this._findSampleForMouseEvent(e,n);if(!i){r.preventDefault();return}const o=[],a=this.getAttributeInfoFromView(n.target);if(a){const s=i.attributes[a.name];o.push(...df(D`Attribute: <strong>${a.name}</strong>`,a,s,this.sampleView))}else o.push(...df(D`Sample: <strong>${i.displayName}</strong>`,by,i.id,this.sampleView));gy({items:o},r)}_setSamples(e){if(this.childCount)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;Mg(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof Ae){const a=o.mark;a.initializeEncoders(),i.push(a.initializeGraphics().then(s=>a)),n.addObserver(s=>{a.initializeData(),a.updateGraphicsData()},o)}}),Promise.allSettled(i).then(o=>{for(const a of o)"value"in a?a.value.finalizeGraphicsInitialization():"reason"in a&&console.error(a.reason)}),r.publishData(e),this.visit(o=>{o.name.startsWith("title")&&n.findDataSourceByKey(o).load()})}_createViews(){const e=[];e.push(this.context.createView(vI(),this));for(const n of this._getAttributeNames()){const r=this.context.createView(this._createAttributeViewSpec(n),this);r.opacityFunction=i=>i*this._getAttributeOpacity(n),e.push(r)}this.setChildren(e),Ig(this)}_getAttributeDef(e){var n,r;return(r=(n=this.sampleView.spec.samples)==null?void 0:n.attributes)==null?void 0:r[e]}_getAttributeNames(){return this._cache("attributeNames",()=>[...this.sampleView.getSamples().flatMap(r=>Object.keys(r.attributes)).reduce((r,i)=>r.add(i),new Set)])}_createAttributeViewSpec(e){const n=this._getAttributeDef(e);let r=n?n.type:void 0;if(!r){const i=this.sampleView.getSamples();switch(oh(i.map(o=>o.attributes[e]))){case"integer":case"number":r=bf.QUANTITATIVE;break;default:r=bf.NOMINAL}}return yI(e,U(T({},n||{}),{type:r}))}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e==null?void 0:e.name.match(gI);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:Ts,specifier:i},accessor:(o,a)=>a.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:D`<em class="attribute">${i}</em>`}}}getAttributeInfo(e){return this.getAttributeInfoFromView(this._findViewForAttribute(e))}sampleToTooltip(e){const[n,r]=JSON.parse(e),i=this.getSample(n),o=(s,c)=>bI(c)?this.getAttributeInfo(s).scale(c):"transparent",a=D`<table class="attributes">${Object.entries(i.attributes).map(([s,c])=>D`<tr class="${t5({hovered:s==r})}"><th>${s}</th><td>${zg(c)}</td><td class="color" .style="background-color: ${o(s,c)}"></td></tr>`)}</table>`;return D`<div class="title"><strong>${i.displayName||i.id}</strong></div>${a}`}getDefaultResolution(e,n){return"independent"}handleVerboseCommand(e){const n=e;for(const r of this._getAttributeNames()){const i=this.getAttributeInfo(r);if((i.type==yl||i.type==vl)&&this.sampleView.getSamples().find(a=>a.attributes[i.name]==n)){const a=this.sampleView.actions.filterByNominal({attribute:{type:Ts,specifier:r},values:[n]}),s=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(s)&&!s.payload.remove&&s.payload.attribute.type==Ts&&s.payload.attribute.specifier==r&&s.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[Ht.ActionCreators.undo(),a]:a),!0}}return!1}isPickingSupported(){return!1}}function yI(t,e){var i,o;const n=`attributes["${t}"]`,r={name:`attribute-${t}`,title:{text:t,orient:"bottom",align:"right",baseline:"middle",offset:5,angle:-90,dy:-.5,fontSize:11},visible:(i=e.visible)!=null?i:!0,width:(o=e.width)!=null?o:10,transform:[{type:"filter",expr:`datum.${n} != null`}],mark:{type:"rect",xOffset:-.5},encoding:{facetIndex:{field:"indexNumber"},color:{field:n,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==bf.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale,axis:null}),r}function vI(){return{name:"metadata-sample-name",title:{text:"Sample name",orient:"bottom",anchor:"start",offset:5,fontSize:11},width:140,mark:{type:"text",align:"left",baseline:"middle",size:11,flushY:!1},encoding:{facetIndex:{field:"indexNumber"},x:{value:0},x2:{value:1},y:{value:0},y2:{value:1},text:{field:"displayName"}}}}function bI(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const by=Object.freeze({name:"sample",attribute:{type:yy},accessor:t=>t,type:"identifier",scale:void 0});class AI extends Ot{constructor(e){super({title:{text:"Groups",orient:"none"},width:{step:22},data:{dynamicSource:!0},transform:[{type:"filter",expr:"datum._depth > 0"},{type:"formula",as:"_y1",expr:"datum._index * 2"},{type:"formula",as:"_y2",expr:"datum._index * 2 + 1"},{type:"formula",as:"_NA",expr:"datum.label == null"},{type:"formula",as:"label",expr:"datum.label != null ? datum.label: 'NA'"}],encoding:{x:{field:"_depth",type:"ordinal",scale:{align:0,padding:.2272727},axis:null},y:{field:"_y1",type:"nominal",scale:{type:"ordinal",domain:Wt(500)},axis:null},y2:{field:"_y2"}},layer:[{title:"Group",mark:{type:"rect",clip:!0,color:"#e8e8e8"}},{mark:{type:"text",clip:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"label"},opacity:{field:"_NA",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[1,.3]}}}}]},e.context,void 0,"sample-groups"),this.sampleView=e,this._addBroadcastHandler("layoutComputed",()=>{this.updateRange()})}updateRange(){var o,a,s;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e!=null&&e.length))return;const n=(s=(a=this.sampleView)==null?void 0:a.childCoords.height)!=null?s:0,r=this.getScaleResolution("y"),i=[];for(const c of e)i.push(1-(c.locSize.location+c.locSize.size)/n),i.push(1-c.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i,o;const e=(o=(i=this.sampleView.getLocations())==null?void 0:i.groups)!=null?o:[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(a=>({_index:a.key.index,_name:a.key.group.name,_depth:a.key.depth,attribute:a.key.attributeLabel,label:a.key.group.label,n:a.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),He([...this.getAncestors()]).visit(a=>no(a,"size"))}}function dt(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];throw Error("[Immer] minified error nr: "+t+(n.length?" "+n.map(function(i){return"'"+i+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function bn(t){return!!t&&!!t[ae]}function An(t){return!!t&&(function(e){if(!e||typeof e!="object")return!1;var n=Object.getPrototypeOf(e);if(n===null)return!0;var r=Object.hasOwnProperty.call(n,"constructor")&&n.constructor;return r===Object||typeof r=="function"&&Function.toString.call(r)===II}(t)||Array.isArray(t)||!!t[Iy]||!!t.constructor[Iy]||Af(t)||xf(t))}function cr(t,e,n){n===void 0&&(n=!1),qr(t)===0?(n?Object.keys:Jr)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function qr(t){var e=t[ae];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:Af(t)?2:xf(t)?3:0}function Kr(t,e){return qr(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function xI(t,e){return qr(t)===2?t.get(e):t[e]}function Ay(t,e,n){var r=qr(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function xy(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function Af(t){return MI&&t instanceof Map}function xf(t){return TI&&t instanceof Set}function ur(t){return t.o||t.t}function wf(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=ky(t);delete e[ae];for(var n=Jr(e),r=0;r<n.length;r++){var i=n[r],o=e[i];o.writable===!1&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(e[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:t[i]})}return Object.create(Object.getPrototypeOf(t),e)}function Cf(t,e){return e===void 0&&(e=!1),Sf(t)||bn(t)||!An(t)||(qr(t)>1&&(t.set=t.add=t.clear=t.delete=wI),Object.freeze(t),e&&cr(t,function(n,r){return Cf(r,!0)},!0)),t}function wI(){dt(2)}function Sf(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function Et(t){var e=Bf[t];return e||dt(18,t),e}function CI(t,e){Bf[t]||(Bf[t]=e)}function Ef(){return Co}function Df(t,e){e&&(Et("Patches"),t.u=[],t.s=[],t.v=e)}function Is(t){Mf(t),t.p.forEach(SI),t.p=null}function Mf(t){t===Co&&(Co=t.l)}function wy(t){return Co={p:[],l:Co,h:t,m:!0,_:0}}function SI(t){var e=t[ae];e.i===0||e.i===1?e.j():e.O=!0}function Tf(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||Et("ES5").S(e,t,r),r?(n[ae].P&&(Is(e),dt(4)),An(t)&&(t=ks(e,t),e.l||Ns(e,t)),e.u&&Et("Patches").M(n[ae].t,t,e.u,e.s)):t=ks(e,n,[]),Is(e),e.u&&e.v(e.u,e.s),t!==Ty?t:void 0}function ks(t,e,n){if(Sf(e))return e;var r=e[ae];if(!r)return cr(e,function(o,a){return Cy(t,r,e,o,a,n)},!0),e;if(r.A!==t)return e;if(!r.P)return Ns(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=wf(r.k):r.o;cr(r.i===3?new Set(i):i,function(o,a){return Cy(t,r,i,o,a,n)}),Ns(t,i,!1),n&&t.u&&Et("Patches").R(r,n,t.u,t.s)}return r.o}function Cy(t,e,n,r,i,o){if(bn(i)){var a=ks(t,i,o&&e&&e.i!==3&&!Kr(e.D,r)?o.concat(r):void 0);if(Ay(n,r,a),!bn(a))return;t.m=!1}if(An(i)&&!Sf(i)){if(!t.h.F&&t._<1)return;ks(t,i),e&&e.A.l||Ns(t,i)}}function Ns(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&Cf(e,n)}function If(t,e){var n=t[ae];return(n?ur(n):t)[e]}function Sy(t,e){if(e in t)for(var n=Object.getPrototypeOf(t);n;){var r=Object.getOwnPropertyDescriptor(n,e);if(r)return r;n=Object.getPrototypeOf(n)}}function xn(t){t.P||(t.P=!0,t.l&&xn(t.l))}function kf(t){t.o||(t.o=wf(t.t))}function Nf(t,e,n){var r=Af(e)?Et("MapSet").N(e,n):xf(e)?Et("MapSet").T(e,n):t.g?function(i,o){var a=Array.isArray(i),s={i:a?1:0,A:o?o.A:Ef(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=s,u=So;a&&(c=[s],u=Eo);var f=Proxy.revocable(c,u),l=f.revoke,d=f.proxy;return s.k=d,s.j=l,d}(e,n):Et("ES5").J(e,n);return(n?n.A:Ef()).p.push(r),r}function EI(t){return bn(t)||dt(22,t),function e(n){if(!An(n))return n;var r,i=n[ae],o=qr(n);if(i){if(!i.P&&(i.i<4||!Et("ES5").K(i)))return i.t;i.I=!0,r=Ey(n,o),i.I=!1}else r=Ey(n,o);return cr(r,function(a,s){i&&xI(i.t,a)===s||Ay(r,a,e(s))}),o===3?new Set(r):r}(t)}function Ey(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return wf(t)}function DI(){function t(o,a){var s=i[o];return s?s.enumerable=a:i[o]=s={configurable:!0,enumerable:a,get:function(){var c=this[ae];return So.get(c,o)},set:function(c){var u=this[ae];So.set(u,o,c)}},s}function e(o){for(var a=o.length-1;a>=0;a--){var s=o[a][ae];if(!s.P)switch(s.i){case 5:r(s)&&xn(s);break;case 4:n(s)&&xn(s)}}}function n(o){for(var a=o.t,s=o.k,c=Jr(s),u=c.length-1;u>=0;u--){var f=c[u];if(f!==ae){var l=a[f];if(l===void 0&&!Kr(a,f))return!0;var d=s[f],h=d&&d[ae];if(h?h.t!==l:!xy(d,l))return!0}}var p=!!a[ae];return c.length!==Jr(a).length+(p?0:1)}function r(o){var a=o.k;if(a.length!==o.t.length)return!0;var s=Object.getOwnPropertyDescriptor(a,a.length-1);if(s&&!s.get)return!0;for(var c=0;c<a.length;c++)if(!a.hasOwnProperty(c))return!0;return!1}var i={};CI("ES5",{J:function(o,a){var s=Array.isArray(o),c=function(f,l){if(f){for(var d=Array(l.length),h=0;h<l.length;h++)Object.defineProperty(d,""+h,t(h,!0));return d}var p=ky(l);delete p[ae];for(var m=Jr(p),y=0;y<m.length;y++){var g=m[y];p[g]=t(g,f||!!p[g].enumerable)}return Object.create(Object.getPrototypeOf(l),p)}(s,o),u={i:s?5:4,A:a?a.A:Ef(),P:!1,I:!1,D:{},l:a,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,ae,{value:u,writable:!0}),c},S:function(o,a,s){s?bn(a)&&a[ae].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[ae];if(f){var l=f.t,d=f.k,h=f.D,p=f.i;if(p===4)cr(d,function(A){A!==ae&&(l[A]!==void 0||Kr(l,A)?h[A]||c(d[A]):(h[A]=!0,xn(f)))}),cr(l,function(A){d[A]!==void 0||Kr(d,A)||(h[A]=!1,xn(f))});else if(p===5){if(r(f)&&(xn(f),h.length=!0),d.length<l.length)for(var m=d.length;m<l.length;m++)h[m]=!1;else for(var y=l.length;y<d.length;y++)h[y]=!0;for(var g=Math.min(d.length,l.length),x=0;x<g;x++)d.hasOwnProperty(x)||(h[x]=!0),h[x]===void 0&&c(d[x])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var Dy,Co,Lf=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",MI=typeof Map!="undefined",TI=typeof Set!="undefined",My=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",Ty=Lf?Symbol.for("immer-nothing"):((Dy={})["immer-nothing"]=!0,Dy),Iy=Lf?Symbol.for("immer-draftable"):"__$immer_draftable",ae=Lf?Symbol.for("immer-state"):"__$immer_state",II=""+Object.prototype.constructor,Jr=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,ky=Object.getOwnPropertyDescriptors||function(t){var e={};return Jr(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},Bf={},So={get:function(t,e){if(e===ae)return t;var n=ur(t);if(!Kr(n,e))return function(i,o,a){var s,c=Sy(o,a);return c?"value"in c?c.value:(s=c.get)===null||s===void 0?void 0:s.call(i.k):void 0}(t,n,e);var r=n[e];return t.I||!An(r)?r:r===If(t.t,e)?(kf(t),t.o[e]=Nf(t.A.h,r,t)):r},has:function(t,e){return e in ur(t)},ownKeys:function(t){return Reflect.ownKeys(ur(t))},set:function(t,e,n){var r=Sy(ur(t),e);if(r!=null&&r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=If(ur(t),e),o=i==null?void 0:i[ae];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(xy(n,i)&&(n!==void 0||Kr(t.t,e)))return!0;kf(t),xn(t)}return t.o[e]===n&&typeof n!="number"&&(n!==void 0||e in t.o)||(t.o[e]=n,t.D[e]=!0,!0)},deleteProperty:function(t,e){return If(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,kf(t),xn(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=ur(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){dt(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){dt(12)}},Eo={};cr(So,function(t,e){Eo[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),Eo.deleteProperty=function(t,e){return Eo.set.call(this,t,e,void 0)},Eo.set=function(t,e,n){return So.set.call(this,t[0],e,n,t[0])};var kI=function(){function t(n){var r=this;this.g=My,this.F=!0,this.produce=function(i,o,a){if(typeof i=="function"&&typeof o!="function"){var s=o;o=i;var c=r;return function(m){var y=this;m===void 0&&(m=s);for(var g=arguments.length,x=Array(g>1?g-1:0),A=1;A<g;A++)x[A-1]=arguments[A];return c.produce(m,function(C){var b;return(b=o).call.apply(b,[y,C].concat(x))})}}var u;if(typeof o!="function"&&dt(6),a!==void 0&&typeof a!="function"&&dt(7),An(i)){var f=wy(r),l=Nf(r,i,void 0),d=!0;try{u=o(l),d=!1}finally{d?Is(f):Mf(f)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(m){return Df(f,a),Tf(m,f)},function(m){throw Is(f),m}):(Df(f,a),Tf(u,f))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===Ty&&(u=void 0),r.F&&Cf(u,!0),a){var h=[],p=[];Et("Patches").M(i,u,h,p),a(h,p)}return u}dt(21,i)},this.produceWithPatches=function(i,o){if(typeof i=="function")return function(u){for(var f=arguments.length,l=Array(f>1?f-1:0),d=1;d<f;d++)l[d-1]=arguments[d];return r.produceWithPatches(u,function(h){return i.apply(void 0,[h].concat(l))})};var a,s,c=r.produce(i,o,function(u,f){a=u,s=f});return typeof Promise!="undefined"&&c instanceof Promise?c.then(function(u){return[u,a,s]}):[c,a,s]},typeof(n==null?void 0:n.useProxies)=="boolean"&&this.setUseProxies(n.useProxies),typeof(n==null?void 0:n.autoFreeze)=="boolean"&&this.setAutoFreeze(n.autoFreeze)}var e=t.prototype;return e.createDraft=function(n){An(n)||dt(8),bn(n)&&(n=EI(n));var r=wy(this),i=Nf(this,n,void 0);return i[ae].C=!0,Mf(r),i},e.finishDraft=function(n,r){var i=n&&n[ae],o=i.A;return Df(o,r),Tf(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!My&&dt(20),this.g=n},e.applyPatches=function(n,r){var i;for(i=r.length-1;i>=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}i>-1&&(r=r.slice(i+1));var a=Et("Patches").$;return bn(n)?a(n,r):this.produce(n,function(s){return a(s,r)})},t}(),_e=new kI,NI=_e.produce;_e.produceWithPatches.bind(_e),_e.setAutoFreeze.bind(_e),_e.setUseProxies.bind(_e),_e.applyPatches.bind(_e),_e.createDraft.bind(_e),_e.finishDraft.bind(_e);var Ls=NI;function LI(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Ny(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function Ly(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Ny(Object(n),!0).forEach(function(r){LI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ny(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ie(t){return"Minified Redux error #"+t+"; visit https://redux.js.org/Errors?code="+t+" for the full message or use the non-minified dev environment for full errors. "}var By=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Of=function(){return Math.random().toString(36).substring(7).split("").join(".")},Bs={INIT:"@@redux/INIT"+Of(),REPLACE:"@@redux/REPLACE"+Of(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Of()}};function BI(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function Oy(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(Ie(0));if(typeof e=="function"&&typeof n=="undefined"&&(n=e,e=void 0),typeof n!="undefined"){if(typeof n!="function")throw new Error(Ie(1));return n(Oy)(t,e)}if(typeof t!="function")throw new Error(Ie(2));var i=t,o=e,a=[],s=a,c=!1;function u(){s===a&&(s=a.slice())}function f(){if(c)throw new Error(Ie(3));return o}function l(m){if(typeof m!="function")throw new Error(Ie(4));if(c)throw new Error(Ie(5));var y=!0;return u(),s.push(m),function(){if(!!y){if(c)throw new Error(Ie(6));y=!1,u();var x=s.indexOf(m);s.splice(x,1),a=null}}}function d(m){if(!BI(m))throw new Error(Ie(7));if(typeof m.type=="undefined")throw new Error(Ie(8));if(c)throw new Error(Ie(9));try{c=!0,o=i(o,m)}finally{c=!1}for(var y=a=s,g=0;g<y.length;g++){var x=y[g];x()}return m}function h(m){if(typeof m!="function")throw new Error(Ie(10));i=m,d({type:Bs.REPLACE})}function p(){var m,y=l;return m={subscribe:function(x){if(typeof x!="object"||x===null)throw new Error(Ie(11));function A(){x.next&&x.next(f())}A();var C=y(A);return{unsubscribe:C}}},m[By]=function(){return this},m}return d({type:Bs.INIT}),r={dispatch:d,subscribe:l,getState:f,replaceReducer:h},r[By]=p,r}function OI(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Bs.INIT});if(typeof r=="undefined")throw new Error(Ie(12));if(typeof n(void 0,{type:Bs.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error(Ie(13))})}function Pf(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var i=e[r];typeof t[i]=="function"&&(n[i]=t[i])}var o=Object.keys(n),a;try{OI(n)}catch(s){a=s}return function(c,u){if(c===void 0&&(c={}),a)throw a;for(var f=!1,l={},d=0;d<o.length;d++){var h=o[d],p=n[h],m=c[h],y=p(m,u);if(typeof y=="undefined")throw u&&u.type,new Error(Ie(14));l[h]=y,f=f||y!==m}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Os(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.length===0?function(r){return r}:e.length===1?e[0]:e.reduce(function(r,i){return function(){return r(i.apply(void 0,arguments))}})}function PI(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(r){return function(){var i=r.apply(void 0,arguments),o=function(){throw new Error(Ie(15))},a={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},s=e.map(function(c){return c(a)});return o=Os.apply(void 0,s)(i.dispatch),Ly(Ly({},i),{},{dispatch:o})}}}var Ps="NOT_FOUND";function FI(t){var e;return{get:function(r){return e&&t(e.key,r)?e.value:Ps},put:function(r,i){e={key:r,value:i}},getEntries:function(){return e?[e]:[]},clear:function(){e=void 0}}}function zI(t,e){var n=[];function r(s){var c=n.findIndex(function(f){return e(s,f.key)});if(c>-1){var u=n[c];return c>0&&(n.splice(c,1),n.unshift(u)),u.value}return Ps}function i(s,c){r(s)===Ps&&(n.unshift({key:s,value:c}),n.length>t&&n.pop())}function o(){return n}function a(){n=[]}return{get:r,put:i,getEntries:o,clear:a}}var RI=function(e,n){return e===n};function jI(t){return function(n,r){if(n===null||r===null||n.length!==r.length)return!1;for(var i=n.length,o=0;o<i;o++)if(!t(n[o],r[o]))return!1;return!0}}function UI(t,e){var n=typeof e=="object"?e:{equalityCheck:e},r=n.equalityCheck,i=r===void 0?RI:r,o=n.maxSize,a=o===void 0?1:o,s=n.resultEqualityCheck,c=jI(i),u=a===1?FI(c):zI(a,c);function f(){var l=u.get(arguments);if(l===Ps){if(l=t.apply(null,arguments),s){var d=u.getEntries(),h=d.find(function(p){return s(p.value,l)});h&&(l=h.value)}u.put(arguments,l)}return l}return f.clearCache=function(){return u.clear()},f}function GI(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every(function(r){return typeof r=="function"})){var n=e.map(function(r){return typeof r=="function"?"function "+(r.name||"unnamed")+"()":typeof r}).join(", ");throw new Error("createSelector expects all input-selectors to be functions, but received the following types: ["+n+"]")}return e}function HI(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=function(){for(var a=arguments.length,s=new Array(a),c=0;c<a;c++)s[c]=arguments[c];var u=0,f,l={memoizeOptions:void 0},d=s.pop();if(typeof d=="object"&&(l=d,d=s.pop()),typeof d!="function")throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof d+"]");var h=l,p=h.memoizeOptions,m=p===void 0?n:p,y=Array.isArray(m)?m:[m],g=GI(s),x=t.apply(void 0,[function(){return u++,d.apply(null,arguments)}].concat(y)),A=t(function(){for(var C=[],b=g.length,v=0;v<b;v++)C.push(g[v].apply(null,arguments));return f=x.apply(null,C),f});return Object.assign(A,{resultFunc:d,memoizedResultFunc:x,dependencies:g,lastResult:function(){return f},recomputations:function(){return u},resetRecomputations:function(){return u=0}}),A};return i}var QI=HI(UI);function Py(t){var e=function(r){var i=r.dispatch,o=r.getState;return function(a){return function(s){return typeof s=="function"?s(i,o,t):a(s)}}};return e}var Fy=Py();Fy.withExtraArgument=Py;var zy=Fy,VI=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();globalThis&&globalThis.__generator;var Fs=globalThis&&globalThis.__spreadArray||function(t,e){for(var n=0,r=e.length,i=t.length;n<r;n++,i++)t[i]=e[n];return t},YI=Object.defineProperty,Ry=Object.getOwnPropertySymbols,_I=Object.prototype.hasOwnProperty,WI=Object.prototype.propertyIsEnumerable,jy=function(t,e,n){return e in t?YI(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Do=function(t,e){for(var n in e||(e={}))_I.call(e,n)&&jy(t,n,e[n]);if(Ry)for(var r=0,i=Ry(e);r<i.length;r++){var n=i[r];WI.call(e,n)&&jy(t,n,e[n])}return t},XI=typeof window!="undefined"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Os:Os.apply(null,arguments)};function ZI(t){if(typeof t!="object"||t===null)return!1;var e=Object.getPrototypeOf(t);if(e===null)return!0;for(var n=e;Object.getPrototypeOf(n)!==null;)n=Object.getPrototypeOf(n);return e===n}var qI=function(t){VI(e,t);function e(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,n)||this;return Object.setPrototypeOf(i,e.prototype),i}return Object.defineProperty(e,Symbol.species,{get:function(){return e},enumerable:!1,configurable:!0}),e.prototype.concat=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return t.prototype.concat.apply(this,n)},e.prototype.prepend=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return n.length===1&&Array.isArray(n[0])?new(e.bind.apply(e,Fs([void 0],n[0].concat(this)))):new(e.bind.apply(e,Fs([void 0],n.concat(this))))},e}(Array);function KI(t){return typeof t=="boolean"}function JI(){return function(e){return $I(e)}}function $I(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new qI;return n&&(KI(n)?r.push(zy):r.push(zy.withExtraArgument(n.extraArgument))),r}var e9=!0;function t9(t){var e=JI(),n=t||{},r=n.reducer,i=r===void 0?void 0:r,o=n.middleware,a=o===void 0?e():o,s=n.devTools,c=s===void 0?!0:s,u=n.preloadedState,f=u===void 0?void 0:u,l=n.enhancers,d=l===void 0?void 0:l,h;if(typeof i=="function")h=i;else if(ZI(i))h=Pf(i);else throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');var p=a;typeof p=="function"&&(p=p(e));var m=PI.apply(void 0,p),y=Os;c&&(y=XI(Do({trace:!e9},typeof c=="object"&&c)));var g=[m];Array.isArray(d)?g=Fs([m],d):typeof d=="function"&&(g=d(g));var x=y.apply(void 0,g);return Oy(h,f,x)}function Mo(t,e){function n(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];if(e){var o=e.apply(void 0,r);if(!o)throw new Error("prepareAction did not return an object");return Do(Do({type:t,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:t,payload:r[0]}}return n.toString=function(){return""+t},n.type=t,n.match=function(r){return r.type===t},n}function Uy(t){var e={},n=[],r,i={addCase:function(o,a){var s=typeof o=="string"?o:o.type;if(s in e)throw new Error("addCase cannot be called with two reducers for the same action type");return e[s]=a,i},addMatcher:function(o,a){return n.push({matcher:o,reducer:a}),i},addDefaultCase:function(o){return r=o,i}};return t(i),[e,n,r]}function n9(t){return typeof t=="function"}function r9(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?Uy(e):[e,n,r],o=i[0],a=i[1],s=i[2],c;if(n9(t))c=function(){return Ls(t(),function(){})};else{var u=Ls(t,function(){});c=function(){return u}}function f(l,d){l===void 0&&(l=c());var h=Fs([o[d.type]],a.filter(function(p){var m=p.matcher;return m(d)}).map(function(p){var m=p.reducer;return m}));return h.filter(function(p){return!!p}).length===0&&(h=[s]),h.reduce(function(p,m){if(m)if(bn(p)){var y=p,g=m(y,d);return typeof g=="undefined"?p:g}else{if(An(p))return Ls(p,function(x){return m(x,d)});var g=m(p,d);if(typeof g=="undefined"){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return g}return p},l)}return f.getInitialState=c,f}function i9(t,e){return t+"/"+e}function Gy(t){var e=t.name;if(!e)throw new Error("`name` is a required option for createSlice");var n=typeof t.initialState=="function"?t.initialState:Ls(t.initialState,function(){}),r=t.reducers||{},i=Object.keys(r),o={},a={},s={};i.forEach(function(f){var l=r[f],d=i9(e,f),h,p;"reducer"in l?(h=l.reducer,p=l.prepare):h=l,o[f]=h,a[d]=h,s[f]=p?Mo(d,p):Mo(d)});function c(){var f=typeof t.extraReducers=="function"?Uy(t.extraReducers):[t.extraReducers],l=f[0],d=l===void 0?{}:l,h=f[1],p=h===void 0?[]:h,m=f[2],y=m===void 0?void 0:m,g=Do(Do({},d),a);return r9(n,g,p,y)}var u;return{name:e,reducer:function(f,l){return u||(u=c()),u(f,l)},actions:s,caseReducers:o,getInitialState:function(){return u||(u=c()),u.getInitialState()}}}var Ff="listenerMiddleware";Mo(Ff+"/add"),Mo(Ff+"/removeAll"),Mo(Ff+"/remove"),DI();function Hy(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=ai(t.samples,e),o=n?n.map(c=>[c,i.get(c)]).filter(c=>c[1]):[...i],s=t;s.groups=o.map(([c,u],f)=>({name:""+c,label:r?r[f]:c,samples:u})),delete t.samples}function Qy(t,e,n){const r=he(".3~r"),i=a=>`${n[a].operator=="lt"?"[":"("}${r(n[a].operand)}, ${r(n[a+1].operand)}${n[a+1].operator=="lte"?"]":")"}`,o=Wt(n.length-1).reverse();Hy(t,s9(e,n.slice(1,n.length-1)),o,o.map(i))}function o9(t,e,n){Qy(t,e,[{operator:"lt",operand:-1/0},...n,{operator:"lte",operand:1/0}])}function a9(t,e){const n=u9(c9(t.samples,e,[0,.25,.5,.75,1]));n.length==1&&n.push(n[0]),Qy(t,e,n.map((r,i,o)=>({operator:i==o.length-1?"lte":"lt",operand:r})))}function s9(t,e){return r=>{const i=t(r);if(!(!le(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(e[o].operator=="lt"){if(i<e[o].operand)return o}else if(i<=e[o].operand)return o;return e.length}}}function c9(t,e,n){const r=zv(t.map(e).filter(i=>le(i)&&!isNaN(i)));return n.map(i=>sc(r,i))}function u9(t){const e=[t[0]];for(let n=1;n<t.length;n++)t[n]!=t[n-1]&&e.push(t[n]);return e}function l9(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var f9=[].forEach;function d9(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],a=[];f9.call(t,function(c,u,f){if(r=e(c,u,f),r===void 0)return void a.push(c);if(n===void 0&&typeof r=="symbol")throw new TypeError("Can't convert symbol to string");i.push(u),o[u]=r}),n===void 0&&(n=l9),i.sort(function(c,u){return n(o[c],o[u])});var s=i.map(function(c){return t[c]}).concat(a);return s.length!=t.length&&(s.length=t.length),s}function h9(t,e){const n=i=>i.copy().range(Wt(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>le(i)&&!isNaN(i)?-i:-1/0;break;case"ordinal":r=n(e.scale);break;case"nominal":r=i=>i||"";break}return i=>r(t(i))}function p9(t,e){const n=new Set,r=i=>{const o=n.has(i);return n.add(i),o};return t.filter(i=>!r(e(i)))}function m9(t,e,n=!1){return d9(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const g9={lt:(t,e)=>t<e,lte:(t,e)=>t<=e,eq:(t,e)=>t==e,gte:(t,e)=>t>=e,gt:(t,e)=>t>e};function y9(t,e,n,r){const i=g9[n];return t.filter(o=>i(e(o),r))}function v9(t,e,n,r){const i=new Set(r),o=s=>i.has(s),a=n=="remove"?s=>!o(s):o;return t.filter(s=>a(e(s)))}function b9(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const Vy="setSamples",Yy="sortBy",_y="retainFirstOfEach",Wy="filterByNominal",Xy="filterByQuantitative",Zy="removeUndefined",qy="groupByNominal",Ky="groupToQuartiles",Jy="groupByThresholds",$r="sampleView";function A9(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function x9(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return Gy({name:$r,initialState:A9(),reducers:{[Vy]:(n,r)=>{const i=r.payload.samples;if(n.sampleData)throw new Error("Samples have already been set!");if(i.some(a=>a.id===void 0||a.id===null))throw new Error('The sample metadata contains missing sample ids or the "sample" column is missing!');if(new Set(i.map(a=>a.id)).size!=i.length)throw new Error("The sample metadata contains duplicate sample ids!");const o=i.map((a,s)=>U(T({},a),{indexNumber:s}));n.sampleData={ids:o.map(a=>a.id),entities:Object.fromEntries(o.map(a=>[a.id,a]))},n.rootGroup={name:"ROOT",label:"Root",samples:n.sampleData.ids}},[Yy]:(n,r)=>{To(n,i=>m9(i,h9(e(r.payload,n),t(r.payload.attribute)),!1))},[_y]:(n,r)=>{To(n,i=>p9(i,e(r.payload,n)))},[Xy]:(n,r)=>{To(n,i=>y9(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[Wy]:(n,r)=>{To(n,i=>v9(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[Zy]:(n,r)=>{To(n,i=>b9(i,e(r.payload,n)))},[qy]:(n,r)=>{zf(n,i=>Hy(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[Ky]:(n,r)=>{zf(n,i=>a9(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[Jy]:(n,r)=>{zf(n,i=>o9(i,e(r.payload,n),r.payload.thresholds)),n.groupMetadata.push({attribute:r.payload.attribute})}}})}function To(t,e){for(const n of $y(t))n.samples=e(n.samples)}function zf(t,e){for(const n of $y(t))e(n)}function $y(t){return e2(t).map(e=>He(e))}function Rf(t){return t.provenance.present[$r]}function e2(t){const e=[],n=[],r=i=>{if(e.push(i),n2(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function t2(t){return"samples"in t}function n2(t){return"groups"in t}function*r2(t){if(yield[t],n2(t))for(const e of t.groups)for(const n of r2(e))yield[t,...n]}const w9=he(".4"),i2={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function o2(t){return t.length>1?D`{${t.map((e,n)=>D`${n>0?", ":""}<strong>${e}</strong>`)}}`:D`<strong>${t[0]}</strong>`}function C9(t,e){if(!t.type.startsWith($r))return;const n=t.payload,r=n.attribute&&e(n.attribute),i=r==null?void 0:r.name,o=(r==null?void 0:r.title)||D`<em>${i}</em>`,a={attributeName:i};switch(t.type.substring($r.length+1)){case Vy:return U(T({},a),{title:"The initial state",icon:l5});case Yy:return U(T({},a),{title:"Sort by",provenanceTitle:D`Sort by ${o}`,icon:r5});case _y:return U(T({},a),{title:D`Retain first sample of each unique <em>${i}</em>`,provenanceTitle:D`Retain first sample of each unique ${o}`,icon:E5});case Wy:{const c=n.values,u=f=>D`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?D`undefined ${f}`:D`${f} ${c.length>1?"in":D`<span class="operator">=</span>`} ${o2(c)}`}`;return U(T({},a),{title:u(D`<em>${i}</em>`),provenanceTitle:u(o),icon:n.remove?Fl:fo})}case Xy:{const c=u=>D`Retain samples having ${u} <span class="operator">${i2[n.operator]}</span> <strong>${w9(n.operand)}</strong>`;return U(T({},a),{title:c(D`<em>${i}</em>`),provenanceTitle:c(o),icon:fo})}case Zy:return U(T({},a),{title:"Remove samples having missing attribute",provenanceTitle:D`Remove samples having missing ${o}`,icon:Fl});case qy:return U(T({},a),{title:"Group by",provenanceTitle:D`Group by ${o}`,icon:ho});case Ky:return U(T({},a),{title:"Group by quartiles",provenanceTitle:D`Group by quartiles on ${o}`,icon:ho});case Jy:return U(T({},a),{title:"Group by thresholds",provenanceTitle:D`Group by thresholds {${o2(n.thresholds.map(c=>`${i2[c.operator]} ${c.operand}`))}} on ${o}`,icon:ho});default:return U(T({},a),{title:JSON.stringify(t),icon:Wg})}}class S9{constructor(){this.attributeInfoSourcesByType={}}addAttributeInfoSource(e,n){this.attributeInfoSourcesByType[e]=n}getAttributeInfo(e){const n=this.attributeInfoSourcesByType[e.type];if(!n)throw new Error("Cannot find attribute info source for: "+JSON.stringify(e));const r=n(e);if(r)return r;throw new Error("Unknown attribute: "+JSON.stringify(e))}}function zs(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function a2(t,{viewHeight:e=0,sampleHeight:n=0,groupSpacing:r=5,summaryHeight:i=0}){if(!e&&!n)throw new Error("viewHeight or sampleHeight must be provided!");const o=d=>He(d),a=t.map(d=>({path:d,sampleGroup:o(d),samples:o(d).samples})).filter(d=>d.samples.length),s=n?d=>({px:d.length*n+i,grow:0}):d=>({px:i,grow:d.length}),c=[];ao(a.map(d=>s(d.samples)),e,{spacing:r}).forEach((d,h)=>{c.push({key:a[h].path,locSize:d})});const u=[];for(const[d,h]of a.entries()){const p={grow:1},m=h.samples;ao(m.map(y=>p),Math.max(0,c[d].locSize.size-i),{offset:c[d].locSize.location+i}).forEach((y,g)=>{const{size:x,location:A}=y,C=x*.1*og(15,22,x);y.location=A+C,y.size=x-2*C,u.push({key:m[g],locSize:y})})}function*f(){const d=[];for(const h of c){const p=h.key,m=He(p);for(;d.length<=p.length&&d.length&&p[d.length-1]!=d[d.length-1].group;)yield d.pop();for(let y=0;y<d.length;y++){const g=d[y];g.locSize.size=h.locSize.location-g.locSize.location+h.locSize.size}for(let y=d.length;y<p.length;y++)d.push({group:p[y],locSize:T({},h.locSize),depth:d.length,n:0});for(const y of d)y.n+=m.samples.length}for(;d.length;)yield d.pop()}const l=[...f()].sort((d,h)=>d.depth-h.depth).map((d,h)=>({key:{index:h,group:d.group,depth:d.depth,n:d.n,attributeLabel:void 0},locSize:d.locSize}));return{samples:u,summaries:c,groups:l}}function E9(t,e){return e.find(n=>Rm(n.locSize,t))}const s2="VALUE_AT_LOCUS",c2=10;class jf extends $n{constructor(n,r,i,o,a){var f;super(n,r,i,o);ke(this,Qs);this.provenance=a,this.spec=n,this.stickySummaries=(f=n.stickySummaries)!=null?f:!0,this.compositeAttributeInfoSource=new S9,this.child=r.createView(n.spec,this,"sample-facets"),this.summaryViews=new jr({vconcat:[]},r,this,"sampleSummaries"),this.child.visit(l=>{l instanceof Ae&&this.summaryViews.setChildren(l.sampleAggregateViews)}),this.childCoords=pn.ZERO,this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new jr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},r,this,"sample-sidebar"),this.peripheryCoords=pn.ZERO,this.groupPanel=new AI(this),this.attributePanel=new vy(this),this.peripheryView.setChildren([this.groupPanel,this.attributePanel]),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(zs(l=>Rf(l).rootGroup,l=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(zs(l=>Rf(l).sampleData,l=>{const d=l&&Object.values(l.entities);!d||(this.attributePanel._setSamples(d),this.facetTextureData=new Float32Array(Math.ceil(d.length*2/4)*4),this.groupPanel.updateGroups())})),this.compositeAttributeInfoSource.addAttributeInfoSource(s2,l=>{var C,b;const d=l.specifier,h=this.findDescendantByName(d.view);let p;if(le(d.locus))p=d.locus;else{const v=this.getScaleResolution("x").getGenome();if(v)p=v.toContinuous(d.locus.chrom,d.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const m=v=>{var w;return(w=h.mark.findDatumAt(v,p))==null?void 0:w[d.field]},[y,g]=Object.entries(h.getEncoding()).find(([v,w])=>"field"in w&&w.field==d.field),x=y?(C=h.getScaleResolution(y))==null?void 0:C.getScale():void 0;return{name:d.field,attribute:l,title:D`<em class="attribute">${d.field}</em> <span class="viewTitle">(${(b=h.getTitleText())!=null?b:h.name})</span> at <span class="locus">${u2(d.locus)}</span>`,accessor:m,type:"type"in g?g.type:void 0,scale:x}}),this._addBroadcastHandler("dataLoaded",()=>this.extractSamplesFromData()),this._addBroadcastHandler("layout",()=>{this._locations=void 0}),this._scrollOffset=0,this._scrollableHeight=0,this._peekState=0,this._lastMouseY=-1,this.addInteractionEventListener("mousemove",(l,d)=>{this._lastMouseY=d.point.y-this.childCoords.y}),this.addInteractionEventListener("wheel",(l,d)=>{const h=d.uiEvent;this._peekState&&!h.ctrlKey&&(this._scrollOffset=ll(this._scrollOffset+h.deltaY,0,this._scrollableHeight-this.childCoords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),d.uiEvent={type:h.type,deltaX:h.deltaX,preventDefault:h.preventDefault.bind(h)})},!0),r.addKeyboardListener("keydown",l=>{l.code=="KeyE"&&!l.repeat&&this._togglePeek()}),r.addKeyboardListener("keyup",l=>{l.code=="KeyE"&&this._togglePeek(!1)});const s=l=>this.compositeAttributeInfoSource.getAttributeInfo(l),c=x9(s);this.provenance.addReducer(c.name,c.reducer),this.provenance.addActionInfoSource(l=>C9(l,s)),this.actions=c.actions;const u=QI(l=>{var d;return(d=l.sampleData)==null?void 0:d.entities},l=>l&&Object.values(l));this.getSamples=()=>u(this.sampleHierarchy),this.spec.samples.data&&this.loadSamples()}getOverhang(){let n=this.peripheryView.isVisible()?this.peripheryView.getSize().width.px:0;return n&&(n+=c2),new tt(0,0,0,n)}*[Symbol.iterator](){yield this.child,yield this.peripheryView}replaceChild(n,r){const i=r;if(n===this.child)this.child=i;else throw new Error("Not my child!")}loadSamples(){if(!this.spec.samples.data)throw new Error("SampleView has no explicit sample metadata specified! Cannot load anything.");const{dataSource:n,collector:r}=b8(Sg(this.spec.samples.data,this.getBaseUrl()),new D9);r.observers.push(o=>{const a=o.getData();this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:a}))});const i="samples "+this.getPathString();this.context.dataFlow.addDataSource(n,i)}extractSamplesFromData(){if(this.getSamples())return;const n=this.getScaleResolution("sample");if(n){const r=n.getDataDomain().map((i,o)=>({id:i,displayName:i,indexNumber:o,attributes:[]}));this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:r}))}else throw new Error("No explicit sample data nor sample channels found!")}get sampleHierarchy(){return this.provenance.getPresentState()[$r]}getLocations(){var n,r,i,o;if(!this._locations){if(!((n=this.childCoords)!=null&&n.height))return;const a=this.sampleHierarchy,s=e2(a),c=[null,...a.groupMetadata],u=(o=((r=this.summaryViews)==null?void 0:r.isVisible())&&((i=this.summaryViews)==null?void 0:i.getSize().height.px))!=null?o:0,f=a2(s,{viewHeight:this.childCoords.height,groupSpacing:5,summaryHeight:u}),l=a2(s,{sampleHeight:35,groupSpacing:15,summaryHeight:u}),d=()=>-this._scrollOffset,h=()=>this._peekState;this._scrollableLocations=l,this._scrollableHeight=l.summaries.map(g=>g.locSize.location+g.locSize.size).reduce((g,x)=>Math.max(g,x),0);const p=(g,x)=>{const A=[];for(let C=0;C<g.length;C++){const b=g[C].key;A.push({key:b,locSize:ED(g[C].locSize,DD(x[C].locSize,d),h)})}return A},m=p(f.groups,l.groups),y=document.createElement("div");m.forEach(g=>{if(g.key.depth==0)return;const x=c[g.key.depth].attribute,A=this.compositeAttributeInfoSource.getAttributeInfo(x).title;A?re(A)?g.key.attributeLabel=A:(Ge(A,y),g.key.attributeLabel=y.textContent.replace(/\s+/g," ").trim()):g.key.attributeLabel="unknown"}),this._locations={samples:p(f.samples,l.samples),summaries:p(f.summaries,l.summaries),groups:m}}return this._locations}getSampleAt(n){const r=E9(n,this.getLocations().samples);if(r)return this.sampleHierarchy.sampleData.entities[r.key]}getSummaryAt(n){const r=this.getLocations().summaries,i=r.findIndex(o=>Rm(o.locSize,n));return i>=0?{index:i,location:r[i]}:void 0}_clipBySummary(n){if(this.stickySummaries&&this.summaryViews.childCount){const r=this.summaryViews.getSize().height.px;return n.modify({y:()=>n.y+r,height:()=>n.height-r})}}renderChild(n,r,i={}){const o=1/r.height,a=()=>o,s=this._clipBySummary(r);for(const c of this.getLocations().samples)this.child.render(n,r,U(T({},i),{sampleFacetRenderingOptions:{locSize:MD(c.locSize,a)},facetId:[c.key],clipRect:s}))}renderSummaries(n,r,i={}){i=U(T({},i),{clipRect:r});const o=this.summaryViews.getSize().height.px;for(const[a,s]of this.getLocations().summaries.entries()){const c=()=>{const u=s.locSize.location;let f=r.y+u;return this.stickySummaries?f+ll(-u,0,s.locSize.size-o):f};this.summaryViews.render(n,r.modify({y:c,height:o}),U(T({},i),{facetId:[a]}))}}render(n,r,i={}){if(!this.isVisible())return;n.pushView(this,r);const o=ao([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],r.width,{spacing:c2}),a=s=>r.modify({x:s.location+r.x,width:s.size});this.peripheryCoords=a(o[0]),this.childCoords=a(o[1]),this.peripheryView.render(n,this.peripheryCoords,i),this.renderChild(n,this.childCoords,i),this.renderSummaries(n,this.childCoords,i),n.popView(this)}onBeforeRender(){this._updateFacetTexture()}_updateFacetTexture(){var o;const n=this.facetTextureData;n.fill(0);const r=(o=this.sampleHierarchy.sampleData)==null?void 0:o.entities;if(r){const a=this.getLocations().samples,s=this.childCoords.height;for(const c of a){const u=r[c.key].indexNumber;n[u*2+0]=c.locSize.location/s,n[u*2+1]=c.locSize.size/s}}const i=this.context.glHelper.gl;this.facetTexture=io(i,{internalFormat:i.RG32F,format:i.RG,height:1},n,this.facetTexture)}_togglePeek(n){var i;if(this._peekState>0&&this._peekState<1||n!==void 0&&n==!!this._peekState)return;const r={requestAnimationFrame:o=>this.context.animator.requestTransition(o),onUpdate:o=>{this._peekState=Math.pow(o,2),this.groupPanel.updateRange(),this.context.animator.requestRender()},from:this._peekState};if(this._peekState==0){const o=this._lastMouseY,a=(i=this.getSampleAt(o))==null?void 0:i.id;let s;if(a)s=(u=>u.location+u.size/2)(this._scrollableLocations.samples.find(u=>u.key==a).locSize);else{const c=this.getSummaryAt(o);c&&(s=this._scrollableLocations.summaries[c.index].locSize.location-(c.location.locSize.location-o))}if(s?this._scrollOffset=s-o:this._scrollOffset=(this._scrollableHeight-this.childCoords.height)/2,this._scrollableHeight>this.childCoords.height)as(U(T({},r),{to:1,duration:500,easingFunction:lM}));else{const c=u=>(1-Math.pow(u*2-1,2))*.5;as(U(T({},r),{from:0,to:1,duration:300,easingFunction:c}))}}else as(U(T({},r),{to:0,duration:400,easingFunction:cM}))}_handleContextMenu(n,r){var l;const i=r.uiEvent,o=this.childCoords.normalizePoint(r.point.x,r.point.y).x,a=this.getScaleResolution("x").invertToComplex(o),s=Ng([...this.getAncestors()].at(-1)),c=S8(this.child).filter(d=>!["sample","x","x2"].includes(d.channel)).filter(d=>["rect","rule"].includes(d.view.getMarkType())).filter(d=>s.has(d.view.name));let u=[{label:`Locus: ${u2(a)}`,type:"header"},{type:"divider"}],f="";for(const[d,h]of c.entries()){const p={view:h.view.name,field:h.field,locus:a},m=this.compositeAttributeInfoSource.getAttributeInfo({type:s2,specifier:p}),y=(l=h.view.getTitleText())!=null?l:h.view.spec.name;y!=f&&(d>0&&u.push({type:"divider"}),u.push({label:y,type:"header"}),f=y),u.push({label:h.field,submenu:df(null,m,void 0,this)})}gy({items:u},i)}getSampleFacetTexture(){return this.facetTexture}propagateInteractionEvent(n){this.handleInteractionEvent(void 0,n,!0),!n.stopped&&(this.childCoords.containsPoint(n.point.x,n.point.y)&&(this.child.propagateInteractionEvent(n),mg(n,this.childCoords,r=>xe(this,Qs,Y2).call(this,this.childCoords,this.child,r),this.context.getCurrentHover())),this.peripheryCoords.containsPoint(n.point.x,n.point.y)&&this.peripheryView.propagateInteractionEvent(n),!n.stopped&&this.handleInteractionEvent(void 0,n,!1))}getDefaultResolution(n,r){switch(n){case"x":case"sample":return"shared";default:return"independent"}}}Qs=new WeakSet,Y2=function(n,r,i){const o=this.child.getScaleResolution("x");if(!o||!o.isZoomable())return;const a=n.normalizePoint(i.x,i.y),s=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta);o.zoom(2**i.zDelta,a.x,s.x-a.x),this.context.animator.requestRender()};function u2(t){return!le(t)&&"chrom"in t?eM(t):""+t}class D9 extends ue{constructor(){super(),this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:M9(e)})}}function M9(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function T9(t){return"samples"in t&&je(t.samples)&&"spec"in t&&je(t.spec)}const I9=(t,e)=>e.some(n=>t instanceof n);let l2,f2;function k9(){return l2||(l2=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function N9(){return f2||(f2=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const d2=new WeakMap,Uf=new WeakMap,h2=new WeakMap,Gf=new WeakMap,Hf=new WeakMap;function L9(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",a)},o=()=>{n(wn(t.result)),i()},a=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",a)});return e.then(n=>{n instanceof IDBCursor&&d2.set(n,t)}).catch(()=>{}),Hf.set(e,t),e}function B9(t){if(Uf.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",o),t.removeEventListener("error",a),t.removeEventListener("abort",a)},o=()=>{n(),i()},a=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",o),t.addEventListener("error",a),t.addEventListener("abort",a)});Uf.set(t,e)}let Qf={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return Uf.get(t);if(e==="objectStoreNames")return t.objectStoreNames||h2.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return wn(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function O9(t){Qf=t(Qf)}function P9(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(Vf(this),e,...n);return h2.set(r,e.sort?e.sort():[e]),wn(r)}:N9().includes(t)?function(...e){return t.apply(Vf(this),e),wn(d2.get(this))}:function(...e){return wn(t.apply(Vf(this),e))}}function F9(t){return typeof t=="function"?P9(t):(t instanceof IDBTransaction&&B9(t),I9(t,k9())?new Proxy(t,Qf):t)}function wn(t){if(t instanceof IDBRequest)return L9(t);if(Gf.has(t))return Gf.get(t);const e=F9(t);return e!==t&&(Gf.set(t,e),Hf.set(e,t)),e}const Vf=t=>Hf.get(t);function z9(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const a=indexedDB.open(t,e),s=wn(a);return r&&a.addEventListener("upgradeneeded",c=>{r(wn(a.result),c.oldVersion,c.newVersion,wn(a.transaction))}),n&&a.addEventListener("blocked",()=>n()),s.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),s}const R9=["get","getKey","getAll","getAllKeys","count"],j9=["put","add","delete","clear"],Yf=new Map;function p2(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(Yf.get(e))return Yf.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=j9.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||R9.includes(n)))return;const o=async function(a,...s){const c=this.transaction(a,i?"readwrite":"readonly");let u=c.store;return r&&(u=u.index(s.shift())),(await Promise.all([u[n](...s),i&&c.done]))[0]};return Yf.set(e,o),o}O9(t=>U(T({},t),{get:(e,n,r)=>p2(e,n)||t.get(e,n,r),has:(e,n)=>!!p2(e,n)||t.has(e,n)}));class m2{isReadonly(){return!0}async put(e,n){this._checkReadonly()}async delete(e){this._checkReadonly()}async getNames(){return[]}async get(e){}_checkReadonly(){if(this.isReadonly())throw new Error("This bookmark")}}const Io="bookmarks";class U9 extends m2{constructor(e){super(),this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=z9(e,1,{upgrade(n,r,i,o){n.createObjectStore(Io,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(Io,"readwrite");try{n?(await i.store.delete(n),await i.store.put(e)):await i.store.put(e),await i.done}catch(o){throw i.abort(),o}}async delete(e){(await this._getDB()).delete(Io,e)}async getNames(){return(await this._getDB()).getAllKeys(Io)}async get(e){return(await this._getDB()).get(Io,e)}}/**
|
2137
|
+
*/const LI=Wr(class extends go{constructor(t){var e;if(super(t),t.type!==Bt.ATTRIBUTE||t.name!=="style"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce((e,n)=>{const r=t[n];return r==null?e:e+`${n=n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(t,[e]){const{style:n}=t.element;if(this.ct===void 0){this.ct=new Set;for(const r in e)this.ct.add(r);return this.render(e)}this.ct.forEach(r=>{e[r]==null&&(this.ct.delete(r),r.includes("-")?n.removeProperty(r):n[r]="")});for(const r in e){const i=e[r];i!=null&&(this.ct.add(r),r.includes("-")?n.setProperty(r,i):n[r]=i)}return xe}}),oy="close-dialog";function OI(){return new CustomEvent(oy,{bubbles:!0})}function or(t="default",e=document.body){const n=document.createElement("div");n.classList.add("gs-modal"),t!="default"&&n.classList.add(t);const r=o=>{var a;switch(o.key){case"Escape":{const s=n.querySelector(".btn-cancel");s&&(s.click(),o.stopPropagation());break}case"Enter":{if(((a=o.target)==null?void 0:a.tagName)=="TEXTAREA")return;n.querySelector(".btn-primary").click(),o.stopPropagation();break}}};n.addEventListener("keydown",r),Be(D`<div class="backdrop"></div><div class="content"></div>`,n);const i=()=>{n.querySelector(".backdrop").addEventListener("transitionend",()=>n.remove()),n.classList.remove("visible"),document.body.classList.remove(Un)};return n.addEventListener("keydown",o=>{o.stopPropagation()}),n.addEventListener(oy,i),e.appendChild(n),window.requestAnimationFrame(()=>n.classList.add("visible")),t!="tour"&&document.body.classList.add(Un),{content:n.querySelector(".content"),close:i}}function Qe(t,e={}){var i;const n=or(),r=e.title;return(i=e.okLabel)!=null||(e.okLabel="OK"),new Promise((o,a)=>{const s=()=>{n.close(),o(!0)},c=D`${r?D`<div class="modal-title">${r}</div>`:R}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?D`<button @click="${()=>{n.close(),o(!1)}}">Cancel</button>`:R} <button @click="${s}">${e.okLabel}</button></div>`;Be(c,n.content)})}function BI(t,e){var n,r;tn((n=t.scale)==null?void 0:n.type)?FI(t,e):je((r=t.scale)==null?void 0:r.type)?PI(t,e):Qe("Not implemented (yet).")}function FI(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=or(),o=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,a=new Set,s=h=>{n(e.actions.filterByNominal({values:r.domain().filter(p=>a.has(p)),attribute:t.attribute,remove:h})),i.close()},c=h=>{const p=h.target;p.checked?a.add(p.value):a.delete(p.value),d()},u=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button ?disabled="${!a.size}" @click="${()=>s(!1)}">${q(tr).node[0]} Retain</button> <button ?disabled="${!a.size}" @click="${()=>s(!0)}">${q(Fl).node[0]} Remove</button></div>`,f=r,l=D`<p>Please select one or more categories and choose an action.</p><ul class="gs-checkbox-list" @input="${c}" tabindex="0">${r.domain().map(h=>D`<li><label class="checkbox"><span class="color" style="${LI({backgroundColor:f(h).toString()})}"></span> <input type="checkbox" .value="${h}"> ${h}</label></li>`)}</ul>`;function d(){Be(D`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}d(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function PI(t,e){const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=or(),a=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=h=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn-primary" ?disabled="${typeof i>"u"}" @click="${()=>s()}">${q(tr).node[0]} Retain</button></div>`,u=h=>{r=h.target.value,d()},f=h=>{const p=h.target.value;i=p.length>0?+p:void 0,d()},l=D`<div class="gs-form-group"><label>Select samples where <em>${t.name}</em> is</label> <select .value="${r}" @change="${u}">${Object.entries(zI).map(([h,p])=>D`<option .value="${h}">${p}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function d(){Be(D`${a}<div class="modal-body">${l}</div>${c()}`,o.content)}d(),o.content.querySelector("select").focus()}const zI={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function RI(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=[{operand:void 0,operator:"lt"}],i=or(),o=D`<div class="modal-title">Group by threshold on <em>${t.name}</em></div>`,a=d=>{n(e.actions.groupByThresholds({attribute:t.attribute,thresholds:r})),i.close()},s=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn-primary" ?disabled="${!jI(r)}" @click="${()=>a()}">${q(yo).node[0]} Group</button></div>`,c=d=>{const h=d.target.value;r[0].operator=h,l()},u=d=>{const h=d.target.value;r[0].operand=h.length>0?+h:void 0,l()},f=D`<div class="gs-form-group"><label>Split into 2 groups using the threshold:</label><div class="threshold-flex"><select .value="${r[0].operator}" @change="${c}"><option value="lt">${"<"}</option><option value="lte">${"\u2264"}</option></select> <input .value="${""+r[0].operand}" type="number" placeholder="Numeric value" @input="${u}"></div></div>`;function l(){Be(D`${o}<div class="modal-body">${f}</div>${s()}`,i.content)}l(),i.content.querySelector("select").focus()}function jI(t){return t[0].operator&&typeof t[0].operand=="number"}function UI(t,e){const n=e.provenance.storeHelper.getDispatcher();let r=5;const i=or(),o=D`<div class="modal-title">Retain first n categories of <em>${t.title}</em></div>`,a=f=>{n(e.actions.retainFirstNCategories({attribute:t.attribute,n:r})),i.close()},s=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn-primary" @click="${()=>a()}">${q(tr).node[0]} Retain</button></div>`,c=D`<div class="gs-form-group"><label>Number of categories to retain:</label> <input type="number" min="1" .valueAsNumber="${r}" @change="${f=>{r=f.target.valueAsNumber}}"></div>`;function u(){Be(D`${o}<div class="modal-body">${c}</div>${s()}`,i.content)}u(),i.content.querySelector("input").focus()}function ff(t,e,n,r){var d;const i=r.actions,o=e.attribute,a=r.sampleHierarchy,s=r.provenance.storeHelper.getDispatcher(),c=[];t&&c.push({label:t,type:"header"});const u=(h,p,m)=>{const y=r.provenance.getActionInfo(h);return{label:y.title,icon:y.icon,callback:p?void 0:m!=null?m:()=>s(h)}},f=(...h)=>c.push(...h.map(p=>u(p)));f(i.sortBy({attribute:o}));const l=(d=e==null?void 0:e.type)!=null?d:"identifier";return l!="quantitative"?(l!="identifier"&&(f(i.groupByNominal({attribute:o}),i.retainFirstOfEach({attribute:o})),c.push(u(i.retainFirstNCategories({attribute:o,n:void 0}),!1,()=>UI(e,r)))),f(i.filterByNominal({attribute:o,values:[n]}),i.filterByNominal({attribute:o,remove:!0,values:[n]})),c.push(u(i.retainMatched({attribute:o}),!a.groupMetadata.length))):(f(i.groupToQuartiles({attribute:o})),c.push({icon:yo,label:"Group by thresholds...",callback:()=>RI(e,r)}),GI(n)?f(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):f(i.removeUndefined({attribute:o}))),l!=="identifier"&&c.push({icon:tr,label:"Advanced filter...",callback:()=>BI(e,r)}),c}function GI(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function HI(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var jt={},ar={};Object.defineProperty(ar,"__esModule",{value:!0}),ar.ActionCreators=ar.ActionTypes=void 0;var sr={UNDO:"@@redux-undo/UNDO",REDO:"@@redux-undo/REDO",JUMP_TO_FUTURE:"@@redux-undo/JUMP_TO_FUTURE",JUMP_TO_PAST:"@@redux-undo/JUMP_TO_PAST",JUMP:"@@redux-undo/JUMP",CLEAR_HISTORY:"@@redux-undo/CLEAR_HISTORY"};ar.ActionTypes=sr;var QI={undo:function(){return{type:sr.UNDO}},redo:function(){return{type:sr.REDO}},jumpToFuture:function(e){return{type:sr.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:sr.JUMP_TO_PAST,index:e}},jump:function(e){return{type:sr.JUMP,index:e}},clearHistory:function(){return{type:sr.CLEAR_HISTORY}}};ar.ActionCreators=QI;var vt={};Object.defineProperty(vt,"__esModule",{value:!0}),vt.parseActions=Es,vt.isHistory=VI,vt.includeAction=YI,vt.excludeAction=_I,vt.combineFilters=WI,vt.groupByActionTypes=XI,vt.newHistory=ZI;function Es(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function VI(t){return typeof t.present<"u"&&typeof t.future<"u"&&typeof t.past<"u"&&Array.isArray(t.future)&&Array.isArray(t.past)}function YI(t){var e=Es(t);return function(n){return e.indexOf(n.type)>=0}}function _I(t){var e=Es(t);return function(n){return e.indexOf(n.type)<0}}function WI(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.reduce(function(r,i){return function(o,a,s){return r(o,a,s)&&i(o,a,s)}},function(){return!0})}function XI(t){var e=Es(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function ZI(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;return{past:t,present:e,future:n,group:r,_latestUnfiltered:e,index:t.length,limit:t.length+n.length+1}}var ay={},Jr={};Object.defineProperty(Jr,"__esModule",{value:!0}),Jr.set=i6,Jr.start=t6,Jr.end=n6,Jr.log=r6;function bt(t){return JI(t)||KI(t)||qI()}function qI(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function KI(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function JI(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}var Ss,et,df={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function $I(){et={header:[],prev:[],action:[],next:[],msgs:[]}}function e6(){var t=et,e=t.header,n=t.prev,r=t.next,i=t.action,o=t.msgs;if(console.group){var a,s,c,u,f;(a=console).groupCollapsed.apply(a,bt(e)),(s=console).log.apply(s,bt(n)),(c=console).log.apply(c,bt(i)),(u=console).log.apply(u,bt(r)),(f=console).log.apply(f,bt(o)),console.groupEnd()}else{var l,d,h,p,m;(l=console).log.apply(l,bt(e)),(d=console).log.apply(d,bt(n)),(h=console).log.apply(h,bt(i)),(p=console).log.apply(p,bt(r)),(m=console).log.apply(m,bt(o))}}function hf(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function t6(t,e){$I(),Ss&&(console.group?(et.header=["%credux-undo","font-style: italic","action",t.type],et.action=hf("action",df.action,t),et.prev=hf("prev history",df.prevState,e)):(et.header=["redux-undo action",t.type],et.action=["action",t],et.prev=["prev history",e]))}function n6(t){Ss&&(console.group?et.next=hf("next history",df.nextState,t):et.next=["next history",t],e6())}function r6(){if(Ss){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];et.msgs=et.msgs.concat([].concat(e,[`
|
2138
|
+
`]))}}function i6(t){Ss=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(x){return typeof x}:e=function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=C;var n=a(Jr),r=ar,i=vt;function o(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return o=function(){return b},b}function a(b){if(b&&b.__esModule)return b;if(b===null||e(b)!=="object"&&typeof b!="function")return{default:b};var v=o();if(v&&v.has(b))return v.get(b);var x={},E=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var I in b)if(Object.prototype.hasOwnProperty.call(b,I)){var L=E?Object.getOwnPropertyDescriptor(b,I):null;L&&(L.get||L.set)?Object.defineProperty(x,I,L):x[I]=b[I]}return x.default=b,v&&v.set(b,x),x}function s(b,v){var x=Object.keys(b);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(b);v&&(E=E.filter(function(I){return Object.getOwnPropertyDescriptor(b,I).enumerable})),x.push.apply(x,E)}return x}function c(b){for(var v=1;v<arguments.length;v++){var x=arguments[v]!=null?arguments[v]:{};v%2?s(Object(x),!0).forEach(function(E){u(b,E,x[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(x)):s(Object(x)).forEach(function(E){Object.defineProperty(b,E,Object.getOwnPropertyDescriptor(x,E))})}return b}function u(b,v,x){return v in b?Object.defineProperty(b,v,{value:x,enumerable:!0,configurable:!0,writable:!0}):b[v]=x,b}function f(b){return h(b)||d(b)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function d(b){if(Symbol.iterator in Object(b)||Object.prototype.toString.call(b)==="[object Arguments]")return Array.from(b)}function h(b){if(Array.isArray(b)){for(var v=0,x=new Array(b.length);v<b.length;v++)x[v]=b[v];return x}}function p(b,v){var x=(0,i.newHistory)([],b,[]);return v&&(x._latestUnfiltered=null),x}function m(b,v,x,E){var I=b.past.length+1;n.log("inserting",v),n.log("new free: ",x-I);var L=b.past,T=b._latestUnfiltered,B=x&&x<=I,H=L.slice(B?1:0),U=T!=null?[].concat(f(H),[T]):H;return(0,i.newHistory)(U,v,[],E)}function y(b,v){if(v<0||v>=b.future.length)return b;var x=b.past,E=b.future,I=b._latestUnfiltered,L=[].concat(f(x),[I],f(E.slice(0,v))),T=E[v],B=E.slice(v+1);return(0,i.newHistory)(L,T,B)}function g(b,v){if(v<0||v>=b.past.length)return b;var x=b.past,E=b.future,I=b._latestUnfiltered,L=x.slice(0,v),T=[].concat(f(x.slice(v+1)),[I],f(E)),B=x[v];return(0,i.newHistory)(L,B,T)}function A(b,v){return v>0?y(b,v-1):v<0?g(b,b.past.length+v):b}function w(b,v){return v.indexOf(b)>-1?b:!b}function C(b){var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(v.debug);var x=c({limit:void 0,filter:function(){return!0},groupBy:function(){return null},undoType:r.ActionTypes.UNDO,redoType:r.ActionTypes.REDO,jumpToPastType:r.ActionTypes.JUMP_TO_PAST,jumpToFutureType:r.ActionTypes.JUMP_TO_FUTURE,jumpType:r.ActionTypes.JUMP,neverSkipReducer:!1,ignoreInitialState:!1,syncFilter:!1},v,{initTypes:(0,i.parseActions)(v.initTypes,["@@redux-undo/INIT"]),clearHistoryType:(0,i.parseActions)(v.clearHistoryType,[r.ActionTypes.CLEAR_HISTORY])}),E=x.neverSkipReducer?function(L,T){for(var B=arguments.length,H=new Array(B>2?B-2:0),U=2;U<B;U++)H[U-2]=arguments[U];return c({},L,{present:b.apply(void 0,[L.present,T].concat(H))})}:function(L){return L},I;return function(){var L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:I,T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(T,L);for(var B=L,H=arguments.length,U=new Array(H>2?H-2:0),we=2;we<H;we++)U[we-2]=arguments[we];if(!I)if(n.log("history is uninitialized"),L===void 0){var Ne={type:"@@redux-undo/CREATE_HISTORY"},wn=b.apply(void 0,[L,Ne].concat(U));return B=p(wn,x.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(B),B}else(0,i.isHistory)(L)?(B=I=x.ignoreInitialState?L:(0,i.newHistory)(L.past,L.present,L.future),n.log("initialHistory initialized: initialState is a history",I)):(B=I=p(L,x.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",I));var Y;switch(T.type){case void 0:return B;case x.undoType:return Y=A(B,-1),n.log("perform undo"),n.end(Y),E.apply(void 0,[Y,T].concat(U));case x.redoType:return Y=A(B,1),n.log("perform redo"),n.end(Y),E.apply(void 0,[Y,T].concat(U));case x.jumpToPastType:return Y=g(B,T.index),n.log("perform jumpToPast to ".concat(T.index)),n.end(Y),E.apply(void 0,[Y,T].concat(U));case x.jumpToFutureType:return Y=y(B,T.index),n.log("perform jumpToFuture to ".concat(T.index)),n.end(Y),E.apply(void 0,[Y,T].concat(U));case x.jumpType:return Y=A(B,T.index),n.log("perform jump to ".concat(T.index)),n.end(Y),E.apply(void 0,[Y,T].concat(U));case w(T.type,x.clearHistoryType):return Y=p(B.present,x.ignoreInitialState),n.log("perform clearHistory"),n.end(Y),E.apply(void 0,[Y,T].concat(U));default:if(Y=b.apply(void 0,[B.present,T].concat(U)),x.initTypes.some(function(ad){return ad===T.type}))return n.log("reset history due to init action"),n.end(I),I;if(B._latestUnfiltered===Y)return B;var Ye=typeof x.filter=="function"&&!x.filter(T,Y,B);if(Ye){var Uo=(0,i.newHistory)(B.past,Y,B.future,B.group);return x.syncFilter||(Uo._latestUnfiltered=B._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(Uo),Uo}var Go=x.groupBy(T,Y,B);if(Go!=null&&Go===B.group){var Ys=(0,i.newHistory)(B.past,Y,B.future,B.group);return n.log("groupBy grouped the action with the previous action"),n.end(Ys),Ys}return B=m(B,Y,x.limit,Go),n.log("inserted new state into history"),n.end(B),B}}}})(ay),function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ActionTypes",{enumerable:!0,get:function(){return e.ActionTypes}}),Object.defineProperty(t,"ActionCreators",{enumerable:!0,get:function(){return e.ActionCreators}}),Object.defineProperty(t,"parseActions",{enumerable:!0,get:function(){return n.parseActions}}),Object.defineProperty(t,"isHistory",{enumerable:!0,get:function(){return n.isHistory}}),Object.defineProperty(t,"includeAction",{enumerable:!0,get:function(){return n.includeAction}}),Object.defineProperty(t,"excludeAction",{enumerable:!0,get:function(){return n.excludeAction}}),Object.defineProperty(t,"combineFilters",{enumerable:!0,get:function(){return n.combineFilters}}),Object.defineProperty(t,"groupByActionTypes",{enumerable:!0,get:function(){return n.groupByActionTypes}}),Object.defineProperty(t,"newHistory",{enumerable:!0,get:function(){return n.newHistory}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.default}});var e=ar,n=vt,r=i(ay);function i(o){return o&&o.__esModule?o:{default:o}}}(jt);const o6=HI(jt);function pf(t){return t.split("-")[0]}function sy(t){return t.split("-")[1]}function cy(t){return["top","bottom"].includes(pf(t))?"x":"y"}function uy(t){return t==="y"?"height":"width"}function ly(t,e,n){let{reference:r,floating:i}=t;const o=r.x+r.width/2-i.width/2,a=r.y+r.height/2-i.height/2,s=cy(e),c=uy(s),u=r[c]/2-i[c]/2,f=pf(e),l=s==="x";let d;switch(f){case"top":d={x:o,y:r.y-i.height};break;case"bottom":d={x:o,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:a};break;case"left":d={x:r.x-i.width,y:a};break;default:d={x:r.x,y:r.y}}switch(sy(e)){case"start":d[s]-=u*(n&&l?-1:1);break;case"end":d[s]+=u*(n&&l?-1:1);break}return d}const a6=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,s=await(a.isRTL==null?void 0:a.isRTL(e));if(process.env.NODE_ENV!=="production"&&(a==null&&console.error(["Floating UI: `platform` property was not passed to config. If you","want to use Floating UI on the web, install @floating-ui/dom","instead of the /core package. Otherwise, you can create your own","`platform`: https://floating-ui.com/docs/platform"].join(" ")),o.filter(p=>{let{name:m}=p;return m==="autoPlacement"||m==="flip"}).length>1))throw new Error(["Floating UI: duplicate `flip` and/or `autoPlacement`","middleware detected. This will lead to an infinite loop. Ensure only","one of either has been passed to the `middleware` array."].join(" "));let c=await a.getElementRects({reference:t,floating:e,strategy:i}),{x:u,y:f}=ly(c,r,s),l=r,d={},h=0;for(let p=0;p<o.length;p++){if(process.env.NODE_ENV!=="production"&&(h++,h>100))throw new Error(["Floating UI: The middleware lifecycle appears to be","running in an infinite loop. This is usually caused by a `reset`","continually being returned without a break condition."].join(" "));const{name:m,fn:y}=o[p],{x:g,y:A,data:w,reset:C}=await y({x:u,y:f,initialPlacement:r,placement:l,strategy:i,middlewareData:d,rects:c,platform:a,elements:{reference:t,floating:e}});if(u=g!=null?g:u,f=A!=null?A:f,d={...d,[m]:{...d[m],...w}},C){typeof C=="object"&&(C.placement&&(l=C.placement),C.rects&&(c=C.rects===!0?await a.getElementRects({reference:t,floating:e,strategy:i}):C.rects),{x:u,y:f}=ly(c,l,s)),p=-1;continue}}return{x:u,y:f,placement:l,strategy:i,middlewareData:d}};function s6(t){return{top:0,right:0,bottom:0,left:0,...t}}function c6(t){return typeof t!="number"?s6(t):{top:t,right:t,bottom:t,left:t}}function Ds(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}async function u6(t,e){var n;e===void 0&&(e={});const{x:r,y:i,platform:o,rects:a,elements:s,strategy:c}=t,{boundary:u="clippingAncestors",rootBoundary:f="viewport",elementContext:l="floating",altBoundary:d=!1,padding:h=0}=e,p=c6(h),y=s[d?l==="floating"?"reference":"floating":l],g=Ds(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(y)))==null||n?y:y.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(s.floating)),boundary:u,rootBoundary:f,strategy:c})),A=Ds(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({rect:l==="floating"?{...a.floating,x:r,y:i}:a.reference,offsetParent:await(o.getOffsetParent==null?void 0:o.getOffsetParent(s.floating)),strategy:c}):a[l]);return{top:g.top-A.top+p.top,bottom:A.bottom-g.bottom+p.bottom,left:g.left-A.left+p.left,right:A.right-g.right+p.right}}const l6={left:"right",right:"left",bottom:"top",top:"bottom"};function Ms(t){return t.replace(/left|right|bottom|top/g,e=>l6[e])}function f6(t,e,n){n===void 0&&(n=!1);const r=sy(t),i=cy(t),o=uy(i);let a=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[o]>e.floating[o]&&(a=Ms(a)),{main:a,cross:Ms(a)}}const d6={start:"end",end:"start"};function fy(t){return t.replace(/start|end/g,e=>d6[e])}function h6(t){const e=Ms(t);return[fy(t),e,fy(e)]}const p6=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n;const{placement:r,middlewareData:i,rects:o,initialPlacement:a,platform:s,elements:c}=e,{mainAxis:u=!0,crossAxis:f=!0,fallbackPlacements:l,fallbackStrategy:d="bestFit",flipAlignment:h=!0,...p}=t,m=pf(r),g=l||(m===a||!h?[Ms(a)]:h6(a)),A=[a,...g],w=await u6(e,p),C=[];let b=((n=i.flip)==null?void 0:n.overflows)||[];if(u&&C.push(w[m]),f){const{main:I,cross:L}=f6(r,o,await(s.isRTL==null?void 0:s.isRTL(c.floating)));C.push(w[I],w[L])}if(b=[...b,{placement:r,overflows:C}],!C.every(I=>I<=0)){var v,x;const I=((v=(x=i.flip)==null?void 0:x.index)!=null?v:0)+1,L=A[I];if(L)return{data:{index:I,overflows:b},reset:{placement:L}};let T="bottom";switch(d){case"bestFit":{var E;const B=(E=b.map(H=>[H,H.overflows.filter(U=>U>0).reduce((U,we)=>U+we,0)]).sort((H,U)=>H[1]-U[1])[0])==null?void 0:E[0].placement;B&&(T=B);break}case"initialPlacement":T=a;break}if(r!==T)return{reset:{placement:T}}}return{}}}};function dy(t){return t&&t.document&&t.location&&t.alert&&t.setInterval}function Ut(t){if(t==null)return window;if(!dy(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function Co(t){return Ut(t).getComputedStyle(t)}function Gt(t){return dy(t)?"":t?(t.nodeName||"").toLowerCase():""}function hy(){const t=navigator.userAgentData;return t!=null&&t.brands?t.brands.map(e=>e.brand+"/"+e.version).join(" "):navigator.userAgent}function At(t){return t instanceof Ut(t).HTMLElement}function $r(t){return t instanceof Ut(t).Element}function m6(t){return t instanceof Ut(t).Node}function mf(t){if(typeof ShadowRoot>"u")return!1;const e=Ut(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Ts(t){const{overflow:e,overflowX:n,overflowY:r}=Co(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function g6(t){return["table","td","th"].includes(Gt(t))}function py(t){const e=/firefox/i.test(hy()),n=Co(t);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||e&&n.willChange==="filter"||e&&(n.filter?n.filter!=="none":!1)}function my(){return!/^((?!chrome|android).)*safari/i.test(hy())}const gy=Math.min,Eo=Math.max,Is=Math.round;function cr(t,e,n){var r,i,o,a;e===void 0&&(e=!1),n===void 0&&(n=!1);const s=t.getBoundingClientRect();let c=1,u=1;e&&At(t)&&(c=t.offsetWidth>0&&Is(s.width)/t.offsetWidth||1,u=t.offsetHeight>0&&Is(s.height)/t.offsetHeight||1);const f=$r(t)?Ut(t):window,l=!my()&&n,d=(s.left+(l&&(r=(i=f.visualViewport)==null?void 0:i.offsetLeft)!=null?r:0))/c,h=(s.top+(l&&(o=(a=f.visualViewport)==null?void 0:a.offsetTop)!=null?o:0))/u,p=s.width/c,m=s.height/u;return{width:p,height:m,top:h,right:d+p,bottom:h+m,left:d,x:d,y:h}}function gn(t){return((m6(t)?t.ownerDocument:t.document)||window.document).documentElement}function Ns(t){return $r(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function yy(t){return cr(gn(t)).left+Ns(t).scrollLeft}function y6(t){const e=cr(t);return Is(e.width)!==t.offsetWidth||Is(e.height)!==t.offsetHeight}function v6(t,e,n){const r=At(e),i=gn(e),o=cr(t,r&&y6(e),n==="fixed");let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(r||!r&&n!=="fixed")if((Gt(e)!=="body"||Ts(i))&&(a=Ns(e)),At(e)){const c=cr(e,!0);s.x=c.x+e.clientLeft,s.y=c.y+e.clientTop}else i&&(s.x=yy(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function vy(t){return Gt(t)==="html"?t:t.assignedSlot||t.parentNode||(mf(t)?t.host:null)||gn(t)}function by(t){return!At(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function b6(t){let e=vy(t);for(mf(e)&&(e=e.host);At(e)&&!["html","body"].includes(Gt(e));){if(py(e))return e;e=e.parentNode}return null}function gf(t){const e=Ut(t);let n=by(t);for(;n&&g6(n)&&getComputedStyle(n).position==="static";)n=by(n);return n&&(Gt(n)==="html"||Gt(n)==="body"&&getComputedStyle(n).position==="static"&&!py(n))?e:n||b6(t)||e}function Ay(t){if(At(t))return{width:t.offsetWidth,height:t.offsetHeight};const e=cr(t);return{width:e.width,height:e.height}}function A6(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=At(n),o=gn(n);if(n===o)return e;let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&r!=="fixed")&&((Gt(n)!=="body"||Ts(o))&&(a=Ns(n)),At(n))){const c=cr(n,!0);s.x=c.x+n.clientLeft,s.y=c.y+n.clientTop}return{...e,x:e.x-a.scrollLeft+s.x,y:e.y-a.scrollTop+s.y}}function w6(t,e){const n=Ut(t),r=gn(t),i=n.visualViewport;let o=r.clientWidth,a=r.clientHeight,s=0,c=0;if(i){o=i.width,a=i.height;const u=my();(u||!u&&e==="fixed")&&(s=i.offsetLeft,c=i.offsetTop)}return{width:o,height:a,x:s,y:c}}function x6(t){var e;const n=gn(t),r=Ns(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=Eo(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=Eo(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let s=-r.scrollLeft+yy(t);const c=-r.scrollTop;return Co(i||n).direction==="rtl"&&(s+=Eo(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:c}}function wy(t){const e=vy(t);return["html","body","#document"].includes(Gt(e))?t.ownerDocument.body:At(e)&&Ts(e)?e:wy(e)}function xy(t,e){var n;e===void 0&&(e=[]);const r=wy(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=Ut(r),a=i?[o].concat(o.visualViewport||[],Ts(r)?r:[]):r,s=e.concat(a);return i?s:s.concat(xy(a))}function C6(t,e){const n=e==null||e.getRootNode==null?void 0:e.getRootNode();if(t!=null&&t.contains(e))return!0;if(n&&mf(n)){let r=e;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function E6(t,e){const n=cr(t,!1,e==="fixed"),r=n.top+t.clientTop,i=n.left+t.clientLeft;return{top:r,left:i,x:i,y:r,right:i+t.clientWidth,bottom:r+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}function Cy(t,e,n){return e==="viewport"?Ds(w6(t,n)):$r(e)?E6(e,n):Ds(x6(gn(t)))}function S6(t){const e=xy(t),r=["absolute","fixed"].includes(Co(t).position)&&At(t)?gf(t):t;return $r(r)?e.filter(i=>$r(i)&&C6(i,r)&&Gt(i)!=="body"):[]}function D6(t){let{element:e,boundary:n,rootBoundary:r,strategy:i}=t;const a=[...n==="clippingAncestors"?S6(e):[].concat(n),r],s=a[0],c=a.reduce((u,f)=>{const l=Cy(e,f,i);return u.top=Eo(l.top,u.top),u.right=gy(l.right,u.right),u.bottom=gy(l.bottom,u.bottom),u.left=Eo(l.left,u.left),u},Cy(e,s,i));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}const M6={getClippingRect:D6,convertOffsetParentRelativeRectToViewportRelativeRect:A6,isElement:$r,getDimensions:Ay,getOffsetParent:gf,getDocumentElement:gn,getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:v6(e,gf(n),r),floating:{...Ay(n),x:0,y:0}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>Co(t).direction==="rtl"},T6=(t,e,n)=>a6(t,e,{platform:M6,...n});let wt;const So=[],yf=ls(t=>t(),150,!1);function Do(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}wt&&(wt.remove(),wt=void 0,document.body.classList.remove(Un))}function Ey(t){var e;if(!(t<1)){for(let n=t;n<So.length;n++)(e=So[n])==null||e.remove(),So[n]=void 0;for(const n of So[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const I6=()=>D`<li class="menu-divider"></li>`,N6=t=>D`<li class="menu-header">${t.label||"-"}</li>`,k6=(t,e)=>D`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>yf(()=>{const r=n.target.closest("li");B6(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>yf(()=>Ey(e+1))}"><span>${t.label}</span></a></li>`,L6=t=>D`<li><a @mouseup="${()=>{Do(),t.callback()}}">${t.icon?q(t.icon).node[0]:""} ${t.label}</a> ${t.ellipsisCallback?D`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${q(U5).node[0]}</a>`:R}</li>`,O6=t=>D`<li><span class="disabled-item">${t.icon?q(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function Sy(t,e=1){switch(t.type){case"divider":return I6();case"header":return N6(t);default:return t.submenu?k6(t,e):t.callback?L6(t):O6(t)}}function B6(t,e,n){Dy(t,e,n,"right-start"),e.classList.add("active")}function Dy(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{yf(()=>{})}),Be(t.map(o=>Sy(o,n)),i),wt.appendChild(i),Ey(n),So[n]=i,T6(e,i,{placement:r!=null?r:"right-start",middleware:[p6()]}).then(({x:o,y:a})=>{const s=i.querySelector(":scope > li");s&&(a-=s.getBoundingClientRect().top),i.style.left=`${o}px`,i.style.top=`${a}px`})}function My(t,e,n){n!=null||(n="bottom-start"),Do();const r=performance.now(),i=document.body;wt=document.createElement("div"),wt.classList.add("gs-context-menu-backdrop"),wt.addEventListener("click",Do),wt.addEventListener("contextmenu",Do),wt.addEventListener("mouseup",()=>{performance.now()-r>500&&Do()},{once:!0}),i.appendChild(wt),document.body.classList.add(Un),Dy(t.items,e,0,n)}function Ty(t,e){My(t,F6(e),"right-start"),e.preventDefault()}function F6(t){return{getBoundingClientRect(){return{width:0,height:0,x:t.clientX,y:t.clientY,top:t.clientY,left:t.clientX,right:t.clientX,bottom:t.clientY,toJSON:void 0}}}}const vf={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},ks="SAMPLE_ATTRIBUTE",Iy="SAMPLE_NAME",P6=/^attribute-(.*)$/;class Ny extends Vr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing:1,resolve:{scale:{default:"independent"},axis:{default:"independent"}}},e.context,void 0,"sample-metadata"),this.sampleView=e,this._attributeHighlighState={backgroundOpacity:1,currentAttribute:void 0,abortController:new AbortController},this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(ks,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(Iy,n=>ky),this.addInteractionEventListener("contextmenu",this.handleContextMenu.bind(this)),this.addInteractionEventListener("mousemove",(n,r)=>{var s;const i=r.target,o=this._findSampleForMouseEvent(n,r),a=i&&((s=this.getAttributeInfoFromView(i))==null?void 0:s.name)||void 0;if(o){const c=JSON.stringify([o.id,a]);this.context.updateTooltip(c,u=>Promise.resolve(this.sampleToTooltip(u)))}this._handleAttributeHighlight(a)}),Ue([...this.sampleView.getAncestors()]).addInteractionEventListener("mousemove",(n,r)=>{if(!!this._attributeHighlighState.currentAttribute){if(r.target){for(const i of r.target.getAncestors())if(i==this)return}this._handleAttributeHighlight(void 0)}})}getEncoding(){return{}}render(e,n,r={}){!this.isVisible()||super.render(e,n,{...r,clipRect:this.sampleView._clipBySummary(n)})}_handleAttributeHighlight(e){const n=this._attributeHighlighState;e!=n.currentAttribute&&(n.abortController.abort(),n.abortController=new AbortController,this.context.animator.transition({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:fg,signal:n.abortController.signal,...e?{to:.1,duration:1e3,delay:n.backgroundOpacity<1?0:500}:{to:1,duration:200,delay:150}}).catch(r=>{}),this.context.animator.requestRender()),n.currentAttribute=e}getSample(e){var n;return(n=this.sampleView.sampleHierarchy.sampleData)==null?void 0:n.entities[e]}_findSampleForMouseEvent(e,n){return this.sampleView.getSampleAt(n.point.y-this.sampleView.childCoords.y)}_getAttributeOpacity(e){const n=this._attributeHighlighState;return e==n.currentAttribute?1:n.backgroundOpacity}handleContextMenu(e,n){const r=n.uiEvent,i=this._findSampleForMouseEvent(e,n);if(!i){r.preventDefault();return}const o=[],a=this.getAttributeInfoFromView(n.target);if(a){const s=i.attributes[a.name];o.push(...ff(D`Attribute: <strong>${a.name}</strong>`,a,s,this.sampleView))}else o.push(...ff(D`Sample: <strong>${i.displayName}</strong>`,ky,i.id,this.sampleView));Ty({items:o},r)}_setSamples(e){if(this.childCount)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;Rg(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof ye){const a=o.mark;a.initializeEncoders(),i.push(a.initializeGraphics().then(s=>a)),n.addObserver(s=>{a.initializeData(),a.updateGraphicsData()},o)}}),Promise.allSettled(i).then(o=>{for(const a of o)"value"in a?a.value.finalizeGraphicsInitialization():"reason"in a&&console.error(a.reason)}),r.publishData(e),this.visit(o=>{o.name.startsWith("title")&&n.findDataSourceByKey(o).load()})}_createViews(){const e=[];e.push(this.context.createView(R6(),this));for(const n of this._getAttributeNames()){const r=this.context.createView(this._createAttributeViewSpec(n),this);r.opacityFunction=i=>i*this._getAttributeOpacity(n),e.push(r)}this.setChildren(e),Ug(this)}_getAttributeDef(e){var n,r;return(r=(n=this.sampleView.spec.samples)==null?void 0:n.attributes)==null?void 0:r[e]}_getAttributeNames(){return this._cache("attributeNames",()=>[...this.sampleView.getSamples().flatMap(r=>Object.keys(r.attributes)).reduce((r,i)=>r.add(i),new Set)])}_createAttributeViewSpec(e){const n=this._getAttributeDef(e);let r=n?n.type:void 0;if(!r){const i=this.sampleView.getSamples();switch(gh(i.map(o=>o.attributes[e]))){case"integer":case"number":r=vf.QUANTITATIVE;break;default:r=vf.NOMINAL}}return z6(e,{...n||{},type:r})}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e==null?void 0:e.name.match(P6);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:ks,specifier:i},accessor:(o,a)=>a.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:D`<em class="attribute">${i}</em>`}}}getAttributeInfo(e){return this.getAttributeInfoFromView(this._findViewForAttribute(e))}sampleToTooltip(e){const[n,r]=JSON.parse(e),i=this.getSample(n),o=(s,c)=>j6(c)?this.getAttributeInfo(s).scale(c):"transparent",a=D`<table class="attributes">${Object.entries(i.attributes).map(([s,c])=>D`<tr class="${w5({hovered:s==r})}"><th>${s}</th><td>${Xg(c)}</td><td class="color" .style="background-color: ${o(s,c)}"></td></tr>`)}</table>`;return D`<div class="title"><strong>${i.displayName||i.id}</strong></div>${a}`}getDefaultResolution(e,n){return"independent"}handleVerboseCommand(e){const n=e;for(const r of this._getAttributeNames()){const i=this.getAttributeInfo(r);if((i.type==gl||i.type==yl)&&this.sampleView.getSamples().find(a=>a.attributes[i.name]==n)){const a=this.sampleView.actions.filterByNominal({attribute:{type:ks,specifier:r},values:[n]}),s=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(s)&&!s.payload.remove&&s.payload.attribute.type==ks&&s.payload.attribute.specifier==r&&s.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[jt.ActionCreators.undo(),a]:a),!0}}return!1}isPickingSupported(){return!1}}function z6(t,e){var i,o;const n=`attributes["${t}"]`,r={name:`attribute-${t}`,title:{text:t,orient:"bottom",align:"right",baseline:"middle",offset:5,angle:-90,dy:-.5,fontSize:11},visible:(i=e.visible)!=null?i:!0,width:(o=e.width)!=null?o:10,transform:[{type:"filter",expr:`datum.${n} != null`}],mark:{type:"rect",xOffset:-.5},encoding:{facetIndex:{field:"indexNumber"},color:{field:n,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==vf.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale,axis:null}),r}function R6(){return{name:"metadata-sample-name",title:{text:"Sample name",orient:"bottom",anchor:"start",offset:5,fontSize:11},width:140,mark:{type:"text",align:"left",baseline:"middle",size:11,flushY:!1},encoding:{facetIndex:{field:"indexNumber"},x:{value:0},x2:{value:1},y:{value:0},y2:{value:1},text:{field:"displayName"}}}}function j6(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const ky=Object.freeze({name:"sample",attribute:{type:Iy},accessor:t=>t,type:"identifier",scale:void 0});class U6 extends kt{constructor(e){super({title:{text:"Groups",orient:"none"},width:{step:22},data:{dynamicSource:!0},transform:[{type:"filter",expr:"datum._depth > 0"},{type:"formula",as:"_y1",expr:"datum._index * 2"},{type:"formula",as:"_y2",expr:"datum._index * 2 + 1"},{type:"formula",as:"_NA",expr:"datum.label == null"},{type:"formula",as:"label",expr:"datum.label != null ? datum.label: 'NA'"}],encoding:{x:{field:"_depth",type:"ordinal",scale:{align:0,padding:.2272727},axis:null},y:{field:"_y1",type:"nominal",scale:{type:"ordinal",domain:Yt(500)},axis:null},y2:{field:"_y2"}},layer:[{title:"Group",mark:{type:"rect",clip:!0,color:"#e8e8e8"}},{mark:{type:"text",clip:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"label"},opacity:{field:"_NA",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[1,.3]}}}}]},e.context,void 0,"sample-groups"),this.sampleView=e,this._addBroadcastHandler("layoutComputed",()=>{this.updateRange()})}updateRange(){var o,a,s;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e!=null&&e.length))return;const n=(s=(a=this.sampleView)==null?void 0:a.childCoords.height)!=null?s:0,r=this.getScaleResolution("y"),i=[];for(const c of e)i.push(1-(c.locSize.location+c.locSize.size)/n),i.push(1-c.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i,o;const e=(o=(i=this.sampleView.getLocations())==null?void 0:i.groups)!=null?o:[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(a=>({_index:a.key.index,_name:a.key.group.name,_depth:a.key.depth,attribute:a.key.attributeLabel,label:a.key.group.label,n:a.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),Ue([...this.getAncestors()]).visit(a=>so(a,"size"))}}function ve(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];if(process.env.NODE_ENV!=="production"){var i=Z6[t],o=i?typeof i=="function"?i.apply(null,n):i:"unknown error nr: "+t;throw Error("[Immer] "+o)}throw Error("[Immer] minified error nr: "+t+(n.length?" "+n.map(function(a){return"'"+a+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function yn(t){return!!t&&!!t[re]}function Ht(t){return!!t&&(function(e){if(!e||typeof e!="object")return!1;var n=Object.getPrototypeOf(e);if(n===null)return!0;var r=Object.hasOwnProperty.call(n,"constructor")&&n.constructor;return r===Object||typeof r=="function"&&Function.toString.call(r)===q6}(t)||Array.isArray(t)||!!t[Gy]||!!t.constructor[Gy]||bf(t)||Af(t))}function ur(t,e,n){n===void 0&&(n=!1),ei(t)===0?(n?Object.keys:ri)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function ei(t){var e=t[re];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:bf(t)?2:Af(t)?3:0}function ti(t,e){return ei(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function G6(t,e){return ei(t)===2?t.get(e):t[e]}function Ly(t,e,n){var r=ei(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function Oy(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function bf(t){return W6&&t instanceof Map}function Af(t){return X6&&t instanceof Set}function vn(t){return t.o||t.t}function wf(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=Hy(t);delete e[re];for(var n=ri(e),r=0;r<n.length;r++){var i=n[r],o=e[i];o.writable===!1&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(e[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:t[i]})}return Object.create(Object.getPrototypeOf(t),e)}function xf(t,e){return e===void 0&&(e=!1),Cf(t)||yn(t)||!Ht(t)||(ei(t)>1&&(t.set=t.add=t.clear=t.delete=H6),Object.freeze(t),e&&ur(t,function(n,r){return xf(r,!0)},!0)),t}function H6(){ve(2)}function Cf(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function xt(t){var e=Lf[t];return e||ve(18,t),e}function Q6(t,e){Lf[t]||(Lf[t]=e)}function Ef(){return process.env.NODE_ENV==="production"||ni||ve(0),ni}function Sf(t,e){e&&(xt("Patches"),t.u=[],t.s=[],t.v=e)}function Ls(t){Df(t),t.p.forEach(V6),t.p=null}function Df(t){t===ni&&(ni=t.l)}function By(t){return ni={p:[],l:ni,h:t,m:!0,_:0}}function V6(t){var e=t[re];e.i===0||e.i===1?e.j():e.O=!0}function Mf(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||xt("ES5").S(e,t,r),r?(n[re].P&&(Ls(e),ve(4)),Ht(t)&&(t=Os(e,t),e.l||Bs(e,t)),e.u&&xt("Patches").M(n[re].t,t,e.u,e.s)):t=Os(e,n,[]),Ls(e),e.u&&e.v(e.u,e.s),t!==Uy?t:void 0}function Os(t,e,n){if(Cf(e))return e;var r=e[re];if(!r)return ur(e,function(o,a){return Fy(t,r,e,o,a,n)},!0),e;if(r.A!==t)return e;if(!r.P)return Bs(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=wf(r.k):r.o;ur(r.i===3?new Set(i):i,function(o,a){return Fy(t,r,i,o,a,n)}),Bs(t,i,!1),n&&t.u&&xt("Patches").R(r,n,t.u,t.s)}return r.o}function Fy(t,e,n,r,i,o){if(process.env.NODE_ENV!=="production"&&i===n&&ve(5),yn(i)){var a=Os(t,i,o&&e&&e.i!==3&&!ti(e.D,r)?o.concat(r):void 0);if(Ly(n,r,a),!yn(a))return;t.m=!1}if(Ht(i)&&!Cf(i)){if(!t.h.F&&t._<1)return;Os(t,i),e&&e.A.l||Bs(t,i)}}function Bs(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&xf(e,n)}function Tf(t,e){var n=t[re];return(n?vn(n):t)[e]}function Py(t,e){if(e in t)for(var n=Object.getPrototypeOf(t);n;){var r=Object.getOwnPropertyDescriptor(n,e);if(r)return r;n=Object.getPrototypeOf(n)}}function bn(t){t.P||(t.P=!0,t.l&&bn(t.l))}function If(t){t.o||(t.o=wf(t.t))}function Nf(t,e,n){var r=bf(e)?xt("MapSet").N(e,n):Af(e)?xt("MapSet").T(e,n):t.g?function(i,o){var a=Array.isArray(i),s={i:a?1:0,A:o?o.A:Ef(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=s,u=Mo;a&&(c=[s],u=To);var f=Proxy.revocable(c,u),l=f.revoke,d=f.proxy;return s.k=d,s.j=l,d}(e,n):xt("ES5").J(e,n);return(n?n.A:Ef()).p.push(r),r}function Y6(t){return yn(t)||ve(22,t),function e(n){if(!Ht(n))return n;var r,i=n[re],o=ei(n);if(i){if(!i.P&&(i.i<4||!xt("ES5").K(i)))return i.t;i.I=!0,r=zy(n,o),i.I=!1}else r=zy(n,o);return ur(r,function(a,s){i&&G6(i.t,a)===s||Ly(r,a,e(s))}),o===3?new Set(r):r}(t)}function zy(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return wf(t)}function _6(){function t(a,s){var c=o[a];return c?c.enumerable=s:o[a]=c={configurable:!0,enumerable:s,get:function(){var u=this[re];return process.env.NODE_ENV!=="production"&&i(u),Mo.get(u,a)},set:function(u){var f=this[re];process.env.NODE_ENV!=="production"&&i(f),Mo.set(f,a,u)}},c}function e(a){for(var s=a.length-1;s>=0;s--){var c=a[s][re];if(!c.P)switch(c.i){case 5:r(c)&&bn(c);break;case 4:n(c)&&bn(c)}}}function n(a){for(var s=a.t,c=a.k,u=ri(c),f=u.length-1;f>=0;f--){var l=u[f];if(l!==re){var d=s[l];if(d===void 0&&!ti(s,l))return!0;var h=c[l],p=h&&h[re];if(p?p.t!==d:!Oy(h,d))return!0}}var m=!!s[re];return u.length!==ri(s).length+(m?0:1)}function r(a){var s=a.k;if(s.length!==a.t.length)return!0;var c=Object.getOwnPropertyDescriptor(s,s.length-1);if(c&&!c.get)return!0;for(var u=0;u<s.length;u++)if(!s.hasOwnProperty(u))return!0;return!1}function i(a){a.O&&ve(3,JSON.stringify(vn(a)))}var o={};Q6("ES5",{J:function(a,s){var c=Array.isArray(a),u=function(l,d){if(l){for(var h=Array(d.length),p=0;p<d.length;p++)Object.defineProperty(h,""+p,t(p,!0));return h}var m=Hy(d);delete m[re];for(var y=ri(m),g=0;g<y.length;g++){var A=y[g];m[A]=t(A,l||!!m[A].enumerable)}return Object.create(Object.getPrototypeOf(d),m)}(c,a),f={i:c?5:4,A:s?s.A:Ef(),P:!1,I:!1,D:{},l:s,t:a,k:u,o:null,O:!1,C:!1};return Object.defineProperty(u,re,{value:f,writable:!0}),u},S:function(a,s,c){c?yn(s)&&s[re].A===a&&e(a.p):(a.u&&function u(f){if(f&&typeof f=="object"){var l=f[re];if(l){var d=l.t,h=l.k,p=l.D,m=l.i;if(m===4)ur(h,function(C){C!==re&&(d[C]!==void 0||ti(d,C)?p[C]||u(h[C]):(p[C]=!0,bn(l)))}),ur(d,function(C){h[C]!==void 0||ti(h,C)||(p[C]=!1,bn(l))});else if(m===5){if(r(l)&&(bn(l),p.length=!0),h.length<d.length)for(var y=h.length;y<d.length;y++)p[y]=!1;else for(var g=d.length;g<h.length;g++)p[g]=!0;for(var A=Math.min(h.length,d.length),w=0;w<A;w++)h.hasOwnProperty(w)||(p[w]=!0),p[w]===void 0&&u(h[w])}}}}(a.p[0]),e(a.p))},K:function(a){return a.i===4?n(a):r(a)}})}var Ry,ni,kf=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",W6=typeof Map<"u",X6=typeof Set<"u",jy=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",Uy=kf?Symbol.for("immer-nothing"):((Ry={})["immer-nothing"]=!0,Ry),Gy=kf?Symbol.for("immer-draftable"):"__$immer_draftable",re=kf?Symbol.for("immer-state"):"__$immer_state",Z6={0:"Illegal state",1:"Immer drafts cannot have computed properties",2:"This object has been frozen and should not be mutated",3:function(t){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+t},4:"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.",5:"Immer forbids circular references",6:"The first or second argument to `produce` must be a function",7:"The third argument to `produce` must be a function or undefined",8:"First argument to `createDraft` must be a plain object, an array, or an immerable object",9:"First argument to `finishDraft` must be a draft returned by `createDraft`",10:"The given draft is already finalized",11:"Object.defineProperty() cannot be used on an Immer draft",12:"Object.setPrototypeOf() cannot be used on an Immer draft",13:"Immer only supports deleting array indices",14:"Immer only supports setting array indices and the 'length' property",15:function(t){return"Cannot apply patch, path doesn't resolve: "+t},16:'Sets cannot have "replace" patches.',17:function(t){return"Unsupported patch operation: "+t},18:function(t){return"The plugin for '"+t+"' has not been loaded into Immer. To enable the plugin, import and call `enable"+t+"()` when initializing your application."},20:"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available",21:function(t){return"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '"+t+"'"},22:function(t){return"'current' expects a draft, got: "+t},23:function(t){return"'original' expects a draft, got: "+t},24:"Patching reserved attributes like __proto__, prototype and constructor is not allowed"},q6=""+Object.prototype.constructor,ri=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,Hy=Object.getOwnPropertyDescriptors||function(t){var e={};return ri(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},Lf={},Mo={get:function(t,e){if(e===re)return t;var n=vn(t);if(!ti(n,e))return function(i,o,a){var s,c=Py(o,a);return c?"value"in c?c.value:(s=c.get)===null||s===void 0?void 0:s.call(i.k):void 0}(t,n,e);var r=n[e];return t.I||!Ht(r)?r:r===Tf(t.t,e)?(If(t),t.o[e]=Nf(t.A.h,r,t)):r},has:function(t,e){return e in vn(t)},ownKeys:function(t){return Reflect.ownKeys(vn(t))},set:function(t,e,n){var r=Py(vn(t),e);if(r!=null&&r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=Tf(vn(t),e),o=i==null?void 0:i[re];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(Oy(n,i)&&(n!==void 0||ti(t.t,e)))return!0;If(t),bn(t)}return t.o[e]===n&&typeof n!="number"&&(n!==void 0||e in t.o)||(t.o[e]=n,t.D[e]=!0,!0)},deleteProperty:function(t,e){return Tf(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,If(t),bn(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=vn(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){ve(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){ve(12)}},To={};ur(Mo,function(t,e){To[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),To.deleteProperty=function(t,e){return process.env.NODE_ENV!=="production"&&isNaN(parseInt(e))&&ve(13),To.set.call(this,t,e,void 0)},To.set=function(t,e,n){return process.env.NODE_ENV!=="production"&&e!=="length"&&isNaN(parseInt(e))&&ve(14),Mo.set.call(this,t[0],e,n,t[0])};var K6=function(){function t(n){var r=this;this.g=jy,this.F=!0,this.produce=function(i,o,a){if(typeof i=="function"&&typeof o!="function"){var s=o;o=i;var c=r;return function(m){var y=this;m===void 0&&(m=s);for(var g=arguments.length,A=Array(g>1?g-1:0),w=1;w<g;w++)A[w-1]=arguments[w];return c.produce(m,function(C){var b;return(b=o).call.apply(b,[y,C].concat(A))})}}var u;if(typeof o!="function"&&ve(6),a!==void 0&&typeof a!="function"&&ve(7),Ht(i)){var f=By(r),l=Nf(r,i,void 0),d=!0;try{u=o(l),d=!1}finally{d?Ls(f):Df(f)}return typeof Promise<"u"&&u instanceof Promise?u.then(function(m){return Sf(f,a),Mf(m,f)},function(m){throw Ls(f),m}):(Sf(f,a),Mf(u,f))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===Uy&&(u=void 0),r.F&&xf(u,!0),a){var h=[],p=[];xt("Patches").M(i,u,h,p),a(h,p)}return u}ve(21,i)},this.produceWithPatches=function(i,o){if(typeof i=="function")return function(u){for(var f=arguments.length,l=Array(f>1?f-1:0),d=1;d<f;d++)l[d-1]=arguments[d];return r.produceWithPatches(u,function(h){return i.apply(void 0,[h].concat(l))})};var a,s,c=r.produce(i,o,function(u,f){a=u,s=f});return typeof Promise<"u"&&c instanceof Promise?c.then(function(u){return[u,a,s]}):[c,a,s]},typeof(n==null?void 0:n.useProxies)=="boolean"&&this.setUseProxies(n.useProxies),typeof(n==null?void 0:n.autoFreeze)=="boolean"&&this.setAutoFreeze(n.autoFreeze)}var e=t.prototype;return e.createDraft=function(n){Ht(n)||ve(8),yn(n)&&(n=Y6(n));var r=By(this),i=Nf(this,n,void 0);return i[re].C=!0,Df(r),i},e.finishDraft=function(n,r){var i=n&&n[re];process.env.NODE_ENV!=="production"&&(i&&i.C||ve(9),i.I&&ve(10));var o=i.A;return Sf(o,r),Mf(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!jy&&ve(20),this.g=n},e.applyPatches=function(n,r){var i;for(i=r.length-1;i>=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}i>-1&&(r=r.slice(i+1));var a=xt("Patches").$;return yn(n)?a(n,r):this.produce(n,function(s){return a(s,r)})},t}(),Ve=new K6,Qy=Ve.produce;Ve.produceWithPatches.bind(Ve),Ve.setAutoFreeze.bind(Ve),Ve.setUseProxies.bind(Ve),Ve.applyPatches.bind(Ve),Ve.createDraft.bind(Ve),Ve.finishDraft.bind(Ve);function J6(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Vy(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function Yy(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Vy(Object(n),!0).forEach(function(r){J6(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Vy(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function De(t){return"Minified Redux error #"+t+"; visit https://redux.js.org/Errors?code="+t+" for the full message or use the non-minified dev environment for full errors. "}var _y=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Of=function(){return Math.random().toString(36).substring(7).split("").join(".")},lr={INIT:"@@redux/INIT"+Of(),REPLACE:"@@redux/REPLACE"+Of(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Of()}};function Wy(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function $6(t){if(t===void 0)return"undefined";if(t===null)return"null";var e=typeof t;switch(e){case"boolean":case"string":case"number":case"symbol":case"function":return e}if(Array.isArray(t))return"array";if(n9(t))return"date";if(t9(t))return"error";var n=e9(t);switch(n){case"Symbol":case"Promise":case"WeakMap":case"WeakSet":case"Map":case"Set":return n}return e.slice(8,-1).toLowerCase().replace(/\s/g,"")}function e9(t){return typeof t.constructor=="function"?t.constructor.name:null}function t9(t){return t instanceof Error||typeof t.message=="string"&&t.constructor&&typeof t.constructor.stackTraceLimit=="number"}function n9(t){return t instanceof Date?!0:typeof t.toDateString=="function"&&typeof t.getDate=="function"&&typeof t.setDate=="function"}function fr(t){var e=typeof t;return process.env.NODE_ENV!=="production"&&(e=$6(t)),e}function Xy(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(process.env.NODE_ENV==="production"?De(0):"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.");if(typeof e=="function"&&typeof n>"u"&&(n=e,e=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(process.env.NODE_ENV==="production"?De(1):"Expected the enhancer to be a function. Instead, received: '"+fr(n)+"'");return n(Xy)(t,e)}if(typeof t!="function")throw new Error(process.env.NODE_ENV==="production"?De(2):"Expected the root reducer to be a function. Instead, received: '"+fr(t)+"'");var i=t,o=e,a=[],s=a,c=!1;function u(){s===a&&(s=a.slice())}function f(){if(c)throw new Error(process.env.NODE_ENV==="production"?De(3):"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return o}function l(m){if(typeof m!="function")throw new Error(process.env.NODE_ENV==="production"?De(4):"Expected the listener to be a function. Instead, received: '"+fr(m)+"'");if(c)throw new Error(process.env.NODE_ENV==="production"?De(5):"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.");var y=!0;return u(),s.push(m),function(){if(!!y){if(c)throw new Error(process.env.NODE_ENV==="production"?De(6):"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.");y=!1,u();var A=s.indexOf(m);s.splice(A,1),a=null}}}function d(m){if(!Wy(m))throw new Error(process.env.NODE_ENV==="production"?De(7):"Actions must be plain objects. Instead, the actual type was: '"+fr(m)+"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.");if(typeof m.type>"u")throw new Error(process.env.NODE_ENV==="production"?De(8):'Actions may not have an undefined "type" property. You may have misspelled an action type string constant.');if(c)throw new Error(process.env.NODE_ENV==="production"?De(9):"Reducers may not dispatch actions.");try{c=!0,o=i(o,m)}finally{c=!1}for(var y=a=s,g=0;g<y.length;g++){var A=y[g];A()}return m}function h(m){if(typeof m!="function")throw new Error(process.env.NODE_ENV==="production"?De(10):"Expected the nextReducer to be a function. Instead, received: '"+fr(m));i=m,d({type:lr.REPLACE})}function p(){var m,y=l;return m={subscribe:function(A){if(typeof A!="object"||A===null)throw new Error(process.env.NODE_ENV==="production"?De(11):"Expected the observer to be an object. Instead, received: '"+fr(A)+"'");function w(){A.next&&A.next(f())}w();var C=y(w);return{unsubscribe:C}}},m[_y]=function(){return this},m}return d({type:lr.INIT}),r={dispatch:d,subscribe:l,getState:f,replaceReducer:h},r[_y]=p,r}function Bf(t){typeof console<"u"&&typeof console.error=="function"&&console.error(t);try{throw new Error(t)}catch{}}function r9(t,e,n,r){var i=Object.keys(e),o=n&&n.type===lr.INIT?"preloadedState argument passed to createStore":"previous state received by the reducer";if(i.length===0)return"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.";if(!Wy(t))return"The "+o+' has unexpected type of "'+fr(t)+'". Expected argument to be an object with the following '+('keys: "'+i.join('", "')+'"');var a=Object.keys(t).filter(function(s){return!e.hasOwnProperty(s)&&!r[s]});if(a.forEach(function(s){r[s]=!0}),!(n&&n.type===lr.REPLACE)&&a.length>0)return"Unexpected "+(a.length>1?"keys":"key")+" "+('"'+a.join('", "')+'" found in '+o+". ")+"Expected to find one of the known reducer keys instead: "+('"'+i.join('", "')+'". Unexpected keys will be ignored.')}function i9(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:lr.INIT});if(typeof r>"u")throw new Error(process.env.NODE_ENV==="production"?De(12):'The slice reducer for key "'+e+`" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(typeof n(void 0,{type:lr.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(process.env.NODE_ENV==="production"?De(13):'The slice reducer for key "'+e+'" returned undefined when probed with a random type. '+("Don't try to handle '"+lr.INIT+`' or other actions in "redux/*" `)+"namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.")})}function Ff(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var i=e[r];process.env.NODE_ENV!=="production"&&typeof t[i]>"u"&&Bf('No reducer provided for key "'+i+'"'),typeof t[i]=="function"&&(n[i]=t[i])}var o=Object.keys(n),a;process.env.NODE_ENV!=="production"&&(a={});var s;try{i9(n)}catch(c){s=c}return function(u,f){if(u===void 0&&(u={}),s)throw s;if(process.env.NODE_ENV!=="production"){var l=r9(u,n,f,a);l&&Bf(l)}for(var d=!1,h={},p=0;p<o.length;p++){var m=o[p],y=n[m],g=u[m],A=y(g,f);if(typeof A>"u"){var w=f&&f.type;throw new Error(process.env.NODE_ENV==="production"?De(14):"When called with an action of type "+(w?'"'+String(w)+'"':"(unknown type)")+', the slice reducer for key "'+m+'" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.')}h[m]=A,d=d||A!==g}return d=d||o.length!==Object.keys(u).length,d?h:u}}function Fs(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.length===0?function(r){return r}:e.length===1?e[0]:e.reduce(function(r,i){return function(){return r(i.apply(void 0,arguments))}})}function o9(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(r){return function(){var i=r.apply(void 0,arguments),o=function(){throw new Error(process.env.NODE_ENV==="production"?De(15):"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},a={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},s=e.map(function(c){return c(a)});return o=Fs.apply(void 0,s)(i.dispatch),Yy(Yy({},i),{},{dispatch:o})}}}function Zy(){}process.env.NODE_ENV!=="production"&&typeof Zy.name=="string"&&Zy.name!=="isCrushed"&&Bf('You are currently using minified code outside of NODE_ENV === "production". This means that you are running a slower development build of Redux. You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) to ensure you have the correct code for your production build.');var Ps="NOT_FOUND";function a9(t){var e;return{get:function(r){return e&&t(e.key,r)?e.value:Ps},put:function(r,i){e={key:r,value:i}},getEntries:function(){return e?[e]:[]},clear:function(){e=void 0}}}function s9(t,e){var n=[];function r(s){var c=n.findIndex(function(f){return e(s,f.key)});if(c>-1){var u=n[c];return c>0&&(n.splice(c,1),n.unshift(u)),u.value}return Ps}function i(s,c){r(s)===Ps&&(n.unshift({key:s,value:c}),n.length>t&&n.pop())}function o(){return n}function a(){n=[]}return{get:r,put:i,getEntries:o,clear:a}}var c9=function(e,n){return e===n};function u9(t){return function(n,r){if(n===null||r===null||n.length!==r.length)return!1;for(var i=n.length,o=0;o<i;o++)if(!t(n[o],r[o]))return!1;return!0}}function l9(t,e){var n=typeof e=="object"?e:{equalityCheck:e},r=n.equalityCheck,i=r===void 0?c9:r,o=n.maxSize,a=o===void 0?1:o,s=n.resultEqualityCheck,c=u9(i),u=a===1?a9(c):s9(a,c);function f(){var l=u.get(arguments);if(l===Ps){if(l=t.apply(null,arguments),s){var d=u.getEntries(),h=d.find(function(p){return s(p.value,l)});h&&(l=h.value)}u.put(arguments,l)}return l}return f.clearCache=function(){return u.clear()},f}function f9(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every(function(r){return typeof r=="function"})){var n=e.map(function(r){return typeof r=="function"?"function "+(r.name||"unnamed")+"()":typeof r}).join(", ");throw new Error("createSelector expects all input-selectors to be functions, but received the following types: ["+n+"]")}return e}function d9(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=function(){for(var a=arguments.length,s=new Array(a),c=0;c<a;c++)s[c]=arguments[c];var u=0,f,l={memoizeOptions:void 0},d=s.pop();if(typeof d=="object"&&(l=d,d=s.pop()),typeof d!="function")throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof d+"]");var h=l,p=h.memoizeOptions,m=p===void 0?n:p,y=Array.isArray(m)?m:[m],g=f9(s),A=t.apply(void 0,[function(){return u++,d.apply(null,arguments)}].concat(y)),w=t(function(){for(var C=[],b=g.length,v=0;v<b;v++)C.push(g[v].apply(null,arguments));return f=A.apply(null,C),f});return Object.assign(w,{resultFunc:d,memoizedResultFunc:A,dependencies:g,lastResult:function(){return f},recomputations:function(){return u},resetRecomputations:function(){return u=0}}),w};return i}var h9=d9(l9);function qy(t){var e=function(r){var i=r.dispatch,o=r.getState;return function(a){return function(s){return typeof s=="function"?s(i,o,t):a(s)}}};return e}var Ky=qy();Ky.withExtraArgument=qy;const Jy=Ky;var p9=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();globalThis&&globalThis.__generator;var zs=globalThis&&globalThis.__spreadArray||function(t,e){for(var n=0,r=e.length,i=t.length;n<r;n++,i++)t[i]=e[n];return t},m9=Object.defineProperty,$y=Object.getOwnPropertySymbols,g9=Object.prototype.hasOwnProperty,y9=Object.prototype.propertyIsEnumerable,ev=function(t,e,n){return e in t?m9(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Io=function(t,e){for(var n in e||(e={}))g9.call(e,n)&&ev(t,n,e[n]);if($y)for(var r=0,i=$y(e);r<i.length;r++){var n=i[r];y9.call(e,n)&&ev(t,n,e[n])}return t},v9=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Fs:Fs.apply(null,arguments)};function tv(t){if(typeof t!="object"||t===null)return!1;var e=Object.getPrototypeOf(t);if(e===null)return!0;for(var n=e;Object.getPrototypeOf(n)!==null;)n=Object.getPrototypeOf(n);return e===n}function nv(t,e){var n=0;return{measureTime:function(r){var i=Date.now();try{return r()}finally{var o=Date.now();n+=o-i}},warnIfExceeded:function(){n>t&&console.warn(e+" took "+n+"ms, which is more than the warning threshold of "+t+`ms.
|
2139
|
+
If your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.
|
2140
|
+
It is disabled in production builds, so you don't need to worry about that.`)}}}var b9=function(t){p9(e,t);function e(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,n)||this;return Object.setPrototypeOf(i,e.prototype),i}return Object.defineProperty(e,Symbol.species,{get:function(){return e},enumerable:!1,configurable:!0}),e.prototype.concat=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return t.prototype.concat.apply(this,n)},e.prototype.prepend=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return n.length===1&&Array.isArray(n[0])?new(e.bind.apply(e,zs([void 0],n[0].concat(this)))):new(e.bind.apply(e,zs([void 0],n.concat(this))))},e}(Array);function Pf(t){return Ht(t)?Qy(t,function(){}):t}var A9=process.env.NODE_ENV==="production",rv="Invariant failed";function iv(t,e){if(!t)throw A9?new Error(rv):new Error(rv+": "+(e||""))}function w9(t,e,n,r){return JSON.stringify(t,x9(e,r),n)}function x9(t,e){var n=[],r=[];return e||(e=function(i,o){return n[0]===o?"[Circular ~]":"[Circular ~."+r.slice(0,n.indexOf(o)).join(".")+"]"}),function(i,o){if(n.length>0){var a=n.indexOf(this);~a?n.splice(a+1):n.push(this),~a?r.splice(a,1/0,i):r.push(i),~n.indexOf(o)&&(o=e.call(this,i,o))}else n.push(o);return t==null?o:t.call(this,i,o)}}function C9(t){return typeof t!="object"||t===null||typeof t>"u"||Object.isFrozen(t)}function E9(t,e,n){var r=ov(t,e,n);return{detectMutations:function(){return av(t,e,r,n)}}}function ov(t,e,n,r){e===void 0&&(e=[]),r===void 0&&(r="");var i={value:n};if(!t(n)){i.children={};for(var o in n){var a=r?r+"."+o:o;e.length&&e.indexOf(a)!==-1||(i.children[o]=ov(t,e,n[o],a))}}return i}function av(t,e,n,r,i,o){e===void 0&&(e=[]),i===void 0&&(i=!1),o===void 0&&(o="");var a=n?n.value:void 0,s=a===r;if(i&&!s&&!Number.isNaN(r))return{wasMutated:!0,path:o};if(t(a)||t(r))return{wasMutated:!1};var c={};for(var u in n.children)c[u]=!0;for(var u in r)c[u]=!0;for(var u in c){var f=o?o+"."+u:u;if(!(e.length&&e.indexOf(f)!==-1)){var l=av(t,e,n.children[u],r[u],s,f);if(l.wasMutated)return l}}return{wasMutated:!1}}function S9(t){if(t===void 0&&(t={}),process.env.NODE_ENV==="production")return function(){return function(c){return function(u){return c(u)}}};var e=t.isImmutable,n=e===void 0?C9:e,r=t.ignoredPaths,i=t.warnAfter,o=i===void 0?32:i,a=t.ignore;r=r||a;var s=E9.bind(null,n,r);return function(c){var u=c.getState,f=u(),l=s(f),d;return function(h){return function(p){var m=nv(o,"ImmutableStateInvariantMiddleware");m.measureTime(function(){f=u(),d=l.detectMutations(),l=s(f),iv(!d.wasMutated,"A state mutation was detected between dispatches, in the path '"+(d.path||"")+"'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)")});var y=h(p);return m.measureTime(function(){f=u(),d=l.detectMutations(),l=s(f),d.wasMutated&&iv(!d.wasMutated,"A state mutation was detected inside a dispatch, in the path: "+(d.path||"")+". Take a look at the reducer(s) handling the action "+w9(p)+". (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)")}),m.warnIfExceeded(),y}}}}function sv(t){var e=typeof t;return e==="undefined"||t===null||e==="string"||e==="boolean"||e==="number"||Array.isArray(t)||tv(t)}function zf(t,e,n,r,i){e===void 0&&(e=""),n===void 0&&(n=sv),i===void 0&&(i=[]);var o;if(!n(t))return{keyPath:e||"<root>",value:t};if(typeof t!="object"||t===null)return!1;for(var a=r!=null?r(t):Object.entries(t),s=i.length>0,c=0,u=a;c<u.length;c++){var f=u[c],l=f[0],d=f[1],h=e?e+"."+l:l;if(!(s&&i.indexOf(h)>=0)){if(!n(d))return{keyPath:h,value:d};if(typeof d=="object"&&(o=zf(d,h,n,r,i),o))return o}}return!1}function D9(t){if(t===void 0&&(t={}),process.env.NODE_ENV==="production")return function(){return function(y){return function(g){return y(g)}}};var e=t.isSerializable,n=e===void 0?sv:e,r=t.getEntries,i=t.ignoredActions,o=i===void 0?[]:i,a=t.ignoredActionPaths,s=a===void 0?["meta.arg","meta.baseQueryMeta"]:a,c=t.ignoredPaths,u=c===void 0?[]:c,f=t.warnAfter,l=f===void 0?32:f,d=t.ignoreState,h=d===void 0?!1:d,p=t.ignoreActions,m=p===void 0?!1:p;return function(y){return function(g){return function(A){var w=g(A),C=nv(l,"SerializableStateInvariantMiddleware");return!m&&!(o.length&&o.indexOf(A.type)!==-1)&&C.measureTime(function(){var b=zf(A,"",n,r,s);if(b){var v=b.keyPath,x=b.value;console.error("A non-serializable value was detected in an action, in the path: `"+v+"`. Value:",x,`
|
2141
|
+
Take a look at the logic that dispatched this action: `,A,`
|
2142
|
+
(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)`,`
|
2143
|
+
(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)`)}}),h||(C.measureTime(function(){var b=y.getState(),v=zf(b,"",n,r,u);if(v){var x=v.keyPath,E=v.value;console.error("A non-serializable value was detected in the state, in the path: `"+x+"`. Value:",E,`
|
2144
|
+
Take a look at the reducer(s) handling this action type: `+A.type+`.
|
2145
|
+
(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`)}}),C.warnIfExceeded()),w}}}}function Rf(t){return typeof t=="boolean"}function M9(){return function(e){return T9(e)}}function T9(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e,r=t.immutableCheck,i=r===void 0?!0:r,o=t.serializableCheck,a=o===void 0?!0:o,s=new b9;if(n&&(Rf(n)?s.push(Jy):s.push(Jy.withExtraArgument(n.extraArgument))),process.env.NODE_ENV!=="production"){if(i){var c={};Rf(i)||(c=i),s.unshift(S9(c))}if(a){var u={};Rf(a)||(u=a),s.push(D9(u))}}return s}var jf=process.env.NODE_ENV==="production";function I9(t){var e=M9(),n=t||{},r=n.reducer,i=r===void 0?void 0:r,o=n.middleware,a=o===void 0?e():o,s=n.devTools,c=s===void 0?!0:s,u=n.preloadedState,f=u===void 0?void 0:u,l=n.enhancers,d=l===void 0?void 0:l,h;if(typeof i=="function")h=i;else if(tv(i))h=Ff(i);else throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');var p=a;if(typeof p=="function"&&(p=p(e),!jf&&!Array.isArray(p)))throw new Error("when using a middleware builder function, an array of middleware must be returned");if(!jf&&p.some(function(w){return typeof w!="function"}))throw new Error("each middleware provided to configureStore must be a function");var m=o9.apply(void 0,p),y=Fs;c&&(y=v9(Io({trace:!jf},typeof c=="object"&&c)));var g=[m];Array.isArray(d)?g=zs([m],d):typeof d=="function"&&(g=d(g));var A=y.apply(void 0,g);return Xy(h,f,A)}function No(t,e){function n(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];if(e){var o=e.apply(void 0,r);if(!o)throw new Error("prepareAction did not return an object");return Io(Io({type:t,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:t,payload:r[0]}}return n.toString=function(){return""+t},n.type=t,n.match=function(r){return r.type===t},n}function cv(t){var e={},n=[],r,i={addCase:function(o,a){if(process.env.NODE_ENV!=="production"){if(n.length>0)throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`");if(r)throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`")}var s=typeof o=="string"?o:o.type;if(s in e)throw new Error("addCase cannot be called with two reducers for the same action type");return e[s]=a,i},addMatcher:function(o,a){if(process.env.NODE_ENV!=="production"&&r)throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`");return n.push({matcher:o,reducer:a}),i},addDefaultCase:function(o){if(process.env.NODE_ENV!=="production"&&r)throw new Error("`builder.addDefaultCase` can only be called once");return r=o,i}};return t(i),[e,n,r]}function N9(t){return typeof t=="function"}function k9(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?cv(e):[e,n,r],o=i[0],a=i[1],s=i[2],c;if(N9(t))c=function(){return Pf(t())};else{var u=Pf(t);c=function(){return u}}function f(l,d){l===void 0&&(l=c());var h=zs([o[d.type]],a.filter(function(p){var m=p.matcher;return m(d)}).map(function(p){var m=p.reducer;return m}));return h.filter(function(p){return!!p}).length===0&&(h=[s]),h.reduce(function(p,m){if(m)if(yn(p)){var y=p,g=m(y,d);return typeof g>"u"?p:g}else{if(Ht(p))return Qy(p,function(A){return m(A,d)});var g=m(p,d);if(typeof g>"u"){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return g}return p},l)}return f.getInitialState=c,f}function L9(t,e){return t+"/"+e}function uv(t){var e=t.name;if(!e)throw new Error("`name` is a required option for createSlice");typeof process<"u"&&process.env.NODE_ENV==="development"&&t.initialState===void 0&&console.error("You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`");var n=typeof t.initialState=="function"?t.initialState:Pf(t.initialState),r=t.reducers||{},i=Object.keys(r),o={},a={},s={};i.forEach(function(f){var l=r[f],d=L9(e,f),h,p;"reducer"in l?(h=l.reducer,p=l.prepare):h=l,o[f]=h,a[d]=h,s[f]=p?No(d,p):No(d)});function c(){var f=typeof t.extraReducers=="function"?cv(t.extraReducers):[t.extraReducers],l=f[0],d=l===void 0?{}:l,h=f[1],p=h===void 0?[]:h,m=f[2],y=m===void 0?void 0:m,g=Io(Io({},d),a);return k9(n,g,p,y)}var u;return{name:e,reducer:function(f,l){return u||(u=c()),u(f,l)},actions:s,caseReducers:o,getInitialState:function(){return u||(u=c()),u.getInitialState()}}}var Uf="listenerMiddleware";No(Uf+"/add"),No(Uf+"/removeAll"),No(Uf+"/remove"),_6();function lv(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=fi(t.samples,e),o=n?n.map(c=>[c,i.get(c)]).filter(c=>c[1]):[...i],s=t;s.groups=o.map(([c,u],f)=>({name:""+c,label:r?r[f]:c,samples:u})),delete t.samples}function fv(t,e,n){const r=le(".3~r"),i=a=>`${n[a].operator=="lt"?"[":"("}${r(n[a].operand)}, ${r(n[a+1].operand)}${n[a+1].operator=="lte"?"]":")"}`,o=Yt(n.length-1).reverse();lv(t,F9(e,n.slice(1,n.length-1)),o,o.map(i))}function O9(t,e,n){fv(t,e,[{operator:"lt",operand:-1/0},...n,{operator:"lte",operand:1/0}])}function B9(t,e){const n=z9(P9(t.samples,e,[0,.25,.5,.75,1]));n.length==1&&n.push(n[0]),fv(t,e,n.map((r,i,o)=>({operator:i==o.length-1?"lte":"lt",operand:r})))}function F9(t,e){return r=>{const i=t(r);if(!(!ce(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(e[o].operator=="lt"){if(i<e[o].operand)return o}else if(i<=e[o].operand)return o;return e.length}}}function P9(t,e,n){const r=i2(t.map(e).filter(i=>ce(i)&&!isNaN(i)));return n.map(i=>sc(r,i))}function z9(t){const e=[t[0]];for(let n=1;n<t.length;n++)t[n]!=t[n-1]&&e.push(t[n]);return e}function R9(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var j9=[].forEach;function U9(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],a=[];j9.call(t,function(c,u,f){if(r=e(c,u,f),r===void 0)return void a.push(c);if(n===void 0&&typeof r=="symbol")throw new TypeError("Can't convert symbol to string");i.push(u),o[u]=r}),n===void 0&&(n=R9),i.sort(function(c,u){return n(o[c],o[u])});var s=i.map(function(c){return t[c]}).concat(a);return s.length!=t.length&&(s.length=t.length),s}function G9(t,e){const n=i=>i.copy().range(Yt(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>ce(i)&&!isNaN(i)?-i:-1/0;break;case"ordinal":r=n(e.scale);break;case"nominal":r=i=>i||"";break}return i=>r(t(i))}function H9(t,e){const n=new Set,r=i=>{const o=n.has(i);return n.add(i),o};return t.filter(i=>!r(e(i)))}function Q9(t,e,n){const r=new Set,i=o=>(r.size<n&&r.add(o),r.has(o));return t.filter(o=>i(e(o)))}function V9(t,e,n=!1){return U9(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const Y9={lt:(t,e)=>t<e,lte:(t,e)=>t<=e,eq:(t,e)=>t==e,gte:(t,e)=>t>=e,gt:(t,e)=>t>e};function _9(t,e,n,r){const i=Y9[n];return t.filter(o=>i(e(o),r))}function dv(t,e,n,r){const i=new Set(r),o=s=>i.has(s),a=n=="remove"?s=>!o(s):o;return t.filter(s=>a(e(s)))}function W9(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const hv="setSamples",pv="sortBy",mv="retainFirstOfEach",gv="retainFirstNCategories",yv="filterByNominal",vv="filterByQuantitative",bv="removeUndefined",Av="groupByNominal",wv="groupToQuartiles",xv="groupByThresholds",Cv="retainMatched",ii="sampleView";function X9(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function Z9(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return uv({name:ii,initialState:X9(),reducers:{[hv]:(n,r)=>{const i=r.payload.samples;if(n.sampleData)throw new Error("Samples have already been set!");if(i.some(a=>a.id===void 0||a.id===null))throw new Error('The sample metadata contains missing sample ids or the "sample" column is missing!');if(new Set(i.map(a=>a.id)).size!=i.length)throw new Error("The sample metadata contains duplicate sample ids!");const o=i.map((a,s)=>({...a,indexNumber:s}));n.sampleData={ids:o.map(a=>a.id),entities:Object.fromEntries(o.map(a=>[a.id,a]))},n.rootGroup={name:"ROOT",label:"Root",samples:n.sampleData.ids}},[pv]:(n,r)=>{dr(n,i=>V9(i,G9(e(r.payload,n),t(r.payload.attribute)),!1))},[mv]:(n,r)=>{dr(n,i=>H9(i,e(r.payload,n)))},[gv]:(n,r)=>{dr(n,i=>Q9(i,e(r.payload,n),r.payload.n))},[vv]:(n,r)=>{dr(n,i=>_9(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[yv]:(n,r)=>{dr(n,i=>dv(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[bv]:(n,r)=>{dr(n,i=>W9(i,e(r.payload,n)))},[Av]:(n,r)=>{var o;const i=(o=t(r.payload.attribute).scale)==null?void 0:o.domain();Gf(n,a=>lv(a,e(r.payload,n),i)),n.groupMetadata.push({attribute:r.payload.attribute})},[wv]:(n,r)=>{Gf(n,i=>B9(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[xv]:(n,r)=>{Gf(n,i=>O9(i,e(r.payload,n),r.payload.thresholds)),n.groupMetadata.push({attribute:r.payload.attribute})},[Cv]:(n,r)=>{const i=e(r.payload,n),o=[];for(const s of Hf(n))if(s.samples.length>0){const c=new Set;for(const u of s.samples)c.add(i(u));o.push(c)}const a=[];for(const s of o[0]){let c=!0;for(let u=1;u<o.length&&c;u++)c=o[u].has(s);c&&a.push(s)}dr(n,s=>dv(s,i,"retain",a))}}})}function dr(t,e){for(const n of Hf(t))n.samples=e(n.samples)}function Gf(t,e){for(const n of Hf(t))e(n)}function Hf(t){return Ev(t).map(e=>Ue(e))}function Qf(t){return t.provenance.present[ii]}function Ev(t){const e=[],n=[],r=i=>{if(e.push(i),Dv(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function Sv(t){return"samples"in t}function Dv(t){return"groups"in t}function*Mv(t){if(yield[t],Dv(t))for(const e of t.groups)for(const n of Mv(e))yield[t,...n]}const q9=le(".4"),Tv={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function Iv(t){return t.length>1?D`{${t.map((e,n)=>D`${n>0?", ":""}<strong>${e}</strong>`)}}`:D`<strong>${t[0]}</strong>`}function K9(t,e){if(!t.type.startsWith(ii))return;const n=t.payload,r=n.attribute&&e(n.attribute),i=r==null?void 0:r.name,o=(r==null?void 0:r.title)||D`<em>${i}</em>`,a={attributeName:i};switch(t.type.substring(ii.length+1)){case hv:return{...a,title:"The initial state",icon:N5};case pv:return{...a,title:"Sort by",provenanceTitle:D`Sort by ${o}`,icon:C5};case mv:return{...a,title:D`Retain the first sample of each <em>${i}</em>`,provenanceTitle:D`Retain the first sample of each ${o}`,icon:a1};case gv:return{...a,title:D`Retain first <strong>n</strong> categories of <em>${i}</em>...`,provenanceTitle:D`Retain first <strong>${n.n}</strong> categories of ${o}`,icon:a1};case yv:{const c=n.values,u=f=>D`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?D`undefined ${f}`:D`${f} ${c.length>1?"in":D`<span class="operator">=</span>`} ${Iv(c)}`}`;return{...a,title:u(D`<em>${i}</em>`),provenanceTitle:u(o),icon:n.remove?Fl:tr}}case vv:{const c=u=>D`Retain samples having ${u} <span class="operator">${Tv[n.operator]}</span> <strong>${q9(n.operand)}</strong>`;return{...a,title:c(D`<em>${i}</em>`),provenanceTitle:c(o),icon:tr}}case bv:return{...a,title:"Remove samples having missing attribute",provenanceTitle:D`Remove samples having missing ${o}`,icon:Fl};case Av:return{...a,title:"Group by",provenanceTitle:D`Group by ${o}`,icon:yo};case wv:return{...a,title:"Group by quartiles",provenanceTitle:D`Group by quartiles on ${o}`,icon:yo};case xv:return{...a,title:"Group by thresholds",provenanceTitle:D`Group by thresholds {${Iv(n.thresholds.map(c=>`${Tv[c.operator]} ${c.operand}`))}} on ${o}`,icon:yo};case Cv:return{...a,title:D`Retain group-wise matched samples using <em>${i}</em>`,provenanceTitle:D`Retain group-wise matched samples using ${o}`,icon:tr};default:return{...a,title:JSON.stringify(t),icon:i1}}}class J9{constructor(){this.attributeInfoSourcesByType={}}addAttributeInfoSource(e,n){this.attributeInfoSourcesByType[e]=n}getAttributeInfo(e){const n=this.attributeInfoSourcesByType[e.type];if(!n)throw new Error("Cannot find attribute info source for: "+JSON.stringify(e));const r=n(e);if(r)return r;throw new Error("Unknown attribute: "+JSON.stringify(e))}}function Rs(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function Nv(t,{viewHeight:e=0,sampleHeight:n=0,groupSpacing:r=5,summaryHeight:i=0}){if(!e&&!n)throw new Error("viewHeight or sampleHeight must be provided!");const o=d=>Ue(d),a=t.map(d=>({path:d,sampleGroup:o(d),samples:o(d).samples})).filter(d=>d.samples.length),s=n?d=>({px:d.length*n+i,grow:0}):d=>({px:i,grow:d.length}),c=[];fo(a.map(d=>s(d.samples)),e,{spacing:r}).forEach((d,h)=>{c.push({key:a[h].path,locSize:d})});const u=[];for(const[d,h]of a.entries()){const p={grow:1},m=h.samples;fo(m.map(y=>p),Math.max(0,c[d].locSize.size-i),{offset:c[d].locSize.location+i}).forEach((y,g)=>{const{size:A,location:w}=y,C=A*.1*gg(15,22,A);y.location=w+C,y.size=A-2*C,u.push({key:m[g],locSize:y})})}function*f(){const d=[];for(const h of c){const p=h.key,m=Ue(p);for(;d.length<=p.length&&d.length&&p[d.length-1]!=d[d.length-1].group;)yield d.pop();for(let y=0;y<d.length;y++){const g=d[y];g.locSize.size=h.locSize.location-g.locSize.location+h.locSize.size}for(let y=d.length;y<p.length;y++)d.push({group:p[y],locSize:{...h.locSize},depth:d.length,n:0});for(const y of d)y.n+=m.samples.length}for(;d.length;)yield d.pop()}const l=[...f()].sort((d,h)=>d.depth-h.depth).map((d,h)=>({key:{index:h,group:d.group,depth:d.depth,n:d.n,attributeLabel:void 0},locSize:d.locSize}));return{samples:u,summaries:c,groups:l}}function $9(t,e){return e.find(n=>Zm(n.locSize,t))}const kv="VALUE_AT_LOCUS",Lv=10;class Vf extends Jn{constructor(n,r,i,o,a){var f;super(n,r,i,o);Me(this,Vs);this.provenance=a,this.spec=n,this.stickySummaries=(f=n.stickySummaries)!=null?f:!0,this.compositeAttributeInfoSource=new J9,this.child=r.createView(n.spec,this,"sample-facets"),this.summaryViews=new Vr({vconcat:[]},r,this,"sampleSummaries"),this.child.visit(l=>{l instanceof ye&&this.summaryViews.setChildren(l.sampleAggregateViews)}),this.childCoords=dn.ZERO,this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new Vr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},r,this,"sample-sidebar"),this.peripheryCoords=dn.ZERO,this.groupPanel=new U6(this),this.attributePanel=new Ny(this),this.peripheryView.setChildren([this.groupPanel,this.attributePanel]),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(Rs(l=>Qf(l).rootGroup,l=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(Rs(l=>Qf(l).sampleData,l=>{const d=l&&Object.values(l.entities);!d||(this.attributePanel._setSamples(d),this.facetTextureData=new Float32Array(Math.ceil(d.length*2/4)*4),this.groupPanel.updateGroups())})),this.compositeAttributeInfoSource.addAttributeInfoSource(kv,l=>{var C,b;const d=l.specifier,h=this.findDescendantByName(d.view);let p;if(ce(d.locus))p=d.locus;else{const v=this.getScaleResolution("x").getGenome();if(v)p=v.toContinuous(d.locus.chrom,d.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const m=v=>{var x;return(x=h.mark.findDatumAt(v,p))==null?void 0:x[d.field]},[y,g]=Object.entries(h.getEncoding()).find(([v,x])=>"field"in x&&x.field==d.field),A=y?(C=h.getScaleResolution(y))==null?void 0:C.getScale():void 0;return{name:d.field,attribute:l,title:D`<em class="attribute">${d.field}</em> <span class="viewTitle">(${(b=h.getTitleText())!=null?b:h.name})</span> at <span class="locus">${Ov(d.locus)}</span>`,accessor:m,type:"type"in g?g.type:void 0,scale:A}}),this._addBroadcastHandler("dataLoaded",()=>this.extractSamplesFromData()),this._addBroadcastHandler("layout",()=>{this._locations=void 0}),this._scrollOffset=0,this._scrollableHeight=0,this._peekState=0,this._lastMouseY=-1,this.addInteractionEventListener("mousemove",(l,d)=>{this._lastMouseY=d.point.y-this.childCoords.y}),this.addInteractionEventListener("wheel",(l,d)=>{const h=d.uiEvent;this._peekState&&!h.ctrlKey&&(this._scrollOffset=ul(this._scrollOffset+h.deltaY,0,this._scrollableHeight-this.childCoords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),d.uiEvent={type:h.type,deltaX:h.deltaX,preventDefault:h.preventDefault.bind(h)})},!0),r.addKeyboardListener("keydown",l=>{l.code=="KeyE"&&!l.repeat&&this._togglePeek()}),r.addKeyboardListener("keyup",l=>{l.code=="KeyE"&&this._togglePeek(!1)});const s=l=>this.compositeAttributeInfoSource.getAttributeInfo(l),c=Z9(s);this.provenance.addReducer(c.name,c.reducer),this.provenance.addActionInfoSource(l=>K9(l,s)),this.actions=c.actions;const u=h9(l=>{var d;return(d=l.sampleData)==null?void 0:d.entities},l=>l&&Object.values(l));this.getSamples=()=>u(this.sampleHierarchy),this.spec.samples.data&&this.loadSamples()}getOverhang(){let n=this.peripheryView.isVisible()?this.peripheryView.getSize().width.px:0;return n&&(n+=Lv),new $e(0,0,0,n)}*[Symbol.iterator](){yield this.child,yield this.peripheryView}replaceChild(n,r){const i=r;if(n===this.child)this.child=i;else throw new Error("Not my child!")}loadSamples(){if(!this.spec.samples.data)throw new Error("SampleView has no explicit sample metadata specified! Cannot load anything.");const{dataSource:n,collector:r}=j8(Fg(this.spec.samples.data,this.getBaseUrl()),new eN);r.observers.push(o=>{const a=o.getData();this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:a}))});const i="samples "+this.getPathString();this.context.dataFlow.addDataSource(n,i)}extractSamplesFromData(){if(this.getSamples())return;const n=this.getScaleResolution("sample");if(n){const r=n.getDataDomain().map((i,o)=>({id:i,displayName:i,indexNumber:o,attributes:[]}));this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:r}))}else throw new Error("No explicit sample data nor sample channels found!")}get sampleHierarchy(){return this.provenance.getPresentState()[ii]}getLocations(){var n,r,i,o;if(!this._locations){if(!((n=this.childCoords)!=null&&n.height))return;const a=this.sampleHierarchy,s=Ev(a),c=[null,...a.groupMetadata],u=(o=((r=this.summaryViews)==null?void 0:r.isVisible())&&((i=this.summaryViews)==null?void 0:i.getSize().height.px))!=null?o:0,f=Nv(s,{viewHeight:this.childCoords.height,groupSpacing:5,summaryHeight:u}),l=Nv(s,{sampleHeight:35,groupSpacing:15,summaryHeight:u}),d=()=>-this._scrollOffset,h=()=>this._peekState;this._scrollableLocations=l,this._scrollableHeight=l.summaries.map(g=>g.locSize.location+g.locSize.size).reduce((g,A)=>Math.max(g,A),0);const p=(g,A)=>{const w=[];for(let C=0;C<g.length;C++){const b=g[C].key;w.push({key:b,locSize:YD(g[C].locSize,_D(A[C].locSize,d),h)})}return w},m=p(f.groups,l.groups),y=document.createElement("div");m.forEach(g=>{if(g.key.depth==0)return;const A=c[g.key.depth].attribute,w=this.compositeAttributeInfoSource.getAttributeInfo(A).title;w?ee(w)?g.key.attributeLabel=w:(Be(w,y),g.key.attributeLabel=y.textContent.replace(/\s+/g," ").trim()):g.key.attributeLabel="unknown"}),this._locations={samples:p(f.samples,l.samples),summaries:p(f.summaries,l.summaries),groups:m}}return this._locations}getSampleAt(n){const r=$9(n,this.getLocations().samples);if(r)return this.sampleHierarchy.sampleData.entities[r.key]}getSummaryAt(n){const r=this.getLocations().summaries,i=r.findIndex(o=>Zm(o.locSize,n));return i>=0?{index:i,location:r[i]}:void 0}_clipBySummary(n){if(this.stickySummaries&&this.summaryViews.childCount){const r=this.summaryViews.getSize().height.px;return n.modify({y:()=>n.y+r,height:()=>n.height-r})}}renderChild(n,r,i={}){const o=1/r.height,a=()=>o,s=this._clipBySummary(r);for(const c of this.getLocations().samples)this.child.render(n,r,{...i,sampleFacetRenderingOptions:{locSize:WD(c.locSize,a)},facetId:[c.key],clipRect:s})}renderSummaries(n,r,i={}){i={...i,clipRect:r};const o=this.summaryViews.getSize().height.px;for(const[a,s]of this.getLocations().summaries.entries()){const c=()=>{const u=s.locSize.location;let f=r.y+u;return this.stickySummaries?f+ul(-u,0,s.locSize.size-o):f};this.summaryViews.render(n,r.modify({y:c,height:o}),{...i,facetId:[a]})}}render(n,r,i={}){if(!this.isVisible())return;n.pushView(this,r);const o=fo([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],r.width,{spacing:Lv}),a=s=>r.modify({x:s.location+r.x,width:s.size});this.peripheryCoords=a(o[0]),this.childCoords=a(o[1]),this.peripheryView.render(n,this.peripheryCoords,i),this.renderChild(n,this.childCoords,i),this.renderSummaries(n,this.childCoords,i),n.popView(this)}onBeforeRender(){this._updateFacetTexture()}_updateFacetTexture(){var o;const n=this.facetTextureData;n.fill(0);const r=(o=this.sampleHierarchy.sampleData)==null?void 0:o.entities;if(r){const a=this.getLocations().samples,s=this.childCoords.height;for(const c of a){const u=r[c.key].indexNumber;n[u*2+0]=c.locSize.location/s,n[u*2+1]=c.locSize.size/s}}const i=this.context.glHelper.gl;this.facetTexture=uo(i,{internalFormat:i.RG32F,format:i.RG,height:1},n,this.facetTexture)}_togglePeek(n){var i;if(this._peekState>0&&this._peekState<1||n!==void 0&&n==!!this._peekState)return;const r={requestAnimationFrame:o=>this.context.animator.requestTransition(o),onUpdate:o=>{this._peekState=Math.pow(o,2),this.groupPanel.updateRange(),this.context.animator.requestRender()},from:this._peekState};if(this._peekState==0){const o=this._lastMouseY,a=(i=this.getSampleAt(o))==null?void 0:i.id;let s;if(a)s=(u=>u.location+u.size/2)(this._scrollableLocations.samples.find(u=>u.key==a).locSize);else{const c=this.getSummaryAt(o);c&&(s=this._scrollableLocations.summaries[c.index].locSize.location-(c.location.locSize.location-o))}s?this._scrollOffset=s-o:this._scrollOffset=(this._scrollableHeight-this.childCoords.height)/2,this._scrollableHeight>this.childCoords.height?us({...r,to:1,duration:500,easingFunction:NM}):us({...r,from:0,to:1,duration:300,easingFunction:u=>(1-Math.pow(u*2-1,2))*.5})}else us({...r,to:0,duration:400,easingFunction:TM})}_handleContextMenu(n,r){var l;const i=r.uiEvent,o=this.childCoords.normalizePoint(r.point.x,r.point.y).x,a=this.getScaleResolution("x").invertToComplex(o),s=Hg([...this.getAncestors()].at(-1)),c=V8(this.child).filter(d=>!["sample","x","x2"].includes(d.channel)).filter(d=>["rect","rule"].includes(d.view.getMarkType())).filter(d=>s.has(d.view.name));let u=[{label:`Locus: ${Ov(a)}`,type:"header"},{type:"divider"}],f="";for(const[d,h]of c.entries()){const p={view:h.view.name,field:h.field,locus:a},m=this.compositeAttributeInfoSource.getAttributeInfo({type:kv,specifier:p}),y=(l=h.view.getTitleText())!=null?l:h.view.spec.name;y!=f&&(d>0&&u.push({type:"divider"}),u.push({label:y,type:"header"}),f=y),u.push({label:h.field,submenu:ff(null,m,void 0,this)})}Ty({items:u},i)}getSampleFacetTexture(){return this.facetTexture}propagateInteractionEvent(n){this.handleInteractionEvent(void 0,n,!0),!n.stopped&&(this.childCoords.containsPoint(n.point.x,n.point.y)&&(this.child.propagateInteractionEvent(n),Dg(n,this.childCoords,r=>be(this,Vs,db).call(this,this.childCoords,this.child,r),this.context.getCurrentHover())),this.peripheryCoords.containsPoint(n.point.x,n.point.y)&&this.peripheryView.propagateInteractionEvent(n),!n.stopped&&this.handleInteractionEvent(void 0,n,!1))}getDefaultResolution(n,r){switch(n){case"x":case"sample":return"shared";default:return"independent"}}}Vs=new WeakSet,db=function(n,r,i){const o=this.child.getScaleResolution("x");if(!o||!o.isZoomable())return;const a=n.normalizePoint(i.x,i.y),s=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta);o.zoom(2**i.zDelta,a.x,s.x-a.x),this.context.animator.requestRender()};function Ov(t){return!ce(t)&&"chrom"in t?AM(t):""+t}class eN extends se{constructor(){super(),this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:tN(e)})}}function tN(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function nN(t){return"samples"in t&&Re(t.samples)&&"spec"in t&&Re(t.spec)}const rN=(t,e)=>e.some(n=>t instanceof n);let Bv,Fv;function iN(){return Bv||(Bv=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function oN(){return Fv||(Fv=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const Pv=new WeakMap,Yf=new WeakMap,zv=new WeakMap,_f=new WeakMap,Wf=new WeakMap;function aN(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",a)},o=()=>{n(An(t.result)),i()},a=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",a)});return e.then(n=>{n instanceof IDBCursor&&Pv.set(n,t)}).catch(()=>{}),Wf.set(e,t),e}function sN(t){if(Yf.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",o),t.removeEventListener("error",a),t.removeEventListener("abort",a)},o=()=>{n(),i()},a=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",o),t.addEventListener("error",a),t.addEventListener("abort",a)});Yf.set(t,e)}let Xf={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return Yf.get(t);if(e==="objectStoreNames")return t.objectStoreNames||zv.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return An(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function cN(t){Xf=t(Xf)}function uN(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(Zf(this),e,...n);return zv.set(r,e.sort?e.sort():[e]),An(r)}:oN().includes(t)?function(...e){return t.apply(Zf(this),e),An(Pv.get(this))}:function(...e){return An(t.apply(Zf(this),e))}}function lN(t){return typeof t=="function"?uN(t):(t instanceof IDBTransaction&&sN(t),rN(t,iN())?new Proxy(t,Xf):t)}function An(t){if(t instanceof IDBRequest)return aN(t);if(_f.has(t))return _f.get(t);const e=lN(t);return e!==t&&(_f.set(t,e),Wf.set(e,t)),e}const Zf=t=>Wf.get(t);function fN(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const a=indexedDB.open(t,e),s=An(a);return r&&a.addEventListener("upgradeneeded",c=>{r(An(a.result),c.oldVersion,c.newVersion,An(a.transaction))}),n&&a.addEventListener("blocked",()=>n()),s.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),s}const dN=["get","getKey","getAll","getAllKeys","count"],hN=["put","add","delete","clear"],qf=new Map;function Rv(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(qf.get(e))return qf.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=hN.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||dN.includes(n)))return;const o=async function(a,...s){const c=this.transaction(a,i?"readwrite":"readonly");let u=c.store;return r&&(u=u.index(s.shift())),(await Promise.all([u[n](...s),i&&c.done]))[0]};return qf.set(e,o),o}cN(t=>({...t,get:(e,n,r)=>Rv(e,n)||t.get(e,n,r),has:(e,n)=>!!Rv(e,n)||t.has(e,n)}));class jv{isReadonly(){return!0}async put(e,n){this._checkReadonly()}async delete(e){this._checkReadonly()}async getNames(){return[]}async get(e){}_checkReadonly(){if(this.isReadonly())throw new Error("This bookmark")}}const ko="bookmarks";class pN extends jv{constructor(e){super(),this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=fN(e,1,{upgrade(n,r,i,o){n.createObjectStore(ko,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(ko,"readwrite");try{n?(await i.store.delete(n),await i.store.put(e)):await i.store.put(e),await i.done}catch(o){throw i.abort(),o}}async delete(e){(await this._getDB()).delete(ko,e)}async getNames(){return(await this._getDB()).getAllKeys(ko)}async get(e){return(await this._getDB()).get(ko,e)}}/**
|
2139
2146
|
* @license
|
2140
2147
|
* Copyright 2020 Google LLC
|
2141
2148
|
* SPDX-License-Identifier: BSD-3-Clause
|
2142
|
-
*/const
|
2149
|
+
*/const mN=t=>t===null||typeof t!="object"&&typeof t!="function",Uv=t=>t.strings===void 0,gN={},yN=(t,e=gN)=>t._$AH=e;/**
|
2143
2150
|
* @license
|
2144
2151
|
* Copyright 2017 Google LLC
|
2145
2152
|
* SPDX-License-Identifier: BSD-3-Clause
|
2146
|
-
*/const
|
2153
|
+
*/const Lo=(t,e)=>{var n,r;const i=t._$AN;if(i===void 0)return!1;for(const o of i)(r=(n=o)._$AO)===null||r===void 0||r.call(n,e,!1),Lo(o,e);return!0},js=t=>{let e,n;do{if((e=t._$AM)===void 0)break;n=e._$AN,n.delete(t),t=e}while((n==null?void 0:n.size)===0)},Gv=t=>{for(let e;e=t._$AM;t=e){let n=e._$AN;if(n===void 0)e._$AN=n=new Set;else if(n.has(t))break;n.add(t),AN(e)}};function vN(t){this._$AN!==void 0?(js(this),this._$AM=t,Gv(this)):this._$AM=t}function bN(t,e=!1,n=0){const r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(e)if(Array.isArray(r))for(let o=n;o<r.length;o++)Lo(r[o],!1),js(r[o]);else r!=null&&(Lo(r,!1),js(r));else Lo(this,t)}const AN=t=>{var e,n,r,i;t.type==Bt.CHILD&&((e=(r=t)._$AP)!==null&&e!==void 0||(r._$AP=bN),(n=(i=t)._$AQ)!==null&&n!==void 0||(i._$AQ=vN))};class Hv extends go{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,n,r){super._$AT(e,n,r),Gv(this),this.isConnected=e._$AU}_$AO(e,n=!0){var r,i;e!==this.isConnected&&(this.isConnected=e,e?(r=this.reconnected)===null||r===void 0||r.call(this):(i=this.disconnected)===null||i===void 0||i.call(this)),n&&(Lo(this,e),js(this))}setValue(e){if(Uv(this._$Ct))this._$Ct._$AI(e,this);else{const n=[...this._$Ct._$AH];n[this._$Ci]=e,this._$Ct._$AI(n,this,0)}}disconnected(){}reconnected(){}}/**
|
2147
2154
|
* @license
|
2148
2155
|
* Copyright 2020 Google LLC
|
2149
2156
|
* SPDX-License-Identifier: BSD-3-Clause
|
2150
|
-
*/const
|
2157
|
+
*/const Qv=()=>new wN;class wN{}const Kf=new WeakMap,Vv=Wr(class extends Hv{render(t){return R}update(t,[e]){var n;const r=e!==this.U;return r&&this.U!==void 0&&this.ot(void 0),(r||this.rt!==this.lt)&&(this.U=e,this.ht=(n=t.options)===null||n===void 0?void 0:n.host,this.ot(this.lt=t.element)),R}ot(t){var e;if(typeof this.U=="function"){const n=(e=this.ht)!==null&&e!==void 0?e:globalThis;let r=Kf.get(n);r===void 0&&(r=new WeakMap,Kf.set(n,r)),r.get(this.U)!==void 0&&this.U.call(this.ht,void 0),r.set(this.U,t),t!==void 0&&this.U.call(this.ht,t)}else this.U.value=t}get rt(){var t,e,n;return typeof this.U=="function"?(e=Kf.get((t=this.ht)!==null&&t!==void 0?t:globalThis))===null||e===void 0?void 0:e.get(this.U):(n=this.U)===null||n===void 0?void 0:n.value}disconnected(){this.rt===this.lt&&this.ot(void 0)}reconnected(){this.ot(this.lt)}});/**
|
2151
2158
|
* @license
|
2152
2159
|
* Copyright 2018 Google LLC
|
2153
2160
|
* SPDX-License-Identifier: BSD-3-Clause
|
2154
|
-
*/const
|
2161
|
+
*/const xN={},CN=Wr(class extends go{constructor(){super(...arguments),this.nt=xN}render(t,e){return e()}update(t,[e,n]){if(Array.isArray(e)){if(Array.isArray(this.nt)&&this.nt.length===e.length&&e.every((r,i)=>r===this.nt[i]))return xe}else if(this.nt===e)return xe;return this.nt=Array.isArray(e)?Array.from(e):e,this.render(e,n)}});class EN extends Ot{constructor(){super(),this.inputRef=Qv(),this.genomeSpy=void 0,this.getDefaultValue=()=>"",this._keyListener=this._onKeyDown.bind(this),this._documentClickListener=e=>{var n;e.target!==this._inputField&&((n=this._inputField)==null||n.blur())},this._focused=!1}get _inputField(){return this.inputRef.value}static get properties(){return{genomeSpy:{type:Object}}}connectedCallback(){super.connectedCallback(),this._initializeGenome(),document.addEventListener("keydown",this._keyListener),document.addEventListener("click",this._documentClickListener)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("keydown",this._keyListener),document.removeEventListener("click",this._documentClickListener)}createRenderRoot(){return this}_onKeyDown(e){switch(e.code){case"KeyF":e.metaKey||e.altKey||e.ctrlKey||(e.preventDefault(),this.inputRef.value.focus());break}}_initializeGenome(){const e=Yv(this.genomeSpy.viewRoot);e&&(this._genomeResolution=e,this._genome=this.genomeSpy.genomeStore.getGenome(),this.getDefaultValue=()=>this._genome.formatInterval(e.getDomain()),e.addEventListener("domain",ls(()=>this.requestUpdate(),60,!1)))}async searchViews(e){var r,i;const n=new Intl.Collator("en",{usage:"search",sensitivity:"base"});for(const o of this.genomeSpy.getSearchableViews()){const a=o.getAccessor("search"),s=o.getAccessor("x"),c=o.getAccessor("x2"),u=o.getScaleResolution("x");if(!(!s||!c||!(u!=null&&u.isZoomable()))){for(const f of(i=(r=o.getCollector())==null?void 0:r.getData())!=null?i:[])if(n.compare(a(f),e)===0){const l=Xs([s(f),c(f)],null,1.2);return await u.zoomTo(l),!0}}}return!1}async search(e){await(async()=>{if(this._genomeResolution&&this._genome){const r=this._genome.parseInterval(e);if(r){this._genomeResolution.zoomTo(r);return}if(await this.searchViews(e))return;this.genomeSpy.viewRoot.visit(i=>{i instanceof Ny&&i.handleVerboseCommand(e)})}})(),this._inputField.value=this.getDefaultValue(),this.requestUpdate()}_onSearchHelpClicked(e){const n=e.target;n.tagName=="LI"&&this._doExampleSearch(n.innerText)}_onSearchFocused(e){const n=e.target;switch(e.type){case"focus":this._focused=!0,n.select();break;case"blur":this._focused=!1;break}}_onSearchKeyDown(e){const n=e.target;e.code=="Enter"?(e.preventDefault(),this.search(n.value).then(()=>{n.focus(),n.select()}).catch(r=>{console.log(r),alert(r)})):e.code=="Escape"?n.blur():e.stopPropagation()}_doExampleSearch(e){SN(e,this._inputField).then(()=>{this._inputField.blur(),this.search(e)})}_getSearchHelp(){var n,r;const e=[];e.push(D`<p>Focus to a specific range. Examples:</p><ul><li>chr8</li><li>chr8:21,445,873</li><li>chr8:21,445,873-24,623,697</li><li>chr4:166,014,727-chr15:23,731,397</li></ul>`);for(const i of((n=this.genomeSpy)==null?void 0:n.getSearchableViews())||[]){const o=(r=i.getTitleText())!=null?r:i.spec.name,a=i.getAccessor("search"),s=a.fields.join(", "),c=Xm(3,i.getCollector().getData(),a);e.push(D`<p>Search <em>${o}</em> (${s}). Examples:</p><ul>${c.map(u=>D`<li>${u}</li>`)}</ul>`)}return D`<div class="search-help" @click="${this._onSearchHelpClicked}">${e}</div>`}updated(e){this._focused&&this._inputField.select()}render(){return D`<div class="search"><input type="text" class="search-input" .value="${this.getDefaultValue()}" @mousedown="${e=>{this._focused||(this._inputField.focus(),e.preventDefault(),e.stopPropagation())}}" @keydown="${this._onSearchKeyDown.bind(this)}" @focus="${this._onSearchFocused}" @blur="${this._onSearchFocused}" ${Vv(this.inputRef)}> ${CN([123],()=>this._getSearchHelp())}</div>`}}customElements.define("genome-spy-search-field",EN);function SN(t,e){return new Promise(n=>{let r=0;const i=700/t.length+30;function o(){e.value=t.substring(0,r),r>=t.length?setTimeout(n,500):(r++,setTimeout(o,Math.random()*i*2))}o()})}function Yv(t){let e;return t.visit(n=>{for(const r of["x","y"]){const i=n.resolutions.scale[r];if(i&&i.type=="locus"&&i.isZoomable())return e=i,Kn}}),e}const _v="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";/**
|
2155
2162
|
* @license
|
2156
2163
|
* Copyright 2020 Google LLC
|
2157
2164
|
* SPDX-License-Identifier: BSD-3-Clause
|
2158
|
-
*/const
|
2165
|
+
*/const DN=Wr(class extends go{constructor(t){if(super(t),t.type!==Bt.PROPERTY&&t.type!==Bt.ATTRIBUTE&&t.type!==Bt.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!Uv(t))throw Error("`live` bindings can only contain a single expression")}render(t){return t}update(t,[e]){if(e===xe||e===R)return e;const n=t.element,r=t.name;if(t.type===Bt.PROPERTY){if(e===n[r])return xe}else if(t.type===Bt.BOOLEAN_ATTRIBUTE){if(!!e===n.hasAttribute(r))return xe}else if(t.type===Bt.ATTRIBUTE&&n.getAttribute(r)===e+"")return xe;return yN(t),e}});function Wv(t,e){return new CustomEvent("query-dependency",{detail:{name:t,setter:e},bubbles:!0})}function MN(t){if(!(t!=null&&t.length))throw new Error("Can't nest an empty array!");const e=Xv(null);for(const n of t){if(!(n!=null&&n.length))throw new Error("Cannot nest, element has no path!");let r=e;for(const i of n){let o=r.children.find(a=>a.item===i);o||(o=Xv(i),r.children.push(o)),r=o}}return e.children[0]}const Xv=t=>({item:t,children:[]}),Jf=new Set;function $f(t){const n=t.currentTarget.parentNode,r=!n.classList.contains("show");for(const i of Jf)i.classList.remove("show"),document.body.classList.remove(Un);return Jf.clear(),t.stopPropagation(),r?(Jf.add(n),n.classList.add("show"),document.body.classList.add(Un),window.addEventListener("click",i=>{n.classList.contains("show")&&(n.classList.remove("show"),document.body.classList.remove(Un),i.preventDefault())},{once:!0})):window.dispatchEvent(new MouseEvent("click")),r}const ed={visibilities:{}},oi=uv({name:"viewSettings",initialState:ed,reducers:{setVisibility:(t,e)=>{t.visibilities[e.payload.name]=e.payload.visibility},restoreDefaultVisibility:(t,e)=>{delete t.visibilities[e.payload]},restoreDefaultVisibilities:(t,e)=>ed,setViewSettings:(t,e)=>({...ed,...e.payload?e.payload:{}})}});class TN extends Ot{constructor(){super(),this.app=void 0,this.nestedPaths=void 0,this.sateWatcher=Rs(e=>e.viewSettings,(e,n)=>this.requestUpdate()),this.style.display="none"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(Wv("app",e=>{this.app=e})),this.app.addInitializationListener(()=>{this.updateToggles(),this.requestUpdate(),this.style.display=this.nestedPaths.children.length?"block":"none"}),this.app.storeHelper.subscribe(this.sateWatcher)}disconnectedCallback(){this.app.storeHelper.unsubscribe(this.sateWatcher)}createRenderRoot(){return this}toolButtonClicked(e){$f(e)}handleCheckboxClick(e,n){const r=e.target.checked;this.app.storeHelper.dispatch(r!=n.isVisibleInSpec()?oi.actions.setVisibility({name:n.name,visibility:r}):oi.actions.restoreDefaultVisibility(n.name)),this.requestUpdate(),e.stopPropagation()}handleResetClick(){this.app.storeHelper.dispatch(oi.actions.restoreDefaultVisibilities())}updateToggles(){const e=this.app.genomeSpy.viewRoot;if(!e)return;const n=[];e.visit(i=>{if(i instanceof xg)return as;n.push(i)});const r=n.filter(i=>_8(i.name)&&Zv(i)).map(i=>[...i.getAncestors()].reverse());this.nestedPaths=MN(r)}renderToggles(){const e=this.getVisibilities(),n=this.app.genomeSpy.viewRoot,r=Hg(n);var i=(a,s=!0)=>a.length?D`<ul class="${s?null:"unchecked"}">${a.map(o)}</ul>`:R,o=a=>{var u,f;const s=a.item,c=(u=e[s.name])!=null?u:s.isVisibleInSpec();return D`<li><label class="checkbox"><input type="checkbox" ?disabled="${!r.has(s.name)||!Zv(s)}" .checked="${DN(c)}" @change="${l=>this.handleCheckboxClick(l,s)}">${(f=s.getTitleText())!=null?f:s.name}</label> ${i(a.children,c)}</li>`};return i(this.nestedPaths.children)}render(){const e=!Object.keys(this.getVisibilities()).length;return D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Toggle view visibilities" @click="${this.toolButtonClicked.bind(this)}">${q(W5).node[0]}</button><ul class="gs-dropdown-menu" @click="${n=>n.stopPropagation()}"><li class="menu-header">View visibility</li><li>${e?D`<span class="disabled-item">Restore defaults</span>`:D`<a @click="${()=>this.handleResetClick()}">Restore defaults</a>`}</li><li class="menu-divider"></li><li>${this.nestedPaths?this.renderToggles():R}</li></ul></div>`}getVisibilities(){return this.app.storeHelper.state.viewSettings.visibilities}}const Zv=t=>{var e;return(e=t.spec.configurableVisibility)!=null?e:!(t.parent&&t.parent instanceof kt)};customElements.define("genome-spy-view-visibility",TN);class IN extends Ot{constructor(){super(),this.provenance=void 0}connectedCallback(){super.connectedCallback(),this.provenance.storeHelper.subscribe(()=>{this.requestUpdate()})}disconnectedCallback(){super.disconnectedCallback()}createRenderRoot(){return this}render(){const e=(r,i)=>{var a,s;const o=this.provenance.getActionInfo(r);return o?D`<li><a @click="${()=>this.provenance.activateState(i)}" class="${i==this.provenance.getCurrentIndex()?"active":""}">${q((a=o.icon)!=null?a:i1).node[0]} ${(s=o.provenanceTitle)!=null?s:o.title}</a></li>`:R},n=()=>D`<div class="dropdown provenance-dropdown"><button class="tool-btn" title="Provenance" ?disabled="${this.provenance.isEmpty()}" @click="${$f}">${q(R5).node[0]}</button><ol class="gs-dropdown-menu provenance-menu">${this.provenance.getFullActionHistory().map(e)}</ol></div>`;return D`<div class="btn-group" @click="${r=>r.stopPropagation()}"><button class="tool-btn" title="Backtrack samples (B)" ?disabled="${!this.provenance.isUndoable()}" @click="${()=>this.provenance.undo()}">${q(S5).node[0]}</button> ${n()} <button class="tool-btn" title="Redo" ?disabled="${!this.provenance.isRedoable()}" @click="${()=>this.provenance.redo()}">${q(M5).node[0]}</button></div>`}}customElements.define("genome-spy-provenance-buttons",IN);/**
|
2159
2166
|
* @license
|
2160
2167
|
* Copyright 2021 Google LLC
|
2161
2168
|
* SPDX-License-Identifier: BSD-3-Clause
|
2162
|
-
*/class
|
2169
|
+
*/class NN{constructor(e){this.U=e}disconnect(){this.U=void 0}reconnect(e){this.U=e}deref(){return this.U}}class kN{constructor(){this.Y=void 0,this.q=void 0}get(){return this.Y}pause(){var e;(e=this.Y)!==null&&e!==void 0||(this.Y=new Promise(n=>this.q=n))}resume(){var e;(e=this.q)===null||e===void 0||e.call(this),this.Y=this.q=void 0}}/**
|
2163
2170
|
* @license
|
2164
2171
|
* Copyright 2017 Google LLC
|
2165
2172
|
* SPDX-License-Identifier: BSD-3-Clause
|
2166
|
-
*/const D2=t=>!G9(t)&&typeof t.then=="function";class ik extends v2{constructor(){super(...arguments),this._$Cwt=1073741823,this._$Cyt=[],this._$CG=new nk(this),this._$CK=new rk}render(...e){var n;return(n=e.find(r=>!D2(r)))!==null&&n!==void 0?n:Ee}update(e,n){const r=this._$Cyt;let i=r.length;this._$Cyt=n;const o=this._$CG,a=this._$CK;this.isConnected||this.disconnected();for(let s=0;s<n.length&&!(s>this._$Cwt);s++){const c=n[s];if(!D2(c))return this._$Cwt=s,c;s<i&&c===r[s]||(this._$Cwt=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;a.get();)await a.get();const f=o.deref();if(f!==void 0){const l=f._$Cyt.indexOf(c);l>-1&&l<f._$Cwt&&(f._$Cwt=l,f.setValue(u))}}))}return Ee}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const ok=Hr(ik);var ak={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function M2(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function No(t){return(t+"").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function qf(t,e){var n,r,i,o,a,s=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],u="",f=e||{},l=0;function d(p){var m=ak[p[1]||""],y=c[c.length-1]==p;return m?m[1]?(y?c.pop():c.push(p),m[0|y]):m[0]:p}function h(){for(var p="";c.length;)p+=d(c[c.length-1]);return p}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(p,m,y){return f[m.toLowerCase()]=y,""}).replace(/^\n+|\n+$/g,"");i=s.exec(t);)r=t.substring(l,i.index),l=s.lastIndex,n=i[0],r.match(/[^\\](\\\\)*\\$/)||((a=i[3]||i[4])?n='<pre class="code '+(i[4]?"poetry":i[2].toLowerCase())+'"><code'+(i[2]?' class="language-'+i[2].toLowerCase()+'"':"")+">"+M2(No(a).replace(/^\n+|\n+$/g,""))+"</code></pre>":(a=i[6])?(a.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=qf(M2(i[5].replace(/^\s*[>*+.-]/gm,""))),a==">"?a="blockquote":(a=a.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+a+">"+o+"</"+a+">"):i[8]?n='<img src="'+No(i[8])+'" alt="'+No(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+No(i[11]||f[r.toLowerCase()])+'">'),n=h()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(a="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+qf(i[12]||i[15],f)+"</"+a+">":i[16]?n="<code>"+No(i[16])+"</code>":(i[17]||i[1])&&(n=d(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+h()).replace(/^\n+|\n+$/g,"")}function T2(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function sk(t,e={}){const n=qf(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),I2(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",T2(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",T2(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function I2(t){if(t.nodeType!==3){if(t.nodeType!==1||/^(script|iframe|object|embed|svg)$/i.test(t.tagName))return t.remove();for(let e=t.attributes.length;e--;){const n=t.attributes[e].name;/^(class|id|name|href|src|alt|align|valign|(on[a-z]+))$/i.test(n)||t.attributes.removeNamedItem(n)}for(let e=t.childNodes.length;e--;)I2(t.childNodes[e])}}function ck(t){t.stopPropagation(),t.preventDefault();const n=t.target.parentElement,r=n.parentElement,o=r.parentElement.querySelector(".panes"),a=[...r.children].findIndex(s=>s==n);for(const s of r.children)s.classList.remove("active-tab");for(const s of o.children)s.classList.remove("active-tab");r.children.item(a).classList.add("active-tab"),o.children.item(a).classList.add("active-tab")}var Kf={exports:{}};(function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function a(c,u){if(!o[c]){o[c]={};for(var f=0;f<c.length;f++)o[c][c.charAt(f)]=f}return o[c][u]}var s={compressToBase64:function(c){if(c==null)return"";var u=s._compress(c,6,function(f){return r.charAt(f)});switch(u.length%4){default:case 0:return u;case 1:return u+"===";case 2:return u+"==";case 3:return u+"="}},decompressFromBase64:function(c){return c==null?"":c==""?null:s._decompress(c.length,32,function(u){return a(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":s._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:s._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=s.compress(c),f=new Uint8Array(u.length*2),l=0,d=u.length;l<d;l++){var h=u.charCodeAt(l);f[l*2]=h>>>8,f[l*2+1]=h%256}return f},decompressFromUint8Array:function(c){if(c==null)return s.decompress(c);for(var u=new Array(c.length/2),f=0,l=u.length;f<l;f++)u[f]=c[f*2]*256+c[f*2+1];var d=[];return u.forEach(function(h){d.push(n(h))}),s.decompress(d.join(""))},compressToEncodedURIComponent:function(c){return c==null?"":s._compress(c,6,function(u){return i.charAt(u)})},decompressFromEncodedURIComponent:function(c){return c==null?"":c==""?null:(c=c.replace(/ /g,"+"),s._decompress(c.length,32,function(u){return a(i,c.charAt(u))}))},compress:function(c){return s._compress(c,16,function(u){return n(u)})},_compress:function(c,u,f){if(c==null)return"";var l,d,h={},p={},m="",y="",g="",x=2,A=3,C=2,b=[],v=0,w=0,E;for(E=0;E<c.length;E+=1)if(m=c.charAt(E),Object.prototype.hasOwnProperty.call(h,m)||(h[m]=A++,p[m]=!0),y=g+m,Object.prototype.hasOwnProperty.call(h,y))g=y;else{if(Object.prototype.hasOwnProperty.call(p,g)){if(g.charCodeAt(0)<256){for(l=0;l<C;l++)v=v<<1,w==u-1?(w=0,b.push(f(v)),v=0):w++;for(d=g.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1}else{for(d=1,l=0;l<C;l++)v=v<<1|d,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=0;for(d=g.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1}x--,x==0&&(x=Math.pow(2,C),C++),delete p[g]}else for(d=h[g],l=0;l<C;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1;x--,x==0&&(x=Math.pow(2,C),C++),h[y]=A++,g=String(m)}if(g!==""){if(Object.prototype.hasOwnProperty.call(p,g)){if(g.charCodeAt(0)<256){for(l=0;l<C;l++)v=v<<1,w==u-1?(w=0,b.push(f(v)),v=0):w++;for(d=g.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1}else{for(d=1,l=0;l<C;l++)v=v<<1|d,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=0;for(d=g.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1}x--,x==0&&(x=Math.pow(2,C),C++),delete p[g]}else for(d=h[g],l=0;l<C;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1;x--,x==0&&(x=Math.pow(2,C),C++)}for(d=2,l=0;l<C;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1;for(;;)if(v=v<<1,w==u-1){b.push(f(v));break}else w++;return b.join("")},decompress:function(c){return c==null?"":c==""?null:s._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],d=4,h=4,p=3,m="",y=[],g,x,A,C,b,v,w,E={val:f(0),position:u,index:1};for(g=0;g<3;g+=1)l[g]=g;for(A=0,b=Math.pow(2,2),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),A|=(C>0?1:0)*v,v<<=1;switch(A){case 0:for(A=0,b=Math.pow(2,8),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),A|=(C>0?1:0)*v,v<<=1;w=n(A);break;case 1:for(A=0,b=Math.pow(2,16),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),A|=(C>0?1:0)*v,v<<=1;w=n(A);break;case 2:return""}for(l[3]=w,x=w,y.push(w);;){if(E.index>c)return"";for(A=0,b=Math.pow(2,p),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),A|=(C>0?1:0)*v,v<<=1;switch(w=A){case 0:for(A=0,b=Math.pow(2,8),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),A|=(C>0?1:0)*v,v<<=1;l[h++]=n(A),w=h-1,d--;break;case 1:for(A=0,b=Math.pow(2,16),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),A|=(C>0?1:0)*v,v<<=1;l[h++]=n(A),w=h-1,d--;break;case 2:return y.join("")}if(d==0&&(d=Math.pow(2,p),p++),l[w])m=l[w];else if(w===h)m=x+x.charAt(0);else return null;y.push(m),l[h++]=x+m.charAt(0),d--,x=m,d==0&&(d=Math.pow(2,p),p++)}}};return s}();t!=null&&(t.exports=e)})(Kf);function uk(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let js;function lk(){let t,e=[];for(let n=0;n<256;n++){t=n;for(let r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t}return e}function fk(t){js!=null||(js=lk());let e=-1;const n=uk().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^js[(e^n[r])&255];return(e^-1)>>>0}function k2(t){return("00000000"+fk(t).toString(16)).slice(-8)}function N2(t){const e=Kf.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+k2(e)}function dk(t){if(!t||t.length<10)throw new Error("The state string in the URL is too short.");const e=t.slice(1,-8),n=t.slice(-8);if(k2(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(Kf.exports.decompressFromEncodedURIComponent(e))}let Yt;function hk(t){for(const e of t.genomeSpy.getNamedScaleResolutions().values())e.isZoomable()&&e.resetZoom();t.storeHelper.dispatch([...t.provenance.isUndoable()?[Ht.ActionCreators.jumpToPast(0)]:[],ei.actions.restoreDefaultVisibilities()])}async function Jf(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(ei.actions.setViewSettings(t.viewSettings));const r=[];for(const[i,o]of Object.entries((n=t.scaleDomains)!=null?n:{})){const a=e.genomeSpy.getNamedScaleResolutions().get(i);a?r.push(a.zoomTo(o)):console.warn(`Cannot restore scale domain. Unknown name: ${i}`)}await Promise.all(r)}catch(r){console.error(r),Ye(D`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function Lo(t,e,n={}){await Jf(t,e),(Yt||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await pk(t,e,n)}async function pk(t,e,n={}){Yt!=null||(Yt=Wr("tour",e.appContainer)),await mk(t,e,n)}async function mk(t,e,n){var m;const r=n.database,i=r?await r.getNames():[],o=i.indexOf(t.name),a=r?` ${o+1} of ${i.length}`:"",s=`${n.mode=="shared"?"Shared bookmark":"Bookmark"}${a}: ${(m=t.name)!=null?m:"Unnamed"}`,c=t.notes?sk(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):D`<span class="no-notes">No notes provided</span>`,u=async()=>{if(Yt==null||Yt.close(),Yt=void 0,n.mode=="tour"){const y=n.afterTourBookmark;if(typeof y=="string"){const g=await n.database.get(y);if(!g)throw new Error(`No such bookmark: ${y}`);Jf(g,e)}else y===null||hk(e)}},f=async y=>{const g=await r.get(i[y]);Lo(g,e,n),e.appContainer.querySelector("canvas").focus()},l=async()=>{if(await $f(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(y){console.warn(y),Ye(`Cannot import bookmark: ${y}`)}},d=D`<button @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?D`<button @click="${l}">${ne(_g).node[0]} Import bookmark</button>`:G} ${r?D`<button @click="${()=>f(o-1)}" ?disabled="${o<=0}">${ne(u5).node[0]} Previous</button> <button @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${ne(w5).node[0]}</button>`:G}`,p=D`<button title="Collapse" class="collapse" @click="${y=>y.target.closest(".gs-modal").classList.toggle("collapsed")}">${ne(f5).node[0]}</button><div class="modal-title">${s}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${d}</div>`;Ge(p,Yt.content)}function L2(t,e){const n=JSON.stringify(t,void 0,2),r=window.location,i=r.origin+r.pathname+r.search+(e?"#bookmark:"+t.name.replaceAll(" ","-"):N2(t));Ye(D`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${ck}"><li class="active-tab"><button>URL</button></li><li><button>JSON</button></li></ul><div class="panes"><div class="gs-form-group active-tab"><label for="bookmark-url">Here's a link for you:</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${i}"> <button @click="${a=>navigator.clipboard.writeText(i).then(()=>a.target.dispatchEvent(p6())).catch(()=>Ye("Failed to copy!"))}">Copy</button></div><small>The bookmark URL contains all the bookmarked data, including the possible notes, which will be shown when the link is opened.</small></div><div class="gs-form-group"><textarea id="bookmark-json" style="height:250px">
|
2167
|
-
${n}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function $f(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>{var f,l;return D`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?D`<div class="gs-alert warning">${ne(h5).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:G} ${n=="share"?D`<div class="gs-alert info">${ne(Xg).node[0]} <span>You can add an optional title and notes, which will be shown to the recipient when the bookmark link is opened.</span></div>`:G}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" ?required="${n=="add"||n=="edit"}" .value="${(f=e.name)!=null?f:""}" .placeholder="${n=="share"?"Add an optional title":""}" @change="${d=>{e.name=B2(d.target.value)}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${(l=e.notes)!=null?l:""}" .placeholder="${n=="share"?"... and notes":""}" @change="${d=>{e.notes=B2(d.target.value)}}"></textarea> <small>Notes will be shown when the bookmark is loaded. You can use <a href="https://www.markdownguide.org/basic-syntax/">markdown</a> for formatting.</small></div></div><div class="modal-buttons"><button class="btn-cancel" @click="${c}">Cancel</button> <button class="btn-primary" @click="${u}">${n=="share"?D`${ne(Pl).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,a=()=>!!e.name,s=Wr();return new Promise(c=>{const u=()=>{s.close(),c(!1)},f=async()=>{if(!a()){Ye("Name is missing!",{title:"Error"});return}let d=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(d=await Ye(D`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,{title:"Bookmark already exists",cancelButton:!0})),d&&(s.close(),c(!0))},l=()=>{s.close(),c(!0)};Ge(i(u,n=="share"?l:f),s.content),s.content.querySelector("#bookmark-title").focus()})}function B2(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class gk extends Ft{constructor(){super(),this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(C2("app",e=>{this.app=e}))}createRenderRoot(){return this}_createBookmarkWithCurrentState(){const e={name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},n=this.app.storeHelper.state.viewSettings;Object.keys(n.visibilities).length&&(e.viewSettings=n);for(const[r,i]of this.app.genomeSpy.getNamedScaleResolutions().entries())i.isZoomable()&&(e.scaleDomains[r]=i.getComplexDomain());return e}async _shareCurrentState(){const e=this._createBookmarkWithCurrentState();await $f(void 0,e,"share")&&L2(e,!1)}async _addBookmark(e,n){var a,s;const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if((a=o.name)!=null||(o.name=r==null?void 0:r.name),(s=o.notes)!=null||(o.notes=r==null?void 0:r.notes),await $f(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){Ye(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&Lo(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li"),o=()=>Ye(D`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async c=>{c&&(await e.delete(n),this.requestUpdate())}),a=[],s=e==this.app.globalBookmarkDatabase;s||(a.push({label:"Edit and replace...",icon:D5,callback:()=>this._addBookmark(e,n)}),a.push({label:"Delete",icon:I5,callback:o})),a.push({label:"Share...",icon:Pl,callback:async()=>L2(await e.get(n),s)}),my({items:a},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:a=>this._createContextMenu(e,o,a)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>hy(o)):G}_getBookmarks(){const e=(n,r)=>n?ok(this._makeBookmarkMenuItems(n,r),D`Loading...`):G;return[e(this.app.globalBookmarkDatabase,"Bookmarks on the server"),e(this.app.localBookmarkDatabase,"Bookmarks in the web browser")]}render(){const e=this.app.localBookmarkDatabase,n=e?D`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:G,r=e||this.app.globalBookmarkDatabase?D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{Xf(i)&&this.requestUpdate()}}">${ne(_g).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:G;return D`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${ne(Pl).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",gk);class yk extends Ft{constructor(){super(),this.app=void 0,this.appInitialized=!1}static get properties(){return{app:{type:Object},appInitialized:{type:Boolean}}}createRenderRoot(){return this}_getToolButtons(){const e=this.app.getSampleView(),n=this.app.provenance,r=[];n.isEnabled()&&r.push(D`<genome-spy-provenance-buttons .provenance="${n}"></genome-spy-provenance-buttons>`),r.push(D`<genome-spy-view-visibility></genome-spy-view-visibility>`),e&&r.push(D`<button class="tool-btn" title="Peek (E)" @click="${()=>e._togglePeek()}">${ne(L5).node[0]}</button>`),r.push(D`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?$e(this.app.config.description):[];return i.length>1&&r.push(D`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>Ye(D`${i.slice(1).map(o=>D`<p>${o}</p>`)}`,{title:i[0]})}">${ne(Xg).node[0]}</button>`),i.length>0&&r.push(D`<span class="vis-title">${i[0]}</span>`),r.push(D`<span class="spacer"></span> ${this.app.appContainer.requestFullscreen?D`<button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${ne(S5).node[0]}</button>`:G} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${ne(g5).node[0]}</button>`),r}render(){const e=this.app.genomeSpy;return D`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${w2}"> </a>${this.appInitialized&&x2(e.viewRoot)?D`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:G} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",yk);class vk{constructor(e){this.storeHelper=e,this._reducers={},this.actionInfoSources=[],this._reducer=void 0,e.addReducer("provenance",(n,r)=>this._reducer?this._reducer(n,r):n!=null?n:{})}addReducer(e,n){this._reducers[e]=n;const r=o=>Object.keys(this._reducers).some(a=>o.type.startsWith(a)),i=(o,a)=>r(a)?a:o!=null?o:null;this._reducer=j6(Pf(U(T({},this._reducers),{lastAction:i})),{ignoreInitialState:!0,filter:r}),this.storeHelper.dispatch({type:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")})}get _storeState(){return this.storeHelper.store.getState()}get _provenanceState(){return this._storeState.provenance}isEnabled(){return!!this.getPresentState()}getPresentState(){return this._provenanceState.present}addActionInfoSource(e){this.actionInfoSources.push(e)}getActionInfo(e){for(const n of this.actionInfoSources){const r=n(e);if(r)return r}}dispatchBookmark(e){this.storeHelper.dispatch([...this.isUndoable()?[Ht.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(Ht.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(Ht.ActionCreators.undo())}isAtInitialState(){return!this.isUndoable()}isEmpty(){const e=this._provenanceState;return!this.isEnabled()||e.past.length+e.future.length<=0}activateState(e){const n=this.getCurrentIndex();e<n?this.storeHelper.dispatch(Ht.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(Ht.ActionCreators.jumpToFuture(e-n-1))}getCurrentIndex(){var e;return(e=this._provenanceState.past)==null?void 0:e.length}getActionHistory(){const e=this._provenanceState;return e.present&&[...e.past,e.present].map(n=>n.lastAction)}getFullActionHistory(){const e=this._provenanceState;return[...e.past,e.present,...e.future].map(n=>n.lastAction)}getBookmarkableActionHistory(){var e;return(e=this.getActionHistory())==null?void 0:e.slice(1)}}function*bk(t,e=n=>+n){const n=t.length,r=new uo,i=new Array(n).fill(0);for(const[a,s]of t.entries())s.length&&r.push(a,e(s[0]));let o=0;for(;(o=r.pop())!==void 0;){const a=t[o];let s=i[o];if(yield a[s++],s<a.length){const u=e(a[s]);r.push(o,u),i[o]=s}}}const Ak="sampleCount";class xk extends ue{constructor(e,n){super(),this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof jf&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(Rf(o)),this.complete()})));if(!this.provenance)throw new Error("No SampleView was found!");this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const e=this.view.getEncoding().x;if(Yn(e))this.xAccessor=J(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Ur)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[$r]),super.complete()}_mergeAndPropagate(e){const n=[...r2(e.rootGroup)].filter(r=>t2(He(r)));for(const[r,i]of n.entries()){const o=He(i);if(t2(o)){this.contextObject[Ak]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const a=o.samples,s=this._getCollector(),c=bk(a.map(u=>{var f;return(f=s.facetBatches.get([u]))!=null?f:[]}),this.xAccessor);for(const u of c)this._propagate(u)}}this._updateScales()}setParent(e){super.setParent(e)}_updateScales(){const e=new Set;this.view.visit(n=>{if(n instanceof Ae&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var wk="BATCHING_REDUCER.BATCH";function Ck(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:wk;return{type:e,meta:{batch:!0},payload:t}}function Sk(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class Ek{constructor(e){this._reducers=e!=null?e:{},this.store=t9({reducer:{}}),this._listeners=new Set,this.store.subscribe(()=>{const n=this.store.getState();for(const r of this._listeners)r(n)})}get state(){return this.store.getState()}addReducer(e,n){this._reducers[e]=n,this.store.replaceReducer(Sk(Pf(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(Ck(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class Dk extends m2{constructor(e){super(),this.bookmarks=e,this.names=e.map(n=>n.name)}async getNames(){return this.names}async get(e){return this.bookmarks.find(n=>n.name==e)}}Cg.mergeFacets=xk;class O2{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new Ek,this.storeHelper.addReducer("viewSettings",ei.reducer),this.provenance=new vk(this.storeHelper),this._initializationListeners=[],this.toolbarRef=b2(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new U9(n.specId):void 0,this.globalBookmarkDatabase=void 0,Ge(D`<div class="genome-spy-app"><genome-spy-toolbar ${A2(i.toolbarRef)} .app="${i}"></genome-spy-toolbar><div class="genome-spy-container"></div></div>`,i.appContainer),i.appContainer.querySelector(".genome-spy-app").addEventListener("query-dependency",s=>{s.detail.name=="app"&&(s.detail.setter(i),s.stopPropagation())});const o=s=>this.appContainer.getElementsByClassName(s)[0];this.genomeSpy=new Rg(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(T9,(s,c,u,f)=>new jf(s,c,u,f,this.provenance));const a=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=s=>{var c,u;return(u=(c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[s.name])!=null?u:a(s)}}addInitializationListener(e){this._initializationListeners?this._initializationListeners.push(e):e()}toggleFullScreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():this.appContainer.requestFullscreen()}isFullPage(){return this.appContainer==document.body}async launch(){var a,s;const e=(a=this.config.bookmarks)!=null&&a.remote?xi({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(c=>Promise.resolve(JSON.parse(c))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.appContainer.querySelector("canvas").setAttribute("tabindex","-1"),this.storeHelper.subscribe(zs(c=>{var u;return(u=c.viewSettings)==null?void 0:u.visibilities},(c,u)=>{var l,d;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(d=(l=this.getSampleView())==null?void 0:l.summaryViews)==null||d._invalidateCacheByPrefix("size","self");const f=this.genomeSpy.viewRoot.context;f.requestLayoutReflow(),f.animator.requestRender()},this.storeHelper.store.getState()));try{const c=await e;c.length&&(this.globalBookmarkDatabase=new Dk(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}try{await this._restoreStateFromUrlOrBookmark()}catch(c){Ye(c.toString())}this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl().catch(c=>Ye(c.toString())),!1);const r=ss(()=>this._updateStateToUrl(),500,!1);for(const[,c]of this.genomeSpy.getNamedScaleResolutions())c.isZoomable()&&c.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=$e((s=this.genomeSpy.spec.description)!=null?s:[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const c of this._initializationListeners)c();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i,o;const e=(i=this.config.bookmarks)==null?void 0:i.remote,n=this.globalBookmarkDatabase;if(!await this._restoreStateFromUrl()&&e&&n){const a=(o=e.initialBookmark)!=null?o:e.tour&&(await n.getNames())[0];if(a){const s=await n.get(a);if(!s)throw new Error(`No such bookmark: ${a}`);e.tour?await Lo(s,this,{mode:"tour",database:n,afterTourBookmark:e.afterTourBookmark}):await Jf(s,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();n!=null&&n.length&&(e.actions=n);for(const[o,a]of this.genomeSpy.getNamedScaleResolutions().entries())a.isZoomed()||(e.scaleDomains[o]=a.getComplexDomain());const r=this.storeHelper.state.viewSettings;Object.keys(r.visibilities).length&&(e.viewSettings=r);const i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?N2(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}async _restoreStateFromUrl(){var r,i;const e=window.location.hash,n=(r=e.match(/^#bookmark:(.+)$/))==null?void 0:r[1];if(n){const o=(i=this.config.bookmarks)==null?void 0:i.remote,a=this.globalBookmarkDatabase;if(o&&a){const s=(await a.getNames()).find(c=>c.replaceAll(" ","-")==n);if(s){const c=await a.get(s);if(!c)throw new Error(`No such bookmark: ${s}`);return await Lo(c,this,{mode:"tour",database:a}),!0}else throw new Error(`No such bookmark: ${n}`)}}if(e&&e.length>0)try{const o=dk(e);return Lo(o,this,{mode:"shared"}),!0}catch(o){console.error(o),Ye(D`<p>Cannot restore the state:</p><p>${o}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",Mk(q8)):this.appContainer.style.position="relative"}getSampleView(){var n;if(!((n=this.genomeSpy)!=null&&n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof jf)return e=r,Jn}),e}}function Mk(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function Tk(t,e,n={}){var o,a,s;let r;if(re(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 c=je(e)?e:await P2(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(a=c.width)!=null||(c.width="container"),(s=c.padding)!=null||(c.padding=10);const u=new O2(r,c,n);i=u.genomeSpy,Ik(i,n),await u.launch()}catch(c){r.innerText=c.toString(),console.error(c)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(c,u){const f=i._eventListeners;let l=f.get(c);l||(l=new Set,f.set(c,l)),l.add(u)},removeEventListener(c,u){var l;(l=i._eventListeners.get(c))==null||l.delete(u)},getScaleResolutionByName(c){return i.getNamedScaleResolutions().get(c)}}}function Ik(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function P2(t){let e;try{e=JSON.parse(await xi().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}z.GenomeSpy=Rg,z.GenomeSpyApp=O2,z.embed=Tk,z.html=D,z.icon=w2,z.loadSpec=P2,Object.defineProperties(z,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
2173
|
+
*/const qv=t=>!mN(t)&&typeof t.then=="function";class LN extends Hv{constructor(){super(...arguments),this._$Cwt=1073741823,this._$Cyt=[],this._$CG=new NN(this),this._$CK=new kN}render(...e){var n;return(n=e.find(r=>!qv(r)))!==null&&n!==void 0?n:xe}update(e,n){const r=this._$Cyt;let i=r.length;this._$Cyt=n;const o=this._$CG,a=this._$CK;this.isConnected||this.disconnected();for(let s=0;s<n.length&&!(s>this._$Cwt);s++){const c=n[s];if(!qv(c))return this._$Cwt=s,c;s<i&&c===r[s]||(this._$Cwt=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;a.get();)await a.get();const f=o.deref();if(f!==void 0){const l=f._$Cyt.indexOf(c);l>-1&&l<f._$Cwt&&(f._$Cwt=l,f.setValue(u))}}))}return xe}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const ON=Wr(LN);var BN={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function Kv(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function Oo(t){return(t+"").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function td(t,e){var n,r,i,o,a,s=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],u="",f=e||{},l=0;function d(p){var m=BN[p[1]||""],y=c[c.length-1]==p;return m?m[1]?(y?c.pop():c.push(p),m[0|y]):m[0]:p}function h(){for(var p="";c.length;)p+=d(c[c.length-1]);return p}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(p,m,y){return f[m.toLowerCase()]=y,""}).replace(/^\n+|\n+$/g,"");i=s.exec(t);)r=t.substring(l,i.index),l=s.lastIndex,n=i[0],r.match(/[^\\](\\\\)*\\$/)||((a=i[3]||i[4])?n='<pre class="code '+(i[4]?"poetry":i[2].toLowerCase())+'"><code'+(i[2]?' class="language-'+i[2].toLowerCase()+'"':"")+">"+Kv(Oo(a).replace(/^\n+|\n+$/g,""))+"</code></pre>":(a=i[6])?(a.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=td(Kv(i[5].replace(/^\s*[>*+.-]/gm,""))),a==">"?a="blockquote":(a=a.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+a+">"+o+"</"+a+">"):i[8]?n='<img src="'+Oo(i[8])+'" alt="'+Oo(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+Oo(i[11]||f[r.toLowerCase()])+'">'),n=h()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(a="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+td(i[12]||i[15],f)+"</"+a+">":i[16]?n="<code>"+Oo(i[16])+"</code>":(i[17]||i[1])&&(n=d(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+h()).replace(/^\n+|\n+$/g,"")}function Jv(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function FN(t,e={}){const n=td(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),$v(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",Jv(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",Jv(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function $v(t){if(t.nodeType!==3){if(t.nodeType!==1||/^(script|iframe|object|embed|svg)$/i.test(t.tagName))return t.remove();for(let e=t.attributes.length;e--;){const n=t.attributes[e].name;/^(class|id|name|href|src|alt|align|valign|(on[a-z]+))$/i.test(n)||t.attributes.removeNamedItem(n)}for(let e=t.childNodes.length;e--;)$v(t.childNodes[e])}}function PN(t){t.stopPropagation(),t.preventDefault();const n=t.target.parentElement,r=n.parentElement,o=r.parentElement.querySelector(".panes"),a=[...r.children].findIndex(s=>s==n);for(const s of r.children)s.classList.remove("active-tab");for(const s of o.children)s.classList.remove("active-tab");r.children.item(a).classList.add("active-tab"),o.children.item(a).classList.add("active-tab")}var nd={exports:{}};(function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function a(c,u){if(!o[c]){o[c]={};for(var f=0;f<c.length;f++)o[c][c.charAt(f)]=f}return o[c][u]}var s={compressToBase64:function(c){if(c==null)return"";var u=s._compress(c,6,function(f){return r.charAt(f)});switch(u.length%4){default:case 0:return u;case 1:return u+"===";case 2:return u+"==";case 3:return u+"="}},decompressFromBase64:function(c){return c==null?"":c==""?null:s._decompress(c.length,32,function(u){return a(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":s._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:s._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=s.compress(c),f=new Uint8Array(u.length*2),l=0,d=u.length;l<d;l++){var h=u.charCodeAt(l);f[l*2]=h>>>8,f[l*2+1]=h%256}return f},decompressFromUint8Array:function(c){if(c==null)return s.decompress(c);for(var u=new Array(c.length/2),f=0,l=u.length;f<l;f++)u[f]=c[f*2]*256+c[f*2+1];var d=[];return u.forEach(function(h){d.push(n(h))}),s.decompress(d.join(""))},compressToEncodedURIComponent:function(c){return c==null?"":s._compress(c,6,function(u){return i.charAt(u)})},decompressFromEncodedURIComponent:function(c){return c==null?"":c==""?null:(c=c.replace(/ /g,"+"),s._decompress(c.length,32,function(u){return a(i,c.charAt(u))}))},compress:function(c){return s._compress(c,16,function(u){return n(u)})},_compress:function(c,u,f){if(c==null)return"";var l,d,h={},p={},m="",y="",g="",A=2,w=3,C=2,b=[],v=0,x=0,E;for(E=0;E<c.length;E+=1)if(m=c.charAt(E),Object.prototype.hasOwnProperty.call(h,m)||(h[m]=w++,p[m]=!0),y=g+m,Object.prototype.hasOwnProperty.call(h,y))g=y;else{if(Object.prototype.hasOwnProperty.call(p,g)){if(g.charCodeAt(0)<256){for(l=0;l<C;l++)v=v<<1,x==u-1?(x=0,b.push(f(v)),v=0):x++;for(d=g.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,x==u-1?(x=0,b.push(f(v)),v=0):x++,d=d>>1}else{for(d=1,l=0;l<C;l++)v=v<<1|d,x==u-1?(x=0,b.push(f(v)),v=0):x++,d=0;for(d=g.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,x==u-1?(x=0,b.push(f(v)),v=0):x++,d=d>>1}A--,A==0&&(A=Math.pow(2,C),C++),delete p[g]}else for(d=h[g],l=0;l<C;l++)v=v<<1|d&1,x==u-1?(x=0,b.push(f(v)),v=0):x++,d=d>>1;A--,A==0&&(A=Math.pow(2,C),C++),h[y]=w++,g=String(m)}if(g!==""){if(Object.prototype.hasOwnProperty.call(p,g)){if(g.charCodeAt(0)<256){for(l=0;l<C;l++)v=v<<1,x==u-1?(x=0,b.push(f(v)),v=0):x++;for(d=g.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,x==u-1?(x=0,b.push(f(v)),v=0):x++,d=d>>1}else{for(d=1,l=0;l<C;l++)v=v<<1|d,x==u-1?(x=0,b.push(f(v)),v=0):x++,d=0;for(d=g.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,x==u-1?(x=0,b.push(f(v)),v=0):x++,d=d>>1}A--,A==0&&(A=Math.pow(2,C),C++),delete p[g]}else for(d=h[g],l=0;l<C;l++)v=v<<1|d&1,x==u-1?(x=0,b.push(f(v)),v=0):x++,d=d>>1;A--,A==0&&(A=Math.pow(2,C),C++)}for(d=2,l=0;l<C;l++)v=v<<1|d&1,x==u-1?(x=0,b.push(f(v)),v=0):x++,d=d>>1;for(;;)if(v=v<<1,x==u-1){b.push(f(v));break}else x++;return b.join("")},decompress:function(c){return c==null?"":c==""?null:s._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],d=4,h=4,p=3,m="",y=[],g,A,w,C,b,v,x,E={val:f(0),position:u,index:1};for(g=0;g<3;g+=1)l[g]=g;for(w=0,b=Math.pow(2,2),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*v,v<<=1;switch(w){case 0:for(w=0,b=Math.pow(2,8),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*v,v<<=1;x=n(w);break;case 1:for(w=0,b=Math.pow(2,16),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*v,v<<=1;x=n(w);break;case 2:return""}for(l[3]=x,A=x,y.push(x);;){if(E.index>c)return"";for(w=0,b=Math.pow(2,p),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*v,v<<=1;switch(x=w){case 0:for(w=0,b=Math.pow(2,8),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*v,v<<=1;l[h++]=n(w),x=h-1,d--;break;case 1:for(w=0,b=Math.pow(2,16),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*v,v<<=1;l[h++]=n(w),x=h-1,d--;break;case 2:return y.join("")}if(d==0&&(d=Math.pow(2,p),p++),l[x])m=l[x];else if(x===h)m=A+A.charAt(0);else return null;y.push(m),l[h++]=A+m.charAt(0),d--,A=m,d==0&&(d=Math.pow(2,p),p++)}}};return s}();t!=null&&(t.exports=e)})(nd);function zN(){const t=typeof process<"u"?require("util").TextEncoder:TextEncoder;return new t}let Us;function RN(){let t,e=[];for(let n=0;n<256;n++){t=n;for(let r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t}return e}function jN(t){Us!=null||(Us=RN());let e=-1;const n=zN().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^Us[(e^n[r])&255];return(e^-1)>>>0}function eb(t){return("00000000"+jN(t).toString(16)).slice(-8)}function tb(t){const e=nd.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+eb(e)}function UN(t){if(!t||t.length<10)throw new Error("The state string in the URL is too short.");const e=t.slice(1,-8),n=t.slice(-8);if(eb(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(nd.exports.decompressFromEncodedURIComponent(e))}let Qt;function GN(t){for(const e of t.genomeSpy.getNamedScaleResolutions().values())e.isZoomable()&&e.resetZoom();t.storeHelper.dispatch([...t.provenance.isUndoable()?[jt.ActionCreators.jumpToPast(0)]:[],oi.actions.restoreDefaultVisibilities()])}async function rd(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(oi.actions.setViewSettings(t.viewSettings));const r=[];for(const[i,o]of Object.entries((n=t.scaleDomains)!=null?n:{})){const a=e.genomeSpy.getNamedScaleResolutions().get(i);a?r.push(a.zoomTo(o)):console.warn(`Cannot restore scale domain. Unknown name: ${i}`)}await Promise.all(r)}catch(r){console.error(r),Qe(D`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function Bo(t,e,n={}){await rd(t,e),(Qt||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await HN(t,e,n)}async function HN(t,e,n={}){Qt!=null||(Qt=or("tour",e.appContainer)),await QN(t,e,n)}async function QN(t,e,n){var m;const r=n.database,i=r?await r.getNames():[],o=i.indexOf(t.name),a=r?` ${o+1} of ${i.length}`:"",s=`${n.mode=="shared"?"Shared bookmark":"Bookmark"}${a}: ${(m=t.name)!=null?m:"Unnamed"}`,c=t.notes?FN(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):D`<span class="no-notes">No notes provided</span>`,u=async()=>{if(Qt==null||Qt.close(),Qt=void 0,n.mode=="tour"){const y=n.afterTourBookmark;if(typeof y=="string"){const g=await n.database.get(y);if(!g)throw new Error(`No such bookmark: ${y}`);rd(g,e)}else y===null||GN(e)}},f=async y=>{const g=await r.get(i[y]);Bo(g,e,n),e.appContainer.querySelector("canvas").focus()},l=async()=>{if(await id(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(y){console.warn(y),Qe(`Cannot import bookmark: ${y}`)}},d=D`<button @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?D`<button @click="${l}">${q(r1).node[0]} Import bookmark</button>`:R} ${r?D`<button @click="${()=>f(o-1)}" ?disabled="${o<=0}">${q(I5).node[0]} Previous</button> <button @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${q(H5).node[0]}</button>`:R}`,p=D`<button title="Collapse" class="collapse" @click="${y=>y.target.closest(".gs-modal").classList.toggle("collapsed")}">${q(k5).node[0]}</button><div class="modal-title">${s}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${d}</div>`;Be(p,Qt.content)}function nb(t,e){const n=JSON.stringify(t,void 0,2),r=window.location,i=r.origin+r.pathname+r.search+(e?"#bookmark:"+t.name.replaceAll(" ","-"):tb(t));Qe(D`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${PN}"><li class="active-tab"><button>URL</button></li><li><button>JSON</button></li></ul><div class="panes"><div class="gs-form-group active-tab"><label for="bookmark-url">Here's a link for you:</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${i}"> <button @click="${a=>navigator.clipboard.writeText(i).then(()=>a.target.dispatchEvent(OI())).catch(()=>Qe("Failed to copy!"))}">Copy</button></div><small>The bookmark URL contains all the bookmarked data, including the possible notes, which will be shown when the link is opened.</small></div><div class="gs-form-group"><textarea id="bookmark-json" style="height:250px">
|
2174
|
+
${n}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function id(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>{var f,l;return D`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?D`<div class="gs-alert warning">${q(O5).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:R} ${n=="share"?D`<div class="gs-alert info">${q(o1).node[0]} <span>You can add an optional title and notes, which will be shown to the recipient when the bookmark link is opened.</span></div>`:R}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" ?required="${n=="add"||n=="edit"}" .value="${(f=e.name)!=null?f:""}" .placeholder="${n=="share"?"Add an optional title":""}" @change="${d=>{e.name=rb(d.target.value)}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${(l=e.notes)!=null?l:""}" .placeholder="${n=="share"?"... and notes":""}" @change="${d=>{e.notes=rb(d.target.value)}}"></textarea> <small>Notes will be shown when the bookmark is loaded. You can use <a href="https://www.markdownguide.org/basic-syntax/">markdown</a> for formatting.</small></div></div><div class="modal-buttons"><button class="btn-cancel" @click="${c}">Cancel</button> <button class="btn-primary" @click="${u}">${n=="share"?D`${q(Bl).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,a=()=>!!e.name,s=or();return new Promise(c=>{const u=()=>{s.close(),c(!1)},f=async()=>{if(!a()){Qe("Name is missing!",{title:"Error"});return}let d=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(d=await Qe(D`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,{title:"Bookmark already exists",cancelButton:!0})),d&&(s.close(),c(!0))},l=()=>{s.close(),c(!0)};Be(i(u,n=="share"?l:f),s.content),s.content.querySelector("#bookmark-title").focus()})}function rb(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class VN extends Ot{constructor(){super(),this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(Wv("app",e=>{this.app=e}))}createRenderRoot(){return this}_createBookmarkWithCurrentState(){const e={name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},n=this.app.storeHelper.state.viewSettings;Object.keys(n.visibilities).length&&(e.viewSettings=n);for(const[r,i]of this.app.genomeSpy.getNamedScaleResolutions().entries())i.isZoomable()&&(e.scaleDomains[r]=i.getComplexDomain());return e}async _shareCurrentState(){const e=this._createBookmarkWithCurrentState();await id(void 0,e,"share")&&nb(e,!1)}async _addBookmark(e,n){var a,s;const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if((a=o.name)!=null||(o.name=r==null?void 0:r.name),(s=o.notes)!=null||(o.notes=r==null?void 0:r.notes),await id(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){Qe(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&Bo(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li"),o=()=>Qe(D`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async c=>{c&&(await e.delete(n),this.requestUpdate())}),a=[],s=e==this.app.globalBookmarkDatabase;s||(a.push({label:"Edit and replace...",icon:Y5,callback:()=>this._addBookmark(e,n)}),a.push({label:"Delete",icon:X5,callback:o})),a.push({label:"Share...",icon:Bl,callback:async()=>nb(await e.get(n),s)}),My({items:a},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:a=>this._createContextMenu(e,o,a)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>Sy(o)):R}_getBookmarks(){const e=(n,r)=>n?ON(this._makeBookmarkMenuItems(n,r),D`Loading...`):R;return[e(this.app.globalBookmarkDatabase,"Bookmarks on the server"),e(this.app.localBookmarkDatabase,"Bookmarks in the web browser")]}render(){const e=this.app.localBookmarkDatabase,n=e?D`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:R,r=e||this.app.globalBookmarkDatabase?D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{$f(i)&&this.requestUpdate()}}">${q(r1).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:R;return D`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${q(Bl).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",VN);class YN extends Ot{constructor(){super(),this.app=void 0,this.appInitialized=!1}static get properties(){return{app:{type:Object},appInitialized:{type:Boolean}}}createRenderRoot(){return this}_getToolButtons(){const e=this.app.getSampleView(),n=this.app.provenance,r=[];n.isEnabled()&&r.push(D`<genome-spy-provenance-buttons .provenance="${n}"></genome-spy-provenance-buttons>`),r.push(D`<genome-spy-view-visibility></genome-spy-view-visibility>`),e&&r.push(D`<button class="tool-btn" title="Peek (E)" @click="${()=>e._togglePeek()}">${q(K5).node[0]}</button>`),r.push(D`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?Ke(this.app.config.description):[];return i.length>1&&r.push(D`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>Qe(D`${i.slice(1).map(o=>D`<p>${o}</p>`)}`,{title:i[0]})}">${q(o1).node[0]}</button>`),i.length>0&&r.push(D`<span class="vis-title">${i[0]}</span>`),r.push(D`<span class="spacer"></span> ${this.app.appContainer.requestFullscreen?D`<button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${q(V5).node[0]}</button>`:R} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${q(P5).node[0]}</button>`),r}render(){const e=this.app.genomeSpy;return D`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${_v}"> </a>${this.appInitialized&&Yv(e.viewRoot)?D`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:R} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",YN);class _N{constructor(e){this.storeHelper=e,this._reducers={},this.actionInfoSources=[],this._reducer=void 0,e.addReducer("provenance",(n,r)=>this._reducer?this._reducer(n,r):n!=null?n:{})}addReducer(e,n){this._reducers[e]=n;const r=o=>Object.keys(this._reducers).some(a=>o.type.startsWith(a)),i=(o,a)=>r(a)?a:o!=null?o:null;this._reducer=o6(Ff({...this._reducers,lastAction:i}),{ignoreInitialState:!0,filter:r}),this.storeHelper.dispatch({type:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")})}get _storeState(){return this.storeHelper.store.getState()}get _provenanceState(){return this._storeState.provenance}isEnabled(){return!!this.getPresentState()}getPresentState(){return this._provenanceState.present}addActionInfoSource(e){this.actionInfoSources.push(e)}getActionInfo(e){for(const n of this.actionInfoSources){const r=n(e);if(r)return r}}dispatchBookmark(e){this.storeHelper.dispatch([...this.isUndoable()?[jt.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(jt.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(jt.ActionCreators.undo())}isAtInitialState(){return!this.isUndoable()}isEmpty(){const e=this._provenanceState;return!this.isEnabled()||e.past.length+e.future.length<=0}activateState(e){const n=this.getCurrentIndex();e<n?this.storeHelper.dispatch(jt.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(jt.ActionCreators.jumpToFuture(e-n-1))}getCurrentIndex(){var e;return(e=this._provenanceState.past)==null?void 0:e.length}getActionHistory(){const e=this._provenanceState;return e.present&&[...e.past,e.present].map(n=>n.lastAction)}getFullActionHistory(){const e=this._provenanceState;return[...e.past,e.present,...e.future].map(n=>n.lastAction)}getBookmarkableActionHistory(){var e;return(e=this.getActionHistory())==null?void 0:e.slice(1)}}function*WN(t,e=n=>+n){const n=t.length,r=new mo,i=new Array(n).fill(0);for(const[a,s]of t.entries())s.length&&r.push(a,e(s[0]));let o=0;for(;(o=r.pop())!==void 0;){const a=t[o];let s=i[o];if(yield a[s++],s<a.length){const u=e(a[s]);r.push(o,u),i[o]=s}}}const XN="sampleCount";class ZN extends se{constructor(e,n){super(),this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof Vf&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(Qf(o)),this.complete()})));if(!this.provenance)throw new Error("No SampleView was found!");this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const e=this.view.getEncoding().x;if(Vn(e))this.xAccessor=Z(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Yr)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[ii]),super.complete()}_mergeAndPropagate(e){const n=[...Mv(e.rootGroup)].filter(r=>Sv(Ue(r)));for(const[r,i]of n.entries()){const o=Ue(i);if(Sv(o)){this.contextObject[XN]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const a=o.samples,s=this._getCollector(),c=WN(a.map(u=>{var f;return(f=s.facetBatches.get([u]))!=null?f:[]}),this.xAccessor);for(const u of c)this._propagate(u)}}this._updateScales()}setParent(e){super.setParent(e)}_updateScales(){const e=new Set;this.view.visit(n=>{if(n instanceof ye&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var qN="BATCHING_REDUCER.BATCH";function KN(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qN;return{type:e,meta:{batch:!0},payload:t}}function JN(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class $N{constructor(e){this._reducers=e!=null?e:{},this.store=I9({reducer:{}}),this._listeners=new Set,this.store.subscribe(()=>{const n=this.store.getState();for(const r of this._listeners)r(n)})}get state(){return this.store.getState()}addReducer(e,n){this._reducers[e]=n,this.store.replaceReducer(JN(Ff(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(KN(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class ek extends jv{constructor(e){super(),this.bookmarks=e,this.names=e.map(n=>n.name)}async getNames(){return this.names}async get(e){return this.bookmarks.find(n=>n.name==e)}}Bg.mergeFacets=ZN;class ib{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new $N,this.storeHelper.addReducer("viewSettings",oi.reducer),this.provenance=new _N(this.storeHelper),this._initializationListeners=[],this.toolbarRef=Qv(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new pN(n.specId):void 0,this.globalBookmarkDatabase=void 0,Be(D`<div class="genome-spy-app"><genome-spy-toolbar ${Vv(i.toolbarRef)} .app="${i}"></genome-spy-toolbar><div class="genome-spy-container"></div></div>`,i.appContainer),i.appContainer.querySelector(".genome-spy-app").addEventListener("query-dependency",s=>{s.detail.name=="app"&&(s.detail.setter(i),s.stopPropagation())});const o=s=>this.appContainer.getElementsByClassName(s)[0];this.genomeSpy=new Zg(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(nN,(s,c,u,f)=>new Vf(s,c,u,f,this.provenance));const a=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=s=>{var c,u;return(u=(c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[s.name])!=null?u:a(s)}}addInitializationListener(e){this._initializationListeners?this._initializationListeners.push(e):e()}toggleFullScreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():this.appContainer.requestFullscreen()}isFullPage(){return this.appContainer==document.body}async launch(){var a,s;const e=(a=this.config.bookmarks)!=null&&a.remote?Di({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(c=>Promise.resolve(JSON.parse(c))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.appContainer.querySelector("canvas").setAttribute("tabindex","-1"),this.storeHelper.subscribe(Rs(c=>{var u;return(u=c.viewSettings)==null?void 0:u.visibilities},(c,u)=>{var l,d;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(d=(l=this.getSampleView())==null?void 0:l.summaryViews)==null||d._invalidateCacheByPrefix("size","self");const f=this.genomeSpy.viewRoot.context;f.requestLayoutReflow(),f.animator.requestRender()},this.storeHelper.store.getState()));try{const c=await e;c.length&&(this.globalBookmarkDatabase=new ek(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}try{await this._restoreStateFromUrlOrBookmark()}catch(c){Qe(c.toString())}this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl().catch(c=>Qe(c.toString())),!1);const r=ls(()=>this._updateStateToUrl(),500,!1);for(const[,c]of this.genomeSpy.getNamedScaleResolutions())c.isZoomable()&&c.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=Ke((s=this.genomeSpy.spec.description)!=null?s:[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const c of this._initializationListeners)c();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i,o;const e=(i=this.config.bookmarks)==null?void 0:i.remote,n=this.globalBookmarkDatabase;if(!await this._restoreStateFromUrl()&&e&&n){const a=(o=e.initialBookmark)!=null?o:e.tour&&(await n.getNames())[0];if(a){const s=await n.get(a);if(!s)throw new Error(`No such bookmark: ${a}`);e.tour?await Bo(s,this,{mode:"tour",database:n,afterTourBookmark:e.afterTourBookmark}):await rd(s,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();n!=null&&n.length&&(e.actions=n);for(const[o,a]of this.genomeSpy.getNamedScaleResolutions().entries())a.isZoomed()||(e.scaleDomains[o]=a.getComplexDomain());const r=this.storeHelper.state.viewSettings;Object.keys(r.visibilities).length&&(e.viewSettings=r);const i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?tb(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}async _restoreStateFromUrl(){var r,i;const e=window.location.hash,n=(r=e.match(/^#bookmark:(.+)$/))==null?void 0:r[1];if(n){const o=(i=this.config.bookmarks)==null?void 0:i.remote,a=this.globalBookmarkDatabase;if(o&&a){const s=(await a.getNames()).find(c=>c.replaceAll(" ","-")==n);if(s){const c=await a.get(s);if(!c)throw new Error(`No such bookmark: ${s}`);return await Bo(c,this,{mode:"tour",database:a}),!0}else throw new Error(`No such bookmark: ${n}`)}}if(e&&e.length>0)try{const o=UN(e);return Bo(o,this,{mode:"shared"}),!0}catch(o){console.error(o),Qe(D`<p>Cannot restore the state:</p><p>${o}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",tk(g5)):this.appContainer.style.position="relative"}getSampleView(){var n;if(!((n=this.genomeSpy)!=null&&n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof Vf)return e=r,Kn}),e}}function tk(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function nk(t,e,n={}){var o,a,s;let r;if(ee(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 c=Re(e)?e:await ob(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(a=c.width)!=null||(c.width="container"),(s=c.padding)!=null||(c.padding=10);const u=new ib(r,c,n);i=u.genomeSpy,rk(i,n),await u.launch()}catch(c){r.innerText=c.toString(),console.error(c)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(c,u){const f=i._eventListeners;let l=f.get(c);l||(l=new Set,f.set(c,l)),l.add(u)},removeEventListener(c,u){var l;(l=i._eventListeners.get(c))==null||l.delete(u)},getScaleResolutionByName(c){return i.getNamedScaleResolutions().get(c)}}}function rk(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function ob(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}j.GenomeSpy=Zg,j.GenomeSpyApp=ib,j.embed=nk,j.html=D,j.icon=_v,j.loadSpec=ob,Object.defineProperties(j,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|