@genome-spy/core 0.69.1 → 0.70.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.
Files changed (44) hide show
  1. package/dist/bundle/{AbortablePromiseCache-CcuMrnn7.js → AbortablePromiseCache-Dj0vzLnp.js} +4 -4
  2. package/dist/bundle/{browser-BRemItdO.js → browser-0iNU5Wit.js} +33 -33
  3. package/dist/bundle/index-BYsZN7b0.js +1597 -0
  4. package/dist/bundle/{index-Cq3QFUxX.js → index-C3kClAEN.js} +583 -593
  5. package/dist/bundle/{index-D-w7Mmt9.js → index-C7wOh6y1.js} +138 -140
  6. package/dist/bundle/index-CRaQAuki.js +326 -0
  7. package/dist/bundle/{index-D74H8TTz.js → index-D9v1PCj9.js} +1 -2
  8. package/dist/bundle/{index-BatuyGAI.js → index-GDOuv_D5.js} +75 -80
  9. package/dist/bundle/{index-DbJ0oeYM.js → index-Gt44EOIH.js} +160 -163
  10. package/dist/bundle/index.es.js +8778 -9046
  11. package/dist/bundle/index.js +123 -165
  12. package/dist/bundle/{unzip-NywezaRR.js → unzip-Bac01w6X.js} +1 -1
  13. package/dist/src/gl/colorUtils.d.ts +2 -1
  14. package/dist/src/gl/colorUtils.d.ts.map +1 -1
  15. package/dist/src/gl/colorUtils.js +15 -3
  16. package/dist/src/gl/colorUtils.test.d.ts +2 -0
  17. package/dist/src/gl/colorUtils.test.d.ts.map +1 -0
  18. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  19. package/dist/src/gl/webGLHelper.js +2 -1
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/index.js +2 -5
  22. package/dist/src/marks/mark.d.ts +0 -2
  23. package/dist/src/marks/mark.d.ts.map +1 -1
  24. package/dist/src/marks/mark.js +0 -8
  25. package/dist/src/marks/rect.d.ts.map +1 -1
  26. package/dist/src/marks/rect.js +0 -8
  27. package/dist/src/utils/deepEqual.d.ts +14 -0
  28. package/dist/src/utils/deepEqual.d.ts.map +1 -0
  29. package/dist/src/utils/deepEqual.js +63 -0
  30. package/dist/src/utils/deepEqual.test.d.ts +2 -0
  31. package/dist/src/utils/deepEqual.test.d.ts.map +1 -0
  32. package/dist/src/utils/fetchUtils.d.ts +27 -0
  33. package/dist/src/utils/fetchUtils.d.ts.map +1 -0
  34. package/dist/src/utils/fetchUtils.js +47 -0
  35. package/dist/src/utils/fetchUtils.test.d.ts +2 -0
  36. package/dist/src/utils/fetchUtils.test.d.ts.map +1 -0
  37. package/dist/src/utils/url.d.ts +12 -0
  38. package/dist/src/utils/url.d.ts.map +1 -1
  39. package/dist/src/utils/url.js +45 -0
  40. package/dist/src/view/viewUtils.d.ts.map +1 -1
  41. package/dist/src/view/viewUtils.js +4 -5
  42. package/package.json +2 -2
  43. package/dist/bundle/index-ByuE8dvu.js +0 -332
  44. package/dist/bundle/index-D28m8tSW.js +0 -1607
@@ -1,27 +1,11 @@
1
- (function(te,ne){typeof exports=="object"&&typeof module<"u"?ne(exports):typeof define=="function"&&define.amd?define(["exports"],ne):(te=typeof globalThis<"u"?globalThis:te||self,ne(te.genomeSpyEmbed={}))})(this,(function(te){"use strict";var QU=Object.defineProperty;var DU=Object.getPrototypeOf;var kU=Reflect.get;var uB=te=>{throw TypeError(te)};var FU=(te,ne,ke)=>ne in te?QU(te,ne,{enumerable:!0,configurable:!0,writable:!0,value:ke}):te[ne]=ke;var X=(te,ne,ke)=>FU(te,typeof ne!="symbol"?ne+"":ne,ke),up=(te,ne,ke)=>ne.has(te)||uB("Cannot "+ke);var g=(te,ne,ke)=>(up(te,ne,"read from private field"),ke?ke.call(te):ne.get(te)),v=(te,ne,ke)=>ne.has(te)?uB("Cannot add the same private member more than once"):ne instanceof WeakSet?ne.add(te):ne.set(te,ke),Q=(te,ne,ke,Ps)=>(up(te,ne,"write to private field"),Ps?Ps.call(te,ke):ne.set(te,ke),ke),F=(te,ne,ke)=>(up(te,ne,"access private method"),ke);var ui=(te,ne,ke,Ps)=>({set _(lh){Q(te,ne,lh,ke)},get _(){return g(te,ne,Ps)}}),fB=(te,ne,ke)=>kU(DU(te),ke,ne);var Gx,Xn,Go,Gr,Xi,zo,Cl,wt,zr,Ho,Zi,$i,es,Hr,ts,Vr,_r,wl,ns,Vo,rs,xu,yl,Il,El,Dn,bl,_o,AB,hB,cn,Yr,fp,Ap,Yo,_A,dB,kn,Jr,xl,Bl,vl,Jo,qo,qt,gB,hp,dp,pB,Sl,Ql,Ko,Dl,kl,is,Fl,jo,Rl,YA,mB,Kt,Ml,Nl,Wo,Xo,Tl,Zn,Pl,gp,ln,Zo,qr,Te,Mt,jt,ss,Ll,K,pp,mp,Cp,wp,Pa,La,CB,wB,yp,yB,IB,rh,EB,Ip,Ep,bp,Fn,JA,bB,Ol,xp,$o,Ul,$n,os,Kr,jr,Wr,as,cs,Xr,ls,Ye,xB,BB,Bp,Bu,vp,vB,qA,us,Gl,Rn,fs,er,yt,Pe,Nt,Wt,un,Zr,ea,zl,Hl,Sp,ta,As,na,ra,Vl,_l,ia,sa,oa,Tt,vu,Qp,Dp,Yl,Jl,aa,KA,SB,hs,tr,ca,la,QB,DB,nr,ql,$r,ua,ds,fa,ei,st,kp,Fp,ih,Rp,kB,gs,rr,Kl,Mp,jA,FB,Aa,ha,da,jl,ga,pa,Wl,Np,Xl,Tp,ps,ma,Zl,Pp,$l,eu,Ca,tu,nu,ir,ms,ru,WA,RB,Xt,iu,Lp,Cs,ti,ni,ri,su,Pt,wa,ya,Ce,MB,Op,sh,Su,NB,TB,oh,Up,XA,PB,ws,ii,sr,ys,si,Is,oi,LB,OB,UB,Ia,Ea,At,or,ou,Es,ie,Ts,GB,Gp,Qu,zp,Hp,Du,Vp,ah,zB,bs,HB,_p,ba,xa,Ba,xs,It,au,cu,lu,va,uu,Je,Bs,Sa,ar,ZA,VB,fu,An,Au,Qa,hu,du,gu,Da,pu,$A,_B,mu,vs,Cu,ka,wu,Ss,Qs,Ds,Fa,ks,Ra,cr,Ma,Fs,Et,yu,Rs,Na,Qe,ch,YB,JB,qB,KB,jB,WB,XB,ZB,$B;function ne(n,t,e){return n.fields=t||[],n.fname=e,n}function ke(n){return n==null?null:n.fname}function Ps(n){return n==null?null:n.fields}function lh(n){return n.length===1?ev(n[0]):tv(n)}const ev=n=>function(t){return t[n]},tv=n=>{const t=n.length;return function(e){for(let r=0;r<t;++r)e=e[n[r]];return e}};function Le(n){throw Error(n)}function nv(n){const t=[],e=n.length;let r=null,i=0,s="",o,a,l;n=n+"";function c(){t.push(s+n.substring(o,a)),s="",o=a+1}for(o=a=0;a<e;++a)if(l=n[a],l==="\\")s+=n.substring(o,a++),o=a;else if(l===r)c(),r=null,i=-1;else{if(r)continue;o===i&&l==='"'||o===i&&l==="'"?(o=a+1,r=l):l==="."&&!i?a>o?c():o=a+1:l==="["?(a>o&&c(),i=o=a+1):l==="]"&&(i||Le("Access path missing open bracket: "+n),i>0&&c(),i=0,o=a+1)}return i&&Le("Access path missing closing bracket: "+n),r&&Le("Access path missing closing quote: "+n),a>o&&(a++,c()),t}function ku(n,t,e){const r=nv(n);return n=r.length===1?r[0]:n,ne((e&&e.get||lh)(r),[n],t||n)}ku("id");const Fu=ne(n=>n,[],"identity");ne(()=>0,[],"zero"),ne(()=>1,[],"one"),ne(()=>!0,[],"true"),ne(()=>!1,[],"false");const rv=new Set([...Object.getOwnPropertyNames(Object.prototype).filter(n=>typeof Object.prototype[n]=="function"),"__proto__"]);var Re=Array.isArray;function tt(n){return n===Object(n)}function $t(n){return n[n.length-1]}function Oa(n){return n==null||n===""?null:+n}const Jp=n=>t=>n*Math.exp(t),qp=n=>t=>Math.log(n*t),iv=n=>t=>Math.sign(t)*Math.log1p(Math.abs(t/n)),sv=n=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*n,Ru=n=>t=>t<0?-Math.pow(-t,n):Math.pow(t,n);function uh(n,t,e,r){const i=e(n[0]),s=e($t(n)),o=(s-i)*t;return[r(i-o),r(s-o)]}function ov(n,t){return uh(n,t,Oa,Fu)}function av(n,t){var e=Math.sign(n[0]);return uh(n,t,qp(e),Jp(e))}function cv(n,t,e){return uh(n,t,Ru(e),Ru(1/e))}function Mu(n,t,e,r,i){const s=r(n[0]),o=r($t(n)),a=t!=null?r(t):(s+o)/2;return[i(a+(s-a)*e),i(a+(o-a)*e)]}function Kp(n,t,e){return Mu(n,t,e,Oa,Fu)}function jp(n,t,e){const r=Math.sign(n[0]);return Mu(n,t,e,qp(r),Jp(r))}function fh(n,t,e,r){return Mu(n,t,e,Ru(r),Ru(1/r))}function lv(n,t,e,r){return Mu(n,t,e,iv(r),sv(r))}function Ah(n){return n!=null?Re(n)?n:[n]:[]}function uv(n,t,e){let r=n[0],i=n[1],s;return i<r&&(s=i,i=r,r=s),s=i-r,s>=e-t?[t,e]:[r=Math.min(Math.max(r,t),e-s),r+s]}function Ot(n){return typeof n=="function"}const fv="descending";function Wp(n,t,e){e=e||{},t=Ah(t)||[];const r=[],i=[],s={},o=e.comparator||Av;return Ah(n).forEach((a,l)=>{a!=null&&(r.push(t[l]===fv?-1:1),i.push(a=Ot(a)?a:ku(a,null,e)),(Ps(a)||[]).forEach(c=>s[c]=1))}),i.length===0?null:ne(o(i,r),Object.keys(s))}const Xp=(n,t)=>(n<t||n==null)&&t!=null?-1:(n>t||t==null)&&n!=null?1:(t=t instanceof Date?+t:t,(n=n instanceof Date?+n:n)!==n&&t===t?-1:t!==t&&n===n?1:0),Av=(n,t)=>n.length===1?hv(n[0],t[0]):dv(n,t,n.length),hv=(n,t)=>function(e,r){return Xp(n(e),n(r))*t},dv=(n,t,e)=>(t.push(0),function(r,i){let s,o=0,a=-1;for(;o===0&&++a<e;)s=n[a],o=Xp(s(r),s(i));return o*t[a]});function gv(n){for(let t,e,r=1,i=arguments.length;r<i;++r){t=arguments[r];for(e in t)n[e]=t[e]}return n}function Ls(n,t){return Object.hasOwn(n,t)}function Ua(n){return typeof n=="boolean"}function pv(n){return Object.prototype.toString.call(n)==="[object Date]"}function mv(n){return n&&Ot(n[Symbol.iterator])}function ot(n){return typeof n=="number"}function Cv(n){return Object.prototype.toString.call(n)==="[object RegExp]"}function we(n){return typeof n=="string"}function Zp(n,t){const e=n[0],r=$t(n),i=+t;return i?i===1?r:e+i*(r-e):e}function Ga(n){return n&&$t(n)-n[0]||0}function hh(n){return Re(n)?`[${n.map(t=>t===null?"null":hh(t))}]`:tt(n)||we(n)?JSON.stringify(n).replaceAll("\u2028","\\u2028").replaceAll("\u2029","\\u2029"):n}function wv(n){return n==null||n===""?null:!n||n==="false"||n==="0"?!1:!!n}const yv=n=>ot(n)||pv(n)?n:Date.parse(n);function Iv(n,t){return t=t||yv,n==null||n===""?null:t(n)}function Ev(n){return n==null||n===""?null:n+""}function Nu(n){const t={},e=n.length;for(let r=0;r<e;++r)t[n[r]]=!0;return t}/**
2
- * @license
3
- * Copyright 2019 Google LLC
4
- * SPDX-License-Identifier: BSD-3-Clause
5
- */const Tu=globalThis,dh=Tu.ShadowRoot&&(Tu.ShadyCSS===void 0||Tu.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,$p=Symbol(),em=new WeakMap;let bv=class{constructor(t,e,r){if(this._$cssResult$=!0,r!==$p)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(dh&&t===void 0){const r=e!==void 0&&e.length===1;r&&(t=em.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&em.set(e,t))}return t}toString(){return this.cssText}};const xv=n=>new bv(typeof n=="string"?n:n+"",void 0,$p),Bv=(n,t)=>{if(dh)n.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(const e of t){const r=document.createElement("style"),i=Tu.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=e.cssText,n.appendChild(r)}},tm=dh?n=>n:n=>n instanceof CSSStyleSheet?(t=>{let e="";for(const r of t.cssRules)e+=r.cssText;return xv(e)})(n):n;/**
6
- * @license
7
- * Copyright 2017 Google LLC
8
- * SPDX-License-Identifier: BSD-3-Clause
9
- */const{is:vv,defineProperty:Sv,getOwnPropertyDescriptor:Qv,getOwnPropertyNames:Dv,getOwnPropertySymbols:kv,getPrototypeOf:Fv}=Object,dr=globalThis,nm=dr.trustedTypes,Rv=nm?nm.emptyScript:"",gh=dr.reactiveElementPolyfillSupport,za=(n,t)=>n,ph={toAttribute(n,t){switch(t){case Boolean:n=n?Rv:null;break;case Object:case Array:n=n==null?n:JSON.stringify(n)}return n},fromAttribute(n,t){let e=n;switch(t){case Boolean:e=n!==null;break;case Number:e=n===null?null:Number(n);break;case Object:case Array:try{e=JSON.parse(n)}catch{e=null}}return e}},rm=(n,t)=>!vv(n,t),im={attribute:!0,type:String,converter:ph,reflect:!1,useDefault:!1,hasChanged:rm};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),dr.litPropertyMetadata??(dr.litPropertyMetadata=new WeakMap);let Os=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=im){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(t,e),!e.noAccessor){const r=Symbol(),i=this.getPropertyDescriptor(t,r,e);i!==void 0&&Sv(this.prototype,t,i)}}static getPropertyDescriptor(t,e,r){const{get:i,set:s}=Qv(this.prototype,t)??{get(){return this[e]},set(o){this[e]=o}};return{get:i,set(o){const a=i==null?void 0:i.call(this);s==null||s.call(this,o),this.requestUpdate(t,a,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??im}static _$Ei(){if(this.hasOwnProperty(za("elementProperties")))return;const t=Fv(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(za("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(za("properties"))){const e=this.properties,r=[...Dv(e),...kv(e)];for(const i of r)this.createProperty(i,e[i])}const t=this[Symbol.metadata];if(t!==null){const e=litPropertyMetadata.get(t);if(e!==void 0)for(const[r,i]of e)this.elementProperties.set(r,i)}this._$Eh=new Map;for(const[e,r]of this.elementProperties){const i=this._$Eu(e,r);i!==void 0&&this._$Eh.set(i,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const r=new Set(t.flat(1/0).reverse());for(const i of r)e.unshift(tm(i))}else t!==void 0&&e.push(tm(t));return e}static _$Eu(t,e){const r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(e=>e(this))}addController(t){var e;(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&((e=t.hostConnected)==null||e.call(t))}removeController(t){var e;(e=this._$EO)==null||e.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const r of e.keys())this.hasOwnProperty(r)&&(t.set(r,this[r]),delete this[r]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Bv(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$EO)==null||t.forEach(e=>{var r;return(r=e.hostConnected)==null?void 0:r.call(e)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$EO)==null||t.forEach(e=>{var r;return(r=e.hostDisconnected)==null?void 0:r.call(e)})}attributeChangedCallback(t,e,r){this._$AK(t,r)}_$ET(t,e){var s;const r=this.constructor.elementProperties.get(t),i=this.constructor._$Eu(t,r);if(i!==void 0&&r.reflect===!0){const o=(((s=r.converter)==null?void 0:s.toAttribute)!==void 0?r.converter:ph).toAttribute(e,r.type);this._$Em=t,o==null?this.removeAttribute(i):this.setAttribute(i,o),this._$Em=null}}_$AK(t,e){var s,o;const r=this.constructor,i=r._$Eh.get(t);if(i!==void 0&&this._$Em!==i){const a=r.getPropertyOptions(i),l=typeof a.converter=="function"?{fromAttribute:a.converter}:((s=a.converter)==null?void 0:s.fromAttribute)!==void 0?a.converter:ph;this._$Em=i;const c=l.fromAttribute(e,a.type);this[i]=c??((o=this._$Ej)==null?void 0:o.get(i))??c,this._$Em=null}}requestUpdate(t,e,r,i=!1,s){var o;if(t!==void 0){const a=this.constructor;if(i===!1&&(s=this[t]),r??(r=a.getPropertyOptions(t)),!((r.hasChanged??rm)(s,e)||r.useDefault&&r.reflect&&s===((o=this._$Ej)==null?void 0:o.get(t))&&!this.hasAttribute(a._$Eu(t,r))))return;this.C(t,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(t,e,{useDefault:r,reflect:i,wrapped:s},o){r&&!(this._$Ej??(this._$Ej=new Map)).has(t)&&(this._$Ej.set(t,o??e??this[t]),s!==!0||o!==void 0)||(this._$AL.has(t)||(this.hasUpdated||r||(e=void 0),this._$AL.set(t,e)),i===!0&&this._$Em!==t&&(this._$Eq??(this._$Eq=new Set)).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var r;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[s,o]of this._$Ep)this[s]=o;this._$Ep=void 0}const i=this.constructor.elementProperties;if(i.size>0)for(const[s,o]of i){const{wrapped:a}=o,l=this[s];a!==!0||this._$AL.has(s)||l===void 0||this.C(s,void 0,o,l)}}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),(r=this._$EO)==null||r.forEach(i=>{var s;return(s=i.hostUpdate)==null?void 0:s.call(i)}),this.update(e)):this._$EM()}catch(i){throw t=!1,this._$EM(),i}t&&this._$AE(e)}willUpdate(t){}_$AE(t){var e;(e=this._$EO)==null||e.forEach(r=>{var i;return(i=r.hostUpdated)==null?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&(this._$Eq=this._$Eq.forEach(e=>this._$ET(e,this[e]))),this._$EM()}updated(t){}firstUpdated(t){}};Os.elementStyles=[],Os.shadowRootOptions={mode:"open"},Os[za("elementProperties")]=new Map,Os[za("finalized")]=new Map,gh==null||gh({ReactiveElement:Os}),(dr.reactiveElementVersions??(dr.reactiveElementVersions=[])).push("2.1.2");/**
10
- * @license
11
- * Copyright 2017 Google LLC
12
- * SPDX-License-Identifier: BSD-3-Clause
13
- */const Ha=globalThis,sm=n=>n,Pu=Ha.trustedTypes,om=Pu?Pu.createPolicy("lit-html",{createHTML:n=>n}):void 0,am="$lit$",gr=`lit$${Math.random().toFixed(9).slice(2)}$`,cm="?"+gr,Mv=`<${cm}>`,fi=document,Va=()=>fi.createComment(""),_a=n=>n===null||typeof n!="object"&&typeof n!="function",mh=Array.isArray,Nv=n=>mh(n)||typeof(n==null?void 0:n[Symbol.iterator])=="function",Ch=`[
14
- \f\r]`,Ya=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,lm=/-->/g,um=/>/g,Ai=RegExp(`>|${Ch}(?:([^\\s"'>=/]+)(${Ch}*=${Ch}*(?:[^
15
- \f\r"'\`<>=]|("|')|))|$)`,"g"),fm=/'/g,Am=/"/g,hm=/^(?:script|style|textarea|title)$/i,Tv=n=>(t,...e)=>({_$litType$:n,strings:t,values:e}),me=Tv(1),hi=Symbol.for("lit-noChange"),Ne=Symbol.for("lit-nothing"),dm=new WeakMap,di=fi.createTreeWalker(fi,129);function gm(n,t){if(!mh(n)||!n.hasOwnProperty("raw"))throw Error("invalid template strings array");return om!==void 0?om.createHTML(t):t}const Pv=(n,t)=>{const e=n.length-1,r=[];let i,s=t===2?"<svg>":t===3?"<math>":"",o=Ya;for(let a=0;a<e;a++){const l=n[a];let c,u,f=-1,h=0;for(;h<l.length&&(o.lastIndex=h,u=o.exec(l),u!==null);)h=o.lastIndex,o===Ya?u[1]==="!--"?o=lm:u[1]!==void 0?o=um:u[2]!==void 0?(hm.test(u[2])&&(i=RegExp("</"+u[2],"g")),o=Ai):u[3]!==void 0&&(o=Ai):o===Ai?u[0]===">"?(o=i??Ya,f=-1):u[1]===void 0?f=-2:(f=o.lastIndex-u[2].length,c=u[1],o=u[3]===void 0?Ai:u[3]==='"'?Am:fm):o===Am||o===fm?o=Ai:o===lm||o===um?o=Ya:(o=Ai,i=void 0);const A=o===Ai&&n[a+1].startsWith("/>")?" ":"";s+=o===Ya?l+Mv:f>=0?(r.push(c),l.slice(0,f)+am+l.slice(f)+gr+A):l+gr+(f===-2?a:A)}return[gm(n,s+(n[e]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),r]};class Ja{constructor({strings:t,_$litType$:e},r){let i;this.parts=[];let s=0,o=0;const a=t.length-1,l=this.parts,[c,u]=Pv(t,e);if(this.el=Ja.createElement(c,r),di.currentNode=this.el.content,e===2||e===3){const f=this.el.content.firstChild;f.replaceWith(...f.childNodes)}for(;(i=di.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(const f of i.getAttributeNames())if(f.endsWith(am)){const h=u[o++],A=i.getAttribute(f).split(gr),d=/([.?@])?(.*)/.exec(h);l.push({type:1,index:s,name:d[2],strings:A,ctor:d[1]==="."?Ov:d[1]==="?"?Uv:d[1]==="@"?Gv:Lu}),i.removeAttribute(f)}else f.startsWith(gr)&&(l.push({type:6,index:s}),i.removeAttribute(f));if(hm.test(i.tagName)){const f=i.textContent.split(gr),h=f.length-1;if(h>0){i.textContent=Pu?Pu.emptyScript:"";for(let A=0;A<h;A++)i.append(f[A],Va()),di.nextNode(),l.push({type:2,index:++s});i.append(f[h],Va())}}}else if(i.nodeType===8)if(i.data===cm)l.push({type:2,index:s});else{let f=-1;for(;(f=i.data.indexOf(gr,f+1))!==-1;)l.push({type:7,index:s}),f+=gr.length-1}s++}}static createElement(t,e){const r=fi.createElement("template");return r.innerHTML=t,r}}function Us(n,t,e=n,r){var o,a;if(t===hi)return t;let i=r!==void 0?(o=e._$Co)==null?void 0:o[r]:e._$Cl;const s=_a(t)?void 0:t._$litDirective$;return(i==null?void 0:i.constructor)!==s&&((a=i==null?void 0:i._$AO)==null||a.call(i,!1),s===void 0?i=void 0:(i=new s(n),i._$AT(n,e,r)),r!==void 0?(e._$Co??(e._$Co=[]))[r]=i:e._$Cl=i),i!==void 0&&(t=Us(n,i._$AS(n,t.values),i,r)),t}class Lv{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:e},parts:r}=this._$AD,i=((t==null?void 0:t.creationScope)??fi).importNode(e,!0);di.currentNode=i;let s=di.nextNode(),o=0,a=0,l=r[0];for(;l!==void 0;){if(o===l.index){let c;l.type===2?c=new qa(s,s.nextSibling,this,t):l.type===1?c=new l.ctor(s,l.name,l.strings,this,t):l.type===6&&(c=new zv(s,this,t)),this._$AV.push(c),l=r[++a]}o!==(l==null?void 0:l.index)&&(s=di.nextNode(),o++)}return di.currentNode=fi,i}p(t){let e=0;for(const r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(t,r,e),e+=r.strings.length-2):r._$AI(t[e])),e++}}class qa{get _$AU(){var t;return((t=this._$AM)==null?void 0:t._$AU)??this._$Cv}constructor(t,e,r,i){this.type=2,this._$AH=Ne,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=r,this.options=i,this._$Cv=(i==null?void 0:i.isConnected)??!0}get parentNode(){let t=this._$AA.parentNode;const e=this._$AM;return e!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=Us(this,t,e),_a(t)?t===Ne||t==null||t===""?(this._$AH!==Ne&&this._$AR(),this._$AH=Ne):t!==this._$AH&&t!==hi&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):Nv(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==Ne&&_a(this._$AH)?this._$AA.nextSibling.data=t:this.T(fi.createTextNode(t)),this._$AH=t}$(t){var s;const{values:e,_$litType$:r}=t,i=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=Ja.createElement(gm(r.h,r.h[0]),this.options)),r);if(((s=this._$AH)==null?void 0:s._$AD)===i)this._$AH.p(e);else{const o=new Lv(i,this),a=o.u(this.options);o.p(e),this.T(a),this._$AH=o}}_$AC(t){let e=dm.get(t.strings);return e===void 0&&dm.set(t.strings,e=new Ja(t)),e}k(t){mh(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let r,i=0;for(const s of t)i===e.length?e.push(r=new qa(this.O(Va()),this.O(Va()),this,this.options)):r=e[i],r._$AI(s),i++;i<e.length&&(this._$AR(r&&r._$AB.nextSibling,i),e.length=i)}_$AR(t=this._$AA.nextSibling,e){var r;for((r=this._$AP)==null?void 0:r.call(this,!1,!0,e);t!==this._$AB;){const i=sm(t).nextSibling;sm(t).remove(),t=i}}setConnected(t){var e;this._$AM===void 0&&(this._$Cv=t,(e=this._$AP)==null||e.call(this,t))}}class Lu{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,r,i,s){this.type=1,this._$AH=Ne,this._$AN=void 0,this.element=t,this.name=e,this._$AM=i,this.options=s,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=Ne}_$AI(t,e=this,r,i){const s=this.strings;let o=!1;if(s===void 0)t=Us(this,t,e,0),o=!_a(t)||t!==this._$AH&&t!==hi,o&&(this._$AH=t);else{const a=t;let l,c;for(t=s[0],l=0;l<s.length-1;l++)c=Us(this,a[r+l],e,l),c===hi&&(c=this._$AH[l]),o||(o=!_a(c)||c!==this._$AH[l]),c===Ne?t=Ne:t!==Ne&&(t+=(c??"")+s[l+1]),this._$AH[l]=c}o&&!i&&this.j(t)}j(t){t===Ne?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}class Ov extends Lu{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===Ne?void 0:t}}class Uv extends Lu{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==Ne)}}let Gv=class extends Lu{constructor(t,e,r,i,s){super(t,e,r,i,s),this.type=5}_$AI(t,e=this){if((t=Us(this,t,e,0)??Ne)===hi)return;const r=this._$AH,i=t===Ne&&r!==Ne||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,s=t!==Ne&&(r===Ne||i);i&&this.element.removeEventListener(this.name,this,r),s&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var e;typeof this._$AH=="function"?this._$AH.call(((e=this.options)==null?void 0:e.host)??this.element,t):this._$AH.handleEvent(t)}};class zv{constructor(t,e,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){Us(this,t)}}const wh=Ha.litHtmlPolyfillSupport;wh==null||wh(Ja,qa),(Ha.litHtmlVersions??(Ha.litHtmlVersions=[])).push("3.3.2");const Ka=(n,t,e)=>{const r=(e==null?void 0:e.renderBefore)??t;let i=r._$litPart$;if(i===void 0){const s=(e==null?void 0:e.renderBefore)??null;r._$litPart$=i=new qa(t.insertBefore(Va(),s),s,void 0,e??{})}return i._$AI(n),i};/**
16
- * @license
17
- * Copyright 2017 Google LLC
18
- * SPDX-License-Identifier: BSD-3-Clause
19
- */const gi=globalThis;let Ou=class extends Os{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var e;const t=super.createRenderRoot();return(e=this.renderOptions).renderBefore??(e.renderBefore=t.firstChild),t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=Ka(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this._$Do)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this._$Do)==null||t.setConnected(!1)}render(){return hi}};Ou._$litElement$=!0,Ou.finalized=!0,(Gx=gi.litElementHydrateSupport)==null||Gx.call(gi,{LitElement:Ou});const yh=gi.litElementPolyfillSupport;yh==null||yh({LitElement:Ou}),(gi.litElementVersions??(gi.litElementVersions=[])).push("4.2.2");var pm={},Ih={},Eh=34,ja=10,bh=13;function mm(n){return new Function("d","return {"+n.map(function(t,e){return JSON.stringify(t)+": d["+e+'] || ""'}).join(",")+"}")}function Hv(n,t){var e=mm(n);return function(r,i){return t(e(r),i,n)}}function Cm(n){var t=Object.create(null),e=[];return n.forEach(function(r){for(var i in r)i in t||e.push(t[i]=i)}),e}function Bt(n,t){var e=n+"",r=e.length;return r<t?new Array(t-r+1).join(0)+e:e}function Vv(n){return n<0?"-"+Bt(-n,6):n>9999?"+"+Bt(n,6):Bt(n,4)}function _v(n){var t=n.getUTCHours(),e=n.getUTCMinutes(),r=n.getUTCSeconds(),i=n.getUTCMilliseconds();return isNaN(n)?"Invalid Date":Vv(n.getUTCFullYear())+"-"+Bt(n.getUTCMonth()+1,2)+"-"+Bt(n.getUTCDate(),2)+(i?"T"+Bt(t,2)+":"+Bt(e,2)+":"+Bt(r,2)+"."+Bt(i,3)+"Z":r?"T"+Bt(t,2)+":"+Bt(e,2)+":"+Bt(r,2)+"Z":e||t?"T"+Bt(t,2)+":"+Bt(e,2)+"Z":"")}function wm(n){var t=new RegExp('["'+n+`
20
- \r]`),e=n.charCodeAt(0);function r(f,h){var A,d,p=i(f,function(C,m){if(A)return A(C,m-1);d=C,A=h?Hv(C,h):mm(C)});return p.columns=d||[],p}function i(f,h){var A=[],d=f.length,p=0,C=0,m,y=d<=0,I=!1;f.charCodeAt(d-1)===ja&&--d,f.charCodeAt(d-1)===bh&&--d;function w(){if(y)return Ih;if(I)return I=!1,pm;var B,E=p,D;if(f.charCodeAt(E)===Eh){for(;p++<d&&f.charCodeAt(p)!==Eh||f.charCodeAt(++p)===Eh;);return(B=p)>=d?y=!0:(D=f.charCodeAt(p++))===ja?I=!0:D===bh&&(I=!0,f.charCodeAt(p)===ja&&++p),f.slice(E+1,B-1).replace(/""/g,'"')}for(;p<d;){if((D=f.charCodeAt(B=p++))===ja)I=!0;else if(D===bh)I=!0,f.charCodeAt(p)===ja&&++p;else if(D!==e)continue;return f.slice(E,B)}return y=!0,f.slice(E,d)}for(;(m=w())!==Ih;){for(var x=[];m!==pm&&m!==Ih;)x.push(m),m=w();h&&(x=h(x,C++))==null||A.push(x)}return A}function s(f,h){return f.map(function(A){return h.map(function(d){return u(A[d])}).join(n)})}function o(f,h){return h==null&&(h=Cm(f)),[h.map(u).join(n)].concat(s(f,h)).join(`
21
- `)}function a(f,h){return h==null&&(h=Cm(f)),s(f,h).join(`
1
+ (function(bt,ft){typeof exports=="object"&&typeof module<"u"?ft(exports):typeof define=="function"&&define.amd?define(["exports"],ft):(bt=typeof globalThis<"u"?globalThis:bt||self,ft(bt.genomeSpyEmbed={}))})(this,(function(bt){"use strict";function ft(n,e,t){return n.fields=e||[],n.fname=t,n}function Zy(n){return n==null?null:n.fname}function $y(n){return n==null?null:n.fields}function e2(n){return n.length===1?t2(n[0]):n2(n)}const t2=n=>function(e){return e[n]},n2=n=>{const e=n.length;return function(t){for(let r=0;r<e;++r)t=t[n[r]];return t}};function Ee(n){throw Error(n)}function r2(n){const e=[],t=n.length;let r=null,i=0,s="",o,a,l;n=n+"";function c(){e.push(s+n.substring(o,a)),s="",o=a+1}for(o=a=0;a<t;++a)if(l=n[a],l==="\\")s+=n.substring(o,a++),o=a;else if(l===r)c(),r=null,i=-1;else{if(r)continue;o===i&&l==='"'||o===i&&l==="'"?(o=a+1,r=l):l==="."&&!i?a>o?c():o=a+1:l==="["?(a>o&&c(),i=o=a+1):l==="]"&&(i||Ee("Access path missing open bracket: "+n),i>0&&c(),i=0,o=a+1)}return i&&Ee("Access path missing closing bracket: "+n),r&&Ee("Access path missing closing quote: "+n),a>o&&(a++,c()),e}function wo(n,e,t){const r=r2(n);return n=r.length===1?r[0]:n,ft((t&&t.get||e2)(r),[n],e||n)}wo("id");const Co=ft(n=>n,[],"identity");ft(()=>0,[],"zero"),ft(()=>1,[],"one"),ft(()=>!0,[],"true"),ft(()=>!1,[],"false");const i2=new Set([...Object.getOwnPropertyNames(Object.prototype).filter(n=>typeof Object.prototype[n]=="function"),"__proto__"]);var ye=Array.isArray;function ze(n){return n===Object(n)}function Et(n){return n[n.length-1]}function Ni(n){return n==null||n===""?null:+n}const NA=n=>e=>n*Math.exp(e),TA=n=>e=>Math.log(n*e),s2=n=>e=>Math.sign(e)*Math.log1p(Math.abs(e/n)),o2=n=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*n,yo=n=>e=>e<0?-Math.pow(-e,n):Math.pow(e,n);function Tc(n,e,t,r){const i=t(n[0]),s=t(Et(n)),o=(s-i)*e;return[r(i-o),r(s-o)]}function a2(n,e){return Tc(n,e,Ni,Co)}function c2(n,e){var t=Math.sign(n[0]);return Tc(n,e,TA(t),NA(t))}function l2(n,e,t){return Tc(n,e,yo(t),yo(1/t))}function Io(n,e,t,r,i){const s=r(n[0]),o=r(Et(n)),a=e!=null?r(e):(s+o)/2;return[i(a+(s-a)*t),i(a+(o-a)*t)]}function PA(n,e,t){return Io(n,e,t,Ni,Co)}function LA(n,e,t){const r=Math.sign(n[0]);return Io(n,e,t,TA(r),NA(r))}function Pc(n,e,t,r){return Io(n,e,t,yo(r),yo(1/r))}function u2(n,e,t,r){return Io(n,e,t,s2(r),o2(r))}function Lc(n){return n!=null?ye(n)?n:[n]:[]}function f2(n,e,t){let r=n[0],i=n[1],s;return i<r&&(s=i,i=r,r=s),s=i-r,s>=t-e?[e,t]:[r=Math.min(Math.max(r,e),t-s),r+s]}function At(n){return typeof n=="function"}const A2="descending";function OA(n,e,t){t=t||{},e=Lc(e)||[];const r=[],i=[],s={},o=t.comparator||h2;return Lc(n).forEach((a,l)=>{a!=null&&(r.push(e[l]===A2?-1:1),i.push(a=At(a)?a:wo(a,null,t)),($y(a)||[]).forEach(c=>s[c]=1))}),i.length===0?null:ft(o(i,r),Object.keys(s))}const UA=(n,e)=>(n<e||n==null)&&e!=null?-1:(n>e||e==null)&&n!=null?1:(e=e instanceof Date?+e:e,(n=n instanceof Date?+n:n)!==n&&e===e?-1:e!==e&&n===n?1:0),h2=(n,e)=>n.length===1?d2(n[0],e[0]):g2(n,e,n.length),d2=(n,e)=>function(t,r){return UA(n(t),n(r))*e},g2=(n,e,t)=>(e.push(0),function(r,i){let s,o=0,a=-1;for(;o===0&&++a<t;)s=n[a],o=UA(s(r),s(i));return o*e[a]});function p2(n){for(let e,t,r=1,i=arguments.length;r<i;++r){e=arguments[r];for(t in e)n[t]=e[t]}return n}function kr(n,e){return Object.hasOwn(n,e)}function Ti(n){return typeof n=="boolean"}function m2(n){return Object.prototype.toString.call(n)==="[object Date]"}function w2(n){return n&&At(n[Symbol.iterator])}function Ye(n){return typeof n=="number"}function C2(n){return Object.prototype.toString.call(n)==="[object RegExp]"}function le(n){return typeof n=="string"}function GA(n,e){const t=n[0],r=Et(n),i=+e;return i?i===1?r:t+i*(r-t):t}function Pi(n){return n&&Et(n)-n[0]||0}function Oc(n){return ye(n)?`[${n.map(e=>e===null?"null":Oc(e))}]`:ze(n)||le(n)?JSON.stringify(n).replaceAll("\u2028","\\u2028").replaceAll("\u2029","\\u2029"):n}function y2(n){return n==null||n===""?null:!n||n==="false"||n==="0"?!1:!!n}const I2=n=>Ye(n)||m2(n)?n:Date.parse(n);function b2(n,e){return e=e||I2,n==null||n===""?null:e(n)}function E2(n){return n==null||n===""?null:n+""}function bo(n){const e={},t=n.length;for(let r=0;r<t;++r)e[n[r]]=!0;return e}const Eo=globalThis,Uc=Eo.ShadowRoot&&(Eo.ShadyCSS===void 0||Eo.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,zA=Symbol(),HA=new WeakMap;let x2=class{constructor(e,t,r){if(this._$cssResult$=!0,r!==zA)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if(Uc&&e===void 0){const r=t!==void 0&&t.length===1;r&&(e=HA.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),r&&HA.set(t,e))}return e}toString(){return this.cssText}};const B2=n=>new x2(typeof n=="string"?n:n+"",void 0,zA),v2=(n,e)=>{if(Uc)n.adoptedStyleSheets=e.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const t of e){const r=document.createElement("style"),i=Eo.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=t.cssText,n.appendChild(r)}},VA=Uc?n=>n:n=>n instanceof CSSStyleSheet?(e=>{let t="";for(const r of e.cssRules)t+=r.cssText;return B2(t)})(n):n;const{is:S2,defineProperty:Q2,getOwnPropertyDescriptor:D2,getOwnPropertyNames:k2,getOwnPropertySymbols:F2,getPrototypeOf:R2}=Object,xo=globalThis,_A=xo.trustedTypes,M2=_A?_A.emptyScript:"",N2=xo.reactiveElementPolyfillSupport,Li=(n,e)=>n,Gc={toAttribute(n,e){switch(e){case Boolean:n=n?M2:null;break;case Object:case Array:n=n==null?n:JSON.stringify(n)}return n},fromAttribute(n,e){let t=n;switch(e){case Boolean:t=n!==null;break;case Number:t=n===null?null:Number(n);break;case Object:case Array:try{t=JSON.parse(n)}catch{t=null}}return t}},YA=(n,e)=>!S2(n,e),JA={attribute:!0,type:String,converter:Gc,reflect:!1,useDefault:!1,hasChanged:YA};Symbol.metadata??=Symbol("metadata"),xo.litPropertyMetadata??=new WeakMap;let Fr=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=JA){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){const r=Symbol(),i=this.getPropertyDescriptor(e,r,t);i!==void 0&&Q2(this.prototype,e,i)}}static getPropertyDescriptor(e,t,r){const{get:i,set:s}=D2(this.prototype,e)??{get(){return this[t]},set(o){this[t]=o}};return{get:i,set(o){const a=i?.call(this);s?.call(this,o),this.requestUpdate(e,a,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??JA}static _$Ei(){if(this.hasOwnProperty(Li("elementProperties")))return;const e=R2(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Li("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Li("properties"))){const t=this.properties,r=[...k2(t),...F2(t)];for(const i of r)this.createProperty(i,t[i])}const e=this[Symbol.metadata];if(e!==null){const t=litPropertyMetadata.get(e);if(t!==void 0)for(const[r,i]of t)this.elementProperties.set(r,i)}this._$Eh=new Map;for(const[t,r]of this.elementProperties){const i=this._$Eu(t,r);i!==void 0&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const i of r)t.unshift(VA(i))}else e!==void 0&&t.push(VA(e));return t}static _$Eu(e,t){const r=t.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const r of t.keys())this.hasOwnProperty(r)&&(e.set(r,this[r]),delete this[r]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return v2(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,r){this._$AK(e,r)}_$ET(e,t){const r=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,r);if(i!==void 0&&r.reflect===!0){const s=(r.converter?.toAttribute!==void 0?r.converter:Gc).toAttribute(t,r.type);this._$Em=e,s==null?this.removeAttribute(i):this.setAttribute(i,s),this._$Em=null}}_$AK(e,t){const r=this.constructor,i=r._$Eh.get(e);if(i!==void 0&&this._$Em!==i){const s=r.getPropertyOptions(i),o=typeof s.converter=="function"?{fromAttribute:s.converter}:s.converter?.fromAttribute!==void 0?s.converter:Gc;this._$Em=i;const a=o.fromAttribute(t,s.type);this[i]=a??this._$Ej?.get(i)??a,this._$Em=null}}requestUpdate(e,t,r,i=!1,s){if(e!==void 0){const o=this.constructor;if(i===!1&&(s=this[e]),r??=o.getPropertyOptions(e),!((r.hasChanged??YA)(s,t)||r.useDefault&&r.reflect&&s===this._$Ej?.get(e)&&!this.hasAttribute(o._$Eu(e,r))))return;this.C(e,t,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,t,{useDefault:r,reflect:i,wrapped:s},o){r&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,o??t??this[e]),s!==!0||o!==void 0)||(this._$AL.has(e)||(this.hasUpdated||r||(t=void 0),this._$AL.set(e,t)),i===!0&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[i,s]of this._$Ep)this[i]=s;this._$Ep=void 0}const r=this.constructor.elementProperties;if(r.size>0)for(const[i,s]of r){const{wrapped:o}=s,a=this[i];o!==!0||this._$AL.has(i)||a===void 0||this.C(i,void 0,s,a)}}let e=!1;const t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(r=>r.hostUpdate?.()),this.update(t)):this._$EM()}catch(r){throw e=!1,this._$EM(),r}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(e){}firstUpdated(e){}};Fr.elementStyles=[],Fr.shadowRootOptions={mode:"open"},Fr[Li("elementProperties")]=new Map,Fr[Li("finalized")]=new Map,N2?.({ReactiveElement:Fr}),(xo.reactiveElementVersions??=[]).push("2.1.2");const zc=globalThis,qA=n=>n,Bo=zc.trustedTypes,KA=Bo?Bo.createPolicy("lit-html",{createHTML:n=>n}):void 0,jA="$lit$",mn=`lit$${Math.random().toFixed(9).slice(2)}$`,WA="?"+mn,T2=`<${WA}>`,Yn=document,Oi=()=>Yn.createComment(""),Ui=n=>n===null||typeof n!="object"&&typeof n!="function",Hc=Array.isArray,P2=n=>Hc(n)||typeof n?.[Symbol.iterator]=="function",Vc=`[
2
+ \f\r]`,Gi=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,XA=/-->/g,ZA=/>/g,Jn=RegExp(`>|${Vc}(?:([^\\s"'>=/]+)(${Vc}*=${Vc}*(?:[^
3
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),$A=/'/g,eh=/"/g,th=/^(?:script|style|textarea|title)$/i,L2=n=>(e,...t)=>({_$litType$:n,strings:e,values:t}),ce=L2(1),qn=Symbol.for("lit-noChange"),be=Symbol.for("lit-nothing"),nh=new WeakMap,Kn=Yn.createTreeWalker(Yn,129);function rh(n,e){if(!Hc(n)||!n.hasOwnProperty("raw"))throw Error("invalid template strings array");return KA!==void 0?KA.createHTML(e):e}const O2=(n,e)=>{const t=n.length-1,r=[];let i,s=e===2?"<svg>":e===3?"<math>":"",o=Gi;for(let a=0;a<t;a++){const l=n[a];let c,u,f=-1,h=0;for(;h<l.length&&(o.lastIndex=h,u=o.exec(l),u!==null);)h=o.lastIndex,o===Gi?u[1]==="!--"?o=XA:u[1]!==void 0?o=ZA:u[2]!==void 0?(th.test(u[2])&&(i=RegExp("</"+u[2],"g")),o=Jn):u[3]!==void 0&&(o=Jn):o===Jn?u[0]===">"?(o=i??Gi,f=-1):u[1]===void 0?f=-2:(f=o.lastIndex-u[2].length,c=u[1],o=u[3]===void 0?Jn:u[3]==='"'?eh:$A):o===eh||o===$A?o=Jn:o===XA||o===ZA?o=Gi:(o=Jn,i=void 0);const A=o===Jn&&n[a+1].startsWith("/>")?" ":"";s+=o===Gi?l+T2:f>=0?(r.push(c),l.slice(0,f)+jA+l.slice(f)+mn+A):l+mn+(f===-2?a:A)}return[rh(n,s+(n[t]||"<?>")+(e===2?"</svg>":e===3?"</math>":"")),r]};class zi{constructor({strings:e,_$litType$:t},r){let i;this.parts=[];let s=0,o=0;const a=e.length-1,l=this.parts,[c,u]=O2(e,t);if(this.el=zi.createElement(c,r),Kn.currentNode=this.el.content,t===2||t===3){const f=this.el.content.firstChild;f.replaceWith(...f.childNodes)}for(;(i=Kn.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(const f of i.getAttributeNames())if(f.endsWith(jA)){const h=u[o++],A=i.getAttribute(f).split(mn),d=/([.?@])?(.*)/.exec(h);l.push({type:1,index:s,name:d[2],strings:A,ctor:d[1]==="."?G2:d[1]==="?"?z2:d[1]==="@"?H2:vo}),i.removeAttribute(f)}else f.startsWith(mn)&&(l.push({type:6,index:s}),i.removeAttribute(f));if(th.test(i.tagName)){const f=i.textContent.split(mn),h=f.length-1;if(h>0){i.textContent=Bo?Bo.emptyScript:"";for(let A=0;A<h;A++)i.append(f[A],Oi()),Kn.nextNode(),l.push({type:2,index:++s});i.append(f[h],Oi())}}}else if(i.nodeType===8)if(i.data===WA)l.push({type:2,index:s});else{let f=-1;for(;(f=i.data.indexOf(mn,f+1))!==-1;)l.push({type:7,index:s}),f+=mn.length-1}s++}}static createElement(e,t){const r=Yn.createElement("template");return r.innerHTML=e,r}}function Rr(n,e,t=n,r){if(e===qn)return e;let i=r!==void 0?t._$Co?.[r]:t._$Cl;const s=Ui(e)?void 0:e._$litDirective$;return i?.constructor!==s&&(i?._$AO?.(!1),s===void 0?i=void 0:(i=new s(n),i._$AT(n,t,r)),r!==void 0?(t._$Co??=[])[r]=i:t._$Cl=i),i!==void 0&&(e=Rr(n,i._$AS(n,e.values),i,r)),e}class U2{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){const{el:{content:t},parts:r}=this._$AD,i=(e?.creationScope??Yn).importNode(t,!0);Kn.currentNode=i;let s=Kn.nextNode(),o=0,a=0,l=r[0];for(;l!==void 0;){if(o===l.index){let c;l.type===2?c=new Hi(s,s.nextSibling,this,e):l.type===1?c=new l.ctor(s,l.name,l.strings,this,e):l.type===6&&(c=new V2(s,this,e)),this._$AV.push(c),l=r[++a]}o!==l?.index&&(s=Kn.nextNode(),o++)}return Kn.currentNode=Yn,i}p(e){let t=0;for(const r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,t),t+=r.strings.length-2):r._$AI(e[t])),t++}}class Hi{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,r,i){this.type=2,this._$AH=be,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=r,this.options=i,this._$Cv=i?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode;const t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=Rr(this,e,t),Ui(e)?e===be||e==null||e===""?(this._$AH!==be&&this._$AR(),this._$AH=be):e!==this._$AH&&e!==qn&&this._(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):P2(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==be&&Ui(this._$AH)?this._$AA.nextSibling.data=e:this.T(Yn.createTextNode(e)),this._$AH=e}$(e){const{values:t,_$litType$:r}=e,i=typeof r=="number"?this._$AC(e):(r.el===void 0&&(r.el=zi.createElement(rh(r.h,r.h[0]),this.options)),r);if(this._$AH?._$AD===i)this._$AH.p(t);else{const s=new U2(i,this),o=s.u(this.options);s.p(t),this.T(o),this._$AH=s}}_$AC(e){let t=nh.get(e.strings);return t===void 0&&nh.set(e.strings,t=new zi(e)),t}k(e){Hc(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let r,i=0;for(const s of e)i===t.length?t.push(r=new Hi(this.O(Oi()),this.O(Oi()),this,this.options)):r=t[i],r._$AI(s),i++;i<t.length&&(this._$AR(r&&r._$AB.nextSibling,i),t.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){const r=qA(e).nextSibling;qA(e).remove(),e=r}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}}class vo{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,r,i,s){this.type=1,this._$AH=be,this._$AN=void 0,this.element=e,this.name=t,this._$AM=i,this.options=s,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=be}_$AI(e,t=this,r,i){const s=this.strings;let o=!1;if(s===void 0)e=Rr(this,e,t,0),o=!Ui(e)||e!==this._$AH&&e!==qn,o&&(this._$AH=e);else{const a=e;let l,c;for(e=s[0],l=0;l<s.length-1;l++)c=Rr(this,a[r+l],t,l),c===qn&&(c=this._$AH[l]),o||=!Ui(c)||c!==this._$AH[l],c===be?e=be:e!==be&&(e+=(c??"")+s[l+1]),this._$AH[l]=c}o&&!i&&this.j(e)}j(e){e===be?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class G2 extends vo{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===be?void 0:e}}class z2 extends vo{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==be)}}let H2=class extends vo{constructor(e,t,r,i,s){super(e,t,r,i,s),this.type=5}_$AI(e,t=this){if((e=Rr(this,e,t,0)??be)===qn)return;const r=this._$AH,i=e===be&&r!==be||e.capture!==r.capture||e.once!==r.once||e.passive!==r.passive,s=e!==be&&(r===be||i);i&&this.element.removeEventListener(this.name,this,r),s&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}};class V2{constructor(e,t,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){Rr(this,e)}}const _2=zc.litHtmlPolyfillSupport;_2?.(zi,Hi),(zc.litHtmlVersions??=[]).push("3.3.2");const Vi=(n,e,t)=>{const r=t?.renderBefore??e;let i=r._$litPart$;if(i===void 0){const s=t?.renderBefore??null;r._$litPart$=i=new Hi(e.insertBefore(Oi(),s),s,void 0,t??{})}return i._$AI(n),i};const _c=globalThis;let So=class extends Fr{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Vi(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return qn}};So._$litElement$=!0,So.finalized=!0,_c.litElementHydrateSupport?.({LitElement:So});const Y2=_c.litElementPolyfillSupport;Y2?.({LitElement:So}),(_c.litElementVersions??=[]).push("4.2.2");var ih={},Yc={},Jc=34,_i=10,qc=13;function sh(n){return new Function("d","return {"+n.map(function(e,t){return JSON.stringify(e)+": d["+t+'] || ""'}).join(",")+"}")}function J2(n,e){var t=sh(n);return function(r,i){return e(t(r),i,n)}}function oh(n){var e=Object.create(null),t=[];return n.forEach(function(r){for(var i in r)i in e||t.push(e[i]=i)}),t}function it(n,e){var t=n+"",r=t.length;return r<e?new Array(e-r+1).join(0)+t:t}function q2(n){return n<0?"-"+it(-n,6):n>9999?"+"+it(n,6):it(n,4)}function K2(n){var e=n.getUTCHours(),t=n.getUTCMinutes(),r=n.getUTCSeconds(),i=n.getUTCMilliseconds();return isNaN(n)?"Invalid Date":q2(n.getUTCFullYear())+"-"+it(n.getUTCMonth()+1,2)+"-"+it(n.getUTCDate(),2)+(i?"T"+it(e,2)+":"+it(t,2)+":"+it(r,2)+"."+it(i,3)+"Z":r?"T"+it(e,2)+":"+it(t,2)+":"+it(r,2)+"Z":t||e?"T"+it(e,2)+":"+it(t,2)+"Z":"")}function ah(n){var e=new RegExp('["'+n+`
4
+ \r]`),t=n.charCodeAt(0);function r(f,h){var A,d,g=i(f,function(p,m){if(A)return A(p,m-1);d=p,A=h?J2(p,h):sh(p)});return g.columns=d||[],g}function i(f,h){var A=[],d=f.length,g=0,p=0,m,C=d<=0,y=!1;f.charCodeAt(d-1)===_i&&--d,f.charCodeAt(d-1)===qc&&--d;function w(){if(C)return Yc;if(y)return y=!1,ih;var x,b=g,S;if(f.charCodeAt(b)===Jc){for(;g++<d&&f.charCodeAt(g)!==Jc||f.charCodeAt(++g)===Jc;);return(x=g)>=d?C=!0:(S=f.charCodeAt(g++))===_i?y=!0:S===qc&&(y=!0,f.charCodeAt(g)===_i&&++g),f.slice(b+1,x-1).replace(/""/g,'"')}for(;g<d;){if((S=f.charCodeAt(x=g++))===_i)y=!0;else if(S===qc)y=!0,f.charCodeAt(g)===_i&&++g;else if(S!==t)continue;return f.slice(b,x)}return C=!0,f.slice(b,d)}for(;(m=w())!==Yc;){for(var E=[];m!==ih&&m!==Yc;)E.push(m),m=w();h&&(E=h(E,p++))==null||A.push(E)}return A}function s(f,h){return f.map(function(A){return h.map(function(d){return u(A[d])}).join(n)})}function o(f,h){return h==null&&(h=oh(f)),[h.map(u).join(n)].concat(s(f,h)).join(`
5
+ `)}function a(f,h){return h==null&&(h=oh(f)),s(f,h).join(`
22
6
  `)}function l(f){return f.map(c).join(`
23
- `)}function c(f){return f.map(u).join(n)}function u(f){return f==null?"":f instanceof Date?_v(f):t.test(f+="")?'"'+f.replace(/"/g,'""')+'"':f}return{parse:r,parseRows:i,format:o,formatBody:a,formatRows:l,formatRow:c,formatValue:u}}var Yv=wm(" "),Jv=Yv.parseRows;function qv(n){return n}function Kv(n){if(n==null)return qv;var t,e,r=n.scale[0],i=n.scale[1],s=n.translate[0],o=n.translate[1];return function(a,l){l||(t=e=0);var c=2,u=a.length,f=new Array(u);for(f[0]=(t+=a[0])*r+s,f[1]=(e+=a[1])*i+o;c<u;)f[c]=a[c],++c;return f}}function jv(n,t){for(var e,r=n.length,i=r-t;i<--r;)e=n[i],n[i++]=n[r],n[r]=e}function Wv(n,t){return typeof t=="string"&&(t=n.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(e){return ym(n,e)})}:ym(n,t)}function ym(n,t){var e=t.id,r=t.bbox,i=t.properties==null?{}:t.properties,s=Im(n,t);return e==null&&r==null?{type:"Feature",properties:i,geometry:s}:r==null?{type:"Feature",id:e,properties:i,geometry:s}:{type:"Feature",id:e,bbox:r,properties:i,geometry:s}}function Im(n,t){var e=Kv(n.transform),r=n.arcs;function i(u,f){f.length&&f.pop();for(var h=r[u<0?~u:u],A=0,d=h.length;A<d;++A)f.push(e(h[A],A));u<0&&jv(f,d)}function s(u){return e(u)}function o(u){for(var f=[],h=0,A=u.length;h<A;++h)i(u[h],f);return f.length<2&&f.push(f[0]),f}function a(u){for(var f=o(u);f.length<4;)f.push(f[0]);return f}function l(u){return u.map(a)}function c(u){var f=u.type,h;switch(f){case"GeometryCollection":return{type:f,geometries:u.geometries.map(c)};case"Point":h=s(u.coordinates);break;case"MultiPoint":h=u.coordinates.map(s);break;case"LineString":h=o(u.arcs);break;case"MultiLineString":h=u.arcs.map(o);break;case"Polygon":h=l(u.arcs);break;case"MultiPolygon":h=u.arcs.map(l);break;default:return null}return{type:f,coordinates:h}}return c(t)}function Xv(n,t){var e={},r={},i={},s=[],o=-1;t.forEach(function(c,u){var f=n.arcs[c<0?~c:c],h;f.length<3&&!f[1][0]&&!f[1][1]&&(h=t[++o],t[o]=c,t[u]=h)}),t.forEach(function(c){var u=a(c),f=u[0],h=u[1],A,d;if(A=i[f])if(delete i[A.end],A.push(c),A.end=h,d=r[h]){delete r[d.start];var p=d===A?A:A.concat(d);r[p.start=A.start]=i[p.end=d.end]=p}else r[A.start]=i[A.end]=A;else if(A=r[h])if(delete r[A.start],A.unshift(c),A.start=f,d=i[f]){delete i[d.end];var C=d===A?A:d.concat(A);r[C.start=d.start]=i[C.end=A.end]=C}else r[A.start]=i[A.end]=A;else A=[c],r[A.start=f]=i[A.end=h]=A});function a(c){var u=n.arcs[c<0?~c:c],f=u[0],h;return n.transform?(h=[0,0],u.forEach(function(A){h[0]+=A[0],h[1]+=A[1]})):h=u[u.length-1],c<0?[h,f]:[f,h]}function l(c,u){for(var f in c){var h=c[f];delete u[h.start],delete h.start,delete h.end,h.forEach(function(A){e[A<0?~A:A]=1}),s.push(h)}}return l(i,r),l(r,i),t.forEach(function(c){e[c<0?~c:c]||s.push([c])}),s}function Zv(n){return Im(n,$v.apply(this,arguments))}function $v(n,t,e){var r,i,s;if(arguments.length>1)r=e3(n,t,e);else for(i=0,r=new Array(s=n.arcs.length);i<s;++i)r[i]=i;return{type:"MultiLineString",arcs:Xv(n,r)}}function e3(n,t,e){var r=[],i=[],s;function o(f){var h=f<0?~f:f;(i[h]||(i[h]=[])).push({i:f,g:s})}function a(f){f.forEach(o)}function l(f){f.forEach(a)}function c(f){f.forEach(l)}function u(f){switch(s=f,f.type){case"GeometryCollection":f.geometries.forEach(u);break;case"LineString":a(f.arcs);break;case"MultiLineString":case"Polygon":l(f.arcs);break;case"MultiPolygon":c(f.arcs);break}}return u(t),i.forEach(e==null?function(f){r.push(f[0].i)}:function(f){e(f[0].g,f[f.length-1].g)&&r.push(f[0].i)}),r}function pi(n,t){return n==null||t==null?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function t3(n,t){return n==null||t==null?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function mi(n){let t,e,r;n.length!==2?(t=pi,e=(a,l)=>pi(n(a),l),r=(a,l)=>n(a)-l):(t=n===pi||n===t3?n:n3,e=n,r=n);function i(a,l,c=0,u=a.length){if(c<u){if(t(l,l)!==0)return u;do{const f=c+u>>>1;e(a[f],l)<0?c=f+1:u=f}while(c<u)}return c}function s(a,l,c=0,u=a.length){if(c<u){if(t(l,l)!==0)return u;do{const f=c+u>>>1;e(a[f],l)<=0?c=f+1:u=f}while(c<u)}return c}function o(a,l,c=0,u=a.length){const f=i(a,l,c,u-1);return f>c&&r(a[f-1],l)>-r(a[f],l)?f-1:f}return{left:i,center:o,right:s}}function n3(){return 0}function Em(n){return n===null?NaN:+n}function*r3(n,t){if(t===void 0)for(let e of n)e!=null&&(e=+e)>=e&&(yield e);else{let e=-1;for(let r of n)(r=t(r,++e,n))!=null&&(r=+r)>=r&&(yield r)}}const bm=mi(pi),pr=bm.right;bm.left,mi(Em).center;function i3(n,t){let e=0;if(t===void 0)for(let r of n)r!=null&&(r=+r)>=r&&++e;else{let r=-1;for(let i of n)(i=t(i,++r,n))!=null&&(i=+i)>=i&&++e}return e}function s3(n,t){let e=0,r,i=0,s=0;if(t===void 0)for(let o of n)o!=null&&(o=+o)>=o&&(r=o-i,i+=r/++e,s+=r*(o-i));else{let o=-1;for(let a of n)(a=t(a,++o,n))!=null&&(a=+a)>=a&&(r=a-i,i+=r/++e,s+=r*(a-i))}if(e>1)return s/(e-1)}function o3(n,t){let e,r;for(const i of n)i!=null&&(e===void 0?i>=i&&(e=r=i):(e>i&&(e=i),r<i&&(r=i)));return[e,r]}class Tn extends Map{constructor(t,e=l3){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),t!=null)for(const[r,i]of t)this.set(r,i)}get(t){return super.get(xm(this,t))}has(t){return super.has(xm(this,t))}set(t,e){return super.set(a3(this,t),e)}delete(t){return super.delete(c3(this,t))}}function xm({_intern:n,_key:t},e){const r=t(e);return n.has(r)?n.get(r):e}function a3({_intern:n,_key:t},e){const r=t(e);return n.has(r)?n.get(r):(n.set(r,e),e)}function c3({_intern:n,_key:t},e){const r=t(e);return n.has(r)&&(e=n.get(r),n.delete(r)),e}function l3(n){return n!==null&&typeof n=="object"?n.valueOf():n}function xh(n){return n}function Uu(n,...t){return Bm(n,xh,xh,t)}function u3(n,...t){return Bm(n,Array.from,xh,t)}function Bm(n,t,e,r){return(function i(s,o){if(o>=r.length)return e(s);const a=new Tn,l=r[o++];let c=-1;for(const u of s){const f=l(u,++c,s),h=a.get(f);h?h.push(u):a.set(f,[u])}for(const[u,f]of a)a.set(u,i(f,o));return t(a)})(n,0)}function f3(n=pi){if(n===pi)return vm;if(typeof n!="function")throw new TypeError("compare is not a function");return(t,e)=>{const r=n(t,e);return r||r===0?r:(n(e,e)===0)-(n(t,t)===0)}}function vm(n,t){return(n==null||!(n>=n))-(t==null||!(t>=t))||(n<t?-1:n>t?1:0)}const A3=Math.sqrt(50),h3=Math.sqrt(10),d3=Math.sqrt(2);function Gu(n,t,e){const r=(t-n)/Math.max(0,e),i=Math.floor(Math.log10(r)),s=r/Math.pow(10,i),o=s>=A3?10:s>=h3?5:s>=d3?2:1;let a,l,c;return i<0?(c=Math.pow(10,-i)/o,a=Math.round(n*c),l=Math.round(t*c),a/c<n&&++a,l/c>t&&--l,c=-c):(c=Math.pow(10,i)*o,a=Math.round(n/c),l=Math.round(t/c),a*c<n&&++a,l*c>t&&--l),l<a&&.5<=e&&e<2?Gu(n,t,e*2):[a,l,c]}function zu(n,t,e){if(t=+t,n=+n,e=+e,!(e>0))return[];if(n===t)return[n];const r=t<n,[i,s,o]=r?Gu(t,n,e):Gu(n,t,e);if(!(s>=i))return[];const a=s-i+1,l=new Array(a);if(r)if(o<0)for(let c=0;c<a;++c)l[c]=(s-c)/-o;else for(let c=0;c<a;++c)l[c]=(s-c)*o;else if(o<0)for(let c=0;c<a;++c)l[c]=(i+c)/-o;else for(let c=0;c<a;++c)l[c]=(i+c)*o;return l}function Bh(n,t,e){return t=+t,n=+n,e=+e,Gu(n,t,e)[2]}function Ci(n,t,e){t=+t,n=+n,e=+e;const r=t<n,i=r?Bh(t,n,e):Bh(n,t,e);return(r?-1:1)*(i<0?1/-i:i)}function vh(n,t){let e;if(t===void 0)for(const r of n)r!=null&&(e<r||e===void 0&&r>=r)&&(e=r);else{let r=-1;for(let i of n)(i=t(i,++r,n))!=null&&(e<i||e===void 0&&i>=i)&&(e=i)}return e}function Sh(n,t){let e;if(t===void 0)for(const r of n)r!=null&&(e>r||e===void 0&&r>=r)&&(e=r);else{let r=-1;for(let i of n)(i=t(i,++r,n))!=null&&(e>i||e===void 0&&i>=i)&&(e=i)}return e}function Sm(n,t,e=0,r=1/0,i){if(t=Math.floor(t),e=Math.floor(Math.max(0,e)),r=Math.floor(Math.min(n.length-1,r)),!(e<=t&&t<=r))return n;for(i=i===void 0?vm:f3(i);r>e;){if(r-e>600){const l=r-e+1,c=t-e+1,u=Math.log(l),f=.5*Math.exp(2*u/3),h=.5*Math.sqrt(u*f*(l-f)/l)*(c-l/2<0?-1:1),A=Math.max(e,Math.floor(t-c*f/l+h)),d=Math.min(r,Math.floor(t+(l-c)*f/l+h));Sm(n,t,A,d,i)}const s=n[t];let o=e,a=r;for(Wa(n,e,t),i(n[r],s)>0&&Wa(n,e,r);o<a;){for(Wa(n,o,a),++o,--a;i(n[o],s)<0;)++o;for(;i(n[a],s)>0;)--a}i(n[e],s)===0?Wa(n,e,a):(++a,Wa(n,a,r)),a<=t&&(e=a+1),t<=a&&(r=a-1)}return n}function Wa(n,t,e){const r=n[t];n[t]=n[e],n[e]=r}function g3(n,t,e){if(n=Float64Array.from(r3(n,e)),!(!(r=n.length)||isNaN(t=+t))){if(t<=0||r<2)return Sh(n);if(t>=1)return vh(n);var r,i=(r-1)*t,s=Math.floor(i),o=vh(Sm(n,s).subarray(0,s+1)),a=Sh(n.subarray(s+1));return o+(a-o)*(i-s)}}function Qm(n,t,e=Em){if(!(!(r=n.length)||isNaN(t=+t))){if(t<=0||r<2)return+e(n[0],0,n);if(t>=1)return+e(n[r-1],r-1,n);var r,i=(r-1)*t,s=Math.floor(i),o=+e(n[s],s,n),a=+e(n[s+1],s+1,n);return o+(a-o)*(i-s)}}function p3(n,t){let e=0,r=0;if(t===void 0)for(let i of n)i!=null&&(i=+i)>=i&&(++e,r+=i);else{let i=-1;for(let s of n)(s=t(s,++i,n))!=null&&(s=+s)>=s&&(++e,r+=s)}if(e)return r/e}function m3(n,t){return g3(n,.5,t)}function Xa(n,t,e){n=+n,t=+t,e=(i=arguments.length)<2?(t=n,n=0,1):i<3?1:+e;for(var r=-1,i=Math.max(0,Math.ceil((t-n)/e))|0,s=new Array(i);++r<i;)s[r]=n+r*e;return s}function Za(n,t){let e=0;if(t===void 0)for(let r of n)(r=+r)&&(e+=r);else{let r=-1;for(let i of n)(i=+t(i,++r,n))&&(e+=i)}return e}function C3(n){return Math.abs(n=Math.round(n))>=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function Hu(n,t){if(!isFinite(n)||n===0)return null;var e=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"),r=n.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+n.slice(e+1)]}function Gs(n){return n=Hu(Math.abs(n)),n?n[1]:NaN}function w3(n,t){return function(e,r){for(var i=e.length,s=[],o=0,a=n[0],l=0;i>0&&a>0&&(l+a+1>r&&(a=Math.max(1,r-l)),s.push(e.substring(i-=a,i+a)),!((l+=a+1)>r));)a=n[o=(o+1)%n.length];return s.reverse().join(t)}}function y3(n){return function(t){return t.replace(/[0-9]/g,function(e){return n[+e]})}}var I3=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function zs(n){if(!(t=I3.exec(n)))throw new Error("invalid format: "+n);var t;return new Qh({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}zs.prototype=Qh.prototype;function Qh(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}Qh.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 E3(n){e:for(var t=n.length,e=1,r=-1,i;e<t;++e)switch(n[e]){case".":r=i=e;break;case"0":r===0&&(r=e),i=e;break;default:if(!+n[e])break e;r>0&&(r=0);break}return r>0?n.slice(0,r)+n.slice(i+1):n}var Vu;function b3(n,t){var e=Hu(n,t);if(!e)return Vu=void 0,n.toPrecision(t);var r=e[0],i=e[1],s=i-(Vu=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return s===o?r:s>o?r+new Array(s-o+1).join("0"):s>0?r.slice(0,s)+"."+r.slice(s):"0."+new Array(1-s).join("0")+Hu(n,Math.max(0,t+s-1))[0]}function Dm(n,t){var e=Hu(n,t);if(!e)return n+"";var r=e[0],i=e[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 km={"%":(n,t)=>(n*100).toFixed(t),b:n=>Math.round(n).toString(2),c:n=>n+"",d:C3,e:(n,t)=>n.toExponential(t),f:(n,t)=>n.toFixed(t),g:(n,t)=>n.toPrecision(t),o:n=>Math.round(n).toString(8),p:(n,t)=>Dm(n*100,t),r:Dm,s:b3,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function Fm(n){return n}var Rm=Array.prototype.map,Mm=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function x3(n){var t=n.grouping===void 0||n.thousands===void 0?Fm:w3(Rm.call(n.grouping,Number),n.thousands+""),e=n.currency===void 0?"":n.currency[0]+"",r=n.currency===void 0?"":n.currency[1]+"",i=n.decimal===void 0?".":n.decimal+"",s=n.numerals===void 0?Fm:y3(Rm.call(n.numerals,String)),o=n.percent===void 0?"%":n.percent+"",a=n.minus===void 0?"−":n.minus+"",l=n.nan===void 0?"NaN":n.nan+"";function c(f,h){f=zs(f);var A=f.fill,d=f.align,p=f.sign,C=f.symbol,m=f.zero,y=f.width,I=f.comma,w=f.precision,x=f.trim,B=f.type;B==="n"?(I=!0,B="g"):km[B]||(w===void 0&&(w=12),x=!0,B="g"),(m||A==="0"&&d==="=")&&(m=!0,A="0",d="=");var E=(h&&h.prefix!==void 0?h.prefix:"")+(C==="$"?e:C==="#"&&/[boxX]/.test(B)?"0"+B.toLowerCase():""),D=(C==="$"?r:/[%p]/.test(B)?o:"")+(h&&h.suffix!==void 0?h.suffix:""),R=km[B],k=/[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 P(T){var O=E,z=D,J,V,q;if(B==="c")z=R(T)+z,T="";else{T=+T;var oe=T<0||1/T<0;if(T=isNaN(T)?l:R(Math.abs(T),w),x&&(T=E3(T)),oe&&+T==0&&p!=="+"&&(oe=!1),O=(oe?p==="("?p:a:p==="-"||p==="("?"":p)+O,z=(B==="s"&&!isNaN(T)&&Vu!==void 0?Mm[8+Vu/3]:"")+z+(oe&&p==="("?")":""),k){for(J=-1,V=T.length;++J<V;)if(q=T.charCodeAt(J),48>q||q>57){z=(q===46?i+T.slice(J+1):T.slice(J))+z,T=T.slice(0,J);break}}}I&&!m&&(T=t(T,1/0));var se=O.length+T.length+z.length,Ae=se<y?new Array(y-se+1).join(A):"";switch(I&&m&&(T=t(Ae+T,Ae.length?y-z.length:1/0),Ae=""),d){case"<":T=O+T+z+Ae;break;case"=":T=O+Ae+T+z;break;case"^":T=Ae.slice(0,se=Ae.length>>1)+O+T+z+Ae.slice(se);break;default:T=Ae+O+T+z;break}return s(T)}return P.toString=function(){return f+""},P}function u(f,h){var A=Math.max(-8,Math.min(8,Math.floor(Gs(h)/3)))*3,d=Math.pow(10,-A),p=c((f=zs(f),f.type="f",f),{suffix:Mm[8+A/3]});return function(C){return p(d*C)}}return{format:c,formatPrefix:u}}var _u,nt,Nm;B3({thousands:",",grouping:[3],currency:["$",""]});function B3(n){return _u=x3(n),nt=_u.format,Nm=_u.formatPrefix,_u}function v3(n){return Math.max(0,-Gs(Math.abs(n)))}function S3(n,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Gs(t)/3)))*3-Gs(Math.abs(n)))}function Q3(n,t){return n=Math.abs(n),t=Math.abs(t)-n,Math.max(0,Gs(t)-Gs(n))+1}const Dh=new Date,kh=new Date;function Ge(n,t,e,r){function i(s){return n(s=arguments.length===0?new Date:new Date(+s)),s}return i.floor=s=>(n(s=new Date(+s)),s),i.ceil=s=>(n(s=new Date(s-1)),t(s,1),n(s),s),i.round=s=>{const o=i(s),a=i.ceil(s);return s-o<a-s?o:a},i.offset=(s,o)=>(t(s=new Date(+s),o==null?1:Math.floor(o)),s),i.range=(s,o,a)=>{const l=[];if(s=i.ceil(s),a=a==null?1:Math.floor(a),!(s<o)||!(a>0))return l;let c;do l.push(c=new Date(+s)),t(s,a),n(s);while(c<s&&s<o);return l},i.filter=s=>Ge(o=>{if(o>=o)for(;n(o),!s(o);)o.setTime(o-1)},(o,a)=>{if(o>=o)if(a<0)for(;++a<=0;)for(;t(o,-1),!s(o););else for(;--a>=0;)for(;t(o,1),!s(o););}),e&&(i.count=(s,o)=>(Dh.setTime(+s),kh.setTime(+o),n(Dh),n(kh),Math.floor(e(Dh,kh))),i.every=s=>(s=Math.floor(s),!isFinite(s)||!(s>0)?null:s>1?i.filter(r?o=>r(o)%s===0:o=>i.count(0,o)%s===0):i)),i}const Hs=Ge(()=>{},(n,t)=>{n.setTime(+n+t)},(n,t)=>t-n);Hs.every=n=>(n=Math.floor(n),!isFinite(n)||!(n>0)?null:n>1?Ge(t=>{t.setTime(Math.floor(t/n)*n)},(t,e)=>{t.setTime(+t+e*n)},(t,e)=>(e-t)/n):Hs),Hs.range;const Pn=1e3,Ut=Pn*60,Ln=Ut*60,On=Ln*24,Fh=On*7,Tm=On*30,Rh=On*365,Un=Ge(n=>{n.setTime(n-n.getMilliseconds())},(n,t)=>{n.setTime(+n+t*Pn)},(n,t)=>(t-n)/Pn,n=>n.getUTCSeconds());Un.range;const Yu=Ge(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*Pn)},(n,t)=>{n.setTime(+n+t*Ut)},(n,t)=>(t-n)/Ut,n=>n.getMinutes());Yu.range;const Ju=Ge(n=>{n.setUTCSeconds(0,0)},(n,t)=>{n.setTime(+n+t*Ut)},(n,t)=>(t-n)/Ut,n=>n.getUTCMinutes());Ju.range;const qu=Ge(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*Pn-n.getMinutes()*Ut)},(n,t)=>{n.setTime(+n+t*Ln)},(n,t)=>(t-n)/Ln,n=>n.getHours());qu.range;const Ku=Ge(n=>{n.setUTCMinutes(0,0,0)},(n,t)=>{n.setTime(+n+t*Ln)},(n,t)=>(t-n)/Ln,n=>n.getUTCHours());Ku.range;const mr=Ge(n=>n.setHours(0,0,0,0),(n,t)=>n.setDate(n.getDate()+t),(n,t)=>(t-n-(t.getTimezoneOffset()-n.getTimezoneOffset())*Ut)/On,n=>n.getDate()-1);mr.range;const wi=Ge(n=>{n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCDate(n.getUTCDate()+t)},(n,t)=>(t-n)/On,n=>n.getUTCDate()-1);wi.range;const Pm=Ge(n=>{n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCDate(n.getUTCDate()+t)},(n,t)=>(t-n)/On,n=>Math.floor(n/On));Pm.range;function yi(n){return Ge(t=>{t.setDate(t.getDate()-(t.getDay()+7-n)%7),t.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+e*7)},(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ut)/Fh)}const $a=yi(0),ju=yi(1),D3=yi(2),k3=yi(3),Vs=yi(4),F3=yi(5),R3=yi(6);$a.range,ju.range,D3.range,k3.range,Vs.range,F3.range,R3.range;function Ii(n){return Ge(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-n)%7),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e*7)},(t,e)=>(e-t)/Fh)}const ec=Ii(0),Wu=Ii(1),M3=Ii(2),N3=Ii(3),_s=Ii(4),T3=Ii(5),P3=Ii(6);ec.range,Wu.range,M3.range,N3.range,_s.range,T3.range,P3.range;const tc=Ge(n=>{n.setDate(1),n.setHours(0,0,0,0)},(n,t)=>{n.setMonth(n.getMonth()+t)},(n,t)=>t.getMonth()-n.getMonth()+(t.getFullYear()-n.getFullYear())*12,n=>n.getMonth());tc.range;const nc=Ge(n=>{n.setUTCDate(1),n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCMonth(n.getUTCMonth()+t)},(n,t)=>t.getUTCMonth()-n.getUTCMonth()+(t.getUTCFullYear()-n.getUTCFullYear())*12,n=>n.getUTCMonth());nc.range;const dn=Ge(n=>{n.setMonth(0,1),n.setHours(0,0,0,0)},(n,t)=>{n.setFullYear(n.getFullYear()+t)},(n,t)=>t.getFullYear()-n.getFullYear(),n=>n.getFullYear());dn.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:Ge(t=>{t.setFullYear(Math.floor(t.getFullYear()/n)*n),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e*n)}),dn.range;const gn=Ge(n=>{n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCFullYear(n.getUTCFullYear()+t)},(n,t)=>t.getUTCFullYear()-n.getUTCFullYear(),n=>n.getUTCFullYear());gn.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:Ge(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/n)*n),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e*n)}),gn.range;function Lm(n,t,e,r,i,s){const o=[[Un,1,Pn],[Un,5,5*Pn],[Un,15,15*Pn],[Un,30,30*Pn],[s,1,Ut],[s,5,5*Ut],[s,15,15*Ut],[s,30,30*Ut],[i,1,Ln],[i,3,3*Ln],[i,6,6*Ln],[i,12,12*Ln],[r,1,On],[r,2,2*On],[e,1,Fh],[t,1,Tm],[t,3,3*Tm],[n,1,Rh]];function a(c,u,f){const h=u<c;h&&([c,u]=[u,c]);const A=f&&typeof f.range=="function"?f:l(c,u,f),d=A?A.range(c,+u+1):[];return h?d.reverse():d}function l(c,u,f){const h=Math.abs(u-c)/f,A=mi(([,,C])=>C).right(o,h);if(A===o.length)return n.every(Ci(c/Rh,u/Rh,f));if(A===0)return Hs.every(Math.max(Ci(c,u,f),1));const[d,p]=o[h/o[A-1][2]<o[A][2]/h?A-1:A];return d.every(p)}return[a,l]}const[L3,O3]=Lm(gn,nc,ec,Pm,Ku,Ju),[U3,G3]=Lm(dn,tc,$a,mr,qu,Yu),rc="year",ic="quarter",sc="month",oc="week",ac="date",Xu="day",Mh="dayofyear",cc="hours",lc="minutes",uc="seconds",Zu="milliseconds";[rc,ic,sc,oc,ac,Xu,Mh,cc,lc,uc,Zu].reduce((n,t,e)=>(n[t]=1+e,n),{});const z3={[rc]:dn,[ic]:tc.every(3),[sc]:tc,[oc]:$a,[ac]:mr,[Xu]:mr,[Mh]:mr,[cc]:qu,[lc]:Yu,[uc]:Un,[Zu]:Hs},H3={[rc]:gn,[ic]:nc.every(3),[sc]:nc,[oc]:ec,[ac]:wi,[Xu]:wi,[Mh]:wi,[cc]:Ku,[lc]:Ju,[uc]:Un,[Zu]:Hs};function V3(n){return z3[n]}function _3(n){return H3[n]}function Nh(n){if(0<=n.y&&n.y<100){var t=new Date(-1,n.m,n.d,n.H,n.M,n.S,n.L);return t.setFullYear(n.y),t}return new Date(n.y,n.m,n.d,n.H,n.M,n.S,n.L)}function Th(n){if(0<=n.y&&n.y<100){var t=new Date(Date.UTC(-1,n.m,n.d,n.H,n.M,n.S,n.L));return t.setUTCFullYear(n.y),t}return new Date(Date.UTC(n.y,n.m,n.d,n.H,n.M,n.S,n.L))}function fc(n,t,e){return{y:n,m:t,d:e,H:0,M:0,S:0,L:0}}function Om(n){var t=n.dateTime,e=n.date,r=n.time,i=n.periods,s=n.days,o=n.shortDays,a=n.months,l=n.shortMonths,c=Ac(i),u=hc(i),f=Ac(s),h=hc(s),A=Ac(o),d=hc(o),p=Ac(a),C=hc(a),m=Ac(l),y=hc(l),I={a:q,A:oe,b:se,B:Ae,c:null,d:_m,e:_m,f:hS,g:bS,G:BS,H:uS,I:fS,j:AS,L:Ym,m:dS,M:gS,p:ht,q:Lt,Q:Xm,s:Zm,S:pS,u:mS,U:CS,V:wS,w:yS,W:IS,x:null,X:null,y:ES,Y:xS,Z:vS,"%":Wm},w={a:Mn,A:Ms,b:Iu,B:Ta,c:null,d:qm,e:qm,f:kS,g:GS,G:HS,H:SS,I:QS,j:DS,L:Km,m:FS,M:RS,p:lr,q:Ns,Q:Xm,s:Zm,S:MS,u:NS,U:TS,V:PS,w:LS,W:OS,x:null,X:null,y:US,Y:zS,Z:VS,"%":Wm},x={a:k,A:P,b:T,B:O,c:z,d:Hm,e:Hm,f:oS,g:zm,G:Gm,H:Vm,I:Vm,j:nS,L:sS,m:tS,M:rS,p:R,q:eS,Q:cS,s:lS,S:iS,u:j3,U:W3,V:X3,w:K3,W:Z3,x:J,X:V,y:zm,Y:Gm,Z:$3,"%":aS};I.x=B(e,I),I.X=B(r,I),I.c=B(t,I),w.x=B(e,w),w.X=B(r,w),w.c=B(t,w);function B(_,ee){return function(ae){var L=[],dt=-1,ge=0,bt=_.length,gt,ur,Eu;for(ae instanceof Date||(ae=new Date(+ae));++dt<bt;)_.charCodeAt(dt)===37&&(L.push(_.slice(ge,dt)),(ur=Um[gt=_.charAt(++dt)])!=null?gt=_.charAt(++dt):ur=gt==="e"?" ":"0",(Eu=ee[gt])&&(gt=Eu(ae,ur)),L.push(gt),ge=dt+1);return L.push(_.slice(ge,dt)),L.join("")}}function E(_,ee){return function(ae){var L=fc(1900,void 0,1),dt=D(L,_,ae+="",0),ge,bt;if(dt!=ae.length)return null;if("Q"in L)return new Date(L.Q);if("s"in L)return new Date(L.s*1e3+("L"in L?L.L:0));if(ee&&!("Z"in L)&&(L.Z=0),"p"in L&&(L.H=L.H%12+L.p*12),L.m===void 0&&(L.m="q"in L?L.q:0),"V"in L){if(L.V<1||L.V>53)return null;"w"in L||(L.w=1),"Z"in L?(ge=Th(fc(L.y,0,1)),bt=ge.getUTCDay(),ge=bt>4||bt===0?Wu.ceil(ge):Wu(ge),ge=wi.offset(ge,(L.V-1)*7),L.y=ge.getUTCFullYear(),L.m=ge.getUTCMonth(),L.d=ge.getUTCDate()+(L.w+6)%7):(ge=Nh(fc(L.y,0,1)),bt=ge.getDay(),ge=bt>4||bt===0?ju.ceil(ge):ju(ge),ge=mr.offset(ge,(L.V-1)*7),L.y=ge.getFullYear(),L.m=ge.getMonth(),L.d=ge.getDate()+(L.w+6)%7)}else("W"in L||"U"in L)&&("w"in L||(L.w="u"in L?L.u%7:"W"in L?1:0),bt="Z"in L?Th(fc(L.y,0,1)).getUTCDay():Nh(fc(L.y,0,1)).getDay(),L.m=0,L.d="W"in L?(L.w+6)%7+L.W*7-(bt+5)%7:L.w+L.U*7-(bt+6)%7);return"Z"in L?(L.H+=L.Z/100|0,L.M+=L.Z%100,Th(L)):Nh(L)}}function D(_,ee,ae,L){for(var dt=0,ge=ee.length,bt=ae.length,gt,ur;dt<ge;){if(L>=bt)return-1;if(gt=ee.charCodeAt(dt++),gt===37){if(gt=ee.charAt(dt++),ur=x[gt in Um?ee.charAt(dt++):gt],!ur||(L=ur(_,ae,L))<0)return-1}else if(gt!=ae.charCodeAt(L++))return-1}return L}function R(_,ee,ae){var L=c.exec(ee.slice(ae));return L?(_.p=u.get(L[0].toLowerCase()),ae+L[0].length):-1}function k(_,ee,ae){var L=A.exec(ee.slice(ae));return L?(_.w=d.get(L[0].toLowerCase()),ae+L[0].length):-1}function P(_,ee,ae){var L=f.exec(ee.slice(ae));return L?(_.w=h.get(L[0].toLowerCase()),ae+L[0].length):-1}function T(_,ee,ae){var L=m.exec(ee.slice(ae));return L?(_.m=y.get(L[0].toLowerCase()),ae+L[0].length):-1}function O(_,ee,ae){var L=p.exec(ee.slice(ae));return L?(_.m=C.get(L[0].toLowerCase()),ae+L[0].length):-1}function z(_,ee,ae){return D(_,t,ee,ae)}function J(_,ee,ae){return D(_,e,ee,ae)}function V(_,ee,ae){return D(_,r,ee,ae)}function q(_){return o[_.getDay()]}function oe(_){return s[_.getDay()]}function se(_){return l[_.getMonth()]}function Ae(_){return a[_.getMonth()]}function ht(_){return i[+(_.getHours()>=12)]}function Lt(_){return 1+~~(_.getMonth()/3)}function Mn(_){return o[_.getUTCDay()]}function Ms(_){return s[_.getUTCDay()]}function Iu(_){return l[_.getUTCMonth()]}function Ta(_){return a[_.getUTCMonth()]}function lr(_){return i[+(_.getUTCHours()>=12)]}function Ns(_){return 1+~~(_.getUTCMonth()/3)}return{format:function(_){var ee=B(_+="",I);return ee.toString=function(){return _},ee},parse:function(_){var ee=E(_+="",!1);return ee.toString=function(){return _},ee},utcFormat:function(_){var ee=B(_+="",w);return ee.toString=function(){return _},ee},utcParse:function(_){var ee=E(_+="",!0);return ee.toString=function(){return _},ee}}}var Um={"-":"",_:" ",0:"0"},qe=/^\s*\d+/,Y3=/^%/,J3=/[\\^$*+?|[\]().{}]/g;function le(n,t,e){var r=n<0?"-":"",i=(r?-n:n)+"",s=i.length;return r+(s<e?new Array(e-s+1).join(t)+i:i)}function q3(n){return n.replace(J3,"\\$&")}function Ac(n){return new RegExp("^(?:"+n.map(q3).join("|")+")","i")}function hc(n){return new Map(n.map((t,e)=>[t.toLowerCase(),e]))}function K3(n,t,e){var r=qe.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function j3(n,t,e){var r=qe.exec(t.slice(e,e+1));return r?(n.u=+r[0],e+r[0].length):-1}function W3(n,t,e){var r=qe.exec(t.slice(e,e+2));return r?(n.U=+r[0],e+r[0].length):-1}function X3(n,t,e){var r=qe.exec(t.slice(e,e+2));return r?(n.V=+r[0],e+r[0].length):-1}function Z3(n,t,e){var r=qe.exec(t.slice(e,e+2));return r?(n.W=+r[0],e+r[0].length):-1}function Gm(n,t,e){var r=qe.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function zm(n,t,e){var r=qe.exec(t.slice(e,e+2));return r?(n.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function $3(n,t,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(e,e+6));return r?(n.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function eS(n,t,e){var r=qe.exec(t.slice(e,e+1));return r?(n.q=r[0]*3-3,e+r[0].length):-1}function tS(n,t,e){var r=qe.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Hm(n,t,e){var r=qe.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function nS(n,t,e){var r=qe.exec(t.slice(e,e+3));return r?(n.m=0,n.d=+r[0],e+r[0].length):-1}function Vm(n,t,e){var r=qe.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function rS(n,t,e){var r=qe.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function iS(n,t,e){var r=qe.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function sS(n,t,e){var r=qe.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function oS(n,t,e){var r=qe.exec(t.slice(e,e+6));return r?(n.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function aS(n,t,e){var r=Y3.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function cS(n,t,e){var r=qe.exec(t.slice(e));return r?(n.Q=+r[0],e+r[0].length):-1}function lS(n,t,e){var r=qe.exec(t.slice(e));return r?(n.s=+r[0],e+r[0].length):-1}function _m(n,t){return le(n.getDate(),t,2)}function uS(n,t){return le(n.getHours(),t,2)}function fS(n,t){return le(n.getHours()%12||12,t,2)}function AS(n,t){return le(1+mr.count(dn(n),n),t,3)}function Ym(n,t){return le(n.getMilliseconds(),t,3)}function hS(n,t){return Ym(n,t)+"000"}function dS(n,t){return le(n.getMonth()+1,t,2)}function gS(n,t){return le(n.getMinutes(),t,2)}function pS(n,t){return le(n.getSeconds(),t,2)}function mS(n){var t=n.getDay();return t===0?7:t}function CS(n,t){return le($a.count(dn(n)-1,n),t,2)}function Jm(n){var t=n.getDay();return t>=4||t===0?Vs(n):Vs.ceil(n)}function wS(n,t){return n=Jm(n),le(Vs.count(dn(n),n)+(dn(n).getDay()===4),t,2)}function yS(n){return n.getDay()}function IS(n,t){return le(ju.count(dn(n)-1,n),t,2)}function ES(n,t){return le(n.getFullYear()%100,t,2)}function bS(n,t){return n=Jm(n),le(n.getFullYear()%100,t,2)}function xS(n,t){return le(n.getFullYear()%1e4,t,4)}function BS(n,t){var e=n.getDay();return n=e>=4||e===0?Vs(n):Vs.ceil(n),le(n.getFullYear()%1e4,t,4)}function vS(n){var t=n.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+le(t/60|0,"0",2)+le(t%60,"0",2)}function qm(n,t){return le(n.getUTCDate(),t,2)}function SS(n,t){return le(n.getUTCHours(),t,2)}function QS(n,t){return le(n.getUTCHours()%12||12,t,2)}function DS(n,t){return le(1+wi.count(gn(n),n),t,3)}function Km(n,t){return le(n.getUTCMilliseconds(),t,3)}function kS(n,t){return Km(n,t)+"000"}function FS(n,t){return le(n.getUTCMonth()+1,t,2)}function RS(n,t){return le(n.getUTCMinutes(),t,2)}function MS(n,t){return le(n.getUTCSeconds(),t,2)}function NS(n){var t=n.getUTCDay();return t===0?7:t}function TS(n,t){return le(ec.count(gn(n)-1,n),t,2)}function jm(n){var t=n.getUTCDay();return t>=4||t===0?_s(n):_s.ceil(n)}function PS(n,t){return n=jm(n),le(_s.count(gn(n),n)+(gn(n).getUTCDay()===4),t,2)}function LS(n){return n.getUTCDay()}function OS(n,t){return le(Wu.count(gn(n)-1,n),t,2)}function US(n,t){return le(n.getUTCFullYear()%100,t,2)}function GS(n,t){return n=jm(n),le(n.getUTCFullYear()%100,t,2)}function zS(n,t){return le(n.getUTCFullYear()%1e4,t,4)}function HS(n,t){var e=n.getUTCDay();return n=e>=4||e===0?_s(n):_s.ceil(n),le(n.getUTCFullYear()%1e4,t,4)}function VS(){return"+0000"}function Wm(){return"%"}function Xm(n){return+n}function Zm(n){return Math.floor(+n/1e3)}var Ys,Ph,$m,Lh,e1;_S({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 _S(n){return Ys=Om(n),Ph=Ys.format,$m=Ys.parse,Lh=Ys.utcFormat,e1=Ys.utcParse,Ys}function $u(n){const t={};return e=>t[e]||(t[e]=n(e))}function t1(n,t,e){e=e||{},tt(e)||Le(`Invalid time multi-format specifier: ${e}`);const r=t(uc),i=t(lc),s=t(cc),o=t(ac),a=t(oc),l=t(sc),c=t(ic),u=t(rc),f=n(e[Zu]||".%L"),h=n(e[uc]||":%S"),A=n(e[lc]||"%I:%M"),d=n(e[cc]||"%I %p"),p=n(e[ac]||e[Xu]||"%a %d"),C=n(e[oc]||"%b %d"),m=n(e[sc]||"%B"),y=n(e[ic]||"%B"),I=n(e[rc]||"%Y");return w=>(r(w)<w?f:i(w)<w?h:s(w)<w?A:o(w)<w?d:l(w)<w?a(w)<w?p:C:u(w)<w?c(w)<w?m:y:I)(w)}function n1(n){const t=$u(n.format),e=$u(n.utcFormat);return{timeFormat:r=>we(r)?t(r):t1(t,V3,r),utcFormat:r=>we(r)?e(r):t1(e,_3,r),timeParse:$u(n.parse),utcParse:$u(n.utcParse)}}let Oh;YS();function YS(){return Oh=n1({format:Ph,parse:$m,utcFormat:Lh,utcParse:e1})}function JS(n){return n1(Om(n))}function qS(n){return arguments.length?Oh=JS(n):Oh}const KS=n=>n!=null&&n===n,jS=n=>n==="true"||n==="false"||n===!0||n===!1,WS=n=>!Number.isNaN(Date.parse(n)),r1=n=>!Number.isNaN(+n)&&!(n instanceof Date),XS=n=>r1(n)&&Number.isInteger(+n),i1={boolean:wv,integer:Oa,number:Oa,date:Iv,string:Ev,unknown:Fu},ef=[jS,XS,r1,WS],ZS=["boolean","integer","number","date"];function $S(n,t){if(!n||!n.length)return"unknown";const e=n.length,r=ef.length,i=ef.map((s,o)=>o+1);for(let s=0,o=0,a,l;s<e;++s)for(l=t?n[s][t]:n[s],a=0;a<r;++a)if(i[a]&&KS(l)&&!ef[a](l)&&(i[a]=0,++o,o===ef.length))return"string";return ZS[i.reduce((s,o)=>s===0?o:s,0)-1]}function eQ(n,t){return t.reduce((e,r)=>(e[r]=$S(n,r),e),{})}function s1(n){const t=function(e,r){const i={delimiter:n};return Uh(e,r?gv(r,i):i)};return t.responseType="text",t}function Uh(n,t){return t.header&&(n=t.header.map(hh).join(t.delimiter)+`
24
- `+n),wm(t.delimiter).parse(n+"")}Uh.responseType="text";function tQ(n){return typeof Buffer=="function"&&Ot(Buffer.isBuffer)?Buffer.isBuffer(n):!1}function Gh(n,t){const e=t&&t.property?ku(t.property):Fu;return tt(n)&&!tQ(n)?nQ(e(n),t):e(JSON.parse(n))}Gh.responseType="json";function nQ(n,t){return!Re(n)&&mv(n)&&(n=[...n]),t&&t.copy?JSON.parse(JSON.stringify(n)):n}const rQ={interior:(n,t)=>n!==t,exterior:(n,t)=>n===t};function o1(n,t){let e,r,i,s;return n=Gh(n,t),t&&t.feature?(e=Wv,i=t.feature):t&&t.mesh?(e=Zv,i=t.mesh,s=rQ[t.filter]):Le("Missing TopoJSON feature or mesh parameter."),r=(r=n.objects[i])?e(n,r,s):Le("Invalid TopoJSON object: "+i),r&&r.features||[r]}o1.responseType="json";const zh={dsv:Uh,csv:s1(","),tsv:s1(" "),json:Gh,topojson:o1};function Hh(n,t){return arguments.length>1?(zh[n]=t,this):Ls(zh,n)?zh[n]:null}function Vh(n,t,e,r){t=t||{};const i=Hh(t.type||"json");return i||Le("Unknown data format type: "+t.type),n=i(n,t),t.parse&&iQ(n,t.parse,e,r),Ls(n,"columns")&&delete n.columns,n}function iQ(n,t,e,r){if(!n.length)return;const i=qS();e=e||i.timeParse,r=r||i.utcParse;let s=n.columns||Object.keys(n[0]),o,a,l,c,u,f;t==="auto"&&(t=eQ(n,s)),s=Object.keys(t);const h=s.map(A=>{const d=t[A];let p,C;if(d&&(d.startsWith("date:")||d.startsWith("utc:")))return p=d.split(/:(.+)?/,2),C=p[1],(C[0]==="'"&&C[C.length-1]==="'"||C[0]==='"'&&C[C.length-1]==='"')&&(C=C.slice(1,-1)),(p[0]==="utc"?r:e)(C);if(!i1[d])throw Error("Illegal format pattern: "+A+":"+d);return i1[d]});for(l=0,u=n.length,f=s.length;l<u;++l)for(o=n[l],c=0;c<f;++c)a=s[c],o[a]=h[c](o[a])}const sQ=`
7
+ `)}function c(f){return f.map(u).join(n)}function u(f){return f==null?"":f instanceof Date?K2(f):e.test(f+="")?'"'+f.replace(/"/g,'""')+'"':f}return{parse:r,parseRows:i,format:o,formatBody:a,formatRows:l,formatRow:c,formatValue:u}}var j2=ah(" "),W2=j2.parseRows;function X2(n){return n}function Z2(n){if(n==null)return X2;var e,t,r=n.scale[0],i=n.scale[1],s=n.translate[0],o=n.translate[1];return function(a,l){l||(e=t=0);var c=2,u=a.length,f=new Array(u);for(f[0]=(e+=a[0])*r+s,f[1]=(t+=a[1])*i+o;c<u;)f[c]=a[c],++c;return f}}function $2(n,e){for(var t,r=n.length,i=r-e;i<--r;)t=n[i],n[i++]=n[r],n[r]=t}function eI(n,e){return typeof e=="string"&&(e=n.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(t){return ch(n,t)})}:ch(n,e)}function ch(n,e){var t=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,s=lh(n,e);return t==null&&r==null?{type:"Feature",properties:i,geometry:s}:r==null?{type:"Feature",id:t,properties:i,geometry:s}:{type:"Feature",id:t,bbox:r,properties:i,geometry:s}}function lh(n,e){var t=Z2(n.transform),r=n.arcs;function i(u,f){f.length&&f.pop();for(var h=r[u<0?~u:u],A=0,d=h.length;A<d;++A)f.push(t(h[A],A));u<0&&$2(f,d)}function s(u){return t(u)}function o(u){for(var f=[],h=0,A=u.length;h<A;++h)i(u[h],f);return f.length<2&&f.push(f[0]),f}function a(u){for(var f=o(u);f.length<4;)f.push(f[0]);return f}function l(u){return u.map(a)}function c(u){var f=u.type,h;switch(f){case"GeometryCollection":return{type:f,geometries:u.geometries.map(c)};case"Point":h=s(u.coordinates);break;case"MultiPoint":h=u.coordinates.map(s);break;case"LineString":h=o(u.arcs);break;case"MultiLineString":h=u.arcs.map(o);break;case"Polygon":h=l(u.arcs);break;case"MultiPolygon":h=u.arcs.map(l);break;default:return null}return{type:f,coordinates:h}}return c(e)}function tI(n,e){var t={},r={},i={},s=[],o=-1;e.forEach(function(c,u){var f=n.arcs[c<0?~c:c],h;f.length<3&&!f[1][0]&&!f[1][1]&&(h=e[++o],e[o]=c,e[u]=h)}),e.forEach(function(c){var u=a(c),f=u[0],h=u[1],A,d;if(A=i[f])if(delete i[A.end],A.push(c),A.end=h,d=r[h]){delete r[d.start];var g=d===A?A:A.concat(d);r[g.start=A.start]=i[g.end=d.end]=g}else r[A.start]=i[A.end]=A;else if(A=r[h])if(delete r[A.start],A.unshift(c),A.start=f,d=i[f]){delete i[d.end];var p=d===A?A:d.concat(A);r[p.start=d.start]=i[p.end=A.end]=p}else r[A.start]=i[A.end]=A;else A=[c],r[A.start=f]=i[A.end=h]=A});function a(c){var u=n.arcs[c<0?~c:c],f=u[0],h;return n.transform?(h=[0,0],u.forEach(function(A){h[0]+=A[0],h[1]+=A[1]})):h=u[u.length-1],c<0?[h,f]:[f,h]}function l(c,u){for(var f in c){var h=c[f];delete u[h.start],delete h.start,delete h.end,h.forEach(function(A){t[A<0?~A:A]=1}),s.push(h)}}return l(i,r),l(r,i),e.forEach(function(c){t[c<0?~c:c]||s.push([c])}),s}function nI(n){return lh(n,rI.apply(this,arguments))}function rI(n,e,t){var r,i,s;if(arguments.length>1)r=iI(n,e,t);else for(i=0,r=new Array(s=n.arcs.length);i<s;++i)r[i]=i;return{type:"MultiLineString",arcs:tI(n,r)}}function iI(n,e,t){var r=[],i=[],s;function o(f){var h=f<0?~f:f;(i[h]||(i[h]=[])).push({i:f,g:s})}function a(f){f.forEach(o)}function l(f){f.forEach(a)}function c(f){f.forEach(l)}function u(f){switch(s=f,f.type){case"GeometryCollection":f.geometries.forEach(u);break;case"LineString":a(f.arcs);break;case"MultiLineString":case"Polygon":l(f.arcs);break;case"MultiPolygon":c(f.arcs);break}}return u(e),i.forEach(t==null?function(f){r.push(f[0].i)}:function(f){t(f[0].g,f[f.length-1].g)&&r.push(f[0].i)}),r}function jn(n,e){return n==null||e==null?NaN:n<e?-1:n>e?1:n>=e?0:NaN}function sI(n,e){return n==null||e==null?NaN:e<n?-1:e>n?1:e>=n?0:NaN}function Wn(n){let e,t,r;n.length!==2?(e=jn,t=(a,l)=>jn(n(a),l),r=(a,l)=>n(a)-l):(e=n===jn||n===sI?n:oI,t=n,r=n);function i(a,l,c=0,u=a.length){if(c<u){if(e(l,l)!==0)return u;do{const f=c+u>>>1;t(a[f],l)<0?c=f+1:u=f}while(c<u)}return c}function s(a,l,c=0,u=a.length){if(c<u){if(e(l,l)!==0)return u;do{const f=c+u>>>1;t(a[f],l)<=0?c=f+1:u=f}while(c<u)}return c}function o(a,l,c=0,u=a.length){const f=i(a,l,c,u-1);return f>c&&r(a[f-1],l)>-r(a[f],l)?f-1:f}return{left:i,center:o,right:s}}function oI(){return 0}function uh(n){return n===null?NaN:+n}function*aI(n,e){if(e===void 0)for(let t of n)t!=null&&(t=+t)>=t&&(yield t);else{let t=-1;for(let r of n)(r=e(r,++t,n))!=null&&(r=+r)>=r&&(yield r)}}const fh=Wn(jn),wn=fh.right;fh.left,Wn(uh).center;function cI(n,e){let t=0;if(e===void 0)for(let r of n)r!=null&&(r=+r)>=r&&++t;else{let r=-1;for(let i of n)(i=e(i,++r,n))!=null&&(i=+i)>=i&&++t}return t}function lI(n,e){let t=0,r,i=0,s=0;if(e===void 0)for(let o of n)o!=null&&(o=+o)>=o&&(r=o-i,i+=r/++t,s+=r*(o-i));else{let o=-1;for(let a of n)(a=e(a,++o,n))!=null&&(a=+a)>=a&&(r=a-i,i+=r/++t,s+=r*(a-i))}if(t>1)return s/(t-1)}function uI(n,e){let t,r;for(const i of n)i!=null&&(t===void 0?i>=i&&(t=r=i):(t>i&&(t=i),r<i&&(r=i)));return[t,r]}class jt extends Map{constructor(e,t=hI){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(Ah(this,e))}has(e){return super.has(Ah(this,e))}set(e,t){return super.set(fI(this,e),t)}delete(e){return super.delete(AI(this,e))}}function Ah({_intern:n,_key:e},t){const r=e(t);return n.has(r)?n.get(r):t}function fI({_intern:n,_key:e},t){const r=e(t);return n.has(r)?n.get(r):(n.set(r,t),t)}function AI({_intern:n,_key:e},t){const r=e(t);return n.has(r)&&(t=n.get(r),n.delete(r)),t}function hI(n){return n!==null&&typeof n=="object"?n.valueOf():n}function Kc(n){return n}function Qo(n,...e){return hh(n,Kc,Kc,e)}function dI(n,...e){return hh(n,Array.from,Kc,e)}function hh(n,e,t,r){return(function i(s,o){if(o>=r.length)return t(s);const a=new jt,l=r[o++];let c=-1;for(const u of s){const f=l(u,++c,s),h=a.get(f);h?h.push(u):a.set(f,[u])}for(const[u,f]of a)a.set(u,i(f,o));return e(a)})(n,0)}function gI(n=jn){if(n===jn)return dh;if(typeof n!="function")throw new TypeError("compare is not a function");return(e,t)=>{const r=n(e,t);return r||r===0?r:(n(t,t)===0)-(n(e,e)===0)}}function dh(n,e){return(n==null||!(n>=n))-(e==null||!(e>=e))||(n<e?-1:n>e?1:0)}const pI=Math.sqrt(50),mI=Math.sqrt(10),wI=Math.sqrt(2);function Do(n,e,t){const r=(e-n)/Math.max(0,t),i=Math.floor(Math.log10(r)),s=r/Math.pow(10,i),o=s>=pI?10:s>=mI?5:s>=wI?2:1;let a,l,c;return i<0?(c=Math.pow(10,-i)/o,a=Math.round(n*c),l=Math.round(e*c),a/c<n&&++a,l/c>e&&--l,c=-c):(c=Math.pow(10,i)*o,a=Math.round(n/c),l=Math.round(e/c),a*c<n&&++a,l*c>e&&--l),l<a&&.5<=t&&t<2?Do(n,e,t*2):[a,l,c]}function ko(n,e,t){if(e=+e,n=+n,t=+t,!(t>0))return[];if(n===e)return[n];const r=e<n,[i,s,o]=r?Do(e,n,t):Do(n,e,t);if(!(s>=i))return[];const a=s-i+1,l=new Array(a);if(r)if(o<0)for(let c=0;c<a;++c)l[c]=(s-c)/-o;else for(let c=0;c<a;++c)l[c]=(s-c)*o;else if(o<0)for(let c=0;c<a;++c)l[c]=(i+c)/-o;else for(let c=0;c<a;++c)l[c]=(i+c)*o;return l}function jc(n,e,t){return e=+e,n=+n,t=+t,Do(n,e,t)[2]}function Xn(n,e,t){e=+e,n=+n,t=+t;const r=e<n,i=r?jc(e,n,t):jc(n,e,t);return(r?-1:1)*(i<0?1/-i:i)}function Wc(n,e){let t;if(e===void 0)for(const r of n)r!=null&&(t<r||t===void 0&&r>=r)&&(t=r);else{let r=-1;for(let i of n)(i=e(i,++r,n))!=null&&(t<i||t===void 0&&i>=i)&&(t=i)}return t}function Xc(n,e){let t;if(e===void 0)for(const r of n)r!=null&&(t>r||t===void 0&&r>=r)&&(t=r);else{let r=-1;for(let i of n)(i=e(i,++r,n))!=null&&(t>i||t===void 0&&i>=i)&&(t=i)}return t}function gh(n,e,t=0,r=1/0,i){if(e=Math.floor(e),t=Math.floor(Math.max(0,t)),r=Math.floor(Math.min(n.length-1,r)),!(t<=e&&e<=r))return n;for(i=i===void 0?dh:gI(i);r>t;){if(r-t>600){const l=r-t+1,c=e-t+1,u=Math.log(l),f=.5*Math.exp(2*u/3),h=.5*Math.sqrt(u*f*(l-f)/l)*(c-l/2<0?-1:1),A=Math.max(t,Math.floor(e-c*f/l+h)),d=Math.min(r,Math.floor(e+(l-c)*f/l+h));gh(n,e,A,d,i)}const s=n[e];let o=t,a=r;for(Yi(n,t,e),i(n[r],s)>0&&Yi(n,t,r);o<a;){for(Yi(n,o,a),++o,--a;i(n[o],s)<0;)++o;for(;i(n[a],s)>0;)--a}i(n[t],s)===0?Yi(n,t,a):(++a,Yi(n,a,r)),a<=e&&(t=a+1),e<=a&&(r=a-1)}return n}function Yi(n,e,t){const r=n[e];n[e]=n[t],n[t]=r}function CI(n,e,t){if(n=Float64Array.from(aI(n,t)),!(!(r=n.length)||isNaN(e=+e))){if(e<=0||r<2)return Xc(n);if(e>=1)return Wc(n);var r,i=(r-1)*e,s=Math.floor(i),o=Wc(gh(n,s).subarray(0,s+1)),a=Xc(n.subarray(s+1));return o+(a-o)*(i-s)}}function ph(n,e,t=uh){if(!(!(r=n.length)||isNaN(e=+e))){if(e<=0||r<2)return+t(n[0],0,n);if(e>=1)return+t(n[r-1],r-1,n);var r,i=(r-1)*e,s=Math.floor(i),o=+t(n[s],s,n),a=+t(n[s+1],s+1,n);return o+(a-o)*(i-s)}}function yI(n,e){let t=0,r=0;if(e===void 0)for(let i of n)i!=null&&(i=+i)>=i&&(++t,r+=i);else{let i=-1;for(let s of n)(s=e(s,++i,n))!=null&&(s=+s)>=s&&(++t,r+=s)}if(t)return r/t}function II(n,e){return CI(n,.5,e)}function Ji(n,e,t){n=+n,e=+e,t=(i=arguments.length)<2?(e=n,n=0,1):i<3?1:+t;for(var r=-1,i=Math.max(0,Math.ceil((e-n)/t))|0,s=new Array(i);++r<i;)s[r]=n+r*t;return s}function qi(n,e){let t=0;if(e===void 0)for(let r of n)(r=+r)&&(t+=r);else{let r=-1;for(let i of n)(i=+e(i,++r,n))&&(t+=i)}return t}function bI(n){return Math.abs(n=Math.round(n))>=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function Fo(n,e){if(!isFinite(n)||n===0)return null;var t=(n=e?n.toExponential(e-1):n.toExponential()).indexOf("e"),r=n.slice(0,t);return[r.length>1?r[0]+r.slice(2):r,+n.slice(t+1)]}function Mr(n){return n=Fo(Math.abs(n)),n?n[1]:NaN}function EI(n,e){return function(t,r){for(var i=t.length,s=[],o=0,a=n[0],l=0;i>0&&a>0&&(l+a+1>r&&(a=Math.max(1,r-l)),s.push(t.substring(i-=a,i+a)),!((l+=a+1)>r));)a=n[o=(o+1)%n.length];return s.reverse().join(e)}}function xI(n){return function(e){return e.replace(/[0-9]/g,function(t){return n[+t]})}}var BI=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Nr(n){if(!(e=BI.exec(n)))throw new Error("invalid format: "+n);var e;return new Zc({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]})}Nr.prototype=Zc.prototype;function Zc(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}Zc.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 vI(n){e:for(var e=n.length,t=1,r=-1,i;t<e;++t)switch(n[t]){case".":r=i=t;break;case"0":r===0&&(r=t),i=t;break;default:if(!+n[t])break e;r>0&&(r=0);break}return r>0?n.slice(0,r)+n.slice(i+1):n}var Ro;function SI(n,e){var t=Fo(n,e);if(!t)return Ro=void 0,n.toPrecision(e);var r=t[0],i=t[1],s=i-(Ro=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return s===o?r:s>o?r+new Array(s-o+1).join("0"):s>0?r.slice(0,s)+"."+r.slice(s):"0."+new Array(1-s).join("0")+Fo(n,Math.max(0,e+s-1))[0]}function mh(n,e){var t=Fo(n,e);if(!t)return n+"";var r=t[0],i=t[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 wh={"%":(n,e)=>(n*100).toFixed(e),b:n=>Math.round(n).toString(2),c:n=>n+"",d:bI,e:(n,e)=>n.toExponential(e),f:(n,e)=>n.toFixed(e),g:(n,e)=>n.toPrecision(e),o:n=>Math.round(n).toString(8),p:(n,e)=>mh(n*100,e),r:mh,s:SI,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function Ch(n){return n}var yh=Array.prototype.map,Ih=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function QI(n){var e=n.grouping===void 0||n.thousands===void 0?Ch:EI(yh.call(n.grouping,Number),n.thousands+""),t=n.currency===void 0?"":n.currency[0]+"",r=n.currency===void 0?"":n.currency[1]+"",i=n.decimal===void 0?".":n.decimal+"",s=n.numerals===void 0?Ch:xI(yh.call(n.numerals,String)),o=n.percent===void 0?"%":n.percent+"",a=n.minus===void 0?"−":n.minus+"",l=n.nan===void 0?"NaN":n.nan+"";function c(f,h){f=Nr(f);var A=f.fill,d=f.align,g=f.sign,p=f.symbol,m=f.zero,C=f.width,y=f.comma,w=f.precision,E=f.trim,x=f.type;x==="n"?(y=!0,x="g"):wh[x]||(w===void 0&&(w=12),E=!0,x="g"),(m||A==="0"&&d==="=")&&(m=!0,A="0",d="=");var b=(h&&h.prefix!==void 0?h.prefix:"")+(p==="$"?t:p==="#"&&/[boxX]/.test(x)?"0"+x.toLowerCase():""),S=(p==="$"?r:/[%p]/.test(x)?o:"")+(h&&h.suffix!==void 0?h.suffix:""),Q=wh[x],v=/[defgprs%]/.test(x);w=w===void 0?6:/[gprs]/.test(x)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function F(R){var N=b,O=S,H,G,_;if(x==="c")O=Q(R)+O,R="";else{R=+R;var te=R<0||1/R<0;if(R=isNaN(R)?l:Q(Math.abs(R),w),E&&(R=vI(R)),te&&+R==0&&g!=="+"&&(te=!1),N=(te?g==="("?g:a:g==="-"||g==="("?"":g)+N,O=(x==="s"&&!isNaN(R)&&Ro!==void 0?Ih[8+Ro/3]:"")+O+(te&&g==="("?")":""),v){for(H=-1,G=R.length;++H<G;)if(_=R.charCodeAt(H),48>_||_>57){O=(_===46?i+R.slice(H+1):R.slice(H))+O,R=R.slice(0,H);break}}}y&&!m&&(R=e(R,1/0));var oe=N.length+R.length+O.length,ne=oe<C?new Array(C-oe+1).join(A):"";switch(y&&m&&(R=e(ne+R,ne.length?C-O.length:1/0),ne=""),d){case"<":R=N+R+O+ne;break;case"=":R=N+ne+R+O;break;case"^":R=ne.slice(0,oe=ne.length>>1)+N+R+O+ne.slice(oe);break;default:R=ne+N+R+O;break}return s(R)}return F.toString=function(){return f+""},F}function u(f,h){var A=Math.max(-8,Math.min(8,Math.floor(Mr(h)/3)))*3,d=Math.pow(10,-A),g=c((f=Nr(f),f.type="f",f),{suffix:Ih[8+A/3]});return function(p){return g(d*p)}}return{format:c,formatPrefix:u}}var Mo,He,bh;DI({thousands:",",grouping:[3],currency:["$",""]});function DI(n){return Mo=QI(n),He=Mo.format,bh=Mo.formatPrefix,Mo}function kI(n){return Math.max(0,-Mr(Math.abs(n)))}function FI(n,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Mr(e)/3)))*3-Mr(Math.abs(n)))}function RI(n,e){return n=Math.abs(n),e=Math.abs(e)-n,Math.max(0,Mr(e)-Mr(n))+1}const $c=new Date,el=new Date;function Se(n,e,t,r){function i(s){return n(s=arguments.length===0?new Date:new Date(+s)),s}return i.floor=s=>(n(s=new Date(+s)),s),i.ceil=s=>(n(s=new Date(s-1)),e(s,1),n(s),s),i.round=s=>{const o=i(s),a=i.ceil(s);return s-o<a-s?o:a},i.offset=(s,o)=>(e(s=new Date(+s),o==null?1:Math.floor(o)),s),i.range=(s,o,a)=>{const l=[];if(s=i.ceil(s),a=a==null?1:Math.floor(a),!(s<o)||!(a>0))return l;let c;do l.push(c=new Date(+s)),e(s,a),n(s);while(c<s&&s<o);return l},i.filter=s=>Se(o=>{if(o>=o)for(;n(o),!s(o);)o.setTime(o-1)},(o,a)=>{if(o>=o)if(a<0)for(;++a<=0;)for(;e(o,-1),!s(o););else for(;--a>=0;)for(;e(o,1),!s(o););}),t&&(i.count=(s,o)=>($c.setTime(+s),el.setTime(+o),n($c),n(el),Math.floor(t($c,el))),i.every=s=>(s=Math.floor(s),!isFinite(s)||!(s>0)?null:s>1?i.filter(r?o=>r(o)%s===0:o=>i.count(0,o)%s===0):i)),i}const Tr=Se(()=>{},(n,e)=>{n.setTime(+n+e)},(n,e)=>e-n);Tr.every=n=>(n=Math.floor(n),!isFinite(n)||!(n>0)?null:n>1?Se(e=>{e.setTime(Math.floor(e/n)*n)},(e,t)=>{e.setTime(+e+t*n)},(e,t)=>(t-e)/n):Tr),Tr.range;const Wt=1e3,ht=Wt*60,Xt=ht*60,Zt=Xt*24,tl=Zt*7,Eh=Zt*30,nl=Zt*365,$t=Se(n=>{n.setTime(n-n.getMilliseconds())},(n,e)=>{n.setTime(+n+e*Wt)},(n,e)=>(e-n)/Wt,n=>n.getUTCSeconds());$t.range;const No=Se(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*Wt)},(n,e)=>{n.setTime(+n+e*ht)},(n,e)=>(e-n)/ht,n=>n.getMinutes());No.range;const To=Se(n=>{n.setUTCSeconds(0,0)},(n,e)=>{n.setTime(+n+e*ht)},(n,e)=>(e-n)/ht,n=>n.getUTCMinutes());To.range;const Po=Se(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*Wt-n.getMinutes()*ht)},(n,e)=>{n.setTime(+n+e*Xt)},(n,e)=>(e-n)/Xt,n=>n.getHours());Po.range;const Lo=Se(n=>{n.setUTCMinutes(0,0,0)},(n,e)=>{n.setTime(+n+e*Xt)},(n,e)=>(e-n)/Xt,n=>n.getUTCHours());Lo.range;const Cn=Se(n=>n.setHours(0,0,0,0),(n,e)=>n.setDate(n.getDate()+e),(n,e)=>(e-n-(e.getTimezoneOffset()-n.getTimezoneOffset())*ht)/Zt,n=>n.getDate()-1);Cn.range;const Zn=Se(n=>{n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCDate(n.getUTCDate()+e)},(n,e)=>(e-n)/Zt,n=>n.getUTCDate()-1);Zn.range;const xh=Se(n=>{n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCDate(n.getUTCDate()+e)},(n,e)=>(e-n)/Zt,n=>Math.floor(n/Zt));xh.range;function $n(n){return Se(e=>{e.setDate(e.getDate()-(e.getDay()+7-n)%7),e.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*ht)/tl)}const Ki=$n(0),Oo=$n(1),MI=$n(2),NI=$n(3),Pr=$n(4),TI=$n(5),PI=$n(6);Ki.range,Oo.range,MI.range,NI.range,Pr.range,TI.range,PI.range;function er(n){return Se(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-n)%7),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/tl)}const ji=er(0),Uo=er(1),LI=er(2),OI=er(3),Lr=er(4),UI=er(5),GI=er(6);ji.range,Uo.range,LI.range,OI.range,Lr.range,UI.range,GI.range;const Wi=Se(n=>{n.setDate(1),n.setHours(0,0,0,0)},(n,e)=>{n.setMonth(n.getMonth()+e)},(n,e)=>e.getMonth()-n.getMonth()+(e.getFullYear()-n.getFullYear())*12,n=>n.getMonth());Wi.range;const Xi=Se(n=>{n.setUTCDate(1),n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCMonth(n.getUTCMonth()+e)},(n,e)=>e.getUTCMonth()-n.getUTCMonth()+(e.getUTCFullYear()-n.getUTCFullYear())*12,n=>n.getUTCMonth());Xi.range;const Rt=Se(n=>{n.setMonth(0,1),n.setHours(0,0,0,0)},(n,e)=>{n.setFullYear(n.getFullYear()+e)},(n,e)=>e.getFullYear()-n.getFullYear(),n=>n.getFullYear());Rt.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:Se(e=>{e.setFullYear(Math.floor(e.getFullYear()/n)*n),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t*n)}),Rt.range;const Mt=Se(n=>{n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCFullYear(n.getUTCFullYear()+e)},(n,e)=>e.getUTCFullYear()-n.getUTCFullYear(),n=>n.getUTCFullYear());Mt.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:Se(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/n)*n),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t*n)}),Mt.range;function Bh(n,e,t,r,i,s){const o=[[$t,1,Wt],[$t,5,5*Wt],[$t,15,15*Wt],[$t,30,30*Wt],[s,1,ht],[s,5,5*ht],[s,15,15*ht],[s,30,30*ht],[i,1,Xt],[i,3,3*Xt],[i,6,6*Xt],[i,12,12*Xt],[r,1,Zt],[r,2,2*Zt],[t,1,tl],[e,1,Eh],[e,3,3*Eh],[n,1,nl]];function a(c,u,f){const h=u<c;h&&([c,u]=[u,c]);const A=f&&typeof f.range=="function"?f:l(c,u,f),d=A?A.range(c,+u+1):[];return h?d.reverse():d}function l(c,u,f){const h=Math.abs(u-c)/f,A=Wn(([,,p])=>p).right(o,h);if(A===o.length)return n.every(Xn(c/nl,u/nl,f));if(A===0)return Tr.every(Math.max(Xn(c,u,f),1));const[d,g]=o[h/o[A-1][2]<o[A][2]/h?A-1:A];return d.every(g)}return[a,l]}const[zI,HI]=Bh(Mt,Xi,ji,xh,Lo,To),[VI,_I]=Bh(Rt,Wi,Ki,Cn,Po,No),Zi="year",$i="quarter",es="month",ts="week",ns="date",Go="day",rl="dayofyear",rs="hours",is="minutes",ss="seconds",zo="milliseconds";[Zi,$i,es,ts,ns,Go,rl,rs,is,ss,zo].reduce((n,e,t)=>(n[e]=1+t,n),{});const YI={[Zi]:Rt,[$i]:Wi.every(3),[es]:Wi,[ts]:Ki,[ns]:Cn,[Go]:Cn,[rl]:Cn,[rs]:Po,[is]:No,[ss]:$t,[zo]:Tr},JI={[Zi]:Mt,[$i]:Xi.every(3),[es]:Xi,[ts]:ji,[ns]:Zn,[Go]:Zn,[rl]:Zn,[rs]:Lo,[is]:To,[ss]:$t,[zo]:Tr};function qI(n){return YI[n]}function KI(n){return JI[n]}function il(n){if(0<=n.y&&n.y<100){var e=new Date(-1,n.m,n.d,n.H,n.M,n.S,n.L);return e.setFullYear(n.y),e}return new Date(n.y,n.m,n.d,n.H,n.M,n.S,n.L)}function sl(n){if(0<=n.y&&n.y<100){var e=new Date(Date.UTC(-1,n.m,n.d,n.H,n.M,n.S,n.L));return e.setUTCFullYear(n.y),e}return new Date(Date.UTC(n.y,n.m,n.d,n.H,n.M,n.S,n.L))}function os(n,e,t){return{y:n,m:e,d:t,H:0,M:0,S:0,L:0}}function vh(n){var e=n.dateTime,t=n.date,r=n.time,i=n.periods,s=n.days,o=n.shortDays,a=n.months,l=n.shortMonths,c=as(i),u=cs(i),f=as(s),h=cs(s),A=as(o),d=cs(o),g=as(a),p=cs(a),m=as(l),C=cs(l),y={a:_,A:te,b:oe,B:ne,c:null,d:Rh,e:Rh,f:mb,g:Sb,G:Db,H:db,I:gb,j:pb,L:Mh,m:wb,M:Cb,p:Ge,q:qt,Q:Uh,s:Gh,S:yb,u:Ib,U:bb,V:Eb,w:xb,W:Bb,x:null,X:null,y:vb,Y:Qb,Z:kb,"%":Oh},w={a:ho,A:Ri,b:An,B:Dr,c:null,d:Th,e:Th,f:Nb,g:_b,G:Jb,H:Fb,I:Rb,j:Mb,L:Ph,m:Tb,M:Pb,p:go,q:Mi,Q:Uh,s:Gh,S:Lb,u:Ob,U:Ub,V:Gb,w:zb,W:Hb,x:null,X:null,y:Vb,Y:Yb,Z:qb,"%":Oh},E={a:v,A:F,b:R,B:N,c:O,d:kh,e:kh,f:ub,g:Dh,G:Qh,H:Fh,I:Fh,j:ob,L:lb,m:sb,M:ab,p:Q,q:ib,Q:Ab,s:hb,S:cb,u:$I,U:eb,V:tb,w:ZI,W:nb,x:H,X:G,y:Dh,Y:Qh,Z:rb,"%":fb};y.x=x(t,y),y.X=x(r,y),y.c=x(e,y),w.x=x(t,w),w.X=x(r,w),w.c=x(e,w);function x(U,K){return function(W){var M=[],Xe=-1,se=0,nt=U.length,Ze,hn,po;for(W instanceof Date||(W=new Date(+W));++Xe<nt;)U.charCodeAt(Xe)===37&&(M.push(U.slice(se,Xe)),(hn=Sh[Ze=U.charAt(++Xe)])!=null?Ze=U.charAt(++Xe):hn=Ze==="e"?" ":"0",(po=K[Ze])&&(Ze=po(W,hn)),M.push(Ze),se=Xe+1);return M.push(U.slice(se,Xe)),M.join("")}}function b(U,K){return function(W){var M=os(1900,void 0,1),Xe=S(M,U,W+="",0),se,nt;if(Xe!=W.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(K&&!("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?(se=sl(os(M.y,0,1)),nt=se.getUTCDay(),se=nt>4||nt===0?Uo.ceil(se):Uo(se),se=Zn.offset(se,(M.V-1)*7),M.y=se.getUTCFullYear(),M.m=se.getUTCMonth(),M.d=se.getUTCDate()+(M.w+6)%7):(se=il(os(M.y,0,1)),nt=se.getDay(),se=nt>4||nt===0?Oo.ceil(se):Oo(se),se=Cn.offset(se,(M.V-1)*7),M.y=se.getFullYear(),M.m=se.getMonth(),M.d=se.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),nt="Z"in M?sl(os(M.y,0,1)).getUTCDay():il(os(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(nt+5)%7:M.w+M.U*7-(nt+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,sl(M)):il(M)}}function S(U,K,W,M){for(var Xe=0,se=K.length,nt=W.length,Ze,hn;Xe<se;){if(M>=nt)return-1;if(Ze=K.charCodeAt(Xe++),Ze===37){if(Ze=K.charAt(Xe++),hn=E[Ze in Sh?K.charAt(Xe++):Ze],!hn||(M=hn(U,W,M))<0)return-1}else if(Ze!=W.charCodeAt(M++))return-1}return M}function Q(U,K,W){var M=c.exec(K.slice(W));return M?(U.p=u.get(M[0].toLowerCase()),W+M[0].length):-1}function v(U,K,W){var M=A.exec(K.slice(W));return M?(U.w=d.get(M[0].toLowerCase()),W+M[0].length):-1}function F(U,K,W){var M=f.exec(K.slice(W));return M?(U.w=h.get(M[0].toLowerCase()),W+M[0].length):-1}function R(U,K,W){var M=m.exec(K.slice(W));return M?(U.m=C.get(M[0].toLowerCase()),W+M[0].length):-1}function N(U,K,W){var M=g.exec(K.slice(W));return M?(U.m=p.get(M[0].toLowerCase()),W+M[0].length):-1}function O(U,K,W){return S(U,e,K,W)}function H(U,K,W){return S(U,t,K,W)}function G(U,K,W){return S(U,r,K,W)}function _(U){return o[U.getDay()]}function te(U){return s[U.getDay()]}function oe(U){return l[U.getMonth()]}function ne(U){return a[U.getMonth()]}function Ge(U){return i[+(U.getHours()>=12)]}function qt(U){return 1+~~(U.getMonth()/3)}function ho(U){return o[U.getUTCDay()]}function Ri(U){return s[U.getUTCDay()]}function An(U){return l[U.getUTCMonth()]}function Dr(U){return a[U.getUTCMonth()]}function go(U){return i[+(U.getUTCHours()>=12)]}function Mi(U){return 1+~~(U.getUTCMonth()/3)}return{format:function(U){var K=x(U+="",y);return K.toString=function(){return U},K},parse:function(U){var K=b(U+="",!1);return K.toString=function(){return U},K},utcFormat:function(U){var K=x(U+="",w);return K.toString=function(){return U},K},utcParse:function(U){var K=b(U+="",!0);return K.toString=function(){return U},K}}}var Sh={"-":"",_:" ",0:"0"},Re=/^\s*\d+/,jI=/^%/,WI=/[\\^$*+?|[\]().{}]/g;function Z(n,e,t){var r=n<0?"-":"",i=(r?-n:n)+"",s=i.length;return r+(s<t?new Array(t-s+1).join(e)+i:i)}function XI(n){return n.replace(WI,"\\$&")}function as(n){return new RegExp("^(?:"+n.map(XI).join("|")+")","i")}function cs(n){return new Map(n.map((e,t)=>[e.toLowerCase(),t]))}function ZI(n,e,t){var r=Re.exec(e.slice(t,t+1));return r?(n.w=+r[0],t+r[0].length):-1}function $I(n,e,t){var r=Re.exec(e.slice(t,t+1));return r?(n.u=+r[0],t+r[0].length):-1}function eb(n,e,t){var r=Re.exec(e.slice(t,t+2));return r?(n.U=+r[0],t+r[0].length):-1}function tb(n,e,t){var r=Re.exec(e.slice(t,t+2));return r?(n.V=+r[0],t+r[0].length):-1}function nb(n,e,t){var r=Re.exec(e.slice(t,t+2));return r?(n.W=+r[0],t+r[0].length):-1}function Qh(n,e,t){var r=Re.exec(e.slice(t,t+4));return r?(n.y=+r[0],t+r[0].length):-1}function Dh(n,e,t){var r=Re.exec(e.slice(t,t+2));return r?(n.y=+r[0]+(+r[0]>68?1900:2e3),t+r[0].length):-1}function rb(n,e,t){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(t,t+6));return r?(n.Z=r[1]?0:-(r[2]+(r[3]||"00")),t+r[0].length):-1}function ib(n,e,t){var r=Re.exec(e.slice(t,t+1));return r?(n.q=r[0]*3-3,t+r[0].length):-1}function sb(n,e,t){var r=Re.exec(e.slice(t,t+2));return r?(n.m=r[0]-1,t+r[0].length):-1}function kh(n,e,t){var r=Re.exec(e.slice(t,t+2));return r?(n.d=+r[0],t+r[0].length):-1}function ob(n,e,t){var r=Re.exec(e.slice(t,t+3));return r?(n.m=0,n.d=+r[0],t+r[0].length):-1}function Fh(n,e,t){var r=Re.exec(e.slice(t,t+2));return r?(n.H=+r[0],t+r[0].length):-1}function ab(n,e,t){var r=Re.exec(e.slice(t,t+2));return r?(n.M=+r[0],t+r[0].length):-1}function cb(n,e,t){var r=Re.exec(e.slice(t,t+2));return r?(n.S=+r[0],t+r[0].length):-1}function lb(n,e,t){var r=Re.exec(e.slice(t,t+3));return r?(n.L=+r[0],t+r[0].length):-1}function ub(n,e,t){var r=Re.exec(e.slice(t,t+6));return r?(n.L=Math.floor(r[0]/1e3),t+r[0].length):-1}function fb(n,e,t){var r=jI.exec(e.slice(t,t+1));return r?t+r[0].length:-1}function Ab(n,e,t){var r=Re.exec(e.slice(t));return r?(n.Q=+r[0],t+r[0].length):-1}function hb(n,e,t){var r=Re.exec(e.slice(t));return r?(n.s=+r[0],t+r[0].length):-1}function Rh(n,e){return Z(n.getDate(),e,2)}function db(n,e){return Z(n.getHours(),e,2)}function gb(n,e){return Z(n.getHours()%12||12,e,2)}function pb(n,e){return Z(1+Cn.count(Rt(n),n),e,3)}function Mh(n,e){return Z(n.getMilliseconds(),e,3)}function mb(n,e){return Mh(n,e)+"000"}function wb(n,e){return Z(n.getMonth()+1,e,2)}function Cb(n,e){return Z(n.getMinutes(),e,2)}function yb(n,e){return Z(n.getSeconds(),e,2)}function Ib(n){var e=n.getDay();return e===0?7:e}function bb(n,e){return Z(Ki.count(Rt(n)-1,n),e,2)}function Nh(n){var e=n.getDay();return e>=4||e===0?Pr(n):Pr.ceil(n)}function Eb(n,e){return n=Nh(n),Z(Pr.count(Rt(n),n)+(Rt(n).getDay()===4),e,2)}function xb(n){return n.getDay()}function Bb(n,e){return Z(Oo.count(Rt(n)-1,n),e,2)}function vb(n,e){return Z(n.getFullYear()%100,e,2)}function Sb(n,e){return n=Nh(n),Z(n.getFullYear()%100,e,2)}function Qb(n,e){return Z(n.getFullYear()%1e4,e,4)}function Db(n,e){var t=n.getDay();return n=t>=4||t===0?Pr(n):Pr.ceil(n),Z(n.getFullYear()%1e4,e,4)}function kb(n){var e=n.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Z(e/60|0,"0",2)+Z(e%60,"0",2)}function Th(n,e){return Z(n.getUTCDate(),e,2)}function Fb(n,e){return Z(n.getUTCHours(),e,2)}function Rb(n,e){return Z(n.getUTCHours()%12||12,e,2)}function Mb(n,e){return Z(1+Zn.count(Mt(n),n),e,3)}function Ph(n,e){return Z(n.getUTCMilliseconds(),e,3)}function Nb(n,e){return Ph(n,e)+"000"}function Tb(n,e){return Z(n.getUTCMonth()+1,e,2)}function Pb(n,e){return Z(n.getUTCMinutes(),e,2)}function Lb(n,e){return Z(n.getUTCSeconds(),e,2)}function Ob(n){var e=n.getUTCDay();return e===0?7:e}function Ub(n,e){return Z(ji.count(Mt(n)-1,n),e,2)}function Lh(n){var e=n.getUTCDay();return e>=4||e===0?Lr(n):Lr.ceil(n)}function Gb(n,e){return n=Lh(n),Z(Lr.count(Mt(n),n)+(Mt(n).getUTCDay()===4),e,2)}function zb(n){return n.getUTCDay()}function Hb(n,e){return Z(Uo.count(Mt(n)-1,n),e,2)}function Vb(n,e){return Z(n.getUTCFullYear()%100,e,2)}function _b(n,e){return n=Lh(n),Z(n.getUTCFullYear()%100,e,2)}function Yb(n,e){return Z(n.getUTCFullYear()%1e4,e,4)}function Jb(n,e){var t=n.getUTCDay();return n=t>=4||t===0?Lr(n):Lr.ceil(n),Z(n.getUTCFullYear()%1e4,e,4)}function qb(){return"+0000"}function Oh(){return"%"}function Uh(n){return+n}function Gh(n){return Math.floor(+n/1e3)}var Or,ol,zh,al,Hh;Kb({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 Kb(n){return Or=vh(n),ol=Or.format,zh=Or.parse,al=Or.utcFormat,Hh=Or.utcParse,Or}function Ho(n){const e={};return t=>e[t]||(e[t]=n(t))}function Vh(n,e,t){t=t||{},ze(t)||Ee(`Invalid time multi-format specifier: ${t}`);const r=e(ss),i=e(is),s=e(rs),o=e(ns),a=e(ts),l=e(es),c=e($i),u=e(Zi),f=n(t[zo]||".%L"),h=n(t[ss]||":%S"),A=n(t[is]||"%I:%M"),d=n(t[rs]||"%I %p"),g=n(t[ns]||t[Go]||"%a %d"),p=n(t[ts]||"%b %d"),m=n(t[es]||"%B"),C=n(t[$i]||"%B"),y=n(t[Zi]||"%Y");return w=>(r(w)<w?f:i(w)<w?h:s(w)<w?A:o(w)<w?d:l(w)<w?a(w)<w?g:p:u(w)<w?c(w)<w?m:C:y)(w)}function _h(n){const e=Ho(n.format),t=Ho(n.utcFormat);return{timeFormat:r=>le(r)?e(r):Vh(e,qI,r),utcFormat:r=>le(r)?t(r):Vh(t,KI,r),timeParse:Ho(n.parse),utcParse:Ho(n.utcParse)}}let cl;jb();function jb(){return cl=_h({format:ol,parse:zh,utcFormat:al,utcParse:Hh})}function Wb(n){return _h(vh(n))}function Xb(n){return arguments.length?cl=Wb(n):cl}const Zb=n=>n!=null&&n===n,$b=n=>n==="true"||n==="false"||n===!0||n===!1,eE=n=>!Number.isNaN(Date.parse(n)),Yh=n=>!Number.isNaN(+n)&&!(n instanceof Date),tE=n=>Yh(n)&&Number.isInteger(+n),Jh={boolean:y2,integer:Ni,number:Ni,date:b2,string:E2,unknown:Co},Vo=[$b,tE,Yh,eE],nE=["boolean","integer","number","date"];function rE(n,e){if(!n||!n.length)return"unknown";const t=n.length,r=Vo.length,i=Vo.map((s,o)=>o+1);for(let s=0,o=0,a,l;s<t;++s)for(l=e?n[s][e]:n[s],a=0;a<r;++a)if(i[a]&&Zb(l)&&!Vo[a](l)&&(i[a]=0,++o,o===Vo.length))return"string";return nE[i.reduce((s,o)=>s===0?o:s,0)-1]}function iE(n,e){return e.reduce((t,r)=>(t[r]=rE(n,r),t),{})}function qh(n){const e=function(t,r){const i={delimiter:n};return ll(t,r?p2(r,i):i)};return e.responseType="text",e}function ll(n,e){return e.header&&(n=e.header.map(Oc).join(e.delimiter)+`
8
+ `+n),ah(e.delimiter).parse(n+"")}ll.responseType="text";function sE(n){return typeof Buffer=="function"&&At(Buffer.isBuffer)?Buffer.isBuffer(n):!1}function ul(n,e){const t=e&&e.property?wo(e.property):Co;return ze(n)&&!sE(n)?oE(t(n),e):t(JSON.parse(n))}ul.responseType="json";function oE(n,e){return!ye(n)&&w2(n)&&(n=[...n]),e&&e.copy?JSON.parse(JSON.stringify(n)):n}const aE={interior:(n,e)=>n!==e,exterior:(n,e)=>n===e};function Kh(n,e){let t,r,i,s;return n=ul(n,e),e&&e.feature?(t=eI,i=e.feature):e&&e.mesh?(t=nI,i=e.mesh,s=aE[e.filter]):Ee("Missing TopoJSON feature or mesh parameter."),r=(r=n.objects[i])?t(n,r,s):Ee("Invalid TopoJSON object: "+i),r&&r.features||[r]}Kh.responseType="json";const fl={dsv:ll,csv:qh(","),tsv:qh(" "),json:ul,topojson:Kh};function Al(n,e){return arguments.length>1?(fl[n]=e,this):kr(fl,n)?fl[n]:null}function hl(n,e,t,r){e=e||{};const i=Al(e.type||"json");return i||Ee("Unknown data format type: "+e.type),n=i(n,e),e.parse&&cE(n,e.parse,t,r),kr(n,"columns")&&delete n.columns,n}function cE(n,e,t,r){if(!n.length)return;const i=Xb();t=t||i.timeParse,r=r||i.utcParse;let s=n.columns||Object.keys(n[0]),o,a,l,c,u,f;e==="auto"&&(e=iE(n,s)),s=Object.keys(e);const h=s.map(A=>{const d=e[A];let g,p;if(d&&(d.startsWith("date:")||d.startsWith("utc:")))return g=d.split(/:(.+)?/,2),p=g[1],(p[0]==="'"&&p[p.length-1]==="'"||p[0]==='"'&&p[p.length-1]==='"')&&(p=p.slice(1,-1)),(g[0]==="utc"?r:t)(p);if(!Jh[d])throw Error("Illegal format pattern: "+A+":"+d);return Jh[d]});for(l=0,u=n.length,f=s.length;l<u;++l)for(o=n[l],c=0;c<f;++c)a=s[c],o[a]=h[c](o[a])}const lE=`
25
9
  :root {
26
10
  --genome-spy-basic-spacing: 10px;
27
11
  --genome-spy-font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial,
@@ -265,44 +249,36 @@ flex-basis: content;
265
249
  font-size: 14px;
266
250
  padding: var(--genome-spy-basic-spacing);
267
251
  }
268
- `;function oQ(n,t){var e=n.getBoundingClientRect();return[t.clientX-e.left-n.clientLeft,t.clientY-e.top-n.clientTop]}function Js(n,t){return n.length==t.length&&n.every((e,r)=>n[r]===t[r])}function Ke(n){return Array.isArray(n)?n:typeof n<"u"?[n]:[]}function tf(n){return n[n.length-1]}class aQ{constructor(t){v(this,Xn,!1);v(this,Go,!0);v(this,Gr);v(this,Xi,0);v(this,zo);v(this,Cl,0);v(this,wt);v(this,zr);v(this,Ho,[!0]);Q(this,zr,t),Q(this,wt,document.createElement("div")),g(this,wt).className="tooltip",g(this,zr).appendChild(g(this,wt)),this.clear()}set sticky(t){!t&&g(this,Xn)&&this.clear(),Q(this,Xn,t),g(this,wt).classList.toggle("sticky",g(this,Xn))}get sticky(){return g(this,Xn)}set visible(t){t!=g(this,Go)&&(g(this,wt).style.display=t?null:"none",Q(this,Go,t))}get visible(){return g(this,Go)}get enabled(){return tf(g(this,Ho))??!0}pushEnabledState(t){g(this,Ho).push(t),t||(this.visible=!1)}popEnabledState(){g(this,Ho).pop()}handleMouseMove(t){if(g(this,Xn))return;this.mouseCoords=oQ(g(this,zr),t);const e=performance.now();!this.visible&&!this._isPenalty()&&e-g(this,Cl)>500&&Q(this,Xi,e+70),g(this,zo)&&cQ(this.mouseCoords,g(this,zo))>20&&Q(this,Xi,e+400),Q(this,zo,this.mouseCoords),this.visible&&this.updatePlacement(),Q(this,Cl,e)}updatePlacement(){const[e,r]=this.mouseCoords;let i=e+20;i>g(this,zr).clientWidth-g(this,wt).offsetWidth&&(i=e-20-g(this,wt).offsetWidth),g(this,wt).style.left=i+"px",g(this,wt).style.top=Math.min(r+20,g(this,zr).clientHeight-g(this,wt).offsetHeight)+"px"}setContent(t){if(!g(this,Xn)){if(!t||!this.enabled||this._isPenalty()){this.visible&&(Ka("",g(this,wt)),this.visible=!1),Q(this,Gr,void 0);return}Ka(t,g(this,wt)),this.visible=!0,this.updatePlacement()}}clear(){Q(this,Gr,void 0),this.setContent(void 0)}updateWithDatum(t,e){if(t!==g(this,Gr)){Q(this,Gr,t),e||(e=i=>Promise.resolve(me` ${JSON.stringify(i)} `));const r=t;e(t).then(i=>{g(this,Gr)===r&&this.setContent(i)}).catch(i=>{if(i!=="debounced")throw i})}}_isPenalty(){return g(this,Xi)&&g(this,Xi)>performance.now()}}Xn=new WeakMap,Go=new WeakMap,Gr=new WeakMap,Xi=new WeakMap,zo=new WeakMap,Cl=new WeakMap,wt=new WeakMap,zr=new WeakMap,Ho=new WeakMap;function cQ(n,t){let e=0;for(let r=0;r<n.length;r++)e+=(n[r]-t[r])**2;return Math.sqrt(e)}function lQ(n){n.classList.add("genome-spy");const t=document.createElement("style");t.innerHTML=sQ,n.appendChild(t);const e=a1("div",{class:"canvas-wrapper"});n.appendChild(e),e.classList.add("loading");const r=a1("div",{class:"loading-indicators"});e.appendChild(r);const i=new aQ(n);return{canvasWrapper:e,loadingIndicatorsElement:r,tooltip:i,styleElement:t}}function uQ(n,t){const e=document.createElement("div");e.className="message-box";const r=document.createElement("div");r.textContent=t,e.appendChild(r),n.appendChild(e)}function a1(n,t){const e=document.createElement(n);for(const[r,i]of Object.entries(t))["innerHTML","innerText","className"].includes(r)&&(e[r]=i),e.setAttribute(r,i);return e}/**
269
- * @license
270
- * Copyright 2017 Google LLC
271
- * SPDX-License-Identifier: BSD-3-Clause
272
- */const fQ={ATTRIBUTE:1},AQ=n=>(...t)=>({_$litDirective$:n,values:t});let hQ=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,r){this._$Ct=t,this._$AM=e,this._$Ci=r}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};/**
273
- * @license
274
- * Copyright 2018 Google LLC
275
- * SPDX-License-Identifier: BSD-3-Clause
276
- */const c1="important",dQ=" !"+c1,l1=AQ(class extends hQ{constructor(n){var t;if(super(n),n.type!==fQ.ATTRIBUTE||n.name!=="style"||((t=n.strings)==null?void 0:t.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(n){return Object.keys(n).reduce((t,e)=>{const r=n[e];return r==null?t:t+`${e=e.includes("-")?e:e.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(n,[t]){const{style:e}=n.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(const r of this.ft)t[r]==null&&(this.ft.delete(r),r.includes("-")?e.removeProperty(r):e[r]=null);for(const r in t){const i=t[r];if(i!=null){this.ft.add(r);const s=typeof i=="string"&&i.endsWith(dQ);r.includes("-")||s?e.setProperty(r,s?i.slice(0,-11):i,s?c1:""):e[r]=i}}return hi}}),u1="data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3cstyle%3e.spinner_ajPY{transform-origin:center;animation:spinner_AtaB%20.75s%20infinite%20linear}@keyframes%20spinner_AtaB{100%25{transform:rotate(360deg)}}%3c/style%3e%3cpath%20d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z'%20opacity='.25'/%3e%3cpath%20d='M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z'%20class='spinner_ajPY'/%3e%3c/svg%3e";class gQ{constructor(t,e){v(this,Zi);v(this,$i);v(this,es,null);Q(this,Zi,t),Q(this,$i,e),Q(this,es,g(this,$i).subscribe(()=>this.updateLayout())),this.updateLayout()}destroy(){g(this,es)&&(g(this,es).call(this),Q(this,es,null))}updateLayout(){const t=[],e=()=>{for(const[,s]of g(this,$i).entries())if(s.status=="loading"||s.status=="error")return!0;return!1};let r,i=!1;for(const[s,o]of g(this,$i).entries()){const a=o.status=="loading"||o.status=="error",l=s.coords;if(!l&&a&&!r&&(r=o),l){a&&(i=!0);const c={left:`${l.x}px`,top:`${l.y}px`,width:`${l.width}px`,height:`${l.height}px`};t.push(me`<div style=${l1(c)}>
252
+ `;function uE(n,e){var t=n.getBoundingClientRect();return[e.clientX-t.left-n.clientLeft,e.clientY-t.top-n.clientTop]}function Ur(n,e){return n.length==e.length&&n.every((t,r)=>n[r]===e[r])}function Me(n){return Array.isArray(n)?n:typeof n<"u"?[n]:[]}function _o(n){return n[n.length-1]}class fE{#e=!1;#t=!0;#n=void 0;#r=0;#s=void 0;#o=0;#i;#c;#a=[!0];constructor(e){this.#c=e,this.#i=document.createElement("div"),this.#i.className="tooltip",this.#c.appendChild(this.#i),this.clear()}set sticky(e){!e&&this.#e&&this.clear(),this.#e=e,this.#i.classList.toggle("sticky",this.#e)}get sticky(){return this.#e}set visible(e){e!=this.#t&&(this.#i.style.display=e?null:"none",this.#t=e)}get visible(){return this.#t}get enabled(){return _o(this.#a)??!0}pushEnabledState(e){this.#a.push(e),e||(this.visible=!1)}popEnabledState(){this.#a.pop()}handleMouseMove(e){if(this.#e)return;this.mouseCoords=uE(this.#c,e);const t=performance.now();!this.visible&&!this._isPenalty()&&t-this.#o>500&&(this.#r=t+70),this.#s&&AE(this.mouseCoords,this.#s)>20&&(this.#r=t+400),this.#s=this.mouseCoords,this.visible&&this.updatePlacement(),this.#o=t}updatePlacement(){const[t,r]=this.mouseCoords;let i=t+20;i>this.#c.clientWidth-this.#i.offsetWidth&&(i=t-20-this.#i.offsetWidth),this.#i.style.left=i+"px",this.#i.style.top=Math.min(r+20,this.#c.clientHeight-this.#i.offsetHeight)+"px"}setContent(e){if(!this.#e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(Vi("",this.#i),this.visible=!1),this.#n=void 0;return}Vi(e,this.#i),this.visible=!0,this.updatePlacement()}}clear(){this.#n=void 0,this.setContent(void 0)}updateWithDatum(e,t){if(e!==this.#n){this.#n=e,t||(t=i=>Promise.resolve(ce` ${JSON.stringify(i)} `));const r=e;t(e).then(i=>{this.#n===r&&this.setContent(i)}).catch(i=>{if(i!=="debounced")throw i})}}_isPenalty(){return this.#r&&this.#r>performance.now()}}function AE(n,e){let t=0;for(let r=0;r<n.length;r++)t+=(n[r]-e[r])**2;return Math.sqrt(t)}function hE(n){n.classList.add("genome-spy");const e=document.createElement("style");e.innerHTML=lE,n.appendChild(e);const t=jh("div",{class:"canvas-wrapper"});n.appendChild(t),t.classList.add("loading");const r=jh("div",{class:"loading-indicators"});t.appendChild(r);const i=new fE(n);return{canvasWrapper:t,loadingIndicatorsElement:r,tooltip:i,styleElement:e}}function dE(n,e){const t=document.createElement("div");t.className="message-box";const r=document.createElement("div");r.textContent=e,t.appendChild(r),n.appendChild(t)}function jh(n,e){const t=document.createElement(n);for(const[r,i]of Object.entries(e))["innerHTML","innerText","className"].includes(r)&&(t[r]=i),t.setAttribute(r,i);return t}const gE={ATTRIBUTE:1},pE=n=>(...e)=>({_$litDirective$:n,values:e});let mE=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,r){this._$Ct=e,this._$AM=t,this._$Ci=r}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}};const Wh="important",wE=" !"+Wh,Xh=pE(class extends mE{constructor(n){if(super(n),n.type!==gE.ATTRIBUTE||n.name!=="style"||n.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(n){return Object.keys(n).reduce((e,t)=>{const r=n[t];return r==null?e:e+`${t=t.includes("-")?t:t.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(n,[e]){const{style:t}=n.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(e)),this.render(e);for(const r of this.ft)e[r]==null&&(this.ft.delete(r),r.includes("-")?t.removeProperty(r):t[r]=null);for(const r in e){const i=e[r];if(i!=null){this.ft.add(r);const s=typeof i=="string"&&i.endsWith(wE);r.includes("-")||s?t.setProperty(r,s?i.slice(0,-11):i,s?Wh:""):t[r]=i}}return qn}}),Zh="data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3cstyle%3e.spinner_ajPY{transform-origin:center;animation:spinner_AtaB%20.75s%20infinite%20linear}@keyframes%20spinner_AtaB{100%25{transform:rotate(360deg)}}%3c/style%3e%3cpath%20d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z'%20opacity='.25'/%3e%3cpath%20d='M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z'%20class='spinner_ajPY'/%3e%3c/svg%3e";class CE{#e;#t;#n=null;constructor(e,t){this.#e=e,this.#t=t,this.#n=this.#t.subscribe(()=>this.updateLayout()),this.updateLayout()}destroy(){this.#n&&(this.#n(),this.#n=null)}updateLayout(){const e=[],t=()=>{for(const[,s]of this.#t.entries())if(s.status=="loading"||s.status=="error")return!0;return!1};let r,i=!1;for(const[s,o]of this.#t.entries()){const a=o.status=="loading"||o.status=="error",l=s.coords;if(!l&&a&&!r&&(r=o),l){a&&(i=!0);const c={left:`${l.x}px`,top:`${l.y}px`,width:`${l.width}px`,height:`${l.height}px`};e.push(ce`<div style=${Xh(c)}>
277
253
  <div class=${o.status}>
278
- ${o.status=="error"?me`<span
254
+ ${o.status=="error"?ce`<span
279
255
  >Loading
280
- failed${o.detail?me`: ${o.detail}`:Ne}</span
281
- >`:me`
282
- <img src="${u1}" alt="" />
256
+ failed${o.detail?ce`: ${o.detail}`:be}</span
257
+ >`:ce`
258
+ <img src="${Zh}" alt="" />
283
259
  <span>Loading...</span>
284
260
  `}
285
261
  </div>
286
- </div>`)}}if(r&&!i){const s={left:"0px",top:"0px",width:"100%",height:"100%"};t.push(me`<div style=${l1(s)}>
262
+ </div>`)}}if(r&&!i){const s={left:"0px",top:"0px",width:"100%",height:"100%"};e.push(ce`<div style=${Xh(s)}>
287
263
  <div class=${r.status}>
288
- ${r.status=="error"?me`<span
264
+ ${r.status=="error"?ce`<span
289
265
  >Loading
290
- failed${r.detail?me`: ${r.detail}`:Ne}</span
291
- >`:me`
292
- <img src="${u1}" alt="" />
266
+ failed${r.detail?ce`: ${r.detail}`:be}</span
267
+ >`:ce`
268
+ <img src="${Zh}" alt="" />
293
269
  <span>Loading...</span>
294
270
  `}
295
271
  </div>
296
- </div>`)}e()?g(this,Zi).style.display="block":setTimeout(()=>{e()||(g(this,Zi).style.display="none")},3e3),Ka(t,g(this,Zi))}}Zi=new WeakMap,$i=new WeakMap,es=new WeakMap;class f1{constructor(){v(this,Hr,new Map);v(this,ts,new Set)}set(t,e,r){if(!t)throw new Error("LoadingStatusRegistry.set requires a view.");g(this,Hr).set(t,{status:e,detail:r});const i={view:t,status:e,detail:r};for(const s of g(this,ts))s(i)}delete(t){const e=g(this,Hr).get(t);if(!e)return;g(this,Hr).delete(t);const r={view:t,status:e.status,detail:e.detail};for(const i of g(this,ts))i(r)}get(t){return g(this,Hr).get(t)}entries(){return g(this,Hr).entries()}subscribe(t){return g(this,ts).add(t),()=>{g(this,ts).delete(t)}}}Hr=new WeakMap,ts=new WeakMap;function pQ(n){return t=>{var e;if((e=n.querySelector(".view-highlight"))==null||e.remove(),t){if(!t.isConfiguredVisible())return;const r=t.coords;if(r){const i=document.createElement("div");i.className="view-highlight",i.style.position="absolute",i.style.left=r.x+"px",i.style.top=r.y+"px",i.style.width=r.width+"px",i.style.height=r.height+"px",i.style.border="1px solid green",i.style.backgroundColor="rgba(0, 255, 0, 0.1)",i.style.pointerEvents="none",n.appendChild(i)}}}}class mQ{constructor(){v(this,Vr);Q(this,Vr,new Map)}add(t,e){document.addEventListener(t,e);let r=g(this,Vr).get(t);r||(r=[],g(this,Vr).set(t,r)),r.push(e)}removeAll(){for(const[t,e]of g(this,Vr))for(const r of e)document.removeEventListener(t,r);g(this,Vr).clear()}}Vr=new WeakMap;class A1{constructor(){v(this,_r);Q(this,_r,new Map)}add(t,e){let r=g(this,_r).get(t);r||(r=new Set,g(this,_r).set(t,r)),r.add(e)}remove(t,e){var r;(r=g(this,_r).get(t))==null||r.delete(e)}emit(t,e){var r;(r=g(this,_r).get(t))==null||r.forEach(i=>i(e))}}_r=new WeakMap;function nf(n,t,e=!0){let r,i=o=>{};return function(...a){return new Promise((l,c)=>{const u=()=>{clearTimeout(r),i=f=>{},l(n(...a))};e&&i("debounced"),clearTimeout(r),i=c,r=window.setTimeout(u,typeof t=="function"?t():t)})}}const pn=1,Cr=2,_h=4;class Yh{constructor(t){v(this,rs);X(this,"stats",{count:0,first:null});v(this,wl,!1);v(this,ns,!1);v(this,Vo,[]);X(this,"paramRuntimeProvider",null);this.paramRuntimeProvider=t,this.children=[],this.parent=void 0,this.completed=!1}get behavior(){return 0}get label(){return`(${this.constructor.name})`}get disposed(){return g(this,ns)}reset(){this.completed=!1;for(const t of this.children)t.reset();this.stats.count=0,this.stats.first=null}initialize(){}initializeOnce(){g(this,wl)||(this.initialize(),Q(this,wl,!0))}setParent(t){this.parent=t}addChild(t){if(t.parent)throw new Error("Cannot add the child! It already has a parent.");return this.children.push(t),t.setParent(this),F(this,rs,xu).call(this),this}adopt(t){t.parent&&t.parent.removeChild(t),this.addChild(t)}adoptChildrenOf(t){for(const e of t.children)this.adopt(e)}insertAsParent(t){var e;if(this.isRoot())throw new Error("Cannot insert a new parent for a root node!");t.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=t,F(e=this.parent,rs,xu).call(e),this.parent=void 0,t.addChild(this)}removeChild(t){const e=this.children.indexOf(t);if(e>-1)this.children.splice(e,1),t.parent=void 0,F(this,rs,xu).call(this);else throw new Error("Trying to remove an unknown child node!")}excise(){var t;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,F(t=this.parent,rs,xu).call(t),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(t){t(this);for(const e of this.children)e.visit(t);t.afterChildren&&t.afterChildren(this)}subtreeToString(t=0){const e=this.children.map(r=>r.subtreeToString(t+1)).join("");return`${" ".repeat(t*2)}* ${this.label}${"identifier"in this&&this.identifier?": "+this.identifier:""}
297
- ${e}`}handle(t){this._propagate(t)}complete(){this.completed=!0;for(const t of this.children)t.complete()}registerDisposer(t){g(this,ns)?t():g(this,Vo).push(t)}dispose(){if(!g(this,ns)){Q(this,ns,!0);for(const t of g(this,Vo))t();g(this,Vo).length=0}}disposeSubtree(){const t=()=>{};t.afterChildren=e=>{e.dispose()},this.visit(t)}beginBatch(t){for(const e of this.children)e.beginBatch(t)}get paramRuntime(){if(this.paramRuntimeProvider&&this.paramRuntimeProvider.paramRuntime)return this.paramRuntimeProvider.paramRuntime;if(!this.parent)throw new Error("Cannot find paramRuntime!");return this.parent.paramRuntime}repropagate(){if(this.parent)this.parent.repropagate();else throw new Error("Cannot repropagate data, no FlowNode with stored data found!")}_propagate(t){}}wl=new WeakMap,ns=new WeakMap,Vo=new WeakMap,rs=new WeakSet,xu=function(){this._propagate=Function("children","stats",Xa(this.children.length).map(t=>`const child${t} = children[${t}];`).join(`
272
+ </div>`)}t()?this.#e.style.display="block":setTimeout(()=>{t()||(this.#e.style.display="none")},3e3),Vi(e,this.#e)}}class $h{#e=new Map;#t=new Set;set(e,t,r){if(!e)throw new Error("LoadingStatusRegistry.set requires a view.");this.#e.set(e,{status:t,detail:r});const i={view:e,status:t,detail:r};for(const s of this.#t)s(i)}delete(e){const t=this.#e.get(e);if(!t)return;this.#e.delete(e);const r={view:e,status:t.status,detail:t.detail};for(const i of this.#t)i(r)}get(e){return this.#e.get(e)}entries(){return this.#e.entries()}subscribe(e){return this.#t.add(e),()=>{this.#t.delete(e)}}}function yE(n){return e=>{if(n.querySelector(".view-highlight")?.remove(),e){if(!e.isConfiguredVisible())return;const t=e.coords;if(t){const r=document.createElement("div");r.className="view-highlight",r.style.position="absolute",r.style.left=t.x+"px",r.style.top=t.y+"px",r.style.width=t.width+"px",r.style.height=t.height+"px",r.style.border="1px solid green",r.style.backgroundColor="rgba(0, 255, 0, 0.1)",r.style.pointerEvents="none",n.appendChild(r)}}}}class IE{#e;constructor(){this.#e=new Map}add(e,t){document.addEventListener(e,t);let r=this.#e.get(e);r||(r=[],this.#e.set(e,r)),r.push(t)}removeAll(){for(const[e,t]of this.#e)for(const r of t)document.removeEventListener(e,r);this.#e.clear()}}class ed{#e;constructor(){this.#e=new Map}add(e,t){let r=this.#e.get(e);r||(r=new Set,this.#e.set(e,r)),r.add(t)}remove(e,t){this.#e.get(e)?.delete(t)}emit(e,t){this.#e.get(e)?.forEach(r=>r(t))}}function Yo(n,e,t=!0){let r,i=o=>{};return function(...a){return new Promise((l,c)=>{const u=()=>{clearTimeout(r),i=f=>{},l(n(...a))};t&&i("debounced"),clearTimeout(r),i=c,r=window.setTimeout(u,typeof e=="function"?e():e)})}}const Nt=1,yn=2,dl=4;class gl{stats={count:0,first:null};#e=!1;#t=!1;#n=[];paramRuntimeProvider=null;get behavior(){return 0}get label(){return`(${this.constructor.name})`}constructor(e){this.paramRuntimeProvider=e,this.children=[],this.parent=void 0,this.completed=!1}get disposed(){return this.#t}reset(){this.completed=!1;for(const e of this.children)e.reset();this.stats.count=0,this.stats.first=null}initialize(){}initializeOnce(){this.#e||(this.initialize(),this.#e=!0)}#r(){this._propagate=Function("children","stats",Ji(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
298
273
  `)+`return function propagate(datum) {
299
274
  if (stats.count === 0) {
300
275
  stats.first = structuredClone(datum);
301
276
  }
302
277
  stats.count++;
303
- ${Xa(this.children.length).map(t=>`child${t}.handle(datum);`).join(`
278
+ ${Ji(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
304
279
  `)}
305
- };`)(this.children,this.stats)};function h1(n){return n.type=="file"}function CQ(n){return n.type=="facet"}class ze extends Yh{constructor(e,r){super(r);v(this,yl);Q(this,yl,e.type)}get label(){return g(this,yl)}}yl=new WeakMap;const Gt="_uniqueId",d1=1e4,g1=[null];class Jh extends ze{get behavior(){return Cr}constructor(t){super(t),this.params=t,this.as=t.as??Gt,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(t){t[this.as]=this._nextId(),this._propagate(t)}_nextId(){return++this._id%d1==0&&(this._id=this._getBlock()*d1),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const t=g1.length;return g1[t]=this,this._blocks.push(t),this._usedBlocks++,t}}function ue(n,t=n){if(/^[A-Za-z0-9_]+$/.test(n)){const e=function(i){n in i||wQ(i,n)},r=new Function("validator",`
280
+ };`)(this.children,this.stats)}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.#r(),this}adopt(e){e.parent&&e.parent.removeChild(e),this.addChild(e)}adoptChildrenOf(e){for(const t of e.children)this.adopt(t)}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.#r(),this.parent=void 0,e.addChild(this)}removeChild(e){const t=this.children.indexOf(e);if(t>-1)this.children.splice(t,1),e.parent=void 0,this.#r();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.#r(),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 t of this.children)t.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){const t=this.children.map(r=>r.subtreeToString(e+1)).join("");return`${" ".repeat(e*2)}* ${this.label}${"identifier"in this&&this.identifier?": "+this.identifier:""}
281
+ ${t}`}handle(e){this._propagate(e)}complete(){this.completed=!0;for(const e of this.children)e.complete()}registerDisposer(e){this.#t?e():this.#n.push(e)}dispose(){if(!this.#t){this.#t=!0;for(const e of this.#n)e();this.#n.length=0}}disposeSubtree(){const e=()=>{};e.afterChildren=t=>{t.dispose()},this.visit(e)}beginBatch(e){for(const t of this.children)t.beginBatch(e)}get paramRuntime(){if(this.paramRuntimeProvider&&this.paramRuntimeProvider.paramRuntime)return this.paramRuntimeProvider.paramRuntime;if(!this.parent)throw new Error("Cannot find paramRuntime!");return this.parent.paramRuntime}repropagate(){if(this.parent)this.parent.repropagate();else throw new Error("Cannot repropagate data, no FlowNode with stored data found!")}_propagate(e){}}function td(n){return n.type=="file"}function bE(n){return n.type=="facet"}class Qe extends gl{#e;constructor(e,t){super(t),this.#e=e.type}get label(){return this.#e}}const dt="_uniqueId",nd=1e4,rd=[null];class pl extends Qe{get behavior(){return yn}constructor(e){super(e),this.params=e,this.as=e.as??dt,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%nd==0&&(this._id=this._getBlock()*nd),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=rd.length;return rd[e]=this,this._blocks.push(e),this._usedBlocks++,e}}function $(n,e=n){if(/^[A-Za-z0-9_]+$/.test(n)){const t=function(i){n in i||EE(i,n)},r=new Function("validator",`
306
282
  let validated = !validator;
307
283
  return function accessField(datum) {
308
284
  if (!validated) {
@@ -310,46 +286,46 @@ ${e}`}handle(t){this._propagate(t)}complete(){this.completed=!0;for(const t of t
310
286
  validated = true;
311
287
  }
312
288
  return datum[${JSON.stringify(n)}];
313
- }`)(e);return ne(r,[n],t)}else return ku(n)}function wQ(n,t){throw new Error(`Invalid field "${t}". Available fields or properties: ${Object.keys(n).join(", ")}`)}function p1(n,t,e){if(!n)return;function r(s){const o=s;return o.fields??(o.fields=[]),o.constant=o.fields.length===0,o.channelDef=t,o.channel=n,o.sourceKey=IQ(t),o.scaleChannel=((zt(t)&&t.resolutionChannel)??(sf(n)&&n))||void 0,o.scaleChannel!==void 0&&(o.domainKeyBase=C1({scaleChannel:o.scaleChannel,source:qh(t)}).domainKeyBase),"param"in t?(o.predicate=T1(!1),o.predicate.param=t.param,o.predicate.empty=t.empty??!0):(o.predicate=T1(!0),o.predicate.empty=!1),o.equals=a=>a?o===a||o.sourceKey!==void 0&&o.sourceKey===a.sourceKey:!1,o.asNumberAccessor=()=>o,o}function i(s){if(Me(s)){const o=r(e.createExpression(s.expr));if(o.fields.length>0)throw new Error("Expression in DatumDef/ValueDef cannot access data fields: "+s.expr);return o}else{const o=s;return r(()=>o)}}if(Gn(t))try{return r(ue(t.field))}catch(s){throw new Error(`Invalid field definition: ${s.message}`)}else{if(Ks(t))return r(e.createExpression(t.expr));if(qs(t))return i(t.datum);if(Ft(t))return i(t.value);throw new Error(`Invalid channel definition: "${n}": ${JSON.stringify(t)}! The channel definition must contain one of the following properties: "field", "datum", "value" or "expr".`)}}function yQ(n,t,e){const r=[];if(vQ(t)||Kh(t)){const i=Array.isArray(t.condition)?t.condition:[t.condition];for(const s of i)r.push(p1(n,s,e))}if(r.push(p1(n,t,e)),r.filter(i=>!i.constant).length>1)throw new Error("Only one accessor can be non-constant. Channel: "+n);return r}function m1(n){return n.scaleChannel!==void 0}function qh(n){if(Gn(n))return{kind:"field",value:n.field};if(Ks(n))return{kind:"expr",value:n.expr};if(qs(n))return{kind:"datum",value:n.datum};if(Ft(n))return{kind:"value",value:n.value};throw new Error("Cannot derive a domain key from channel definition: "+JSON.stringify(n))}function IQ(n){const t=qh(n);return t.kind==="datum"||t.kind==="value"?"constant|"+I1(t.value):t.kind+"|"+y1(t)}function C1({scaleChannel:n,source:t,type:e}){if(!n)throw new Error("Cannot build a domain key without a scale channel.");const r=n+"|"+t.kind+"|"+y1(t),i=e?e+"|"+r:void 0;return{domainKeyBase:r,domainKey:i}}function w1(n,t){const{domainKey:e,domainKeyBase:r}=C1({scaleChannel:n.scaleChannel,source:qh(n.channelDef),type:t});if(!e)throw new Error("Cannot finalize a domain key without a resolved type.");return n.domainKeyBase=r,n.domainKey=e,e}function y1(n){switch(n.kind){case"field":case"expr":return n.value;case"datum":case"value":return I1(n.value);default:throw new Error("Unknown domain key source.")}}function I1(n){return Me(n)?"expr:"+n.expr:n===void 0?"undefined":JSON.stringify(n)}function EQ(n,t){const e={},r=i=>{var s;return(s=n.getScaleResolution(i))==null?void 0:s.getScale()};for(const[i,s]of Object.entries(t)){if(!s)continue;const o=i;if(bQ(o))continue;const a=s;e[o]=xQ(yQ(o,a,n.paramRuntime),r)}return e}function bQ(n){return n==="key"||n==="search"}function xQ(n,t){if(n.length===1)return E1(n[0],t);const e=n.map(s=>s.predicate),r=n.map(s=>E1(s,t));return Object.assign(s=>{for(let o=0;o<r.length;o++)if(e[o](s))return r[o](s)},{constant:!1,accessors:r.map(s=>s.accessors[0]),dataAccessor:r.map(s=>s.dataAccessor).find(s=>s),scale:r.map(s=>s.scale).find(s=>s),channelDef:n.at(-1).channelDef})}function E1(n,t){const{channel:e,scaleChannel:r,channelDef:i}=n,s=n.scaleChannel?t(r):void 0;if(r&&!s)throw new Error(`Missing scale! "${e}": ${JSON.stringify(i)}`);return Object.assign(s?o=>s(n(o)):o=>n(o),{scale:s,constant:n.constant,accessors:[n],dataAccessor:n.constant?void 0:n,channelDef:i})}function Ft(n){return n&&"value"in n}function Gn(n){return n&&"field"in n}function qs(n){return n&&"datum"in n}function zt(n){return Gn(n)||qs(n)||Ks(n)||x1(n)}function b1(n){if(Kh(n)){const t=n.condition;if(!Array.isArray(t)&&zt(t))return t}else if(zt(n))return n}function BQ(n,t){const e=n.mark.encoding[t];if(!Array.isArray(e)&&zt(e))return e;throw new Error("Not a channel def with scale!")}function x1(n){return n&&"chrom"in n}function Ks(n){return n&&"expr"in n}function vQ(n){return(Gn(n)||qs(n))&&"condition"in n}function Kh(n){return Ft(n)&&"condition"in n}const Ei=["x","y"],SQ=["x2","y2"],QQ=[...Ei,...SQ];function jh(n){return Ei.includes(n)}function dc(n){return QQ.includes(n)}const B1={x:"x2",y:"y2"},v1=Object.fromEntries(Object.entries(B1).map(n=>[n[1],n[0]]));function Wh(n){return n in v1}function Xh(n){const t=B1[n];if(t)return t;throw new Error(`${n} has no secondary channel!`)}function wr(n){return v1[n]??n}function yr(n){return["color","fill","stroke"].includes(wr(n))}function rf(n){return["shape"].includes(n)}function sf(n){return["x","y","x2","y2","color","fill","stroke","opacity","fillOpacity","strokeOpacity","strokeWidth","size","shape","angle","dx","dy","sample"].includes(n)}function DQ(n){switch(n){case"shape":return["circle","square","cross","diamond","triangle-up","triangle-right","triangle-down","triangle-left","tick-up","tick-right","tick-down","tick-left"]}}function S1(n){if(!rf(n))throw new Error("Not a discrete channel: "+n);const t=new Map(DQ(n).map((e,r)=>[e,r]));return e=>{const r=t.get(e);if(r!==void 0)return r;throw new Error(`Invalid value for "${n}" channel: ${e}`)}}function Zh(n){return{type:"single",datum:n,uniqueId:n==null?void 0:n[Gt]}}function $h(n){return n??(n=[]),{type:"multi",data:new Map(n.map(t=>[t[Gt],t]))}}function Q1(n){return{type:"interval",intervals:Object.fromEntries(n.map(t=>[t,null]))}}function kQ(n,{add:t,remove:e,toggle:r}){const i=n.data;for(const s of t??[])i.set(s[Gt],s);for(const s of e??[])i.delete(s[Gt]);for(const s of r??[]){const o=s[Gt];i.has(o)?i.delete(o):i.set(o,s)}return{type:"multi",data:i}}function FQ(n,t){const e=!!(n.empty??!0),r=mn(n.param),i=n.fields??{};if(k1(t))return`${r}.uniqueId == null ? ${e} : ${r}.uniqueId === datum[${JSON.stringify(Gt)}]`;if(ed(t))return`${r}.data.size == 0 ? ${e} : mapHasKey(${r}.data, datum[${JSON.stringify(Gt)}])`;if(D1(t)){const s=Object.keys(t.intervals),o=Object.keys(i).filter(jh);if(o.length===0)throw new Error("Filtering using interval selections requires at least one primary positional channel in the config! "+JSON.stringify(n));if(o.some(c=>!s.includes(c)))throw new Error(`Selection channels (${s.join(", ")}) do not match the fields: ${JSON.stringify(n)}!`);const a=c=>`datum[${JSON.stringify(c)}]`;return s.map(c=>{const u=Xh(c),f=i[c],h=i[u]??i[c],A=`${r}.intervals.${c}[0] <= ${a(h)}`,d=`${a(f)} <= ${r}.intervals.${c}[1]`;return`(${r}.intervals.${c} ? (${A} && ${d}) : ${e})`}).join(" && ")}else throw new Error(`Unrecognized selection type : ${JSON.stringify(t)}`)}function D1(n){return n.type==="interval"}function k1(n){return n.type==="single"}function ed(n){return n.type==="multi"}function of(n){const t=typeof n=="string"?{type:n}:{...n};return t.on=t.on?M1(t.on):af(t)?{type:"click"}:void 0,t.clear=t.clear===!1?void 0:t.clear===!0||t.clear==null?{type:"dblclick"}:M1(t.clear),af(t)&&t.on.type==="click"&&(t.toggle=!0),t}function af(n){return n&&n.type=="point"}function F1(n){return n&&n.type=="interval"}function R1(n){return Object.values(n.intervals).some(t=>t&&t.length===2)}function RQ(n,t){return Object.entries(n.intervals).every(([e,r])=>(e=="x"||e=="y")&&r&&r[0]<=t[e]&&r[1]>=t[e])}function M1(n){if(typeof n=="string"){const t=n.match(/^([a-zA-Z]+)(?:\[(.+)\])?$/);if(!t)throw new Error(`Invalid event type string: ${n}`);const[,e,r]=t,i={type:e};return r&&(i.filter=r),i}else return n}function Me(n){return typeof n=="object"&&n!=null&&"expr"in n&&we(n.expr)}function Oe(n){if(Me(n))throw new Error("ExprRef "+JSON.stringify(n)+" not allowed here. Expected a scalar value.");return n}function N1(n){return("expr"in n||"bind"in n)&&!("select"in n)}function td(n){return!("expr"in n||"bind"in n)&&"select"in n}function mn(n){if(!/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(n))throw new Error("Invalid parameter name: "+n+". Must be a valid JavaScript identifier.");return n}function nd(n,t,e){if("select"in n){const r=of(n.select);if(af(r))return r.toggle?$h():Zh(null);if(F1(r)){if(!r.encodings)throw new Error('Interval selection "'+n.name+'" must have encodings defined!');return Q1(r.encodings)}throw new Error('Unknown selection config for parameter "'+n.name+'".')}if("expr"in n){const r=t==null?void 0:t.createExpression(n.expr);if(!r)throw new Error('Cannot evaluate expression for parameter "'+n.name+'".');return r(null)}return"value"in n?n.value:null}function gc(n,t,e,r,i={}){const s={...t},o=new Set;let a=!1,l=!1;const c=i.batchMode??"microtask",u=()=>{l=!0,o.clear(),a=!1};r==null||r(u);const f=()=>{if(l)return;if(!e||o.size===0){a=!1;return}const A=new Set(o);o.clear(),a=!1,e(A)},h=A=>{l||(o.add(A),a||(a=!0,queueMicrotask(()=>{l||(c=="whenPropagated"&&n.whenPropagated?n.whenPropagated().then(f).catch(()=>{f()}):f())})))};for(const[A,d]of Object.entries(t))if(Me(d))if(e){const p=()=>h(A),C=n.watchExpression?n.watchExpression(d.expr,p,{scopeOwned:!r,registerDisposer:r}):n.createExpression(d.expr);if(!n.watchExpression){const m=C.subscribe(p);r==null||r(m)}Object.defineProperty(s,A,{enumerable:!0,get(){return C()}})}else{const p=n.createExpression(d.expr);Object.defineProperty(s,A,{enumerable:!0,get(){return p()}})}else s[A]=d;return s}function T1(n){return Object.assign(()=>n,{subscribe:()=>()=>{},invalidate:()=>{},identifier:()=>"constant",fields:[],globals:[],code:JSON.stringify(n)})}function MQ(n){const t=Math.floor(Math.random()*16777215).toString(16),e=[];for(const r of n.paramConfigs.values()){if(!N1(r))continue;const i=r.bind;if(!i||!("input"in i))continue;const s=r.name,o=f=>{n.setValue(s,f)},a=n.getValue(s),l=i.name??s,c=i.debounce?nf(o,i.debounce,!1):o,u=`${t}-param-${s}`;if(i.input=="range")e.push(me`<label for=${u}>${l}</label>
289
+ }`)(t);return ft(r,[n],e)}else return wo(n)}function EE(n,e){throw new Error(`Invalid field "${e}". Available fields or properties: ${Object.keys(n).join(", ")}`)}function id(n,e,t){if(!n)return;function r(s){const o=s;return o.fields??=[],o.constant=o.fields.length===0,o.channelDef=e,o.channel=n,o.sourceKey=BE(e),o.scaleChannel=((gt(e)&&e.resolutionChannel)??(qo(n)&&n))||void 0,o.scaleChannel!==void 0&&(o.domainKeyBase=od({scaleChannel:o.scaleChannel,source:ml(e)}).domainKeyBase),"param"in e?(o.predicate=Ed(!1),o.predicate.param=e.param,o.predicate.empty=e.empty??!0):(o.predicate=Ed(!0),o.predicate.empty=!1),o.equals=a=>a?o===a||o.sourceKey!==void 0&&o.sourceKey===a.sourceKey:!1,o.asNumberAccessor=()=>o,o}function i(s){if(Ie(s)){const o=r(t.createExpression(s.expr));if(o.fields.length>0)throw new Error("Expression in DatumDef/ValueDef cannot access data fields: "+s.expr);return o}else{const o=s;return r(()=>o)}}if(en(e))try{return r($(e.field))}catch(s){throw new Error(`Invalid field definition: ${s.message}`)}else{if(zr(e))return r(t.createExpression(e.expr));if(Gr(e))return i(e.datum);if(ut(e))return i(e.value);throw new Error(`Invalid channel definition: "${n}": ${JSON.stringify(e)}! The channel definition must contain one of the following properties: "field", "datum", "value" or "expr".`)}}function xE(n,e,t){const r=[];if(kE(e)||wl(e)){const i=Array.isArray(e.condition)?e.condition:[e.condition];for(const s of i)r.push(id(n,s,t))}if(r.push(id(n,e,t)),r.filter(i=>!i.constant).length>1)throw new Error("Only one accessor can be non-constant. Channel: "+n);return r}function sd(n){return n.scaleChannel!==void 0}function ml(n){if(en(n))return{kind:"field",value:n.field};if(zr(n))return{kind:"expr",value:n.expr};if(Gr(n))return{kind:"datum",value:n.datum};if(ut(n))return{kind:"value",value:n.value};throw new Error("Cannot derive a domain key from channel definition: "+JSON.stringify(n))}function BE(n){const e=ml(n);return e.kind==="datum"||e.kind==="value"?"constant|"+ld(e.value):e.kind+"|"+cd(e)}function od({scaleChannel:n,source:e,type:t}){if(!n)throw new Error("Cannot build a domain key without a scale channel.");const r=n+"|"+e.kind+"|"+cd(e),i=t?t+"|"+r:void 0;return{domainKeyBase:r,domainKey:i}}function ad(n,e){const{domainKey:t,domainKeyBase:r}=od({scaleChannel:n.scaleChannel,source:ml(n.channelDef),type:e});if(!t)throw new Error("Cannot finalize a domain key without a resolved type.");return n.domainKeyBase=r,n.domainKey=t,t}function cd(n){switch(n.kind){case"field":case"expr":return n.value;case"datum":case"value":return ld(n.value);default:throw new Error("Unknown domain key source.")}}function ld(n){return Ie(n)?"expr:"+n.expr:n===void 0?"undefined":JSON.stringify(n)}function vE(n,e){const t={},r=i=>n.getScaleResolution(i)?.getScale();for(const[i,s]of Object.entries(e)){if(!s)continue;const o=i;if(SE(o))continue;const a=s;t[o]=QE(xE(o,a,n.paramRuntime),r)}return t}function SE(n){return n==="key"||n==="search"}function QE(n,e){if(n.length===1)return ud(n[0],e);const t=n.map(s=>s.predicate),r=n.map(s=>ud(s,e));return Object.assign(s=>{for(let o=0;o<r.length;o++)if(t[o](s))return r[o](s)},{constant:!1,accessors:r.map(s=>s.accessors[0]),dataAccessor:r.map(s=>s.dataAccessor).find(s=>s),scale:r.map(s=>s.scale).find(s=>s),channelDef:n.at(-1).channelDef})}function ud(n,e){const{channel:t,scaleChannel:r,channelDef:i}=n,s=n.scaleChannel?e(r):void 0;if(r&&!s)throw new Error(`Missing scale! "${t}": ${JSON.stringify(i)}`);return Object.assign(s?o=>s(n(o)):o=>n(o),{scale:s,constant:n.constant,accessors:[n],dataAccessor:n.constant?void 0:n,channelDef:i})}function ut(n){return n&&"value"in n}function en(n){return n&&"field"in n}function Gr(n){return n&&"datum"in n}function gt(n){return en(n)||Gr(n)||zr(n)||Ad(n)}function fd(n){if(wl(n)){const e=n.condition;if(!Array.isArray(e)&&gt(e))return e}else if(gt(n))return n}function DE(n,e){const t=n.mark.encoding[e];if(!Array.isArray(t)&&gt(t))return t;throw new Error("Not a channel def with scale!")}function Ad(n){return n&&"chrom"in n}function zr(n){return n&&"expr"in n}function kE(n){return(en(n)||Gr(n))&&"condition"in n}function wl(n){return ut(n)&&"condition"in n}const tr=["x","y"],FE=["x2","y2"],RE=[...tr,...FE];function Cl(n){return tr.includes(n)}function ls(n){return RE.includes(n)}const hd={x:"x2",y:"y2"},dd=Object.fromEntries(Object.entries(hd).map(n=>[n[1],n[0]]));function yl(n){return n in dd}function Il(n){const e=hd[n];if(e)return e;throw new Error(`${n} has no secondary channel!`)}function In(n){return dd[n]??n}function bn(n){return["color","fill","stroke"].includes(In(n))}function Jo(n){return["shape"].includes(n)}function qo(n){return["x","y","x2","y2","color","fill","stroke","opacity","fillOpacity","strokeOpacity","strokeWidth","size","shape","angle","dx","dy","sample"].includes(n)}function ME(n){if(n==="shape")return["circle","square","cross","diamond","triangle-up","triangle-right","triangle-down","triangle-left","tick-up","tick-right","tick-down","tick-left"]}function gd(n){if(!Jo(n))throw new Error("Not a discrete channel: "+n);const e=new Map(ME(n).map((t,r)=>[t,r]));return t=>{const r=e.get(t);if(r!==void 0)return r;throw new Error(`Invalid value for "${n}" channel: ${t}`)}}function bl(n){return{type:"single",datum:n,uniqueId:n?.[dt]}}function El(n){return n??=[],{type:"multi",data:new Map(n.map(e=>[e[dt],e]))}}function pd(n){return{type:"interval",intervals:Object.fromEntries(n.map(e=>[e,null]))}}function NE(n,{add:e,remove:t,toggle:r}){const i=n.data;for(const s of e??[])i.set(s[dt],s);for(const s of t??[])i.delete(s[dt]);for(const s of r??[]){const o=s[dt];i.has(o)?i.delete(o):i.set(o,s)}return{type:"multi",data:i}}function TE(n,e){const t=!!(n.empty??!0),r=Tt(n.param),i=n.fields??{};if(wd(e))return`${r}.uniqueId == null ? ${t} : ${r}.uniqueId === datum[${JSON.stringify(dt)}]`;if(xl(e))return`${r}.data.size == 0 ? ${t} : mapHasKey(${r}.data, datum[${JSON.stringify(dt)}])`;if(md(e)){const s=Object.keys(e.intervals),o=Object.keys(i).filter(Cl);if(o.length===0)throw new Error("Filtering using interval selections requires at least one primary positional channel in the config! "+JSON.stringify(n));if(o.some(c=>!s.includes(c)))throw new Error(`Selection channels (${s.join(", ")}) do not match the fields: ${JSON.stringify(n)}!`);const a=c=>`datum[${JSON.stringify(c)}]`;return s.map(c=>{const u=Il(c),f=i[c],h=i[u]??i[c],A=`${r}.intervals.${c}[0] <= ${a(h)}`,d=`${a(f)} <= ${r}.intervals.${c}[1]`;return`(${r}.intervals.${c} ? (${A} && ${d}) : ${t})`}).join(" && ")}else throw new Error(`Unrecognized selection type : ${JSON.stringify(e)}`)}function md(n){return n.type==="interval"}function wd(n){return n.type==="single"}function xl(n){return n.type==="multi"}function Ko(n){const e=typeof n=="string"?{type:n}:{...n};return e.on=e.on?Id(e.on):jo(e)?{type:"click"}:void 0,e.clear=e.clear===!1?void 0:e.clear===!0||e.clear==null?{type:"dblclick"}:Id(e.clear),jo(e)&&e.on.type==="click"&&(e.toggle=!0),e}function jo(n){return n&&n.type=="point"}function Cd(n){return n&&n.type=="interval"}function yd(n){return Object.values(n.intervals).some(e=>e&&e.length===2)}function PE(n,e){return Object.entries(n.intervals).every(([t,r])=>(t=="x"||t=="y")&&r&&r[0]<=e[t]&&r[1]>=e[t])}function Id(n){if(typeof n=="string"){const e=n.match(/^([a-zA-Z]+)(?:\[(.+)\])?$/);if(!e)throw new Error(`Invalid event type string: ${n}`);const[,t,r]=e,i={type:t};return r&&(i.filter=r),i}else return n}function Ie(n){return typeof n=="object"&&n!=null&&"expr"in n&&le(n.expr)}function xe(n){if(Ie(n))throw new Error("ExprRef "+JSON.stringify(n)+" not allowed here. Expected a scalar value.");return n}function bd(n){return("expr"in n||"bind"in n)&&!("select"in n)}function Bl(n){return!("expr"in n||"bind"in n)&&"select"in n}function Tt(n){if(!/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(n))throw new Error("Invalid parameter name: "+n+". Must be a valid JavaScript identifier.");return n}function vl(n,e,t){if("select"in n){const r=Ko(n.select);if(jo(r))return r.toggle?El():bl(null);if(Cd(r)){if(!r.encodings)throw new Error('Interval selection "'+n.name+'" must have encodings defined!');return pd(r.encodings)}throw new Error('Unknown selection config for parameter "'+n.name+'".')}if("expr"in n){const r=e?.createExpression(n.expr);if(!r)throw new Error('Cannot evaluate expression for parameter "'+n.name+'".');return r(null)}return"value"in n?n.value:null}function us(n,e,t,r,i={}){const s={...e},o=new Set;let a=!1,l=!1;const c=i.batchMode??"microtask";r?.(()=>{l=!0,o.clear(),a=!1});const f=()=>{if(l)return;if(!t||o.size===0){a=!1;return}const A=new Set(o);o.clear(),a=!1,t(A)},h=A=>{l||(o.add(A),a||(a=!0,queueMicrotask(()=>{l||(c=="whenPropagated"&&n.whenPropagated?n.whenPropagated().then(f).catch(()=>{f()}):f())})))};for(const[A,d]of Object.entries(e))if(Ie(d))if(t){const g=()=>h(A),p=n.watchExpression?n.watchExpression(d.expr,g,{scopeOwned:!r,registerDisposer:r}):n.createExpression(d.expr);if(!n.watchExpression){const m=p.subscribe(g);r?.(m)}Object.defineProperty(s,A,{enumerable:!0,get(){return p()}})}else{const g=n.createExpression(d.expr);Object.defineProperty(s,A,{enumerable:!0,get(){return g()}})}else s[A]=d;return s}function Ed(n){return Object.assign(()=>n,{subscribe:()=>()=>{},invalidate:()=>{},identifier:()=>"constant",fields:[],globals:[],code:JSON.stringify(n)})}function LE(n){const e=Math.floor(Math.random()*16777215).toString(16),t=[];for(const r of n.paramConfigs.values()){if(!bd(r))continue;const i=r.bind;if(!i||!("input"in i))continue;const s=r.name,o=f=>{n.setValue(s,f)},a=n.getValue(s),l=i.name??s,c=i.debounce?Yo(o,i.debounce,!1):o,u=`${e}-param-${s}`;if(i.input=="range")t.push(ce`<label for=${u}>${l}</label>
314
290
  <div>
315
291
  <input
316
292
  id=${u}
317
293
  type="range"
318
294
  min=${i.min??0}
319
295
  max=${i.max??100}
320
- step=${i.step??Ci(i.min,i.max,100)}
296
+ step=${i.step??Xn(i.min,i.max,100)}
321
297
  .value=${a}
322
298
  @input=${f=>{c(f.target.valueAsNumber),f.target.nextElementSibling.textContent=f.target.valueAsNumber}}
323
299
  /><span>${a}</span>
324
- </div>`);else if(i.input=="checkbox")e.push(me`<label for=${u}>${l}</label>
300
+ </div>`);else if(i.input=="checkbox")t.push(ce`<label for=${u}>${l}</label>
325
301
  <input
326
302
  id=${u}
327
303
  type="checkbox"
328
304
  ?checked=${a}
329
305
  @input=${f=>c(f.target.checked)}
330
- />`);else if(i.input=="radio")e.push(me`<span class="label">${l}</span>
306
+ />`);else if(i.input=="radio")t.push(ce`<span class="label">${l}</span>
331
307
  <div class="radio-group">
332
- ${i.options.map((f,h)=>{var A;return me`<label>
308
+ ${i.options.map((f,h)=>ce`<label>
333
309
  <input
334
310
  type="radio"
335
311
  name=${s}
336
312
  value=${f}
337
313
  .checked=${a==f}
338
- @input=${d=>c(d.target.value)}
339
- />${((A=i.labels)==null?void 0:A[h])??f}</label
340
- >`})}
341
- </div>`);else if(i.input=="select")e.push(me`<label for=${u}>${l}</label>
314
+ @input=${A=>c(A.target.value)}
315
+ />${i.labels?.[h]??f}</label
316
+ >`)}
317
+ </div>`);else if(i.input=="select")t.push(ce`<label for=${u}>${l}</label>
342
318
  <select
343
319
  id=${u}
344
320
  @input=${f=>c(f.target.value)}
345
321
  >
346
- ${i.options.map((f,h)=>{var A;return me`<option
322
+ ${i.options.map((f,h)=>ce`<option
347
323
  value=${f}
348
324
  ?selected=${a==f}
349
325
  >
350
- ${((A=i.labels)==null?void 0:A[h])??f}
351
- </option>`})}
352
- </select> `);else if(i.input=="text"||i.input=="number"||i.input=="color")e.push(me`<label for=${u}>${l}</label>
326
+ ${i.labels?.[h]??f}
327
+ </option>`)}
328
+ </select> `);else if(i.input=="text"||i.input=="number"||i.input=="color")t.push(ce`<label for=${u}>${l}</label>
353
329
  <div>
354
330
  <input
355
331
  id=${u}
@@ -360,9 +336,7 @@ ${e}`}handle(t){this._propagate(t)}complete(){this.completed=!0;for(const t of t
360
336
  @focus=${f=>f.target.select()}
361
337
  @input=${f=>{c(i.input=="number"?f.target.valueAsNumber:f.target.value)}}
362
338
  />
363
- </div>`);else throw new Error("Unsupported input type: "+i.input);i.description&&e.push(me`<div class="description">${i.description}</div>`)}return e}class NQ{constructor(t,e){v(this,Il);v(this,El);v(this,Dn);Q(this,Il,t),Q(this,El,e),Q(this,Dn,void 0)}initialize(t){const e=[];t.visit(i=>{const s=i.paramRuntime;e.push(...MQ(s))});const r=g(this,El).inputBindingContainer;if(!(!r||r=="none"||!e.length)){if(Q(this,Dn,document.createElement("div")),g(this,Dn).className="gs-input-bindings",r=="default")g(this,Il).appendChild(g(this,Dn));else if(r instanceof HTMLElement)r.appendChild(g(this,Dn));else throw new Error("Invalid inputBindingContainer");e.length&&Ka(me`<div class="gs-input-binding">${e}</div>`,g(this,Dn))}}remove(){var t;(t=g(this,Dn))==null||t.remove()}}Il=new WeakMap,El=new WeakMap,Dn=new WeakMap;/* @license twgl.js 4.24.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
364
- Available via the MIT license.
365
- see: http://github.com/greggman/twgl.js for details */const rd=5120,pc=5121,id=5122,sd=5123,od=5124,ad=5125,cd=5126,TQ=32819,PQ=32820,LQ=33635,OQ=5131,UQ=33640,GQ=35899,zQ=35902,HQ=36269,VQ=34042,P1={};{const n=P1;n[rd]=Int8Array,n[pc]=Uint8Array,n[id]=Int16Array,n[sd]=Uint16Array,n[od]=Int32Array,n[ad]=Uint32Array,n[cd]=Float32Array,n[TQ]=Uint16Array,n[PQ]=Uint16Array,n[LQ]=Uint16Array,n[OQ]=Uint16Array,n[UQ]=Uint32Array,n[GQ]=Uint32Array,n[zQ]=Uint32Array,n[HQ]=Uint32Array,n[VQ]=Uint32Array}function ld(n){if(n instanceof Int8Array)return rd;if(n instanceof Uint8Array||n instanceof Uint8ClampedArray)return pc;if(n instanceof Int16Array)return id;if(n instanceof Uint16Array)return sd;if(n instanceof Int32Array)return od;if(n instanceof Uint32Array)return ad;if(n instanceof Float32Array)return cd;throw new Error("unsupported typed array type")}function _Q(n){if(n===Int8Array)return rd;if(n===Uint8Array||n===Uint8ClampedArray)return pc;if(n===Int16Array)return id;if(n===Uint16Array)return sd;if(n===Int32Array)return od;if(n===Uint32Array)return ad;if(n===Float32Array)return cd;throw new Error("unsupported typed array type")}function YQ(n){const t=P1[n];if(!t)throw new Error("unknown gl type");return t}const cf=typeof SharedArrayBuffer<"u"?function(t){return t&&t.buffer&&(t.buffer instanceof ArrayBuffer||t.buffer instanceof SharedArrayBuffer)}:function(t){return t&&t.buffer&&t.buffer instanceof ArrayBuffer};function JQ(...n){console.error(...n)}function L1(...n){console.warn(...n)}function qQ(n,t){return typeof WebGLBuffer<"u"&&t instanceof WebGLBuffer}function O1(n,t){return typeof WebGLRenderbuffer<"u"&&t instanceof WebGLRenderbuffer}function lf(n,t){return typeof WebGLTexture<"u"&&t instanceof WebGLTexture}function KQ(n,t){return typeof WebGLSampler<"u"&&t instanceof WebGLSampler}const U1=35044,Cn=34962,jQ=34963,WQ=34660,XQ=5120,ZQ=5121,$Q=5122,eD=5123,tD=5124,nD=5125,rD=5126,G1={attribPrefix:""};function z1(n,t,e,r,i){n.bindBuffer(t,e),n.bufferData(t,r,i||U1)}function H1(n,t,e,r){if(qQ(n,t))return t;e=e||Cn;const i=n.createBuffer();return z1(n,e,i,t,r),i}function V1(n){return n==="indices"}function iD(n){return n instanceof Int8Array||n instanceof Uint8Array}function sD(n){return n===Int8Array||n===Uint8Array}function oD(n){return n.length?n:n.data}const aD=/coord|texture/i,cD=/color|colour/i;function _1(n,t){let e;if(aD.test(n)?e=2:cD.test(n)?e=4:e=3,t%e>0)throw new Error(`Can not guess numComponents for attribute '${n}'. Tried ${e} but ${t} values is not evenly divisible by ${e}. You should specify it.`);return e}function lD(n,t){return n.numComponents||n.size||_1(t,oD(n).length)}function ud(n,t){if(cf(n))return n;if(cf(n.data))return n.data;Array.isArray(n)&&(n={data:n});let e=n.type;return e||(V1(t)?e=Uint16Array:e=Float32Array),new e(n.data)}function uD(n,t){const e={};return Object.keys(t).forEach(function(r){if(!V1(r)){const i=t[r],s=i.attrib||i.name||i.attribName||G1.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!cf(i.value))throw new Error("array.value is not array or typedarray");e[s]={value:i.value}}else{let o,a,l,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)o=i.buffer,c=i.numComponents||i.size,a=i.type,l=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const u=i.data||i,f=i.type||Float32Array,h=u*f.BYTES_PER_ELEMENT;a=_Q(f),l=i.normalize!==void 0?i.normalize:sD(f),c=i.numComponents||i.size||_1(r,u),o=n.createBuffer(),n.bindBuffer(Cn,o),n.bufferData(Cn,h,i.drawType||U1)}else{const u=ud(i,r);o=H1(n,u,void 0,i.drawType),a=ld(u),l=i.normalize!==void 0?i.normalize:iD(u),c=lD(i,r)}e[s]={buffer:o,numComponents:c,type:a,normalize:l,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),n.bindBuffer(Cn,null),e}function fD(n,t,e,r){e=ud(e),r!==void 0?(n.bindBuffer(Cn,t.buffer),n.bufferSubData(Cn,r,e)):z1(n,Cn,t.buffer,e,t.drawType)}function AD(n,t){return t===XQ||t===ZQ?1:t===$Q||t===eD?2:t===tD||t===nD||t===rD?4:0}const fd=["position","positions","a_position"];function hD(n,t){let e,r;for(r=0;r<fd.length&&(e=fd[r],!(e in t||(e=G1.attribPrefix+e,e in t)));++r);r===fd.length&&(e=Object.keys(t)[0]);const i=t[e];if(!i.buffer)return 1;n.bindBuffer(Cn,i.buffer);const s=n.getBufferParameter(Cn,WQ);n.bindBuffer(Cn,null);const o=AD(n,i.type),a=s/o,l=i.numComponents||i.size,c=a/l;if(c%1!==0)throw new Error(`numComponents ${l} not correct for length ${length}`);return c}function dD(n,t,e){const r=uD(n,t),i=Object.assign({},e||{});i.attribs=Object.assign({},e?e.attribs:{},r);const s=t.indices;if(s){const o=ud(s,"indices");i.indices=H1(n,o,jQ),i.numElements=o.length,i.elementType=ld(o)}else i.numElements||(i.numElements=hD(n,i.attribs));return i}function js(n){return!!n.texStorage2D}const Ad=(function(){const n={},t={};function e(r){const i=r.constructor.name;if(!n[i]){for(const s in r)if(typeof r[s]=="number"){const o=t[r[s]];t[r[s]]=o?`${o} | ${s}`:s}n[i]=!0}}return function(i,s){return e(i),t[s]||(typeof s=="number"?`0x${s.toString(16)}`:s)}})(),Ir={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Ws=cf,Y1=(function(){let n;return function(){return n=n||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),n}})(),J1=6406,wn=6407,xe=6408,q1=6409,K1=6410,mc=6402,j1=34041,uf=33071,gD=9728,pD=9729,zn=3553,Hn=34067,Er=32879,br=35866,ff=34069,mD=34070,CD=34071,wD=34072,yD=34073,ID=34074,hd=10241,dd=10240,Af=10242,hf=10243,W1=32882,ED=33082,bD=33083,xD=33084,BD=33085,gd=3317,X1=3314,Z1=32878,$1=3316,eC=3315,tC=32877,vD=37443,SD=37441,QD=37440,DD=33321,kD=36756,FD=33325,RD=33326,MD=33330,ND=33329,TD=33338,PD=33337,LD=33340,OD=33339,UD=33323,GD=36757,zD=33327,HD=33328,VD=33336,_D=33335,YD=33332,JD=33331,qD=33334,KD=33333,jD=32849,WD=35905,XD=36194,ZD=36758,$D=35898,e4=35901,t4=34843,n4=34837,r4=36221,i4=36239,s4=36215,o4=36233,a4=36209,c4=36227,l4=32856,u4=35907,f4=36759,A4=32855,h4=32854,d4=32857,g4=34842,p4=34836,m4=36220,C4=36238,w4=36975,y4=36214,I4=36232,E4=36226,b4=36208,x4=33189,B4=33190,v4=36012,S4=36013,Q4=35056,xr=5120,Be=5121,df=5122,Xs=5123,gf=5124,bi=5125,at=5126,nC=32819,rC=32820,iC=33635,en=5131,Cc=36193,pd=33640,D4=35899,k4=35902,F4=36269,R4=34042,pf=33319,Zs=33320,mf=6403,$s=36244,eo=36248,xi=36249;let md;function Cf(n){if(!md){const t={};t[J1]={textureFormat:J1,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Be,en,Cc,at]},t[q1]={textureFormat:q1,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Be,en,Cc,at]},t[K1]={textureFormat:K1,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[Be,en,Cc,at]},t[wn]={textureFormat:wn,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[Be,en,Cc,at,iC]},t[xe]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[Be,en,Cc,at,nC,rC]},t[mc]={textureFormat:mc,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[bi,Xs]},t[DD]={textureFormat:mf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[Be]},t[kD]={textureFormat:mf,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[xr]},t[FD]={textureFormat:mf,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[at,en]},t[RD]={textureFormat:mf,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[at]},t[MD]={textureFormat:$s,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Be]},t[ND]={textureFormat:$s,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[xr]},t[YD]={textureFormat:$s,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Xs]},t[JD]={textureFormat:$s,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[df]},t[qD]={textureFormat:$s,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[bi]},t[KD]={textureFormat:$s,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[gf]},t[UD]={textureFormat:pf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[Be]},t[GD]={textureFormat:pf,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[xr]},t[zD]={textureFormat:pf,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[at,en]},t[HD]={textureFormat:pf,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[at]},t[VD]={textureFormat:Zs,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Be]},t[_D]={textureFormat:Zs,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[xr]},t[TD]={textureFormat:Zs,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Xs]},t[PD]={textureFormat:Zs,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[df]},t[LD]={textureFormat:Zs,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[bi]},t[OD]={textureFormat:Zs,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[gf]},t[jD]={textureFormat:wn,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[Be]},t[WD]={textureFormat:wn,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Be]},t[XD]={textureFormat:wn,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[Be,iC]},t[ZD]={textureFormat:wn,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[xr]},t[$D]={textureFormat:wn,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[at,en,D4]},t[e4]={textureFormat:wn,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[at,en,k4]},t[t4]={textureFormat:wn,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[at,en]},t[n4]={textureFormat:wn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[at]},t[r4]={textureFormat:eo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Be]},t[i4]={textureFormat:eo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[xr]},t[s4]={textureFormat:eo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Xs]},t[o4]={textureFormat:eo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[df]},t[a4]={textureFormat:eo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[bi]},t[c4]={textureFormat:eo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[gf]},t[l4]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Be]},t[u4]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Be]},t[f4]={textureFormat:xe,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[xr]},t[A4]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[Be,rC,pd]},t[h4]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[Be,nC]},t[d4]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[pd]},t[g4]={textureFormat:xe,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[at,en]},t[p4]={textureFormat:xe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[at]},t[m4]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Be]},t[C4]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[xr]},t[w4]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[pd]},t[y4]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Xs]},t[I4]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[df]},t[E4]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[gf]},t[b4]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[bi]},t[x4]={textureFormat:mc,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Xs,bi]},t[B4]={textureFormat:mc,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[bi]},t[v4]={textureFormat:mc,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[at]},t[Q4]={textureFormat:j1,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[R4]},t[S4]={textureFormat:j1,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[F4]},Object.keys(t).forEach(function(e){const r=t[e];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,s){const o=r.type[s];r.bytesPerElementMap[o]=i})}),md=t}return md[n]}function M4(n,t){const e=Cf(n);if(!e)throw"unknown internal format";const r=e.bytesPerElementMap[t];if(r===void 0)throw"unknown internal format";return r}function to(n){const t=Cf(n);if(!t)throw"unknown internal format";return{format:t.textureFormat,type:t.type[0]}}function sC(n){return(n&n-1)===0}function N4(n,t,e,r){if(!js(n))return sC(t)&&sC(e);const i=Cf(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function T4(n){const t=Cf(n);if(!t)throw"unknown internal format";return t.textureFilterable}function oC(n,t,e){return Ws(t)?ld(t):e||Be}function wf(n,t,e,r,i){if(i%1!==0)throw"can't guess dimensions";if(!e&&!r){const s=Math.sqrt(i/(t===Hn?6:1));s%1===0?(e=s,r=s):(e=i,r=1)}else if(r){if(!e&&(e=i/r,e%1))throw"can't guess dimensions"}else if(r=i/e,r%1)throw"can't guess dimensions";return{width:e,height:r}}function no(n,t){t.colorspaceConversion!==void 0&&n.pixelStorei(vD,t.colorspaceConversion),t.premultiplyAlpha!==void 0&&n.pixelStorei(SD,t.premultiplyAlpha),t.flipY!==void 0&&n.pixelStorei(QD,t.flipY)}function aC(n){n.pixelStorei(gd,4),js(n)&&(n.pixelStorei(X1,0),n.pixelStorei(Z1,0),n.pixelStorei($1,0),n.pixelStorei(eC,0),n.pixelStorei(tC,0))}function P4(n,t,e,r){r.minMag&&(e.call(n,t,hd,r.minMag),e.call(n,t,dd,r.minMag)),r.min&&e.call(n,t,hd,r.min),r.mag&&e.call(n,t,dd,r.mag),r.wrap&&(e.call(n,t,Af,r.wrap),e.call(n,t,hf,r.wrap),(t===Er||KQ(n,t))&&e.call(n,t,W1,r.wrap)),r.wrapR&&e.call(n,t,W1,r.wrapR),r.wrapS&&e.call(n,t,Af,r.wrapS),r.wrapT&&e.call(n,t,hf,r.wrapT),r.minLod&&e.call(n,t,ED,r.minLod),r.maxLod&&e.call(n,t,bD,r.maxLod),r.baseLevel&&e.call(n,t,xD,r.baseLevel),r.maxLevel&&e.call(n,t,BD,r.maxLevel)}function cC(n,t,e){const r=e.target||zn;n.bindTexture(r,t),P4(n,r,n.texParameteri,e)}function L4(n){return n=n||Ir.textureColor,Ws(n)?n:new Uint8Array([n[0]*255,n[1]*255,n[2]*255,n[3]*255])}function Cd(n,t,e,r,i,s){e=e||Ir.textureOptions,s=s||xe;const o=e.target||zn;if(r=r||e.width,i=i||e.height,n.bindTexture(o,t),N4(n,r,i,s))n.generateMipmap(o);else{const a=T4(s)?pD:gD;n.texParameteri(o,hd,a),n.texParameteri(o,dd,a),n.texParameteri(o,Af,uf),n.texParameteri(o,hf,uf)}}function wc(n){return n.auto===!0||n.auto===void 0&&n.level===void 0}function wd(n,t){return t=t||{},t.cubeFaceOrder||[ff,mD,CD,wD,yD,ID]}function yd(n,t){const r=wd(n,t).map(function(i,s){return{face:i,ndx:s}});return r.sort(function(i,s){return i.face-s.face}),r}function lC(n,t,e,r){r=r||Ir.textureOptions;const i=r.target||zn,s=r.level||0;let o=e.width,a=e.height;const l=r.internalFormat||r.format||xe,c=to(l),u=r.format||c.format,f=r.type||c.type;if(no(n,r),n.bindTexture(i,t),i===Hn){const h=e.width,A=e.height;let d,p;if(h/6===A)d=A,p=[0,0,1,0,2,0,3,0,4,0,5,0];else if(A/6===h)d=h,p=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===A/2)d=h/3,p=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===A/3)d=h/2,p=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(e.src?e.src:e.nodeName);const C=Y1();C?(C.canvas.width=d,C.canvas.height=d,o=d,a=d,yd(n,r).forEach(function(m){const y=p[m.ndx*2+0]*d,I=p[m.ndx*2+1]*d;C.drawImage(e,y,I,d,d,0,0,d,d),n.texImage2D(m.face,s,l,u,f,C.canvas)}),C.canvas.width=1,C.canvas.height=1):typeof createImageBitmap<"u"&&(o=d,a=d,yd(n,r).forEach(function(m){const y=p[m.ndx*2+0]*d,I=p[m.ndx*2+1]*d;n.texImage2D(m.face,s,l,d,d,0,u,f,null),createImageBitmap(e,y,I,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(w){no(n,r),n.bindTexture(i,t),n.texImage2D(m.face,s,l,u,f,w),wc(r)&&Cd(n,t,r,o,a,l)})}))}else if(i===Er||i===br){const h=Math.min(e.width,e.height),A=Math.max(e.width,e.height),d=A/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const p=e.width===A?1:0,C=e.height===A?1:0;n.pixelStorei(gd,1),n.pixelStorei(X1,e.width),n.pixelStorei(Z1,0),n.pixelStorei(tC,0),n.texImage3D(i,s,l,h,h,h,0,u,f,null);for(let m=0;m<d;++m){const y=m*h*p,I=m*h*C;n.pixelStorei($1,y),n.pixelStorei(eC,I),n.texSubImage3D(i,s,0,0,m,h,h,1,u,f,e)}aC(n)}else n.texImage2D(i,s,l,u,f,e);wc(r)&&Cd(n,t,r,o,a,l),cC(n,t,r)}function yc(){}function O4(n){if(typeof document<"u"){const t=document.createElement("a");return t.href=n,t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}else{const t=new URL(location.href).origin;return new URL(n,location.href).origin===t}}function U4(n,t){return t===void 0&&!O4(n)?"anonymous":t}function G4(n,t,e){e=e||yc;let r;if(t=t!==void 0?t:Ir.crossOrigin,t=U4(n,t),typeof Image<"u"){r=new Image,t!==void 0&&(r.crossOrigin=t);const i=function(){r.removeEventListener("error",s),r.removeEventListener("load",o),r=null},s=function(){const l="couldn't load image: "+n;JQ(l),e(l,r),i()},o=function(){e(null,r),i()};return r.addEventListener("error",s),r.addEventListener("load",o),r.src=n,r}else if(typeof ImageBitmap<"u"){let i,s;const o=function(){e(i,s)},a={};t&&(a.mode="cors"),fetch(n,a).then(function(l){if(!l.ok)throw l;return l.blob()}).then(function(l){return createImageBitmap(l,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(l){s=l,setTimeout(o)}).catch(function(l){i=l,setTimeout(o)}),r=null}return r}function uC(n){return typeof ImageBitmap<"u"&&n instanceof ImageBitmap||typeof ImageData<"u"&&n instanceof ImageData||typeof HTMLElement<"u"&&n instanceof HTMLElement}function Id(n,t,e){return uC(n)?(setTimeout(function(){e(null,n)}),n):G4(n,t,e)}function Ed(n,t,e){e=e||Ir.textureOptions;const r=e.target||zn;if(n.bindTexture(r,t),e.color===!1)return;const i=L4(e.color);if(r===Hn)for(let s=0;s<6;++s)n.texImage2D(ff+s,0,xe,1,1,0,xe,Be,i);else r===Er||r===br?n.texImage3D(r,0,xe,1,1,1,0,xe,Be,i):n.texImage2D(r,0,xe,1,1,0,xe,Be,i)}function z4(n,t,e,r){return r=r||yc,e=e||Ir.textureOptions,Ed(n,t,e),e=Object.assign({},e),Id(e.src,e.crossOrigin,function(s,o){s?r(s,t,o):(lC(n,t,o,e),r(null,t,o))})}function H4(n,t,e,r){r=r||yc;const i=e.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const s=e.level||0,o=e.internalFormat||e.format||xe,a=to(o),l=e.format||a.format,c=e.type||Be,u=e.target||zn;if(u!==Hn)throw"target must be TEXTURE_CUBE_MAP";Ed(n,t,e),e=Object.assign({},e);let f=6;const h=[],A=wd(n,e);let d;function p(C){return function(m,y){--f,m?h.push(m):y.width!==y.height?h.push("cubemap face img is not a square: "+y.src):(no(n,e),n.bindTexture(u,t),f===5?wd().forEach(function(I){n.texImage2D(I,s,o,l,c,y)}):n.texImage2D(C,s,o,l,c,y),wc(e)&&n.generateMipmap(u)),f===0&&r(h.length?h:void 0,t,d)}}d=i.map(function(C,m){return Id(C,e.crossOrigin,p(A[m]))})}function V4(n,t,e,r){r=r||yc;const i=e.src,s=e.internalFormat||e.format||xe,o=to(s),a=e.format||o.format,l=e.type||Be,c=e.target||br;if(c!==Er&&c!==br)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Ed(n,t,e),e=Object.assign({},e);let u=i.length;const f=[];let h;const A=e.level||0;let d=e.width,p=e.height;const C=i.length;let m=!0;function y(I){return function(w,x){if(--u,w)f.push(w);else{if(no(n,e),n.bindTexture(c,t),m){m=!1,d=e.width||x.width,p=e.height||x.height,n.texImage3D(c,A,s,d,p,C,0,a,l,null);for(let B=0;B<C;++B)n.texSubImage3D(c,A,0,0,B,d,p,1,a,l,x)}else{let B=x,E;(x.width!==d||x.height!==p)&&(E=Y1(),B=E.canvas,E.canvas.width=d,E.canvas.height=p,E.drawImage(x,0,0,d,p)),n.texSubImage3D(c,A,0,0,I,d,p,1,a,l,B),E&&B===E.canvas&&(E.canvas.width=0,E.canvas.height=0)}wc(e)&&n.generateMipmap(c)}u===0&&r(f.length?f:void 0,t,h)}}h=i.map(function(I,w){return Id(I,e.crossOrigin,y(w))})}function fC(n,t,e,r){r=r||Ir.textureOptions;const i=r.target||zn;n.bindTexture(i,t);let s=r.width,o=r.height,a=r.depth;const l=r.level||0,c=r.internalFormat||r.format||xe,u=to(c),f=r.format||u.format,h=r.type||oC(n,e,u.type);if(Ws(e))e instanceof Uint8ClampedArray&&(e=new Uint8Array(e.buffer));else{const C=YQ(h);e=new C(e)}const A=M4(c,h),d=e.byteLength/A;if(d%1)throw"length wrong size for format: "+Ad(n,f);let p;if(i===Er||i===br)if(!s&&!o&&!a){const C=Math.cbrt(d);if(C%1!==0)throw"can't guess cube size of array of numElements: "+d;s=C,o=C,a=C}else s&&(!o||!a)?(p=wf(n,i,o,a,d/s),o=p.width,a=p.height):o&&(!s||!a)?(p=wf(n,i,s,a,d/o),s=p.width,a=p.height):(p=wf(n,i,s,o,d/a),s=p.width,o=p.height);else p=wf(n,i,s,o,d),s=p.width,o=p.height;if(aC(n),n.pixelStorei(gd,r.unpackAlignment||1),no(n,r),i===Hn){const C=A/e.BYTES_PER_ELEMENT,m=d/6*C;yd(n,r).forEach(y=>{const I=m*y.ndx,w=e.subarray(I,I+m);n.texImage2D(y.face,l,c,s,o,0,f,h,w)})}else i===Er||i===br?n.texImage3D(i,l,c,s,o,a,0,f,h,e):n.texImage2D(i,l,c,s,o,0,f,h,e);return{width:s,height:o,depth:a,type:h}}function _4(n,t,e){const r=e.target||zn;n.bindTexture(r,t);const i=e.level||0,s=e.internalFormat||e.format||xe,o=to(s),a=e.format||o.format,l=e.type||o.type;if(no(n,e),r===Hn)for(let c=0;c<6;++c)n.texImage2D(ff+c,i,s,e.width,e.height,0,a,l,null);else r===Er||r===br?n.texImage3D(r,i,s,e.width,e.height,e.depth,0,a,l,null):n.texImage2D(r,i,s,e.width,e.height,0,a,l,null)}function Ic(n,t,e){e=e||yc,t=t||Ir.textureOptions;const r=n.createTexture(),i=t.target||zn;let s=t.width||1,o=t.height||1;const a=t.internalFormat||xe;n.bindTexture(i,r),i===Hn&&(n.texParameteri(i,Af,uf),n.texParameteri(i,hf,uf));let l=t.src;if(l)if(typeof l=="function"&&(l=l(n,t)),typeof l=="string")z4(n,r,t,e);else if(Ws(l)||Array.isArray(l)&&(typeof l[0]=="number"||Array.isArray(l[0])||Ws(l[0]))){const c=fC(n,r,l,t);s=c.width,o=c.height}else Array.isArray(l)&&(typeof l[0]=="string"||uC(l[0]))?i===Hn?H4(n,r,t,e):V4(n,r,t,e):(lC(n,r,l,t),s=l.width,o=l.height);else _4(n,r,t);return wc(t)&&Cd(n,r,t,s,o,a),cC(n,r,t),r}function Y4(n,t,e,r,i,s){r=r||e.width,i=i||e.height,s=s||e.depth;const o=e.target||zn;n.bindTexture(o,t);const a=e.level||0,l=e.internalFormat||e.format||xe,c=to(l),u=e.format||c.format;let f;const h=e.src;if(h&&(Ws(h)||Array.isArray(h)&&typeof h[0]=="number")?f=e.type||oC(n,h,c.type):f=e.type||c.type,o===Hn)for(let A=0;A<6;++A)n.texImage2D(ff+A,a,l,r,i,0,u,f,null);else o===Er||o===br?n.texImage3D(o,a,l,r,i,s,0,u,f,null):n.texImage2D(o,a,l,r,i,0,u,f,null)}const J4=L1,yf=33984,q4=35048,If=34962,K4=34963,bd=35345,AC=35718,j4=35721,W4=35971,X4=35382,Z4=35396,$4=35398,ek=35392,tk=35395,Ef=5126,hC=35664,dC=35665,gC=35666,xd=5124,pC=35667,mC=35668,CC=35669,wC=35670,yC=35671,IC=35672,EC=35673,bC=35674,xC=35675,BC=35676,nk=35678,rk=35680,ik=35679,sk=35682,ok=35685,ak=35686,ck=35687,lk=35688,uk=35689,fk=35690,Ak=36289,hk=36292,dk=36293,Bd=5125,vC=36294,SC=36295,QC=36296,gk=36298,pk=36299,mk=36300,Ck=36303,wk=36306,yk=36307,Ik=36308,Ek=36311,bf=3553,xf=34067,vd=32879,Bf=35866,$={};function DC(n,t){return $[t].bindPoint}function bk(n,t){return function(e){n.uniform1f(t,e)}}function xk(n,t){return function(e){n.uniform1fv(t,e)}}function Bk(n,t){return function(e){n.uniform2fv(t,e)}}function vk(n,t){return function(e){n.uniform3fv(t,e)}}function Sk(n,t){return function(e){n.uniform4fv(t,e)}}function kC(n,t){return function(e){n.uniform1i(t,e)}}function FC(n,t){return function(e){n.uniform1iv(t,e)}}function RC(n,t){return function(e){n.uniform2iv(t,e)}}function MC(n,t){return function(e){n.uniform3iv(t,e)}}function NC(n,t){return function(e){n.uniform4iv(t,e)}}function Qk(n,t){return function(e){n.uniform1ui(t,e)}}function Dk(n,t){return function(e){n.uniform1uiv(t,e)}}function kk(n,t){return function(e){n.uniform2uiv(t,e)}}function Fk(n,t){return function(e){n.uniform3uiv(t,e)}}function Rk(n,t){return function(e){n.uniform4uiv(t,e)}}function Mk(n,t){return function(e){n.uniformMatrix2fv(t,!1,e)}}function Nk(n,t){return function(e){n.uniformMatrix3fv(t,!1,e)}}function Tk(n,t){return function(e){n.uniformMatrix4fv(t,!1,e)}}function Pk(n,t){return function(e){n.uniformMatrix2x3fv(t,!1,e)}}function Lk(n,t){return function(e){n.uniformMatrix3x2fv(t,!1,e)}}function Ok(n,t){return function(e){n.uniformMatrix2x4fv(t,!1,e)}}function Uk(n,t){return function(e){n.uniformMatrix4x2fv(t,!1,e)}}function Gk(n,t){return function(e){n.uniformMatrix3x4fv(t,!1,e)}}function zk(n,t){return function(e){n.uniformMatrix4x3fv(t,!1,e)}}function pt(n,t,e,r){const i=DC(n,t);return js(n)?function(s){let o,a;lf(n,s)?(o=s,a=null):(o=s.texture,a=s.sampler),n.uniform1i(r,e),n.activeTexture(yf+e),n.bindTexture(i,o),n.bindSampler(e,a)}:function(s){n.uniform1i(r,e),n.activeTexture(yf+e),n.bindTexture(i,s)}}function mt(n,t,e,r,i){const s=DC(n,t),o=new Int32Array(i);for(let a=0;a<i;++a)o[a]=e+a;return js(n)?function(a){n.uniform1iv(r,o),a.forEach(function(l,c){n.activeTexture(yf+o[c]);let u,f;lf(n,l)?(u=l,f=null):(u=l.texture,f=l.sampler),n.bindSampler(e,f),n.bindTexture(s,u)})}:function(a){n.uniform1iv(r,o),a.forEach(function(l,c){n.activeTexture(yf+o[c]),n.bindTexture(s,l)})}}$[Ef]={Type:Float32Array,size:4,setter:bk,arraySetter:xk},$[hC]={Type:Float32Array,size:8,setter:Bk,cols:2},$[dC]={Type:Float32Array,size:12,setter:vk,cols:3},$[gC]={Type:Float32Array,size:16,setter:Sk,cols:4},$[xd]={Type:Int32Array,size:4,setter:kC,arraySetter:FC},$[pC]={Type:Int32Array,size:8,setter:RC,cols:2},$[mC]={Type:Int32Array,size:12,setter:MC,cols:3},$[CC]={Type:Int32Array,size:16,setter:NC,cols:4},$[Bd]={Type:Uint32Array,size:4,setter:Qk,arraySetter:Dk},$[vC]={Type:Uint32Array,size:8,setter:kk,cols:2},$[SC]={Type:Uint32Array,size:12,setter:Fk,cols:3},$[QC]={Type:Uint32Array,size:16,setter:Rk,cols:4},$[wC]={Type:Uint32Array,size:4,setter:kC,arraySetter:FC},$[yC]={Type:Uint32Array,size:8,setter:RC,cols:2},$[IC]={Type:Uint32Array,size:12,setter:MC,cols:3},$[EC]={Type:Uint32Array,size:16,setter:NC,cols:4},$[bC]={Type:Float32Array,size:32,setter:Mk,rows:2,cols:2},$[xC]={Type:Float32Array,size:48,setter:Nk,rows:3,cols:3},$[BC]={Type:Float32Array,size:64,setter:Tk,rows:4,cols:4},$[ok]={Type:Float32Array,size:32,setter:Pk,rows:2,cols:3},$[ak]={Type:Float32Array,size:32,setter:Ok,rows:2,cols:4},$[ck]={Type:Float32Array,size:48,setter:Lk,rows:3,cols:2},$[lk]={Type:Float32Array,size:48,setter:Gk,rows:3,cols:4},$[uk]={Type:Float32Array,size:64,setter:Uk,rows:4,cols:2},$[fk]={Type:Float32Array,size:64,setter:zk,rows:4,cols:3},$[nk]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:bf},$[rk]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:xf},$[ik]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:vd},$[sk]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:bf},$[Ak]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:Bf},$[hk]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:Bf},$[dk]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:xf},$[gk]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:bf},$[pk]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:vd},$[mk]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:xf},$[Ck]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:Bf},$[wk]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:bf},$[yk]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:vd},$[Ik]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:xf},$[Ek]={Type:null,size:0,setter:pt,arraySetter:mt,bindPoint:Bf};function vf(n,t){return function(e){if(e.value)switch(n.disableVertexAttribArray(t),e.value.length){case 4:n.vertexAttrib4fv(t,e.value);break;case 3:n.vertexAttrib3fv(t,e.value);break;case 2:n.vertexAttrib2fv(t,e.value);break;case 1:n.vertexAttrib1fv(t,e.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else n.bindBuffer(If,e.buffer),n.enableVertexAttribArray(t),n.vertexAttribPointer(t,e.numComponents||e.size,e.type||Ef,e.normalize||!1,e.stride||0,e.offset||0),e.divisor!==void 0&&n.vertexAttribDivisor(t,e.divisor)}}function Br(n,t){return function(e){if(e.value)if(n.disableVertexAttribArray(t),e.value.length===4)n.vertexAttrib4iv(t,e.value);else throw new Error("The length of an integer constant value must be 4!");else n.bindBuffer(If,e.buffer),n.enableVertexAttribArray(t),n.vertexAttribIPointer(t,e.numComponents||e.size,e.type||xd,e.stride||0,e.offset||0),e.divisor!==void 0&&n.vertexAttribDivisor(t,e.divisor)}}function Sf(n,t){return function(e){if(e.value)if(n.disableVertexAttribArray(t),e.value.length===4)n.vertexAttrib4uiv(t,e.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else n.bindBuffer(If,e.buffer),n.enableVertexAttribArray(t),n.vertexAttribIPointer(t,e.numComponents||e.size,e.type||Bd,e.stride||0,e.offset||0),e.divisor!==void 0&&n.vertexAttribDivisor(t,e.divisor)}}function Sd(n,t,e){const r=e.size,i=e.count;return function(s){n.bindBuffer(If,s.buffer);const o=s.size||s.numComponents||r,a=o/i,l=s.type||Ef,u=$[l].size*o,f=s.normalize||!1,h=s.offset||0,A=u/i;for(let d=0;d<i;++d)n.enableVertexAttribArray(t+d),n.vertexAttribPointer(t+d,a,l,f,u,h+A*d),s.divisor!==void 0&&n.vertexAttribDivisor(t+d,s.divisor)}}const Ue={};Ue[Ef]={size:4,setter:vf},Ue[hC]={size:8,setter:vf},Ue[dC]={size:12,setter:vf},Ue[gC]={size:16,setter:vf},Ue[xd]={size:4,setter:Br},Ue[pC]={size:8,setter:Br},Ue[mC]={size:12,setter:Br},Ue[CC]={size:16,setter:Br},Ue[Bd]={size:4,setter:Sf},Ue[vC]={size:8,setter:Sf},Ue[SC]={size:12,setter:Sf},Ue[QC]={size:16,setter:Sf},Ue[wC]={size:4,setter:Br},Ue[yC]={size:8,setter:Br},Ue[IC]={size:12,setter:Br},Ue[EC]={size:16,setter:Br},Ue[bC]={size:4,setter:Sd,count:2},Ue[xC]={size:9,setter:Sd,count:3},Ue[BC]={size:16,setter:Sd,count:4};function TC(n){const t=n.name;return t.startsWith("gl_")||t.startsWith("webgl_")}const Hk=/(\.|\[|]|\w+)/g,Vk=n=>n>="0"&&n<="9";function PC(n,t,e,r){const i=n.split(Hk).filter(a=>a!=="");let s=0,o="";for(;;){const a=i[s++];o+=a;const l=Vk(a[0]),c=l?parseInt(a):a;if(l&&(o+=i[s++]),s===i.length){e[c]=t;break}else{const f=i[s++],h=f==="[",A=e[c]||(h?[]:{});e[c]=A,e=A,r[o]=r[o]||(function(d){return function(p){zC(d,p)}})(A),o+=f}}}function _k(n,t){let e=0;function r(a,l,c){const u=l.name.endsWith("[0]"),f=l.type,h=$[f];if(!h)throw new Error(`unknown type: 0x${f.toString(16)}`);let A;if(h.bindPoint){const d=e;e+=l.size,u?A=h.arraySetter(n,f,d,c,l.size):A=h.setter(n,f,d,c,l.size)}else h.arraySetter&&u?A=h.arraySetter(n,c):A=h.setter(n,c);return A.location=c,A}const i={},s={},o=n.getProgramParameter(t,AC);for(let a=0;a<o;++a){const l=n.getActiveUniform(t,a);if(TC(l))continue;let c=l.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const u=n.getUniformLocation(t,l.name);if(u){const f=r(t,l,u);i[c]=f,PC(c,f,s,i)}}return i}function Yk(n,t){const e={},r=n.getProgramParameter(t,W4);for(let i=0;i<r;++i){const s=n.getTransformFeedbackVarying(t,i);e[s.name]={index:i,type:s.type,size:s.size}}return e}function Jk(n,t){const e=n.getProgramParameter(t,AC),r=[],i=[];for(let a=0;a<e;++a){i.push(a),r.push({});const l=n.getActiveUniform(t,a);r[a].name=l.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const l=a[0],c=a[1];n.getActiveUniforms(t,i,n[l]).forEach(function(u,f){r[f][c]=u})});const s={},o=n.getProgramParameter(t,X4);for(let a=0;a<o;++a){const l=n.getActiveUniformBlockName(t,a),c={index:n.getUniformBlockIndex(t,l),usedByVertexShader:n.getActiveUniformBlockParameter(t,a,Z4),usedByFragmentShader:n.getActiveUniformBlockParameter(t,a,$4),size:n.getActiveUniformBlockParameter(t,a,ek),uniformIndices:n.getActiveUniformBlockParameter(t,a,tk)};c.used=c.usedByVertexShader||c.usedByFragmentShader,s[l]=c}return{blockSpecs:s,uniformData:r}}const LC=/\[\d+\]\.$/,qk=(n,t)=>((n+(t-1))/t|0)*t;function Kk(n,t,e,r){if(t||e){r=r||1;const s=n.length/4;return function(o){let a=0,l=0;for(let c=0;c<s;++c){for(let u=0;u<r;++u)n[a++]=o[l++];a+=4-r}}}else return function(i){i.length?n.set(i):n[0]=i}}function jk(n,t,e,r){const i=e.blockSpecs,s=e.uniformData,o=i[r];if(!o)return J4("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(o.size),l=n.createBuffer(),c=o.index;n.bindBuffer(bd,l),n.uniformBlockBinding(t,o.index,c);let u=r+".";LC.test(u)&&(u=u.replace(LC,"."));const f={},h={},A={};return o.uniformIndices.forEach(function(d){const p=s[d];let C=p.name;C.startsWith(u)&&(C=C.substr(u.length));const m=C.endsWith("[0]");m&&(C=C.substr(0,C.length-3));const y=$[p.type],I=y.Type,w=m?qk(y.size,16)*p.size:y.size*p.size,x=new I(a,p.offset,w/I.BYTES_PER_ELEMENT);f[C]=x;const B=Kk(x,m,y.rows,y.cols);h[C]=B,PC(C,B,A,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:l,uniforms:f,setters:h}}function OC(n,t,e){return jk(n,t.program,t.uniformBlockSpec,e)}function UC(n,t,e){const i=(t.uniformBlockSpec||t).blockSpecs[e.name];if(i){const s=i.index;return n.bindBufferRange(bd,s,e.buffer,e.offset||0,e.array.byteLength),!0}return!1}function GC(n,t,e){UC(n,t,e)&&n.bufferData(bd,e.array,q4)}function Ec(n,t){const e=n.setters;for(const r in t){const i=e[r];if(i){const s=t[r];i(s)}}}function zC(n,t){for(const e in t){const r=n[e];typeof r=="function"?r(t[e]):zC(n[e],t[e])}}function Bi(n,...t){const e=n.uniformSetters||n,r=t.length;for(let i=0;i<r;++i){const s=t[i];if(Array.isArray(s)){const o=s.length;for(let a=0;a<o;++a)Bi(e,s[a])}else for(const o in s){const a=e[o];a&&a(s[o])}}}function Wk(n,t){const e={},r=n.getProgramParameter(t,j4);for(let i=0;i<r;++i){const s=n.getActiveAttrib(t,i);if(TC(s))continue;const o=n.getAttribLocation(t,s.name),a=Ue[s.type],l=a.setter(n,o,a);l.location=o,e[s.name]=l}return e}function Xk(n,t){for(const e in t){const r=n[e];r&&r(t[e])}}function vi(n,t,e){e.vertexArrayObject?n.bindVertexArray(e.vertexArrayObject):(Xk(t.attribSetters||t,e.attribs),e.indices&&n.bindBuffer(K4,e.indices))}function Zk(n,t){const e=_k(n,t),r=Wk(n,t),i={program:t,uniformSetters:e,attribSetters:r};return js(n)&&(i.uniformBlockSpec=Jk(n,t),i.transformFeedbackInfo=Yk(n,t)),i}const $k=4,HC=5123;function Qf(n,t,e,r,i,s){e=e===void 0?$k:e;const o=t.indices,a=t.elementType,l=r===void 0?t.numElements:r;i=i===void 0?0:i,a||o?s!==void 0?n.drawElementsInstanced(e,l,a===void 0?HC:t.elementType,i,s):n.drawElements(e,l,a===void 0?HC:t.elementType,i):s!==void 0?n.drawArraysInstanced(e,i,l,s):n.drawArrays(e,i,l)}const e8=36160,Si=36161,t8=3553,n8=5121,r8=6402,i8=6408,s8=33190,o8=36012,a8=35056,c8=36013,l8=32854,u8=32855,f8=36194,VC=33189,_C=6401,YC=36168,Qd=34041,Dd=36064,Df=36096,JC=36128,kd=33306,Fd=33071,Rd=9729,qC=[{format:i8,type:n8,min:Rd,wrap:Fd},{format:Qd}],tn={};tn[Qd]=kd,tn[_C]=JC,tn[YC]=JC,tn[r8]=Df,tn[VC]=Df,tn[s8]=Df,tn[o8]=Df,tn[a8]=kd,tn[c8]=kd;function A8(n,t){return tn[n]||tn[t]}const vr={};vr[l8]=!0,vr[u8]=!0,vr[f8]=!0,vr[Qd]=!0,vr[VC]=!0,vr[_C]=!0,vr[YC]=!0;function h8(n){return vr[n]}const d8=32;function g8(n){return n>=Dd&&n<Dd+d8}function KC(n,t,e,r){const i=e8,s=n.createFramebuffer();n.bindFramebuffer(i,s),e=e||n.drawingBufferWidth,r=r||n.drawingBufferHeight,t=t||qC;const o=[],a={framebuffer:s,attachments:[],width:e,height:r};return t.forEach(function(l,c){let u=l.attachment;const f=l.samples,h=l.format;let A=l.attachmentPoint||A8(h,l.internalFormat);if(A||(A=Dd+c),g8(A)&&o.push(A),!u)if(f!==void 0||h8(h))u=n.createRenderbuffer(),n.bindRenderbuffer(Si,u),f>1?n.renderbufferStorageMultisample(Si,f,h,e,r):n.renderbufferStorage(Si,h,e,r);else{const d=Object.assign({},l);d.width=e,d.height=r,d.auto===void 0&&(d.auto=!1,d.min=d.min||d.minMag||Rd,d.mag=d.mag||d.minMag||Rd,d.wrapS=d.wrapS||d.wrap||Fd,d.wrapT=d.wrapT||d.wrap||Fd),u=Ic(n,d)}if(O1(n,u))n.framebufferRenderbuffer(i,A,Si,u);else if(lf(n,u))l.layer!==void 0?n.framebufferTextureLayer(i,A,u,l.level||0,l.layer):n.framebufferTexture2D(i,A,l.target||t8,u,l.level||0);else throw new Error("unknown attachment type");a.attachments.push(u)}),n.drawBuffers&&n.drawBuffers(o),a}function p8(n,t,e,r,i){r=r||n.drawingBufferWidth,i=i||n.drawingBufferHeight,t.width=r,t.height=i,e=e||qC,e.forEach(function(s,o){const a=t.attachments[o],l=s.format,c=s.samples;if(c!==void 0||O1(n,a))n.bindRenderbuffer(Si,a),c>1?n.renderbufferStorageMultisample(Si,c,l,r,i):n.renderbufferStorage(Si,l,r,i);else if(lf(n,a))Y4(n,a,s,r,i);else throw new Error("unknown attachment type")})}function m8(n,t,e){const r=n.createVertexArray();return n.bindVertexArray(r),t.length||(t=[t]),t.forEach(function(i){vi(n,i,e)}),n.bindVertexArray(null),{numElements:e.numElements,elementType:e.elementType,vertexArrayObject:r}}const C8=/^(.*?)_/;function w8(n,t){Ad(n,0);const e=n.getExtension(t);if(e){const r={},i=C8.exec(t)[1],s="_"+i;for(const o in e){const a=e[o],l=typeof a=="function",c=l?i:s;let u=o;o.endsWith(c)&&(u=o.substring(0,o.length-c.length)),n[u]!==void 0?!l&&n[u]!==a&&L1(u,n[u],a,o):l?n[u]=(function(f){return function(){return f.apply(e,arguments)}})(a):(n[u]=a,r[u]=a)}r.constructor={name:e.constructor.name},Ad(r,0)}return e}const jC=["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 WC(n){for(let t=0;t<jC.length;++t)w8(n,jC[t])}function y8(n,t){const e=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<e.length;++i)if(r=n.getContext(e[i],t),r){WC(r);break}return r}function I8(n,t){return y8(n,t)}const E8=`flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
339
+ </div>`);else throw new Error("Unsupported input type: "+i.input);i.description&&t.push(ce`<div class="description">${i.description}</div>`)}return t}class OE{#e;#t;#n;constructor(e,t){this.#e=e,this.#t=t,this.#n=void 0}initialize(e){const t=[];e.visit(i=>{const s=i.paramRuntime;t.push(...LE(s))});const r=this.#t.inputBindingContainer;if(!(!r||r=="none"||!t.length)){if(this.#n=document.createElement("div"),this.#n.className="gs-input-bindings",r=="default")this.#e.appendChild(this.#n);else if(r instanceof HTMLElement)r.appendChild(this.#n);else throw new Error("Invalid inputBindingContainer");t.length&&Vi(ce`<div class="gs-input-binding">${t}</div>`,this.#n)}}remove(){this.#n?.remove()}}const Sl=5120,fs=5121,Ql=5122,Dl=5123,kl=5124,Fl=5125,Rl=5126,UE=32819,GE=32820,zE=33635,HE=5131,VE=33640,_E=35899,YE=35902,JE=36269,qE=34042,xd={};{const n=xd;n[Sl]=Int8Array,n[fs]=Uint8Array,n[Ql]=Int16Array,n[Dl]=Uint16Array,n[kl]=Int32Array,n[Fl]=Uint32Array,n[Rl]=Float32Array,n[UE]=Uint16Array,n[GE]=Uint16Array,n[zE]=Uint16Array,n[HE]=Uint16Array,n[VE]=Uint32Array,n[_E]=Uint32Array,n[YE]=Uint32Array,n[JE]=Uint32Array,n[qE]=Uint32Array}function Ml(n){if(n instanceof Int8Array)return Sl;if(n instanceof Uint8Array||n instanceof Uint8ClampedArray)return fs;if(n instanceof Int16Array)return Ql;if(n instanceof Uint16Array)return Dl;if(n instanceof Int32Array)return kl;if(n instanceof Uint32Array)return Fl;if(n instanceof Float32Array)return Rl;throw new Error("unsupported typed array type")}function KE(n){if(n===Int8Array)return Sl;if(n===Uint8Array||n===Uint8ClampedArray)return fs;if(n===Int16Array)return Ql;if(n===Uint16Array)return Dl;if(n===Int32Array)return kl;if(n===Uint32Array)return Fl;if(n===Float32Array)return Rl;throw new Error("unsupported typed array type")}function jE(n){const e=xd[n];if(!e)throw new Error("unknown gl type");return e}const Wo=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 WE(...n){console.error(...n)}function Bd(...n){console.warn(...n)}function XE(n,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function vd(n,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function Xo(n,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function ZE(n,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const Sd=35044,Pt=34962,$E=34963,ex=34660,tx=5120,nx=5121,rx=5122,ix=5123,sx=5124,ox=5125,ax=5126,Qd={attribPrefix:""};function Dd(n,e,t,r,i){n.bindBuffer(e,t),n.bufferData(e,r,i||Sd)}function kd(n,e,t,r){if(XE(n,e))return e;t=t||Pt;const i=n.createBuffer();return Dd(n,t,i,e,r),i}function Fd(n){return n==="indices"}function cx(n){return n instanceof Int8Array||n instanceof Uint8Array}function lx(n){return n===Int8Array||n===Uint8Array}function ux(n){return n.length?n:n.data}const fx=/coord|texture/i,Ax=/color|colour/i;function Rd(n,e){let t;if(fx.test(n)?t=2:Ax.test(n)?t=4:t=3,e%t>0)throw new Error(`Can not guess numComponents for attribute '${n}'. Tried ${t} but ${e} values is not evenly divisible by ${t}. You should specify it.`);return t}function hx(n,e){return n.numComponents||n.size||Rd(e,ux(n).length)}function Nl(n,e){if(Wo(n))return n;if(Wo(n.data))return n.data;Array.isArray(n)&&(n={data:n});let t=n.type;return t||(Fd(e)?t=Uint16Array:t=Float32Array),new t(n.data)}function dx(n,e){const t={};return Object.keys(e).forEach(function(r){if(!Fd(r)){const i=e[r],s=i.attrib||i.name||i.attribName||Qd.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Wo(i.value))throw new Error("array.value is not array or typedarray");t[s]={value:i.value}}else{let o,a,l,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)o=i.buffer,c=i.numComponents||i.size,a=i.type,l=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const u=i.data||i,f=i.type||Float32Array,h=u*f.BYTES_PER_ELEMENT;a=KE(f),l=i.normalize!==void 0?i.normalize:lx(f),c=i.numComponents||i.size||Rd(r,u),o=n.createBuffer(),n.bindBuffer(Pt,o),n.bufferData(Pt,h,i.drawType||Sd)}else{const u=Nl(i,r);o=kd(n,u,void 0,i.drawType),a=Ml(u),l=i.normalize!==void 0?i.normalize:cx(u),c=hx(i,r)}t[s]={buffer:o,numComponents:c,type:a,normalize:l,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),n.bindBuffer(Pt,null),t}function gx(n,e,t,r){t=Nl(t),r!==void 0?(n.bindBuffer(Pt,e.buffer),n.bufferSubData(Pt,r,t)):Dd(n,Pt,e.buffer,t,e.drawType)}function px(n,e){return e===tx||e===nx?1:e===rx||e===ix?2:e===sx||e===ox||e===ax?4:0}const Tl=["position","positions","a_position"];function mx(n,e){let t,r;for(r=0;r<Tl.length&&(t=Tl[r],!(t in e||(t=Qd.attribPrefix+t,t in e)));++r);r===Tl.length&&(t=Object.keys(e)[0]);const i=e[t];if(!i.buffer)return 1;n.bindBuffer(Pt,i.buffer);const s=n.getBufferParameter(Pt,ex);n.bindBuffer(Pt,null);const o=px(n,i.type),a=s/o,l=i.numComponents||i.size,c=a/l;if(c%1!==0)throw new Error(`numComponents ${l} not correct for length ${length}`);return c}function wx(n,e,t){const r=dx(n,e),i=Object.assign({},t||{});i.attribs=Object.assign({},t?t.attribs:{},r);const s=e.indices;if(s){const o=Nl(s,"indices");i.indices=kd(n,o,$E),i.numElements=o.length,i.elementType=Ml(o)}else i.numElements||(i.numElements=mx(n,i.attribs));return i}function Hr(n){return!!n.texStorage2D}const Pl=(function(){const n={},e={};function t(r){const i=r.constructor.name;if(!n[i]){for(const s in r)if(typeof r[s]=="number"){const o=e[r[s]];e[r[s]]=o?`${o} | ${s}`:s}n[i]=!0}}return function(i,s){return t(i),e[s]||(typeof s=="number"?`0x${s.toString(16)}`:s)}})(),En={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Vr=Wo,Md=(function(){let n;return function(){return n=n||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),n}})(),Nd=6406,Lt=6407,de=6408,Td=6409,Pd=6410,As=6402,Ld=34041,Zo=33071,Cx=9728,yx=9729,tn=3553,nn=34067,xn=32879,Bn=35866,$o=34069,Ix=34070,bx=34071,Ex=34072,xx=34073,Bx=34074,Ll=10241,Ol=10240,ea=10242,ta=10243,Od=32882,vx=33082,Sx=33083,Qx=33084,Dx=33085,Ul=3317,Ud=3314,Gd=32878,zd=3316,Hd=3315,Vd=32877,kx=37443,Fx=37441,Rx=37440,Mx=33321,Nx=36756,Tx=33325,Px=33326,Lx=33330,Ox=33329,Ux=33338,Gx=33337,zx=33340,Hx=33339,Vx=33323,_x=36757,Yx=33327,Jx=33328,qx=33336,Kx=33335,jx=33332,Wx=33331,Xx=33334,Zx=33333,$x=32849,eB=35905,tB=36194,nB=36758,rB=35898,iB=35901,sB=34843,oB=34837,aB=36221,cB=36239,lB=36215,uB=36233,fB=36209,AB=36227,hB=32856,dB=35907,gB=36759,pB=32855,mB=32854,wB=32857,CB=34842,yB=34836,IB=36220,bB=36238,EB=36975,xB=36214,BB=36232,vB=36226,SB=36208,QB=33189,DB=33190,kB=36012,FB=36013,RB=35056,vn=5120,ge=5121,na=5122,_r=5123,ra=5124,nr=5125,Je=5126,_d=32819,Yd=32820,Jd=33635,xt=5131,hs=36193,Gl=33640,MB=35899,NB=35902,TB=36269,PB=34042,ia=33319,Yr=33320,sa=6403,Jr=36244,qr=36248,rr=36249;let zl;function oa(n){if(!zl){const e={};e[Nd]={textureFormat:Nd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ge,xt,hs,Je]},e[Td]={textureFormat:Td,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ge,xt,hs,Je]},e[Pd]={textureFormat:Pd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[ge,xt,hs,Je]},e[Lt]={textureFormat:Lt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[ge,xt,hs,Je,Jd]},e[de]={textureFormat:de,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[ge,xt,hs,Je,_d,Yd]},e[As]={textureFormat:As,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[nr,_r]},e[Mx]={textureFormat:sa,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[ge]},e[Nx]={textureFormat:sa,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[vn]},e[Tx]={textureFormat:sa,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Je,xt]},e[Px]={textureFormat:sa,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Je]},e[Lx]={textureFormat:Jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ge]},e[Ox]={textureFormat:Jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[vn]},e[jx]={textureFormat:Jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[_r]},e[Wx]={textureFormat:Jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[na]},e[Xx]={textureFormat:Jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[nr]},e[Zx]={textureFormat:Jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ra]},e[Vx]={textureFormat:ia,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[ge]},e[_x]={textureFormat:ia,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[vn]},e[Yx]={textureFormat:ia,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Je,xt]},e[Jx]={textureFormat:ia,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Je]},e[qx]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ge]},e[Kx]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[vn]},e[Ux]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[_r]},e[Gx]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[na]},e[zx]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[nr]},e[Hx]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ra]},e[$x]={textureFormat:Lt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[ge]},e[eB]={textureFormat:Lt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ge]},e[tB]={textureFormat:Lt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[ge,Jd]},e[nB]={textureFormat:Lt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[vn]},e[rB]={textureFormat:Lt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Je,xt,MB]},e[iB]={textureFormat:Lt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Je,xt,NB]},e[sB]={textureFormat:Lt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Je,xt]},e[oB]={textureFormat:Lt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Je]},e[aB]={textureFormat:qr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ge]},e[cB]={textureFormat:qr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[vn]},e[lB]={textureFormat:qr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[_r]},e[uB]={textureFormat:qr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[na]},e[fB]={textureFormat:qr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[nr]},e[AB]={textureFormat:qr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ra]},e[hB]={textureFormat:de,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ge]},e[dB]={textureFormat:de,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ge]},e[gB]={textureFormat:de,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[vn]},e[pB]={textureFormat:de,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[ge,Yd,Gl]},e[mB]={textureFormat:de,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[ge,_d]},e[wB]={textureFormat:de,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Gl]},e[CB]={textureFormat:de,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Je,xt]},e[yB]={textureFormat:de,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Je]},e[IB]={textureFormat:rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ge]},e[bB]={textureFormat:rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[vn]},e[EB]={textureFormat:rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Gl]},e[xB]={textureFormat:rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[_r]},e[BB]={textureFormat:rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[na]},e[vB]={textureFormat:rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[ra]},e[SB]={textureFormat:rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[nr]},e[QB]={textureFormat:As,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[_r,nr]},e[DB]={textureFormat:As,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[nr]},e[kB]={textureFormat:As,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Je]},e[RB]={textureFormat:Ld,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[PB]},e[FB]={textureFormat:Ld,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[TB]},Object.keys(e).forEach(function(t){const r=e[t];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,s){const o=r.type[s];r.bytesPerElementMap[o]=i})}),zl=e}return zl[n]}function LB(n,e){const t=oa(n);if(!t)throw"unknown internal format";const r=t.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Kr(n){const e=oa(n);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function qd(n){return(n&n-1)===0}function OB(n,e,t,r){if(!Hr(n))return qd(e)&&qd(t);const i=oa(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function UB(n){const e=oa(n);if(!e)throw"unknown internal format";return e.textureFilterable}function Kd(n,e,t){return Vr(e)?Ml(e):t||ge}function aa(n,e,t,r,i){if(i%1!==0)throw"can't guess dimensions";if(!t&&!r){const s=Math.sqrt(i/(e===nn?6:1));s%1===0?(t=s,r=s):(t=i,r=1)}else if(r){if(!t&&(t=i/r,t%1))throw"can't guess dimensions"}else if(r=i/t,r%1)throw"can't guess dimensions";return{width:t,height:r}}function jr(n,e){e.colorspaceConversion!==void 0&&n.pixelStorei(kx,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&n.pixelStorei(Fx,e.premultiplyAlpha),e.flipY!==void 0&&n.pixelStorei(Rx,e.flipY)}function jd(n){n.pixelStorei(Ul,4),Hr(n)&&(n.pixelStorei(Ud,0),n.pixelStorei(Gd,0),n.pixelStorei(zd,0),n.pixelStorei(Hd,0),n.pixelStorei(Vd,0))}function GB(n,e,t,r){r.minMag&&(t.call(n,e,Ll,r.minMag),t.call(n,e,Ol,r.minMag)),r.min&&t.call(n,e,Ll,r.min),r.mag&&t.call(n,e,Ol,r.mag),r.wrap&&(t.call(n,e,ea,r.wrap),t.call(n,e,ta,r.wrap),(e===xn||ZE(n,e))&&t.call(n,e,Od,r.wrap)),r.wrapR&&t.call(n,e,Od,r.wrapR),r.wrapS&&t.call(n,e,ea,r.wrapS),r.wrapT&&t.call(n,e,ta,r.wrapT),r.minLod&&t.call(n,e,vx,r.minLod),r.maxLod&&t.call(n,e,Sx,r.maxLod),r.baseLevel&&t.call(n,e,Qx,r.baseLevel),r.maxLevel&&t.call(n,e,Dx,r.maxLevel)}function Wd(n,e,t){const r=t.target||tn;n.bindTexture(r,e),GB(n,r,n.texParameteri,t)}function zB(n){return n=n||En.textureColor,Vr(n)?n:new Uint8Array([n[0]*255,n[1]*255,n[2]*255,n[3]*255])}function Hl(n,e,t,r,i,s){t=t||En.textureOptions,s=s||de;const o=t.target||tn;if(r=r||t.width,i=i||t.height,n.bindTexture(o,e),OB(n,r,i,s))n.generateMipmap(o);else{const a=UB(s)?yx:Cx;n.texParameteri(o,Ll,a),n.texParameteri(o,Ol,a),n.texParameteri(o,ea,Zo),n.texParameteri(o,ta,Zo)}}function ds(n){return n.auto===!0||n.auto===void 0&&n.level===void 0}function Vl(n,e){return e=e||{},e.cubeFaceOrder||[$o,Ix,bx,Ex,xx,Bx]}function _l(n,e){const r=Vl(n,e).map(function(i,s){return{face:i,ndx:s}});return r.sort(function(i,s){return i.face-s.face}),r}function Xd(n,e,t,r){r=r||En.textureOptions;const i=r.target||tn,s=r.level||0;let o=t.width,a=t.height;const l=r.internalFormat||r.format||de,c=Kr(l),u=r.format||c.format,f=r.type||c.type;if(jr(n,r),n.bindTexture(i,e),i===nn){const h=t.width,A=t.height;let d,g;if(h/6===A)d=A,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(A/6===h)d=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===A/2)d=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===A/3)d=h/2,g=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(t.src?t.src:t.nodeName);const p=Md();p?(p.canvas.width=d,p.canvas.height=d,o=d,a=d,_l(n,r).forEach(function(m){const C=g[m.ndx*2+0]*d,y=g[m.ndx*2+1]*d;p.drawImage(t,C,y,d,d,0,0,d,d),n.texImage2D(m.face,s,l,u,f,p.canvas)}),p.canvas.width=1,p.canvas.height=1):typeof createImageBitmap<"u"&&(o=d,a=d,_l(n,r).forEach(function(m){const C=g[m.ndx*2+0]*d,y=g[m.ndx*2+1]*d;n.texImage2D(m.face,s,l,d,d,0,u,f,null),createImageBitmap(t,C,y,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(w){jr(n,r),n.bindTexture(i,e),n.texImage2D(m.face,s,l,u,f,w),ds(r)&&Hl(n,e,r,o,a,l)})}))}else if(i===xn||i===Bn){const h=Math.min(t.width,t.height),A=Math.max(t.width,t.height),d=A/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const g=t.width===A?1:0,p=t.height===A?1:0;n.pixelStorei(Ul,1),n.pixelStorei(Ud,t.width),n.pixelStorei(Gd,0),n.pixelStorei(Vd,0),n.texImage3D(i,s,l,h,h,h,0,u,f,null);for(let m=0;m<d;++m){const C=m*h*g,y=m*h*p;n.pixelStorei(zd,C),n.pixelStorei(Hd,y),n.texSubImage3D(i,s,0,0,m,h,h,1,u,f,t)}jd(n)}else n.texImage2D(i,s,l,u,f,t);ds(r)&&Hl(n,e,r,o,a,l),Wd(n,e,r)}function gs(){}function HB(n){if(typeof document<"u"){const e=document.createElement("a");return e.href=n,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(n,location.href).origin===e}}function VB(n,e){return e===void 0&&!HB(n)?"anonymous":e}function _B(n,e,t){t=t||gs;let r;if(e=e!==void 0?e:En.crossOrigin,e=VB(n,e),typeof Image<"u"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",s),r.removeEventListener("load",o),r=null},s=function(){const l="couldn't load image: "+n;WE(l),t(l,r),i()},o=function(){t(null,r),i()};return r.addEventListener("error",s),r.addEventListener("load",o),r.src=n,r}else if(typeof ImageBitmap<"u"){let i,s;const o=function(){t(i,s)},a={};e&&(a.mode="cors"),fetch(n,a).then(function(l){if(!l.ok)throw l;return l.blob()}).then(function(l){return createImageBitmap(l,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(l){s=l,setTimeout(o)}).catch(function(l){i=l,setTimeout(o)}),r=null}return r}function Zd(n){return typeof ImageBitmap<"u"&&n instanceof ImageBitmap||typeof ImageData<"u"&&n instanceof ImageData||typeof HTMLElement<"u"&&n instanceof HTMLElement}function Yl(n,e,t){return Zd(n)?(setTimeout(function(){t(null,n)}),n):_B(n,e,t)}function Jl(n,e,t){t=t||En.textureOptions;const r=t.target||tn;if(n.bindTexture(r,e),t.color===!1)return;const i=zB(t.color);if(r===nn)for(let s=0;s<6;++s)n.texImage2D($o+s,0,de,1,1,0,de,ge,i);else r===xn||r===Bn?n.texImage3D(r,0,de,1,1,1,0,de,ge,i):n.texImage2D(r,0,de,1,1,0,de,ge,i)}function YB(n,e,t,r){return r=r||gs,t=t||En.textureOptions,Jl(n,e,t),t=Object.assign({},t),Yl(t.src,t.crossOrigin,function(s,o){s?r(s,e,o):(Xd(n,e,o,t),r(null,e,o))})}function JB(n,e,t,r){r=r||gs;const i=t.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const s=t.level||0,o=t.internalFormat||t.format||de,a=Kr(o),l=t.format||a.format,c=t.type||ge,u=t.target||tn;if(u!==nn)throw"target must be TEXTURE_CUBE_MAP";Jl(n,e,t),t=Object.assign({},t);let f=6;const h=[],A=Vl(n,t);let d;function g(p){return function(m,C){--f,m?h.push(m):C.width!==C.height?h.push("cubemap face img is not a square: "+C.src):(jr(n,t),n.bindTexture(u,e),f===5?Vl().forEach(function(y){n.texImage2D(y,s,o,l,c,C)}):n.texImage2D(p,s,o,l,c,C),ds(t)&&n.generateMipmap(u)),f===0&&r(h.length?h:void 0,e,d)}}d=i.map(function(p,m){return Yl(p,t.crossOrigin,g(A[m]))})}function qB(n,e,t,r){r=r||gs;const i=t.src,s=t.internalFormat||t.format||de,o=Kr(s),a=t.format||o.format,l=t.type||ge,c=t.target||Bn;if(c!==xn&&c!==Bn)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Jl(n,e,t),t=Object.assign({},t);let u=i.length;const f=[];let h;const A=t.level||0;let d=t.width,g=t.height;const p=i.length;let m=!0;function C(y){return function(w,E){if(--u,w)f.push(w);else{if(jr(n,t),n.bindTexture(c,e),m){m=!1,d=t.width||E.width,g=t.height||E.height,n.texImage3D(c,A,s,d,g,p,0,a,l,null);for(let x=0;x<p;++x)n.texSubImage3D(c,A,0,0,x,d,g,1,a,l,E)}else{let x=E,b;(E.width!==d||E.height!==g)&&(b=Md(),x=b.canvas,b.canvas.width=d,b.canvas.height=g,b.drawImage(E,0,0,d,g)),n.texSubImage3D(c,A,0,0,y,d,g,1,a,l,x),b&&x===b.canvas&&(b.canvas.width=0,b.canvas.height=0)}ds(t)&&n.generateMipmap(c)}u===0&&r(f.length?f:void 0,e,h)}}h=i.map(function(y,w){return Yl(y,t.crossOrigin,C(w))})}function $d(n,e,t,r){r=r||En.textureOptions;const i=r.target||tn;n.bindTexture(i,e);let s=r.width,o=r.height,a=r.depth;const l=r.level||0,c=r.internalFormat||r.format||de,u=Kr(c),f=r.format||u.format,h=r.type||Kd(n,t,u.type);if(Vr(t))t instanceof Uint8ClampedArray&&(t=new Uint8Array(t.buffer));else{const p=jE(h);t=new p(t)}const A=LB(c,h),d=t.byteLength/A;if(d%1)throw"length wrong size for format: "+Pl(n,f);let g;if(i===xn||i===Bn)if(!s&&!o&&!a){const p=Math.cbrt(d);if(p%1!==0)throw"can't guess cube size of array of numElements: "+d;s=p,o=p,a=p}else s&&(!o||!a)?(g=aa(n,i,o,a,d/s),o=g.width,a=g.height):o&&(!s||!a)?(g=aa(n,i,s,a,d/o),s=g.width,a=g.height):(g=aa(n,i,s,o,d/a),s=g.width,o=g.height);else g=aa(n,i,s,o,d),s=g.width,o=g.height;if(jd(n),n.pixelStorei(Ul,r.unpackAlignment||1),jr(n,r),i===nn){const p=A/t.BYTES_PER_ELEMENT,m=d/6*p;_l(n,r).forEach(C=>{const y=m*C.ndx,w=t.subarray(y,y+m);n.texImage2D(C.face,l,c,s,o,0,f,h,w)})}else i===xn||i===Bn?n.texImage3D(i,l,c,s,o,a,0,f,h,t):n.texImage2D(i,l,c,s,o,0,f,h,t);return{width:s,height:o,depth:a,type:h}}function KB(n,e,t){const r=t.target||tn;n.bindTexture(r,e);const i=t.level||0,s=t.internalFormat||t.format||de,o=Kr(s),a=t.format||o.format,l=t.type||o.type;if(jr(n,t),r===nn)for(let c=0;c<6;++c)n.texImage2D($o+c,i,s,t.width,t.height,0,a,l,null);else r===xn||r===Bn?n.texImage3D(r,i,s,t.width,t.height,t.depth,0,a,l,null):n.texImage2D(r,i,s,t.width,t.height,0,a,l,null)}function ps(n,e,t){t=t||gs,e=e||En.textureOptions;const r=n.createTexture(),i=e.target||tn;let s=e.width||1,o=e.height||1;const a=e.internalFormat||de;n.bindTexture(i,r),i===nn&&(n.texParameteri(i,ea,Zo),n.texParameteri(i,ta,Zo));let l=e.src;if(l)if(typeof l=="function"&&(l=l(n,e)),typeof l=="string")YB(n,r,e,t);else if(Vr(l)||Array.isArray(l)&&(typeof l[0]=="number"||Array.isArray(l[0])||Vr(l[0]))){const c=$d(n,r,l,e);s=c.width,o=c.height}else Array.isArray(l)&&(typeof l[0]=="string"||Zd(l[0]))?i===nn?JB(n,r,e,t):qB(n,r,e,t):(Xd(n,r,l,e),s=l.width,o=l.height);else KB(n,r,e);return ds(e)&&Hl(n,r,e,s,o,a),Wd(n,r,e),r}function jB(n,e,t,r,i,s){r=r||t.width,i=i||t.height,s=s||t.depth;const o=t.target||tn;n.bindTexture(o,e);const a=t.level||0,l=t.internalFormat||t.format||de,c=Kr(l),u=t.format||c.format;let f;const h=t.src;if(h&&(Vr(h)||Array.isArray(h)&&typeof h[0]=="number")?f=t.type||Kd(n,h,c.type):f=t.type||c.type,o===nn)for(let A=0;A<6;++A)n.texImage2D($o+A,a,l,r,i,0,u,f,null);else o===xn||o===Bn?n.texImage3D(o,a,l,r,i,s,0,u,f,null):n.texImage2D(o,a,l,r,i,0,u,f,null)}const WB=Bd,ca=33984,XB=35048,la=34962,ZB=34963,ql=35345,e0=35718,$B=35721,ev=35971,tv=35382,nv=35396,rv=35398,iv=35392,sv=35395,ua=5126,t0=35664,n0=35665,r0=35666,Kl=5124,i0=35667,s0=35668,o0=35669,a0=35670,c0=35671,l0=35672,u0=35673,f0=35674,A0=35675,h0=35676,ov=35678,av=35680,cv=35679,lv=35682,uv=35685,fv=35686,Av=35687,hv=35688,dv=35689,gv=35690,pv=36289,mv=36292,wv=36293,jl=5125,d0=36294,g0=36295,p0=36296,Cv=36298,yv=36299,Iv=36300,bv=36303,Ev=36306,xv=36307,Bv=36308,vv=36311,fa=3553,Aa=34067,Wl=32879,ha=35866,q={};function m0(n,e){return q[e].bindPoint}function Sv(n,e){return function(t){n.uniform1f(e,t)}}function Qv(n,e){return function(t){n.uniform1fv(e,t)}}function Dv(n,e){return function(t){n.uniform2fv(e,t)}}function kv(n,e){return function(t){n.uniform3fv(e,t)}}function Fv(n,e){return function(t){n.uniform4fv(e,t)}}function w0(n,e){return function(t){n.uniform1i(e,t)}}function C0(n,e){return function(t){n.uniform1iv(e,t)}}function y0(n,e){return function(t){n.uniform2iv(e,t)}}function I0(n,e){return function(t){n.uniform3iv(e,t)}}function b0(n,e){return function(t){n.uniform4iv(e,t)}}function Rv(n,e){return function(t){n.uniform1ui(e,t)}}function Mv(n,e){return function(t){n.uniform1uiv(e,t)}}function Nv(n,e){return function(t){n.uniform2uiv(e,t)}}function Tv(n,e){return function(t){n.uniform3uiv(e,t)}}function Pv(n,e){return function(t){n.uniform4uiv(e,t)}}function Lv(n,e){return function(t){n.uniformMatrix2fv(e,!1,t)}}function Ov(n,e){return function(t){n.uniformMatrix3fv(e,!1,t)}}function Uv(n,e){return function(t){n.uniformMatrix4fv(e,!1,t)}}function Gv(n,e){return function(t){n.uniformMatrix2x3fv(e,!1,t)}}function zv(n,e){return function(t){n.uniformMatrix3x2fv(e,!1,t)}}function Hv(n,e){return function(t){n.uniformMatrix2x4fv(e,!1,t)}}function Vv(n,e){return function(t){n.uniformMatrix4x2fv(e,!1,t)}}function _v(n,e){return function(t){n.uniformMatrix3x4fv(e,!1,t)}}function Yv(n,e){return function(t){n.uniformMatrix4x3fv(e,!1,t)}}function $e(n,e,t,r){const i=m0(n,e);return Hr(n)?function(s){let o,a;Xo(n,s)?(o=s,a=null):(o=s.texture,a=s.sampler),n.uniform1i(r,t),n.activeTexture(ca+t),n.bindTexture(i,o),n.bindSampler(t,a)}:function(s){n.uniform1i(r,t),n.activeTexture(ca+t),n.bindTexture(i,s)}}function et(n,e,t,r,i){const s=m0(n,e),o=new Int32Array(i);for(let a=0;a<i;++a)o[a]=t+a;return Hr(n)?function(a){n.uniform1iv(r,o),a.forEach(function(l,c){n.activeTexture(ca+o[c]);let u,f;Xo(n,l)?(u=l,f=null):(u=l.texture,f=l.sampler),n.bindSampler(t,f),n.bindTexture(s,u)})}:function(a){n.uniform1iv(r,o),a.forEach(function(l,c){n.activeTexture(ca+o[c]),n.bindTexture(s,l)})}}q[ua]={Type:Float32Array,size:4,setter:Sv,arraySetter:Qv},q[t0]={Type:Float32Array,size:8,setter:Dv,cols:2},q[n0]={Type:Float32Array,size:12,setter:kv,cols:3},q[r0]={Type:Float32Array,size:16,setter:Fv,cols:4},q[Kl]={Type:Int32Array,size:4,setter:w0,arraySetter:C0},q[i0]={Type:Int32Array,size:8,setter:y0,cols:2},q[s0]={Type:Int32Array,size:12,setter:I0,cols:3},q[o0]={Type:Int32Array,size:16,setter:b0,cols:4},q[jl]={Type:Uint32Array,size:4,setter:Rv,arraySetter:Mv},q[d0]={Type:Uint32Array,size:8,setter:Nv,cols:2},q[g0]={Type:Uint32Array,size:12,setter:Tv,cols:3},q[p0]={Type:Uint32Array,size:16,setter:Pv,cols:4},q[a0]={Type:Uint32Array,size:4,setter:w0,arraySetter:C0},q[c0]={Type:Uint32Array,size:8,setter:y0,cols:2},q[l0]={Type:Uint32Array,size:12,setter:I0,cols:3},q[u0]={Type:Uint32Array,size:16,setter:b0,cols:4},q[f0]={Type:Float32Array,size:32,setter:Lv,rows:2,cols:2},q[A0]={Type:Float32Array,size:48,setter:Ov,rows:3,cols:3},q[h0]={Type:Float32Array,size:64,setter:Uv,rows:4,cols:4},q[uv]={Type:Float32Array,size:32,setter:Gv,rows:2,cols:3},q[fv]={Type:Float32Array,size:32,setter:Hv,rows:2,cols:4},q[Av]={Type:Float32Array,size:48,setter:zv,rows:3,cols:2},q[hv]={Type:Float32Array,size:48,setter:_v,rows:3,cols:4},q[dv]={Type:Float32Array,size:64,setter:Vv,rows:4,cols:2},q[gv]={Type:Float32Array,size:64,setter:Yv,rows:4,cols:3},q[ov]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:fa},q[av]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:Aa},q[cv]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:Wl},q[lv]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:fa},q[pv]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:ha},q[mv]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:ha},q[wv]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:Aa},q[Cv]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:fa},q[yv]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:Wl},q[Iv]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:Aa},q[bv]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:ha},q[Ev]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:fa},q[xv]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:Wl},q[Bv]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:Aa},q[vv]={Type:null,size:0,setter:$e,arraySetter:et,bindPoint:ha};function da(n,e){return function(t){if(t.value)switch(n.disableVertexAttribArray(e),t.value.length){case 4:n.vertexAttrib4fv(e,t.value);break;case 3:n.vertexAttrib3fv(e,t.value);break;case 2:n.vertexAttrib2fv(e,t.value);break;case 1:n.vertexAttrib1fv(e,t.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else n.bindBuffer(la,t.buffer),n.enableVertexAttribArray(e),n.vertexAttribPointer(e,t.numComponents||t.size,t.type||ua,t.normalize||!1,t.stride||0,t.offset||0),t.divisor!==void 0&&n.vertexAttribDivisor(e,t.divisor)}}function Sn(n,e){return function(t){if(t.value)if(n.disableVertexAttribArray(e),t.value.length===4)n.vertexAttrib4iv(e,t.value);else throw new Error("The length of an integer constant value must be 4!");else n.bindBuffer(la,t.buffer),n.enableVertexAttribArray(e),n.vertexAttribIPointer(e,t.numComponents||t.size,t.type||Kl,t.stride||0,t.offset||0),t.divisor!==void 0&&n.vertexAttribDivisor(e,t.divisor)}}function ga(n,e){return function(t){if(t.value)if(n.disableVertexAttribArray(e),t.value.length===4)n.vertexAttrib4uiv(e,t.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else n.bindBuffer(la,t.buffer),n.enableVertexAttribArray(e),n.vertexAttribIPointer(e,t.numComponents||t.size,t.type||jl,t.stride||0,t.offset||0),t.divisor!==void 0&&n.vertexAttribDivisor(e,t.divisor)}}function Xl(n,e,t){const r=t.size,i=t.count;return function(s){n.bindBuffer(la,s.buffer);const o=s.size||s.numComponents||r,a=o/i,l=s.type||ua,u=q[l].size*o,f=s.normalize||!1,h=s.offset||0,A=u/i;for(let d=0;d<i;++d)n.enableVertexAttribArray(e+d),n.vertexAttribPointer(e+d,a,l,f,u,h+A*d),s.divisor!==void 0&&n.vertexAttribDivisor(e+d,s.divisor)}}const Be={};Be[ua]={size:4,setter:da},Be[t0]={size:8,setter:da},Be[n0]={size:12,setter:da},Be[r0]={size:16,setter:da},Be[Kl]={size:4,setter:Sn},Be[i0]={size:8,setter:Sn},Be[s0]={size:12,setter:Sn},Be[o0]={size:16,setter:Sn},Be[jl]={size:4,setter:ga},Be[d0]={size:8,setter:ga},Be[g0]={size:12,setter:ga},Be[p0]={size:16,setter:ga},Be[a0]={size:4,setter:Sn},Be[c0]={size:8,setter:Sn},Be[l0]={size:12,setter:Sn},Be[u0]={size:16,setter:Sn},Be[f0]={size:4,setter:Xl,count:2},Be[A0]={size:9,setter:Xl,count:3},Be[h0]={size:16,setter:Xl,count:4};function E0(n){const e=n.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const Jv=/(\.|\[|]|\w+)/g,qv=n=>n>="0"&&n<="9";function x0(n,e,t,r){const i=n.split(Jv).filter(a=>a!=="");let s=0,o="";for(;;){const a=i[s++];o+=a;const l=qv(a[0]),c=l?parseInt(a):a;if(l&&(o+=i[s++]),s===i.length){t[c]=e;break}else{const f=i[s++],h=f==="[",A=t[c]||(h?[]:{});t[c]=A,t=A,r[o]=r[o]||(function(d){return function(g){D0(d,g)}})(A),o+=f}}}function Kv(n,e){let t=0;function r(a,l,c){const u=l.name.endsWith("[0]"),f=l.type,h=q[f];if(!h)throw new Error(`unknown type: 0x${f.toString(16)}`);let A;if(h.bindPoint){const d=t;t+=l.size,u?A=h.arraySetter(n,f,d,c,l.size):A=h.setter(n,f,d,c,l.size)}else h.arraySetter&&u?A=h.arraySetter(n,c):A=h.setter(n,c);return A.location=c,A}const i={},s={},o=n.getProgramParameter(e,e0);for(let a=0;a<o;++a){const l=n.getActiveUniform(e,a);if(E0(l))continue;let c=l.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const u=n.getUniformLocation(e,l.name);if(u){const f=r(e,l,u);i[c]=f,x0(c,f,s,i)}}return i}function jv(n,e){const t={},r=n.getProgramParameter(e,ev);for(let i=0;i<r;++i){const s=n.getTransformFeedbackVarying(e,i);t[s.name]={index:i,type:s.type,size:s.size}}return t}function Wv(n,e){const t=n.getProgramParameter(e,e0),r=[],i=[];for(let a=0;a<t;++a){i.push(a),r.push({});const l=n.getActiveUniform(e,a);r[a].name=l.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const l=a[0],c=a[1];n.getActiveUniforms(e,i,n[l]).forEach(function(u,f){r[f][c]=u})});const s={},o=n.getProgramParameter(e,tv);for(let a=0;a<o;++a){const l=n.getActiveUniformBlockName(e,a),c={index:n.getUniformBlockIndex(e,l),usedByVertexShader:n.getActiveUniformBlockParameter(e,a,nv),usedByFragmentShader:n.getActiveUniformBlockParameter(e,a,rv),size:n.getActiveUniformBlockParameter(e,a,iv),uniformIndices:n.getActiveUniformBlockParameter(e,a,sv)};c.used=c.usedByVertexShader||c.usedByFragmentShader,s[l]=c}return{blockSpecs:s,uniformData:r}}const B0=/\[\d+\]\.$/,Xv=(n,e)=>((n+(e-1))/e|0)*e;function Zv(n,e,t,r){if(e||t){r=r||1;const s=n.length/4;return function(o){let a=0,l=0;for(let c=0;c<s;++c){for(let u=0;u<r;++u)n[a++]=o[l++];a+=4-r}}}else return function(i){i.length?n.set(i):n[0]=i}}function $v(n,e,t,r){const i=t.blockSpecs,s=t.uniformData,o=i[r];if(!o)return WB("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(o.size),l=n.createBuffer(),c=o.index;n.bindBuffer(ql,l),n.uniformBlockBinding(e,o.index,c);let u=r+".";B0.test(u)&&(u=u.replace(B0,"."));const f={},h={},A={};return o.uniformIndices.forEach(function(d){const g=s[d];let p=g.name;p.startsWith(u)&&(p=p.substr(u.length));const m=p.endsWith("[0]");m&&(p=p.substr(0,p.length-3));const C=q[g.type],y=C.Type,w=m?Xv(C.size,16)*g.size:C.size*g.size,E=new y(a,g.offset,w/y.BYTES_PER_ELEMENT);f[p]=E;const x=Zv(E,m,C.rows,C.cols);h[p]=x,x0(p,x,A,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:l,uniforms:f,setters:h}}function v0(n,e,t){return $v(n,e.program,e.uniformBlockSpec,t)}function S0(n,e,t){const i=(e.uniformBlockSpec||e).blockSpecs[t.name];if(i){const s=i.index;return n.bindBufferRange(ql,s,t.buffer,t.offset||0,t.array.byteLength),!0}return!1}function Q0(n,e,t){S0(n,e,t)&&n.bufferData(ql,t.array,XB)}function ms(n,e){const t=n.setters;for(const r in e){const i=t[r];if(i){const s=e[r];i(s)}}}function D0(n,e){for(const t in e){const r=n[t];typeof r=="function"?r(e[t]):D0(n[t],e[t])}}function ir(n,...e){const t=n.uniformSetters||n,r=e.length;for(let i=0;i<r;++i){const s=e[i];if(Array.isArray(s)){const o=s.length;for(let a=0;a<o;++a)ir(t,s[a])}else for(const o in s){const a=t[o];a&&a(s[o])}}}function e3(n,e){const t={},r=n.getProgramParameter(e,$B);for(let i=0;i<r;++i){const s=n.getActiveAttrib(e,i);if(E0(s))continue;const o=n.getAttribLocation(e,s.name),a=Be[s.type],l=a.setter(n,o,a);l.location=o,t[s.name]=l}return t}function t3(n,e){for(const t in e){const r=n[t];r&&r(e[t])}}function sr(n,e,t){t.vertexArrayObject?n.bindVertexArray(t.vertexArrayObject):(t3(e.attribSetters||e,t.attribs),t.indices&&n.bindBuffer(ZB,t.indices))}function n3(n,e){const t=Kv(n,e),r=e3(n,e),i={program:e,uniformSetters:t,attribSetters:r};return Hr(n)&&(i.uniformBlockSpec=Wv(n,e),i.transformFeedbackInfo=jv(n,e)),i}const r3=4,k0=5123;function pa(n,e,t,r,i,s){t=t===void 0?r3:t;const o=e.indices,a=e.elementType,l=r===void 0?e.numElements:r;i=i===void 0?0:i,a||o?s!==void 0?n.drawElementsInstanced(t,l,a===void 0?k0:e.elementType,i,s):n.drawElements(t,l,a===void 0?k0:e.elementType,i):s!==void 0?n.drawArraysInstanced(t,i,l,s):n.drawArrays(t,i,l)}const i3=36160,or=36161,s3=3553,o3=5121,a3=6402,c3=6408,l3=33190,u3=36012,f3=35056,A3=36013,h3=32854,d3=32855,g3=36194,F0=33189,R0=6401,M0=36168,Zl=34041,$l=36064,ma=36096,N0=36128,eu=33306,tu=33071,nu=9729,T0=[{format:c3,type:o3,min:nu,wrap:tu},{format:Zl}],Bt={};Bt[Zl]=eu,Bt[R0]=N0,Bt[M0]=N0,Bt[a3]=ma,Bt[F0]=ma,Bt[l3]=ma,Bt[u3]=ma,Bt[f3]=eu,Bt[A3]=eu;function p3(n,e){return Bt[n]||Bt[e]}const Qn={};Qn[h3]=!0,Qn[d3]=!0,Qn[g3]=!0,Qn[Zl]=!0,Qn[F0]=!0,Qn[R0]=!0,Qn[M0]=!0;function m3(n){return Qn[n]}const w3=32;function C3(n){return n>=$l&&n<$l+w3}function P0(n,e,t,r){const i=i3,s=n.createFramebuffer();n.bindFramebuffer(i,s),t=t||n.drawingBufferWidth,r=r||n.drawingBufferHeight,e=e||T0;const o=[],a={framebuffer:s,attachments:[],width:t,height:r};return e.forEach(function(l,c){let u=l.attachment;const f=l.samples,h=l.format;let A=l.attachmentPoint||p3(h,l.internalFormat);if(A||(A=$l+c),C3(A)&&o.push(A),!u)if(f!==void 0||m3(h))u=n.createRenderbuffer(),n.bindRenderbuffer(or,u),f>1?n.renderbufferStorageMultisample(or,f,h,t,r):n.renderbufferStorage(or,h,t,r);else{const d=Object.assign({},l);d.width=t,d.height=r,d.auto===void 0&&(d.auto=!1,d.min=d.min||d.minMag||nu,d.mag=d.mag||d.minMag||nu,d.wrapS=d.wrapS||d.wrap||tu,d.wrapT=d.wrapT||d.wrap||tu),u=ps(n,d)}if(vd(n,u))n.framebufferRenderbuffer(i,A,or,u);else if(Xo(n,u))l.layer!==void 0?n.framebufferTextureLayer(i,A,u,l.level||0,l.layer):n.framebufferTexture2D(i,A,l.target||s3,u,l.level||0);else throw new Error("unknown attachment type");a.attachments.push(u)}),n.drawBuffers&&n.drawBuffers(o),a}function y3(n,e,t,r,i){r=r||n.drawingBufferWidth,i=i||n.drawingBufferHeight,e.width=r,e.height=i,t=t||T0,t.forEach(function(s,o){const a=e.attachments[o],l=s.format,c=s.samples;if(c!==void 0||vd(n,a))n.bindRenderbuffer(or,a),c>1?n.renderbufferStorageMultisample(or,c,l,r,i):n.renderbufferStorage(or,l,r,i);else if(Xo(n,a))jB(n,a,s,r,i);else throw new Error("unknown attachment type")})}function I3(n,e,t){const r=n.createVertexArray();return n.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){sr(n,i,t)}),n.bindVertexArray(null),{numElements:t.numElements,elementType:t.elementType,vertexArrayObject:r}}const b3=/^(.*?)_/;function E3(n,e){Pl(n,0);const t=n.getExtension(e);if(t){const r={},i=b3.exec(e)[1],s="_"+i;for(const o in t){const a=t[o],l=typeof a=="function",c=l?i:s;let u=o;o.endsWith(c)&&(u=o.substring(0,o.length-c.length)),n[u]!==void 0?!l&&n[u]!==a&&Bd(u,n[u],a,o):l?n[u]=(function(f){return function(){return f.apply(t,arguments)}})(a):(n[u]=a,r[u]=a)}r.constructor={name:t.constructor.name},Pl(r,0)}return t}const L0=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_color_buffer_float","EXT_color_buffer_half_float","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_frag_depth","EXT_sRGB","EXT_shader_texture_lod","EXT_texture_filter_anisotropic","OES_element_index_uint","OES_standard_derivatives","OES_texture_float","OES_texture_float_linear","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_compressed_texture_atc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_depth_texture","WEBGL_draw_buffers"];function O0(n){for(let e=0;e<L0.length;++e)E3(n,L0[e])}function x3(n,e){const t=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<t.length;++i)if(r=n.getContext(t[i],e),r){O0(r);break}return r}function B3(n,e){return x3(n,e)}const v3=`flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
366
340
  #if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
367
341
  out vec2 vPosInPixels;
368
342
  #endif
@@ -370,7 +344,7 @@ flat out vec2 vHalfSizeInPixels;/***Adjusts the vertex position to ensure that t
370
344
  #if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
371
345
  float aaPadding=1.0/uDevicePixelRatio;float shadowPadding=uShadowBlur+max(abs(uShadowOffsetX),abs(uShadowOffsetY));float strokeWidth=getScaled_strokeWidth();float strokeOpacity=getScaled_strokeOpacity()*opaFactor;vec2 centeredFrac=frac-0.5;vec2 expand=centeredFrac*(strokeWidth+aaPadding+shadowPadding*2.0)/uViewportSize;pos+=expand;vec2 sizeInPixels=size*uViewportSize;vPosInPixels=(centeredFrac+expand/size)*sizeInPixels;vHalfSizeInPixels=sizeInPixels/2.0;vCornerRadii=min(cornerRadii,min(vHalfSizeInPixels.x,vHalfSizeInPixels.y));vHalfStrokeWidth=strokeWidth/2.0;vStrokeColor=vec4(getScaled_stroke()*strokeOpacity,strokeOpacity);
372
346
  #endif
373
- gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,b8=`#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
347
+ gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,S3=`#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
374
348
  in vec2 vPosInPixels;
375
349
  #endif
376
350
  flat in vec2 vHalfSizeInPixels;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in float vHalfStrokeWidth;flat in vec4 vCornerRadii;out lowp vec4 fragColor;
@@ -396,59 +370,59 @@ if(vHalfStrokeWidth>0.0&&uHatchPattern>0){d=max(d,-pattern());}fragColor=distanc
396
370
  #else
397
371
  fragColor=vFillColor;if(uPickingEnabled){fragColor=vPickingColor;}
398
372
  #endif
399
- }`,x8=`layout(std140)uniform Mark{uniform float uMinWidth;uniform float uMinHeight;uniform float uMinOpacity;uniform float uCornerRadiusTopRight;uniform float uCornerRadiusBottomRight;uniform float uCornerRadiusTopLeft;uniform float uCornerRadiusBottomLeft;uniform int uHatchPattern;uniform vec3 uShadowColor;uniform float uShadowOpacity;uniform float uShadowBlur;uniform float uShadowOffsetX;uniform float uShadowOffsetY;
373
+ }`,Q3=`layout(std140)uniform Mark{uniform float uMinWidth;uniform float uMinHeight;uniform float uMinOpacity;uniform float uCornerRadiusTopRight;uniform float uCornerRadiusBottomRight;uniform float uCornerRadiusTopLeft;uniform float uCornerRadiusBottomLeft;uniform int uHatchPattern;uniform vec3 uShadowColor;uniform float uShadowOpacity;uniform float uShadowBlur;uniform float uShadowOffsetX;uniform float uShadowOffsetY;
400
374
  #pragma markUniforms
401
- };`,XC=1e4;class B8{constructor(t){v(this,_o);v(this,bl,!1);this.size=t,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}configure(){if(g(this,bl))throw new Error("Already configured!");F(this,_o,AB).call(this),F(this,_o,hB).call(this),Q(this,bl,!0)}addConverter(t,e){const r=this.createUpdater(t,e.numComponents||1,e.targetArrayType??Float32Array,e.arrayReference),i=e.f;this.dataUpdaters.push(e.arrayReference?s=>r(i(s)):s=>r(i(s)))}createUpdater(t,e,r=Float32Array,i=void 0){if(!ot(this.size))throw new Error("The number of vertices must be defined!");let s,o,a=0;const l=new r(this.size*e);if(this.arrays[t]={data:l,numComponents:e},e==1){let c=0;const u=f=>{c=+f};s=()=>{l[a++]=c},o=u}else{let c=i??[0];const u=i?f=>{}:f=>{c=f};switch(e){case 1:break;case 2:s=()=>{l[a++]=c[0],l[a++]=c[1]},o=u;break;case 3:s=()=>{l[a++]=c[0],l[a++]=c[1],l[a++]=c[2]},o=u;break;case 4:s=()=>{l[a++]=c[0],l[a++]=c[1],l[a++]=c[2],l[a++]=c[3]},o=u;break;default:throw new Error("Invalid numComponents: "+e)}}return this.pushers.push(s),o}pushAll(){throw new Error("Call configure() first!")}updateFromDatum(t){throw new Error("Call configure() first!")}pushFromDatum(t){this.updateFromDatum(t),this.pushAll()}}bl=new WeakMap,_o=new WeakSet,AB=function(){if(this.size>XC){const t=this.pushers.map((r,i)=>`const p${i} = that.pushers[${i}];`).join(`
402
- `),e=this.pushers.map((r,i)=>` p${i}();`).join(`
403
- `);this.pushAll=new Function("that",`${t}
375
+ };`,U0=1e4;class D3{#e=!1;constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}configure(){if(this.#e)throw new Error("Already configured!");this.#t(),this.#n(),this.#e=!0}addConverter(e,t){const r=this.createUpdater(e,t.numComponents||1,t.targetArrayType??Float32Array,t.arrayReference),i=t.f;this.dataUpdaters.push(t.arrayReference?s=>r(i(s)):s=>r(i(s)))}createUpdater(e,t,r=Float32Array,i=void 0){if(!Ye(this.size))throw new Error("The number of vertices must be defined!");let s,o,a=0;const l=new r(this.size*t);if(this.arrays[e]={data:l,numComponents:t},t==1){let c=0;const u=f=>{c=+f};s=()=>{l[a++]=c},o=u}else{let c=i??[0];const u=i?f=>{}:f=>{c=f};switch(t){case 1:break;case 2:s=()=>{l[a++]=c[0],l[a++]=c[1]},o=u;break;case 3:s=()=>{l[a++]=c[0],l[a++]=c[1],l[a++]=c[2]},o=u;break;case 4:s=()=>{l[a++]=c[0],l[a++]=c[1],l[a++]=c[2],l[a++]=c[3]},o=u;break;default:throw new Error("Invalid numComponents: "+t)}}return this.pushers.push(s),o}pushAll(){throw new Error("Call configure() first!")}updateFromDatum(e){throw new Error("Call configure() first!")}#t(){if(this.size>U0){const e=this.pushers.map((r,i)=>`const p${i} = that.pushers[${i}];`).join(`
376
+ `),t=this.pushers.map((r,i)=>` p${i}();`).join(`
377
+ `);this.pushAll=new Function("that",`${e}
404
378
  return function unrolledPushAll() {
405
- ${e}
379
+ ${t}
406
380
  that.vertexCount++;
407
- };`)(this)}else this.pushAll=()=>{for(let t=0;t<this.pushers.length;t++)this.pushers[t]();this.vertexCount++}},hB=function(){if(this.size>XC){const t=this.dataUpdaters.map((r,i)=>`const u${i} = that.dataUpdaters[${i}];`).join(`
408
- `),e=this.dataUpdaters.map((r,i)=>` u${i}(datum);`).join(`
409
- `);this.updateFromDatum=new Function("that","datum",`${t}
381
+ };`)(this)}else this.pushAll=()=>{for(let e=0;e<this.pushers.length;e++)this.pushers[e]();this.vertexCount++}}#n(){if(this.size>U0){const e=this.dataUpdaters.map((r,i)=>`const u${i} = that.dataUpdaters[${i}];`).join(`
382
+ `),t=this.dataUpdaters.map((r,i)=>` u${i}(datum);`).join(`
383
+ `);this.updateFromDatum=new Function("that","datum",`${e}
410
384
  return function unrolledUpdateFromDatum(datum) {
411
- ${e}
412
- };`)(this)}else this.updateFromDatum=t=>{for(let e=0;e<this.dataUpdaters.length;e++)this.dataUpdaters[e](t)}};const ro=5,Md=127;function Nd(n){const t=[];for(let d=0;d<=Md;d++)t.push(void 0);const e=new Map;for(const d of n.chars)d.id<=Md?t[d.id]=d:e.set(d.id,d);const r=8722;e.has(r)||e.set(r,t[45]);function i(d){return(d<=Md?t[d]:e.get(d))||t[63]}function s(d){return i(d.charCodeAt(0))}const o=n.common.base,a=s("x"),l=s("X"),c=s("q"),u=a.height-ro*2,f=l.height-ro*2,h=c.height-a.height+c.yoffset-a.yoffset;function A(d,p=1){let C=0;for(let m=0;m<d.length;m++)C+=i(d.charCodeAt(m)).xadvance;return C/o*p}return{measureWidth:A,getCharByCode:i,getChar:s,xHeight:u,capHeight:f,descent:h,common:n.common}}function io(n,t=0,e=1){return Math.max(t,Math.min(e,n))}const ZC=2**31-1,v8=-2147483648;function S8(n,t,e,r=e){const i=new Array(n);i.fill(ZC);let s=v8,o=-1/0,a=!1;const l=new Array(n);l.fill(0);const c=t[0],f=(t[1]-t[0])/n,h=(m,y)=>{const I=(m-c)/f,w=Math.floor(I);return io(y&&w==I?w-1:w,0,n-1)};function A(m,y,I){if(a)return;if(y>s)s=y;else{a=!0;return}const w=e(m);if(w<o){a=!0;return}o=w;const x=h(w,!1);i[x]>y&&(i[x]=y),l[x]<I&&(l[x]=I)}function d(m,y,I){if(a)return;if(y>s)s=y;else{a=!0,console.debug("Items (vertices) are not ordered properly. Disabling binned index.");return}const w=e(m),x=r(m);if(w<o){a=!0;return}else if(x<w){a=!0;return}o=w;const B=h(w,!1),E=h(x,!0);for(let D=B;D<=E;D++)i[D]>y&&(i[D]=y),l[D]<I&&(l[D]=I)}const p=(m,y,I=[0,0])=>{const w=h(m,!1),x=h(y,!0),B=i[w],E=Math.max(l[x],B);return I[0]=B,I[1]=E,I},C=()=>{if(a)return;for(let y=1;y<l.length;y++)l[y]<l[y-1]&&(l[y]=l[y-1]);let m=!0;for(let y=i.length-1;y>0;y--)m&&i[y]==ZC?(i[y]=l[y],m=!1):i[y-1]>i[y]&&(i[y-1]=i[y]);return p};return A.getIndex=C,d.getIndex=C,e==r?A:d}function yn(n,t){switch(arguments.length){case 0:break;case 1:this.range(n);break;default:this.range(t).domain(n);break}return this}function Sr(n,t){switch(arguments.length){case 0:break;case 1:{typeof n=="function"?this.interpolator(n):this.range(n);break}default:{this.domain(n),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}const kf=Symbol("implicit");function Td(){var n=new Tn,t=[],e=[],r=kf;function i(s){let o=n.get(s);if(o===void 0){if(r!==kf)return r;n.set(s,o=t.push(s)-1)}return e[o%e.length]}return i.domain=function(s){if(!arguments.length)return t.slice();t=[],n=new Tn;for(const o of s)n.has(o)||n.set(o,t.push(o)-1);return i},i.range=function(s){return arguments.length?(e=Array.from(s),i):e.slice()},i.unknown=function(s){return arguments.length?(r=s,i):r},i.copy=function(){return Td(t,e).unknown(r)},yn.apply(i,arguments),i}function so(n,t,e){n.prototype=t.prototype=e,e.constructor=n}function bc(n,t){var e=Object.create(n.prototype);for(var r in t)e[r]=t[r];return e}function Qr(){}var Qi=.7,oo=1/Qi,ao="\\s*([+-]?\\d+)\\s*",xc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",In="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Q8=/^#([0-9a-f]{3,8})$/,D8=new RegExp(`^rgb\\(${ao},${ao},${ao}\\)$`),k8=new RegExp(`^rgb\\(${In},${In},${In}\\)$`),F8=new RegExp(`^rgba\\(${ao},${ao},${ao},${xc}\\)$`),R8=new RegExp(`^rgba\\(${In},${In},${In},${xc}\\)$`),M8=new RegExp(`^hsl\\(${xc},${In},${In}\\)$`),N8=new RegExp(`^hsla\\(${xc},${In},${In},${xc}\\)$`),$C={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};so(Qr,Dr,{copy(n){return Object.assign(new this.constructor,this,n)},displayable(){return this.rgb().displayable()},hex:ew,formatHex:ew,formatHex8:T8,formatHsl:P8,formatRgb:tw,toString:tw});function ew(){return this.rgb().formatHex()}function T8(){return this.rgb().formatHex8()}function P8(){return ow(this).formatHsl()}function tw(){return this.rgb().formatRgb()}function Dr(n){var t,e;return n=(n+"").trim().toLowerCase(),(t=Q8.exec(n))?(e=t[1].length,t=parseInt(t[1],16),e===6?nw(t):e===3?new je(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):e===8?Ff(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):e===4?Ff(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=D8.exec(n))?new je(t[1],t[2],t[3],1):(t=k8.exec(n))?new je(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=F8.exec(n))?Ff(t[1],t[2],t[3],t[4]):(t=R8.exec(n))?Ff(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=M8.exec(n))?sw(t[1],t[2]/100,t[3]/100,1):(t=N8.exec(n))?sw(t[1],t[2]/100,t[3]/100,t[4]):$C.hasOwnProperty(n)?nw($C[n]):n==="transparent"?new je(NaN,NaN,NaN,0):null}function nw(n){return new je(n>>16&255,n>>8&255,n&255,1)}function Ff(n,t,e,r){return r<=0&&(n=t=e=NaN),new je(n,t,e,r)}function Pd(n){return n instanceof Qr||(n=Dr(n)),n?(n=n.rgb(),new je(n.r,n.g,n.b,n.opacity)):new je}function Rf(n,t,e,r){return arguments.length===1?Pd(n):new je(n,t,e,r??1)}function je(n,t,e,r){this.r=+n,this.g=+t,this.b=+e,this.opacity=+r}so(je,Rf,bc(Qr,{brighter(n){return n=n==null?oo:Math.pow(oo,n),new je(this.r*n,this.g*n,this.b*n,this.opacity)},darker(n){return n=n==null?Qi:Math.pow(Qi,n),new je(this.r*n,this.g*n,this.b*n,this.opacity)},rgb(){return this},clamp(){return new je(Di(this.r),Di(this.g),Di(this.b),Mf(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:rw,formatHex:rw,formatHex8:L8,formatRgb:iw,toString:iw}));function rw(){return`#${ki(this.r)}${ki(this.g)}${ki(this.b)}`}function L8(){return`#${ki(this.r)}${ki(this.g)}${ki(this.b)}${ki((isNaN(this.opacity)?1:this.opacity)*255)}`}function iw(){const n=Mf(this.opacity);return`${n===1?"rgb(":"rgba("}${Di(this.r)}, ${Di(this.g)}, ${Di(this.b)}${n===1?")":`, ${n})`}`}function Mf(n){return isNaN(n)?1:Math.max(0,Math.min(1,n))}function Di(n){return Math.max(0,Math.min(255,Math.round(n)||0))}function ki(n){return n=Di(n),(n<16?"0":"")+n.toString(16)}function sw(n,t,e,r){return r<=0?n=t=e=NaN:e<=0||e>=1?n=t=NaN:t<=0&&(n=NaN),new nn(n,t,e,r)}function ow(n){if(n instanceof nn)return new nn(n.h,n.s,n.l,n.opacity);if(n instanceof Qr||(n=Dr(n)),!n)return new nn;if(n instanceof nn)return n;n=n.rgb();var t=n.r/255,e=n.g/255,r=n.b/255,i=Math.min(t,e,r),s=Math.max(t,e,r),o=NaN,a=s-i,l=(s+i)/2;return a?(t===s?o=(e-r)/a+(e<r)*6:e===s?o=(r-t)/a+2:o=(t-e)/a+4,a/=l<.5?s+i:2-s-i,o*=60):a=l>0&&l<1?0:o,new nn(o,a,l,n.opacity)}function Ld(n,t,e,r){return arguments.length===1?ow(n):new nn(n,t,e,r??1)}function nn(n,t,e,r){this.h=+n,this.s=+t,this.l=+e,this.opacity=+r}so(nn,Ld,bc(Qr,{brighter(n){return n=n==null?oo:Math.pow(oo,n),new nn(this.h,this.s,this.l*n,this.opacity)},darker(n){return n=n==null?Qi:Math.pow(Qi,n),new nn(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=this.h%360+(this.h<0)*360,t=isNaN(n)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*t,i=2*e-r;return new je(Od(n>=240?n-240:n+120,i,r),Od(n,i,r),Od(n<120?n+240:n-120,i,r),this.opacity)},clamp(){return new nn(aw(this.h),Nf(this.s),Nf(this.l),Mf(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 n=Mf(this.opacity);return`${n===1?"hsl(":"hsla("}${aw(this.h)}, ${Nf(this.s)*100}%, ${Nf(this.l)*100}%${n===1?")":`, ${n})`}`}}));function aw(n){return n=(n||0)%360,n<0?n+360:n}function Nf(n){return Math.max(0,Math.min(1,n||0))}function Od(n,t,e){return(n<60?t+(e-t)*n/60:n<180?e:n<240?t+(e-t)*(240-n)/60:t)*255}const cw=Math.PI/180,lw=180/Math.PI,Tf=18,uw=.96422,fw=1,Aw=.82521,hw=4/29,co=6/29,dw=3*co*co,O8=co*co*co;function gw(n){if(n instanceof En)return new En(n.l,n.a,n.b,n.opacity);if(n instanceof Vn)return pw(n);n instanceof je||(n=Pd(n));var t=Vd(n.r),e=Vd(n.g),r=Vd(n.b),i=Gd((.2225045*t+.7168786*e+.0606169*r)/fw),s,o;return t===e&&e===r?s=o=i:(s=Gd((.4360747*t+.3850649*e+.1430804*r)/uw),o=Gd((.0139322*t+.0971045*e+.7141733*r)/Aw)),new En(116*i-16,500*(s-i),200*(i-o),n.opacity)}function Ud(n,t,e,r){return arguments.length===1?gw(n):new En(n,t,e,r??1)}function En(n,t,e,r){this.l=+n,this.a=+t,this.b=+e,this.opacity=+r}so(En,Ud,bc(Qr,{brighter(n){return new En(this.l+Tf*(n??1),this.a,this.b,this.opacity)},darker(n){return new En(this.l-Tf*(n??1),this.a,this.b,this.opacity)},rgb(){var n=(this.l+16)/116,t=isNaN(this.a)?n:n+this.a/500,e=isNaN(this.b)?n:n-this.b/200;return t=uw*zd(t),n=fw*zd(n),e=Aw*zd(e),new je(Hd(3.1338561*t-1.6168667*n-.4906146*e),Hd(-.9787684*t+1.9161415*n+.033454*e),Hd(.0719453*t-.2289914*n+1.4052427*e),this.opacity)}}));function Gd(n){return n>O8?Math.pow(n,1/3):n/dw+hw}function zd(n){return n>co?n*n*n:dw*(n-hw)}function Hd(n){return 255*(n<=.0031308?12.92*n:1.055*Math.pow(n,1/2.4)-.055)}function Vd(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function U8(n){if(n instanceof Vn)return new Vn(n.h,n.c,n.l,n.opacity);if(n instanceof En||(n=gw(n)),n.a===0&&n.b===0)return new Vn(NaN,0<n.l&&n.l<100?0:NaN,n.l,n.opacity);var t=Math.atan2(n.b,n.a)*lw;return new Vn(t<0?t+360:t,Math.sqrt(n.a*n.a+n.b*n.b),n.l,n.opacity)}function _d(n,t,e,r){return arguments.length===1?U8(n):new Vn(n,t,e,r??1)}function Vn(n,t,e,r){this.h=+n,this.c=+t,this.l=+e,this.opacity=+r}function pw(n){if(isNaN(n.h))return new En(n.l,0,0,n.opacity);var t=n.h*cw;return new En(n.l,Math.cos(t)*n.c,Math.sin(t)*n.c,n.opacity)}so(Vn,_d,bc(Qr,{brighter(n){return new Vn(this.h,this.c,this.l+Tf*(n??1),this.opacity)},darker(n){return new Vn(this.h,this.c,this.l-Tf*(n??1),this.opacity)},rgb(){return pw(this).rgb()}}));var mw=-.14861,Yd=1.78277,Jd=-.29227,Pf=-.90649,Bc=1.97294,Cw=Bc*Pf,ww=Bc*Yd,yw=Yd*Jd-Pf*mw;function G8(n){if(n instanceof Fi)return new Fi(n.h,n.s,n.l,n.opacity);n instanceof je||(n=Pd(n));var t=n.r/255,e=n.g/255,r=n.b/255,i=(yw*r+Cw*t-ww*e)/(yw+Cw-ww),s=r-i,o=(Bc*(e-i)-Jd*s)/Pf,a=Math.sqrt(o*o+s*s)/(Bc*i*(1-i)),l=a?Math.atan2(o,s)*lw-120:NaN;return new Fi(l<0?l+360:l,a,i,n.opacity)}function qd(n,t,e,r){return arguments.length===1?G8(n):new Fi(n,t,e,r??1)}function Fi(n,t,e,r){this.h=+n,this.s=+t,this.l=+e,this.opacity=+r}so(Fi,qd,bc(Qr,{brighter(n){return n=n==null?oo:Math.pow(oo,n),new Fi(this.h,this.s,this.l*n,this.opacity)},darker(n){return n=n==null?Qi:Math.pow(Qi,n),new Fi(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=isNaN(this.h)?0:(this.h+120)*cw,t=+this.l,e=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(n),i=Math.sin(n);return new je(255*(t+e*(mw*r+Yd*i)),255*(t+e*(Jd*r+Pf*i)),255*(t+e*(Bc*r)),this.opacity)}}));function Iw(n,t,e,r,i){var s=n*n,o=s*n;return((1-3*n+3*s-o)*t+(4-6*s+3*o)*e+(1+3*n+3*s-3*o)*r+o*i)/6}function Ew(n){var t=n.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,t-1):Math.floor(e*t),i=n[r],s=n[r+1],o=r>0?n[r-1]:2*i-s,a=r<t-1?n[r+2]:2*s-i;return Iw((e-r/t)*t,o,i,s,a)}}function bw(n){var t=n.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*t),i=n[(r+t-1)%t],s=n[r%t],o=n[(r+1)%t],a=n[(r+2)%t];return Iw((e-r/t)*t,i,s,o,a)}}const Lf=n=>()=>n;function xw(n,t){return function(e){return n+e*t}}function z8(n,t,e){return n=Math.pow(n,e),t=Math.pow(t,e)-n,e=1/e,function(r){return Math.pow(n+r*t,e)}}function Of(n,t){var e=t-n;return e?xw(n,e>180||e<-180?e-360*Math.round(e/360):e):Lf(isNaN(n)?t:n)}function H8(n){return(n=+n)==1?We:function(t,e){return e-t?z8(t,e,n):Lf(isNaN(t)?e:t)}}function We(n,t){var e=t-n;return e?xw(n,e):Lf(isNaN(n)?t:n)}const Kd=(function n(t){var e=H8(t);function r(i,s){var o=e((i=Rf(i)).r,(s=Rf(s)).r),a=e(i.g,s.g),l=e(i.b,s.b),c=We(i.opacity,s.opacity);return function(u){return i.r=o(u),i.g=a(u),i.b=l(u),i.opacity=c(u),i+""}}return r.gamma=n,r})(1);function Bw(n){return function(t){var e=t.length,r=new Array(e),i=new Array(e),s=new Array(e),o,a;for(o=0;o<e;++o)a=Rf(t[o]),r[o]=a.r||0,i[o]=a.g||0,s[o]=a.b||0;return r=n(r),i=n(i),s=n(s),a.opacity=1,function(l){return a.r=r(l),a.g=i(l),a.b=s(l),a+""}}}var V8=Bw(Ew),_8=Bw(bw);function jd(n,t){t||(t=[]);var e=n?Math.min(t.length,n.length):0,r=t.slice(),i;return function(s){for(i=0;i<e;++i)r[i]=n[i]*(1-s)+t[i]*s;return r}}function vw(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function Y8(n,t){return(vw(t)?jd:Sw)(n,t)}function Sw(n,t){var e=t?t.length:0,r=n?Math.min(e,n.length):0,i=new Array(r),s=new Array(e),o;for(o=0;o<r;++o)i[o]=kr(n[o],t[o]);for(;o<e;++o)s[o]=t[o];return function(a){for(o=0;o<r;++o)s[o]=i[o](a);return s}}function Qw(n,t){var e=new Date;return n=+n,t=+t,function(r){return e.setTime(n*(1-r)+t*r),e}}function rn(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function Dw(n,t){var e={},r={},i;(n===null||typeof n!="object")&&(n={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in n?e[i]=kr(n[i],t[i]):r[i]=t[i];return function(s){for(i in e)r[i]=e[i](s);return r}}var Wd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Xd=new RegExp(Wd.source,"g");function J8(n){return function(){return n}}function q8(n){return function(t){return n(t)+""}}function kw(n,t){var e=Wd.lastIndex=Xd.lastIndex=0,r,i,s,o=-1,a=[],l=[];for(n=n+"",t=t+"";(r=Wd.exec(n))&&(i=Xd.exec(t));)(s=i.index)>e&&(s=t.slice(e,s),a[o]?a[o]+=s:a[++o]=s),(r=r[0])===(i=i[0])?a[o]?a[o]+=i:a[++o]=i:(a[++o]=null,l.push({i:o,x:rn(r,i)})),e=Xd.lastIndex;return e<t.length&&(s=t.slice(e),a[o]?a[o]+=s:a[++o]=s),a.length<2?l[0]?q8(l[0].x):J8(t):(t=l.length,function(c){for(var u=0,f;u<t;++u)a[(f=l[u]).i]=f.x(c);return a.join("")})}function kr(n,t){var e=typeof t,r;return t==null||e==="boolean"?Lf(t):(e==="number"?rn:e==="string"?(r=Dr(t))?(t=r,Kd):kw:t instanceof Dr?Kd:t instanceof Date?Qw:vw(t)?jd:Array.isArray(t)?Sw:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?Dw:rn)(n,t)}function K8(n){var t=n.length;return function(e){return n[Math.max(0,Math.min(t-1,Math.floor(e*t)))]}}function j8(n,t){var e=Of(+n,+t);return function(r){var i=e(r);return i-360*Math.floor(i/360)}}function vc(n,t){return n=+n,t=+t,function(e){return Math.round(n*(1-e)+t*e)}}var Fw=180/Math.PI,Zd={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Rw(n,t,e,r,i,s){var o,a,l;return(o=Math.sqrt(n*n+t*t))&&(n/=o,t/=o),(l=n*e+t*r)&&(e-=n*l,r-=t*l),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,l/=a),n*r<t*e&&(n=-n,t=-t,l=-l,o=-o),{translateX:i,translateY:s,rotate:Math.atan2(t,n)*Fw,skewX:Math.atan(l)*Fw,scaleX:o,scaleY:a}}var Uf;function W8(n){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(n+"");return t.isIdentity?Zd:Rw(t.a,t.b,t.c,t.d,t.e,t.f)}function X8(n){return n==null||(Uf||(Uf=document.createElementNS("http://www.w3.org/2000/svg","g")),Uf.setAttribute("transform",n),!(n=Uf.transform.baseVal.consolidate()))?Zd:(n=n.matrix,Rw(n.a,n.b,n.c,n.d,n.e,n.f))}function Mw(n,t,e,r){function i(c){return c.length?c.pop()+" ":""}function s(c,u,f,h,A,d){if(c!==f||u!==h){var p=A.push("translate(",null,t,null,e);d.push({i:p-4,x:rn(c,f)},{i:p-2,x:rn(u,h)})}else(f||h)&&A.push("translate("+f+t+h+e)}function o(c,u,f,h){c!==u?(c-u>180?u+=360:u-c>180&&(c+=360),h.push({i:f.push(i(f)+"rotate(",null,r)-2,x:rn(c,u)})):u&&f.push(i(f)+"rotate("+u+r)}function a(c,u,f,h){c!==u?h.push({i:f.push(i(f)+"skewX(",null,r)-2,x:rn(c,u)}):u&&f.push(i(f)+"skewX("+u+r)}function l(c,u,f,h,A,d){if(c!==f||u!==h){var p=A.push(i(A)+"scale(",null,",",null,")");d.push({i:p-4,x:rn(c,f)},{i:p-2,x:rn(u,h)})}else(f!==1||h!==1)&&A.push(i(A)+"scale("+f+","+h+")")}return function(c,u){var f=[],h=[];return c=n(c),u=n(u),s(c.translateX,c.translateY,u.translateX,u.translateY,f,h),o(c.rotate,u.rotate,f,h),a(c.skewX,u.skewX,f,h),l(c.scaleX,c.scaleY,u.scaleX,u.scaleY,f,h),c=u=null,function(A){for(var d=-1,p=h.length,C;++d<p;)f[(C=h[d]).i]=C.x(A);return f.join("")}}}var Z8=Mw(W8,"px, ","px)","deg)"),$8=Mw(X8,", ",")",")"),eF=1e-12;function Nw(n){return((n=Math.exp(n))+1/n)/2}function tF(n){return((n=Math.exp(n))-1/n)/2}function nF(n){return((n=Math.exp(2*n))-1)/(n+1)}const rF=(function n(t,e,r){function i(s,o){var a=s[0],l=s[1],c=s[2],u=o[0],f=o[1],h=o[2],A=u-a,d=f-l,p=A*A+d*d,C,m;if(p<eF)m=Math.log(h/c)/t,C=function(E){return[a+E*A,l+E*d,c*Math.exp(t*E*m)]};else{var y=Math.sqrt(p),I=(h*h-c*c+r*p)/(2*c*e*y),w=(h*h-c*c-r*p)/(2*h*e*y),x=Math.log(Math.sqrt(I*I+1)-I),B=Math.log(Math.sqrt(w*w+1)-w);m=(B-x)/t,C=function(E){var D=E*m,R=Nw(x),k=c/(e*y)*(R*nF(t*D+x)-tF(x));return[a+k*A,l+k*d,c*R/Nw(t*D+x)]}}return C.duration=m*1e3*t/Math.SQRT2,C}return i.rho=function(s){var o=Math.max(.001,+s),a=o*o,l=a*a;return n(o,a,l)},i})(Math.SQRT2,2,4);function Tw(n){return function(t,e){var r=n((t=Ld(t)).h,(e=Ld(e)).h),i=We(t.s,e.s),s=We(t.l,e.l),o=We(t.opacity,e.opacity);return function(a){return t.h=r(a),t.s=i(a),t.l=s(a),t.opacity=o(a),t+""}}}const iF=Tw(Of);var sF=Tw(We);function oF(n,t){var e=We((n=Ud(n)).l,(t=Ud(t)).l),r=We(n.a,t.a),i=We(n.b,t.b),s=We(n.opacity,t.opacity);return function(o){return n.l=e(o),n.a=r(o),n.b=i(o),n.opacity=s(o),n+""}}function Pw(n){return function(t,e){var r=n((t=_d(t)).h,(e=_d(e)).h),i=We(t.c,e.c),s=We(t.l,e.l),o=We(t.opacity,e.opacity);return function(a){return t.h=r(a),t.c=i(a),t.l=s(a),t.opacity=o(a),t+""}}}const aF=Pw(Of);var cF=Pw(We);function Lw(n){return(function t(e){e=+e;function r(i,s){var o=n((i=qd(i)).h,(s=qd(s)).h),a=We(i.s,s.s),l=We(i.l,s.l),c=We(i.opacity,s.opacity);return function(u){return i.h=o(u),i.s=a(u),i.l=l(Math.pow(u,e)),i.opacity=c(u),i+""}}return r.gamma=t,r})(1)}const lF=Lw(Of);var uF=Lw(We);function $d(n,t){t===void 0&&(t=n,n=kr);for(var e=0,r=t.length-1,i=t[0],s=new Array(r<0?0:r);e<r;)s[e]=n(i,i=t[++e]);return function(o){var a=Math.max(0,Math.min(r-1,Math.floor(o*=r)));return s[a](o-a)}}function fF(n,t){for(var e=new Array(t),r=0;r<t;++r)e[r]=n(r/(t-1));return e}const AF=Object.freeze(Object.defineProperty({__proto__:null,interpolate:kr,interpolateArray:Y8,interpolateBasis:Ew,interpolateBasisClosed:bw,interpolateCubehelix:lF,interpolateCubehelixLong:uF,interpolateDate:Qw,interpolateDiscrete:K8,interpolateHcl:aF,interpolateHclLong:cF,interpolateHsl:iF,interpolateHslLong:sF,interpolateHue:j8,interpolateLab:oF,interpolateNumber:rn,interpolateNumberArray:jd,interpolateObject:Dw,interpolateRgb:Kd,interpolateRgbBasis:V8,interpolateRgbBasisClosed:_8,interpolateRound:vc,interpolateString:kw,interpolateTransformCss:Z8,interpolateTransformSvg:$8,interpolateZoom:rF,piecewise:$d,quantize:fF},Symbol.toStringTag,{value:"Module"}));function hF(n){return function(){return n}}function e0(n){return+n}var Ow=[0,1];function vt(n){return n}function t0(n,t){return(t-=n=+n)?function(e){return(e-n)/t}:hF(isNaN(t)?NaN:.5)}function dF(n,t){var e;return n>t&&(e=n,n=t,t=e),function(r){return Math.max(n,Math.min(t,r))}}function gF(n,t,e){var r=n[0],i=n[1],s=t[0],o=t[1];return i<r?(r=t0(i,r),s=e(o,s)):(r=t0(r,i),s=e(s,o)),function(a){return s(r(a))}}function pF(n,t,e){var r=Math.min(n.length,t.length)-1,i=new Array(r),s=new Array(r),o=-1;for(n[r]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<r;)i[o]=t0(n[o],n[o+1]),s[o]=e(t[o],t[o+1]);return function(a){var l=pr(n,a,1,r)-1;return s[l](i[l](a))}}function Sc(n,t){return t.domain(n.domain()).range(n.range()).interpolate(n.interpolate()).clamp(n.clamp()).unknown(n.unknown())}function Gf(){var n=Ow,t=Ow,e=kr,r,i,s,o=vt,a,l,c;function u(){var h=Math.min(n.length,t.length);return o!==vt&&(o=dF(n[0],n[h-1])),a=h>2?pF:gF,l=c=null,f}function f(h){return h==null||isNaN(h=+h)?s:(l||(l=a(n.map(r),t,e)))(r(o(h)))}return f.invert=function(h){return o(i((c||(c=a(t,n.map(r),rn)))(h)))},f.domain=function(h){return arguments.length?(n=Array.from(h,e0),u()):n.slice()},f.range=function(h){return arguments.length?(t=Array.from(h),u()):t.slice()},f.rangeRound=function(h){return t=Array.from(h),e=vc,u()},f.clamp=function(h){return arguments.length?(o=h?!0:vt,u()):o!==vt},f.interpolate=function(h){return arguments.length?(e=h,u()):e},f.unknown=function(h){return arguments.length?(s=h,f):s},function(h,A){return r=h,i=A,u()}}function Uw(){return Gf()(vt,vt)}function Gw(n,t,e,r){var i=Ci(n,t,e),s;switch(r=zs(r??",f"),r.type){case"s":{var o=Math.max(Math.abs(n),Math.abs(t));return r.precision==null&&!isNaN(s=S3(i,o))&&(r.precision=s),Nm(r,o)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(s=Q3(i,Math.max(Math.abs(n),Math.abs(t))))&&(r.precision=s-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(s=v3(i))&&(r.precision=s-(r.type==="%")*2);break}}return nt(r)}function Ri(n){var t=n.domain;return n.ticks=function(e){var r=t();return zu(r[0],r[r.length-1],e??10)},n.tickFormat=function(e,r){var i=t();return Gw(i[0],i[i.length-1],e??10,r)},n.nice=function(e){e==null&&(e=10);var r=t(),i=0,s=r.length-1,o=r[i],a=r[s],l,c,u=10;for(a<o&&(c=o,o=a,a=c,c=i,i=s,s=c);u-- >0;){if(c=Bh(o,a,e),c===l)return r[i]=o,r[s]=a,t(r);if(c>0)o=Math.floor(o/c)*c,a=Math.ceil(a/c)*c;else if(c<0)o=Math.ceil(o*c)/c,a=Math.floor(a*c)/c;else break;l=c}return n},n}function zw(){var n=Uw();return n.copy=function(){return Sc(n,zw())},yn.apply(n,arguments),Ri(n)}function Hw(n){var t;function e(r){return r==null||isNaN(r=+r)?t:r}return e.invert=e,e.domain=e.range=function(r){return arguments.length?(n=Array.from(r,e0),e):n.slice()},e.unknown=function(r){return arguments.length?(t=r,e):t},e.copy=function(){return Hw(n).unknown(t)},n=arguments.length?Array.from(n,e0):[0,1],Ri(e)}function Vw(n,t){n=n.slice();var e=0,r=n.length-1,i=n[e],s=n[r],o;return s<i&&(o=e,e=r,r=o,o=i,i=s,s=o),n[e]=t.floor(i),n[r]=t.ceil(s),n}function _w(n){return Math.log(n)}function Yw(n){return Math.exp(n)}function mF(n){return-Math.log(-n)}function CF(n){return-Math.exp(-n)}function wF(n){return isFinite(n)?+("1e"+n):n<0?0:n}function yF(n){return n===10?wF:n===Math.E?Math.exp:t=>Math.pow(n,t)}function IF(n){return n===Math.E?Math.log:n===10&&Math.log10||n===2&&Math.log2||(n=Math.log(n),t=>Math.log(t)/n)}function Jw(n){return(t,e)=>-n(-t,e)}function n0(n){const t=n(_w,Yw),e=t.domain;let r=10,i,s;function o(){return i=IF(r),s=yF(r),e()[0]<0?(i=Jw(i),s=Jw(s),n(mF,CF)):n(_w,Yw),t}return t.base=function(a){return arguments.length?(r=+a,o()):r},t.domain=function(a){return arguments.length?(e(a),o()):e()},t.ticks=a=>{const l=e();let c=l[0],u=l[l.length-1];const f=u<c;f&&([c,u]=[u,c]);let h=i(c),A=i(u),d,p;const C=a==null?10:+a;let m=[];if(!(r%1)&&A-h<C){if(h=Math.floor(h),A=Math.ceil(A),c>0){for(;h<=A;++h)for(d=1;d<r;++d)if(p=h<0?d/s(-h):d*s(h),!(p<c)){if(p>u)break;m.push(p)}}else for(;h<=A;++h)for(d=r-1;d>=1;--d)if(p=h>0?d/s(-h):d*s(h),!(p<c)){if(p>u)break;m.push(p)}m.length*2<C&&(m=zu(c,u,C))}else m=zu(h,A,Math.min(A-h,C)).map(s);return f?m.reverse():m},t.tickFormat=(a,l)=>{if(a==null&&(a=10),l==null&&(l=r===10?"s":","),typeof l!="function"&&(!(r%1)&&(l=zs(l)).precision==null&&(l.trim=!0),l=nt(l)),a===1/0)return l;const c=Math.max(1,r*a/t.ticks().length);return u=>{let f=u/s(Math.round(i(u)));return f*r<r-.5&&(f*=r),f<=c?l(u):""}},t.nice=()=>e(Vw(e(),{floor:a=>s(Math.floor(i(a))),ceil:a=>s(Math.ceil(i(a)))})),t}function r0(){const n=n0(Gf()).domain([1,10]);return n.copy=()=>Sc(n,r0()).base(n.base()),yn.apply(n,arguments),n}function qw(n){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/n))}}function Kw(n){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*n}}function i0(n){var t=1,e=n(qw(t),Kw(t));return e.constant=function(r){return arguments.length?n(qw(t=+r),Kw(t)):t},Ri(e)}function jw(){var n=i0(Gf());return n.copy=function(){return Sc(n,jw()).constant(n.constant())},yn.apply(n,arguments)}function Ww(n){return function(t){return t<0?-Math.pow(-t,n):Math.pow(t,n)}}function EF(n){return n<0?-Math.sqrt(-n):Math.sqrt(n)}function bF(n){return n<0?-n*n:n*n}function s0(n){var t=n(vt,vt),e=1;function r(){return e===1?n(vt,vt):e===.5?n(EF,bF):n(Ww(e),Ww(1/e))}return t.exponent=function(i){return arguments.length?(e=+i,r()):e},Ri(t)}function o0(){var n=s0(Gf());return n.copy=function(){return Sc(n,o0()).exponent(n.exponent())},yn.apply(n,arguments),n}function xF(){return o0.apply(null,arguments).exponent(.5)}function Xw(){var n=[],t=[],e=[],r;function i(){var o=0,a=Math.max(1,t.length);for(e=new Array(a-1);++o<a;)e[o-1]=Qm(n,o/a);return s}function s(o){return o==null||isNaN(o=+o)?r:t[pr(e,o)]}return s.invertExtent=function(o){var a=t.indexOf(o);return a<0?[NaN,NaN]:[a>0?e[a-1]:n[0],a<e.length?e[a]:n[n.length-1]]},s.domain=function(o){if(!arguments.length)return n.slice();n=[];for(let a of o)a!=null&&!isNaN(a=+a)&&n.push(a);return n.sort(pi),i()},s.range=function(o){return arguments.length?(t=Array.from(o),i()):t.slice()},s.unknown=function(o){return arguments.length?(r=o,s):r},s.quantiles=function(){return e.slice()},s.copy=function(){return Xw().domain(n).range(t).unknown(r)},yn.apply(s,arguments)}function Zw(){var n=0,t=1,e=1,r=[.5],i=[0,1],s;function o(l){return l!=null&&l<=l?i[pr(r,l,0,e)]:s}function a(){var l=-1;for(r=new Array(e);++l<e;)r[l]=((l+1)*t-(l-e)*n)/(e+1);return o}return o.domain=function(l){return arguments.length?([n,t]=l,n=+n,t=+t,a()):[n,t]},o.range=function(l){return arguments.length?(e=(i=Array.from(l)).length-1,a()):i.slice()},o.invertExtent=function(l){var c=i.indexOf(l);return c<0?[NaN,NaN]:c<1?[n,r[0]]:c>=e?[r[e-1],t]:[r[c-1],r[c]]},o.unknown=function(l){return arguments.length&&(s=l),o},o.thresholds=function(){return r.slice()},o.copy=function(){return Zw().domain([n,t]).range(i).unknown(s)},yn.apply(Ri(o),arguments)}function $w(){var n=[.5],t=[0,1],e,r=1;function i(s){return s!=null&&s<=s?t[pr(n,s,0,r)]:e}return i.domain=function(s){return arguments.length?(n=Array.from(s),r=Math.min(n.length,t.length-1),i):n.slice()},i.range=function(s){return arguments.length?(t=Array.from(s),r=Math.min(n.length,t.length-1),i):t.slice()},i.invertExtent=function(s){var o=t.indexOf(s);return[n[o-1],n[o]]},i.unknown=function(s){return arguments.length?(e=s,i):e},i.copy=function(){return $w().domain(n).range(t).unknown(e)},yn.apply(i,arguments)}function BF(n){return new Date(n)}function vF(n){return n instanceof Date?+n:+new Date(+n)}function a0(n,t,e,r,i,s,o,a,l,c){var u=Uw(),f=u.invert,h=u.domain,A=c(".%L"),d=c(":%S"),p=c("%I:%M"),C=c("%I %p"),m=c("%a %d"),y=c("%b %d"),I=c("%B"),w=c("%Y");function x(B){return(l(B)<B?A:a(B)<B?d:o(B)<B?p:s(B)<B?C:r(B)<B?i(B)<B?m:y:e(B)<B?I:w)(B)}return u.invert=function(B){return new Date(f(B))},u.domain=function(B){return arguments.length?h(Array.from(B,vF)):h().map(BF)},u.ticks=function(B){var E=h();return n(E[0],E[E.length-1],B??10)},u.tickFormat=function(B,E){return E==null?x:c(E)},u.nice=function(B){var E=h();return(!B||typeof B.range!="function")&&(B=t(E[0],E[E.length-1],B??10)),B?h(Vw(E,B)):u},u.copy=function(){return Sc(u,a0(n,t,e,r,i,s,o,a,l,c))},u}function SF(){return yn.apply(a0(U3,G3,dn,tc,$a,mr,qu,Yu,Un,Ph).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function QF(){return yn.apply(a0(L3,O3,gn,nc,ec,wi,Ku,Ju,Un,Lh).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function zf(){var n=0,t=1,e,r,i,s,o=vt,a=!1,l;function c(f){return f==null||isNaN(f=+f)?l:o(i===0?.5:(f=(s(f)-e)*i,a?Math.max(0,Math.min(1,f)):f))}c.domain=function(f){return arguments.length?([n,t]=f,e=s(n=+n),r=s(t=+t),i=e===r?0:1/(r-e),c):[n,t]},c.clamp=function(f){return arguments.length?(a=!!f,c):a},c.interpolator=function(f){return arguments.length?(o=f,c):o};function u(f){return function(h){var A,d;return arguments.length?([A,d]=h,o=f(A,d),c):[o(0),o(1)]}}return c.range=u(kr),c.rangeRound=u(vc),c.unknown=function(f){return arguments.length?(l=f,c):l},function(f){return s=f,e=f(n),r=f(t),i=e===r?0:1/(r-e),c}}function Fr(n,t){return t.domain(n.domain()).interpolator(n.interpolator()).clamp(n.clamp()).unknown(n.unknown())}function c0(){var n=Ri(zf()(vt));return n.copy=function(){return Fr(n,c0())},Sr.apply(n,arguments)}function ey(){var n=n0(zf()).domain([1,10]);return n.copy=function(){return Fr(n,ey()).base(n.base())},Sr.apply(n,arguments)}function ty(){var n=i0(zf());return n.copy=function(){return Fr(n,ty()).constant(n.constant())},Sr.apply(n,arguments)}function l0(){var n=s0(zf());return n.copy=function(){return Fr(n,l0()).exponent(n.exponent())},Sr.apply(n,arguments)}function DF(){return l0.apply(null,arguments).exponent(.5)}function Hf(){var n=0,t=.5,e=1,r=1,i,s,o,a,l,c=vt,u,f=!1,h;function A(p){return isNaN(p=+p)?h:(p=.5+((p=+u(p))-s)*(r*p<r*s?a:l),c(f?Math.max(0,Math.min(1,p)):p))}A.domain=function(p){return arguments.length?([n,t,e]=p,i=u(n=+n),s=u(t=+t),o=u(e=+e),a=i===s?0:.5/(s-i),l=s===o?0:.5/(o-s),r=s<i?-1:1,A):[n,t,e]},A.clamp=function(p){return arguments.length?(f=!!p,A):f},A.interpolator=function(p){return arguments.length?(c=p,A):c};function d(p){return function(C){var m,y,I;return arguments.length?([m,y,I]=C,c=$d(p,[m,y,I]),A):[c(0),c(.5),c(1)]}}return A.range=d(kr),A.rangeRound=d(vc),A.unknown=function(p){return arguments.length?(h=p,A):h},function(p){return u=p,i=p(n),s=p(t),o=p(e),a=i===s?0:.5/(s-i),l=s===o?0:.5/(o-s),r=s<i?-1:1,A}}function ny(){var n=Ri(Hf()(vt));return n.copy=function(){return Fr(n,ny())},Sr.apply(n,arguments)}function ry(){var n=n0(Hf()).domain([.1,1,10]);return n.copy=function(){return Fr(n,ry()).base(n.base())},Sr.apply(n,arguments)}function iy(){var n=i0(Hf());return n.copy=function(){return Fr(n,iy()).constant(n.constant())},Sr.apply(n,arguments)}function u0(){var n=s0(Hf());return n.copy=function(){return Fr(n,u0()).exponent(n.exponent())},Sr.apply(n,arguments)}function kF(){return u0.apply(null,arguments).exponent(.5)}function bn(n){for(var t=n.length/6|0,e=new Array(t),r=0;r<t;)e[r]="#"+n.slice(r*6,++r*6);return e}const FF=bn("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),RF=bn("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),MF=bn("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),NF=bn("4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0"),TF=bn("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),PF=bn("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),LF=bn("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),OF=bn("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),UF=bn("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),GF=bn("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f");function f0(n,t,e){const r=n-t+e*2;return n?r>0?r:1:0}const zF="identity",lo="linear",Rr="log",Qc="pow",Dc="sqrt",Vf="symlog",sy="time",oy="utc",xn="sequential",uo="diverging",A0="quantile",ay="quantize",cy="threshold",kc="ordinal",h0="point",ly="band",d0="bin-ordinal",He="continuous",Fc="discrete",Rc="discretizing",Ht="interpolating",uy="temporal";function HF(n){return function(t){let e=t[0],r=t[1],i;return r<e&&(i=e,e=r,r=i),[n.invert(e),n.invert(r)]}}function VF(n){return function(t){const e=n.range();let r=t[0],i=t[1],s=-1,o,a,l,c;for(i<r&&(a=r,r=i,i=a),l=0,c=e.length;l<c;++l)e[l]>=r&&e[l]<=i&&(s<0&&(s=l),o=l);if(!(s<0))return r=n.invertExtent(e[s]),i=n.invertExtent(e[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function g0(){const n=Td().unknown(void 0),t=n.domain,e=n.range;let r=[0,1],i,s,o=!1,a=0,l=0,c=.5;delete n.unknown;function u(){const f=t().length,h=r[1]<r[0],A=r[1-h],d=f0(f,a,l);let p=r[h-0];i=(A-p)/(d||1),o&&(i=Math.floor(i)),p+=(A-p-i*(f-a))*c,s=i*(1-a),o&&(p=Math.round(p),s=Math.round(s));const C=Xa(f).map(m=>p+i*m);return e(h?C.reverse():C)}return n.domain=function(f){return arguments.length?(t(f),u()):t()},n.range=function(f){return arguments.length?(r=[+f[0],+f[1]],u()):r.slice()},n.rangeRound=function(f){return r=[+f[0],+f[1]],o=!0,u()},n.bandwidth=function(){return s},n.step=function(){return i},n.round=function(f){return arguments.length?(o=!!f,u()):o},n.padding=function(f){return arguments.length?(l=Math.max(0,Math.min(1,f)),a=l,u()):a},n.paddingInner=function(f){return arguments.length?(a=Math.max(0,Math.min(1,f)),u()):a},n.paddingOuter=function(f){return arguments.length?(l=Math.max(0,Math.min(1,f)),u()):l},n.align=function(f){return arguments.length?(c=Math.max(0,Math.min(1,f)),u()):c},n.invertRange=function(f){if(f[0]==null||f[1]==null)return;const h=r[1]<r[0],A=h?e().reverse():e(),d=A.length-1;let p=+f[0],C=+f[1],m,y,I;if(!(p!==p||C!==C)&&(C<p&&(I=p,p=C,C=I),!(C<A[0]||p>r[1-h])))return m=Math.max(0,pr(A,p)-1),y=p===C?m:pr(A,C)-1,p-A[m]>s+1e-10&&++m,h&&(I=m,m=d-y,y=d-I),m>y?void 0:t().slice(m,y+1)},n.invert=function(f){const h=n.invertRange([f,f]);return h&&h[0]},n.copy=function(){return g0().domain(t()).range(r).round(o).paddingInner(a).paddingOuter(l).align(c)},u()}function fy(n){const t=n.copy;return n.padding=n.paddingOuter,delete n.paddingInner,n.copy=function(){return fy(t())},n}function _F(){return fy(g0().paddingInner(1))}var YF=Array.prototype.map;function JF(n){return YF.call(n,Oa)}const qF=Array.prototype.slice;function Ay(){let n=[],t=[];function e(r){return r==null||r!==r?void 0:t[(pr(n,r)-1)%t.length]}return e.domain=function(r){return arguments.length?(n=JF(r),e):n.slice()},e.range=function(r){return arguments.length?(t=qF.call(r),e):t.slice()},e.tickFormat=function(r,i){return Gw(n[0],$t(n),r??10,i)},e.copy=function(){return Ay().domain(e.domain()).range(e.range())},e}const _f=new Map,KF=Symbol("vega_scale");function jF(n){return n[KF]=!0,n}function WF(n,t,e){const r=function(){const s=t();return s.invertRange||(s.invertRange=s.invert?HF(s):s.invertExtent?VF(s):void 0),s.type=n,jF(s)};return r.metadata=Nu(Ah(e)),r}function he(n,t,e){return arguments.length>1?(_f.set(n,WF(n,t,e)),this):XF(n)?_f.get(n):void 0}he(zF,Hw),he(lo,zw,He),he(Rr,r0,[He,Rr]),he(Qc,o0,He),he(Dc,xF,He),he(Vf,jw,He),he(sy,SF,[He,uy]),he(oy,QF,[He,uy]),he(xn,c0,[He,Ht]),he(`${xn}-${lo}`,c0,[He,Ht]),he(`${xn}-${Rr}`,ey,[He,Ht,Rr]),he(`${xn}-${Qc}`,l0,[He,Ht]),he(`${xn}-${Dc}`,DF,[He,Ht]),he(`${xn}-${Vf}`,ty,[He,Ht]),he(`${uo}-${lo}`,ny,[He,Ht]),he(`${uo}-${Rr}`,ry,[He,Ht,Rr]),he(`${uo}-${Qc}`,u0,[He,Ht]),he(`${uo}-${Dc}`,kF,[He,Ht]),he(`${uo}-${Vf}`,iy,[He,Ht]),he(A0,Xw,[Rc,A0]),he(ay,Zw,Rc),he(cy,$w,Rc),he(d0,Ay,[Fc,Rc]),he(kc,Td,Fc),he(ly,g0,Fc),he(h0,_F,Fc);function XF(n){return _f.has(n)}function Mc(n,t){const e=_f.get(n);return e&&e.metadata[t]}function Xe(n){return Mc(n,He)}function _n(n){return Mc(n,Fc)}function Mi(n){return Mc(n,Rc)}function hy(n){return Mc(n,Rr)}function Yf(n){return Mc(n,Ht)}function ZF(n,t){const e=t[0],r=$t(t)-e;return function(i){return n(e+i*r)}}function Jf(n,t,e){return $d(dy(t||"rgb",e),n)}function $F(n,t){const e=new Array(t),r=t+1;for(let i=0;i<t;)e[i]=n(++i/r);return e}function dy(n,t){const e=AF[eR(n)];return t!=null&&e&&e.gamma?e.gamma(t):e}function eR(n){return"interpolate"+n.toLowerCase().split("-").map(t=>t[0].toUpperCase()+t.slice(1)).join("")}const tR={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"},nR={accent:RF,category10:FF,category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",dark2:MF,observable10:NF,paired:TF,pastel1:PF,pastel2:LF,set1:OF,set2:UF,set3:GF,tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5"};function gy(n){if(Re(n))return n;const t=n.length/6|0,e=new Array(t);for(let r=0;r<t;)e[r]="#"+n.slice(r*6,++r*6);return e}function py(n,t){for(const e in n)p0(e,t(n[e]))}const my={};py(nR,gy),py(tR,n=>Jf(gy(n)));function p0(n,t){return n=n&&n.toLowerCase(),arguments.length>1?(my[n]=t,this):my[n]}function m0(){const n=t=>t;return n.invert=t=>t,n.copy=m0,n.invertRange=()=>{},n.type="null",n}class rR{constructor(t,e,r={}){this._container=t,this._sizeSource=e??(()=>({width:void 0,height:void 0})),this._shaderCache=new Map,this.rangeTextures=new WeakMap,this.selectionTextures=new WeakMap;const i=document.createElement("canvas");t.appendChild(i);const s=I8(i,{antialias:!0,depth:!1,premultipliedAlpha:!0,...r});if(!s)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!js(s))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");WC(s);const o=s.getExtension("WEBGL_provoking_vertex");o&&o.provokingVertexWEBGL(o.FIRST_VERTEX_CONVENTION_WEBGL),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA),this.canvas=i,this.gl=s,this._pickingAttachmentOptions=[{format:s.RGBA,type:s.UNSIGNED_BYTE,minMag:s.LINEAR,wrap:s.CLAMP_TO_EDGE}],this._pickingBufferInfo=KC(s,this._pickingAttachmentOptions),s.bindFramebuffer(s.FRAMEBUFFER,null),this.adjustGl()}invalidateSize(){this._logicalCanvasSize=void 0,this.adjustGl()}compileShader(t,e){const r="#version 300 es",i="precision mediump float;";Re(e)&&(e=e.join(`
385
+ ${t}
386
+ };`)(this)}else this.updateFromDatum=e=>{for(let t=0;t<this.dataUpdaters.length;t++)this.dataUpdaters[t](e)}}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Wr=5,ru=127;function iu(n){const e=[];for(let d=0;d<=ru;d++)e.push(void 0);const t=new Map;for(const d of n.chars)d.id<=ru?e[d.id]=d:t.set(d.id,d);const r=8722;t.has(r)||t.set(r,e[45]);function i(d){return(d<=ru?e[d]:t.get(d))||e[63]}function s(d){return i(d.charCodeAt(0))}const o=n.common.base,a=s("x"),l=s("X"),c=s("q"),u=a.height-Wr*2,f=l.height-Wr*2,h=c.height-a.height+c.yoffset-a.yoffset;function A(d,g=1){let p=0;for(let m=0;m<d.length;m++)p+=i(d.charCodeAt(m)).xadvance;return p/o*g}return{measureWidth:A,getCharByCode:i,getChar:s,xHeight:u,capHeight:f,descent:h,common:n.common}}function Xr(n,e=0,t=1){return Math.max(e,Math.min(t,n))}const G0=2**31-1,k3=-2147483648;function F3(n,e,t,r=t){const i=new Array(n);i.fill(G0);let s=k3,o=-1/0,a=!1;const l=new Array(n);l.fill(0);const c=e[0],f=(e[1]-e[0])/n,h=(m,C)=>{const y=(m-c)/f,w=Math.floor(y);return Xr(C&&w==y?w-1:w,0,n-1)};function A(m,C,y){if(a)return;if(C>s)s=C;else{a=!0;return}const w=t(m);if(w<o){a=!0;return}o=w;const E=h(w,!1);i[E]>C&&(i[E]=C),l[E]<y&&(l[E]=y)}function d(m,C,y){if(a)return;if(C>s)s=C;else{a=!0,console.debug("Items (vertices) are not ordered properly. Disabling binned index.");return}const w=t(m),E=r(m);if(w<o){a=!0;return}else if(E<w){a=!0;return}o=w;const x=h(w,!1),b=h(E,!0);for(let S=x;S<=b;S++)i[S]>C&&(i[S]=C),l[S]<y&&(l[S]=y)}const g=(m,C,y=[0,0])=>{const w=h(m,!1),E=h(C,!0),x=i[w],b=Math.max(l[E],x);return y[0]=x,y[1]=b,y},p=()=>{if(a)return;for(let C=1;C<l.length;C++)l[C]<l[C-1]&&(l[C]=l[C-1]);let m=!0;for(let C=i.length-1;C>0;C--)m&&i[C]==G0?(i[C]=l[C],m=!1):i[C-1]>i[C]&&(i[C-1]=i[C]);return g};return A.getIndex=p,d.getIndex=p,t==r?A:d}function Ot(n,e){switch(arguments.length){case 0:break;case 1:this.range(n);break;default:this.range(e).domain(n);break}return this}function Dn(n,e){switch(arguments.length){case 0:break;case 1:{typeof n=="function"?this.interpolator(n):this.range(n);break}default:{this.domain(n),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const wa=Symbol("implicit");function su(){var n=new jt,e=[],t=[],r=wa;function i(s){let o=n.get(s);if(o===void 0){if(r!==wa)return r;n.set(s,o=e.push(s)-1)}return t[o%t.length]}return i.domain=function(s){if(!arguments.length)return e.slice();e=[],n=new jt;for(const o of s)n.has(o)||n.set(o,e.push(o)-1);return i},i.range=function(s){return arguments.length?(t=Array.from(s),i):t.slice()},i.unknown=function(s){return arguments.length?(r=s,i):r},i.copy=function(){return su(e,t).unknown(r)},Ot.apply(i,arguments),i}function Zr(n,e,t){n.prototype=e.prototype=t,t.constructor=n}function ws(n,e){var t=Object.create(n.prototype);for(var r in e)t[r]=e[r];return t}function kn(){}var ar=.7,$r=1/ar,ei="\\s*([+-]?\\d+)\\s*",Cs="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ut="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",R3=/^#([0-9a-f]{3,8})$/,M3=new RegExp(`^rgb\\(${ei},${ei},${ei}\\)$`),N3=new RegExp(`^rgb\\(${Ut},${Ut},${Ut}\\)$`),T3=new RegExp(`^rgba\\(${ei},${ei},${ei},${Cs}\\)$`),P3=new RegExp(`^rgba\\(${Ut},${Ut},${Ut},${Cs}\\)$`),L3=new RegExp(`^hsl\\(${Cs},${Ut},${Ut}\\)$`),O3=new RegExp(`^hsla\\(${Cs},${Ut},${Ut},${Cs}\\)$`),z0={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};Zr(kn,Fn,{copy(n){return Object.assign(new this.constructor,this,n)},displayable(){return this.rgb().displayable()},hex:H0,formatHex:H0,formatHex8:U3,formatHsl:G3,formatRgb:V0,toString:V0});function H0(){return this.rgb().formatHex()}function U3(){return this.rgb().formatHex8()}function G3(){return K0(this).formatHsl()}function V0(){return this.rgb().formatRgb()}function Fn(n){var e,t;return n=(n+"").trim().toLowerCase(),(e=R3.exec(n))?(t=e[1].length,e=parseInt(e[1],16),t===6?_0(e):t===3?new Ne(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):t===8?Ca(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):t===4?Ca(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=M3.exec(n))?new Ne(e[1],e[2],e[3],1):(e=N3.exec(n))?new Ne(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=T3.exec(n))?Ca(e[1],e[2],e[3],e[4]):(e=P3.exec(n))?Ca(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=L3.exec(n))?q0(e[1],e[2]/100,e[3]/100,1):(e=O3.exec(n))?q0(e[1],e[2]/100,e[3]/100,e[4]):z0.hasOwnProperty(n)?_0(z0[n]):n==="transparent"?new Ne(NaN,NaN,NaN,0):null}function _0(n){return new Ne(n>>16&255,n>>8&255,n&255,1)}function Ca(n,e,t,r){return r<=0&&(n=e=t=NaN),new Ne(n,e,t,r)}function ou(n){return n instanceof kn||(n=Fn(n)),n?(n=n.rgb(),new Ne(n.r,n.g,n.b,n.opacity)):new Ne}function ya(n,e,t,r){return arguments.length===1?ou(n):new Ne(n,e,t,r??1)}function Ne(n,e,t,r){this.r=+n,this.g=+e,this.b=+t,this.opacity=+r}Zr(Ne,ya,ws(kn,{brighter(n){return n=n==null?$r:Math.pow($r,n),new Ne(this.r*n,this.g*n,this.b*n,this.opacity)},darker(n){return n=n==null?ar:Math.pow(ar,n),new Ne(this.r*n,this.g*n,this.b*n,this.opacity)},rgb(){return this},clamp(){return new Ne(cr(this.r),cr(this.g),cr(this.b),Ia(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:Y0,formatHex:Y0,formatHex8:z3,formatRgb:J0,toString:J0}));function Y0(){return`#${lr(this.r)}${lr(this.g)}${lr(this.b)}`}function z3(){return`#${lr(this.r)}${lr(this.g)}${lr(this.b)}${lr((isNaN(this.opacity)?1:this.opacity)*255)}`}function J0(){const n=Ia(this.opacity);return`${n===1?"rgb(":"rgba("}${cr(this.r)}, ${cr(this.g)}, ${cr(this.b)}${n===1?")":`, ${n})`}`}function Ia(n){return isNaN(n)?1:Math.max(0,Math.min(1,n))}function cr(n){return Math.max(0,Math.min(255,Math.round(n)||0))}function lr(n){return n=cr(n),(n<16?"0":"")+n.toString(16)}function q0(n,e,t,r){return r<=0?n=e=t=NaN:t<=0||t>=1?n=e=NaN:e<=0&&(n=NaN),new vt(n,e,t,r)}function K0(n){if(n instanceof vt)return new vt(n.h,n.s,n.l,n.opacity);if(n instanceof kn||(n=Fn(n)),!n)return new vt;if(n instanceof vt)return n;n=n.rgb();var e=n.r/255,t=n.g/255,r=n.b/255,i=Math.min(e,t,r),s=Math.max(e,t,r),o=NaN,a=s-i,l=(s+i)/2;return a?(e===s?o=(t-r)/a+(t<r)*6:t===s?o=(r-e)/a+2:o=(e-t)/a+4,a/=l<.5?s+i:2-s-i,o*=60):a=l>0&&l<1?0:o,new vt(o,a,l,n.opacity)}function au(n,e,t,r){return arguments.length===1?K0(n):new vt(n,e,t,r??1)}function vt(n,e,t,r){this.h=+n,this.s=+e,this.l=+t,this.opacity=+r}Zr(vt,au,ws(kn,{brighter(n){return n=n==null?$r:Math.pow($r,n),new vt(this.h,this.s,this.l*n,this.opacity)},darker(n){return n=n==null?ar:Math.pow(ar,n),new vt(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=this.h%360+(this.h<0)*360,e=isNaN(n)||isNaN(this.s)?0:this.s,t=this.l,r=t+(t<.5?t:1-t)*e,i=2*t-r;return new Ne(cu(n>=240?n-240:n+120,i,r),cu(n,i,r),cu(n<120?n+240:n-120,i,r),this.opacity)},clamp(){return new vt(j0(this.h),ba(this.s),ba(this.l),Ia(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 n=Ia(this.opacity);return`${n===1?"hsl(":"hsla("}${j0(this.h)}, ${ba(this.s)*100}%, ${ba(this.l)*100}%${n===1?")":`, ${n})`}`}}));function j0(n){return n=(n||0)%360,n<0?n+360:n}function ba(n){return Math.max(0,Math.min(1,n||0))}function cu(n,e,t){return(n<60?e+(t-e)*n/60:n<180?t:n<240?e+(t-e)*(240-n)/60:e)*255}const W0=Math.PI/180,X0=180/Math.PI,Ea=18,Z0=.96422,$0=1,eg=.82521,tg=4/29,ti=6/29,ng=3*ti*ti,H3=ti*ti*ti;function rg(n){if(n instanceof Gt)return new Gt(n.l,n.a,n.b,n.opacity);if(n instanceof rn)return ig(n);n instanceof Ne||(n=ou(n));var e=hu(n.r),t=hu(n.g),r=hu(n.b),i=uu((.2225045*e+.7168786*t+.0606169*r)/$0),s,o;return e===t&&t===r?s=o=i:(s=uu((.4360747*e+.3850649*t+.1430804*r)/Z0),o=uu((.0139322*e+.0971045*t+.7141733*r)/eg)),new Gt(116*i-16,500*(s-i),200*(i-o),n.opacity)}function lu(n,e,t,r){return arguments.length===1?rg(n):new Gt(n,e,t,r??1)}function Gt(n,e,t,r){this.l=+n,this.a=+e,this.b=+t,this.opacity=+r}Zr(Gt,lu,ws(kn,{brighter(n){return new Gt(this.l+Ea*(n??1),this.a,this.b,this.opacity)},darker(n){return new Gt(this.l-Ea*(n??1),this.a,this.b,this.opacity)},rgb(){var n=(this.l+16)/116,e=isNaN(this.a)?n:n+this.a/500,t=isNaN(this.b)?n:n-this.b/200;return e=Z0*fu(e),n=$0*fu(n),t=eg*fu(t),new Ne(Au(3.1338561*e-1.6168667*n-.4906146*t),Au(-.9787684*e+1.9161415*n+.033454*t),Au(.0719453*e-.2289914*n+1.4052427*t),this.opacity)}}));function uu(n){return n>H3?Math.pow(n,1/3):n/ng+tg}function fu(n){return n>ti?n*n*n:ng*(n-tg)}function Au(n){return 255*(n<=.0031308?12.92*n:1.055*Math.pow(n,1/2.4)-.055)}function hu(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function V3(n){if(n instanceof rn)return new rn(n.h,n.c,n.l,n.opacity);if(n instanceof Gt||(n=rg(n)),n.a===0&&n.b===0)return new rn(NaN,0<n.l&&n.l<100?0:NaN,n.l,n.opacity);var e=Math.atan2(n.b,n.a)*X0;return new rn(e<0?e+360:e,Math.sqrt(n.a*n.a+n.b*n.b),n.l,n.opacity)}function du(n,e,t,r){return arguments.length===1?V3(n):new rn(n,e,t,r??1)}function rn(n,e,t,r){this.h=+n,this.c=+e,this.l=+t,this.opacity=+r}function ig(n){if(isNaN(n.h))return new Gt(n.l,0,0,n.opacity);var e=n.h*W0;return new Gt(n.l,Math.cos(e)*n.c,Math.sin(e)*n.c,n.opacity)}Zr(rn,du,ws(kn,{brighter(n){return new rn(this.h,this.c,this.l+Ea*(n??1),this.opacity)},darker(n){return new rn(this.h,this.c,this.l-Ea*(n??1),this.opacity)},rgb(){return ig(this).rgb()}}));var sg=-.14861,gu=1.78277,pu=-.29227,xa=-.90649,ys=1.97294,og=ys*xa,ag=ys*gu,cg=gu*pu-xa*sg;function _3(n){if(n instanceof ur)return new ur(n.h,n.s,n.l,n.opacity);n instanceof Ne||(n=ou(n));var e=n.r/255,t=n.g/255,r=n.b/255,i=(cg*r+og*e-ag*t)/(cg+og-ag),s=r-i,o=(ys*(t-i)-pu*s)/xa,a=Math.sqrt(o*o+s*s)/(ys*i*(1-i)),l=a?Math.atan2(o,s)*X0-120:NaN;return new ur(l<0?l+360:l,a,i,n.opacity)}function mu(n,e,t,r){return arguments.length===1?_3(n):new ur(n,e,t,r??1)}function ur(n,e,t,r){this.h=+n,this.s=+e,this.l=+t,this.opacity=+r}Zr(ur,mu,ws(kn,{brighter(n){return n=n==null?$r:Math.pow($r,n),new ur(this.h,this.s,this.l*n,this.opacity)},darker(n){return n=n==null?ar:Math.pow(ar,n),new ur(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=isNaN(this.h)?0:(this.h+120)*W0,e=+this.l,t=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(n),i=Math.sin(n);return new Ne(255*(e+t*(sg*r+gu*i)),255*(e+t*(pu*r+xa*i)),255*(e+t*(ys*r)),this.opacity)}}));function lg(n,e,t,r,i){var s=n*n,o=s*n;return((1-3*n+3*s-o)*e+(4-6*s+3*o)*t+(1+3*n+3*s-3*o)*r+o*i)/6}function ug(n){var e=n.length-1;return function(t){var r=t<=0?t=0:t>=1?(t=1,e-1):Math.floor(t*e),i=n[r],s=n[r+1],o=r>0?n[r-1]:2*i-s,a=r<e-1?n[r+2]:2*s-i;return lg((t-r/e)*e,o,i,s,a)}}function fg(n){var e=n.length;return function(t){var r=Math.floor(((t%=1)<0?++t:t)*e),i=n[(r+e-1)%e],s=n[r%e],o=n[(r+1)%e],a=n[(r+2)%e];return lg((t-r/e)*e,i,s,o,a)}}const Ba=n=>()=>n;function Ag(n,e){return function(t){return n+t*e}}function Y3(n,e,t){return n=Math.pow(n,t),e=Math.pow(e,t)-n,t=1/t,function(r){return Math.pow(n+r*e,t)}}function va(n,e){var t=e-n;return t?Ag(n,t>180||t<-180?t-360*Math.round(t/360):t):Ba(isNaN(n)?e:n)}function J3(n){return(n=+n)==1?Te:function(e,t){return t-e?Y3(e,t,n):Ba(isNaN(e)?t:e)}}function Te(n,e){var t=e-n;return t?Ag(n,t):Ba(isNaN(n)?e:n)}const wu=(function n(e){var t=J3(e);function r(i,s){var o=t((i=ya(i)).r,(s=ya(s)).r),a=t(i.g,s.g),l=t(i.b,s.b),c=Te(i.opacity,s.opacity);return function(u){return i.r=o(u),i.g=a(u),i.b=l(u),i.opacity=c(u),i+""}}return r.gamma=n,r})(1);function hg(n){return function(e){var t=e.length,r=new Array(t),i=new Array(t),s=new Array(t),o,a;for(o=0;o<t;++o)a=ya(e[o]),r[o]=a.r||0,i[o]=a.g||0,s[o]=a.b||0;return r=n(r),i=n(i),s=n(s),a.opacity=1,function(l){return a.r=r(l),a.g=i(l),a.b=s(l),a+""}}}var q3=hg(ug),K3=hg(fg);function Cu(n,e){e||(e=[]);var t=n?Math.min(e.length,n.length):0,r=e.slice(),i;return function(s){for(i=0;i<t;++i)r[i]=n[i]*(1-s)+e[i]*s;return r}}function dg(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function j3(n,e){return(dg(e)?Cu:gg)(n,e)}function gg(n,e){var t=e?e.length:0,r=n?Math.min(t,n.length):0,i=new Array(r),s=new Array(t),o;for(o=0;o<r;++o)i[o]=Rn(n[o],e[o]);for(;o<t;++o)s[o]=e[o];return function(a){for(o=0;o<r;++o)s[o]=i[o](a);return s}}function pg(n,e){var t=new Date;return n=+n,e=+e,function(r){return t.setTime(n*(1-r)+e*r),t}}function St(n,e){return n=+n,e=+e,function(t){return n*(1-t)+e*t}}function mg(n,e){var t={},r={},i;(n===null||typeof n!="object")&&(n={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in n?t[i]=Rn(n[i],e[i]):r[i]=e[i];return function(s){for(i in t)r[i]=t[i](s);return r}}var yu=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Iu=new RegExp(yu.source,"g");function W3(n){return function(){return n}}function X3(n){return function(e){return n(e)+""}}function wg(n,e){var t=yu.lastIndex=Iu.lastIndex=0,r,i,s,o=-1,a=[],l=[];for(n=n+"",e=e+"";(r=yu.exec(n))&&(i=Iu.exec(e));)(s=i.index)>t&&(s=e.slice(t,s),a[o]?a[o]+=s:a[++o]=s),(r=r[0])===(i=i[0])?a[o]?a[o]+=i:a[++o]=i:(a[++o]=null,l.push({i:o,x:St(r,i)})),t=Iu.lastIndex;return t<e.length&&(s=e.slice(t),a[o]?a[o]+=s:a[++o]=s),a.length<2?l[0]?X3(l[0].x):W3(e):(e=l.length,function(c){for(var u=0,f;u<e;++u)a[(f=l[u]).i]=f.x(c);return a.join("")})}function Rn(n,e){var t=typeof e,r;return e==null||t==="boolean"?Ba(e):(t==="number"?St:t==="string"?(r=Fn(e))?(e=r,wu):wg:e instanceof Fn?wu:e instanceof Date?pg:dg(e)?Cu:Array.isArray(e)?gg:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?mg:St)(n,e)}function Z3(n){var e=n.length;return function(t){return n[Math.max(0,Math.min(e-1,Math.floor(t*e)))]}}function $3(n,e){var t=va(+n,+e);return function(r){var i=t(r);return i-360*Math.floor(i/360)}}function Is(n,e){return n=+n,e=+e,function(t){return Math.round(n*(1-t)+e*t)}}var Cg=180/Math.PI,bu={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function yg(n,e,t,r,i,s){var o,a,l;return(o=Math.sqrt(n*n+e*e))&&(n/=o,e/=o),(l=n*t+e*r)&&(t-=n*l,r-=e*l),(a=Math.sqrt(t*t+r*r))&&(t/=a,r/=a,l/=a),n*r<e*t&&(n=-n,e=-e,l=-l,o=-o),{translateX:i,translateY:s,rotate:Math.atan2(e,n)*Cg,skewX:Math.atan(l)*Cg,scaleX:o,scaleY:a}}var Sa;function eS(n){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(n+"");return e.isIdentity?bu:yg(e.a,e.b,e.c,e.d,e.e,e.f)}function tS(n){return n==null||(Sa||(Sa=document.createElementNS("http://www.w3.org/2000/svg","g")),Sa.setAttribute("transform",n),!(n=Sa.transform.baseVal.consolidate()))?bu:(n=n.matrix,yg(n.a,n.b,n.c,n.d,n.e,n.f))}function Ig(n,e,t,r){function i(c){return c.length?c.pop()+" ":""}function s(c,u,f,h,A,d){if(c!==f||u!==h){var g=A.push("translate(",null,e,null,t);d.push({i:g-4,x:St(c,f)},{i:g-2,x:St(u,h)})}else(f||h)&&A.push("translate("+f+e+h+t)}function o(c,u,f,h){c!==u?(c-u>180?u+=360:u-c>180&&(c+=360),h.push({i:f.push(i(f)+"rotate(",null,r)-2,x:St(c,u)})):u&&f.push(i(f)+"rotate("+u+r)}function a(c,u,f,h){c!==u?h.push({i:f.push(i(f)+"skewX(",null,r)-2,x:St(c,u)}):u&&f.push(i(f)+"skewX("+u+r)}function l(c,u,f,h,A,d){if(c!==f||u!==h){var g=A.push(i(A)+"scale(",null,",",null,")");d.push({i:g-4,x:St(c,f)},{i:g-2,x:St(u,h)})}else(f!==1||h!==1)&&A.push(i(A)+"scale("+f+","+h+")")}return function(c,u){var f=[],h=[];return c=n(c),u=n(u),s(c.translateX,c.translateY,u.translateX,u.translateY,f,h),o(c.rotate,u.rotate,f,h),a(c.skewX,u.skewX,f,h),l(c.scaleX,c.scaleY,u.scaleX,u.scaleY,f,h),c=u=null,function(A){for(var d=-1,g=h.length,p;++d<g;)f[(p=h[d]).i]=p.x(A);return f.join("")}}}var nS=Ig(eS,"px, ","px)","deg)"),rS=Ig(tS,", ",")",")"),iS=1e-12;function bg(n){return((n=Math.exp(n))+1/n)/2}function sS(n){return((n=Math.exp(n))-1/n)/2}function oS(n){return((n=Math.exp(2*n))-1)/(n+1)}const aS=(function n(e,t,r){function i(s,o){var a=s[0],l=s[1],c=s[2],u=o[0],f=o[1],h=o[2],A=u-a,d=f-l,g=A*A+d*d,p,m;if(g<iS)m=Math.log(h/c)/e,p=function(b){return[a+b*A,l+b*d,c*Math.exp(e*b*m)]};else{var C=Math.sqrt(g),y=(h*h-c*c+r*g)/(2*c*t*C),w=(h*h-c*c-r*g)/(2*h*t*C),E=Math.log(Math.sqrt(y*y+1)-y),x=Math.log(Math.sqrt(w*w+1)-w);m=(x-E)/e,p=function(b){var S=b*m,Q=bg(E),v=c/(t*C)*(Q*oS(e*S+E)-sS(E));return[a+v*A,l+v*d,c*Q/bg(e*S+E)]}}return p.duration=m*1e3*e/Math.SQRT2,p}return i.rho=function(s){var o=Math.max(.001,+s),a=o*o,l=a*a;return n(o,a,l)},i})(Math.SQRT2,2,4);function Eg(n){return function(e,t){var r=n((e=au(e)).h,(t=au(t)).h),i=Te(e.s,t.s),s=Te(e.l,t.l),o=Te(e.opacity,t.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=s(a),e.opacity=o(a),e+""}}}const cS=Eg(va);var lS=Eg(Te);function uS(n,e){var t=Te((n=lu(n)).l,(e=lu(e)).l),r=Te(n.a,e.a),i=Te(n.b,e.b),s=Te(n.opacity,e.opacity);return function(o){return n.l=t(o),n.a=r(o),n.b=i(o),n.opacity=s(o),n+""}}function xg(n){return function(e,t){var r=n((e=du(e)).h,(t=du(t)).h),i=Te(e.c,t.c),s=Te(e.l,t.l),o=Te(e.opacity,t.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=s(a),e.opacity=o(a),e+""}}}const fS=xg(va);var AS=xg(Te);function Bg(n){return(function e(t){t=+t;function r(i,s){var o=n((i=mu(i)).h,(s=mu(s)).h),a=Te(i.s,s.s),l=Te(i.l,s.l),c=Te(i.opacity,s.opacity);return function(u){return i.h=o(u),i.s=a(u),i.l=l(Math.pow(u,t)),i.opacity=c(u),i+""}}return r.gamma=e,r})(1)}const hS=Bg(va);var dS=Bg(Te);function Eu(n,e){e===void 0&&(e=n,n=Rn);for(var t=0,r=e.length-1,i=e[0],s=new Array(r<0?0:r);t<r;)s[t]=n(i,i=e[++t]);return function(o){var a=Math.max(0,Math.min(r-1,Math.floor(o*=r)));return s[a](o-a)}}function gS(n,e){for(var t=new Array(e),r=0;r<e;++r)t[r]=n(r/(e-1));return t}const pS=Object.freeze(Object.defineProperty({__proto__:null,interpolate:Rn,interpolateArray:j3,interpolateBasis:ug,interpolateBasisClosed:fg,interpolateCubehelix:hS,interpolateCubehelixLong:dS,interpolateDate:pg,interpolateDiscrete:Z3,interpolateHcl:fS,interpolateHclLong:AS,interpolateHsl:cS,interpolateHslLong:lS,interpolateHue:$3,interpolateLab:uS,interpolateNumber:St,interpolateNumberArray:Cu,interpolateObject:mg,interpolateRgb:wu,interpolateRgbBasis:q3,interpolateRgbBasisClosed:K3,interpolateRound:Is,interpolateString:wg,interpolateTransformCss:nS,interpolateTransformSvg:rS,interpolateZoom:aS,piecewise:Eu,quantize:gS},Symbol.toStringTag,{value:"Module"}));function mS(n){return function(){return n}}function xu(n){return+n}var vg=[0,1];function st(n){return n}function Bu(n,e){return(e-=n=+n)?function(t){return(t-n)/e}:mS(isNaN(e)?NaN:.5)}function wS(n,e){var t;return n>e&&(t=n,n=e,e=t),function(r){return Math.max(n,Math.min(e,r))}}function CS(n,e,t){var r=n[0],i=n[1],s=e[0],o=e[1];return i<r?(r=Bu(i,r),s=t(o,s)):(r=Bu(r,i),s=t(s,o)),function(a){return s(r(a))}}function yS(n,e,t){var r=Math.min(n.length,e.length)-1,i=new Array(r),s=new Array(r),o=-1;for(n[r]<n[0]&&(n=n.slice().reverse(),e=e.slice().reverse());++o<r;)i[o]=Bu(n[o],n[o+1]),s[o]=t(e[o],e[o+1]);return function(a){var l=wn(n,a,1,r)-1;return s[l](i[l](a))}}function bs(n,e){return e.domain(n.domain()).range(n.range()).interpolate(n.interpolate()).clamp(n.clamp()).unknown(n.unknown())}function Qa(){var n=vg,e=vg,t=Rn,r,i,s,o=st,a,l,c;function u(){var h=Math.min(n.length,e.length);return o!==st&&(o=wS(n[0],n[h-1])),a=h>2?yS:CS,l=c=null,f}function f(h){return h==null||isNaN(h=+h)?s:(l||(l=a(n.map(r),e,t)))(r(o(h)))}return f.invert=function(h){return o(i((c||(c=a(e,n.map(r),St)))(h)))},f.domain=function(h){return arguments.length?(n=Array.from(h,xu),u()):n.slice()},f.range=function(h){return arguments.length?(e=Array.from(h),u()):e.slice()},f.rangeRound=function(h){return e=Array.from(h),t=Is,u()},f.clamp=function(h){return arguments.length?(o=h?!0:st,u()):o!==st},f.interpolate=function(h){return arguments.length?(t=h,u()):t},f.unknown=function(h){return arguments.length?(s=h,f):s},function(h,A){return r=h,i=A,u()}}function Sg(){return Qa()(st,st)}function Qg(n,e,t,r){var i=Xn(n,e,t),s;switch(r=Nr(r??",f"),r.type){case"s":{var o=Math.max(Math.abs(n),Math.abs(e));return r.precision==null&&!isNaN(s=FI(i,o))&&(r.precision=s),bh(r,o)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(s=RI(i,Math.max(Math.abs(n),Math.abs(e))))&&(r.precision=s-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(s=kI(i))&&(r.precision=s-(r.type==="%")*2);break}}return He(r)}function fr(n){var e=n.domain;return n.ticks=function(t){var r=e();return ko(r[0],r[r.length-1],t??10)},n.tickFormat=function(t,r){var i=e();return Qg(i[0],i[i.length-1],t??10,r)},n.nice=function(t){t==null&&(t=10);var r=e(),i=0,s=r.length-1,o=r[i],a=r[s],l,c,u=10;for(a<o&&(c=o,o=a,a=c,c=i,i=s,s=c);u-- >0;){if(c=jc(o,a,t),c===l)return r[i]=o,r[s]=a,e(r);if(c>0)o=Math.floor(o/c)*c,a=Math.ceil(a/c)*c;else if(c<0)o=Math.ceil(o*c)/c,a=Math.floor(a*c)/c;else break;l=c}return n},n}function Dg(){var n=Sg();return n.copy=function(){return bs(n,Dg())},Ot.apply(n,arguments),fr(n)}function kg(n){var e;function t(r){return r==null||isNaN(r=+r)?e:r}return t.invert=t,t.domain=t.range=function(r){return arguments.length?(n=Array.from(r,xu),t):n.slice()},t.unknown=function(r){return arguments.length?(e=r,t):e},t.copy=function(){return kg(n).unknown(e)},n=arguments.length?Array.from(n,xu):[0,1],fr(t)}function Fg(n,e){n=n.slice();var t=0,r=n.length-1,i=n[t],s=n[r],o;return s<i&&(o=t,t=r,r=o,o=i,i=s,s=o),n[t]=e.floor(i),n[r]=e.ceil(s),n}function Rg(n){return Math.log(n)}function Mg(n){return Math.exp(n)}function IS(n){return-Math.log(-n)}function bS(n){return-Math.exp(-n)}function ES(n){return isFinite(n)?+("1e"+n):n<0?0:n}function xS(n){return n===10?ES:n===Math.E?Math.exp:e=>Math.pow(n,e)}function BS(n){return n===Math.E?Math.log:n===10&&Math.log10||n===2&&Math.log2||(n=Math.log(n),e=>Math.log(e)/n)}function Ng(n){return(e,t)=>-n(-e,t)}function vu(n){const e=n(Rg,Mg),t=e.domain;let r=10,i,s;function o(){return i=BS(r),s=xS(r),t()[0]<0?(i=Ng(i),s=Ng(s),n(IS,bS)):n(Rg,Mg),e}return e.base=function(a){return arguments.length?(r=+a,o()):r},e.domain=function(a){return arguments.length?(t(a),o()):t()},e.ticks=a=>{const l=t();let c=l[0],u=l[l.length-1];const f=u<c;f&&([c,u]=[u,c]);let h=i(c),A=i(u),d,g;const p=a==null?10:+a;let m=[];if(!(r%1)&&A-h<p){if(h=Math.floor(h),A=Math.ceil(A),c>0){for(;h<=A;++h)for(d=1;d<r;++d)if(g=h<0?d/s(-h):d*s(h),!(g<c)){if(g>u)break;m.push(g)}}else for(;h<=A;++h)for(d=r-1;d>=1;--d)if(g=h>0?d/s(-h):d*s(h),!(g<c)){if(g>u)break;m.push(g)}m.length*2<p&&(m=ko(c,u,p))}else m=ko(h,A,Math.min(A-h,p)).map(s);return f?m.reverse():m},e.tickFormat=(a,l)=>{if(a==null&&(a=10),l==null&&(l=r===10?"s":","),typeof l!="function"&&(!(r%1)&&(l=Nr(l)).precision==null&&(l.trim=!0),l=He(l)),a===1/0)return l;const c=Math.max(1,r*a/e.ticks().length);return u=>{let f=u/s(Math.round(i(u)));return f*r<r-.5&&(f*=r),f<=c?l(u):""}},e.nice=()=>t(Fg(t(),{floor:a=>s(Math.floor(i(a))),ceil:a=>s(Math.ceil(i(a)))})),e}function Su(){const n=vu(Qa()).domain([1,10]);return n.copy=()=>bs(n,Su()).base(n.base()),Ot.apply(n,arguments),n}function Tg(n){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/n))}}function Pg(n){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*n}}function Qu(n){var e=1,t=n(Tg(e),Pg(e));return t.constant=function(r){return arguments.length?n(Tg(e=+r),Pg(e)):e},fr(t)}function Lg(){var n=Qu(Qa());return n.copy=function(){return bs(n,Lg()).constant(n.constant())},Ot.apply(n,arguments)}function Og(n){return function(e){return e<0?-Math.pow(-e,n):Math.pow(e,n)}}function vS(n){return n<0?-Math.sqrt(-n):Math.sqrt(n)}function SS(n){return n<0?-n*n:n*n}function Du(n){var e=n(st,st),t=1;function r(){return t===1?n(st,st):t===.5?n(vS,SS):n(Og(t),Og(1/t))}return e.exponent=function(i){return arguments.length?(t=+i,r()):t},fr(e)}function ku(){var n=Du(Qa());return n.copy=function(){return bs(n,ku()).exponent(n.exponent())},Ot.apply(n,arguments),n}function QS(){return ku.apply(null,arguments).exponent(.5)}function Ug(){var n=[],e=[],t=[],r;function i(){var o=0,a=Math.max(1,e.length);for(t=new Array(a-1);++o<a;)t[o-1]=ph(n,o/a);return s}function s(o){return o==null||isNaN(o=+o)?r:e[wn(t,o)]}return s.invertExtent=function(o){var a=e.indexOf(o);return a<0?[NaN,NaN]:[a>0?t[a-1]:n[0],a<t.length?t[a]:n[n.length-1]]},s.domain=function(o){if(!arguments.length)return n.slice();n=[];for(let a of o)a!=null&&!isNaN(a=+a)&&n.push(a);return n.sort(jn),i()},s.range=function(o){return arguments.length?(e=Array.from(o),i()):e.slice()},s.unknown=function(o){return arguments.length?(r=o,s):r},s.quantiles=function(){return t.slice()},s.copy=function(){return Ug().domain(n).range(e).unknown(r)},Ot.apply(s,arguments)}function Gg(){var n=0,e=1,t=1,r=[.5],i=[0,1],s;function o(l){return l!=null&&l<=l?i[wn(r,l,0,t)]:s}function a(){var l=-1;for(r=new Array(t);++l<t;)r[l]=((l+1)*e-(l-t)*n)/(t+1);return o}return o.domain=function(l){return arguments.length?([n,e]=l,n=+n,e=+e,a()):[n,e]},o.range=function(l){return arguments.length?(t=(i=Array.from(l)).length-1,a()):i.slice()},o.invertExtent=function(l){var c=i.indexOf(l);return c<0?[NaN,NaN]:c<1?[n,r[0]]:c>=t?[r[t-1],e]:[r[c-1],r[c]]},o.unknown=function(l){return arguments.length&&(s=l),o},o.thresholds=function(){return r.slice()},o.copy=function(){return Gg().domain([n,e]).range(i).unknown(s)},Ot.apply(fr(o),arguments)}function zg(){var n=[.5],e=[0,1],t,r=1;function i(s){return s!=null&&s<=s?e[wn(n,s,0,r)]:t}return i.domain=function(s){return arguments.length?(n=Array.from(s),r=Math.min(n.length,e.length-1),i):n.slice()},i.range=function(s){return arguments.length?(e=Array.from(s),r=Math.min(n.length,e.length-1),i):e.slice()},i.invertExtent=function(s){var o=e.indexOf(s);return[n[o-1],n[o]]},i.unknown=function(s){return arguments.length?(t=s,i):t},i.copy=function(){return zg().domain(n).range(e).unknown(t)},Ot.apply(i,arguments)}function DS(n){return new Date(n)}function kS(n){return n instanceof Date?+n:+new Date(+n)}function Fu(n,e,t,r,i,s,o,a,l,c){var u=Sg(),f=u.invert,h=u.domain,A=c(".%L"),d=c(":%S"),g=c("%I:%M"),p=c("%I %p"),m=c("%a %d"),C=c("%b %d"),y=c("%B"),w=c("%Y");function E(x){return(l(x)<x?A:a(x)<x?d:o(x)<x?g:s(x)<x?p:r(x)<x?i(x)<x?m:C:t(x)<x?y:w)(x)}return u.invert=function(x){return new Date(f(x))},u.domain=function(x){return arguments.length?h(Array.from(x,kS)):h().map(DS)},u.ticks=function(x){var b=h();return n(b[0],b[b.length-1],x??10)},u.tickFormat=function(x,b){return b==null?E:c(b)},u.nice=function(x){var b=h();return(!x||typeof x.range!="function")&&(x=e(b[0],b[b.length-1],x??10)),x?h(Fg(b,x)):u},u.copy=function(){return bs(u,Fu(n,e,t,r,i,s,o,a,l,c))},u}function FS(){return Ot.apply(Fu(VI,_I,Rt,Wi,Ki,Cn,Po,No,$t,ol).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function RS(){return Ot.apply(Fu(zI,HI,Mt,Xi,ji,Zn,Lo,To,$t,al).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Da(){var n=0,e=1,t,r,i,s,o=st,a=!1,l;function c(f){return f==null||isNaN(f=+f)?l:o(i===0?.5:(f=(s(f)-t)*i,a?Math.max(0,Math.min(1,f)):f))}c.domain=function(f){return arguments.length?([n,e]=f,t=s(n=+n),r=s(e=+e),i=t===r?0:1/(r-t),c):[n,e]},c.clamp=function(f){return arguments.length?(a=!!f,c):a},c.interpolator=function(f){return arguments.length?(o=f,c):o};function u(f){return function(h){var A,d;return arguments.length?([A,d]=h,o=f(A,d),c):[o(0),o(1)]}}return c.range=u(Rn),c.rangeRound=u(Is),c.unknown=function(f){return arguments.length?(l=f,c):l},function(f){return s=f,t=f(n),r=f(e),i=t===r?0:1/(r-t),c}}function Mn(n,e){return e.domain(n.domain()).interpolator(n.interpolator()).clamp(n.clamp()).unknown(n.unknown())}function Ru(){var n=fr(Da()(st));return n.copy=function(){return Mn(n,Ru())},Dn.apply(n,arguments)}function Hg(){var n=vu(Da()).domain([1,10]);return n.copy=function(){return Mn(n,Hg()).base(n.base())},Dn.apply(n,arguments)}function Vg(){var n=Qu(Da());return n.copy=function(){return Mn(n,Vg()).constant(n.constant())},Dn.apply(n,arguments)}function Mu(){var n=Du(Da());return n.copy=function(){return Mn(n,Mu()).exponent(n.exponent())},Dn.apply(n,arguments)}function MS(){return Mu.apply(null,arguments).exponent(.5)}function ka(){var n=0,e=.5,t=1,r=1,i,s,o,a,l,c=st,u,f=!1,h;function A(g){return isNaN(g=+g)?h:(g=.5+((g=+u(g))-s)*(r*g<r*s?a:l),c(f?Math.max(0,Math.min(1,g)):g))}A.domain=function(g){return arguments.length?([n,e,t]=g,i=u(n=+n),s=u(e=+e),o=u(t=+t),a=i===s?0:.5/(s-i),l=s===o?0:.5/(o-s),r=s<i?-1:1,A):[n,e,t]},A.clamp=function(g){return arguments.length?(f=!!g,A):f},A.interpolator=function(g){return arguments.length?(c=g,A):c};function d(g){return function(p){var m,C,y;return arguments.length?([m,C,y]=p,c=Eu(g,[m,C,y]),A):[c(0),c(.5),c(1)]}}return A.range=d(Rn),A.rangeRound=d(Is),A.unknown=function(g){return arguments.length?(h=g,A):h},function(g){return u=g,i=g(n),s=g(e),o=g(t),a=i===s?0:.5/(s-i),l=s===o?0:.5/(o-s),r=s<i?-1:1,A}}function _g(){var n=fr(ka()(st));return n.copy=function(){return Mn(n,_g())},Dn.apply(n,arguments)}function Yg(){var n=vu(ka()).domain([.1,1,10]);return n.copy=function(){return Mn(n,Yg()).base(n.base())},Dn.apply(n,arguments)}function Jg(){var n=Qu(ka());return n.copy=function(){return Mn(n,Jg()).constant(n.constant())},Dn.apply(n,arguments)}function Nu(){var n=Du(ka());return n.copy=function(){return Mn(n,Nu()).exponent(n.exponent())},Dn.apply(n,arguments)}function NS(){return Nu.apply(null,arguments).exponent(.5)}function zt(n){for(var e=n.length/6|0,t=new Array(e),r=0;r<e;)t[r]="#"+n.slice(r*6,++r*6);return t}const TS=zt("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),PS=zt("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),LS=zt("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),OS=zt("4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0"),US=zt("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),GS=zt("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),zS=zt("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),HS=zt("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),VS=zt("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),_S=zt("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f");function Tu(n,e,t){const r=n-e+t*2;return n?r>0?r:1:0}const YS="identity",ni="linear",Nn="log",Es="pow",xs="sqrt",Fa="symlog",qg="time",Kg="utc",Ht="sequential",ri="diverging",Pu="quantile",jg="quantize",Wg="threshold",Bs="ordinal",Lu="point",Xg="band",Ou="bin-ordinal",De="continuous",vs="discrete",Ss="discretizing",pt="interpolating",Zg="temporal";function JS(n){return function(e){let t=e[0],r=e[1],i;return r<t&&(i=t,t=r,r=i),[n.invert(t),n.invert(r)]}}function qS(n){return function(e){const t=n.range();let r=e[0],i=e[1],s=-1,o,a,l,c;for(i<r&&(a=r,r=i,i=a),l=0,c=t.length;l<c;++l)t[l]>=r&&t[l]<=i&&(s<0&&(s=l),o=l);if(!(s<0))return r=n.invertExtent(t[s]),i=n.invertExtent(t[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function Uu(){const n=su().unknown(void 0),e=n.domain,t=n.range;let r=[0,1],i,s,o=!1,a=0,l=0,c=.5;delete n.unknown;function u(){const f=e().length,h=r[1]<r[0],A=r[1-h],d=Tu(f,a,l);let g=r[h-0];i=(A-g)/(d||1),o&&(i=Math.floor(i)),g+=(A-g-i*(f-a))*c,s=i*(1-a),o&&(g=Math.round(g),s=Math.round(s));const p=Ji(f).map(m=>g+i*m);return t(h?p.reverse():p)}return n.domain=function(f){return arguments.length?(e(f),u()):e()},n.range=function(f){return arguments.length?(r=[+f[0],+f[1]],u()):r.slice()},n.rangeRound=function(f){return r=[+f[0],+f[1]],o=!0,u()},n.bandwidth=function(){return s},n.step=function(){return i},n.round=function(f){return arguments.length?(o=!!f,u()):o},n.padding=function(f){return arguments.length?(l=Math.max(0,Math.min(1,f)),a=l,u()):a},n.paddingInner=function(f){return arguments.length?(a=Math.max(0,Math.min(1,f)),u()):a},n.paddingOuter=function(f){return arguments.length?(l=Math.max(0,Math.min(1,f)),u()):l},n.align=function(f){return arguments.length?(c=Math.max(0,Math.min(1,f)),u()):c},n.invertRange=function(f){if(f[0]==null||f[1]==null)return;const h=r[1]<r[0],A=h?t().reverse():t(),d=A.length-1;let g=+f[0],p=+f[1],m,C,y;if(!(g!==g||p!==p)&&(p<g&&(y=g,g=p,p=y),!(p<A[0]||g>r[1-h])))return m=Math.max(0,wn(A,g)-1),C=g===p?m:wn(A,p)-1,g-A[m]>s+1e-10&&++m,h&&(y=m,m=d-C,C=d-y),m>C?void 0:e().slice(m,C+1)},n.invert=function(f){const h=n.invertRange([f,f]);return h&&h[0]},n.copy=function(){return Uu().domain(e()).range(r).round(o).paddingInner(a).paddingOuter(l).align(c)},u()}function $g(n){const e=n.copy;return n.padding=n.paddingOuter,delete n.paddingInner,n.copy=function(){return $g(e())},n}function KS(){return $g(Uu().paddingInner(1))}var jS=Array.prototype.map;function WS(n){return jS.call(n,Ni)}const XS=Array.prototype.slice;function ep(){let n=[],e=[];function t(r){return r==null||r!==r?void 0:e[(wn(n,r)-1)%e.length]}return t.domain=function(r){return arguments.length?(n=WS(r),t):n.slice()},t.range=function(r){return arguments.length?(e=XS.call(r),t):e.slice()},t.tickFormat=function(r,i){return Qg(n[0],Et(n),r??10,i)},t.copy=function(){return ep().domain(t.domain()).range(t.range())},t}const Ra=new Map,ZS=Symbol("vega_scale");function $S(n){return n[ZS]=!0,n}function eQ(n,e,t){const r=function(){const s=e();return s.invertRange||(s.invertRange=s.invert?JS(s):s.invertExtent?qS(s):void 0),s.type=n,$S(s)};return r.metadata=bo(Lc(t)),r}function re(n,e,t){return arguments.length>1?(Ra.set(n,eQ(n,e,t)),this):tQ(n)?Ra.get(n):void 0}re(YS,kg),re(ni,Dg,De),re(Nn,Su,[De,Nn]),re(Es,ku,De),re(xs,QS,De),re(Fa,Lg,De),re(qg,FS,[De,Zg]),re(Kg,RS,[De,Zg]),re(Ht,Ru,[De,pt]),re(`${Ht}-${ni}`,Ru,[De,pt]),re(`${Ht}-${Nn}`,Hg,[De,pt,Nn]),re(`${Ht}-${Es}`,Mu,[De,pt]),re(`${Ht}-${xs}`,MS,[De,pt]),re(`${Ht}-${Fa}`,Vg,[De,pt]),re(`${ri}-${ni}`,_g,[De,pt]),re(`${ri}-${Nn}`,Yg,[De,pt,Nn]),re(`${ri}-${Es}`,Nu,[De,pt]),re(`${ri}-${xs}`,NS,[De,pt]),re(`${ri}-${Fa}`,Jg,[De,pt]),re(Pu,Ug,[Ss,Pu]),re(jg,Gg,Ss),re(Wg,zg,Ss),re(Ou,ep,[vs,Ss]),re(Bs,su,vs),re(Xg,Uu,vs),re(Lu,KS,vs);function tQ(n){return Ra.has(n)}function Qs(n,e){const t=Ra.get(n);return t&&t.metadata[e]}function Pe(n){return Qs(n,De)}function sn(n){return Qs(n,vs)}function Ar(n){return Qs(n,Ss)}function tp(n){return Qs(n,Nn)}function Ma(n){return Qs(n,pt)}function nQ(n,e){const t=e[0],r=Et(e)-t;return function(i){return n(t+i*r)}}function Na(n,e,t){return Eu(np(e||"rgb",t),n)}function rQ(n,e){const t=new Array(e),r=e+1;for(let i=0;i<e;)t[i]=n(++i/r);return t}function np(n,e){const t=pS[iQ(n)];return e!=null&&t&&t.gamma?t.gamma(e):t}function iQ(n){return"interpolate"+n.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const sQ={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"},oQ={accent:PS,category10:TS,category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",dark2:LS,observable10:OS,paired:US,pastel1:GS,pastel2:zS,set1:HS,set2:VS,set3:_S,tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5"};function rp(n){if(ye(n))return n;const e=n.length/6|0,t=new Array(e);for(let r=0;r<e;)t[r]="#"+n.slice(r*6,++r*6);return t}function ip(n,e){for(const t in n)Gu(t,e(n[t]))}const sp={};ip(oQ,rp),ip(sQ,n=>Na(rp(n)));function Gu(n,e){return n=n&&n.toLowerCase(),arguments.length>1?(sp[n]=e,this):sp[n]}function zu(){const n=e=>e;return n.invert=e=>e,n.copy=zu,n.invertRange=()=>{},n.type="null",n}class aQ{constructor(e,t,r={}){this._container=e,this._sizeSource=t??(()=>({width:void 0,height:void 0})),this._shaderCache=new Map,this.rangeTextures=new WeakMap,this.selectionTextures=new WeakMap;const i=document.createElement("canvas");e.appendChild(i);const s=B3(i,{antialias:!0,depth:!1,premultipliedAlpha:!0,...r});if(!s)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!Hr(s))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");O0(s);const o=s.getExtension("WEBGL_provoking_vertex");o&&o.provokingVertexWEBGL(o.FIRST_VERTEX_CONVENTION_WEBGL),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA),this.canvas=i,this.gl=s,this._pickingAttachmentOptions=[{format:s.RGBA,type:s.UNSIGNED_BYTE,minMag:s.LINEAR,wrap:s.CLAMP_TO_EDGE}],this._pickingBufferInfo=P0(s,this._pickingAttachmentOptions),s.bindFramebuffer(s.FRAMEBUFFER,null),this.adjustGl()}invalidateSize(){this._logicalCanvasSize=void 0,this.adjustGl()}compileShader(e,t){const r="#version 300 es",i="precision mediump float;";ye(t)&&(t=t.join(`
413
387
 
414
- `));const s=this.gl,o=e.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let a=this._shaderCache.get(o);if(!a){const l=[r,i,e].join(`
388
+ `));const s=this.gl,o=t.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let a=this._shaderCache.get(o);if(!a){const l=[r,i,t].join(`
415
389
 
416
- `);a=s.createShader(t),s.shaderSource(a,l),s.compileShader(a),this._shaderCache.set(o,a)}return a}adjustGl(){const t=this.getLogicalCanvasSize();this.canvas.style.width=`${t.width}px`,this.canvas.style.height=`${t.height}px`;const e=this.getPhysicalCanvasSize(t);this.canvas.width=e.width,this.canvas.height=e.height,p8(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this.canvas.remove()}getPhysicalCanvasSize(t){const e=window.devicePixelRatio??1;return t=t||this.getLogicalCanvasSize(),{width:t.width*e,height:t.height*e}}getLogicalCanvasSize(){if(this._logicalCanvasSize)return this._logicalCanvasSize;const t=this._sizeSource(),e=window.getComputedStyle(this._container,null),r=t.width??this._container.clientWidth-parseFloat(e.paddingLeft)-parseFloat(e.paddingRight),i=t.height??this._container.clientHeight-parseFloat(e.paddingTop)-parseFloat(e.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}createRangeTexture(t,e=!1){const r=this.rangeTextures.get(t.getScale());if(!e&&r)return;function i(o,a){return _n(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?o??4:o}const s=t.channel;if(yr(s)){const o=t.getScale(),a=o.props,l=o.range();let c;if(a.scheme)if(o.type=="threshold"&&l)c=C0(l,this.gl,o.domain().length,r);else{let u=we(a.scheme)?void 0:a.scheme.count;u=i(u,o),c=cR(a.scheme,this.gl,u,r)}else Yf(o.type)||Xe(o.type)&&l.length>1?c=lR(l,a.interpolate,this.gl,r):c=C0(l,this.gl,o.domain().length,r);this.rangeTextures.set(o,c)}else{const o=t.getScale();if(o.type==="ordinal"||Mi(o.type)){const a=rf(s)?S1(s):c=>c,l=o.range();this.rangeTextures.set(o,uR(l.map(a),this.gl,o.domain().length,r))}}}createSelectionTexture(t,e=!0){if(!ed(t))throw new Error("Not a multi-point selection, cannot create texture");const r=Array.from(t.data.keys()),i=r.length>0?r.sort((l,c)=>l-c):[0],s=this.selectionTextures.get(t),o=this.gl,a=Nc(this.gl,{level:0,minMag:o.NEAREST,format:o.RED_INTEGER,internalFormat:o.R32UI,height:1,width:i.length},new Uint32Array(i),e?s:!1);this.selectionTextures.set(t,a)}}function iR(n,t="",e=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...t.matchAll(r)],s=new Map(i.map((o,a)=>{const l=parseInt(o[1]),c=i[a+1],u=c?c.index:t.length,f=t.substring(o.index,u);return[l-1,f]}));return n.split(`
417
- `).map((o,a)=>{const l=s.get(a);return`${a+1+e}: ${o}${l?`
390
+ `);a=s.createShader(e),s.shaderSource(a,l),s.compileShader(a),this._shaderCache.set(o,a)}return a}adjustGl(){const e=this.getLogicalCanvasSize();this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`;const t=this.getPhysicalCanvasSize(e);this.canvas.width=t.width,this.canvas.height=t.height,y3(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this.canvas.remove()}getPhysicalCanvasSize(e){const t=window.devicePixelRatio??1;return e=e||this.getLogicalCanvasSize(),{width:e.width*t,height:e.height*t}}getLogicalCanvasSize(){if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=this._sizeSource(),t=window.getComputedStyle(this._container,null),r=e.width??this._container.clientWidth-parseFloat(t.paddingLeft)-parseFloat(t.paddingRight),i=e.height??this._container.clientHeight-parseFloat(t.paddingTop)-parseFloat(t.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}createRangeTexture(e,t=!1){const r=this.rangeTextures.get(e.getScale());if(!t&&r)return;function i(o,a){return sn(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?o??4:o}const s=e.channel;if(bn(s)){const o=e.getScale(),a=o.props,l=o.range();let c;if(a.scheme)if(o.type=="threshold"&&l)c=Hu(l,this.gl,o.domain().length,r);else{let u=le(a.scheme)?void 0:a.scheme.count;u=i(u,o),c=AQ(a.scheme,this.gl,u,r,!!a.reverse)}else Ma(o.type)||Pe(o.type)&&l.length>1?c=hQ(l,a.interpolate,this.gl,r):c=Hu(l,this.gl,o.domain().length,r);this.rangeTextures.set(o,c)}else{const o=e.getScale();if(o.type==="ordinal"||Ar(o.type)){const a=Jo(s)?gd(s):c=>c,l=o.range();this.rangeTextures.set(o,dQ(l.map(a),this.gl,o.domain().length,r))}}}createSelectionTexture(e,t=!0){if(!xl(e))throw new Error("Not a multi-point selection, cannot create texture");const r=Array.from(e.data.keys()),i=r.length>0?r.sort((l,c)=>l-c):[0],s=this.selectionTextures.get(e),o=this.gl,a=Ds(this.gl,{level:0,minMag:o.NEAREST,format:o.RED_INTEGER,internalFormat:o.R32UI,height:1,width:i.length},new Uint32Array(i),t?s:!1);this.selectionTextures.set(e,a)}}function cQ(n,e="",t=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],s=new Map(i.map((o,a)=>{const l=parseInt(o[1]),c=i[a+1],u=c?c.index:e.length,f=e.substring(o.index,u);return[l-1,f]}));return n.split(`
391
+ `).map((o,a)=>{const l=s.get(a);return`${a+1+t}: ${o}${l?`
418
392
 
419
393
  ^^^ ${l}`:""}`}).join(`
420
- `)}function sR(n,t,e){const r=n.createProgram();n.attachShader(r,t),n.attachShader(r,e),n.linkProgram(r);function i(){let s,o;if(!n.getProgramParameter(r,n.LINK_STATUS)){s=n.getProgramInfoLog(r);for(const l of[t,e])n.getShaderParameter(l,n.COMPILE_STATUS)||(s=n.getShaderInfoLog(l),o=iR(n.getShaderSource(l),s,0)+`
421
- Error compiling: ${s}`,n.deleteShader(l));n.deleteProgram(r)}if(s)return{message:s,detail:o}}return{program:r,getProgramErrors:i}}function Nc(n,t,e,r){return r?fC(n,r,e,t):r=Ic(n,{...t,src:e}),r}function oR(n,t,e,r){const{height:i,framebuffer:s}=t,o=new Uint8Array(4);return n.bindFramebuffer(n.FRAMEBUFFER,s),n.readPixels(e,i-r-1,1,1,n.RGBA,n.UNSIGNED_BYTE,o),n.bindFramebuffer(n.FRAMEBUFFER,null),o}function aR(n,t,e="image/png"){const{width:r,height:i}=t,s=new Uint8Array(r*i*4);n.bindFramebuffer(n.FRAMEBUFFER,t.framebuffer),n.readPixels(0,0,r,i,n.RGBA,n.UNSIGNED_BYTE,s),n.bindFramebuffer(n.FRAMEBUFFER,null);const o=document.createElement("canvas");o.width=r,o.height=i;const a=o.getContext("2d"),l=a.createImageData(r,i);for(let c=0;c<i;c++){const u=(i-1-c)*r*4,f=c*r*4;l.data.set(s.subarray(u,u+r*4),f)}return a.putImageData(l,0,0),o.toDataURL(e)}function cR(n,t,e,r){const i=we(n)?n:n.name,s=!we(n)&&n.extent||[0,1];if(e===void 0&&!we(n)&&(e=n.count),i){const o=p0(i);if(Ot(o)){const a=Cy(o,{extent:s,count:e});return Nc(t,{minMag:t.LINEAR,format:t.RGB,height:1,wrap:t.CLAMP_TO_EDGE},a,r)}else{if(Re(o))return C0(o,t);throw new Error("Unknown scheme: "+i)}}}function lR(n,t="rgb",e,r){const i=Jf(n,we(t)?t:t.type,we(t)?void 0:t.gamma),s=Cy(i);return Nc(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},s,r)}function uR(n,t,e,r){const i=Math.max(n.length,e||0),s=new Float32Array(i);for(let o=0;o<i;o++)s[o]=n[o%n.length];return Nc(t,{minMag:t.NEAREST,format:t.RED,internalFormat:t.R32F,height:1},s,r)}function C0(n,t,e,r){const i=wy(n,e);return Nc(t,{minMag:t.NEAREST,format:t.RGB,height:1},i,r)}function Cy(n,{extent:t=[0,1],reverse:e=!1,count:r=256}={}){const i=t[0],s=tf(t)-i,o=Xa(r).map(a=>a/(r-1)).map(a=>i+a/s).map(n);return e&&o.reverse(),wy(o)}function wy(n,t){const e=Math.max(n.length,t||0),r=new Uint8Array(e*3);for(let i=0;i<e;i++){const s=n[i%n.length],o=Dr(s);if(!o)throw new Error(`Invalid color "${s}" in the scheme ${JSON.stringify(n)}!`);const a=o.rgb();r[i*3+0]=a.r,r[i*3+1]=a.g,r[i*3+2]=a.b}return r}function w0(n){const t=Dr(n).rgb();return[t.r,t.g,t.b].map(e=>e/255)}const fR="attr_",AR="uDomain_",hR="range_",dR="accessor_",yy="scale_",gR="getScaled_",y0="uRangeTexture_",qf="uParam_",Tc="checkSelection_",Iy=3402823466e29;function pR(n){const t=n.match(/^(?:(\w+)-)?(\w+)$/);if(!t)throw new Error("Not a scale type: "+n);return{family:t[1]||"continuous",transform:t[2]}}function Pc(n,t){return`${dR}${n}_${t}`}function mR(n,t,e){let r;if(rf(n))r=Ni(S1(n)(e));else if(we(e))if(yr(n))r=ER(e);else throw new Error(`String values are not supported on the "${n}" channel: ${e}`);else if(Ua(e))r=Ni(e?1:0);else if(e===null)if(yr(n))r=Ni([0,0,0]);else throw new Error(`null value is not supported on the "${n}" chanel.`);else r=Ni(e);const i=Pc(n,t),s=`
394
+ `)}function lQ(n,e,t){const r=n.createProgram();n.attachShader(r,e),n.attachShader(r,t),n.linkProgram(r);function i(){let s,o;if(!n.getProgramParameter(r,n.LINK_STATUS)){s=n.getProgramInfoLog(r);for(const l of[e,t])n.getShaderParameter(l,n.COMPILE_STATUS)||(s=n.getShaderInfoLog(l),o=cQ(n.getShaderSource(l),s,0)+`
395
+ Error compiling: ${s}`,n.deleteShader(l));n.deleteProgram(r)}if(s)return{message:s,detail:o}}return{program:r,getProgramErrors:i}}function Ds(n,e,t,r){return r?$d(n,r,t,e):r=ps(n,{...e,src:t}),r}function uQ(n,e,t,r){const{height:i,framebuffer:s}=e,o=new Uint8Array(4);return n.bindFramebuffer(n.FRAMEBUFFER,s),n.readPixels(t,i-r-1,1,1,n.RGBA,n.UNSIGNED_BYTE,o),n.bindFramebuffer(n.FRAMEBUFFER,null),o}function fQ(n,e,t="image/png"){const{width:r,height:i}=e,s=new Uint8Array(r*i*4);n.bindFramebuffer(n.FRAMEBUFFER,e.framebuffer),n.readPixels(0,0,r,i,n.RGBA,n.UNSIGNED_BYTE,s),n.bindFramebuffer(n.FRAMEBUFFER,null);const o=document.createElement("canvas");o.width=r,o.height=i;const a=o.getContext("2d"),l=a.createImageData(r,i);for(let c=0;c<i;c++){const u=(i-1-c)*r*4,f=c*r*4;l.data.set(s.subarray(u,u+r*4),f)}return a.putImageData(l,0,0),o.toDataURL(t)}function AQ(n,e,t,r,i=!1){const s=le(n)?n:n.name,o=!le(n)&&n.extent||[0,1];if(t===void 0&&!le(n)&&(t=n.count),s){const a=Gu(s);if(At(a)){const l=op(a,{extent:o,count:t,reverse:i});return Ds(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},l,r)}else{if(ye(a))return Hu(i?Array.from(a).reverse():a,e,t,r);throw new Error("Unknown scheme: "+s)}}}function hQ(n,e="rgb",t,r){const i=Na(n,le(e)?e:e.type,le(e)?void 0:e.gamma),s=op(i);return Ds(t,{minMag:t.LINEAR,format:t.RGB,height:1,wrap:t.CLAMP_TO_EDGE},s,r)}function dQ(n,e,t,r){const i=Math.max(n.length,t||0),s=new Float32Array(i);for(let o=0;o<i;o++)s[o]=n[o%n.length];return Ds(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},s,r)}function Hu(n,e,t,r){const i=ap(n,t);return Ds(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function op(n,{extent:e=[0,1],reverse:t=!1,count:r=256}={}){const i=e[0],s=_o(e)-i,o=Ji(r).map(a=>a/(r-1)).map(a=>i+a/s).map(n);return t&&o.reverse(),ap(o)}function ap(n,e){const t=Math.max(n.length,e||0),r=new Uint8Array(t*3);for(let i=0;i<t;i++){const s=n[i%n.length],o=Fn(s);if(!o)throw new Error(`Invalid color "${s}" in the scheme ${JSON.stringify(n)}!`);const a=o.rgb();r[i*3+0]=a.r,r[i*3+1]=a.g,r[i*3+2]=a.b}return r}function Vu(n){const e=Fn(n).rgb();return[e.r,e.g,e.b].map(t=>t/255)}const gQ="attr_",pQ="uDomain_",mQ="range_",wQ="accessor_",cp="scale_",CQ="getScaled_",_u="uRangeTexture_",Ta="uParam_",ks="checkSelection_",lp=3402823466e29;function yQ(n){const e=n.match(/^(?:(\w+)-)?(\w+)$/);if(!e)throw new Error("Not a scale type: "+n);return{family:e[1]||"continuous",transform:e[2]}}function Fs(n,e){return`${wQ}${n}_${e}`}function IQ(n,e,t){let r;if(Jo(n))r=hr(gd(n)(t));else if(le(t))if(bn(n))r=vQ(t);else throw new Error(`String values are not supported on the "${n}" channel: ${t}`);else if(Ti(t))r=hr(t?1:0);else if(t===null)if(bn(n))r=hr([0,0,0]);else throw new Error(`null value is not supported on the "${n}" chanel.`);else r=hr(t);const i=Fs(n,e),s=`
422
396
  ${r.type} ${i}() {
423
397
  // Constant value
424
398
  return ${r};
425
- }`;return{channel:n,accessorGlsl:s,accessorFunctionName:i}}function CR(n,t){let e="float",r=l=>l;yr(n)&&(e="vec3",r=l=>w0(l));const i=`u${SR(n)}_${t}`,s=` // Dynamic value
426
- uniform ${e} ${i};`,o=Pc(n,t);let a=`
427
- ${e} ${o}() {
399
+ }`;return{channel:n,accessorGlsl:s,accessorFunctionName:i}}function bQ(n,e){let t="float",r=l=>l;bn(n)&&(t="vec3",r=l=>Vu(l));const i=`u${FQ(n)}_${e}`,s=` // Dynamic value
400
+ uniform ${t} ${i};`,o=Fs(n,e);let a=`
401
+ ${t} ${o}() {
428
402
  // Dynamic value
429
403
  return ${i};
430
- }`;return{channel:n,uniformName:i,uniformGlsl:s,accessorGlsl:a,accessorFunctionName:o,adjuster:r}}function Ey(n,t,e,r=[n]){const{attributeType:i}=fo(t,n),s=Ao(r),o=`in highp ${i} ${s};`,a=Pc(n,e),l=`
404
+ }`;return{channel:n,uniformName:i,uniformGlsl:s,accessorGlsl:a,accessorFunctionName:o,adjuster:r}}function up(n,e,t,r=[n]){const{attributeType:i}=ii(e,n),s=si(r),o=`in highp ${i} ${s};`,a=Fs(n,t),l=`
431
405
  ${i} ${a}() {
432
406
  return ${s};
433
- }`;return{channel:n,attributeName:s,attributeGlsl:o,accessorGlsl:l,accessorFunctionName:a}}function wR(n,t,e){const{attributeType:r}=fo(t,n),i=Ao(n),s=` uniform highp ${r} ${i};`,o=Pc(n,e),a=`
407
+ }`;return{channel:n,attributeName:s,attributeGlsl:o,accessorGlsl:l,accessorFunctionName:a}}function EQ(n,e,t){const{attributeType:r}=ii(e,n),i=si(n),s=` uniform highp ${r} ${i};`,o=Fs(n,t),a=`
434
408
  ${r} ${o}() {
435
409
  return ${i};
436
- }`;return{channel:n,uniformName:i,uniformGlsl:s,accessorGlsl:a,accessorFunctionName:o}}function yR(n,t,e){t??(t=m0());const r=wr(n),i=AR+r,s=hR+r,{hp:o,attributeType:a}=fo(t,n),l=t.domain?t.domain().length:void 0;let c;const u=[];u.push(""),u.push("/".repeat(70)),u.push(`// Channel: ${n}`),u.push("");const{transform:f}=pR(t.type),h=(E,...D)=>bR.apply(null,[E,"value",...D]);let A;switch(f){case"linear":A=h("scaleLinear","domain",s);break;case"log":A=h("scaleLog","domain",s,t.base());break;case"symlog":A=h("scaleSymlog","domain",s,t.constant());break;case"pow":case"sqrt":A=h("scalePow","domain",s,t.exponent());break;case"index":case"locus":A=h("scaleBandHp","domain",s,t.paddingInner(),t.paddingOuter(),t.align(),e.band??.5);break;case"point":case"band":A=h("scaleBand","domain",s,t.paddingInner(),t.paddingOuter(),t.align(),e.band??.5);break;case"ordinal":case"null":case"identity":A=h("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${t.type}! ${n}: ${JSON.stringify(e)}`)}const d=ky(t,n);let p;if(d&&n==r){const E=t.props.range??[];if(Me(E)||E.some(Me)){if(d.length<1||d.length>4)throw new Error(`A range with ExprRefs must have 1-4 elements, not ${d.length}! Range: ${JSON.stringify(d)}`);p=` uniform ${xy(d.length)} ${s};`}else if(d.length&&d.every(ot)){const D=vy(d);u.push(`const ${D.type} ${s} = ${D};`)}}const C=By(n);let m;if(yr(n)){const E=y0+r;if(n==r&&u.push(`uniform sampler2D ${E};`),Xe(t.type))m=`getInterpolatedColor(${E}, transformed)`;else if(_n(t.type)||Mi(t.type))m=`getDiscreteColor(${E}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(t.type==="ordinal"||Mi(t.type)){const E=y0+r;n==r&&u.push(`uniform sampler2D ${E};`),m=`getDiscreteColor(${E}, int(transformed)).r`}const y=[],I=Xe(t.type)&&l>2,w=Mi(t.type)||I;if(y.push("int slot = 0;"),w){const E=i;y.push(I?`while (slot < ${E}.length() - 2 && value >= ${E}[slot + 1]) { slot++; }`:`while (slot < ${E}.length() && value >= ${E}[slot]) { slot++; }`)}const x=Xe(t.type)||Mi(t.type)||["band","point"].includes(t.type);if(A){const E=i;x&&(o?y.push(`vec3 domain = ${E};`):y.push(`vec2 domain = vec2(${E}[slot], ${E}[slot + 1]);`)),y.push(`float transformed = ${A};`),I&&y.push(`transformed = (float(slot) + transformed) / (float(${E}.length() - 1));`)}else y.push("float transformed = float(slot);");"clamp"in t&&t.clamp()&&y.push(`transformed = clampToRange(transformed, ${vy(d)});`),y.push(`return ${m??"transformed"};`),u.push(`
437
- ${C} ${yy}${n}(${a} value) {
438
- ${y.map(E=>` ${E}
410
+ }`;return{channel:n,uniformName:i,uniformGlsl:s,accessorGlsl:a,accessorFunctionName:o}}function xQ(n,e,t){e??=zu();const r=In(n),i=pQ+r,s=mQ+r,{hp:o,attributeType:a}=ii(e,n),l=e.domain?e.domain().length:void 0;let c;const u=[];u.push(""),u.push("/".repeat(70)),u.push(`// Channel: ${n}`),u.push("");const{transform:f}=yQ(e.type),h=(b,...S)=>SQ.apply(null,[b,"value",...S]);let A;switch(f){case"linear":A=h("scaleLinear","domain",s);break;case"log":A=h("scaleLog","domain",s,e.base());break;case"symlog":A=h("scaleSymlog","domain",s,e.constant());break;case"pow":case"sqrt":A=h("scalePow","domain",s,e.exponent());break;case"index":case"locus":A=h("scaleBandHp","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),t.band??.5);break;case"point":case"band":A=h("scaleBand","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),t.band??.5);break;case"ordinal":case"null":case"identity":A=h("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${n}: ${JSON.stringify(t)}`)}const d=wp(e,n);let g;if(d&&n==r){const b=e.props.range??[];if(Ie(b)||b.some(Ie)){if(d.length<1||d.length>4)throw new Error(`A range with ExprRefs must have 1-4 elements, not ${d.length}! Range: ${JSON.stringify(d)}`);g=` uniform ${Ap(d.length)} ${s};`}else if(d.length&&d.every(Ye)){const S=dp(d);u.push(`const ${S.type} ${s} = ${S};`)}}const p=hp(n);let m;if(bn(n)){const b=_u+r;if(n==r&&u.push(`uniform sampler2D ${b};`),Pe(e.type))m=`getInterpolatedColor(${b}, transformed)`;else if(sn(e.type)||Ar(e.type))m=`getDiscreteColor(${b}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||Ar(e.type)){const b=_u+r;n==r&&u.push(`uniform sampler2D ${b};`),m=`getDiscreteColor(${b}, int(transformed)).r`}const C=[],y=Pe(e.type)&&l>2,w=Ar(e.type)||y;if(C.push("int slot = 0;"),w){const b=i;C.push(y?`while (slot < ${b}.length() - 2 && value >= ${b}[slot + 1]) { slot++; }`:`while (slot < ${b}.length() && value >= ${b}[slot]) { slot++; }`)}const E=Pe(e.type)||Ar(e.type)||["band","point"].includes(e.type);if(A){const b=i;E&&(o?C.push(`vec3 domain = ${b};`):C.push(`vec2 domain = vec2(${b}[slot], ${b}[slot + 1]);`)),C.push(`float transformed = ${A};`),y&&C.push(`transformed = (float(slot) + transformed) / (float(${b}.length() - 1));`)}else C.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&C.push(`transformed = clampToRange(transformed, ${dp(d)});`),C.push(`return ${m??"transformed"};`),u.push(`
411
+ ${p} ${cp}${n}(${a} value) {
412
+ ${C.map(b=>` ${b}
439
413
  `).join("")}
440
- }`);const B=u.join(`
441
- `);if(x&&n==r){const E=Xe(t.type)||Mi(t.type)?l:2;c=o?` highp vec3 ${i};`:` mediump float ${i}[${E}];`}return{glsl:B,domainUniformName:i,domainUniform:c,rangeUniformName:s,rangeUniform:p}}function IR(n,t){const e=By(n),r=[],i=[];for(let s=0;s<t.length;s++){const o=t[s],a=Pc(n,s),{param:l,empty:c}=o.predicate;r.push(l?`${Tc}${l}(${!!c})`:null),i.push(o.scaleChannel?`return ${yy}${n}(${a}());`:`return ${a}();`)}return`${e} ${gR}${n}() {
442
- ${QR(r,i)}
414
+ }`);const x=u.join(`
415
+ `);if(E&&n==r){const b=Pe(e.type)||Ar(e.type)?l:2;c=o?` highp vec3 ${i};`:` mediump float ${i}[${b}];`}return{glsl:x,domainUniformName:i,domainUniform:c,rangeUniformName:s,rangeUniform:g}}function BQ(n,e){const t=hp(n),r=[],i=[];for(let s=0;s<e.length;s++){const o=e[s],a=Fs(n,s),{param:l,empty:c}=o.predicate;r.push(l?`${ks}${l}(${!!c})`:null),i.push(o.scaleChannel?`return ${cp}${n}(${a}());`:`return ${a}();`)}return`${t} ${CQ}${n}() {
416
+ ${RQ(r,i)}
443
417
  }
444
418
 
445
- #define ${n}_DEFINED`}function by(n){if(!ot(n))throw new Error(`Not a number: ${n}`);if(n==1/0)return""+Iy;if(n==-1/0)return""+-Iy;{let t=`${n}`;return/^(-)?\d+$/.test(t)&&(t+=".0"),t}}function Ni(n){typeof n=="number"&&(n=[n]);const t=n.length;if(t<1||t>4)throw new Error("Invalid number of components: "+t);const e=xy(t),r=`${e}(${n.map(by).join(", ")})`;return Object.assign(r,{type:e,numComponents:t})}function xy(n){switch(n){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw new Error("Invalid number of components: "+n)}}function By(n){return yr(n)?"vec3":n=="uniqueId"?"uint":"float"}function ER(n){return Ni(w0(n))}function vy(n){return Ni([n[0],tf(n)])}function bR(n,...t){const e=[];for(const r of t)ot(r)?e.push(by(r)):Re(r)?e.push(Ni(r)):e.push(r);return`${n}(${e.join(", ")})`}function fo(n,t){var o;const e=n&&_n(n.type),r=n&&Sy(n.type),i=r&&xR(n.domain()),s=i?{attributeType:"uvec2",arrayConstructor:Uint32Array}:r?{attributeType:"uint",arrayConstructor:Uint32Array}:e?{attributeType:"uint",arrayConstructor:Uint16Array}:t=="uniqueId"?{attributeType:"uint",arrayConstructor:Uint32Array}:{attributeType:"float",arrayConstructor:Float32Array};return Object.assign(s,{numComponents:+(((o=s.attributeType.match(/^vec([234])$/))==null?void 0:o[1])??1),discrete:e,hp:r,largeHp:i})}function Sy(n){return n=="index"||n=="locus"}function xR(n){return n[1]>2**32}const I0=2**12;function Qy(n,t=[]){const e=n%I0,r=(n-e)/I0;return t[0]=r,t[1]=e,t}function BR(n){const t=n%I0;return[n-t,t]}function vR(n){return[...BR(n[0]),n[1]-n[0]]}function Dy(n){const t=new Tn([],JSON.stringify);for(const[e,r]of Object.entries(n)){const i=r.channelDef;if(Gn(i)){const o=[i.field,r.scale?(Xe(r.scale.type)||Mi(r.scale.type))??!1:!1];t.set(o,[...t.get(o)??[],e])}}return t}function Ao(n){return fR+Ke(n).toSorted().join("_")}function SR(n){return n[0].toUpperCase()+n.slice(1)}const ky=(n,t)=>Yf(n.type)||Xe(n.type)&&yr(t)?[0,1]:n.range?n.range():void 0;function QR(n,t){if(n.length!=t.length)throw new Error("Unequal array lengths");const e=n.length;if(e==0)return"";if(e==1&&n[0]==null)return t[0];const r=[];for(let i=0;i<e;i++){const s=n[i],o=i==0?`if (${s})`:s==null&&i==e-1?"else":`else if (${s})`;r.push(` ${o} {
446
- ${t[i]}
419
+ #define ${n}_DEFINED`}function fp(n){if(!Ye(n))throw new Error(`Not a number: ${n}`);if(n==1/0)return""+lp;if(n==-1/0)return""+-lp;{let e=`${n}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function hr(n){typeof n=="number"&&(n=[n]);const e=n.length;if(e<1||e>4)throw new Error("Invalid number of components: "+e);const t=Ap(e),r=`${t}(${n.map(fp).join(", ")})`;return Object.assign(r,{type:t,numComponents:e})}function Ap(n){switch(n){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw new Error("Invalid number of components: "+n)}}function hp(n){return bn(n)?"vec3":n=="uniqueId"?"uint":"float"}function vQ(n){return hr(Vu(n))}function dp(n){return hr([n[0],_o(n)])}function SQ(n,...e){const t=[];for(const r of e)Ye(r)?t.push(fp(r)):ye(r)?t.push(hr(r)):t.push(r);return`${n}(${t.join(", ")})`}function ii(n,e){const t=n&&sn(n.type),r=n&&gp(n.type),i=r&&QQ(n.domain()),s=i?{attributeType:"uvec2",arrayConstructor:Uint32Array}:r?{attributeType:"uint",arrayConstructor:Uint32Array}:t?{attributeType:"uint",arrayConstructor:Uint16Array}:e=="uniqueId"?{attributeType:"uint",arrayConstructor:Uint32Array}:{attributeType:"float",arrayConstructor:Float32Array};return Object.assign(s,{numComponents:+(s.attributeType.match(/^vec([234])$/)?.[1]??1),discrete:t,hp:r,largeHp:i})}function gp(n){return n=="index"||n=="locus"}function QQ(n){return n[1]>2**32}const Yu=2**12;function pp(n,e=[]){const t=n%Yu,r=(n-t)/Yu;return e[0]=r,e[1]=t,e}function DQ(n){const e=n%Yu;return[n-e,e]}function kQ(n){return[...DQ(n[0]),n[1]-n[0]]}function mp(n){const e=new jt([],JSON.stringify);for(const[t,r]of Object.entries(n)){const i=r.channelDef;if(en(i)){const o=[i.field,r.scale?(Pe(r.scale.type)||Ar(r.scale.type))??!1:!1];e.set(o,[...e.get(o)??[],t])}}return e}function si(n){return gQ+Me(n).toSorted().join("_")}function FQ(n){return n[0].toUpperCase()+n.slice(1)}const wp=(n,e)=>Ma(n.type)||Pe(n.type)&&bn(e)?[0,1]:n.range?n.range():void 0;function RQ(n,e){if(n.length!=e.length)throw new Error("Unequal array lengths");const t=n.length;if(t==0)return"";if(t==1&&n[0]==null)return e[0];const r=[];for(let i=0;i<t;i++){const s=n[i],o=i==0?`if (${s})`:s==null&&i==t-1?"else":`else if (${s})`;r.push(` ${o} {
420
+ ${e[i]}
447
421
  }`)}return r.join(`
448
- `)}function Fy(){let n=0,t,e=0;const r=new Map,i=s=>(s===t||(e=r.get(s),e===void 0&&(e=n++,r.set(s,e)),t=s),e);return i.addAll=s=>{for(const o of s)i(o)},i.invert=s=>{for(const o of r.entries())if(o[1]==s)return o[0]},i.domain=()=>[...r.keys()],i}class Lc{constructor({encoders:t,numVertices:e=void 0,attributes:r=[]}){this.encoders=t,this.variableEncoders=Object.fromEntries(Object.entries(t).filter(([s,o])=>r.includes(s)&&o&&!o.constant));const i=[...Dy(t).entries()].filter(([s,o])=>s[1]&&o.length>1).map(([s,o])=>o);this.allocatedVertices=e,this.variableBuilder=new B8(e);for(const[s,o]of Object.entries(this.variableEncoders)){const a=o.dataAccessor;if(!a)continue;const l=i.find(I=>I.find(w=>w==s));if(l&&s!=l[0])continue;const c=a.asNumberAccessor(),u=o.scale,{largeHp:f,arrayConstructor:h,discrete:A,numComponents:d}=fo(u,s),p=[0,0];let C;if(u&&A)if("props"in u&&u.props.domainIndexer)C=u.props.domainIndexer;else if("domain"in u)C=Fy(),C.addAll(u.domain());else throw new Error("Missing domain indexer for discrete scale.");const m=C?I=>C(a(I)):f?I=>Qy(c(I),p):c,y=Ao(l??s);this.variableBuilder.addConverter(y,{f:m,numComponents:d,arrayReference:f?p:void 0,targetArrayType:h})}this.lastOffset=0,this.rangeMap=new Tn([],JSON.stringify)}registerBatch(t){var s;const e=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-e;i&&this.rangeMap.set(t,{offset:e,count:i,xIndex:(s=this.xIndexer)==null?void 0:s.getIndex()}),this.lastOffset=r}addBatches(t){for(const[e,r]of t)this.addBatch(e,r)}addBatch(t,e,r=0,i=e.length){this.prepareXIndexer(e,r,i);for(let s=r;s<i;s++){const o=e[s];this.variableBuilder.pushFromDatum(o),this.addToXIndex(o)}this.registerBatch(t)}prepareXIndexer(t,e=0,r=e+t.length){var c;const i=()=>{this.addToXIndex=u=>{},this.xIndexer=void 0},s=(c=this.encoders.x)==null?void 0:c.channelDef;if(!("buildIndex"in s)||!s.buildIndex||!t.length||r-e<0){i();return}const o=u=>{var f;return u&&Xe((f=u.scale)==null?void 0:f.type)&&u},a=o(this.variableEncoders.x),l=o(this.variableEncoders.x2);if(a&&!a.constant&&(!l||!l.constant)){const u=a.dataAccessor.asNumberAccessor(),f=l?l.dataAccessor.asNumberAccessor():u,h=[u(t[e]),f(t[r-1])];if(h[1]>h[0]){this.xIndexer=S8(50,h,u,f);let A=this.variableBuilder.vertexCount;this.addToXIndex=d=>{let p=this.variableBuilder.vertexCount;this.xIndexer(d,A,p),A=p}}else i()}else i()}addToXIndex(t){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class DR extends Lc{constructor({encoders:t,attributes:e,numItems:r}){super({encoders:t,attributes:e,numVertices:r*6}),this.variableBuilder.configure();const i=this.variableBuilder.pushAll;this.pushAllSixTimes=r>500?new Function("pushAll",`return function unrolledPushAllSixTimes() {
422
+ `)}function Cp(){let n=0,e,t=0;const r=new Map,i=s=>(s===e||(t=r.get(s),t===void 0&&(t=n++,r.set(s,t)),e=s),t);return i.addAll=s=>{for(const o of s)i(o)},i.invert=s=>{for(const o of r.entries())if(o[1]==s)return o[0]},i.domain=()=>[...r.keys()],i}class Rs{constructor({encoders:e,numVertices:t=void 0,attributes:r=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([s,o])=>r.includes(s)&&o&&!o.constant));const i=[...mp(e).entries()].filter(([s,o])=>s[1]&&o.length>1).map(([s,o])=>o);this.allocatedVertices=t,this.variableBuilder=new D3(t);for(const[s,o]of Object.entries(this.variableEncoders)){const a=o.dataAccessor;if(!a)continue;const l=i.find(y=>y.find(w=>w==s));if(l&&s!=l[0])continue;const c=a.asNumberAccessor(),u=o.scale,{largeHp:f,arrayConstructor:h,discrete:A,numComponents:d}=ii(u,s),g=[0,0];let p;if(u&&A)if("props"in u&&u.props.domainIndexer)p=u.props.domainIndexer;else if("domain"in u)p=Cp(),p.addAll(u.domain());else throw new Error("Missing domain indexer for discrete scale.");const m=p?y=>p(a(y)):f?y=>pp(c(y),g):c,C=si(l??s);this.variableBuilder.addConverter(C,{f:m,numComponents:d,arrayReference:f?g:void 0,targetArrayType:h})}this.lastOffset=0,this.rangeMap=new jt([],JSON.stringify)}registerBatch(e){const t=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-t;i&&this.rangeMap.set(e,{offset:t,count:i,xIndex:this.xIndexer?.getIndex()}),this.lastOffset=r}addBatches(e){for(const[t,r]of e)this.addBatch(t,r)}addBatch(e,t,r=0,i=t.length){this.prepareXIndexer(t,r,i);for(let s=r;s<i;s++){const o=t[s];this.variableBuilder.pushFromDatum(o),this.addToXIndex(o)}this.registerBatch(e)}prepareXIndexer(e,t=0,r=t+e.length){const i=()=>{this.addToXIndex=c=>{},this.xIndexer=void 0},s=this.encoders.x?.channelDef;if(!("buildIndex"in s)||!s.buildIndex||!e.length||r-t<0){i();return}const o=c=>c&&Pe(c.scale?.type)&&c,a=o(this.variableEncoders.x),l=o(this.variableEncoders.x2);if(a&&!a.constant&&(!l||!l.constant)){const c=a.dataAccessor.asNumberAccessor(),u=l?l.dataAccessor.asNumberAccessor():c,f=[c(e[t]),u(e[r-1])];if(f[1]>f[0]){this.xIndexer=F3(50,f,c,u);let h=this.variableBuilder.vertexCount;this.addToXIndex=A=>{let d=this.variableBuilder.vertexCount;this.xIndexer(A,h,d),h=d}}else i()}else i()}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class MQ extends Rs{constructor({encoders:e,attributes:t,numItems:r}){super({encoders:e,attributes:t,numVertices:r*6}),this.variableBuilder.configure();const i=this.variableBuilder.pushAll;this.pushAllSixTimes=r>500?new Function("pushAll",`return function unrolledPushAllSixTimes() {
449
423
  pushAll(); pushAll(); pushAll(); pushAll(); pushAll(); pushAll();
450
- };`)(i):function(){i(),i(),i(),i(),i(),i()}}addBatch(t,e,r=0,i=e.length){if(!(i<=r)){this.prepareXIndexer(e,r,i);for(let s=r;s<i;s++){const o=e[s];this.variableBuilder.updateFromDatum(o),this.pushAllSixTimes(),this.addToXIndex(o)}this.registerBatch(t)}}}class kR extends Lc{constructor({encoders:t,attributes:e,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:s}){super({encoders:t,attributes:e,numVertices:r==1/0?s*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),this.variableBuilder.configure()}addBatch(t,e,r=0,i=e.length){this.prepareXIndexer(e,r,i);for(let s=r;s<i;s++){const o=e[s];this.variableBuilder.updateFromDatum(o),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const a=1;for(let l=0;l<=a;l++)this.updatePos(l/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(o)}this.registerBatch(t)}}class FR extends Lc{constructor({encoders:t,attributes:e,numItems:r=void 0}){super({encoders:t,attributes:e,numVertices:r}),this.variableBuilder.configure()}}class RR extends Lc{constructor({encoders:t,attributes:e,numItems:r=void 0}){super({encoders:t,attributes:e,numVertices:r}),this.variableBuilder.configure()}toArrays(){const t=this.variableBuilder.arrays;for(let e of Object.values(t))e.divisor=1;return super.toArrays()}}class MR extends Lc{constructor({encoders:t,attributes:e,fontMetrics:r,properties:i,numCharacters:s=void 0}){super({encoders:t,attributes:e,numVertices:s*6}),this.metadata=r,this.metrics=r,this.properties=i;const a=t.text.channelDef;this.numberFormat=!Ft(a)&&"format"in a&&a.format?nt(a.format):l=>l,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1),this.variableBuilder.configure()}addBatch(t,e,r=0,i=e.length){const s=this.properties.align||"left",o=this.properties.logoLetters??!1,a=this.metadata.common.base,l=this.metadata.common.scaleH;let c=-ro;switch(this.properties.baseline){case"top":c+=this.metrics.capHeight;break;case"middle":c+=this.metrics.capHeight/2;break;case"bottom":c-=this.metrics.descent;break}const u=this.encoders.text,f=[0,0];this.updateVertexCoord(f);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(e,r,i);for(let A=r;A<i;A++){const d=e[A],p=this.numberFormat(u(d)),C=we(p)?p:p===null?"":""+p;if(C.length==0)continue;this.variableBuilder.updateFromDatum(d);const m=o?C.length:this.metrics.measureWidth(C);this.updateWidth(m);let y=s=="right"?-m:s=="center"?-m/2:0;if(!o){const B=this.metrics.getCharByCode(C.charCodeAt(0));y-=(B.width-B.xadvance)/a/2}let I=-.5,w=1,x=1;for(let B=0;B<C.length;B++){const E=this.metrics.getCharByCode(C.charCodeAt(B)),D=o?1:E.xadvance/a;if(E.id==32){y+=D;continue}o?(x=(E.width+ro*2)/E.width,y=-x/2,w=(E.height+ro*2)/E.height,I=-.5-ro/E.height):(w=E.height/a,I=-(E.height+E.yoffset+c)/a,x=E.width/a);const R=E.x,k=E.y;f[0]=y,f[1]=I+w,h[0]=R/l,h[1]=k/l,this.variableBuilder.pushAll(),f[0]=y+x,f[1]=I+w,h[0]=(R+E.width)/l,h[1]=k/l,this.variableBuilder.pushAll(),f[0]=y,f[1]=I,h[0]=R/l,h[1]=(k+E.height)/l,this.variableBuilder.pushAll(),f[0]=y+x,f[1]=I+w,h[0]=(R+E.width)/l,h[1]=k/l,this.variableBuilder.pushAll(),f[0]=y,f[1]=I,h[0]=R/l,h[1]=(k+E.height)/l,this.variableBuilder.pushAll(),f[0]=y+x,f[1]=I,h[0]=(R+E.width)/l,h[1]=(k+E.height)/l,this.variableBuilder.pushAll(),y+=D}this.addToXIndex(d)}this.registerBatch(t)}}const Ry=`#define PI 3.141593
451
- uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}bool isEmptyBinarySearchTexture(highp usampler2D s){return textureSize(s,0).x==1&&texelFetch(s,ivec2(0,0),0).r==0u;}bool binarySearchTexture(highp usampler2D s,uint value){int texSize=textureSize(s,0).x;if(texSize==1&&texelFetch(s,ivec2(0,0),0).r==0u){return false;}int left=0;int right=texSize-1;while(left<=right){int mid=left+(right-left)/2;uint midValue=texelFetch(s,ivec2(mid,0),0).r;if(midValue==value){return true;}if(midValue<value){left=mid+1;}else{right=mid-1;}}return false;}/***Calculates a gamma for antialiasing opacity based on the color.*/float getGammaForColor(vec3 rgb){return mix(1.25,0.75,smoothstep(0.0,1.0,dot(rgb,vec3(0.299,0.587,0.114))));}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,vec4 background,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : background,distanceToRatio(sd));}else{return mix(background,fill,distanceToRatio(-d));}}`,NR="uniform highp float uZero;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleIdentity(uint value){return float(value);}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(uint value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(float(value)-domainExtent[0])*step+bandwidth*band;}const int lowBits=12;const float lowDivisor=pow(2.0,float(lowBits));const uint lowMask=uint(lowDivisor-1.0);vec2 splitUint(uint value){uint valueLo=value&lowMask;uint valueHi=value-valueLo;return vec2(float(valueHi),float(valueLo));}/***High precision variant of scaleBand for index/locus scales*/float scaleBandHp(uint value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);vec2 splitValue=splitUint(value);float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}/***High precision variant of scaleBand for index/locus scales for large*domains where 32bit uints are not sufficient to represent the domain.*/float scaleBandHp(uvec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);vec2 splitValue=vec2(float(value[0])*lowDivisor,float(value[1]));float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}",TR=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
424
+ };`)(i):function(){i(),i(),i(),i(),i(),i()}}addBatch(e,t,r=0,i=t.length){if(!(i<=r)){this.prepareXIndexer(t,r,i);for(let s=r;s<i;s++){const o=t[s];this.variableBuilder.updateFromDatum(o),this.pushAllSixTimes(),this.addToXIndex(o)}this.registerBatch(e)}}}class NQ extends Rs{constructor({encoders:e,attributes:t,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:s}){super({encoders:e,attributes:t,numVertices:r==1/0?s*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),this.variableBuilder.configure()}addBatch(e,t,r=0,i=t.length){this.prepareXIndexer(t,r,i);for(let s=r;s<i;s++){const o=t[s];this.variableBuilder.updateFromDatum(o),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const a=1;for(let l=0;l<=a;l++)this.updatePos(l/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(o)}this.registerBatch(e)}}class TQ extends Rs{constructor({encoders:e,attributes:t,numItems:r=void 0}){super({encoders:e,attributes:t,numVertices:r}),this.variableBuilder.configure()}}class PQ extends Rs{constructor({encoders:e,attributes:t,numItems:r=void 0}){super({encoders:e,attributes:t,numVertices:r}),this.variableBuilder.configure()}toArrays(){const e=this.variableBuilder.arrays;for(let t of Object.values(e))t.divisor=1;return super.toArrays()}}class LQ extends Rs{constructor({encoders:e,attributes:t,fontMetrics:r,properties:i,numCharacters:s=void 0}){super({encoders:e,attributes:t,numVertices:s*6}),this.metadata=r,this.metrics=r,this.properties=i;const a=e.text.channelDef;this.numberFormat=!ut(a)&&"format"in a&&a.format?He(a.format):l=>l,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1),this.variableBuilder.configure()}addBatch(e,t,r=0,i=t.length){const s=this.properties.align||"left",o=this.properties.logoLetters??!1,a=this.metadata.common.base,l=this.metadata.common.scaleH;let c=-Wr;switch(this.properties.baseline){case"top":c+=this.metrics.capHeight;break;case"middle":c+=this.metrics.capHeight/2;break;case"bottom":c-=this.metrics.descent;break}const u=this.encoders.text,f=[0,0];this.updateVertexCoord(f);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(t,r,i);for(let A=r;A<i;A++){const d=t[A],g=this.numberFormat(u(d)),p=le(g)?g:g===null?"":""+g;if(p.length==0)continue;this.variableBuilder.updateFromDatum(d);const m=o?p.length:this.metrics.measureWidth(p);this.updateWidth(m);let C=s=="right"?-m:s=="center"?-m/2:0;if(!o){const x=this.metrics.getCharByCode(p.charCodeAt(0));C-=(x.width-x.xadvance)/a/2}let y=-.5,w=1,E=1;for(let x=0;x<p.length;x++){const b=this.metrics.getCharByCode(p.charCodeAt(x)),S=o?1:b.xadvance/a;if(b.id==32){C+=S;continue}o?(E=(b.width+Wr*2)/b.width,C=-E/2,w=(b.height+Wr*2)/b.height,y=-.5-Wr/b.height):(w=b.height/a,y=-(b.height+b.yoffset+c)/a,E=b.width/a);const Q=b.x,v=b.y;f[0]=C,f[1]=y+w,h[0]=Q/l,h[1]=v/l,this.variableBuilder.pushAll(),f[0]=C+E,f[1]=y+w,h[0]=(Q+b.width)/l,h[1]=v/l,this.variableBuilder.pushAll(),f[0]=C,f[1]=y,h[0]=Q/l,h[1]=(v+b.height)/l,this.variableBuilder.pushAll(),f[0]=C+E,f[1]=y+w,h[0]=(Q+b.width)/l,h[1]=v/l,this.variableBuilder.pushAll(),f[0]=C,f[1]=y,h[0]=Q/l,h[1]=(v+b.height)/l,this.variableBuilder.pushAll(),f[0]=C+E,f[1]=y,h[0]=(Q+b.width)/l,h[1]=(v+b.height)/l,this.variableBuilder.pushAll(),C+=S}this.addToXIndex(d)}this.registerBatch(e)}}const yp=`#define PI 3.141593
425
+ uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}bool isEmptyBinarySearchTexture(highp usampler2D s){return textureSize(s,0).x==1&&texelFetch(s,ivec2(0,0),0).r==0u;}bool binarySearchTexture(highp usampler2D s,uint value){int texSize=textureSize(s,0).x;if(texSize==1&&texelFetch(s,ivec2(0,0),0).r==0u){return false;}int left=0;int right=texSize-1;while(left<=right){int mid=left+(right-left)/2;uint midValue=texelFetch(s,ivec2(mid,0),0).r;if(midValue==value){return true;}if(midValue<value){left=mid+1;}else{right=mid-1;}}return false;}/***Calculates a gamma for antialiasing opacity based on the color.*/float getGammaForColor(vec3 rgb){return mix(1.25,0.75,smoothstep(0.0,1.0,dot(rgb,vec3(0.299,0.587,0.114))));}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,vec4 background,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : background,distanceToRatio(sd));}else{return mix(background,fill,distanceToRatio(-d));}}`,OQ="uniform highp float uZero;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleIdentity(uint value){return float(value);}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(uint value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(float(value)-domainExtent[0])*step+bandwidth*band;}const int lowBits=12;const float lowDivisor=pow(2.0,float(lowBits));const uint lowMask=uint(lowDivisor-1.0);vec2 splitUint(uint value){uint valueLo=value&lowMask;uint valueHi=value-valueLo;return vec2(float(valueHi),float(valueLo));}/***High precision variant of scaleBand for index/locus scales*/float scaleBandHp(uint value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);vec2 splitValue=splitUint(value);float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}/***High precision variant of scaleBand for index/locus scales for large*domains where 32bit uints are not sufficient to represent the domain.*/float scaleBandHp(uvec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);vec2 splitValue=vec2(float(value[0])*lowDivisor,float(value[1]));float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}",UQ=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
452
426
  #if !defined(SAMPLE_FACET_UNIFORM) && !defined(SAMPLE_FACET_TEXTURE)
453
427
  SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1.0);}
454
428
  #elif defined(SAMPLE_FACET_UNIFORM)
@@ -456,37 +430,37 @@ SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1
456
430
  #elif defined(SAMPLE_FACET_TEXTURE)
457
431
  uniform sampler2D uSampleFacetTexture;SampleFacetPosition getSampleFacetPos(){vec4 texel=texelFetch(uSampleFacetTexture,ivec2(int(attr_facetIndex),0),0);return SampleFacetPosition(1.0-texel.r-texel.g,texel.g,1.0-texel.r-texel.g,texel.g);}
458
432
  #endif
459
- bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,PR=`/**Based on concepts presented at:*https:*https:*/out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
433
+ bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,GQ=`/**Based on concepts presented at:*https:*https:*/out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
460
434
  #ifdef uniqueId_DEFINED
461
435
  uint id=attr_uniqueId;vPickingColor=vec4(ivec4(id>>0,id>>8,id>>16,id>>24)&0xFF)/float(0xFF);
462
436
  #else
463
437
  vPickingColor=vec4(1.0);
464
438
  #endif
465
- return true;}return false;}`,LR="in highp vec4 vPickingColor;",Kf=Symbol("cacheMap");function jf(n,t,e){let r=Uc(n).get(t);return r===void 0&&(r=e(t),Uc(n).set(t,r)),r}function E0(n,t){Uc(n).delete(t)}function Oc(n,t){const e=Uc(n);for(const r of e.keys())r.startsWith(t)&&e.delete(r);Uc(n).delete(t)}function My(n){n[Kf]=new Map}function Uc(n){return n[Kf]||My(n),n[Kf]}function Ny(...n){const t={get(e,r,i){for(const s of n){const a=s()[r];if(a!==void 0)return a}},has(e,r,i){for(const s of n){const o=s();if(r in o)return!0}return!1}};return new Proxy({},t)}function OR(n){return we(n)||ot(n)||Ua(n)}class rt extends Error{constructor(t,e){super(t),this.name="ViewError",this.view=e}}const UR="SAMPLE_FACET_UNIFORM",Ty="SAMPLE_FACET_TEXTURE",Py="uSelectionTexture_";class Gc{constructor(t){v(this,cn,[]);this.unitView=t,this.encoders=void 0,this.bufferInfo=void 0,this.bytesPerElement=new Map,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.viewUniformInfo=void 0,this.markUniformInfo=void 0,this.markUniformsAltered=!0,this.selectionTextureOps=[],this.rangeMap=new GR,this.defaultProperties={get clip(){return["x","y"].map(e=>t.getScaleResolution(e)).some(e=>(e==null?void 0:e.isZoomable())??!1)},xOffset:0,yOffset:0,minBufferSize:0},this.properties=Ny(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}augmentDefaultProperties(t){Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors(t))}get opaque(){return!1}get defaultHitTestMode(){return"intersects"}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const t={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(t.uniqueId={field:Gt}),t}fixEncoding(t){return t}setupExprRefsNeedingGraphicsUpdate(t){const e=this.getSupportedChannels(),r={};for(const s of t){const o=this.properties[s];if(o&&Me(o)){const a=this.unitView.paramRuntime.watchExpression(o.expr,()=>{this.updateGraphicsData(),this.unitView.context.animator.requestRender()});e.includes(s)||Object.defineProperty(r,s,{get(){return a()}})}}const i=this.properties;this.properties=Ny(()=>r,()=>i)}get encoding(){return jf(this,"encoding",()=>{var o;const t=this.getDefaultEncoding(),e=this.unitView.getEncoding(),r=a=>{const l=this.properties[a];return OR(l)||Me(l)?{value:l}:void 0},i=Object.fromEntries(this.getSupportedChannels().map(a=>[a,r(a)]).filter(a=>Ft(a[1]))),s=this.fixEncoding({...t,...i,...e});for(const a of Object.keys(s))this.getSupportedChannels().includes(a)||delete s[a];return s.x&&((o=s.x).buildIndex??(o.buildIndex=!0)),s})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=EQ(this.unitView,this.encoding)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return Ty;if(this.unitView.getLayoutAncestors().find(t=>"samples"in t.spec))return UR}createAndLinkShaders(t,e,r=[]){const i=this.getAttributes(),s=this.encoders,o=this.getSampleFacetMode();o&&r.push(`#define ${o}`);const a="// view: "+this.unitView.getPathString();let l=[];const c=new Set,u=Dy(s),f=[],h=Object.values(s).flatMap(x=>x.accessors).map(x=>x.predicate).filter(x=>x.param),A=new Map;for(const x of h){const B=x.param,E=this.unitView.paramRuntime,D=E.findValue(B);if(!D)throw new Error(`Cannot infer selection type as the parameter "${B}" has no value. Please ensure that the parameter is properly defined!`);const R=Ao("uniqueId");if(k1(D)){if(!A.has(B)){A.set(B,"single");const k=qf+mn(B);f.push(" // Selection parameter"),f.push(` uniform highp uint ${k};`),g(this,cn).push(()=>{this.registerMarkUniformValue(k,{expr:B},P=>P.uniqueId??0)}),l.push(`bool ${Tc}${B}(bool empty) {
466
- return ${qf}${B} == ${R} || (empty && ${qf}${B} == 0u);
467
- }`)}}else if(ed(D)){if(!A.has(B)){A.set(B,"multi");const k=Py+mn(B);l.push(`// Selection texture
468
- uniform highp usampler2D ${k};`);const P=this.getContext().glHelper,T=P.selectionTextures;this.selectionTextureOps.push(()=>{const z=E.getValue(B),J=T.get(z);if(!J)throw new Error(`Bug: no selection texture found for "${B}"!`);Bi(this.programInfo,{[k]:J})});const O=Py+B;l.push(`bool ${Tc}${B}(bool empty) {
469
- return binarySearchTexture(${O}, ${R}) || (empty && isEmptyBinarySearchTexture(${O}));
470
- }`),P.createSelectionTexture(D),E.watchExpression(B,()=>{const z=E.getValue(B);P.createSelectionTexture(z),this.getContext().animator.requestRender()})}}else if(D1(D)&&!A.has(B)){A.set(B,"interval");const k=[],P=[];for(const T of Object.keys(D.intervals)){if(!["x","y"].includes(T))continue;const O=qf+mn(B)+`_${T}`,{attributeType:z}=fo(this.unitView.getScaleResolution(T).getScale(),T);f.push(" // Selection parameter"),f.push(` uniform highp ${z}[2] ${O};`),g(this,cn).push(()=>{this.registerMarkUniformValue(O,{expr:B},Ae=>Ae.intervals[T]??[1,0])});const J=Ae=>{for(const[ht,Lt]of u.entries())if(ht[1]&&Lt.includes(Ae))return Ao(Lt);return Ao(Ae)},V=J(T),q=O+"[0]",oe=O+"[1]",se=Xh(T);if(this.encoding[se]){const Ae=J(se),ht=this.defaultHitTestMode;if(ht=="endpoints")k.push(`((${q} <= ${V} && ${V} <= ${oe}) || (${q} <= ${Ae} && ${Ae} <= ${oe}))`);else if(ht=="encloses")k.push(`(${q} <= ${V} && ${Ae} <= ${oe})`);else if(ht=="intersects")k.push(`(${q} <= ${Ae} && ${V} <= ${oe})`);else throw new rt(`Unsupported hit test mode "${ht}" for interval selection!`,this.unitView)}else k.push(`(${q} <= ${V} && ${V} <= ${oe})`);P.push(`${q} > ${oe}`)}l.push(`bool ${Tc}${B}(bool empty) {
471
- return ${k.join(" && ")} || (empty && (${P.join(" || ")}));
472
- }`)}}const d=(x,B,E,D)=>{const R=B.channelDef;if(Ft(R))if(Me(R.value)){const{uniformName:k,uniformGlsl:P,accessorGlsl:T,adjuster:O}=CR(x,E);l.push(T),f.push(P),g(this,cn).push(()=>{this.registerMarkUniformValue(k,R.value,O)})}else l.push(mR(x,E,R.value).accessorGlsl);else if(qs(R)){const{uniformName:k,uniformGlsl:P,accessorGlsl:T}=wR(x,D,E);f.push(P),l.push(T);const{largeHp:O,discrete:z}=fo(D,x),J=z&&"domain"in D?V=>D.domain().indexOf(V):O?Qy:V=>+V;g(this,cn).push(()=>{this.registerMarkUniformValue(k,R.datum,J)})}else if(Gn(R)){const k=u.get([R.field,!0]),{attributeGlsl:P,accessorGlsl:T}=Ey(x,D,E,k!=null&&k.includes(x)?k:void 0);c.add(P),l.push(T)}else if(Ks(R)){const{attributeGlsl:k,accessorGlsl:P}=Ey(x,D,E);c.add(k),l.push(P)}else throw new rt(`Unsupported channel definition: ${JSON.stringify(R)}`,this.unitView)};for(const[x,B]of Object.entries(s)){if(!i.includes(x))continue;const{channelDef:E,accessors:D,scale:R}=B;for(let k=0;k<D.length;k++)d(x,D[k],k,R);if(R){const k=b1(E),P=k&&k.resolutionChannel||x,T=sf(P)?this.unitView.getScaleResolution(P):null,{glsl:O,domainUniform:z,domainUniformName:J,rangeUniform:V,rangeUniformName:q}=yR(x,R,E);l.push(O),f.push(z),f.push(V),V&&g(this,cn).push(()=>{const oe=this.createMarkUniformSetter(q),se=()=>oe(ky(R,x));T.addEventListener("range",se),se()}),z&&g(this,cn).push(()=>{const oe=this.createMarkUniformSetter(J),se=()=>{const Ae=_n(R.type)?[0,R.domain().length]:R.domain();oe(Sy(R.type)?vR(Ae):Ae)};T.addEventListener("domain",se),se()})}l.push(IR(x,D))}const p=[...A.keys()].map(x=>`${Tc}${x}(false)`);l.push(`bool isPointSelected() {
473
- `+(this.encoders.uniqueId&&p.length>0?` return ${p.join(" || ")};`:" return false;")+`
474
- }`);const C=`precision highp float;
475
- precision highp int;`,m=x=>x.replace("#pragma markUniforms",f.join(`
476
- `));r=r.map(m),t=m(t),e=m(e);const y=[C,a,...r,Ry,NR,[...c].join(`
477
- `),...l,TR,PR,t],I=[C,a,...r,Ry,LR,e],w=this.gl;this.programStatus=sR(w,this.glHelper.compileShader(w.VERTEX_SHADER,y),this.glHelper.compileShader(w.FRAGMENT_SHADER,I))}finalizeGraphicsInitialization(){if(this.programInfo)return;if(!this.programStatus)throw new Error("No program status found! "+this.unitView.getPathString());const t=this.programStatus.getProgramErrors();if(t){t.detail&&console.warn(t.detail);const e=new Error("Cannot create shader program: "+t.message);throw e.view=this.unitView,e}this.programInfo=Zk(this.gl,this.programStatus.program),delete this.programStatus,this.viewUniformInfo=OC(this.gl,this.programInfo,"View"),this.markUniformInfo=OC(this.gl,this.programInfo,"Mark"),this.gl.useProgram(this.programInfo.program),Bi(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0,uZero:0});for(const e of g(this,cn))e();Q(this,cn,void 0)}createMarkUniformSetter(t){const e=this.markUniformInfo.setters[t];if(!e)throw new Error(`Uniform "${t}" not found int the Mark block!`);return r=>{e(r),this.markUniformsAltered=!0,this.unitView.context.animator.requestRender()}}registerMarkUniformValue(t,e,r=i=>i){const i=this.createMarkUniformSetter(t),s=o=>{if(o==null)throw new Error(`Trying to set null/undefined value for uniform: ${t}${Me(e)?`Expr: ${e.expr}`:""}`);i(o)};if(Me(e)){let o;const a=()=>s(r(o(null)));o=this.unitView.paramRuntime.watchExpression(e.expr,a),a()}else s(r(e))}deleteGraphicsData(){const t=this.glHelper;if(!t){this.vertexArrayInfo=void 0,this.bufferInfo=void 0;return}const e=t.gl;if(this.vertexArrayInfo&&(this.gl.bindVertexArray(null),e.deleteVertexArray(this.vertexArrayInfo.vertexArrayObject),this.vertexArrayInfo=void 0),this.bufferInfo){for(let r=0;r<8;r++)e.disableVertexAttribArray(r);Object.values(this.bufferInfo.attribs).forEach(r=>this.gl.deleteBuffer(r.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}dispose(){this.deleteGraphicsData()}updateBufferInfo(t){if(this.gl.bindVertexArray(null),this.bufferInfo&&t.vertexCount<=this.bufferInfo.allocatedVertices)for(const[e,r]of Object.entries(t.arrays))r.data&&fD(this.gl,this.bufferInfo.attribs[e],r.data,0);else{this.deleteGraphicsData(),this.bufferInfo=dD(this.gl,t.arrays,{numElements:t.vertexCount}),this.bufferInfo.allocatedVertices=t.allocatedVertices;for(const[e,r]of Object.entries(t.arrays))this.bytesPerElement.set(e,r.data.BYTES_PER_ELEMENT)}}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&&!this.unitView.paramRuntime.hasPointSelections())return!1;for(const t of this.unitView.getLayoutAncestors())if(!t.isPickingSupported())return!1;return!0}bindOrSetMarkUniformBlock(){this.markUniformsAltered?(GC(this.gl,this.programInfo,this.markUniformInfo),this.markUniformsAltered=!1):UC(this.gl,this.programInfo,this.markUniformInfo)}prepareRender(t){const e=this.glHelper,r=this.gl,i=[];i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=m8(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)});for(const[o,a]of Object.entries(this.encoders)){const l=e.rangeTextures.get(a.scale);l&&i.push(()=>Bi(this.programInfo,{[y0+o]:l}))}i.push(...this.selectionTextureOps),this.getSampleFacetMode()==Ty&&i.push(()=>{let o;for(const a of this.unitView.getLayoutAncestors())if(o=a.getSampleFacetTexture(),o)break;if(!o)throw new Error("No facet texture available. This is bug.");Bi(this.programInfo,{uSampleFacetTexture:o})});const s=(t.picking??!1)&&this.isPickingParticipant();return i.push(()=>Ec(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:s})),this.opaque||t.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(t){const e=t.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(e&&r){const i=e.pixelToUnit,s=e.locSize.location*i,o=e.locSize.size*i;if(s>1||s+o<0)return!1;this.gl.uniform4f(r.location,s,o,s,o)}return!0}render(t){}createRenderCallback(t,e){var f;if(!this.bufferInfo)return()=>{};const r=this;let i;const s=(f=this.unitView.getScaleResolution("x"))==null?void 0:f.getScale(),o=s&&Xe(s.type),a=["index","locus"].includes(s==null?void 0:s.type)?-1:0,l=[0,0];i=h=>{if(o&&h.xIndex){const A=s.domain(),d=h.xIndex(A[0]+a,A[1],l),p=d[0],C=d[1]-p;C>0&&t(p,C)}else t(h.offset,h.count)};const c=this.rangeMap.get(void 0).count==0?e.facetId:void 0,u=this.rangeMap.get(c);return e.sampleFacetRenderingOptions?function(){u.count&&r.prepareSampleFacetRendering(e)&&i(u)}:function(){u.count&&i(u)}}setViewport(t,e,r,i){r=r.flatten();const s=this.gl,o=this.properties,a=.5,l=(o.xOffset??0)+a,c=(o.yOffset??0)+a;let u,f=r;if(o.clip!=="never"&&(o.clip||i)){let h=0,A=0,d;if(i){if(f=r.intersect(i).flatten(),!f.isDefined())return!1;d=[r.width/f.width,r.height/f.height],A=Math.max(0,r.y2-i.y2),h=Math.min(0,r.x-i.x)}else d=[1,1];const p=[f.x,t.height-f.y2,f.width,f.height].map(I=>I*e),C=p.map(I=>Math.floor(I)),m=p[0]-C[0],y=p[1]-C[1];s.viewport(...C),s.scissor(...C),s.enable(s.SCISSOR_TEST),u={uViewOffset:[(l+h+m/e)/f.width,-(c+A-y/e)/f.height],uViewScale:d}}else{if(!r.isDefined())return!1;s.viewport(0,0,t.width*e,t.height*e),s.disable(s.SCISSOR_TEST),u={uViewOffset:[(r.x+l)/t.width,(t.height-r.y-c-r.height)/t.height],uViewScale:[r.width/t.width,r.height/t.height]}}return Ec(this.viewUniformInfo,{...u,uViewportSize:[r.width,r.height],uDevicePixelRatio:e}),GC(this.gl,this.programInfo,this.viewUniformInfo),!0}findDatumAt(t,e){}}cn=new WeakMap;class GR extends Tn{constructor(){super([],JSON.stringify)}get(t){let e=super.get(t);return e===void 0&&(e={offset:0,count:0,xIndex:void 0},super.set(t,e)),e}migrateEntries(t){for(const[e,r]of this.entries())t.has(e)||(r.offset=0,r.count=0,r.xIndex=void 0);for(const[e,r]of t.entries())Object.assign(this.get(e),r)}}function b0(n,t){const e=Xh(t);let r=n[t]&&{...n[t]},i=n[e]&&{...n[e]};if(!(Ft(r)||Ft(i))){if(r){if(!zt(n[t]))return;if(i){if(r.type!="quantitative"){const s=(1-(r.band||1))/2;r.band=s,i.band=-s}}else if(r.type=="quantitative")i={datum:0,domainInert:!0};else{i={...r};const s=(1-(r.band??1))/2;r.band=0+s,i.band=1-s}}else r={value:0},i={value:1};n[t]=r,n[e]=i}}function Wf(n,t){const e=b1(n);e&&(e.resolutionChannel=t)}function Ly(n,t){n.stroke||(t?n.stroke={value:null}:(n.stroke=structuredClone(n.color),Wf(n.stroke,"color"))),Ft(n.stroke)&&n.stroke.value===null&&(n.strokeWidth={value:0}),n.strokeOpacity||(n.strokeOpacity=structuredClone(n.opacity),Wf(n.strokeOpacity,"opacity"))}function Oy(n,t){Ft(n.fill)&&n.fill.value===null?n.fillOpacity={value:0}:n.fill||(n.fill=structuredClone(n.color),Wf(n.fill,"color"),!t&&!n.fillOpacity&&(n.fillOpacity={value:0})),n.fillOpacity||(t?(n.fillOpacity=structuredClone(n.opacity),Wf(n.fillOpacity,"opacity")):n.fillOpacity={value:0})}const zR=["none","diagonal","antiDiagonal","cross","vertical","horizontal","grid","dots","rings","ringsLarge"];class HR extends Gc{constructor(e){super(e);v(this,Yr);this.augmentDefaultProperties({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1})}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 jf(this,"opaque",()=>!F(this,Yr,fp).call(this)&&!F(this,Yr,Ap).call(this)&&!this.properties.shadowOpacity&&Ft(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return b0(e,"x"),b0(e,"y"),Ly(e,this.properties.filled),Oy(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}async initializeGraphics(){await super.initializeGraphics();const e=[];F(this,Yr,fp).call(this)&&e.push("ROUNDED_CORNERS"),F(this,Yr,Ap).call(this)&&e.push("STROKED"),this.properties.shadowOpacity&&e.push("SHADOW"),this.createAndLinkShaders(E8,b8,[x8,...e.map(r=>"#define "+r)])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;this.registerMarkUniformValue("uMinWidth",e.minWidth),this.registerMarkUniformValue("uMinHeight",e.minHeight),this.registerMarkUniformValue("uMinOpacity",e.minOpacity),this.registerMarkUniformValue("uCornerRadiusTopRight",e.cornerRadiusTopRight??e.cornerRadius??0),this.registerMarkUniformValue("uCornerRadiusBottomRight",e.cornerRadiusBottomRight??e.cornerRadius??0),this.registerMarkUniformValue("uCornerRadiusTopLeft",e.cornerRadiusTopLeft??e.cornerRadius??0),this.registerMarkUniformValue("uCornerRadiusBottomLeft",e.cornerRadiusBottomLeft??e.cornerRadius??0),this.registerMarkUniformValue("uHatchPattern",e.hatch,r=>Math.max(0,zR.indexOf(r??"none"))),this.registerMarkUniformValue("uShadowBlur",e.shadowBlur??0),this.registerMarkUniformValue("uShadowOpacity",e.shadowOpacity??0),this.registerMarkUniformValue("uShadowOffsetX",e.shadowOffsetX??0),this.registerMarkUniformValue("uShadowOffsetY",e.shadowOffsetY??0),this.registerMarkUniformValue("uShadowColor",e.shadowColor??"black",w0)}updateGraphicsData(){const e=this.unitView.getCollector();if(!e){console.debug("No collector");return}const r=e.getItemCount(),i=new DR({encoders:this.encoders,attributes:this.getAttributes(),numItems:r});i.addBatches(e.facetBatches);const s=i.toArrays();this.rangeMap.migrateEntries(s.rangeMap),this.updateBufferInfo(s)}prepareRender(e){const r=super.prepareRender(e);return r.push(()=>this.bindOrSetMarkUniformBlock()),r.push(()=>vi(this.gl,this.programInfo,this.vertexArrayInfo)),r}render(e){const r=this.gl;return this.createRenderCallback((i,s)=>{Qf(r,this.vertexArrayInfo,r.TRIANGLE_STRIP,s,i)},e)}findDatumAt(e,r){e=Ke(e);const i=this.unitView.getCollector().facetBatches.get(e);if(!i)return;const s=this.encoders,o=s.x.scale.type;if(_n(o)){const a=s.x.dataAccessor;return i.find(l=>r==a(l))}else{const a=s.x.dataAccessor,l=s.x2.dataAccessor;return i.find(c=>r>=a(c)&&r<l(c))}}}Yr=new WeakSet,fp=function(){const e=this.properties;return e.cornerRadius||e.cornerRadiusBottomLeft||e.cornerRadiusBottomRight||e.cornerRadiusTopLeft||e.cornerRadiusTopRight},Ap=function(){const e=this.encoding.strokeWidth;return!(Ft(e)&&!e.value)||"condition"in e};const VR=`flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}vec2 getDxDy(){
439
+ return true;}return false;}`,zQ="in highp vec4 vPickingColor;",Pa=Symbol("cacheMap");function La(n,e,t){let r=Ns(n).get(e);return r===void 0&&(r=t(e),Ns(n).set(e,r)),r}function Ju(n,e){Ns(n).delete(e)}function Ms(n,e){const t=Ns(n);for(const r of t.keys())r.startsWith(e)&&t.delete(r);Ns(n).delete(e)}function Ip(n){n[Pa]=new Map}function Ns(n){return n[Pa]||Ip(n),n[Pa]}function bp(...n){const e={get(t,r,i){for(const s of n){const a=s()[r];if(a!==void 0)return a}},has(t,r,i){for(const s of n){const o=s();if(r in o)return!0}return!1}};return new Proxy({},e)}function HQ(n){return le(n)||Ye(n)||Ti(n)}class Ve extends Error{constructor(e,t){super(e),this.name="ViewError",this.view=t}}const VQ="SAMPLE_FACET_UNIFORM",Ep="SAMPLE_FACET_TEXTURE",xp="uSelectionTexture_";class Ts{#e=[];constructor(e){this.unitView=e,this.encoders=void 0,this.bufferInfo=void 0,this.bytesPerElement=new Map,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.viewUniformInfo=void 0,this.markUniformInfo=void 0,this.markUniformsAltered=!0,this.selectionTextureOps=[],this.rangeMap=new _Q,this.defaultProperties={get clip(){return["x","y"].map(t=>e.getScaleResolution(t)).some(t=>t?.isZoomable()??!1)},xOffset:0,yOffset:0,minBufferSize:0},this.properties=bp(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}augmentDefaultProperties(e){Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors(e))}get opaque(){return!1}get defaultHitTestMode(){return"intersects"}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:dt}),e}fixEncoding(e){return e}setupExprRefsNeedingGraphicsUpdate(e){const t=this.getSupportedChannels(),r={};for(const s of e){const o=this.properties[s];if(o&&Ie(o)){const a=this.unitView.paramRuntime.watchExpression(o.expr,()=>{this.updateGraphicsData(),this.unitView.context.animator.requestRender()});t.includes(s)||Object.defineProperty(r,s,{get(){return a()}})}}const i=this.properties;this.properties=bp(()=>r,()=>i)}get encoding(){return La(this,"encoding",()=>{const e=this.getDefaultEncoding(),t=this.unitView.getEncoding(),r=o=>{const a=this.properties[o];return HQ(a)||Ie(a)?{value:a}:void 0},i=Object.fromEntries(this.getSupportedChannels().map(o=>[o,r(o)]).filter(o=>ut(o[1]))),s=this.fixEncoding({...e,...i,...t});for(const o of Object.keys(s))this.getSupportedChannels().includes(o)||delete s[o];return s.x&&(s.x.buildIndex??=!0),s})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=vE(this.unitView,this.encoding)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return Ep;if(this.unitView.getLayoutAncestors().find(e=>"samples"in e.spec))return VQ}createAndLinkShaders(e,t,r=[]){const i=this.getAttributes(),s=this.encoders,o=this.getSampleFacetMode();o&&r.push(`#define ${o}`);const a="// view: "+this.unitView.getPathString();let l=[];const c=new Set,u=mp(s),f=[],h=Object.values(s).flatMap(E=>E.accessors).map(E=>E.predicate).filter(E=>E.param),A=new Map;for(const E of h){const x=E.param,b=this.unitView.paramRuntime,S=b.findValue(x);if(!S)throw new Error(`Cannot infer selection type as the parameter "${x}" has no value. Please ensure that the parameter is properly defined!`);const Q=si("uniqueId");if(wd(S)){if(!A.has(x)){A.set(x,"single");const v=Ta+Tt(x);f.push(" // Selection parameter"),f.push(` uniform highp uint ${v};`),this.#e.push(()=>{this.registerMarkUniformValue(v,{expr:x},F=>F.uniqueId??0)}),l.push(`bool ${ks}${x}(bool empty) {
440
+ return ${Ta}${x} == ${Q} || (empty && ${Ta}${x} == 0u);
441
+ }`)}}else if(xl(S)){if(!A.has(x)){A.set(x,"multi");const v=xp+Tt(x);l.push(`// Selection texture
442
+ uniform highp usampler2D ${v};`);const F=this.getContext().glHelper,R=F.selectionTextures;this.selectionTextureOps.push(()=>{const O=b.getValue(x),H=R.get(O);if(!H)throw new Error(`Bug: no selection texture found for "${x}"!`);ir(this.programInfo,{[v]:H})});const N=xp+x;l.push(`bool ${ks}${x}(bool empty) {
443
+ return binarySearchTexture(${N}, ${Q}) || (empty && isEmptyBinarySearchTexture(${N}));
444
+ }`),F.createSelectionTexture(S),b.watchExpression(x,()=>{const O=b.getValue(x);F.createSelectionTexture(O),this.getContext().animator.requestRender()})}}else if(md(S)&&!A.has(x)){A.set(x,"interval");const v=[],F=[];for(const R of Object.keys(S.intervals)){if(!["x","y"].includes(R))continue;const N=Ta+Tt(x)+`_${R}`,{attributeType:O}=ii(this.unitView.getScaleResolution(R).getScale(),R);f.push(" // Selection parameter"),f.push(` uniform highp ${O}[2] ${N};`),this.#e.push(()=>{this.registerMarkUniformValue(N,{expr:x},ne=>ne.intervals[R]??[1,0])});const H=ne=>{for(const[Ge,qt]of u.entries())if(Ge[1]&&qt.includes(ne))return si(qt);return si(ne)},G=H(R),_=N+"[0]",te=N+"[1]",oe=Il(R);if(this.encoding[oe]){const ne=H(oe),Ge=this.defaultHitTestMode;if(Ge=="endpoints")v.push(`((${_} <= ${G} && ${G} <= ${te}) || (${_} <= ${ne} && ${ne} <= ${te}))`);else if(Ge=="encloses")v.push(`(${_} <= ${G} && ${ne} <= ${te})`);else if(Ge=="intersects")v.push(`(${_} <= ${ne} && ${G} <= ${te})`);else throw new Ve(`Unsupported hit test mode "${Ge}" for interval selection!`,this.unitView)}else v.push(`(${_} <= ${G} && ${G} <= ${te})`);F.push(`${_} > ${te}`)}l.push(`bool ${ks}${x}(bool empty) {
445
+ return ${v.join(" && ")} || (empty && (${F.join(" || ")}));
446
+ }`)}}const d=(E,x,b,S)=>{const Q=x.channelDef;if(ut(Q))if(Ie(Q.value)){const{uniformName:v,uniformGlsl:F,accessorGlsl:R,adjuster:N}=bQ(E,b);l.push(R),f.push(F),this.#e.push(()=>{this.registerMarkUniformValue(v,Q.value,N)})}else l.push(IQ(E,b,Q.value).accessorGlsl);else if(Gr(Q)){const{uniformName:v,uniformGlsl:F,accessorGlsl:R}=EQ(E,S,b);f.push(F),l.push(R);const{largeHp:N,discrete:O}=ii(S,E),H=O&&"domain"in S?G=>S.domain().indexOf(G):N?pp:G=>+G;this.#e.push(()=>{this.registerMarkUniformValue(v,Q.datum,H)})}else if(en(Q)){const v=u.get([Q.field,!0]),{attributeGlsl:F,accessorGlsl:R}=up(E,S,b,v?.includes(E)?v:void 0);c.add(F),l.push(R)}else if(zr(Q)){const{attributeGlsl:v,accessorGlsl:F}=up(E,S,b);c.add(v),l.push(F)}else throw new Ve(`Unsupported channel definition: ${JSON.stringify(Q)}`,this.unitView)};for(const[E,x]of Object.entries(s)){if(!i.includes(E))continue;const{channelDef:b,accessors:S,scale:Q}=x;for(let v=0;v<S.length;v++)d(E,S[v],v,Q);if(Q){const v=fd(b),F=v&&v.resolutionChannel||E,R=qo(F)?this.unitView.getScaleResolution(F):null,{glsl:N,domainUniform:O,domainUniformName:H,rangeUniform:G,rangeUniformName:_}=xQ(E,Q,b);l.push(N),f.push(O),f.push(G),G&&this.#e.push(()=>{const te=this.createMarkUniformSetter(_),oe=()=>te(wp(Q,E));R.addEventListener("range",oe),oe()}),O&&this.#e.push(()=>{const te=this.createMarkUniformSetter(H),oe=()=>{const ne=sn(Q.type)?[0,Q.domain().length]:Q.domain();te(gp(Q.type)?kQ(ne):ne)};R.addEventListener("domain",oe),oe()})}l.push(BQ(E,S))}const g=[...A.keys()].map(E=>`${ks}${E}(false)`);l.push(`bool isPointSelected() {
447
+ `+(this.encoders.uniqueId&&g.length>0?` return ${g.join(" || ")};`:" return false;")+`
448
+ }`);const p=`precision highp float;
449
+ precision highp int;`,m=E=>E.replace("#pragma markUniforms",f.join(`
450
+ `));r=r.map(m),e=m(e),t=m(t);const C=[p,a,...r,yp,OQ,[...c].join(`
451
+ `),...l,UQ,GQ,e],y=[p,a,...r,yp,zQ,t],w=this.gl;this.programStatus=lQ(w,this.glHelper.compileShader(w.VERTEX_SHADER,C),this.glHelper.compileShader(w.FRAGMENT_SHADER,y))}finalizeGraphicsInitialization(){if(this.programInfo)return;if(!this.programStatus)throw new Error("No program status found! "+this.unitView.getPathString());const e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);const t=new Error("Cannot create shader program: "+e.message);throw t.view=this.unitView,t}this.programInfo=n3(this.gl,this.programStatus.program),delete this.programStatus,this.viewUniformInfo=v0(this.gl,this.programInfo,"View"),this.markUniformInfo=v0(this.gl,this.programInfo,"Mark"),this.gl.useProgram(this.programInfo.program),ir(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0,uZero:0});for(const t of this.#e)t();this.#e=void 0}createMarkUniformSetter(e){const t=this.markUniformInfo.setters[e];if(!t)throw new Error(`Uniform "${e}" not found int the Mark block!`);return r=>{t(r),this.markUniformsAltered=!0,this.unitView.context.animator.requestRender()}}registerMarkUniformValue(e,t,r=i=>i){const i=this.createMarkUniformSetter(e),s=o=>{if(o==null)throw new Error(`Trying to set null/undefined value for uniform: ${e}${Ie(t)?`Expr: ${t.expr}`:""}`);i(o)};if(Ie(t)){let o;const a=()=>s(r(o(null)));o=this.unitView.paramRuntime.watchExpression(t.expr,a),a()}else s(r(t))}deleteGraphicsData(){const e=this.glHelper;if(!e){this.vertexArrayInfo=void 0,this.bufferInfo=void 0;return}const t=e.gl;if(this.vertexArrayInfo&&(this.gl.bindVertexArray(null),t.deleteVertexArray(this.vertexArrayInfo.vertexArrayObject),this.vertexArrayInfo=void 0),this.bufferInfo){for(let r=0;r<8;r++)t.disableVertexAttribArray(r);Object.values(this.bufferInfo.attribs).forEach(r=>this.gl.deleteBuffer(r.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}dispose(){this.deleteGraphicsData()}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(const[t,r]of Object.entries(e.arrays))r.data&&gx(this.gl,this.bufferInfo.attribs[t],r.data,0);else{this.deleteGraphicsData(),this.bufferInfo=wx(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices;for(const[t,r]of Object.entries(e.arrays))this.bytesPerElement.set(t,r.data.BYTES_PER_ELEMENT)}}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null&&!this.unitView.paramRuntime.hasPointSelections())return!1;for(const e of this.unitView.getLayoutAncestors())if(!e.isPickingSupported())return!1;return!0}bindOrSetMarkUniformBlock(){this.markUniformsAltered?(Q0(this.gl,this.programInfo,this.markUniformInfo),this.markUniformsAltered=!1):S0(this.gl,this.programInfo,this.markUniformInfo)}prepareRender(e){const t=this.glHelper,r=this.gl,i=[];i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=I3(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)});for(const[o,a]of Object.entries(this.encoders)){const l=t.rangeTextures.get(a.scale);l&&i.push(()=>ir(this.programInfo,{[_u+o]:l}))}i.push(...this.selectionTextureOps),this.getSampleFacetMode()==Ep&&i.push(()=>{let o;for(const a of this.unitView.getLayoutAncestors())if(o=a.getSampleFacetTexture(),o)break;if(!o)throw new Error("No facet texture available. This is bug.");ir(this.programInfo,{uSampleFacetTexture:o})});const s=(e.picking??!1)&&this.isPickingParticipant();return i.push(()=>ms(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:s})),this.opaque||e.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(e){const t=e.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(t&&r){const i=t.pixelToUnit,s=t.locSize.location*i,o=t.locSize.size*i;if(s>1||s+o<0)return!1;this.gl.uniform4f(r.location,s,o,s,o)}return!0}render(e){}createRenderCallback(e,t){if(!this.bufferInfo)return()=>{};const r=this;let i;const s=this.unitView.getScaleResolution("x")?.getScale(),o=s&&Pe(s.type),a=["index","locus"].includes(s?.type)?-1:0,l=[0,0];i=f=>{if(o&&f.xIndex){const h=s.domain(),A=f.xIndex(h[0]+a,h[1],l),d=A[0],g=A[1]-d;g>0&&e(d,g)}else e(f.offset,f.count)};const c=this.rangeMap.get(void 0).count==0?t.facetId:void 0,u=this.rangeMap.get(c);return t.sampleFacetRenderingOptions?function(){u.count&&r.prepareSampleFacetRendering(t)&&i(u)}:function(){u.count&&i(u)}}setViewport(e,t,r,i){r=r.flatten();const s=this.gl,o=this.properties,a=.5,l=(o.xOffset??0)+a,c=(o.yOffset??0)+a;let u,f=r;if(o.clip!=="never"&&(o.clip||i)){let h=0,A=0,d;if(i){if(f=r.intersect(i).flatten(),!f.isDefined())return!1;d=[r.width/f.width,r.height/f.height],A=Math.max(0,r.y2-i.y2),h=Math.min(0,r.x-i.x)}else d=[1,1];const g=[f.x,e.height-f.y2,f.width,f.height].map(y=>y*t),p=g.map(y=>Math.floor(y)),m=g[0]-p[0],C=g[1]-p[1];s.viewport(...p),s.scissor(...p),s.enable(s.SCISSOR_TEST),u={uViewOffset:[(l+h+m/t)/f.width,-(c+A-C/t)/f.height],uViewScale:d}}else{if(!r.isDefined())return!1;s.viewport(0,0,e.width*t,e.height*t),s.disable(s.SCISSOR_TEST),u={uViewOffset:[(r.x+l)/e.width,(e.height-r.y-c-r.height)/e.height],uViewScale:[r.width/e.width,r.height/e.height]}}return ms(this.viewUniformInfo,{...u,uViewportSize:[r.width,r.height],uDevicePixelRatio:t}),Q0(this.gl,this.programInfo,this.viewUniformInfo),!0}findDatumAt(e,t){}}class _Q extends jt{constructor(){super([],JSON.stringify)}get(e){let t=super.get(e);return t===void 0&&(t={offset:0,count:0,xIndex:void 0},super.set(e,t)),t}migrateEntries(e){for(const[t,r]of this.entries())e.has(t)||(r.offset=0,r.count=0,r.xIndex=void 0);for(const[t,r]of e.entries())Object.assign(this.get(t),r)}}function qu(n,e){const t=Il(e);let r=n[e]&&{...n[e]},i=n[t]&&{...n[t]};if(!(ut(r)||ut(i))){if(r){if(!gt(n[e]))return;if(i){if(r.type!="quantitative"){const s=(1-(r.band||1))/2;r.band=s,i.band=-s}}else if(r.type=="quantitative")i={datum:0,domainInert:!0};else{i={...r};const s=(1-(r.band??1))/2;r.band=0+s,i.band=1-s}}else r={value:0},i={value:1};n[e]=r,n[t]=i}}function Oa(n,e){const t=fd(n);t&&(t.resolutionChannel=e)}function Bp(n,e){n.stroke||(e?n.stroke={value:null}:(n.stroke=structuredClone(n.color),Oa(n.stroke,"color"))),ut(n.stroke)&&n.stroke.value===null&&(n.strokeWidth={value:0}),n.strokeOpacity||(n.strokeOpacity=structuredClone(n.opacity),Oa(n.strokeOpacity,"opacity"))}function vp(n,e){ut(n.fill)&&n.fill.value===null?n.fillOpacity={value:0}:n.fill||(n.fill=structuredClone(n.color),Oa(n.fill,"color"),!e&&!n.fillOpacity&&(n.fillOpacity={value:0})),n.fillOpacity||(e?(n.fillOpacity=structuredClone(n.opacity),Oa(n.fillOpacity,"opacity")):n.fillOpacity={value:0})}const YQ=["none","diagonal","antiDiagonal","cross","vertical","horizontal","grid","dots","rings","ringsLarge"];class JQ extends Ts{constructor(e){super(e),this.augmentDefaultProperties({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1})}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 La(this,"opaque",()=>!this.#e()&&!this.#t()&&!this.properties.shadowOpacity&&ut(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return qu(e,"x"),qu(e,"y"),Bp(e,this.properties.filled),vp(e,this.properties.filled),delete e.color,delete e.opacity,e}#e(){const e=this.properties;return e.cornerRadius||e.cornerRadiusBottomLeft||e.cornerRadiusBottomRight||e.cornerRadiusTopLeft||e.cornerRadiusTopRight}#t(){const e=this.encoding.strokeWidth;return!(ut(e)&&!e.value)||"condition"in e}async initializeGraphics(){await super.initializeGraphics();const e=[];this.#e()&&e.push("ROUNDED_CORNERS"),this.#t()&&e.push("STROKED"),this.properties.shadowOpacity&&e.push("SHADOW"),this.createAndLinkShaders(v3,S3,[Q3,...e.map(t=>"#define "+t)])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;this.registerMarkUniformValue("uMinWidth",e.minWidth),this.registerMarkUniformValue("uMinHeight",e.minHeight),this.registerMarkUniformValue("uMinOpacity",e.minOpacity),this.registerMarkUniformValue("uCornerRadiusTopRight",e.cornerRadiusTopRight??e.cornerRadius??0),this.registerMarkUniformValue("uCornerRadiusBottomRight",e.cornerRadiusBottomRight??e.cornerRadius??0),this.registerMarkUniformValue("uCornerRadiusTopLeft",e.cornerRadiusTopLeft??e.cornerRadius??0),this.registerMarkUniformValue("uCornerRadiusBottomLeft",e.cornerRadiusBottomLeft??e.cornerRadius??0),this.registerMarkUniformValue("uHatchPattern",e.hatch,t=>Math.max(0,YQ.indexOf(t??"none"))),this.registerMarkUniformValue("uShadowBlur",e.shadowBlur??0),this.registerMarkUniformValue("uShadowOpacity",e.shadowOpacity??0),this.registerMarkUniformValue("uShadowOffsetX",e.shadowOffsetX??0),this.registerMarkUniformValue("uShadowOffsetY",e.shadowOffsetY??0),this.registerMarkUniformValue("uShadowColor",e.shadowColor??"black",Vu)}updateGraphicsData(){const e=this.unitView.getCollector();if(!e){console.debug("No collector");return}const t=e.getItemCount(),r=new MQ({encoders:this.encoders,attributes:this.getAttributes(),numItems:t});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>sr(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){const t=this.gl;return this.createRenderCallback((r,i)=>{pa(t,this.vertexArrayInfo,t.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,t){e=Me(e);const r=this.unitView.getCollector().facetBatches.get(e);if(!r)return;const i=this.encoders,s=i.x.scale.type;if(sn(s)){const o=i.x.dataAccessor;return r.find(a=>t==o(a))}else{const o=i.x.dataAccessor,a=i.x2.dataAccessor;return r.find(l=>t>=o(l)&&t<a(l))}}}const qQ=`flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}vec2 getDxDy(){
478
452
  #if defined(dx_DEFINED) || defined(dy_DEFINED)
479
453
  return vec2(getScaled_dx(),getScaled_dy())/uViewportSize;
480
454
  #else
481
455
  return vec2(0.0,0.0);
482
456
  #endif
483
- }void main(void){float shapeAngle=0.0;float semanticThresholdFactor=isPointSelected()? 1.0: computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor;float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;if(vShape>TICK_UP&&vShape<=TICK_LEFT){shapeAngle=(vShape-TICK_UP)*90.0;vShape=TICK_UP;}else if(vShape>TRIANGLE_UP&&vShape<=TRIANGLE_LEFT){shapeAngle=(vShape-TRIANGLE_UP)*90.0;vShape=TRIANGLE_UP;}float angleInDegrees=getScaled_angle();float angle=-(shapeAngle+angleInDegrees)*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=max((diameter+padding),uPickingEnabled ? uMinPickingSize : 0.0)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,_R="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);flat in float vRadius;flat in float vRadiusWithPadding;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in lowp float vShape;flat in lowp float vHalfStrokeWidth;flat in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TICK_UP=8.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float tickUp(vec2 p,float r){float halfR=r*0.5;p.y+=halfR;p=abs(p);return max(p.x-r*0.15,p.y-halfR);}float equilateralTriangle(vec2 p,float r){p.y=-p.y;float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r);}else if(vShape==TICK_UP){d=tickUp(p,r);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vec4(0.0),vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}",YR=`layout(std140)uniform Mark{/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform float uMinPickingSize;uniform mediump float uScaleFactor;uniform mediump float uZoomLevel;uniform highp float uSemanticThreshold;uniform mediump float uGradientStrength;
457
+ }void main(void){float shapeAngle=0.0;float semanticThresholdFactor=isPointSelected()? 1.0: computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor;float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;if(vShape>TICK_UP&&vShape<=TICK_LEFT){shapeAngle=(vShape-TICK_UP)*90.0;vShape=TICK_UP;}else if(vShape>TRIANGLE_UP&&vShape<=TRIANGLE_LEFT){shapeAngle=(vShape-TRIANGLE_UP)*90.0;vShape=TRIANGLE_UP;}float angleInDegrees=getScaled_angle();float angle=-(shapeAngle+angleInDegrees)*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=max((diameter+padding),uPickingEnabled ? uMinPickingSize : 0.0)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,KQ="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);flat in float vRadius;flat in float vRadiusWithPadding;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in lowp float vShape;flat in lowp float vHalfStrokeWidth;flat in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TICK_UP=8.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float tickUp(vec2 p,float r){float halfR=r*0.5;p.y+=halfR;p=abs(p);return max(p.x-r*0.15,p.y-halfR);}float equilateralTriangle(vec2 p,float r){p.y=-p.y;float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r);}else if(vShape==TICK_UP){d=tickUp(p,r);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vec4(0.0),vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}",jQ=`layout(std140)uniform Mark{/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform float uMinPickingSize;uniform mediump float uScaleFactor;uniform mediump float uZoomLevel;uniform highp float uSemanticThreshold;uniform mediump float uGradientStrength;
484
458
  #pragma markUniforms
485
- };`;class Uy extends ze{constructor(t){super(t),this.params=t,this.k=t.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(t){this.reservoir.push(t),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(t){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=t,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(t){this.ingester(t)}complete(){for(const t of this.reservoir)this._propagate(t);super.complete()}}function JR(n,t,e){const r=new Uy({type:"sample",size:n});for(const i of t)r.handle(e(i));return r.complete(),r.reservoir}const qR={};class KR extends Gc{constructor(e){super(e);v(this,_A);v(this,Yo,()=>0);this.augmentDefaultProperties({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,minPickingSize:2});const r=this.properties.semanticZoomFraction;if(r!=null)if(Me(r)){const i=this.unitView.paramRuntime.watchExpression(r.expr,()=>this.getContext().animator.requestRender());Q(this,Yo,i)}else Q(this,Yo,()=>r);"geometricZoomBound"in this.properties&&console.warn('geometricZoomBound is deprecated. Use something like the following instead: "size": { "expr": "min(0.5 * pow(zoomLevel, 2), 200)" }.')}getAttributes(){return["uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","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(),...qR}}fixEncoding(e){return Ly(e,this.properties.filled),Oy(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){var r,i;super.initializeData();const e=(i=(r=this.encoders.semanticScore)==null?void 0:r.dataAccessor)==null?void 0:i.asNumberAccessor();e&&(this.sampledSemanticScores=Float32Array.from(JR(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((s,o)=>s-o))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(VR,_R,[YR])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;this.registerMarkUniformValue("uInwardStroke",e.inwardStroke,r=>!!r),this.registerMarkUniformValue("uGradientStrength",e.fillGradientStrength),this.registerMarkUniformValue("uMinPickingSize",e.minPickingSize)}updateGraphicsData(){const e=this.unitView.getCollector();if(!e){console.debug("No collector");return}const r=e.getItemCount(),i=new FR({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(r,this.properties.minBufferSize||0)});i.addBatches(e.facetBatches);const s=i.toArrays();this.rangeMap.migrateEntries(s.rangeMap),this.updateBufferInfo(s)}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-g(this,Yo).call(this)*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const r=this.sampledSemanticScores;return Qm(r,e)}}else return-1}prepareRender(e){const r=super.prepareRender(e);return r.push(()=>{Ec(this.markUniformInfo,{uScaleFactor:F(this,_A,dB).call(this),uSemanticThreshold:this.getSemanticThreshold()}),this.markUniformsAltered=!0}),r.push(()=>this.bindOrSetMarkUniformBlock()),r.push(()=>vi(this.gl,this.programInfo,this.vertexArrayInfo)),r}render(e){const r=this.gl;return this.createRenderCallback((i,s)=>{s&&Qf(r,this.vertexArrayInfo,r.POINTS,s,i)},e)}}Yo=new WeakMap,_A=new WeakSet,dB=function(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)};const jR="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}",WR="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;flat in vec4 vColor;flat in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}",XR=`layout(std140)uniform Mark{uniform mediump float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;uniform mediump float uStrokeDashOffset;
459
+ };`;class Sp extends Qe{constructor(e){super(e),this.params=e,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 WQ(n,e,t){const r=new Sp({type:"sample",size:n});for(const i of e)r.handle(t(i));return r.complete(),r.reservoir}const XQ={};class ZQ extends Ts{#e=()=>0;constructor(e){super(e),this.augmentDefaultProperties({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,minPickingSize:2});const t=this.properties.semanticZoomFraction;if(t!=null)if(Ie(t)){const r=this.unitView.paramRuntime.watchExpression(t.expr,()=>this.getContext().animator.requestRender());this.#e=r}else this.#e=()=>t;"geometricZoomBound"in this.properties&&console.warn('geometricZoomBound is deprecated. Use something like the following instead: "size": { "expr": "min(0.5 * pow(zoomLevel, 2), 200)" }.')}getAttributes(){return["uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","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(),...XQ}}fixEncoding(e){return Bp(e,this.properties.filled),vp(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();const e=this.encoders.semanticScore?.dataAccessor?.asNumberAccessor();e&&(this.sampledSemanticScores=Float32Array.from(WQ(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((t,r)=>t-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(qQ,KQ,[jQ])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;this.registerMarkUniformValue("uInwardStroke",e.inwardStroke,t=>!!t),this.registerMarkUniformValue("uGradientStrength",e.fillGradientStrength),this.registerMarkUniformValue("uMinPickingSize",e.minPickingSize)}updateGraphicsData(){const e=this.unitView.getCollector();if(!e){console.debug("No collector");return}const t=e.getItemCount(),r=new TQ({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(t,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}#t(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.#e()*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const t=this.sampledSemanticScores;return ph(t,e)}}else return-1}prepareRender(e){const t=super.prepareRender(e);return t.push(()=>{ms(this.markUniformInfo,{uScaleFactor:this.#t(),uSemanticThreshold:this.getSemanticThreshold()}),this.markUniformsAltered=!0}),t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>sr(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){const t=this.gl;return this.createRenderCallback((r,i)=>{i&&pa(t,this.vertexArrayInfo,t.POINTS,i,r)},e)}}const $Q="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}",eD="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;flat in vec4 vColor;flat in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}",tD=`layout(std140)uniform Mark{uniform mediump float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;uniform mediump float uStrokeDashOffset;
486
460
  #pragma markUniforms
487
- };`;class ZR extends Gc{constructor(t){super(t),this.dashTextureSize=0,this.augmentDefaultProperties({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(t){if(!(t.x&&t.y&&t.x2&&t.y2))if(t.x&&t.x2&&!t.y)t.y={value:.5},t.y2=t.y;else if(t.y&&t.y2&&!t.x)t.x={value:.5},t.x2=t.x;else if(t.x&&!t.y)t.y={value:0},t.y2={value:1},t.x2=t.x;else if(t.y&&!t.x)t.x={value:0},t.x2={value:1},t.y2=t.y;else if(t.x&&t.y&&t.y2)t.x2=t.x;else if(t.y&&t.x&&t.x2)t.y2=t.y;else if(t.y&&t.x)if(!t.x2&&zt(t.y)&&t.y.type=="quantitative")t.x2=t.x,t.y2={datum:0};else if(!t.y2&&zt(t.x)&&t.x.type=="quantitative")t.y2=t.y,t.x2={datum:0};else throw new Error("A bug!");else throw new Error("At a minimum, either the x or y channel must be defined in the rule mark's encoding: "+JSON.stringify(t));return t}async initializeGraphics(){await super.initializeGraphics();const t=this.gl,e=$R(this.properties.strokeDash);this.dashTexture=Ic(t,{level:0,mag:t.NEAREST,min:t.NEAREST,internalFormat:t.R8,format:t.RED,src:e,height:1}),this.dashTextureSize=e.length,this.createAndLinkShaders(jR,WR,[XR])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;this.registerMarkUniformValue("uMinLength",t.minLength),this.registerMarkUniformValue("uStrokeCap",t.strokeCap??"butt",e=>["butt","square","round"].indexOf(e)),Ec(this.markUniformInfo,{uDashTextureSize:+this.dashTextureSize}),this.markUniformsAltered=!0}updateGraphicsData(){const t=this.unitView.getCollector();if(!t){console.debug("No collector");return}const e=t.getItemCount(),r=new kR({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(e,this.properties.minBufferSize||0)});r.addBatches(t.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(t){const e=super.prepareRender(t);return e.push(()=>this.bindOrSetMarkUniformBlock()),e.push(()=>Bi(this.programInfo,{uDashTexture:this.dashTexture})),e.push(()=>vi(this.gl,this.programInfo,this.vertexArrayInfo)),e}render(t){const e=this.gl;return this.createRenderCallback((r,i)=>Qf(e,this.vertexArrayInfo,e.TRIANGLE_STRIP,i,r),t)}}function $R(n){if(!n)return new Uint8Array(0);if(n.length==0||n.length%2||n.findIndex(s=>Math.round(s)!=s||s<1||s>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(n));const t=n.reduce((s,o)=>s+o),e=new Uint8Array(t);let r=!0,i=0;for(let s of n){for(;s;)e[i++]=r&&255||0,s--;r=!r}return e}const e6="flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;flat out float vGamma;const int SHAPE_ARC=0;const int SHAPE_DOME=1;const int SHAPE_DIAGONAL=2;const int SHAPE_LINE=3;const int ORIENT_VERTICAL=0;const int ORIENT_HORIZONTAL=1;float distanceFromLine(vec2 pointOnLine1,vec2 pointOnLine2,vec2 point){vec2 a=point-pointOnLine1;vec2 b=pointOnLine2-pointOnLine1;vec2 proj=dot(a,b)/dot(b,b)*b;return length(a-proj);}bool isInsideViewport(vec2 point,float marginFactor){vec2 margin=uViewportSize*vec2(marginFactor);return point.x>=-margin.x&&point.x<=uViewportSize.x+margin.x&&point.y>=-margin.y&&point.y<=uViewportSize.y+margin.y;}void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 p1,p2,p3,p4;vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()))*uViewportSize;vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()))*uViewportSize;if(uShape<=SHAPE_DOME){if(uShape==SHAPE_DOME){vec2 height=vec2(0.0);if(uOrient==ORIENT_VERTICAL){p1=vec2(min(a.x,b.x),b.y);p4=vec2(max(a.x,b.x),b.y);height=vec2(0.0,a.y-b.y);if(uClampApex){if(p4.x>0.0){p1.x=max(p1.x,-p4.x);}if(p1.x<uViewportSize.x){p4.x=min(p4.x,2.0*uViewportSize.x-p1.x);}}}else{p1=vec2(b.x,min(a.y,b.y));p4=vec2(b.x,max(a.y,b.y));height=vec2(a.x-b.x,0.0);if(uClampApex){if(p4.y>0.0){p1.y=max(p1.y,-p4.y);}if(p1.y<uViewportSize.y){p4.y=min(p4.y,2.0*uViewportSize.y-p1.y);}}}vec2 controlOffset=height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}if(uShape==SHAPE_ARC){p1=a;p4=b;vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float chordLength=length(chordVector);if(chordLength>uMaxChordLength){if(isInsideViewport(p1,2.0)){chordLength=uMaxChordLength;p4=p1+unitChordVector*uMaxChordLength;}else if(isInsideViewport(p4,2.0)){chordLength=uMaxChordLength;p1=p4-unitChordVector*uMaxChordLength;}}float height=max(chordLength/2.0*uArcHeightFactor,uMinArcHeight);vec2 controlOffset=chordNormal*height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}}else if(uShape==SHAPE_DIAGONAL){if(uOrient==ORIENT_VERTICAL){p1=a;p2=vec2(a.x,(a.y+b.y)/2.0);p3=vec2(b.x,(a.y+b.y)/2.0);p4=b;}else{p1=a;p2=vec2((a.x+b.x)/2.0,a.y);p3=vec2((a.x+b.x)/2.0,b.y);p4=b;}}else if(uShape==SHAPE_LINE){p1=a;p2=(a+b)/2.0;p3=p2;p4=b;}vec2 strip=vec2(float(gl_VertexID/2)/float(uSegmentBreaks),float(gl_VertexID % 2)-0.5);float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);float size=getScaled_size();if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}float paddedSize=uPickingEnabled? max(size,uMinPickingSize): size+pixelSize;vNormalLengthInPixels=strip.y*paddedSize;if(uShape==SHAPE_ARC&&uArcFadingDistance[0]>0.0&&uArcFadingDistance[1]>0.0&&(!uNoFadingOnPointSelection||!isPointSelected())){float d=distanceFromLine(p1,p4,p);float distanceOpacity=smoothstep(uArcFadingDistance[1],uArcFadingDistance[0],d);opacity*=distanceOpacity;if(distanceOpacity<=0.0){vNormalLengthInPixels=0.0;}}p+=normal*vNormalLengthInPixels;gl_Position=pixelsToNdc(p);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vSize=paddedSize;setupPicking();}",t6="flat in vec4 vColor;flat in float vSize;in float vNormalLengthInPixels;flat in float vGamma;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);opacity=pow(opacity,vGamma);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}",n6=`layout(std140)uniform Mark{uniform float uArcHeightFactor;uniform float uMinArcHeight;uniform float uMinPickingSize;uniform int uShape;uniform int uOrient;uniform bool uClampApex;uniform float uMaxChordLength;uniform vec2 uArcFadingDistance;uniform bool uNoFadingOnPointSelection;uniform int uSegmentBreaks;
461
+ };`;class nD extends Ts{constructor(e){super(e),this.dashTextureSize=0,this.augmentDefaultProperties({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&&gt(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&gt(e.x)&&e.x.type=="quantitative")e.y2=e.y,e.x2={datum:0};else throw new Error("A bug!");else throw new Error("At a minimum, either the x or y channel must be defined in the rule mark's encoding: "+JSON.stringify(e));return e}async initializeGraphics(){await super.initializeGraphics();const e=this.gl,t=rD(this.properties.strokeDash);this.dashTexture=ps(e,{level:0,mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:t,height:1}),this.dashTextureSize=t.length,this.createAndLinkShaders($Q,eD,[tD])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;this.registerMarkUniformValue("uMinLength",e.minLength),this.registerMarkUniformValue("uStrokeCap",e.strokeCap??"butt",t=>["butt","square","round"].indexOf(t)),ms(this.markUniformInfo,{uDashTextureSize:+this.dashTextureSize}),this.markUniformsAltered=!0}updateGraphicsData(){const e=this.unitView.getCollector();if(!e){console.debug("No collector");return}const t=e.getItemCount(),r=new NQ({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(t,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>ir(this.programInfo,{uDashTexture:this.dashTexture})),t.push(()=>sr(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){const t=this.gl;return this.createRenderCallback((r,i)=>pa(t,this.vertexArrayInfo,t.TRIANGLE_STRIP,i,r),e)}}function rD(n){if(!n)return new Uint8Array(0);if(n.length==0||n.length%2||n.findIndex(s=>Math.round(s)!=s||s<1||s>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(n));const e=n.reduce((s,o)=>s+o),t=new Uint8Array(e);let r=!0,i=0;for(let s of n){for(;s;)t[i++]=r&&255||0,s--;r=!r}return t}const iD="flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;flat out float vGamma;const int SHAPE_ARC=0;const int SHAPE_DOME=1;const int SHAPE_DIAGONAL=2;const int SHAPE_LINE=3;const int ORIENT_VERTICAL=0;const int ORIENT_HORIZONTAL=1;float distanceFromLine(vec2 pointOnLine1,vec2 pointOnLine2,vec2 point){vec2 a=point-pointOnLine1;vec2 b=pointOnLine2-pointOnLine1;vec2 proj=dot(a,b)/dot(b,b)*b;return length(a-proj);}bool isInsideViewport(vec2 point,float marginFactor){vec2 margin=uViewportSize*vec2(marginFactor);return point.x>=-margin.x&&point.x<=uViewportSize.x+margin.x&&point.y>=-margin.y&&point.y<=uViewportSize.y+margin.y;}void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 p1,p2,p3,p4;vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()))*uViewportSize;vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()))*uViewportSize;if(uShape<=SHAPE_DOME){if(uShape==SHAPE_DOME){vec2 height=vec2(0.0);if(uOrient==ORIENT_VERTICAL){p1=vec2(min(a.x,b.x),b.y);p4=vec2(max(a.x,b.x),b.y);height=vec2(0.0,a.y-b.y);if(uClampApex){if(p4.x>0.0){p1.x=max(p1.x,-p4.x);}if(p1.x<uViewportSize.x){p4.x=min(p4.x,2.0*uViewportSize.x-p1.x);}}}else{p1=vec2(b.x,min(a.y,b.y));p4=vec2(b.x,max(a.y,b.y));height=vec2(a.x-b.x,0.0);if(uClampApex){if(p4.y>0.0){p1.y=max(p1.y,-p4.y);}if(p1.y<uViewportSize.y){p4.y=min(p4.y,2.0*uViewportSize.y-p1.y);}}}vec2 controlOffset=height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}if(uShape==SHAPE_ARC){p1=a;p4=b;vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float chordLength=length(chordVector);if(chordLength>uMaxChordLength){if(isInsideViewport(p1,2.0)){chordLength=uMaxChordLength;p4=p1+unitChordVector*uMaxChordLength;}else if(isInsideViewport(p4,2.0)){chordLength=uMaxChordLength;p1=p4-unitChordVector*uMaxChordLength;}}float height=max(chordLength/2.0*uArcHeightFactor,uMinArcHeight);vec2 controlOffset=chordNormal*height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}}else if(uShape==SHAPE_DIAGONAL){if(uOrient==ORIENT_VERTICAL){p1=a;p2=vec2(a.x,(a.y+b.y)/2.0);p3=vec2(b.x,(a.y+b.y)/2.0);p4=b;}else{p1=a;p2=vec2((a.x+b.x)/2.0,a.y);p3=vec2((a.x+b.x)/2.0,b.y);p4=b;}}else if(uShape==SHAPE_LINE){p1=a;p2=(a+b)/2.0;p3=p2;p4=b;}vec2 strip=vec2(float(gl_VertexID/2)/float(uSegmentBreaks),float(gl_VertexID % 2)-0.5);float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);float size=getScaled_size();if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}float paddedSize=uPickingEnabled? max(size,uMinPickingSize): size+pixelSize;vNormalLengthInPixels=strip.y*paddedSize;if(uShape==SHAPE_ARC&&uArcFadingDistance[0]>0.0&&uArcFadingDistance[1]>0.0&&(!uNoFadingOnPointSelection||!isPointSelected())){float d=distanceFromLine(p1,p4,p);float distanceOpacity=smoothstep(uArcFadingDistance[1],uArcFadingDistance[0],d);opacity*=distanceOpacity;if(distanceOpacity<=0.0){vNormalLengthInPixels=0.0;}}p+=normal*vNormalLengthInPixels;gl_Position=pixelsToNdc(p);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vSize=paddedSize;setupPicking();}",sD="flat in vec4 vColor;flat in float vSize;in float vNormalLengthInPixels;flat in float vGamma;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);opacity=pow(opacity,vGamma);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}",oD=`layout(std140)uniform Mark{uniform float uArcHeightFactor;uniform float uMinArcHeight;uniform float uMinPickingSize;uniform int uShape;uniform int uOrient;uniform bool uClampApex;uniform float uMaxChordLength;uniform vec2 uArcFadingDistance;uniform bool uNoFadingOnPointSelection;uniform int uSegmentBreaks;
488
462
  #pragma markUniforms
489
- };`,r6=["arc","dome","diagonal","line"],i6=["vertical","horizontal"];class s6 extends Gc{constructor(t){super(t),this.augmentDefaultProperties({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,arcHeightFactor:1,minArcHeight:1.5,minPickingSize:3,clampApex:!1,maxChordLength:5e4,arcFadingDistance:!1,noFadingOnPointSelection:!0,linkShape:"arc",orient:"vertical"}),this._baseInstanceExt=this.gl.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")}get defaultHitTestMode(){return"endpoints"}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(t){return t.x2||(zt(t.x)?t.x2={datum:0}:t.x2=t.x),t.y2||(zt(t.y)?t.y2={datum:0}:t.y2=t.y),t}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(e6,t6,[n6])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;this.registerMarkUniformValue("uArcFadingDistance",t.arcFadingDistance,e=>e||[0,0]),this.registerMarkUniformValue("uArcHeightFactor",t.arcHeightFactor),this.registerMarkUniformValue("uMinArcHeight",t.minArcHeight),this.registerMarkUniformValue("uMinPickingSize",t.minPickingSize),this.registerMarkUniformValue("uShape",t.linkShape,e=>r6.indexOf(e)),this.registerMarkUniformValue("uOrient",t.orient,e=>i6.indexOf(e)),this.registerMarkUniformValue("uClampApex",t.clampApex,e=>!!e),this.registerMarkUniformValue("uMaxChordLength",t.maxChordLength),this.registerMarkUniformValue("uSegmentBreaks",t.segments,e=>e),this.registerMarkUniformValue("uNoFadingOnPointSelection",t.noFadingOnPointSelection,e=>!!e)}updateGraphicsData(){const t=this.unitView.getCollector();if(!t){console.debug("No collector");return}const e=t.getItemCount(),r=new RR({encoders:this.encoders,attributes:this.getAttributes(),numItems:e});r.addBatches(t.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([s,o])=>[s,{...o,data:void 0}])),this.updateBufferInfo(i)}prepareRender(t){const e=super.prepareRender(t);return e.push(()=>this.bindOrSetMarkUniformBlock()),this._baseInstanceExt?e.push(()=>vi(this.gl,this.programInfo,this.vertexArrayInfo)):e.push(()=>this.gl.bindVertexArray(null)),e}render(t){const e=this.gl,r=()=>(this.markUniformInfo.uniforms.uSegmentBreaks[0]+1)*2;return this._baseInstanceExt?this.createRenderCallback((i,s)=>{this._baseInstanceExt.drawArraysInstancedBaseInstanceWEBGL(e.TRIANGLE_STRIP,0,r(),s,i)},t):this.createRenderCallback((i,s)=>{for(const o of Object.entries(this.bufferInfo.attribs)){const[a,l]=o;l.buffer&&l.numComponents&&l.divisor&&(l.offset=i*this.arrays[a].numComponents*this.bytesPerElement.get(a))}vi(e,this.programInfo,this.bufferInfo),e.drawArraysInstanced(e.TRIANGLE_STRIP,0,r(),s)},t)}}const o6=`in mediump vec2 vertexCoord;in lowp vec2 textureCoord;in float width;out vec2 vTexCoord;out float vEdgeFadeOpacity;flat out vec4 vColor;flat out float vSlope;flat out float vGamma;struct RangeResult{float pos;float scale;};float minValue(vec4 v){return min(min(v.x,v.y),min(v.z,v.w));}float maxValue(vec4 v){return max(max(v.x,v.y),max(v.z,v.w));}/***All measures are in[0,1]*/RangeResult positionInsideRange(float a,float b,float width,float padding,int align,bool flush){float span=b-a;float paddedWidth=width+2.0*padding;if(a>1.0||b<0.0){return RangeResult(0.0,0.0);}float extra=max(0.0,span-paddedWidth);float pos;if(align==0){float centre=a+b;if(flush){float leftOver=max(0.0,paddedWidth-centre);centre+=min(leftOver,extra);float rightOver=max(0.0,paddedWidth+centre-2.0);centre-=min(rightOver,extra);}pos=centre/2.0;}else if(align<0){float edge=a;if(flush){float over=max(0.0,-edge);edge+=min(over,extra);}pos=edge+padding;}else{float edge=b;if(flush){float over=max(0.0,edge-1.0);edge-=min(over,extra);}pos=edge-padding;}float scale=clamp((span-padding)/paddedWidth,0.0,1.0);return RangeResult(pos,scale);}vec2 calculateRotatedDimensions(float width,mat2 rotationMatrix){vec2 a=abs(rotationMatrix*vec2(width/2.0,0.5));vec2 b=abs(rotationMatrix*vec2(width/2.0,-0.5));return vec2(max(a.x,b.x),max(a.y,b.y))*2.0;}ivec2 fixAlignForAngle(ivec2 align,float angleInDegrees){float a=mod(angleInDegrees+45.0,360.0);int x=align.x;int y=-align.y;if(a<90.0){return ivec2(x,y);}else if(a<180.0){return ivec2(y,-x);}else if(a<270.0){return ivec2(-x,y);}else{return ivec2(-y,x);}}void main(void){float opacity=getScaled_opacity()*uViewOpacity;vec2 size=vec2(getScaled_size());float x=getScaled_x();float y=getScaled_y();float scale=1.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);mat2 rotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);vec2 flushSize=calculateRotatedDimensions(width,rotationMatrix);
463
+ };`,aD=["arc","dome","diagonal","line"],cD=["vertical","horizontal"];class lD extends Ts{constructor(e){super(e),this.augmentDefaultProperties({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,arcHeightFactor:1,minArcHeight:1.5,minPickingSize:3,clampApex:!1,maxChordLength:5e4,arcFadingDistance:!1,noFadingOnPointSelection:!0,linkShape:"arc",orient:"vertical"}),this._baseInstanceExt=this.gl.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")}get defaultHitTestMode(){return"endpoints"}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){return e.x2||(gt(e.x)?e.x2={datum:0}:e.x2=e.x),e.y2||(gt(e.y)?e.y2={datum:0}:e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(iD,sD,[oD])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;this.registerMarkUniformValue("uArcFadingDistance",e.arcFadingDistance,t=>t||[0,0]),this.registerMarkUniformValue("uArcHeightFactor",e.arcHeightFactor),this.registerMarkUniformValue("uMinArcHeight",e.minArcHeight),this.registerMarkUniformValue("uMinPickingSize",e.minPickingSize),this.registerMarkUniformValue("uShape",e.linkShape,t=>aD.indexOf(t)),this.registerMarkUniformValue("uOrient",e.orient,t=>cD.indexOf(t)),this.registerMarkUniformValue("uClampApex",e.clampApex,t=>!!t),this.registerMarkUniformValue("uMaxChordLength",e.maxChordLength),this.registerMarkUniformValue("uSegmentBreaks",e.segments,t=>t),this.registerMarkUniformValue("uNoFadingOnPointSelection",e.noFadingOnPointSelection,t=>!!t)}updateGraphicsData(){const e=this.unitView.getCollector();if(!e){console.debug("No collector");return}const t=e.getItemCount(),r=new PQ({encoders:this.encoders,attributes:this.getAttributes(),numItems:t});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([s,o])=>[s,{...o,data:void 0}])),this.updateBufferInfo(i)}prepareRender(e){const t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),this._baseInstanceExt?t.push(()=>sr(this.gl,this.programInfo,this.vertexArrayInfo)):t.push(()=>this.gl.bindVertexArray(null)),t}render(e){const t=this.gl,r=()=>(this.markUniformInfo.uniforms.uSegmentBreaks[0]+1)*2;return this._baseInstanceExt?this.createRenderCallback((i,s)=>{this._baseInstanceExt.drawArraysInstancedBaseInstanceWEBGL(t.TRIANGLE_STRIP,0,r(),s,i)},e):this.createRenderCallback((i,s)=>{for(const o of Object.entries(this.bufferInfo.attribs)){const[a,l]=o;l.buffer&&l.numComponents&&l.divisor&&(l.offset=i*this.arrays[a].numComponents*this.bytesPerElement.get(a))}sr(t,this.programInfo,this.bufferInfo),t.drawArraysInstanced(t.TRIANGLE_STRIP,0,r(),s)},e)}}const uD=`in mediump vec2 vertexCoord;in lowp vec2 textureCoord;in float width;out vec2 vTexCoord;out float vEdgeFadeOpacity;flat out vec4 vColor;flat out float vSlope;flat out float vGamma;struct RangeResult{float pos;float scale;};float minValue(vec4 v){return min(min(v.x,v.y),min(v.z,v.w));}float maxValue(vec4 v){return max(max(v.x,v.y),max(v.z,v.w));}/***All measures are in[0,1]*/RangeResult positionInsideRange(float a,float b,float width,float padding,int align,bool flush){float span=b-a;float paddedWidth=width+2.0*padding;if(a>1.0||b<0.0){return RangeResult(0.0,0.0);}float extra=max(0.0,span-paddedWidth);float pos;if(align==0){float centre=a+b;if(flush){float leftOver=max(0.0,paddedWidth-centre);centre+=min(leftOver,extra);float rightOver=max(0.0,paddedWidth+centre-2.0);centre-=min(rightOver,extra);}pos=centre/2.0;}else if(align<0){float edge=a;if(flush){float over=max(0.0,-edge);edge+=min(over,extra);}pos=edge+padding;}else{float edge=b;if(flush){float over=max(0.0,edge-1.0);edge-=min(over,extra);}pos=edge-padding;}float scale=clamp((span-padding)/paddedWidth,0.0,1.0);return RangeResult(pos,scale);}vec2 calculateRotatedDimensions(float width,mat2 rotationMatrix){vec2 a=abs(rotationMatrix*vec2(width/2.0,0.5));vec2 b=abs(rotationMatrix*vec2(width/2.0,-0.5));return vec2(max(a.x,b.x),max(a.y,b.y))*2.0;}ivec2 fixAlignForAngle(ivec2 align,float angleInDegrees){float a=mod(angleInDegrees+45.0,360.0);int x=align.x;int y=-align.y;if(a<90.0){return ivec2(x,y);}else if(a<180.0){return ivec2(y,-x);}else if(a<270.0){return ivec2(-x,y);}else{return ivec2(-y,x);}}void main(void){float opacity=getScaled_opacity()*uViewOpacity;vec2 size=vec2(getScaled_size());float x=getScaled_x();float y=getScaled_y();float scale=1.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);mat2 rotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);vec2 flushSize=calculateRotatedDimensions(width,rotationMatrix);
490
464
  #if defined(x2_DEFINED) || defined(y2_DEFINED)
491
465
  ivec2 align=fixAlignForAngle(uAlign,angleInDegrees);
492
466
  #else
@@ -499,9 +473,9 @@ vec2 pos=applySampleFacet(vec2(x,y));
499
473
  #ifdef y2_DEFINED
500
474
  float y2=getScaled_y2();vec2 pos2=applySampleFacet(vec2(x,y2));if(uLogoLetter){size.y=(pos2.y-pos.y)*uViewportSize.y;pos.y+=(pos2.y-pos.y)/2.0;}else{RangeResult result=positionInsideRange(min(pos.y,pos2.y),max(pos.y,pos2.y),size.y*scale*flushSize.y/uViewportSize.y,uPaddingY/uViewportSize.y,align.y,uFlushY);pos.y=result.pos;scale*=result.scale;}
501
475
  #endif
502
- if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator*uDevicePixelRatio);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,a6="uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;flat in vec4 vColor;flat in float vSlope;flat in float vGamma;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}float getDist(vec2 uv){vec3 c=texture(uTexture,uv).rgb;return 1.0-median(c.r,c.g,c.b);}/***Calculates the super-sampled distance to the edge.*This is used to avoid aliasing when rendering small text,*as mip-mapping cannot be used here.*The distance is averaged over a grid of n x n samples.*/float getSuperDist(vec2 uv){vec2 dx=dFdx(uv);vec2 dy=dFdy(uv);float n=2.0;float sum=0.0;for(float x=0.5;x<n;x++){for(float y=0.5;y<n;y++){sum+=getDist(uv+x/n*dx+y/n*dy);}}return sum/(n*n);}void main(){float sigDist=getSuperDist(vTexCoord);float slope=vSlope;if(uLogoLetter){slope=0.7/length(vec2(dFdy(sigDist),dFdx(sigDist)));}float opa=clamp((sigDist-0.5)*slope+0.5,0.0,1.0);opa*=clamp(vEdgeFadeOpacity,0.0,1.0);opa=pow(opa,vGamma);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}",c6=`layout(std140)uniform Mark{uniform mediump float uSdfNumerator;uniform mediump vec2 uD;uniform mediump vec4 uViewportEdgeFadeWidth;uniform mediump vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;uniform lowp ivec2 uAlign;uniform mediump float uPaddingX;uniform bool uFlushX;uniform mediump float uPaddingY;uniform bool uFlushY;
476
+ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator*uDevicePixelRatio);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,fD="uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;flat in vec4 vColor;flat in float vSlope;flat in float vGamma;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}float getDist(vec2 uv){vec3 c=texture(uTexture,uv).rgb;return 1.0-median(c.r,c.g,c.b);}/***Calculates the super-sampled distance to the edge.*This is used to avoid aliasing when rendering small text,*as mip-mapping cannot be used here.*The distance is averaged over a grid of n x n samples.*/float getSuperDist(vec2 uv){vec2 dx=dFdx(uv);vec2 dy=dFdy(uv);float n=2.0;float sum=0.0;for(float x=0.5;x<n;x++){for(float y=0.5;y<n;y++){sum+=getDist(uv+x/n*dx+y/n*dy);}}return sum/(n*n);}void main(){float sigDist=getSuperDist(vTexCoord);float slope=vSlope;if(uLogoLetter){slope=0.7/length(vec2(dFdy(sigDist),dFdx(sigDist)));}float opa=clamp((sigDist-0.5)*slope+0.5,0.0,1.0);opa*=clamp(vEdgeFadeOpacity,0.0,1.0);opa=pow(opa,vGamma);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}",AD=`layout(std140)uniform Mark{uniform mediump float uSdfNumerator;uniform mediump vec2 uD;uniform mediump vec4 uViewportEdgeFadeWidth;uniform mediump vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;uniform lowp ivec2 uAlign;uniform mediump float uPaddingX;uniform bool uFlushX;uniform mediump float uPaddingY;uniform bool uFlushY;
503
477
  #pragma markUniforms
504
- };`,l6={left:-1,center:0,right:1},u6={top:-1,middle:0,bottom:1,alphabetic:1};class f6 extends Gc{constructor(t){super(t),this.augmentDefaultProperties({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?t.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):t.context.fontManager.getDefaultFont(),this.setupExprRefsNeedingGraphicsUpdate(["text","fitToBand","logoLetters"])}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(t){for(const e of Ei)this.properties.fitToBand&&b0(t,e);return t}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(o6,a6,[c6])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties,e=this.font.metrics.common.base*.35*(this.properties.logoLetters?.5:1);this.registerMarkUniformValue("uPaddingX",t.paddingX),this.registerMarkUniformValue("uPaddingY",t.paddingY),this.registerMarkUniformValue("uFlushX",t.flushX,r=>!!r),this.registerMarkUniformValue("uFlushY",t.flushY,r=>!!r),this.registerMarkUniformValue("uSqueeze",t.squeeze,r=>!!r),Ec(this.markUniformInfo,{uAlign:[l6[t.align],u6[t.baseline]],uD:[t.dx,-t.dy],uLogoLetter:!!t.logoLetters,uSdfNumerator:e,uViewportEdgeFadeWidth:[t.viewportEdgeFadeWidthTop,t.viewportEdgeFadeWidthRight,t.viewportEdgeFadeWidthBottom,t.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[t.viewportEdgeFadeDistanceTop,t.viewportEdgeFadeDistanceRight,t.viewportEdgeFadeDistanceBottom,t.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const t=this.unitView.getCollector();if(!t){console.debug("No collector");return}const e=t.getData(),r=this.encoding,i=this.encoders.text;let s=0;const o="format"in r.text?nt(r.text.format):c=>c;for(const c of e){const u=o(i(c)),f=we(u)?u:u===null?"":""+u;s+=f&&f.length||0}const a=new MR({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(s,this.properties.minBufferSize||1024)});a.addBatches(t.facetBatches);const l=a.toArrays();this.rangeMap.migrateEntries(l.rangeMap),this.updateBufferInfo(l)}prepareRender(t){const e=super.prepareRender(t);return e.push(()=>{Bi(this.programInfo,{uTexture:this.font.texture})}),e.push(()=>this.bindOrSetMarkUniformBlock()),e.push(()=>vi(this.gl,this.programInfo,this.vertexArrayInfo)),e}render(t){const e=this.gl;return this.createRenderCallback((r,i)=>Qf(e,this.vertexArrayInfo,e.TRIANGLES,i,r),t)}}const Gy=1;function x0(){let n=[0,1],t=[0,1],e=1,r=1,i=0,s=0,o=.5,a=0;const c=u=>(u+o-n[0])/e*r+t[0];return c.invert=u=>(u-t[0])/r*e+n[0]-o,c.domain=function(u){if(arguments.length){n=o3(u),e=n[1]-n[0];const f=n[0]===0&&n[0]===0;if(e<Gy&&!f){e=Gy;const h=(n[0]+n[1])/2;n[0]=h-e/2,n[1]=h+e/2}return c}else return n.slice()},c.range=function(u){return arguments.length?(t=[...u],r=t[1]-t[0],c):t},c.numberingOffset=function(u){return arguments.length?(a=u,c):a},c.padding=function(u){return arguments.length?(s=u,i=Math.min(1,u),c):i},c.paddingInner=function(u){return arguments.length?(i=Math.min(1,u),c):i},c.paddingOuter=function(u){return arguments.length?(s=u,c):s},c.align=function(u){return arguments.length?(o=Math.max(0,Math.min(1,u)),c):o},c.step=()=>r/e,c.bandwidth=()=>c.step(),c.ticks=u=>{const f=c.align(),h=c.numberingOffset();return zu(n[0]-f+h,n[1]-f+h,Math.min(u,Math.ceil(e))).filter(Number.isInteger).map(A=>A-a)},c.tickFormat=(u,f)=>{if(f)throw new Error("Index scale's tickFormat does not support a specifier!");const A=Ci(n[0],n[1],Math.min(u,Math.ceil(e)))<1e5?nt(","):nt(".3s");return d=>A(d+a)},c.copy=()=>x0().domain(n).range(t).paddingInner(i).paddingOuter(s).numberingOffset(a),c}const B0=nt(",d");function A6(n){return n.chrom+":"+B0(Math.floor(n.pos+1))}function h6(n,t){return n.chrom+":"+B0(Math.floor(n.pos+1))+"-"+(n.chrom!=t.chrom?t.chrom+":":"")+B0(Math.ceil(t.pos))}const zy={dm6:`chr3R 32079331
478
+ };`,hD={left:-1,center:0,right:1},dD={top:-1,middle:0,bottom:1,alphabetic:1};class gD extends Ts{constructor(e){super(e),this.augmentDefaultProperties({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(),this.setupExprRefsNeedingGraphicsUpdate(["text","fitToBand","logoLetters"])}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 t of tr)this.properties.fitToBand&&qu(e,t);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(uD,fD,[AD])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties,t=this.font.metrics.common.base*.35*(this.properties.logoLetters?.5:1);this.registerMarkUniformValue("uPaddingX",e.paddingX),this.registerMarkUniformValue("uPaddingY",e.paddingY),this.registerMarkUniformValue("uFlushX",e.flushX,r=>!!r),this.registerMarkUniformValue("uFlushY",e.flushY,r=>!!r),this.registerMarkUniformValue("uSqueeze",e.squeeze,r=>!!r),ms(this.markUniformInfo,{uAlign:[hD[e.align],dD[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSdfNumerator:t,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const e=this.unitView.getCollector();if(!e){console.debug("No collector");return}const t=e.getData(),r=this.encoding,i=this.encoders.text;let s=0;const o="format"in r.text?He(r.text.format):c=>c;for(const c of t){const u=o(i(c)),f=le(u)?u:u===null?"":""+u;s+=f&&f.length||0}const a=new LQ({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(s,this.properties.minBufferSize||1024)});a.addBatches(e.facetBatches);const l=a.toArrays();this.rangeMap.migrateEntries(l.rangeMap),this.updateBufferInfo(l)}prepareRender(e){const t=super.prepareRender(e);return t.push(()=>{ir(this.programInfo,{uTexture:this.font.texture})}),t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>sr(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){const t=this.gl;return this.createRenderCallback((r,i)=>pa(t,this.vertexArrayInfo,t.TRIANGLES,i,r),e)}}const Qp=1;function Ku(){let n=[0,1],e=[0,1],t=1,r=1,i=0,s=0,o=.5,a=0;const c=u=>(u+o-n[0])/t*r+e[0];return c.invert=u=>(u-e[0])/r*t+n[0]-o,c.domain=function(u){if(arguments.length){n=uI(u),t=n[1]-n[0];const f=n[0]===0&&n[0]===0;if(t<Qp&&!f){t=Qp;const h=(n[0]+n[1])/2;n[0]=h-t/2,n[1]=h+t/2}return c}else return n.slice()},c.range=function(u){return arguments.length?(e=[...u],r=e[1]-e[0],c):e},c.numberingOffset=function(u){return arguments.length?(a=u,c):a},c.padding=function(u){return arguments.length?(s=u,i=Math.min(1,u),c):i},c.paddingInner=function(u){return arguments.length?(i=Math.min(1,u),c):i},c.paddingOuter=function(u){return arguments.length?(s=u,c):s},c.align=function(u){return arguments.length?(o=Math.max(0,Math.min(1,u)),c):o},c.step=()=>r/t,c.bandwidth=()=>c.step(),c.ticks=u=>{const f=c.align(),h=c.numberingOffset();return ko(n[0]-f+h,n[1]-f+h,Math.min(u,Math.ceil(t))).filter(Number.isInteger).map(A=>A-a)},c.tickFormat=(u,f)=>{if(f)throw new Error("Index scale's tickFormat does not support a specifier!");const A=Xn(n[0],n[1],Math.min(u,Math.ceil(t)))<1e5?He(","):He(".3s");return d=>A(d+a)},c.copy=()=>Ku().domain(n).range(e).paddingInner(i).paddingOuter(s).numberingOffset(a),c}const ju=He(",d");function pD(n){return n.chrom+":"+ju(Math.floor(n.pos+1))}function mD(n,e){return n.chrom+":"+ju(Math.floor(n.pos+1))+"-"+(n.chrom!=e.chrom?e.chrom+":":"")+ju(Math.ceil(e.pos))}const Dp={dm6:`chr3R 32079331
505
479
  chr3L 28110227
506
480
  chr2R 25286936
507
481
  chrX 23542271
@@ -622,40 +596,24 @@ chr18 90702639
622
596
  chr19 61431566
623
597
  chrX 171031299
624
598
  chrY 91744698
625
- chrM 16299`};function d6(n){if(!(n in zy))throw new Error(`Unknown assembly: ${n}`);return zy[n].split(`
626
- `).map(t=>{const e=t.split(" ");return{name:e[0],size:parseInt(e[1])}})}const g6=/^([A-Za-z]+:)?\/\//;function Ti(n,t){if(t&&g6.test(t))return t;const e=typeof n=="function"?n():n;if(!e)return t;if(!t)return e;if(/[#?]/.test(e))throw new Error(`Cannot append to a url with query or hash. Append: ${t}, base: ${e}`);return Hy(e)+t}function Hy(n){const t=n.replace(/[^/]*$/,"");return t===""?void 0:t.endsWith("://")?n+"/":t}class p6{constructor(t){if(this.config={name:"custom",...t},"baseUrl"in t)throw new Error("The `baseUrl` property in genome config has been removed in GenomeSpy v0.52.0. Use `url` instead. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.");if(!v0(t))throw new Error("Not a genome configuration: "+JSON.stringify(t));if(this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,_y(this.config))this.setChromSizes(this.config.contigs);else if(!S0(this.config)){const e=d6(this.config.name);if(e)this.setChromSizes(e);else throw new Error(`Unknown genome: ${this.config.name}. Please provide contigs or a URL. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.`)}}get name(){return this.config.name}async load(t){if(S0(this.config))try{const e=Ti(t,this.config.url),r=await fetch(e);if(!r.ok)throw new Error(`${r.status} ${r.statusText}`);this.setChromSizes(m6(await r.text()))}catch(e){throw new Error(`Could not load chrom sizes: ${this.config.url}. Reason: ${e.message}`)}}hasChrPrefix(){return this.chromosomes.some(t=>t.name.startsWith("chr"))}setChromSizes(t){let e=0;this.startByIndex=[0];for(let r=0;r<t.length;r++){this.startByIndex.push(e);const i=t[r].size,s={...t[r],continuousStart:e,continuousEnd:e+i,continuousInterval:[e,e+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(s);const o=s.name.replace(/^chr/i,"");for(const a of["chr"+o,"CHR"+o,"Chr"+o,s.number,""+s.number,o,s.name])this.cumulativeChromPositions.set(a,e),this.chromosomesByName.set(a,s);e+=s.size}this.totalSize=e}getExtent(){return[0,this.totalSize]}toContinuous(t,e){let r=this.cumulativeChromPositions.get(t);if(r===void 0)throw new Error("Unknown chromosome/contig: "+t);return r+ +e}toChromosome(t){if(t>this.totalSize)return;t=Math.floor(t);const e=pr(this.startByIndex,t)-1;if(e>0&&e<=this.chromosomes.length)return this.chromosomes[e-1]}toChromosomal(t){const e=this.toChromosome(t);if(e)return{chrom:e.name,pos:Math.floor(t)-e.continuousStart}}getChromosome(t){return this.chromosomesByName.get(t)}formatInterval(t){return h6(...this.toChromosomalInterval(t))}formatLocus(t){const e=this.toChromosomal(t);if(e)return A6(e)}toChromosomalInterval(t){const e=this.toChromosomal(t[0]+.5),r=this.toChromosomal(t[1]-.5);return r.pos+=1,[e,r]}toContinuousInterval(t){var i;let[e,r]=t;return r||(r=e),[this.toContinuous(e.chrom,e.pos??0),this.toContinuous(r.chrom,r.pos??((i=this.chromosomesByName.get(r.chrom))==null?void 0:i.size))]}toDiscreteChromosomeIntervals(t){const e=t[0],r=t[1],i=[];if(e.chrom===r.chrom)i.push({chrom:e.chrom,startPos:e.pos,endPos:r.pos});else{const s=this.chromosomes.findIndex(a=>a.name===e.chrom),o=this.chromosomes.findIndex(a=>a.name===r.chrom);i.push({chrom:e.chrom,startPos:e.pos,endPos:this.chromosomes[s].size});for(let a=s+1;a<o;a++)i.push({chrom:this.chromosomes[a].name,startPos:0,endPos:this.chromosomes[a].size});i.push({chrom:r.chrom,startPos:0,endPos:r.pos})}return i}continuousToDiscreteChromosomeIntervals(t){return this.toDiscreteChromosomeIntervals([this.toChromosomal(t[0]),this.toChromosomal(t[1])])}parseInterval(t){const e=t.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(e){const r=e[1];if(e.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=e[3]||r,s=parseInt(e[2].replace(/,/g,"")),o=e[4]!==void 0?parseInt(e[4].replace(/,/g,"")):s;return[this.toContinuous(r,s-1),this.toContinuous(i,o)]}}}function m6(n){return Jv(n).map(([t,e])=>({name:t,size:parseInt(e)}))}function Vy(n){return tt(n)&&"chrom"in n}function C6(n){return n.every(Vy)}function v0(n){return tt(n)&&("name"in n||S0(n)||_y(n))}function S0(n){return v0(n)&&"url"in n}function _y(n){return v0(n)&&"contigs"in n}function w6(){const n=x0().numberingOffset(1);let t;n.genome=function(r){return arguments.length?(t=r,n):t},n.ticks=r=>{if(!t)return[];const i=n.domain(),s=n.numberingOffset(),[o,a]=[Math.max(i[0],0),Math.min(i[1],t.totalSize-1)].map(u=>t.toChromosome(u)),l=Math.max(1,Ci(i[0],i[1],r)),c=[];for(let u=o.index;u<=a.index;u++){const f=t.chromosomes[u],h=Math.max(f.continuousStart+l,i[0]-(i[0]-f.continuousStart)%l),A=Math.min(f.continuousEnd-l/4,i[1]+1);for(let d=h;d<=A;d+=l){const p=d-s;p>=i[0]&&p<i[1]&&c.push(p)}}return c},n.tickFormat=(r,i)=>{if(!t)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const s=n.domain(),o=s[1]-s[0],a=n.numberingOffset(),c=Ci(s[0],s[1],Math.min(r,Math.ceil(o)))<1e6?nt(","):nt(".3s"),u=f=>f-t.toChromosome(f).continuousStart;return f=>c(u(f)+a)};const e=n.copy;return n.copy=()=>{const r=e();let i=t;return r.genome=function(s){return arguments.length?(i=s,r):i},r.genome(t)},n}function y6(n){return n.type=="locus"}function I6(n,t){const e=zc(n);return e?e.toChromosomal(t):t}function E6(n,t){const e=zc(n);return e&&Vy(t)?e.toContinuous(t.chrom,t.pos):t}function b6(n,t){const e=zc(n);return e&&C6(t)?e.toContinuousInterval(t):t}function x6(n,t){const e=zc(n);return e?e.toChromosomalInterval(t):t}function B6(n){const t=zc(n);if(!t)throw new Error("No genome has been defined!");return t.getExtent()}function zc(n){if(n&&"toChromosomal"in n)return n;if(n&&"genome"in n)return n.genome()}/*!
627
- * Adapted from vega-encode:
628
- * https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
629
- *
630
- * Copyright (c) 2015-2018, University of Washington Interactive Data Lab
631
- * All rights reserved.
632
- *
633
- * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
634
- */function Yy(n,t,e){return ot(t)&&e!=null&&(t=Math.min(t,~~(Ga(n.domain())/e)||1)),tt(t)&&(t.step,t=t.interval),t}function Jy(n,t,e){var r=n.range(),i=Math.floor(r[0]),s=Math.ceil($t(r));if(i>s&&(r=s,s=i,i=r),t=t.filter(function(a){return a=n(a),i<=a&&a<=s}),e>0&&t.length>1){for(var o=[t[0],$t(t)];t.length>e&&t.length>=3;)t=t.filter(function(a,l){return!(l%2)});t.length<3&&(t=o)}return t}function v6(n,t){return n.bins?Jy(n,S6(n.bins,t)):n.ticks?n.ticks(t):n.domain()}function S6(n,t){var e=n.length,r=~~(e/(t||e));return r<2?n.slice():n.filter(function(i,s){return!(s%r)})}function Q6(n,t,e){var r=n.tickFormat?n.tickFormat(t,e):e?nt(e):String;if(hy(n.type)){var i=k6(e);r=n.bins?i:D6(r,i)}return r}function D6(n,t){return function(e){return n(e)?t(e):""}}function k6(n){var t=zs(n||",");if(t.precision==null){switch(t.precision=12,t.type){case"%":t.precision-=2;break;case"e":t.precision-=1;break}return F6(nt(t),nt(".1f")(1)[1])}else return nt(t)}function F6(n,t){return function(e){var r=n(e),i=r.indexOf(t),s,o;if(i<0)return r;for(s=R6(r,i),o=s<r.length?r.slice(s):"";--s>i;)if(r[s]!=="0"){++s;break}return r.slice(0,s)+o}}function R6(n,t){var e=n.lastIndexOf("e"),r;if(e>0)return e;for(e=n.length;--e>t;)if(r=n.charCodeAt(e),r>=48&&r<=57)return e+1}/*!
635
- * Adapted from vega-encode:
636
- * https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
637
- *
638
- * Copyright (c) 2015-2018, University of Washington Interactive Data Lab
639
- * All rights reserved.
640
- *
641
- * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
642
- */const M6="locus",N6="index";var T6=5;function P6(n){const t=n.type;return!n.bins&&(t===lo||t===Qc||t===Dc)}function qy(n){return Xe(n)&&![xn,N6,M6].includes(n)}function Ky(n){return n||{warn:(t,...e)=>console.warn(t,...e)}}var L6=Nu(["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 jy(n,t,e){e=Ky(e);for(const i in n)if(!L6[i]){if(i==="padding"&&qy(t.type))continue;Ot(t[i])?t[i](n[i]):e.warn("Unsupported scale property: "+i)}const r=Wy(t,n,e);r.domain&&t.domain(r.domain),r.applyOrdinalUnknown&&t.unknown(r.ordinalUnknown),Y6(t,n,_6(t,n,r.count))}function O6(n,t){const e=U6(n),r=he(e);if(!r)throw new Error("Unknown scale type: "+e);const i=r();return!n.domain&&Xe(i.type)&&(n.domain=[0,0]),jy(n,i,t),i}function U6(n){var t=n.type,e="",r;return t===xn?xn+"-"+lo:(G6(n)&&(r=n.rawDomain?n.rawDomain.length:n.domain?n.domain.length+ +(n.domainMid!=null):0,e=r===2?xn+"-":r===3?uo+"-":""),(e+t||lo).toLowerCase())}function G6(n){const t=n.type;return Xe(t)&&t!==sy&&t!==oy&&(n.scheme||n.range&&n.range.length&&n.range.every(we))}function z6(n){if(!n.copy)return n;const t=n.copy();return t.type==null&&n.type!=null&&(t.type=n.type),t}function Wy(n,t,e){if(!n.domain)return{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1};e=Ky(e);const r=z6(n);var i=H6(r,t.domainRaw,e);if(i>-1)return{domain:r.domain(),count:i,ordinalUnknown:r.type===kc&&t.domainImplicit?kf:void 0,applyOrdinalUnknown:!1};var s=t.domain,o=r.type,a=t.zero||t.zero===void 0&&P6(r),l,c;return s?(qy(o)&&t.padding&&s[0]!==$t(s)&&(s=V6(o,s,t.range,t.padding,t.exponent,t.constant)),(a||t.domainMin!=null||t.domainMax!=null||t.domainMid!=null)&&(l=(s=s.slice()).length-1||1,a&&(s[0]>0&&(s[0]=0),s[l]<0&&(s[l]=0)),t.domainMin!=null&&(s[0]=t.domainMin),t.domainMax!=null&&(s[l]=t.domainMax),t.domainMid!=null&&(c=t.domainMid,(c<s[0]||c>s[l])&&e.warn("Scale domainMid exceeds domain min or max.",c),s.splice(l,0,c))),r.domain(Xy(o,s,e)),t.nice&&r.nice&&r.nice(t.nice!==!0&&Yy(r,t.nice)||null),{domain:r.domain(),count:s.length,ordinalUnknown:o===kc&&t.domainImplicit?kf:void 0,applyOrdinalUnknown:o===kc}):{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1}}function H6(n,t,e){return t?(n.domain(Xy(n.type,t,e)),t.length):-1}function V6(n,t,e,r,i,s){e??(e=[0,1]);var o=Math.abs($t(e)-e[0]),a=o/(o-2*r),l=n===Rr?jp(t,null,a):n===Dc?fh(t,null,a,.5):n===Qc?fh(t,null,a,i||1):n===Vf?lv(t,null,a,s||1):Kp(t,null,a);return t=t.slice(),t[0]=l[0],t[t.length-1]=l[1],t}function Xy(n,t,e){if(hy(n)){var r=Math.abs(t.reduce(function(i,s){return i+(s<0?-1:s>0?1:0)},0));r!==t.length&&e.warn("Log scale domain includes zero: "+hh(t))}return t}function _6(n,t,e){let r=t.bins;if(r&&!Re(r)){const i=(r.start==null||r.stop==null)&&n.domain(),s=r.start==null?i[0]:r.start,o=r.stop==null?$t(i):r.stop,a=r.step;a||Le("Scale bins parameter missing step property."),r=Xa(s,o+a,a)}return r?n.bins=r:n.bins&&delete n.bins,n.type===d0&&(r?!t.domain&&!t.domainRaw&&(n.domain(r),e=r.length):n.bins=n.domain()),e}function Y6(n,t,e){var r=n.type,i=t.round||!1,s=t.range;if(t.rangeStep!=null)s=J6(r,t,e);else if(t.scheme&&(s=q6(r,t,e),Ot(s))){if(n.interpolator)return n.interpolator(s);Le(`Scale type ${r} does not support interpolating color schemes.`)}if(s&&Yf(r))return n.interpolator(Jf(Q0(s,t.reverse),t.interpolate,t.interpolateGamma));s&&t.interpolate&&n.interpolate?n.interpolate(dy(t.interpolate,t.interpolateGamma)):Ot(n.round)?n.round(i):Ot(n.rangeRound)&&n.interpolate(i?vc:kr),s&&n.range(Q0(s,t.reverse))}function J6(n,t,e){n!==ly&&n!==h0&&Le("Only band and point scales support rangeStep.");var r=(t.paddingOuter!=null?t.paddingOuter:t.padding)||0,i=n===h0?1:(t.paddingInner!=null?t.paddingInner:t.padding)||0;return[0,t.rangeStep*f0(e,i,r)]}function q6(n,t,e){var r=t.schemeExtent,i,s;return Re(t.scheme)?s=Jf(t.scheme,t.interpolate,t.interpolateGamma):(i=t.scheme.toLowerCase(),s=p0(i),s||Le(`Unrecognized scheme name: ${t.scheme}`)),e=n===cy?e+1:n===d0?e-1:n===A0||n===ay?+t.schemeCount||T6:e,Yf(n)?Zy(s,r,t.reverse):Ot(s)?$F(Zy(s,r),e):n===kc?s:s.slice(0,e)}function Zy(n,t,e){return Ot(n)&&(t||e)?ZF(n,Q0(t||[0,1],e)):n}function Q0(n,t){return t?n.slice().reverse():n}class K6{constructor({getParamRuntime:t,onRangeChange:e,onDomainChange:r,getGenomeStore:i}){v(this,qt);v(this,kn);v(this,Jr,new Set);v(this,xl);v(this,Bl);v(this,vl);v(this,Jo);v(this,qo,0);Q(this,xl,t),Q(this,Bl,e),Q(this,vl,r),Q(this,Jo,i)}get scale(){return g(this,kn)}getLocusGenome(){var r;const t=(r=g(this,Jo))==null?void 0:r.call(this),e=t==null?void 0:t.getGenome();if(!e)throw new Error("No genome has been defined!");return e}createScale(t){const e=O6({...F(this,qt,hp).call(this,t),range:void 0});return e.props=t,"unknown"in e&&e.unknown(null),Q(this,kn,e),F(this,qt,gB).call(this,t),F(this,qt,dp).call(this),F(this,qt,pB).call(this),g(this,kn)}reconfigureScale(t){const e=g(this,kn);!e||e.type=="null"||(jy({...F(this,qt,hp).call(this,t),range:void 0},e),e.props=t,F(this,qt,dp).call(this))}withDomainNotificationsSuppressed(t){Q(this,qo,g(this,qo)+1);try{t()}finally{Q(this,qo,g(this,qo)-1)}}dispose(){g(this,Jr).forEach(t=>t.invalidate()),g(this,Jr).clear()}}kn=new WeakMap,Jr=new WeakMap,xl=new WeakMap,Bl=new WeakMap,vl=new WeakMap,Jo=new WeakMap,qo=new WeakMap,qt=new WeakSet,gB=function(t){var s;const e=g(this,kn);if(!e||!y6(e))return;const r=(s=g(this,Jo))==null?void 0:s.call(this),i=r==null?void 0:r.getGenome(t.assembly);if(!i)throw new Error("No genome has been defined!");e.genome(i)},hp=function(t){const e=t,{assembly:r,domainIndexer:i,...s}=e;return s},dp=function(){const t=g(this,kn);if(!t)return;const e=t.props;g(this,Jr).forEach(s=>s.invalidate()),g(this,Jr).clear();const r=W6({range:e.range,reverse:e.reverse,createExpression:s=>g(this,xl).call(this).createExpression(s),registerExpr:s=>g(this,Jr).add(s)});if(!r)return;if("values"in r){t.range(r.values);return}const i=()=>t.range(r.evaluate());r.setup(i),i()},pB=function(){const t=g(this,kn);if(!t)return;const e=t.range,r=t.domain,i=()=>{var o;return(o=g(this,Bl))==null?void 0:o.call(this)};j6(t,{onRangeChange:i,onDomainChange:()=>{var o;g(this,qo)>0||(o=g(this,vl))==null||o.call(this)},range:e,domain:r}),i()};function j6(n,{onRangeChange:t,onDomainChange:e,range:r,domain:i}){typeof r=="function"&&(n.range=(function(s){if(arguments.length)r(s),t==null||t();else return r()})),typeof i=="function"&&(n.domain=(function(s){if(arguments.length)i(s),e==null||e();else return i()}))}function W6({range:n,reverse:t,createExpression:e,registerExpr:r}){if(!n||!Re(n))return null;const i=(s,o)=>o?s.slice().reverse():s;if(n.some(Me)){let s;return{dynamic:!0,evaluate:()=>i(s.map(l=>l()),t),setup:l=>{s=n.map(c=>{if(Me(c)){const u=e(c.expr);return u.subscribe(l),r(u),()=>u(null)}return()=>c})}}}return{dynamic:!1,values:i(n,t)}}function Xf(n,t,e){if(e=e||[],n.some(o=>o===null)){if(n.every(o=>o===null))return null;throw console.warn(n),new Error("Cannot merge objects with nulls!")}const r={},i=(o,a)=>o===a||ho(o)&&ho(a)||ho(o)&&a===!0||o===!0&&tt(a)||Array.isArray(o)&&Array.isArray(a)&&o.length===a.length&&o.every((l,c)=>l===a[c]),s=o=>{for(let a in o){const l=o[a];if(!e.includes(a)&&l!==void 0)if(r[a]!==void 0&&!i(r[a],l))console.warn(`Conflicting property ${a} of ${t}: (${JSON.stringify(r[a])} and ${JSON.stringify(o[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(ho(c))ho(l)&&(r[a]=Xf([c,l],a));else if(ho(l)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=Xf([{},l],a)}else r[a]=l}}};for(const o of n)s(o);return r}function ho(n){return tt(n)&&!Array.isArray(n)}const $y="quantitative",e2="ordinal",t2="nominal",Hc="locus",n2="index";function X6(n,t,e){const r={};return e&&(r.zero=!1),dc(n)?r.nice=!e:yr(n)?r.scheme=t==t2?"tableau10":t==e2?"blues":"viridis":rf(n)?r.range=n=="shape"?["circle","square","triangle-up","cross","diamond"]:[]:n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}function Z6(n,t){if(t==n2||t==Hc){if(jh(n))return t;throw new Error(n+" does not support "+t+" data type. Only positional channels do.")}const e={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"],sample:["null",void 0,void 0]},i=["sample"].includes(n)?"null":e[n]?e[n][[t2,e2,$y].indexOf(t)]:t==$y?"linear":"ordinal";if(i===void 0)throw new Error('Channel "'+n+'" is not compatible with "'+t+'" data type. Use of a proper scale may be needed.');return i}function $6(n,t){dc(t)&&n.type!=="ordinal"&&(n.range=[0,1]),t=="opacity"&&Xe(n.type)&&(n.clamp=!0)}function e5({channel:n,dataType:t,members:e,isExplicitDomain:r}){const i=Array.from(e).map(a=>a.channelDef.scale).filter(a=>a!==void 0),s=Xf(i,"scale",["domain"]);if(s===null||s.type=="null")return{type:"null"};const o={...X6(n,t,r),...s};return o.type||(o.type=Z6(n,t)),n=="y"&&_n(o.type)&&o.reverse==null&&(o.reverse=!0),o.range&&o.scheme&&delete o.scheme,!("zoom"in o)&&[n2,Hc].includes(o.type)&&(o.zoom=!0),$6(o,n),o}class Vc extends Array{constructor(){super(),this.type=void 0}extend(t){return this}extendAll(t){if(t instanceof Vc&&t.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${t.type}`);for(const e of t)this.extend(e);return this}extendAllWithAccessor(t,e){for(const r of t)this.extend(e(r));return this}}class D0 extends Vc{constructor(){super(),this.type="quantitative"}extend(t){return t==null||Number.isNaN(t)?this:(t=+t,this.length?t<this[0]?this[0]=t:t>this[1]&&(this[1]=t):(this.push(t),this.push(t)),this)}}class r2 extends Vc{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(t){return t==null||Number.isNaN(t)?this:(this.uniqueValues.has(t)||(this.uniqueValues.add(t),this.push(t)),this)}}class k0 extends r2{constructor(){super(),this.type="nominal"}}class t5 extends Vc{constructor(t){super();let e=0;for(let r=1;r<t.length;r++)e+=Math.sign(t[r]-t[r-1]);if(Math.abs(e)!=t.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(t));t.forEach(r=>this.push(r))}extend(t){if(this.includes(t))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const i2={quantitative:D0,index:D0,locus:D0,nominal:k0,ordinal:r2};function Zf(n,t){if(n=="quantitative"&&n5(t)){const e=new t5(t);return e.type=n,e}else if(i2[n]){const e=new i2[n];return e.type=n,t&&e.extendAll(t),e}throw new Error("Unknown type: "+n)}function n5(n){return n&&n.length>0&&n.length!=2&&n.every(t=>typeof t=="number")}class r5{constructor({getMembers:t,getDataMembers:e,getType:r,getLocusExtent:i,fromComplexInterval:s}){v(this,YA);v(this,Sl);v(this,Ql);v(this,Ko);v(this,Dl);v(this,kl);v(this,is);v(this,Fl);v(this,jo,!0);v(this,Rl,new WeakMap);Q(this,Sl,t),Q(this,Ql,e??t),Q(this,Ko,r),Q(this,Dl,i),Q(this,kl,s)}get initialDomainSnapshot(){return g(this,is)}hasConfiguredDomain(){return!!this.getConfiguredDomain()}invalidateConfiguredDomain(){Q(this,jo,!0)}getConfiguredOrDefaultDomain(t=!1){return this.getConfiguredDomain()??o5(g(this,Ko).call(this),g(this,Dl),t?this.getDataDomain():void 0)}getConfiguredDomain(){if(!g(this,jo))return g(this,Fl);const t=i5(g(this,Sl).call(this),g(this,kl));return Q(this,Fl,t),Q(this,jo,!1),t}getDataDomain(){return s5(g(this,Ql).call(this),g(this,Ko),t=>F(this,YA,mB).call(this,t))}captureInitialDomain(t,e){if(!g(this,is)&&Xe(t.type)){const r=t.domain();Ga(r)>0&&Q(this,is,r)}return e?!1:(Q(this,is,t.domain()),!0)}}Sl=new WeakMap,Ql=new WeakMap,Ko=new WeakMap,Dl=new WeakMap,kl=new WeakMap,is=new WeakMap,Fl=new WeakMap,jo=new WeakMap,Rl=new WeakMap,YA=new WeakSet,mB=function(t){const e=g(this,Rl).get(t);if(e)return e;const r=t.view.mark.encoders;if(!r)return[];const i=r[t.channel];if(!i)return[];const s=i.accessors??[];if(s.length===0)return[];const o=s.filter(m1).filter(a=>!a.channelDef.domainInert);return g(this,Rl).set(t,o),o};function i5(n,t){const e=Array.from(n).filter(r=>r.contributesToDomain).map(r=>r.channelDef).filter(r=>{var i;return(i=r.scale)==null?void 0:i.domain}).map(r=>Zf(r.type,t(r.scale.domain)));if(e.length>0)return e.reduce((r,i)=>r.extendAll(i))}function s5(n,t,e){const r=t(),i=new Map;for(const o of n){if(!o.contributesToDomain)continue;const a=e(o);if(a.length===0)continue;const l=o.view.getCollector();for(const c of a){const u=w1(c,r),f=l??null;let h=i.get(f);if(h||(h=new Map,i.set(f,h)),h.has(u))continue;let A;if(l)A=l.getDomain(u,r,c);else if(c.constant)A=Zf(r),A.extend(c({}));else continue;h.set(u,A)}}if(i.size===0)return;const s=Zf(r);for(const o of i.values())for(const a of o.values())s.extendAll(a);return s}function o5(n,t,e){return n==Hc?t():e??[]}function a5(n){return((n*=2)<=1?n*n*n:(n-=2)*n*n+2)/2}function c5(n,t,e){return n*Math.pow(t/n,e)}const l5=n=>new Promise(t=>setTimeout(t,n));function u5(){return{canceled:!1}}function f5(n){const t=n.requestAnimationFrame||window.requestAnimationFrame,e=n.signal,r=n.cancelToken,i=()=>new Promise((s,o)=>{if(r!=null&&r.canceled)return s();if(e!=null&&e.aborted)return o("aborted");const a=performance.now(),l=a+(n.duration||1e3),c=typeof n.from=="number"?n.from:0,u=typeof n.to=="number"?n.to:1,f=n.easingFunction||(C=>C),h=C=>(C-a)/(l-a),A=C=>C*(u-c)+c,d=C=>Math.max(0,Math.min(1,C)),p=C=>{if(r!=null&&r.canceled){s();return}e!=null&&e.aborted?o("aborted"):(n.onUpdate(A(f(d(h(C))))),C<l?t(p):(n.onUpdate(A(f(1))),s()))};t(p)});return n.delay?r!=null&&r.canceled?Promise.resolve():e!=null&&e.aborted?Promise.reject("aborted"):l5(n.delay).then(i):i()}class A5{constructor({getScale:t,getAnimator:e,getInitialDomainSnapshot:r,getResetDomain:i,fromComplexInterval:s,getGenomeExtent:o}){v(this,Pl);v(this,Kt);v(this,Ml);v(this,Nl);v(this,Wo);v(this,Xo);v(this,Tl);v(this,Zn,null);Q(this,Kt,t),Q(this,Ml,e),Q(this,Nl,r),Q(this,Wo,i),Q(this,Xo,s),Q(this,Tl,o)}getZoomExtent(){const t=g(this,Kt).call(this),e=t.props.zoom;return h5(t,e,g(this,Xo),g(this,Tl),g(this,Nl))}isZoomable(){return this.isZoomingSupported()&&!!g(this,Kt).call(this).props.zoom}isZoomingSupported(){const t=g(this,Kt).call(this).type;return Xe(t)&&!_n(t)}getDomainChangeAction(t,e){return Js(e,t)?"none":this.isZoomable()?"restore":this.isZoomingSupported()?"animate":"notify"}isZoomed(){return this.isZoomingSupported()&&Js(g(this,Wo).call(this),g(this,Kt).call(this).domain())}zoom(t,e,r){if(!this.isZoomingSupported())return!1;const i=g(this,Kt).call(this),s=i.domain();let o=d5(i,s,t,e,r);const a=this.getZoomExtent();return o=uv(o,a[0],a[1]),[0,1].some(l=>o[l]!=s[l])?(i.domain(o),!0):!1}async zoomTo(t,e=!1){if(Ua(e)&&(e=e?700:0),!this.isZoomingSupported())throw new Error("Not a zoomable scale!");const r=g(this,Xo).call(this,t),i=g(this,Ml).call(this),s=g(this,Kt).call(this),o=s.domain();if(e>0&&o.length==2){const a=o[1]-o[0],l=r[1]-r[0],c=o[0]+a/2,u=r[0]+l/2,f=o[0]==r[0],h=o[1]==r[1];F(this,Pl,gp).call(this);const A=u5();Q(this,Zn,A),await i.transition({duration:e,easingFunction:a5,cancelToken:A,onUpdate:d=>{const p=c5(a,l,d),C=a==l?d:(a-p)/(a-l),m=C*u+(1-C)*c,y=[f?o[0]:m-p/2,h?o[1]:m+p/2];s.domain(y)}}),g(this,Zn)===A&&Q(this,Zn,null),s.domain(r)}else F(this,Pl,gp).call(this),s.domain(r),i==null||i.requestRender()}resetZoom(){if(!this.isZoomingSupported())throw new Error("Not a zoomable scale!");const t=g(this,Kt).call(this),e=t.domain(),r=g(this,Wo).call(this);return[0,1].some(i=>r[i]!=e[i])?(t.domain(r),!0):!1}getZoomLevel(){return this.isZoomable()?Ga(this.getZoomExtent())/Ga(g(this,Kt).call(this).domain()):1}}Kt=new WeakMap,Ml=new WeakMap,Nl=new WeakMap,Wo=new WeakMap,Xo=new WeakMap,Tl=new WeakMap,Zn=new WeakMap,Pl=new WeakSet,gp=function(){g(this,Zn)&&(g(this,Zn).canceled=!0,Q(this,Zn,null))};function h5(n,t,e,r,i){return g5(t)&&Re(t.extent)?e(t.extent):t&&n.props.type=="locus"?r():i()}function d5(n,t,e,r,i){let s=[...t],o=n.invert(r);switch(n.props.reverse&&(i=-i),"align"in n&&(o+=n.align()),n.type){case"linear":case"index":case"locus":s=ov(s,i||0),s=Kp(s,o,e);break;case"log":s=av(s,i||0),s=jp(s,o,e);break;case"pow":case"sqrt":{const a=n;s=cv(s,i||0,a.exponent()),s=fh(s,o,e,a.exponent());break}default:throw new Error("Zooming is not implemented for: "+n.type)}return s}function g5(n){return tt(n)}he("index",x0,["continuous"]),he("locus",w6,["continuous"]),he("null",m0,[]);class p5{constructor(t){v(this,K);v(this,ln,new Set);v(this,Zo,new Set);v(this,qr,{domain:new Set,range:new Set});v(this,Te);v(this,Mt);v(this,jt);v(this,ss);v(this,Ll,!1);this.channel=t,this.type=null,this.name=void 0,Q(this,Mt,new r5({getMembers:()=>F(this,K,mp).call(this),getDataMembers:()=>F(this,K,mp).call(this,g(this,Zo)),getType:()=>this.type,getLocusExtent:()=>F(this,K,wp).call(this),fromComplexInterval:this.fromComplexInterval.bind(this)})),Q(this,Te,new K6({getParamRuntime:()=>g(this,K,pp).paramRuntime,onRangeChange:()=>F(this,K,La).call(this,"range"),onDomainChange:()=>F(this,K,La).call(this,"domain"),getGenomeStore:()=>g(this,K,Cp).genomeStore})),Q(this,jt,new A5({getScale:()=>this.getScale(),getAnimator:()=>g(this,K,Cp).animator,getInitialDomainSnapshot:()=>g(this,Mt).initialDomainSnapshot,getResetDomain:()=>g(this,Mt).getConfiguredOrDefaultDomain(),fromComplexInterval:this.fromComplexInterval.bind(this),getGenomeExtent:()=>F(this,K,wp).call(this)}))}get zoomExtent(){return(g(this,Te).scale&&Xe(g(this,Te).scale.type)&&g(this,jt).getZoomExtent())??[-1/0,1/0]}addEventListener(t,e){g(this,qr)[t].add(e)}removeEventListener(t,e){g(this,qr)[t].delete(e)}registerMember(t){return F(this,K,CB).call(this,t),()=>{const e=g(this,ln).delete(t);return e&&(g(this,Zo).delete(t),g(this,Mt).invalidateConfiguredDomain()),e&&g(this,ln).size===0}}dispose(){g(this,qr).domain.clear(),g(this,qr).range.clear(),g(this,Te).dispose()}registerCollectorSubscriptions(t,e){const r=new Set;for(const o of e)o.channelDef.domainInert||r.add(w1(o,this.type));if(r.size===0)return()=>{};const i=()=>{this.reconfigureDomain()},s=[];for(const o of r)s.push(t.subscribeDomainChanges(o,i));return()=>{for(const o of s)o()}}reconfigure(){g(this,Mt).invalidateConfiguredDomain();const t=F(this,K,Ip).call(this,!0);t&&(F(this,K,Ep).call(this,t,(e,r)=>g(this,Te).reconfigureScale(r)),F(this,K,bp).call(this,t))}reconfigureDomain(){const t=F(this,K,Ip).call(this,!0,!0);if(!t)return;const{domainConfig:e,targetDomain:r}=t,i=r!=null&&Js(r,t.scale.domain());r!=null&&!i&&F(this,K,Ep).call(this,t,s=>{s.domain(r),e.applyOrdinalUnknown&&s.unknown(e.ordinalUnknown)}),F(this,K,bp).call(this,t)}get scale(){if(g(this,Te).scale)return g(this,Te).scale;throw new Error("ScaleResolution.scale accessed before initialization. Call initializeScale().")}getScale(){return g(this,Te).scale??this.initializeScale()}initializeScale(){if(g(this,Te).scale)return g(this,Te).scale;const t=F(this,K,rh).call(this);return g(this,Te).createScale(t)}getDomain(){return this.getScale().domain()}getDataDomain(){return g(this,Mt).getDataDomain()}getComplexDomain(){return x6(F(this,K,Pa).call(this),this.getDomain())}isZoomed(){return g(this,jt).isZoomed()}isZoomable(){return g(this,jt).isZoomable()}zoom(t,e,r){return g(this,jt).zoom(t,e,r)}async zoomTo(t,e=!1){return g(this,jt).zoomTo(t,e)}resetZoom(){return g(this,jt).resetZoom()}getZoomLevel(){return g(this,jt).getZoomLevel()}getAxisLength(){if(this.channel!=="x"&&this.channel!=="y")throw new Error("Axis length is only defined for x and y channels!");const t=Array.from(g(this,ln)).map(e=>{var r;return(r=e.view.coords)==null?void 0:r[this.channel==="x"?"width":"height"]}).filter(e=>e>0);return t.length?t.reduce((e,r)=>Math.min(e,r),1e4):0}invertToComplex(t){const e=this.getScale();if("invert"in e){const r=e.invert(t);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(t){return I6(F(this,K,Pa).call(this),t)}fromComplex(t){return E6(F(this,K,Pa).call(this),t)}fromComplexInterval(t){return this.type==Hc?b6(F(this,K,Pa).call(this),t):t}}ln=new WeakMap,Zo=new WeakMap,qr=new WeakMap,Te=new WeakMap,Mt=new WeakMap,jt=new WeakMap,ss=new WeakMap,Ll=new WeakMap,K=new WeakSet,pp=function(){const t=g(this,ln).values().next().value;if(!t)throw new Error("ScaleResolution has no members!");return t.view},mp=function(t=g(this,ln)){var r,i;const e=new Set;for(const s of t){const o=s.view;o.isConfiguredVisible()&&(!o.isDataInitialized()&&!((i=(r=s.channelDef)==null?void 0:r.scale)!=null&&i.domain)||e.add(s))}return e},Cp=function(){return g(this,K,pp).context},wp=function(){return B6(F(this,K,Pa).call(this))},Pa=function(){if(this.type===Hc)return g(this,Te).scale??g(this,Te).getLocusGenome()},La=function(t){for(const e of g(this,qr)[t].values())e({type:t,scaleResolution:this})},CB=function(t){var a;const{channel:e,channelDef:r}=t,i=r.type==null&&this.type;if(e!="sample"&&!r.type&&!Wh(e)&&!i)throw new Error(`The "type" property must be defined in channel definition: "${e}": ${JSON.stringify(r)}. Must be one of: "quantitative", "ordinal", "nominal", "locus", "index"`);const s=e=="sample"?"nominal":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(!i){if(!this.type)this.type=s;else if(s!==this.type&&!Wh(e))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${s}. Use "resolve: independent" for channel ${this.channel}`)}g(this,ln).add(t),t.contributesToDomain&&g(this,Zo).add(t),g(this,Mt).invalidateConfiguredDomain()},wB=function(){for(const t of g(this,ln))if(t.view.hasRendered())return!0;return!1},yp=function(){return g(this,Mt).hasConfiguredDomain()},yB=function(){const t=g(this,Te).scale;if(!t)return!1;const e=t.domain();return Xe(t.type)?e.length>2||e.length==2&&(e[0]!==0||e[1]!==0):e.length>0},IB=function(){return e5({channel:this.channel,dataType:this.type,members:g(this,ln),isExplicitDomain:F(this,K,yp).call(this)})},rh=function(t=!1){const e=F(this,K,IB).call(this);if(e===null||e.type=="null")return{type:"null"};const r=g(this,Mt).getConfiguredOrDefaultDomain(t);if(_n(e.type)){const i=F(this,K,yp).call(this),s=F(this,K,EB).call(this,i);if(r!=null){if(i&&s.domain().length>0&&!Js(s.domain(),r))return Q(this,ss,void 0),F(this,K,rh).call(this,t);s.addAll(r);const o=new Set(r),a=s.domain().filter(l=>o.has(l));e.domain=a.length>0?a:new k0}else{const o=s.domain();e.domain=o.length>0?o:new k0}e.domainIndexer=s}else r&&r.length>0&&(e.domain=r);return!e.domain&&e.domainMid!==void 0&&(e.domain=[e.domainMin??0,e.domainMax??1]),e},EB=function(t){return(!g(this,ss)||g(this,Ll)!==t)&&(Q(this,ss,Fy()),Q(this,Ll,t)),g(this,ss)},Ip=function(t,e=!1){const r=g(this,Te).scale;if(!r||r.type=="null")return;const i={scale:r,props:F(this,K,rh).call(this,t),previousDomain:r.domain(),domainWasInitialized:F(this,K,yB).call(this)};if(e){const s=Wy(r,i.props);return{...i,domainConfig:s,targetDomain:s.domain}}return i},Ep=function(t,e){g(this,Te).withDomainNotificationsSuppressed(()=>{e(t.scale,t.props)})},bp=function(t){const{scale:e,previousDomain:r,domainWasInitialized:i}=t;if(g(this,Mt).captureInitialDomain(e,i)){F(this,K,La).call(this,"domain");return}const s=e.domain(),o=g(this,jt).getDomainChangeAction(r,s);o==="restore"?g(this,Te).withDomainNotificationsSuppressed(()=>{e.domain(r)}):o==="animate"?F(this,K,wB).call(this)?(g(this,Te).withDomainNotificationsSuppressed(()=>{e.domain(r)}),this.zoomTo(s,500)):F(this,K,La).call(this,"domain"):o==="notify"&&F(this,K,La).call(this,"domain")};function F0(...n){for(const t of n)if(t!==void 0)return t}class m5{constructor(t){v(this,JA);v(this,Fn,new Set);this.channel=t}get scaleResolution(){const t=g(this,Fn).values().next().value;return t==null?void 0:t.view.getScaleResolution(this.channel)}registerMember(t){return F(this,JA,bB).call(this,t),()=>this.removeMember(t)&&g(this,Fn).size===0}removeMember(t){const e=g(this,Fn).delete(t);return e&&E0(this,"axisProps"),e}getAxisProps(){return jf(this,"axisProps",()=>{const t=Array.from(g(this,Fn)).map(e=>{const r=e.view.mark.encoding[e.channel];return"axis"in r&&r.axis});return t.length>0&&t.some(e=>e===null)?null:Xf(t.filter(e=>e!==void 0),"axis",["title"])})}getTitle(){const t=o=>{var l,c;const a=BQ(o.view,o.channel);if(!Ft(a))return{member:o,axisTitle:"axis"in a?(l=a.axis)==null?void 0:l.title:void 0,explicitTitle:F0("axis"in a?(c=a.axis)==null?void 0:c.title:void 0,a.title),implicitTitle:F0(Gn(a)?a.field:void 0,Ks(a)?a.expr:void 0)}},e=Array.from(g(this,Fn)).map(t),r=e.map(o=>o.axisTitle).find(o=>o!==void 0);if(r!==void 0)return r;const i=e.filter(o=>{var a;if(Wh(o.member.channel)&&!o.explicitTitle){const l=wr(o.member.channel);return((a=e.find(c=>c.member.view==o.member.view&&c.member.channel==l))==null?void 0:a.explicitTitle)===void 0}return!0}),s=new Set(i.map(o=>F0(o.explicitTitle,o.implicitTitle)).filter(we));return s.size?[...s].join(", "):null}}Fn=new WeakMap,JA=new WeakSet,bB=function(t){const{view:e}=t,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! Channel: ${this.channel}, existing views: [${Array.from(g(this,Fn)).map(i=>i.view.getPathString()).join(", ")}], new view: ${e.getPathString()}.`);g(this,Fn).add(t),E0(this,"axisProps")};function s2(n,t,{spacing:e,devicePixelRatio:r,offset:i,reverse:s}={}){e=e||0,i=i||0;let o=0,a=0;for(const d of n)o+=$f(d.px)+(R0(d)?0:e),a+=$f(d.grow);o-=e;const l=Math.max(0,t-o),c=r!==void 0?d=>Math.round(d*r)/r:d=>d,u=[],f=[],h=d=>{const p=u.length;if(!p)return;const C=(d?e:0)*(s?-1:1);A-=C;for(let m=0;m<p;m++)f.push({location:A+(m+1)/(p+1)*C,size:0});A+=C,u.length=0};let A=s?Math.max(t,o):0+i;if(n.length==1&&R0(n[0]))return[{location:A,size:0}];for(let d=0;d<n.length;d++){const p=n[d];if(R0(p))u.push(p);else{h(f.length>0);const C=$f(p.px)+(a?$f(p.grow)/a*l:0);s&&(A-=C),f.push({location:c(A),size:c(C)}),s?A-=e:A+=C+e}}return A+=s?e:-e,h(!1),f}function C5(n){let t=0,e=0;for(const r of n)t=Math.max(t,r.px??0),e=Math.max(e,r.grow??0);return{px:t,grow:e}}const ip=class ip{constructor(t,e){v(this,Ol);this.width=t,this.height=e}addPadding(t){return F(this,Ol,xp).call(this,t.width,t.height)}subtractPadding(t){return F(this,Ol,xp).call(this,-t.width,-t.height)}isGrowing(){return!!(this.width.grow||this.height.grow)}};Ol=new WeakSet,xp=function(t,e){return new ip({px:(this.width.px??0)+t,grow:this.width.grow},{px:(this.height.px??0)+e,grow:this.height.grow})};let Mr=ip;const _c=Object.freeze({px:0,grow:0}),o2=new Mr(_c,_c);function R0(n){return!n.px&&!n.grow}function $f(n){return n||0}function w5(n){return n&&(ot(n.px)||ot(n.grow))}function a2(n){if(H0(n))throw new Error("parseSizeDef does not accept step-based sizes.");if(w5(n))return n;if(ot(n))return{px:n,grow:0};if(n==="container")return{px:0,grow:1};if(!n)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${n}`)}class ct{constructor(t,e,r,i){this.top=t||0,this.right=e||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(t){return t<=0?this:new ct(this.top+t,this.right+t,this.bottom+t,this.left+t)}add(t){return new ct(this.top+t.top,this.right+t.right,this.bottom+t.bottom,this.left+t.left)}subtract(t){return new ct(this.top-t.top,this.right-t.right,this.bottom-t.bottom,this.left-t.left)}union(t){return new ct(Math.max(this.top,t.top),Math.max(this.right,t.right),Math.max(this.bottom,t.bottom),Math.max(this.left,t.left))}getHorizontal(){return new ct(0,this.right,0,this.left)}getVertical(){return new ct(this.top,0,this.bottom,0)}get horizontalTotal(){return this.left+this.right}get verticalTotal(){return this.top+this.bottom}static createFromConfig(t){return typeof t=="number"?this.createUniformPadding(t):t?this.createFromRecord(t):M0}static createFromRecord(t){return new ct(t.top,t.right,t.bottom,t.left)}static zero(){return M0}static createUniformPadding(t){return new ct(t,t,t,t)}}const M0=ct.createUniformPadding(0);Object.freeze(M0);class go{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(t,e){let r=this.length++;for(;r>0;){const i=r-1>>1,s=this.values[i];if(e>=s)break;this.ids[r]=this.ids[i],this.values[r]=s,r=i}this.ids[r]=t,this.values[r]=e}pop(){if(this.length===0)return;const t=this.ids,e=this.values,r=t[0],i=--this.length;if(i>0){const s=t[i],o=e[i];let a=0;const l=i>>1;for(;a<l;){const c=(a<<1)+1,u=c+1,f=c+(+(u<i)&+(e[u]<e[c]));if(e[f]>=o)break;t[a]=t[f],e[a]=e[f],a=f}t[a]=s,e[a]=o}return r}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){this.ids.length=this.values.length=this.length}}const c2=Symbol("runtimeNode"),l2=1e6;function y5(n){return n?(t,e)=>{n.addDisposer(t,e)}:()=>{}}function u2(n,t){const e={id:n.id,name:n.name,kind:n.kind,get(){return n.value},subscribe(r){return n.listeners.add(r),()=>{n.listeners.delete(r)}}};return Object.defineProperty(e,c2,{enumerable:!1,configurable:!1,writable:!1,value:n}),t?Object.assign(e,{set(r){t(r)}}):e}function f2(n){const t=n[c2];if(!t)throw new Error("ParamRef is not bound to this graph runtime. Expected runtime-created ref.");return t}function A2(n){for(const t of n)t()}class I5{constructor(t={}){v(this,Ye);v(this,$o,1);v(this,Ul,1);v(this,$n,0);v(this,os,!1);v(this,Kr,!1);v(this,jr,new Set);v(this,Wr,new Set);v(this,as,new go);v(this,cs,new go);v(this,Xr,new Set);v(this,ls);Q(this,ls,y5(t.lifecycleRegistry))}createWritable(t,e,r,i,s={}){const o="n"+ui(this,$o)._++,a=s.notify??!0,l={id:o,name:e,kind:r,value:i,rank:0,disposed:!1,listeners:new Set,subscribe(u){return l.listeners.add(u),()=>{l.listeners.delete(u)}}},c=u=>{if(l.disposed)throw new Error('Cannot set disposed parameter "'+e+'" ('+o+").");u!==l.value&&(l.value=u,a&&(A2(l.listeners),F(this,Ye,Bu).call(this)))};return g(this,ls).call(this,t,()=>{l.disposed=!0,l.listeners.clear()}),u2(l,c)}computed(t,e,r,i){const o=r.map(f2).reduce((h,A)=>Math.max(h,A.rank),0),l={id:"n"+ui(this,$o)._++,name:e,kind:"derived",rank:o+1,value:i(),disposed:!1,listeners:new Set,fn:i,subscribe(h){return l.listeners.add(h),()=>{l.listeners.delete(h)}}},c=()=>{l.disposed||F(this,Ye,xB).call(this,l)},u=r.map(h=>h.subscribe(c)),f=()=>{l.disposed||(l.disposed=!0,u.forEach(h=>h()),l.listeners.clear(),g(this,jr).delete(l))};return g(this,ls).call(this,t,f),u2(l)}effect(t,e,r){const s=e.map(f2).reduce((f,h)=>Math.max(f,h.rank),0),a={id:"n"+ui(this,$o)._++,rank:s+1,disposed:!1,fn:r},l=()=>{a.disposed||F(this,Ye,BB).call(this,a)},c=e.map(f=>f.subscribe(l)),u=()=>{a.disposed||(a.disposed=!0,c.forEach(f=>f()),g(this,Wr).delete(a))};return g(this,ls).call(this,t,u),u}runInTransaction(t){Q(this,$n,g(this,$n)+1);try{return t()}finally{Q(this,$n,g(this,$n)-1),g(this,$n)===0&&F(this,Ye,Bu).call(this)}}flushNow(){if(!(g(this,$n)>0||g(this,Kr))){Q(this,os,!1),Q(this,Kr,!0);try{let t=!0;for(;t;){for(t=!1;g(this,as).length>0;){t=!0;const e=g(this,as).pop();if(g(this,jr).delete(e),e.disposed)continue;const r=e.value,i=e.fn();i!==r&&(e.value=i,A2(e.listeners))}for(;g(this,cs).length>0;){t=!0;const e=g(this,cs).pop();g(this,Wr).delete(e),!e.disposed&&e.fn()}}}finally{Q(this,Kr,!1),F(this,Ye,vB).call(this)}}}whenPropagated(t={}){if(F(this,Ye,vp).call(this))return Promise.resolve();const{signal:e,timeoutMs:r}=t;return e!=null&&e.aborted?Promise.reject(new Error("whenPropagated aborted")):new Promise((i,s)=>{const o={resolve:i,reject:s};e&&(o.abortHandler=()=>{g(this,Xr).delete(o),s(new Error("whenPropagated aborted"))},e.addEventListener("abort",o.abortHandler,{once:!0})),r!=null&&(o.timeoutId=setTimeout(()=>{g(this,Xr).delete(o),o.abortHandler&&(e==null||e.removeEventListener("abort",o.abortHandler)),s(new Error("whenPropagated timeout after "+r+" ms"))},r)),g(this,Xr).add(o)})}}$o=new WeakMap,Ul=new WeakMap,$n=new WeakMap,os=new WeakMap,Kr=new WeakMap,jr=new WeakMap,Wr=new WeakMap,as=new WeakMap,cs=new WeakMap,Xr=new WeakMap,ls=new WeakMap,Ye=new WeakSet,xB=function(t){g(this,jr).has(t)||(g(this,jr).add(t),g(this,as).push(t,F(this,Ye,Bp).call(this,t.rank)),F(this,Ye,Bu).call(this))},BB=function(t){g(this,Wr).has(t)||(g(this,Wr).add(t),g(this,cs).push(t,F(this,Ye,Bp).call(this,t.rank)),F(this,Ye,Bu).call(this))},Bp=function(t){const e=g(this,Ul)%l2;return Q(this,Ul,g(this,Ul)+1),t*l2+e},Bu=function(){g(this,$n)>0||g(this,os)||g(this,Kr)||(Q(this,os,!0),queueMicrotask(()=>{this.flushNow()}))},vp=function(){return g(this,$n)===0&&!g(this,os)&&!g(this,Kr)&&g(this,as).length===0&&g(this,cs).length===0&&g(this,jr).size===0&&g(this,Wr).size===0},vB=function(){if(F(this,Ye,vp).call(this)){for(const t of g(this,Xr))t.timeoutId&&clearTimeout(t.timeoutId),t.resolve();g(this,Xr).clear()}};class E5{constructor(){v(this,qA,1);v(this,us,new Map)}createOwner(t,e){const r=t+":"+e+":"+ui(this,qA)._++;return g(this,us).set(r,new Set),r}addDisposer(t,e){const r=g(this,us).get(t);if(!r)throw new Error("Unknown owner: "+t);r.add(e)}disposeOwner(t){const e=g(this,us).get(t);if(e){for(const r of e)r();e.clear(),g(this,us).delete(t)}}}qA=new WeakMap,us=new WeakMap;class b5{constructor(){v(this,Gl,1);v(this,Rn,new Map)}createRootScope(t){const e="scope:"+ui(this,Gl)._++;return g(this,Rn).set(e,{params:new Map,ownerId:t}),e}createChildScope(t,e){if(!g(this,Rn).has(e))throw new Error("Unknown parent scope: "+e);const r="scope:"+ui(this,Gl)._++;return g(this,Rn).set(r,{parentScope:e,params:new Map,ownerId:t}),r}getOwnerId(t){const e=g(this,Rn).get(t);if(!e)throw new Error("Unknown scope: "+t);return e.ownerId}clearScope(t){const e=g(this,Rn).get(t);if(!e)throw new Error("Unknown scope: "+t);e.params.clear()}register(t,e,r){mn(e);const i=g(this,Rn).get(t);if(!i)throw new Error("Unknown scope: "+t);if(i.params.has(e))throw new Error('Parameter "'+e+'" already exists in scope '+t);return i.params.set(e,r),r}resolve(t,e){mn(e);let r=t;for(;r;){const i=g(this,Rn).get(r);if(!i)throw new Error("Unknown scope: "+r);const s=i.params.get(e);if(s)return s;r=i.parentScope}}}Gl=new WeakMap,Rn=new WeakMap;const x5="RawCode",B5="Literal",v5="Property",S5="Identifier",Q5="ArrayExpression",D5="BinaryExpression",k5="CallExpression",F5="ConditionalExpression",R5="LogicalExpression",M5="MemberExpression",N5="ObjectExpression",T5="UnaryExpression";function sn(n){this.type=n}sn.prototype.visit=function(n){let t,e,r;if(n(this))return 1;for(t=P5(this),e=0,r=t.length;e<r;++e)if(t[e].visit(n))return 1};function P5(n){switch(n.type){case Q5:return n.elements;case D5:case R5:return[n.left,n.right];case k5:return[n.callee].concat(n.arguments);case F5:return[n.test,n.consequent,n.alternate];case M5:return[n.object,n.property];case N5:return n.properties;case v5:return[n.key,n.value];case T5:return[n.argument];case S5:case B5:case x5:default:return[]}}var Bn,Y,N,lt,de,eA=1,Yc=2,Pi=3,Nr=4,tA=5,Li=6,St=7,Jc=8,L5=9;Bn={},Bn[eA]="Boolean",Bn[Yc]="<end>",Bn[Pi]="Identifier",Bn[Nr]="Keyword",Bn[tA]="Null",Bn[Li]="Numeric",Bn[St]="Punctuator",Bn[Jc]="String",Bn[L5]="RegularExpression";var O5="ArrayExpression",U5="BinaryExpression",G5="CallExpression",z5="ConditionalExpression",h2="Identifier",H5="Literal",V5="LogicalExpression",_5="MemberExpression",Y5="ObjectExpression",J5="Property",q5="UnaryExpression",Ze="Unexpected token %0",K5="Unexpected number",j5="Unexpected string",W5="Unexpected identifier",X5="Unexpected reserved word",Z5="Unexpected end of input",N0="Invalid regular expression",T0="Invalid regular expression: missing /",d2="Octal literals are not allowed in strict mode.",$5="Duplicate data property in object literal not allowed in strict mode",it="ILLEGAL",qc="Disabled.",eM=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]"),tM=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 nA(n,t){if(!n)throw new Error("ASSERT: "+t)}function Yn(n){return n>=48&&n<=57}function P0(n){return"0123456789abcdefABCDEF".includes(n)}function Kc(n){return"01234567".includes(n)}function nM(n){return n===32||n===9||n===11||n===12||n===160||n>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(n)}function jc(n){return n===10||n===13||n===8232||n===8233}function Wc(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n===92||n>=128&&eM.test(String.fromCharCode(n))}function rA(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57||n===92||n>=128&&tM.test(String.fromCharCode(n))}const rM={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 g2(){for(;N<lt;){const n=Y.charCodeAt(N);if(nM(n)||jc(n))++N;else break}}function L0(n){var t,e,r,i=0;for(e=n==="u"?4:2,t=0;t<e;++t)N<lt&&P0(Y[N])?(r=Y[N++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):fe({},Ze,it);return String.fromCharCode(i)}function iM(){var n,t,e,r;for(n=Y[N],t=0,n==="}"&&fe({},Ze,it);N<lt&&(n=Y[N++],!!P0(n));)t=t*16+"0123456789abcdef".indexOf(n.toLowerCase());return(t>1114111||n!=="}")&&fe({},Ze,it),t<=65535?String.fromCharCode(t):(e=(t-65536>>10)+55296,r=(t-65536&1023)+56320,String.fromCharCode(e,r))}function p2(){var n,t;for(n=Y.charCodeAt(N++),t=String.fromCharCode(n),n===92&&(Y.charCodeAt(N)!==117&&fe({},Ze,it),++N,n=L0("u"),(!n||n==="\\"||!Wc(n.charCodeAt(0)))&&fe({},Ze,it),t=n);N<lt&&(n=Y.charCodeAt(N),!!rA(n));)++N,t+=String.fromCharCode(n),n===92&&(t=t.substr(0,t.length-1),Y.charCodeAt(N)!==117&&fe({},Ze,it),++N,n=L0("u"),(!n||n==="\\"||!rA(n.charCodeAt(0)))&&fe({},Ze,it),t+=n);return t}function sM(){var n,t;for(n=N++;N<lt;){if(t=Y.charCodeAt(N),t===92)return N=n,p2();if(rA(t))++N;else break}return Y.slice(n,N)}function oM(){var n,t,e;return n=N,t=Y.charCodeAt(N)===92?p2():sM(),t.length===1?e=Pi:rM.hasOwnProperty(t)?e=Nr:t==="null"?e=tA:t==="true"||t==="false"?e=eA:e=Pi,{type:e,value:t,start:n,end:N}}function O0(){var n=N,t=Y.charCodeAt(N),e,r=Y[N],i,s,o;switch(t){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++N,{type:St,value:String.fromCharCode(t),start:n,end:N};default:if(e=Y.charCodeAt(N+1),e===61)switch(t){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return N+=2,{type:St,value:String.fromCharCode(t)+String.fromCharCode(e),start:n,end:N};case 33:case 61:return N+=2,Y.charCodeAt(N)===61&&++N,{type:St,value:Y.slice(n,N),start:n,end:N}}}if(o=Y.substr(N,4),o===">>>=")return N+=4,{type:St,value:o,start:n,end:N};if(s=o.substr(0,3),s===">>>"||s==="<<="||s===">>=")return N+=3,{type:St,value:s,start:n,end:N};if(i=s.substr(0,2),r===i[1]&&"+-<>&|".includes(r)||i==="=>")return N+=2,{type:St,value:i,start:n,end:N};if(i==="//"&&fe({},Ze,it),"<>=!+-*%&|^/".includes(r))return++N,{type:St,value:r,start:n,end:N};fe({},Ze,it)}function aM(n){let t="";for(;N<lt&&P0(Y[N]);)t+=Y[N++];return t.length===0&&fe({},Ze,it),Wc(Y.charCodeAt(N))&&fe({},Ze,it),{type:Li,value:parseInt("0x"+t,16),start:n,end:N}}function cM(n){let t="0"+Y[N++];for(;N<lt&&Kc(Y[N]);)t+=Y[N++];return(Wc(Y.charCodeAt(N))||Yn(Y.charCodeAt(N)))&&fe({},Ze,it),{type:Li,value:parseInt(t,8),octal:!0,start:n,end:N}}function m2(){var n,t,e;if(e=Y[N],nA(Yn(e.charCodeAt(0))||e===".","Numeric literal must start with a decimal digit or a decimal point"),t=N,n="",e!=="."){if(n=Y[N++],e=Y[N],n==="0"){if(e==="x"||e==="X")return++N,aM(t);if(Kc(e))return cM(t);e&&Yn(e.charCodeAt(0))&&fe({},Ze,it)}for(;Yn(Y.charCodeAt(N));)n+=Y[N++];e=Y[N]}if(e==="."){for(n+=Y[N++];Yn(Y.charCodeAt(N));)n+=Y[N++];e=Y[N]}if(e==="e"||e==="E")if(n+=Y[N++],e=Y[N],(e==="+"||e==="-")&&(n+=Y[N++]),Yn(Y.charCodeAt(N)))for(;Yn(Y.charCodeAt(N));)n+=Y[N++];else fe({},Ze,it);return Wc(Y.charCodeAt(N))&&fe({},Ze,it),{type:Li,value:parseFloat(n),start:t,end:N}}function lM(){var n="",t,e,r,i,s=!1;for(t=Y[N],nA(t==="'"||t==='"',"String literal must starts with a quote"),e=N,++N;N<lt;)if(r=Y[N++],r===t){t="";break}else if(r==="\\")if(r=Y[N++],!r||!jc(r.charCodeAt(0)))switch(r){case"u":case"x":Y[N]==="{"?(++N,n+=iM()):n+=L0(r);break;case"n":n+=`
643
- `;break;case"r":n+="\r";break;case"t":n+=" ";break;case"b":n+="\b";break;case"f":n+="\f";break;case"v":n+="\v";break;default:Kc(r)?(i="01234567".indexOf(r),i!==0&&(s=!0),N<lt&&Kc(Y[N])&&(s=!0,i=i*8+"01234567".indexOf(Y[N++]),"0123".includes(r)&&N<lt&&Kc(Y[N])&&(i=i*8+"01234567".indexOf(Y[N++]))),n+=String.fromCharCode(i)):n+=r;break}else r==="\r"&&Y[N]===`
644
- `&&++N;else{if(jc(r.charCodeAt(0)))break;n+=r}return t!==""&&fe({},Ze,it),{type:Jc,value:n,octal:s,start:e,end:N}}function uM(n,t){let e=n;t.includes("u")&&(e=e.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";fe({},N0)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(e)}catch{fe({},N0)}try{return new RegExp(n,t)}catch{return null}}function fM(){var n,t,e,r,i;for(n=Y[N],nA(n==="/","Regular expression literal must start with a slash"),t=Y[N++],e=!1,r=!1;N<lt;)if(n=Y[N++],t+=n,n==="\\")n=Y[N++],jc(n.charCodeAt(0))&&fe({},T0),t+=n;else if(jc(n.charCodeAt(0)))fe({},T0);else if(e)n==="]"&&(e=!1);else if(n==="/"){r=!0;break}else n==="["&&(e=!0);return r||fe({},T0),i=t.substr(1,t.length-2),{value:i,literal:t}}function AM(){var n,t,e;for(t="",e="";N<lt&&(n=Y[N],!!rA(n.charCodeAt(0)));)++N,n==="\\"&&N<lt?fe({},Ze,it):(e+=n,t+=n);return e.search(/[^gimuy]/g)>=0&&fe({},N0,e),{value:e,literal:t}}function hM(){var n,t,e,r;return de=null,g2(),n=N,t=fM(),e=AM(),r=uM(t.value,e.value),{literal:t.literal+e.literal,value:r,regex:{pattern:t.value,flags:e.value},start:n,end:N}}function dM(n){return n.type===Pi||n.type===Nr||n.type===eA||n.type===tA}function C2(){if(g2(),N>=lt)return{type:Yc,start:N,end:N};const n=Y.charCodeAt(N);return Wc(n)?oM():n===40||n===41||n===59?O0():n===39||n===34?lM():n===46?Yn(Y.charCodeAt(N+1))?m2():O0():Yn(n)?m2():O0()}function Qt(){const n=de;return N=n.end,de=C2(),N=n.end,n}function w2(){const n=N;de=C2(),N=n}function gM(n){const t=new sn(O5);return t.elements=n,t}function y2(n,t,e){const r=new sn(n==="||"||n==="&&"?V5:U5);return r.operator=n,r.left=t,r.right=e,r}function pM(n,t){const e=new sn(G5);return e.callee=n,e.arguments=t,e}function mM(n,t,e){const r=new sn(z5);return r.test=n,r.consequent=t,r.alternate=e,r}function U0(n){const t=new sn(h2);return t.name=n,t}function Xc(n){const t=new sn(H5);return t.value=n.value,t.raw=Y.slice(n.start,n.end),n.regex&&(t.raw==="//"&&(t.raw="/(?:)/"),t.regex=n.regex),t}function I2(n,t,e){const r=new sn(_5);return r.computed=n==="[",r.object=t,r.property=e,r.computed||(e.member=!0),r}function CM(n){const t=new sn(Y5);return t.properties=n,t}function E2(n,t,e){const r=new sn(J5);return r.key=t,r.value=e,r.kind=n,r}function wM(n,t){const e=new sn(q5);return e.operator=n,e.argument=t,e.prefix=!0,e}function fe(n,t){var e,r=Array.prototype.slice.call(arguments,2),i=t.replace(/%(\d)/g,(s,o)=>(nA(o<r.length,"Message reference must be in range"),r[o]));throw e=new Error(i),e.index=N,e.description=i,e}function iA(n){n.type===Yc&&fe(n,Z5),n.type===Li&&fe(n,K5),n.type===Jc&&fe(n,j5),n.type===Pi&&fe(n,W5),n.type===Nr&&fe(n,X5),fe(n,Ze,n.value)}function ut(n){const t=Qt();(t.type!==St||t.value!==n)&&iA(t)}function be(n){return de.type===St&&de.value===n}function G0(n){return de.type===Nr&&de.value===n}function yM(){const n=[];for(N=de.start,ut("[");!be("]");)be(",")?(Qt(),n.push(null)):(n.push(Oi()),be("]")||ut(","));return Qt(),gM(n)}function b2(){N=de.start;const n=Qt();return n.type===Jc||n.type===Li?(n.octal&&fe(n,d2),Xc(n)):U0(n.value)}function IM(){var n,t,e,r;if(N=de.start,n=de,n.type===Pi)return e=b2(),ut(":"),r=Oi(),E2("init",e,r);if(n.type===Yc||n.type===St)iA(n);else return t=b2(),ut(":"),r=Oi(),E2("init",t,r)}function EM(){var n=[],t,e,r,i={},s=String;for(N=de.start,ut("{");!be("}");)t=IM(),t.key.type===h2?e=t.key.name:e=s(t.key.value),r="$"+e,Object.prototype.hasOwnProperty.call(i,r)?fe({},$5):i[r]=!0,n.push(t),be("}")||ut(",");return ut("}"),CM(n)}function bM(){ut("(");const n=z0();return ut(")"),n}const xM={if:1};function BM(){var n,t,e;if(be("("))return bM();if(be("["))return yM();if(be("{"))return EM();if(n=de.type,N=de.start,n===Pi||xM[de.value])e=U0(Qt().value);else if(n===Jc||n===Li)de.octal&&fe(de,d2),e=Xc(Qt());else{if(n===Nr)throw new Error(qc);n===eA?(t=Qt(),t.value=t.value==="true",e=Xc(t)):n===tA?(t=Qt(),t.value=null,e=Xc(t)):be("/")||be("/=")?(e=Xc(hM()),w2()):iA(Qt())}return e}function vM(){const n=[];if(ut("("),!be(")"))for(;N<lt&&(n.push(Oi()),!be(")"));)ut(",");return ut(")"),n}function SM(){N=de.start;const n=Qt();return dM(n)||iA(n),U0(n.value)}function QM(){return ut("."),SM()}function DM(){ut("[");const n=z0();return ut("]"),n}function kM(){var n,t,e;for(n=BM();;)if(be("."))e=QM(),n=I2(".",n,e);else if(be("("))t=vM(),n=pM(n,t);else if(be("["))e=DM(),n=I2("[",n,e);else break;return n}function x2(){const n=kM();if(de.type===St&&(be("++")||be("--")))throw new Error(qc);return n}function sA(){var n,t;if(de.type!==St&&de.type!==Nr)t=x2();else{if(be("++")||be("--"))throw new Error(qc);if(be("+")||be("-")||be("~")||be("!"))n=Qt(),t=sA(),t=wM(n.value,t);else{if(G0("delete")||G0("void")||G0("typeof"))throw new Error(qc);t=x2()}}return t}function B2(n){let t=0;if(n.type!==St&&n.type!==Nr)return 0;switch(n.value){case"||":t=1;break;case"&&":t=2;break;case"|":t=3;break;case"^":t=4;break;case"&":t=5;break;case"==":case"!=":case"===":case"!==":t=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":t=7;break;case"<<":case">>":case">>>":t=8;break;case"+":case"-":t=9;break;case"*":case"/":case"%":t=11;break}return t}function FM(){var n,t,e,r,i,s,o,a,l,c;if(n=de,l=sA(),r=de,i=B2(r),i===0)return l;for(r.prec=i,Qt(),t=[n,de],o=sA(),s=[l,r,o];(i=B2(de))>0;){for(;s.length>2&&i<=s[s.length-2].prec;)o=s.pop(),a=s.pop().value,l=s.pop(),t.pop(),e=y2(a,l,o),s.push(e);r=Qt(),r.prec=i,s.push(r),t.push(de),e=sA(),s.push(e)}for(c=s.length-1,e=s[c],t.pop();c>1;)t.pop(),e=y2(s[c-1].value,s[c-2],e),c-=2;return e}function Oi(){var n,t,e;return n=FM(),be("?")&&(Qt(),t=Oi(),ut(":"),e=Oi(),n=mM(n,t,e)),n}function z0(){const n=Oi();if(be(","))throw new Error(qc);return n}function v2(n){Y=n,N=0,lt=Y.length,de=null,w2();const t=z0();if(de.type!==Yc)throw new Error("Unexpect token after expression.");return t}var RM={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 S2(n){function t(o,a,l,c){let u=n(a[0]);return l&&(u=l+"("+u+")",l.lastIndexOf("new ",0)===0&&(u="("+u+")")),u+"."+o+(c<0?"":c===0?"()":"("+a.slice(1).map(n).join(",")+")")}function e(o,a,l){return c=>t(o,c,a,l)}const r="new Date",i="String",s="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",hypot:"Math.hypot",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(o){o.length<3&&Le("Missing arguments to clamp function."),o.length>3&&Le("Too many arguments to clamp function.");const a=o.map(n);return"Math.max("+a[1]+", Math.min("+a[2]+","+a[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:e("getDate",r,0),day:e("getDay",r,0),year:e("getFullYear",r,0),month:e("getMonth",r,0),hours:e("getHours",r,0),minutes:e("getMinutes",r,0),seconds:e("getSeconds",r,0),milliseconds:e("getMilliseconds",r,0),time:e("getTime",r,0),timezoneoffset:e("getTimezoneOffset",r,0),utcdate:e("getUTCDate",r,0),utcday:e("getUTCDay",r,0),utcyear:e("getUTCFullYear",r,0),utcmonth:e("getUTCMonth",r,0),utchours:e("getUTCHours",r,0),utcminutes:e("getUTCMinutes",r,0),utcseconds:e("getUTCSeconds",r,0),utcmilliseconds:e("getUTCMilliseconds",r,0),length:e("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:e("toUpperCase",i,0),lower:e("toLowerCase",i,0),substring:e("substring",i),split:e("split",i),trim:e("trim",i,0),btoa:"btoa",atob:"atob",regexp:s,test:e("test",s),if:function(o){o.length<3&&Le("Missing arguments to if function."),o.length>3&&Le("Too many arguments to if function.");const a=o.map(n);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function MM(n){const t=n&&n.length-1;return t&&(n[0]==='"'&&n[t]==='"'||n[0]==="'"&&n[t]==="'")?n.slice(1,-1):n}function Q2(n){n=n||{};const t=n.allowed?Nu(n.allowed):{},e=n.forbidden?Nu(n.forbidden):{},r=n.constants||RM,i=(n.functions||S2)(f),s=n.globalvar,o=n.fieldvar,a=Ot(s)?s:d=>`${s}["${d}"]`;[...Object.getOwnPropertyNames(Object.prototype).filter(d=>typeof Object.prototype[d]=="function")];let l={},c={},u=0;function f(d){if(we(d))return d;const p=h[d.type];return p==null&&Le("Unsupported type: "+d.type),p(d)}const h={Literal:d=>d.raw,Identifier:d=>{const p=d.name;return u>0?p:Ls(e,p)?Le("Illegal identifier: "+p):Ls(r,p)?r[p]:Ls(t,p)?p:(l[p]=1,a(p))},MemberExpression:d=>{const p=!d.computed,C=f(d.object);p&&(u+=1);const m=f(d.property);return C===o&&(c[MM(m)]=1),p&&(u-=1),C+(p?"."+m:"["+m+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&Le("Illegal callee type: "+d.callee.type);const p=d.callee.name,C=d.arguments,m=Ls(i,p)&&i[p];return m||Le("Unrecognized function: "+p),Ot(m)?m(C):m+"("+C.map(f).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(f).join(",")+"]",BinaryExpression:d=>"("+f(d.left)+" "+d.operator+" "+f(d.right)+")",UnaryExpression:d=>"("+d.operator+f(d.argument)+")",ConditionalExpression:d=>"("+f(d.test)+"?"+f(d.consequent)+":"+f(d.alternate)+")",LogicalExpression:d=>"("+f(d.left)+d.operator+f(d.right)+")",ObjectExpression:d=>{for(const p of d.properties){const C=p.key.name;rv.has(C)&&Le("Illegal property: "+C)}return"{"+d.properties.map(f).join(",")+"}"},Property:d=>{u+=1;const p=f(d.key);return u-=1,p+":"+f(d.value)}};function A(d){const p={code:f(d),globals:Object.keys(l),fields:Object.keys(c)};return l={},c={},p}return A.functions=i,A.constants=r,A}function D2(n,t,e){return e=(e-n)/(t-n),e=Math.max(0,Math.min(1,e)),e*e*(3-2*e)}function NM(n,t,e){return io((e-n)/(t-n),0,1)}const k2={clamp:io,format(n,t){return nt(t)(n)},mapHasKey(n,t){return n.has(t)},isArray:Re,isBoolean:Ua,isDefined(n){return n!==void 0},isNumber:ot,isObject:tt,isRegExp:Cv,isString:we,isValid(n){return n!=null&&n===n},lerp:Zp,linearstep:NM,replace(n,t,e){return String(n).replace(t,e)},smoothstep:D2};function TM(n){const t=S2(n);for(const e in k2)t[e]=`this.${e}`;return t}const PM=Q2({forbidden:[],allowed:["datum","undefined"],globalvar:"globalObject",fieldvar:"datum",functions:TM});function LM(n,t={}){try{const e=v2(n),r=PM(e),i=Function("datum","globalObject",`"use strict";
599
+ chrM 16299`};function wD(n){if(!(n in Dp))throw new Error(`Unknown assembly: ${n}`);return Dp[n].split(`
600
+ `).map(e=>{const t=e.split(" ");return{name:t[0],size:parseInt(t[1])}})}const CD=/^([A-Za-z]+:)?\/\//;function dr(n,e){if(e&&CD.test(e))return e;const t=typeof n=="function"?n():n;if(!t)return e;if(!e)return t;if(/[#?]/.test(t))throw new Error(`Cannot append to a url with query or hash. Append: ${e}, base: ${t}`);return kp(t)+e}function kp(n){const e=n.replace(/[^/]*$/,"");return e===""?void 0:e.endsWith("://")?n+"/":e}class yD{constructor(e){if(this.config={name:"custom",...e},"baseUrl"in e)throw new Error("The `baseUrl` property in genome config has been removed in GenomeSpy v0.52.0. Use `url` instead. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.");if(!Wu(e))throw new Error("Not a genome configuration: "+JSON.stringify(e));if(this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,Rp(this.config))this.setChromSizes(this.config.contigs);else if(!Xu(this.config)){const t=wD(this.config.name);if(t)this.setChromSizes(t);else throw new Error(`Unknown genome: ${this.config.name}. Please provide contigs or a URL. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.`)}}get name(){return this.config.name}async load(e){if(Xu(this.config))try{const t=dr(e,this.config.url),r=await fetch(t);if(!r.ok)throw new Error(`${r.status} ${r.statusText}`);this.setChromSizes(ID(await r.text()))}catch(t){throw new Error(`Could not load chrom sizes: ${this.config.url}. Reason: ${t.message}`)}}hasChrPrefix(){return this.chromosomes.some(e=>e.name.startsWith("chr"))}setChromSizes(e){let t=0;this.startByIndex=[0];for(let r=0;r<e.length;r++){this.startByIndex.push(t);const i=e[r].size,s={...e[r],continuousStart:t,continuousEnd:t+i,continuousInterval:[t,t+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(s);const o=s.name.replace(/^chr/i,"");for(const a of["chr"+o,"CHR"+o,"Chr"+o,s.number,""+s.number,o,s.name])this.cumulativeChromPositions.set(a,t),this.chromosomesByName.set(a,s);t+=s.size}this.totalSize=t}getExtent(){return[0,this.totalSize]}toContinuous(e,t){let r=this.cumulativeChromPositions.get(e);if(r===void 0)throw new Error("Unknown chromosome/contig: "+e);return r+ +t}toChromosome(e){if(e>this.totalSize)return;e=Math.floor(e);const t=wn(this.startByIndex,e)-1;if(t>0&&t<=this.chromosomes.length)return this.chromosomes[t-1]}toChromosomal(e){const t=this.toChromosome(e);if(t)return{chrom:t.name,pos:Math.floor(e)-t.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return mD(...this.toChromosomalInterval(e))}formatLocus(e){const t=this.toChromosomal(e);if(t)return pD(t)}toChromosomalInterval(e){const t=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[t,r]}toContinuousInterval(e){let[t,r]=e;return r||(r=t),[this.toContinuous(t.chrom,t.pos??0),this.toContinuous(r.chrom,r.pos??this.chromosomesByName.get(r.chrom)?.size)]}toDiscreteChromosomeIntervals(e){const t=e[0],r=e[1],i=[];if(t.chrom===r.chrom)i.push({chrom:t.chrom,startPos:t.pos,endPos:r.pos});else{const s=this.chromosomes.findIndex(a=>a.name===t.chrom),o=this.chromosomes.findIndex(a=>a.name===r.chrom);i.push({chrom:t.chrom,startPos:t.pos,endPos:this.chromosomes[s].size});for(let a=s+1;a<o;a++)i.push({chrom:this.chromosomes[a].name,startPos:0,endPos:this.chromosomes[a].size});i.push({chrom:r.chrom,startPos:0,endPos:r.pos})}return i}continuousToDiscreteChromosomeIntervals(e){return this.toDiscreteChromosomeIntervals([this.toChromosomal(e[0]),this.toChromosomal(e[1])])}parseInterval(e){const t=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(t){const r=t[1];if(t.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=t[3]||r,s=parseInt(t[2].replace(/,/g,"")),o=t[4]!==void 0?parseInt(t[4].replace(/,/g,"")):s;return[this.toContinuous(r,s-1),this.toContinuous(i,o)]}}}function ID(n){return W2(n).map(([e,t])=>({name:e,size:parseInt(t)}))}function Fp(n){return ze(n)&&"chrom"in n}function bD(n){return n.every(Fp)}function Wu(n){return ze(n)&&("name"in n||Xu(n)||Rp(n))}function Xu(n){return Wu(n)&&"url"in n}function Rp(n){return Wu(n)&&"contigs"in n}function ED(){const n=Ku().numberingOffset(1);let e;n.genome=function(r){return arguments.length?(e=r,n):e},n.ticks=r=>{if(!e)return[];const i=n.domain(),s=n.numberingOffset(),[o,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(u=>e.toChromosome(u)),l=Math.max(1,Xn(i[0],i[1],r)),c=[];for(let u=o.index;u<=a.index;u++){const f=e.chromosomes[u],h=Math.max(f.continuousStart+l,i[0]-(i[0]-f.continuousStart)%l),A=Math.min(f.continuousEnd-l/4,i[1]+1);for(let d=h;d<=A;d+=l){const g=d-s;g>=i[0]&&g<i[1]&&c.push(g)}}return c},n.tickFormat=(r,i)=>{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const s=n.domain(),o=s[1]-s[0],a=n.numberingOffset(),c=Xn(s[0],s[1],Math.min(r,Math.ceil(o)))<1e6?He(","):He(".3s"),u=f=>f-e.toChromosome(f).continuousStart;return f=>c(u(f)+a)};const t=n.copy;return n.copy=()=>{const r=t();let i=e;return r.genome=function(s){return arguments.length?(i=s,r):i},r.genome(e)},n}function xD(n){return n.type=="locus"}function BD(n,e){const t=Ps(n);return t?t.toChromosomal(e):e}function vD(n,e){const t=Ps(n);return t&&Fp(e)?t.toContinuous(e.chrom,e.pos):e}function SD(n,e){const t=Ps(n);return t&&bD(e)?t.toContinuousInterval(e):e}function QD(n,e){const t=Ps(n);return t?t.toChromosomalInterval(e):e}function DD(n){const e=Ps(n);if(!e)throw new Error("No genome has been defined!");return e.getExtent()}function Ps(n){if(n&&"toChromosomal"in n)return n;if(n&&"genome"in n)return n.genome()}function Mp(n,e,t){return Ye(e)&&t!=null&&(e=Math.min(e,~~(Pi(n.domain())/t)||1)),ze(e)&&(e.step,e=e.interval),e}function Np(n,e,t){var r=n.range(),i=Math.floor(r[0]),s=Math.ceil(Et(r));if(i>s&&(r=s,s=i,i=r),e=e.filter(function(a){return a=n(a),i<=a&&a<=s}),t>0&&e.length>1){for(var o=[e[0],Et(e)];e.length>t&&e.length>=3;)e=e.filter(function(a,l){return!(l%2)});e.length<3&&(e=o)}return e}function kD(n,e){return n.bins?Np(n,FD(n.bins,e)):n.ticks?n.ticks(e):n.domain()}function FD(n,e){var t=n.length,r=~~(t/(e||t));return r<2?n.slice():n.filter(function(i,s){return!(s%r)})}function RD(n,e,t){var r=n.tickFormat?n.tickFormat(e,t):t?He(t):String;if(tp(n.type)){var i=ND(t);r=n.bins?i:MD(r,i)}return r}function MD(n,e){return function(t){return n(t)?e(t):""}}function ND(n){var e=Nr(n||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return TD(He(e),He(".1f")(1)[1])}else return He(e)}function TD(n,e){return function(t){var r=n(t),i=r.indexOf(e),s,o;if(i<0)return r;for(s=PD(r,i),o=s<r.length?r.slice(s):"";--s>i;)if(r[s]!=="0"){++s;break}return r.slice(0,s)+o}}function PD(n,e){var t=n.lastIndexOf("e"),r;if(t>0)return t;for(t=n.length;--t>e;)if(r=n.charCodeAt(t),r>=48&&r<=57)return t+1}const LD="locus",OD="index";var UD=5;function GD(n){const e=n.type;return!n.bins&&(e===ni||e===Es||e===xs)}function Tp(n){return Pe(n)&&![Ht,OD,LD].includes(n)}function Pp(n){return n||{warn:(e,...t)=>console.warn(e,...t)}}var zD=bo(["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 Lp(n,e,t){t=Pp(t);for(const i in n)if(!zD[i]){if(i==="padding"&&Tp(e.type))continue;At(e[i])?e[i](n[i]):t.warn("Unsupported scale property: "+i)}const r=Op(e,n,t);r.domain&&e.domain(r.domain),r.applyOrdinalUnknown&&e.unknown(r.ordinalUnknown),jD(e,n,KD(e,n,r.count))}function HD(n,e){const t=VD(n),r=re(t);if(!r)throw new Error("Unknown scale type: "+t);const i=r();return!n.domain&&Pe(i.type)&&(n.domain=[0,0]),Lp(n,i,e),i}function VD(n){var e=n.type,t="",r;return e===Ht?Ht+"-"+ni:(_D(n)&&(r=n.rawDomain?n.rawDomain.length:n.domain?n.domain.length+ +(n.domainMid!=null):0,t=r===2?Ht+"-":r===3?ri+"-":""),(t+e||ni).toLowerCase())}function _D(n){const e=n.type;return Pe(e)&&e!==qg&&e!==Kg&&(n.scheme||n.range&&n.range.length&&n.range.every(le))}function YD(n){if(!n.copy)return n;const e=n.copy();return e.type==null&&n.type!=null&&(e.type=n.type),e}function Op(n,e,t){if(!n.domain)return{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1};t=Pp(t);const r=YD(n);var i=JD(r,e.domainRaw,t);if(i>-1)return{domain:r.domain(),count:i,ordinalUnknown:r.type===Bs&&e.domainImplicit?wa:void 0,applyOrdinalUnknown:!1};var s=e.domain,o=r.type,a=e.zero||e.zero===void 0&&GD(r),l,c;return s?(Tp(o)&&e.padding&&s[0]!==Et(s)&&(s=qD(o,s,e.range,e.padding,e.exponent,e.constant)),(a||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(l=(s=s.slice()).length-1||1,a&&(s[0]>0&&(s[0]=0),s[l]<0&&(s[l]=0)),e.domainMin!=null&&(s[0]=e.domainMin),e.domainMax!=null&&(s[l]=e.domainMax),e.domainMid!=null&&(c=e.domainMid,(c<s[0]||c>s[l])&&t.warn("Scale domainMid exceeds domain min or max.",c),s.splice(l,0,c))),r.domain(Up(o,s,t)),e.nice&&r.nice&&r.nice(e.nice!==!0&&Mp(r,e.nice)||null),{domain:r.domain(),count:s.length,ordinalUnknown:o===Bs&&e.domainImplicit?wa:void 0,applyOrdinalUnknown:o===Bs}):{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1}}function JD(n,e,t){return e?(n.domain(Up(n.type,e,t)),e.length):-1}function qD(n,e,t,r,i,s){t??=[0,1];var o=Math.abs(Et(t)-t[0]),a=o/(o-2*r),l=n===Nn?LA(e,null,a):n===xs?Pc(e,null,a,.5):n===Es?Pc(e,null,a,i||1):n===Fa?u2(e,null,a,s||1):PA(e,null,a);return e=e.slice(),e[0]=l[0],e[e.length-1]=l[1],e}function Up(n,e,t){if(tp(n)){var r=Math.abs(e.reduce(function(i,s){return i+(s<0?-1:s>0?1:0)},0));r!==e.length&&t.warn("Log scale domain includes zero: "+Oc(e))}return e}function KD(n,e,t){let r=e.bins;if(r&&!ye(r)){const i=(r.start==null||r.stop==null)&&n.domain(),s=r.start==null?i[0]:r.start,o=r.stop==null?Et(i):r.stop,a=r.step;a||Ee("Scale bins parameter missing step property."),r=Ji(s,o+a,a)}return r?n.bins=r:n.bins&&delete n.bins,n.type===Ou&&(r?!e.domain&&!e.domainRaw&&(n.domain(r),t=r.length):n.bins=n.domain()),t}function jD(n,e,t){var r=n.type,i=e.round||!1,s=e.range;if(e.rangeStep!=null)s=WD(r,e,t);else if(e.scheme&&(s=XD(r,e,t),At(s))){if(n.interpolator)return n.interpolator(s);Ee(`Scale type ${r} does not support interpolating color schemes.`)}if(s&&Ma(r))return n.interpolator(Na(Zu(s,e.reverse),e.interpolate,e.interpolateGamma));s&&e.interpolate&&n.interpolate?n.interpolate(np(e.interpolate,e.interpolateGamma)):At(n.round)?n.round(i):At(n.rangeRound)&&n.interpolate(i?Is:Rn),s&&n.range(Zu(s,e.reverse))}function WD(n,e,t){n!==Xg&&n!==Lu&&Ee("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=n===Lu?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Tu(t,i,r)]}function XD(n,e,t){var r=e.schemeExtent,i,s;return ye(e.scheme)?s=Na(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),s=Gu(i),s||Ee(`Unrecognized scheme name: ${e.scheme}`)),t=n===Wg?t+1:n===Ou?t-1:n===Pu||n===jg?+e.schemeCount||UD:t,Ma(n)?Gp(s,r,e.reverse):At(s)?rQ(Gp(s,r),t):n===Bs?s:s.slice(0,t)}function Gp(n,e,t){return At(n)&&(e||t)?nQ(n,Zu(e||[0,1],t)):n}function Zu(n,e){return e?n.slice().reverse():n}class ZD{#e;#t=new Set;#n;#r;#s;#o;#i=0;constructor({getParamRuntime:e,onRangeChange:t,onDomainChange:r,getGenomeStore:i}){this.#n=e,this.#r=t,this.#s=r,this.#o=i}get scale(){return this.#e}getLocusGenome(){const t=this.#o?.()?.getGenome();if(!t)throw new Error("No genome has been defined!");return t}createScale(e){const t=HD({...this.#a(e),range:void 0});return t.props=e,"unknown"in t&&t.unknown(null),this.#e=t,this.#c(e),this.#l(),this.#u(),this.#e}#c(e){const t=this.#e;if(!t||!xD(t))return;const i=this.#o?.()?.getGenome(e.assembly);if(!i)throw new Error("No genome has been defined!");t.genome(i)}reconfigureScale(e){const t=this.#e;!t||t.type=="null"||(Lp({...this.#a(e),range:void 0},t),t.props=e,this.#l())}withDomainNotificationsSuppressed(e){this.#i+=1;try{e()}finally{this.#i-=1}}#a(e){const t=e,{assembly:r,domainIndexer:i,...s}=t;return s}#l(){const e=this.#e;if(!e)return;const t=e.props;this.#t.forEach(s=>s.invalidate()),this.#t.clear();const r=ek({range:t.range,reverse:t.reverse,createExpression:s=>this.#n().createExpression(s),registerExpr:s=>this.#t.add(s)});if(!r)return;if("values"in r){e.range(r.values);return}const i=()=>e.range(r.evaluate());r.setup(i),i()}#u(){const e=this.#e;if(!e)return;const t=e.range,r=e.domain,i=()=>this.#r?.();$D(e,{onRangeChange:i,onDomainChange:()=>{this.#i>0||this.#s?.()},range:t,domain:r}),i()}dispose(){this.#t.forEach(e=>e.invalidate()),this.#t.clear()}}function $D(n,{onRangeChange:e,onDomainChange:t,range:r,domain:i}){typeof r=="function"&&(n.range=(function(s){if(arguments.length)r(s),e?.();else return r()})),typeof i=="function"&&(n.domain=(function(s){if(arguments.length)i(s),t?.();else return i()}))}function ek({range:n,reverse:e,createExpression:t,registerExpr:r}){if(!n||!ye(n))return null;const i=(s,o)=>o?s.slice().reverse():s;if(n.some(Ie)){let s;return{dynamic:!0,evaluate:()=>i(s.map(l=>l()),e),setup:l=>{s=n.map(c=>{if(Ie(c)){const u=t(c.expr);return u.subscribe(l),r(u),()=>u(null)}return()=>c})}}}return{dynamic:!1,values:i(n,e)}}function Ua(n,e,t){if(t=t||[],n.some(o=>o===null)){if(n.every(o=>o===null))return null;throw console.warn(n),new Error("Cannot merge objects with nulls!")}const r={},i=(o,a)=>o===a||oi(o)&&oi(a)||oi(o)&&a===!0||o===!0&&ze(a)||Array.isArray(o)&&Array.isArray(a)&&o.length===a.length&&o.every((l,c)=>l===a[c]),s=o=>{for(let a in o){const l=o[a];if(!t.includes(a)&&l!==void 0)if(r[a]!==void 0&&!i(r[a],l))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(o[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(oi(c))oi(l)&&(r[a]=Ua([c,l],a));else if(oi(l)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=Ua([{},l],a)}else r[a]=l}}};for(const o of n)s(o);return r}function oi(n){return ze(n)&&!Array.isArray(n)}const zp="quantitative",Hp="ordinal",Vp="nominal",Ls="locus",_p="index";function tk(n,e,t){const r={};return t&&(r.zero=!1),ls(n)?r.nice=!t:bn(n)?r.scheme=e==Vp?"tableau10":e==Hp?"blues":"viridis":Jo(n)?r.range=n=="shape"?["circle","square","triangle-up","cross","diamond"]:[]:n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}function nk(n,e){if(e==_p||e==Ls){if(Cl(n))return e;throw new Error(n+" does not support "+e+" data type. Only positional channels do.")}const t={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"],sample:["null",void 0,void 0]},i=["sample"].includes(n)?"null":t[n]?t[n][[Vp,Hp,zp].indexOf(e)]:e==zp?"linear":"ordinal";if(i===void 0)throw new Error('Channel "'+n+'" is not compatible with "'+e+'" data type. Use of a proper scale may be needed.');return i}function rk(n,e){ls(e)&&n.type!=="ordinal"&&(n.range=[0,1]),e=="opacity"&&Pe(n.type)&&(n.clamp=!0)}function ik({channel:n,dataType:e,members:t,isExplicitDomain:r}){const i=Array.from(t).map(a=>a.channelDef.scale).filter(a=>a!==void 0),s=Ua(i,"scale",["domain"]);if(s===null||s.type=="null")return{type:"null"};const o={...tk(n,e,r),...s};return o.type||(o.type=nk(n,e)),n=="y"&&sn(o.type)&&o.reverse==null&&(o.reverse=!0),o.range&&o.scheme&&delete o.scheme,!("zoom"in o)&&[_p,Ls].includes(o.type)&&(o.zoom=!0),rk(o,n),o}class Os extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof Os&&e.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${e.type}`);for(const t of e)this.extend(t);return this}extendAllWithAccessor(e,t){for(const r of e)this.extend(t(r));return this}}class $u extends Os{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 Yp extends Os{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 ef extends Yp{constructor(){super(),this.type="nominal"}}class sk extends Os{constructor(e){super();let t=0;for(let r=1;r<e.length;r++)t+=Math.sign(e[r]-e[r-1]);if(Math.abs(t)!=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 Jp={quantitative:$u,index:$u,locus:$u,nominal:ef,ordinal:Yp};function Ga(n,e){if(n=="quantitative"&&ok(e)){const t=new sk(e);return t.type=n,t}else if(Jp[n]){const t=new Jp[n];return t.type=n,e&&t.extendAll(e),t}throw new Error("Unknown type: "+n)}function ok(n){return n&&n.length>0&&n.length!=2&&n.every(e=>typeof e=="number")}class ak{#e;#t;#n;#r;#s;#o;#i;#c=!0;#a=new WeakMap;constructor({getMembers:e,getDataMembers:t,getType:r,getLocusExtent:i,fromComplexInterval:s}){this.#e=e,this.#t=t??e,this.#n=r,this.#r=i,this.#s=s}get initialDomainSnapshot(){return this.#o}hasConfiguredDomain(){return!!this.getConfiguredDomain()}invalidateConfiguredDomain(){this.#c=!0}getConfiguredOrDefaultDomain(e=!1){return this.getConfiguredDomain()??uk(this.#n(),this.#r,e?this.getDataDomain():void 0)}getConfiguredDomain(){if(!this.#c)return this.#i;const e=ck(this.#e(),this.#s);return this.#i=e,this.#c=!1,e}getDataDomain(){return lk(this.#t(),this.#n,e=>this.#l(e))}captureInitialDomain(e,t){if(!this.#o&&Pe(e.type)){const r=e.domain();Pi(r)>0&&(this.#o=r)}return t?!1:(this.#o=e.domain(),!0)}#l(e){const t=this.#a.get(e);if(t)return t;const r=e.view.mark.encoders;if(!r)return[];const i=r[e.channel];if(!i)return[];const s=i.accessors??[];if(s.length===0)return[];const o=s.filter(sd).filter(a=>!a.channelDef.domainInert);return this.#a.set(e,o),o}}function ck(n,e){const t=Array.from(n).filter(r=>r.contributesToDomain).map(r=>r.channelDef).filter(r=>r.scale?.domain).map(r=>Ga(r.type,e(r.scale.domain)));if(t.length>0)return t.reduce((r,i)=>r.extendAll(i))}function lk(n,e,t){const r=e(),i=new Map;for(const o of n){if(!o.contributesToDomain)continue;const a=t(o);if(a.length===0)continue;const l=o.view.getCollector();for(const c of a){const u=ad(c,r),f=l??null;let h=i.get(f);if(h||(h=new Map,i.set(f,h)),h.has(u))continue;let A;if(l)A=l.getDomain(u,r,c);else if(c.constant)A=Ga(r),A.extend(c({}));else continue;h.set(u,A)}}if(i.size===0)return;const s=Ga(r);for(const o of i.values())for(const a of o.values())s.extendAll(a);return s}function uk(n,e,t){return n==Ls?e():t??[]}function fk(n){return((n*=2)<=1?n*n*n:(n-=2)*n*n+2)/2}function Ak(n,e,t){return n*Math.pow(e/n,t)}const hk=n=>new Promise(e=>setTimeout(e,n));function dk(){return{canceled:!1}}function gk(n){const e=n.requestAnimationFrame||window.requestAnimationFrame,t=n.signal,r=n.cancelToken,i=()=>new Promise((s,o)=>{if(r?.canceled)return s();if(t?.aborted)return o("aborted");const a=performance.now(),l=a+(n.duration||1e3),c=typeof n.from=="number"?n.from:0,u=typeof n.to=="number"?n.to:1,f=n.easingFunction||(p=>p),h=p=>(p-a)/(l-a),A=p=>p*(u-c)+c,d=p=>Math.max(0,Math.min(1,p)),g=p=>{if(r?.canceled){s();return}t?.aborted?o("aborted"):(n.onUpdate(A(f(d(h(p))))),p<l?e(g):(n.onUpdate(A(f(1))),s()))};e(g)});return n.delay?r?.canceled?Promise.resolve():t?.aborted?Promise.reject("aborted"):hk(n.delay).then(i):i()}class pk{#e;#t;#n;#r;#s;#o;#i=null;constructor({getScale:e,getAnimator:t,getInitialDomainSnapshot:r,getResetDomain:i,fromComplexInterval:s,getGenomeExtent:o}){this.#e=e,this.#t=t,this.#n=r,this.#r=i,this.#s=s,this.#o=o}getZoomExtent(){const e=this.#e(),t=e.props.zoom;return mk(e,t,this.#s,this.#o,this.#n)}isZoomable(){return this.isZoomingSupported()&&!!this.#e().props.zoom}isZoomingSupported(){const e=this.#e().type;return Pe(e)&&!sn(e)}getDomainChangeAction(e,t){return Ur(t,e)?"none":this.isZoomable()?"restore":this.isZoomingSupported()?"animate":"notify"}isZoomed(){return this.isZoomingSupported()&&Ur(this.#r(),this.#e().domain())}zoom(e,t,r){if(!this.isZoomingSupported())return!1;const i=this.#e(),s=i.domain();let o=wk(i,s,e,t,r);const a=this.getZoomExtent();return o=f2(o,a[0],a[1]),[0,1].some(l=>o[l]!=s[l])?(i.domain(o),!0):!1}async zoomTo(e,t=!1){if(Ti(t)&&(t=t?700:0),!this.isZoomingSupported())throw new Error("Not a zoomable scale!");const r=this.#s(e),i=this.#t(),s=this.#e(),o=s.domain();if(t>0&&o.length==2){const a=o[1]-o[0],l=r[1]-r[0],c=o[0]+a/2,u=r[0]+l/2,f=o[0]==r[0],h=o[1]==r[1];this.#c();const A=dk();this.#i=A,await i.transition({duration:t,easingFunction:fk,cancelToken:A,onUpdate:d=>{const g=Ak(a,l,d),p=a==l?d:(a-g)/(a-l),m=p*u+(1-p)*c,C=[f?o[0]:m-g/2,h?o[1]:m+g/2];s.domain(C)}}),this.#i===A&&(this.#i=null),s.domain(r)}else this.#c(),s.domain(r),i?.requestRender()}#c(){this.#i&&(this.#i.canceled=!0,this.#i=null)}resetZoom(){if(!this.isZoomingSupported())throw new Error("Not a zoomable scale!");const e=this.#e(),t=e.domain(),r=this.#r();return[0,1].some(i=>r[i]!=t[i])?(e.domain(r),!0):!1}getZoomLevel(){return this.isZoomable()?Pi(this.getZoomExtent())/Pi(this.#e().domain()):1}}function mk(n,e,t,r,i){return Ck(e)&&ye(e.extent)?t(e.extent):e&&n.props.type=="locus"?r():i()}function wk(n,e,t,r,i){let s=[...e],o=n.invert(r);switch(n.props.reverse&&(i=-i),"align"in n&&(o+=n.align()),n.type){case"linear":case"index":case"locus":s=a2(s,i||0),s=PA(s,o,t);break;case"log":s=c2(s,i||0),s=LA(s,o,t);break;case"pow":case"sqrt":{const a=n;s=l2(s,i||0,a.exponent()),s=Pc(s,o,t,a.exponent());break}default:throw new Error("Zooming is not implemented for: "+n.type)}return s}function Ck(n){return ze(n)}re("index",Ku,["continuous"]),re("locus",ED,["continuous"]),re("null",zu,[]);class yk{#e=new Set;#t=new Set;#n={domain:new Set,range:new Set};#r;#s;#o;#i;#c=!1;constructor(e){this.channel=e,this.type=null,this.name=void 0,this.#s=new ak({getMembers:()=>this.#l(),getDataMembers:()=>this.#l(this.#t),getType:()=>this.type,getLocusExtent:()=>this.#f(),fromComplexInterval:this.fromComplexInterval.bind(this)}),this.#r=new ZD({getParamRuntime:()=>this.#a.paramRuntime,onRangeChange:()=>this.#h("range"),onDomainChange:()=>this.#h("domain"),getGenomeStore:()=>this.#u.genomeStore}),this.#o=new pk({getScale:()=>this.getScale(),getAnimator:()=>this.#u.animator,getInitialDomainSnapshot:()=>this.#s.initialDomainSnapshot,getResetDomain:()=>this.#s.getConfiguredOrDefaultDomain(),fromComplexInterval:this.fromComplexInterval.bind(this),getGenomeExtent:()=>this.#f()})}get#a(){const e=this.#e.values().next().value;if(!e)throw new Error("ScaleResolution has no members!");return e.view}#l(e=this.#e){const t=new Set;for(const r of e){const i=r.view;i.isConfiguredVisible()&&(!i.isDataInitialized()&&!r.channelDef?.scale?.domain||t.add(r))}return t}get#u(){return this.#a.context}get zoomExtent(){return(this.#r.scale&&Pe(this.#r.scale.type)&&this.#o.getZoomExtent())??[-1/0,1/0]}#f(){return DD(this.#A())}#A(){if(this.type===Ls)return this.#r.scale??this.#r.getLocusGenome()}addEventListener(e,t){this.#n[e].add(t)}removeEventListener(e,t){this.#n[e].delete(t)}#h(e){for(const t of this.#n[e].values())t({type:e,scaleResolution:this})}#d(e){const{channel:t,channelDef:r}=e,i=r.type==null&&this.type;if(t!="sample"&&!r.type&&!yl(t)&&!i)throw new Error(`The "type" property must be defined in channel definition: "${t}": ${JSON.stringify(r)}. Must be one of: "quantitative", "ordinal", "nominal", "locus", "index"`);const s=t=="sample"?"nominal":r.type,o=r?.scale?.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(!i){if(!this.type)this.type=s;else if(s!==this.type&&!yl(t))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${s}. Use "resolve: independent" for channel ${this.channel}`)}this.#e.add(e),e.contributesToDomain&&this.#t.add(e),this.#s.invalidateConfiguredDomain()}registerMember(e){return this.#d(e),()=>{const t=this.#e.delete(e);return t&&(this.#t.delete(e),this.#s.invalidateConfiguredDomain()),t&&this.#e.size===0}}dispose(){this.#n.domain.clear(),this.#n.range.clear(),this.#r.dispose()}#g(){for(const e of this.#e)if(e.view.hasRendered())return!0;return!1}registerCollectorSubscriptions(e,t){const r=new Set;for(const o of t)o.channelDef.domainInert||r.add(ad(o,this.type));if(r.size===0)return()=>{};const i=()=>{this.reconfigureDomain()},s=[];for(const o of r)s.push(e.subscribeDomainChanges(o,i));return()=>{for(const o of s)o()}}#p(){return this.#s.hasConfiguredDomain()}#w(){const e=this.#r.scale;if(!e)return!1;const t=e.domain();return Pe(e.type)?t.length>2||t.length==2&&(t[0]!==0||t[1]!==0):t.length>0}#C(){return ik({channel:this.channel,dataType:this.type,members:this.#e,isExplicitDomain:this.#p()})}#m(e=!1){const t=this.#C();if(t===null||t.type=="null")return{type:"null"};const r=this.#s.getConfiguredOrDefaultDomain(e);if(sn(t.type)){const i=this.#p(),s=this.#E(i);if(r!=null){if(i&&s.domain().length>0&&!Ur(s.domain(),r))return this.#i=void 0,this.#m(e);s.addAll(r);const o=new Set(r),a=s.domain().filter(l=>o.has(l));t.domain=a.length>0?a:new ef}else{const o=s.domain();t.domain=o.length>0?o:new ef}t.domainIndexer=s}else r&&r.length>0&&(t.domain=r);return!t.domain&&t.domainMid!==void 0&&(t.domain=[t.domainMin??0,t.domainMax??1]),t}#E(e){return(!this.#i||this.#c!==e)&&(this.#i=Cp(),this.#c=e),this.#i}reconfigure(){this.#s.invalidateConfiguredDomain();const e=this.#y(!0);e&&(this.#I(e,(t,r)=>this.#r.reconfigureScale(r)),this.#b(e))}reconfigureDomain(){const e=this.#y(!0,!0);if(!e)return;const{domainConfig:t,targetDomain:r}=e,i=r!=null&&Ur(r,e.scale.domain());r!=null&&!i&&this.#I(e,s=>{s.domain(r),t.applyOrdinalUnknown&&s.unknown(t.ordinalUnknown)}),this.#b(e)}#y(e,t=!1){const r=this.#r.scale;if(!r||r.type=="null")return;const i={scale:r,props:this.#m(e),previousDomain:r.domain(),domainWasInitialized:this.#w()};if(t){const s=Op(r,i.props);return{...i,domainConfig:s,targetDomain:s.domain}}return i}#I(e,t){this.#r.withDomainNotificationsSuppressed(()=>{t(e.scale,e.props)})}#b(e){const{scale:t,previousDomain:r,domainWasInitialized:i}=e;if(this.#s.captureInitialDomain(t,i)){this.#h("domain");return}const s=t.domain(),o=this.#o.getDomainChangeAction(r,s);o==="restore"?this.#r.withDomainNotificationsSuppressed(()=>{t.domain(r)}):o==="animate"?this.#g()?(this.#r.withDomainNotificationsSuppressed(()=>{t.domain(r)}),this.zoomTo(s,500)):this.#h("domain"):o==="notify"&&this.#h("domain")}get scale(){if(this.#r.scale)return this.#r.scale;throw new Error("ScaleResolution.scale accessed before initialization. Call initializeScale().")}getScale(){return this.#r.scale??this.initializeScale()}initializeScale(){if(this.#r.scale)return this.#r.scale;const e=this.#m();return this.#r.createScale(e)}getDomain(){return this.getScale().domain()}getDataDomain(){return this.#s.getDataDomain()}getComplexDomain(){return QD(this.#A(),this.getDomain())}isZoomed(){return this.#o.isZoomed()}isZoomable(){return this.#o.isZoomable()}zoom(e,t,r){return this.#o.zoom(e,t,r)}async zoomTo(e,t=!1){return this.#o.zoomTo(e,t)}resetZoom(){return this.#o.resetZoom()}getZoomLevel(){return this.#o.getZoomLevel()}getAxisLength(){if(this.channel!=="x"&&this.channel!=="y")throw new Error("Axis length is only defined for x and y channels!");const e=Array.from(this.#e).map(t=>t.view.coords?.[this.channel==="x"?"width":"height"]).filter(t=>t>0);return e.length?e.reduce((t,r)=>Math.min(t,r),1e4):0}invertToComplex(e){const t=this.getScale();if("invert"in t){const r=t.invert(e);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(e){return BD(this.#A(),e)}fromComplex(e){return vD(this.#A(),e)}fromComplexInterval(e){return this.type==Ls?SD(this.#A(),e):e}}function tf(...n){for(const e of n)if(e!==void 0)return e}class Ik{#e=new Set;constructor(e){this.channel=e}get scaleResolution(){return this.#e.values().next().value?.view.getScaleResolution(this.channel)}#t(e){const{view:t}=e,r=t.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! Channel: ${this.channel}, existing views: [${Array.from(this.#e).map(i=>i.view.getPathString()).join(", ")}], new view: ${t.getPathString()}.`);this.#e.add(e),Ju(this,"axisProps")}registerMember(e){return this.#t(e),()=>this.removeMember(e)&&this.#e.size===0}removeMember(e){const t=this.#e.delete(e);return t&&Ju(this,"axisProps"),t}getAxisProps(){return La(this,"axisProps",()=>{const e=Array.from(this.#e).map(t=>{const r=t.view.mark.encoding[t.channel];return"axis"in r&&r.axis});return e.length>0&&e.some(t=>t===null)?null:Ua(e.filter(t=>t!==void 0),"axis",["title"])})}getTitle(){const e=o=>{const a=DE(o.view,o.channel);if(!ut(a))return{member:o,axisTitle:"axis"in a?a.axis?.title:void 0,explicitTitle:tf("axis"in a?a.axis?.title:void 0,a.title),implicitTitle:tf(en(a)?a.field:void 0,zr(a)?a.expr:void 0)}},t=Array.from(this.#e).map(e),r=t.map(o=>o.axisTitle).find(o=>o!==void 0);if(r!==void 0)return r;const i=t.filter(o=>{if(yl(o.member.channel)&&!o.explicitTitle){const a=In(o.member.channel);return t.find(l=>l.member.view==o.member.view&&l.member.channel==a)?.explicitTitle===void 0}return!0}),s=new Set(i.map(o=>tf(o.explicitTitle,o.implicitTitle)).filter(le));return s.size?[...s].join(", "):null}}function qp(n,e,{spacing:t,devicePixelRatio:r,offset:i,reverse:s}={}){t=t||0,i=i||0;let o=0,a=0;for(const d of n)o+=za(d.px)+(nf(d)?0:t),a+=za(d.grow);o-=t;const l=Math.max(0,e-o),c=r!==void 0?d=>Math.round(d*r)/r:d=>d,u=[],f=[],h=d=>{const g=u.length;if(!g)return;const p=(d?t:0)*(s?-1:1);A-=p;for(let m=0;m<g;m++)f.push({location:A+(m+1)/(g+1)*p,size:0});A+=p,u.length=0};let A=s?Math.max(e,o):0+i;if(n.length==1&&nf(n[0]))return[{location:A,size:0}];for(let d=0;d<n.length;d++){const g=n[d];if(nf(g))u.push(g);else{h(f.length>0);const p=za(g.px)+(a?za(g.grow)/a*l:0);s&&(A-=p),f.push({location:c(A),size:c(p)}),s?A-=t:A+=p+t}}return A+=s?t:-t,h(!1),f}function bk(n){let e=0,t=0;for(const r of n)e=Math.max(e,r.px??0),t=Math.max(t,r.grow??0);return{px:e,grow:t}}class Tn{constructor(e,t){this.width=e,this.height=t}addPadding(e){return this.#e(e.width,e.height)}subtractPadding(e){return this.#e(-e.width,-e.height)}#e(e,t){return new Tn({px:(this.width.px??0)+e,grow:this.width.grow},{px:(this.height.px??0)+t,grow:this.height.grow})}isGrowing(){return!!(this.width.grow||this.height.grow)}}const Us=Object.freeze({px:0,grow:0}),Kp=new Tn(Us,Us);function nf(n){return!n.px&&!n.grow}function za(n){return n||0}function Ek(n){return n&&(Ye(n.px)||Ye(n.grow))}function jp(n){if(hf(n))throw new Error("parseSizeDef does not accept step-based sizes.");if(Ek(n))return n;if(Ye(n))return{px:n,grow:0};if(n==="container")return{px:0,grow:1};if(!n)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${n}`)}class qe{constructor(e,t,r,i){this.top=e||0,this.right=t||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 qe(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new qe(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new qe(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}union(e){return new qe(Math.max(this.top,e.top),Math.max(this.right,e.right),Math.max(this.bottom,e.bottom),Math.max(this.left,e.left))}getHorizontal(){return new qe(0,this.right,0,this.left)}getVertical(){return new qe(this.top,0,this.bottom,0)}get horizontalTotal(){return this.left+this.right}get verticalTotal(){return this.top+this.bottom}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):rf}static createFromRecord(e){return new qe(e.top,e.right,e.bottom,e.left)}static zero(){return rf}static createUniformPadding(e){return new qe(e,e,e,e)}}const rf=qe.createUniformPadding(0);Object.freeze(rf);class ai{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,t){let r=this.length++;for(;r>0;){const i=r-1>>1,s=this.values[i];if(t>=s)break;this.ids[r]=this.ids[i],this.values[r]=s,r=i}this.ids[r]=e,this.values[r]=t}pop(){if(this.length===0)return;const e=this.ids,t=this.values,r=e[0],i=--this.length;if(i>0){const s=e[i],o=t[i];let a=0;const l=i>>1;for(;a<l;){const c=(a<<1)+1,u=c+1,f=c+(+(u<i)&+(t[u]<t[c]));if(t[f]>=o)break;e[a]=e[f],t[a]=t[f],a=f}e[a]=s,t[a]=o}return r}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){this.ids.length=this.values.length=this.length}}const Wp=Symbol("runtimeNode"),Xp=1e6;function xk(n){return n?(e,t)=>{n.addDisposer(e,t)}:()=>{}}function Zp(n,e){const t={id:n.id,name:n.name,kind:n.kind,get(){return n.value},subscribe(r){return n.listeners.add(r),()=>{n.listeners.delete(r)}}};return Object.defineProperty(t,Wp,{enumerable:!1,configurable:!1,writable:!1,value:n}),e?Object.assign(t,{set(r){e(r)}}):t}function $p(n){const e=n[Wp];if(!e)throw new Error("ParamRef is not bound to this graph runtime. Expected runtime-created ref.");return e}function em(n){for(const e of n)e()}class Bk{#e=1;#t=1;#n=0;#r=!1;#s=!1;#o=new Set;#i=new Set;#c=new ai;#a=new ai;#l=new Set;#u;constructor(e={}){this.#u=xk(e.lifecycleRegistry)}createWritable(e,t,r,i,s={}){const o="n"+this.#e++,a=s.notify??!0,l={id:o,name:t,kind:r,value:i,rank:0,disposed:!1,listeners:new Set,subscribe(u){return l.listeners.add(u),()=>{l.listeners.delete(u)}}},c=u=>{if(l.disposed)throw new Error('Cannot set disposed parameter "'+t+'" ('+o+").");u!==l.value&&(l.value=u,a&&(em(l.listeners),this.#d()))};return this.#u(e,()=>{l.disposed=!0,l.listeners.clear()}),Zp(l,c)}computed(e,t,r,i){const o=r.map($p).reduce((h,A)=>Math.max(h,A.rank),0),l={id:"n"+this.#e++,name:t,kind:"derived",rank:o+1,value:i(),disposed:!1,listeners:new Set,fn:i,subscribe(h){return l.listeners.add(h),()=>{l.listeners.delete(h)}}},c=()=>{l.disposed||this.#f(l)},u=r.map(h=>h.subscribe(c)),f=()=>{l.disposed||(l.disposed=!0,u.forEach(h=>h()),l.listeners.clear(),this.#o.delete(l))};return this.#u(e,f),Zp(l)}effect(e,t,r){const s=t.map($p).reduce((f,h)=>Math.max(f,h.rank),0),a={id:"n"+this.#e++,rank:s+1,disposed:!1,fn:r},l=()=>{a.disposed||this.#A(a)},c=t.map(f=>f.subscribe(l)),u=()=>{a.disposed||(a.disposed=!0,c.forEach(f=>f()),this.#i.delete(a))};return this.#u(e,u),u}runInTransaction(e){this.#n+=1;try{return e()}finally{this.#n-=1,this.#n===0&&this.#d()}}flushNow(){if(!(this.#n>0||this.#s)){this.#r=!1,this.#s=!0;try{let e=!0;for(;e;){for(e=!1;this.#c.length>0;){e=!0;const t=this.#c.pop();if(this.#o.delete(t),t.disposed)continue;const r=t.value,i=t.fn();i!==r&&(t.value=i,em(t.listeners))}for(;this.#a.length>0;){e=!0;const t=this.#a.pop();this.#i.delete(t),!t.disposed&&t.fn()}}}finally{this.#s=!1,this.#p()}}}whenPropagated(e={}){if(this.#g())return Promise.resolve();const{signal:t,timeoutMs:r}=e;return t?.aborted?Promise.reject(new Error("whenPropagated aborted")):new Promise((i,s)=>{const o={resolve:i,reject:s};t&&(o.abortHandler=()=>{this.#l.delete(o),s(new Error("whenPropagated aborted"))},t.addEventListener("abort",o.abortHandler,{once:!0})),r!=null&&(o.timeoutId=setTimeout(()=>{this.#l.delete(o),o.abortHandler&&t?.removeEventListener("abort",o.abortHandler),s(new Error("whenPropagated timeout after "+r+" ms"))},r)),this.#l.add(o)})}#f(e){this.#o.has(e)||(this.#o.add(e),this.#c.push(e,this.#h(e.rank)),this.#d())}#A(e){this.#i.has(e)||(this.#i.add(e),this.#a.push(e,this.#h(e.rank)),this.#d())}#h(e){const t=this.#t%Xp;return this.#t+=1,e*Xp+t}#d(){this.#n>0||this.#r||this.#s||(this.#r=!0,queueMicrotask(()=>{this.flushNow()}))}#g(){return this.#n===0&&!this.#r&&!this.#s&&this.#c.length===0&&this.#a.length===0&&this.#o.size===0&&this.#i.size===0}#p(){if(this.#g()){for(const e of this.#l)e.timeoutId&&clearTimeout(e.timeoutId),e.resolve();this.#l.clear()}}}class vk{#e=1;#t=new Map;createOwner(e,t){const r=e+":"+t+":"+this.#e++;return this.#t.set(r,new Set),r}addDisposer(e,t){const r=this.#t.get(e);if(!r)throw new Error("Unknown owner: "+e);r.add(t)}disposeOwner(e){const t=this.#t.get(e);if(t){for(const r of t)r();t.clear(),this.#t.delete(e)}}}class Sk{#e=1;#t=new Map;createRootScope(e){const t="scope:"+this.#e++;return this.#t.set(t,{params:new Map,ownerId:e}),t}createChildScope(e,t){if(!this.#t.has(t))throw new Error("Unknown parent scope: "+t);const r="scope:"+this.#e++;return this.#t.set(r,{parentScope:t,params:new Map,ownerId:e}),r}getOwnerId(e){const t=this.#t.get(e);if(!t)throw new Error("Unknown scope: "+e);return t.ownerId}clearScope(e){const t=this.#t.get(e);if(!t)throw new Error("Unknown scope: "+e);t.params.clear()}register(e,t,r){Tt(t);const i=this.#t.get(e);if(!i)throw new Error("Unknown scope: "+e);if(i.params.has(t))throw new Error('Parameter "'+t+'" already exists in scope '+e);return i.params.set(t,r),r}resolve(e,t){Tt(t);let r=e;for(;r;){const i=this.#t.get(r);if(!i)throw new Error("Unknown scope: "+r);const s=i.params.get(t);if(s)return s;r=i.parentScope}}}const Qk="RawCode",Dk="Literal",kk="Property",Fk="Identifier",Rk="ArrayExpression",Mk="BinaryExpression",Nk="CallExpression",Tk="ConditionalExpression",Pk="LogicalExpression",Lk="MemberExpression",Ok="ObjectExpression",Uk="UnaryExpression";function Qt(n){this.type=n}Qt.prototype.visit=function(n){let e,t,r;if(n(this))return 1;for(e=Gk(this),t=0,r=e.length;t<r;++t)if(e[t].visit(n))return 1};function Gk(n){switch(n.type){case Rk:return n.elements;case Mk:case Pk:return[n.left,n.right];case Nk:return[n.callee].concat(n.arguments);case Tk:return[n.test,n.consequent,n.alternate];case Lk:return[n.object,n.property];case Ok:return n.properties;case kk:return[n.key,n.value];case Uk:return[n.argument];case Fk:case Dk:case Qk:default:return[]}}var Vt,z,k,Ke,ie,Ha=1,Gs=2,gr=3,Pn=4,Va=5,pr=6,ot=7,zs=8,zk=9;Vt={},Vt[Ha]="Boolean",Vt[Gs]="<end>",Vt[gr]="Identifier",Vt[Pn]="Keyword",Vt[Va]="Null",Vt[pr]="Numeric",Vt[ot]="Punctuator",Vt[zs]="String",Vt[zk]="RegularExpression";var Hk="ArrayExpression",Vk="BinaryExpression",_k="CallExpression",Yk="ConditionalExpression",tm="Identifier",Jk="Literal",qk="LogicalExpression",Kk="MemberExpression",jk="ObjectExpression",Wk="Property",Xk="UnaryExpression",Le="Unexpected token %0",Zk="Unexpected number",$k="Unexpected string",e4="Unexpected identifier",t4="Unexpected reserved word",n4="Unexpected end of input",sf="Invalid regular expression",of="Invalid regular expression: missing /",nm="Octal literals are not allowed in strict mode.",r4="Duplicate data property in object literal not allowed in strict mode",_e="ILLEGAL",Hs="Disabled.",i4=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]"),s4=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 _a(n,e){if(!n)throw new Error("ASSERT: "+e)}function on(n){return n>=48&&n<=57}function af(n){return"0123456789abcdefABCDEF".includes(n)}function Vs(n){return"01234567".includes(n)}function o4(n){return n===32||n===9||n===11||n===12||n===160||n>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(n)}function _s(n){return n===10||n===13||n===8232||n===8233}function Ys(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n===92||n>=128&&i4.test(String.fromCharCode(n))}function Ya(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57||n===92||n>=128&&s4.test(String.fromCharCode(n))}const a4={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 rm(){for(;k<Ke;){const n=z.charCodeAt(k);if(o4(n)||_s(n))++k;else break}}function cf(n){var e,t,r,i=0;for(t=n==="u"?4:2,e=0;e<t;++e)k<Ke&&af(z[k])?(r=z[k++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):ee({},Le,_e);return String.fromCharCode(i)}function c4(){var n,e,t,r;for(n=z[k],e=0,n==="}"&&ee({},Le,_e);k<Ke&&(n=z[k++],!!af(n));)e=e*16+"0123456789abcdef".indexOf(n.toLowerCase());return(e>1114111||n!=="}")&&ee({},Le,_e),e<=65535?String.fromCharCode(e):(t=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(t,r))}function im(){var n,e;for(n=z.charCodeAt(k++),e=String.fromCharCode(n),n===92&&(z.charCodeAt(k)!==117&&ee({},Le,_e),++k,n=cf("u"),(!n||n==="\\"||!Ys(n.charCodeAt(0)))&&ee({},Le,_e),e=n);k<Ke&&(n=z.charCodeAt(k),!!Ya(n));)++k,e+=String.fromCharCode(n),n===92&&(e=e.substr(0,e.length-1),z.charCodeAt(k)!==117&&ee({},Le,_e),++k,n=cf("u"),(!n||n==="\\"||!Ya(n.charCodeAt(0)))&&ee({},Le,_e),e+=n);return e}function l4(){var n,e;for(n=k++;k<Ke;){if(e=z.charCodeAt(k),e===92)return k=n,im();if(Ya(e))++k;else break}return z.slice(n,k)}function u4(){var n,e,t;return n=k,e=z.charCodeAt(k)===92?im():l4(),e.length===1?t=gr:a4.hasOwnProperty(e)?t=Pn:e==="null"?t=Va:e==="true"||e==="false"?t=Ha:t=gr,{type:t,value:e,start:n,end:k}}function lf(){var n=k,e=z.charCodeAt(k),t,r=z[k],i,s,o;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++k,{type:ot,value:String.fromCharCode(e),start:n,end:k};default:if(t=z.charCodeAt(k+1),t===61)switch(e){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return k+=2,{type:ot,value:String.fromCharCode(e)+String.fromCharCode(t),start:n,end:k};case 33:case 61:return k+=2,z.charCodeAt(k)===61&&++k,{type:ot,value:z.slice(n,k),start:n,end:k}}}if(o=z.substr(k,4),o===">>>=")return k+=4,{type:ot,value:o,start:n,end:k};if(s=o.substr(0,3),s===">>>"||s==="<<="||s===">>=")return k+=3,{type:ot,value:s,start:n,end:k};if(i=s.substr(0,2),r===i[1]&&"+-<>&|".includes(r)||i==="=>")return k+=2,{type:ot,value:i,start:n,end:k};if(i==="//"&&ee({},Le,_e),"<>=!+-*%&|^/".includes(r))return++k,{type:ot,value:r,start:n,end:k};ee({},Le,_e)}function f4(n){let e="";for(;k<Ke&&af(z[k]);)e+=z[k++];return e.length===0&&ee({},Le,_e),Ys(z.charCodeAt(k))&&ee({},Le,_e),{type:pr,value:parseInt("0x"+e,16),start:n,end:k}}function A4(n){let e="0"+z[k++];for(;k<Ke&&Vs(z[k]);)e+=z[k++];return(Ys(z.charCodeAt(k))||on(z.charCodeAt(k)))&&ee({},Le,_e),{type:pr,value:parseInt(e,8),octal:!0,start:n,end:k}}function sm(){var n,e,t;if(t=z[k],_a(on(t.charCodeAt(0))||t===".","Numeric literal must start with a decimal digit or a decimal point"),e=k,n="",t!=="."){if(n=z[k++],t=z[k],n==="0"){if(t==="x"||t==="X")return++k,f4(e);if(Vs(t))return A4(e);t&&on(t.charCodeAt(0))&&ee({},Le,_e)}for(;on(z.charCodeAt(k));)n+=z[k++];t=z[k]}if(t==="."){for(n+=z[k++];on(z.charCodeAt(k));)n+=z[k++];t=z[k]}if(t==="e"||t==="E")if(n+=z[k++],t=z[k],(t==="+"||t==="-")&&(n+=z[k++]),on(z.charCodeAt(k)))for(;on(z.charCodeAt(k));)n+=z[k++];else ee({},Le,_e);return Ys(z.charCodeAt(k))&&ee({},Le,_e),{type:pr,value:parseFloat(n),start:e,end:k}}function h4(){var n="",e,t,r,i,s=!1;for(e=z[k],_a(e==="'"||e==='"',"String literal must starts with a quote"),t=k,++k;k<Ke;)if(r=z[k++],r===e){e="";break}else if(r==="\\")if(r=z[k++],!r||!_s(r.charCodeAt(0)))switch(r){case"u":case"x":z[k]==="{"?(++k,n+=c4()):n+=cf(r);break;case"n":n+=`
601
+ `;break;case"r":n+="\r";break;case"t":n+=" ";break;case"b":n+="\b";break;case"f":n+="\f";break;case"v":n+="\v";break;default:Vs(r)?(i="01234567".indexOf(r),i!==0&&(s=!0),k<Ke&&Vs(z[k])&&(s=!0,i=i*8+"01234567".indexOf(z[k++]),"0123".includes(r)&&k<Ke&&Vs(z[k])&&(i=i*8+"01234567".indexOf(z[k++]))),n+=String.fromCharCode(i)):n+=r;break}else r==="\r"&&z[k]===`
602
+ `&&++k;else{if(_s(r.charCodeAt(0)))break;n+=r}return e!==""&&ee({},Le,_e),{type:zs,value:n,octal:s,start:t,end:k}}function d4(n,e){let t=n;e.includes("u")&&(t=t.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";ee({},sf)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(t)}catch{ee({},sf)}try{return new RegExp(n,e)}catch{return null}}function g4(){var n,e,t,r,i;for(n=z[k],_a(n==="/","Regular expression literal must start with a slash"),e=z[k++],t=!1,r=!1;k<Ke;)if(n=z[k++],e+=n,n==="\\")n=z[k++],_s(n.charCodeAt(0))&&ee({},of),e+=n;else if(_s(n.charCodeAt(0)))ee({},of);else if(t)n==="]"&&(t=!1);else if(n==="/"){r=!0;break}else n==="["&&(t=!0);return r||ee({},of),i=e.substr(1,e.length-2),{value:i,literal:e}}function p4(){var n,e,t;for(e="",t="";k<Ke&&(n=z[k],!!Ya(n.charCodeAt(0)));)++k,n==="\\"&&k<Ke?ee({},Le,_e):(t+=n,e+=n);return t.search(/[^gimuy]/g)>=0&&ee({},sf,t),{value:t,literal:e}}function m4(){var n,e,t,r;return ie=null,rm(),n=k,e=g4(),t=p4(),r=d4(e.value,t.value),{literal:e.literal+t.literal,value:r,regex:{pattern:e.value,flags:t.value},start:n,end:k}}function w4(n){return n.type===gr||n.type===Pn||n.type===Ha||n.type===Va}function om(){if(rm(),k>=Ke)return{type:Gs,start:k,end:k};const n=z.charCodeAt(k);return Ys(n)?u4():n===40||n===41||n===59?lf():n===39||n===34?h4():n===46?on(z.charCodeAt(k+1))?sm():lf():on(n)?sm():lf()}function at(){const n=ie;return k=n.end,ie=om(),k=n.end,n}function am(){const n=k;ie=om(),k=n}function C4(n){const e=new Qt(Hk);return e.elements=n,e}function cm(n,e,t){const r=new Qt(n==="||"||n==="&&"?qk:Vk);return r.operator=n,r.left=e,r.right=t,r}function y4(n,e){const t=new Qt(_k);return t.callee=n,t.arguments=e,t}function I4(n,e,t){const r=new Qt(Yk);return r.test=n,r.consequent=e,r.alternate=t,r}function uf(n){const e=new Qt(tm);return e.name=n,e}function Js(n){const e=new Qt(Jk);return e.value=n.value,e.raw=z.slice(n.start,n.end),n.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=n.regex),e}function lm(n,e,t){const r=new Qt(Kk);return r.computed=n==="[",r.object=e,r.property=t,r.computed||(t.member=!0),r}function b4(n){const e=new Qt(jk);return e.properties=n,e}function um(n,e,t){const r=new Qt(Wk);return r.key=e,r.value=t,r.kind=n,r}function E4(n,e){const t=new Qt(Xk);return t.operator=n,t.argument=e,t.prefix=!0,t}function ee(n,e){var t,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(s,o)=>(_a(o<r.length,"Message reference must be in range"),r[o]));throw t=new Error(i),t.index=k,t.description=i,t}function Ja(n){n.type===Gs&&ee(n,n4),n.type===pr&&ee(n,Zk),n.type===zs&&ee(n,$k),n.type===gr&&ee(n,e4),n.type===Pn&&ee(n,t4),ee(n,Le,n.value)}function je(n){const e=at();(e.type!==ot||e.value!==n)&&Ja(e)}function he(n){return ie.type===ot&&ie.value===n}function ff(n){return ie.type===Pn&&ie.value===n}function x4(){const n=[];for(k=ie.start,je("[");!he("]");)he(",")?(at(),n.push(null)):(n.push(mr()),he("]")||je(","));return at(),C4(n)}function fm(){k=ie.start;const n=at();return n.type===zs||n.type===pr?(n.octal&&ee(n,nm),Js(n)):uf(n.value)}function B4(){var n,e,t,r;if(k=ie.start,n=ie,n.type===gr)return t=fm(),je(":"),r=mr(),um("init",t,r);if(n.type===Gs||n.type===ot)Ja(n);else return e=fm(),je(":"),r=mr(),um("init",e,r)}function v4(){var n=[],e,t,r,i={},s=String;for(k=ie.start,je("{");!he("}");)e=B4(),e.key.type===tm?t=e.key.name:t=s(e.key.value),r="$"+t,Object.prototype.hasOwnProperty.call(i,r)?ee({},r4):i[r]=!0,n.push(e),he("}")||je(",");return je("}"),b4(n)}function S4(){je("(");const n=Af();return je(")"),n}const Q4={if:1};function D4(){var n,e,t;if(he("("))return S4();if(he("["))return x4();if(he("{"))return v4();if(n=ie.type,k=ie.start,n===gr||Q4[ie.value])t=uf(at().value);else if(n===zs||n===pr)ie.octal&&ee(ie,nm),t=Js(at());else{if(n===Pn)throw new Error(Hs);n===Ha?(e=at(),e.value=e.value==="true",t=Js(e)):n===Va?(e=at(),e.value=null,t=Js(e)):he("/")||he("/=")?(t=Js(m4()),am()):Ja(at())}return t}function k4(){const n=[];if(je("("),!he(")"))for(;k<Ke&&(n.push(mr()),!he(")"));)je(",");return je(")"),n}function F4(){k=ie.start;const n=at();return w4(n)||Ja(n),uf(n.value)}function R4(){return je("."),F4()}function M4(){je("[");const n=Af();return je("]"),n}function N4(){var n,e,t;for(n=D4();;)if(he("."))t=R4(),n=lm(".",n,t);else if(he("("))e=k4(),n=y4(n,e);else if(he("["))t=M4(),n=lm("[",n,t);else break;return n}function Am(){const n=N4();if(ie.type===ot&&(he("++")||he("--")))throw new Error(Hs);return n}function qa(){var n,e;if(ie.type!==ot&&ie.type!==Pn)e=Am();else{if(he("++")||he("--"))throw new Error(Hs);if(he("+")||he("-")||he("~")||he("!"))n=at(),e=qa(),e=E4(n.value,e);else{if(ff("delete")||ff("void")||ff("typeof"))throw new Error(Hs);e=Am()}}return e}function hm(n){let e=0;if(n.type!==ot&&n.type!==Pn)return 0;switch(n.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 T4(){var n,e,t,r,i,s,o,a,l,c;if(n=ie,l=qa(),r=ie,i=hm(r),i===0)return l;for(r.prec=i,at(),e=[n,ie],o=qa(),s=[l,r,o];(i=hm(ie))>0;){for(;s.length>2&&i<=s[s.length-2].prec;)o=s.pop(),a=s.pop().value,l=s.pop(),e.pop(),t=cm(a,l,o),s.push(t);r=at(),r.prec=i,s.push(r),e.push(ie),t=qa(),s.push(t)}for(c=s.length-1,t=s[c],e.pop();c>1;)e.pop(),t=cm(s[c-1].value,s[c-2],t),c-=2;return t}function mr(){var n,e,t;return n=T4(),he("?")&&(at(),e=mr(),je(":"),t=mr(),n=I4(n,e,t)),n}function Af(){const n=mr();if(he(","))throw new Error(Hs);return n}function dm(n){z=n,k=0,Ke=z.length,ie=null,am();const e=Af();if(ie.type!==Gs)throw new Error("Unexpect token after expression.");return e}var P4={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 gm(n){function e(o,a,l,c){let u=n(a[0]);return l&&(u=l+"("+u+")",l.lastIndexOf("new ",0)===0&&(u="("+u+")")),u+"."+o+(c<0?"":c===0?"()":"("+a.slice(1).map(n).join(",")+")")}function t(o,a,l){return c=>e(o,c,a,l)}const r="new Date",i="String",s="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",hypot:"Math.hypot",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(o){o.length<3&&Ee("Missing arguments to clamp function."),o.length>3&&Ee("Too many arguments to clamp function.");const a=o.map(n);return"Math.max("+a[1]+", Math.min("+a[2]+","+a[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:t("getDate",r,0),day:t("getDay",r,0),year:t("getFullYear",r,0),month:t("getMonth",r,0),hours:t("getHours",r,0),minutes:t("getMinutes",r,0),seconds:t("getSeconds",r,0),milliseconds:t("getMilliseconds",r,0),time:t("getTime",r,0),timezoneoffset:t("getTimezoneOffset",r,0),utcdate:t("getUTCDate",r,0),utcday:t("getUTCDay",r,0),utcyear:t("getUTCFullYear",r,0),utcmonth:t("getUTCMonth",r,0),utchours:t("getUTCHours",r,0),utcminutes:t("getUTCMinutes",r,0),utcseconds:t("getUTCSeconds",r,0),utcmilliseconds:t("getUTCMilliseconds",r,0),length:t("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:t("toUpperCase",i,0),lower:t("toLowerCase",i,0),substring:t("substring",i),split:t("split",i),trim:t("trim",i,0),btoa:"btoa",atob:"atob",regexp:s,test:t("test",s),if:function(o){o.length<3&&Ee("Missing arguments to if function."),o.length>3&&Ee("Too many arguments to if function.");const a=o.map(n);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function L4(n){const e=n&&n.length-1;return e&&(n[0]==='"'&&n[e]==='"'||n[0]==="'"&&n[e]==="'")?n.slice(1,-1):n}function pm(n){n=n||{};const e=n.allowed?bo(n.allowed):{},t=n.forbidden?bo(n.forbidden):{},r=n.constants||P4,i=(n.functions||gm)(f),s=n.globalvar,o=n.fieldvar,a=At(s)?s:d=>`${s}["${d}"]`;[...Object.getOwnPropertyNames(Object.prototype).filter(d=>typeof Object.prototype[d]=="function")];let l={},c={},u=0;function f(d){if(le(d))return d;const g=h[d.type];return g==null&&Ee("Unsupported type: "+d.type),g(d)}const h={Literal:d=>d.raw,Identifier:d=>{const g=d.name;return u>0?g:kr(t,g)?Ee("Illegal identifier: "+g):kr(r,g)?r[g]:kr(e,g)?g:(l[g]=1,a(g))},MemberExpression:d=>{const g=!d.computed,p=f(d.object);g&&(u+=1);const m=f(d.property);return p===o&&(c[L4(m)]=1),g&&(u-=1),p+(g?"."+m:"["+m+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&Ee("Illegal callee type: "+d.callee.type);const g=d.callee.name,p=d.arguments,m=kr(i,g)&&i[g];return m||Ee("Unrecognized function: "+g),At(m)?m(p):m+"("+p.map(f).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(f).join(",")+"]",BinaryExpression:d=>"("+f(d.left)+" "+d.operator+" "+f(d.right)+")",UnaryExpression:d=>"("+d.operator+f(d.argument)+")",ConditionalExpression:d=>"("+f(d.test)+"?"+f(d.consequent)+":"+f(d.alternate)+")",LogicalExpression:d=>"("+f(d.left)+d.operator+f(d.right)+")",ObjectExpression:d=>{for(const g of d.properties){const p=g.key.name;i2.has(p)&&Ee("Illegal property: "+p)}return"{"+d.properties.map(f).join(",")+"}"},Property:d=>{u+=1;const g=f(d.key);return u-=1,g+":"+f(d.value)}};function A(d){const g={code:f(d),globals:Object.keys(l),fields:Object.keys(c)};return l={},c={},g}return A.functions=i,A.constants=r,A}function mm(n,e,t){return t=(t-n)/(e-n),t=Math.max(0,Math.min(1,t)),t*t*(3-2*t)}function O4(n,e,t){return Xr((t-n)/(e-n),0,1)}const wm={clamp:Xr,format(n,e){return He(e)(n)},mapHasKey(n,e){return n.has(e)},isArray:ye,isBoolean:Ti,isDefined(n){return n!==void 0},isNumber:Ye,isObject:ze,isRegExp:C2,isString:le,isValid(n){return n!=null&&n===n},lerp:GA,linearstep:O4,replace(n,e,t){return String(n).replace(e,t)},smoothstep:mm};function U4(n){const e=gm(n);for(const t in wm)e[t]=`this.${t}`;return e}const G4=pm({forbidden:[],allowed:["datum","undefined"],globalvar:"globalObject",fieldvar:"datum",functions:U4});function z4(n,e={}){try{const t=dm(n),r=G4(t),i=Function("datum","globalObject",`"use strict";
645
603
  try {
646
604
  return (${r.code});
647
605
  } catch (e) {
648
606
  throw new Error("Error evaluating expression: " + ${JSON.stringify(n)} + ", " + e.message, e);
649
- }`).bind(k2),s=(o=>i(o,t));return s.fields=r.fields,s.globals=r.globals,s.code=r.code,s}catch(e){throw new Error(`Invalid expression: ${n}, ${e.message}`)}}const OM=Q2({forbidden:[],allowed:["event"],globalvar:"globalObject"});function F2(n){try{const t=v2(n),e=OM(t);return Function("event","globalObject",`"use strict";
607
+ }`).bind(wm),s=(o=>i(o,e));return s.fields=r.fields,s.globals=r.globals,s.code=r.code,s}catch(t){throw new Error(`Invalid expression: ${n}, ${t.message}`)}}const H4=pm({forbidden:[],allowed:["event"],globalvar:"globalObject"});function Cm(n){try{const e=dm(n),t=H4(e);return Function("event","globalObject",`"use strict";
650
608
  try {
651
- return !!(${e.code});
609
+ return !!(${t.code});
652
610
  } catch (e) {
653
611
  throw new Error("Error evaluating expression: " + ${JSON.stringify(n)} + ", " + e.message, e);
654
- }`)}catch(t){throw new Error(`Invalid expression: ${n}, ${t.message}`)}}function UM(n,t={}){return LM(n,t)}function R2(n,t){const e={},r=UM(n,e),i=new Map;for(const o of r.globals){if(i.has(o))continue;const a=t(o);if(!a)throw new Error('Unknown variable "'+o+'" in expression: '+n);i.set(o,a),Object.defineProperty(e,o,{enumerable:!0,get(){return a.get()}})}const s=new Set;return r.subscribe=o=>{const a=[];for(const u of i.values())a.push(u.subscribe(o));let l=!0;const c=()=>{l&&(l=!1,s.delete(c),a.forEach(u=>u()))};return s.add(c),c},r.invalidate=()=>{for(const o of s)o();s.clear()},r.identifier=()=>r.code+"|"+Array.from(i.values()).map(o=>o.id).join(","),{expression:r,dependencies:Array.from(i.values())}}class GM{constructor(){v(this,fs,new E5);v(this,er,new I5({lifecycleRegistry:g(this,fs)}));v(this,yt,new b5)}createScope(t){const e=g(this,fs).createOwner("scope",t??"root");return t?g(this,yt).createChildScope(e,t):g(this,yt).createRootScope(e)}disposeScope(t){const e=g(this,yt).getOwnerId(t);g(this,fs).disposeOwner(e),g(this,yt).clearScope(t)}addScopeDisposer(t,e){const r=g(this,yt).getOwnerId(t);g(this,fs).addDisposer(r,e)}registerBase(t,e,r,i){const s=g(this,yt).getOwnerId(t),o=g(this,er).createWritable(s,e,"base",r,i);return g(this,yt).register(t,e,o)}registerSelection(t,e,r,i){const s=g(this,yt).getOwnerId(t),o=g(this,er).createWritable(s,e,"selection",r,i);return g(this,yt).register(t,e,o)}registerDerived(t,e,r){const{expression:i,dependencies:s}=R2(r,l=>this.resolve(t,l)),o=g(this,yt).getOwnerId(t),a=g(this,er).computed(o,e,s,()=>i(null));return g(this,yt).register(t,e,a)}createExpression(t,e){const{expression:r}=R2(e,i=>this.resolve(t,i));return r}resolve(t,e){return g(this,yt).resolve(t,e)}runInTransaction(t){return g(this,er).runInTransaction(t)}flushNow(){g(this,er).flushNow()}whenPropagated(t){return g(this,er).whenPropagated(t)}}fs=new WeakMap,er=new WeakMap,yt=new WeakMap;class zM{constructor(t){v(this,Hl);v(this,Pe);v(this,Nt);v(this,Wt,new Map);v(this,un,new Map);v(this,Zr,new Map);v(this,ea);v(this,zl,!1);Q(this,ea,t??(()=>{}));const e=g(this,ea).call(this);e?(Q(this,Pe,g(e,Pe)),Q(this,Nt,g(this,Pe).createScope(g(e,Nt)))):(Q(this,Pe,new GM),Q(this,Nt,g(this,Pe).createScope()))}registerParam(t){const e=t.name;if(mn(e),g(this,Zr).has(e))throw new Error('Parameter "'+e+'" already registered in this scope.');if("value"in t&&"expr"in t)throw new Error(`The parameter "${e}" must not have both value and expr properties!`);let r,i;if(t.push=="outer"){const s=this.findRuntimeForParam(e);if(!s)throw new Error(`Parameter "${e}" not found in outer scope!`);const o=s.paramConfigs.get(e);if(!o)throw new Error(`Outer parameter "${e}" exists as a value but has no registered config.`);if("expr"in o||"select"in o)throw new Error(`The outer parameter "${e}" must not have expr or select properties!`);r=a=>{s.setValue(e,a)},g(this,Wt).set(e,r)}else if("value"in t)i=nd(t,this),r=F(this,Hl,Sp).call(this,e,i);else if("expr"in t){const s=g(this,Pe).registerDerived(g(this,Nt),e,t.expr);g(this,un).set(e,s),r=()=>{throw new Error('Cannot set derived parameter "'+e+'".')}}else i=nd(t,this),r=F(this,Hl,Sp).call(this,e,i);if("select"in t){if(i??(i=nd(t,this)),!g(this,Wt).has(e)){const s=g(this,Pe).registerSelection(g(this,Nt),e,i);g(this,un).set(e,s),g(this,Wt).set(e,o=>{s.set(o),g(this,Pe).flushNow()}),r=g(this,Wt).get(e)}r(i)}return g(this,Zr).set(e,t),r}allocateSetter(t,e,r=!1){if(mn(t),g(this,Wt).has(t))throw new Error("Setter already allocated for parameter: "+t);const i=g(this,Pe).registerBase(g(this,Nt),t,e,{notify:!r});g(this,un).set(t,i);const s=o=>{i.set(o),g(this,Pe).flushNow()};return g(this,Wt).set(t,s),s}setValue(t,e){mn(t);const r=g(this,Wt).get(t);if(!r)throw new Error("Writable parameter not found in this scope: "+t);r(e)}getValue(t){var e;return(e=g(this,un).get(t))==null?void 0:e.get()}subscribe(t,e){mn(t);const r=this.findRuntimeForParam(t);if(!r)throw new Error("Parameter not found: "+t);const i=g(r,un).get(t);if(!i)throw new Error("Parameter found without local reference: "+t);return i.subscribe(e)}findValue(t){const e=this.findRuntimeForParam(t);return e==null?void 0:e.getValue(t)}get paramConfigs(){return g(this,Zr)}findRuntimeForParam(t){var e;return g(this,un).has(t)?this:(e=g(this,ea).call(this))==null?void 0:e.findRuntimeForParam(t)}createExpression(t){return g(this,Pe).createExpression(g(this,Nt),t)}watchExpression(t,e,r={}){var o;const i=this.createExpression(t),s=i.subscribe(e);return(r.scopeOwned??!0)&&g(this,Pe).addScopeDisposer(g(this,Nt),s),(o=r.registerDisposer)==null||o.call(r,s),i}evaluateAndGet(t){return this.createExpression(t)()}runInTransaction(t){return g(this,Pe).runInTransaction(t)}flushNow(){g(this,Pe).flushNow()}whenPropagated(t){return g(this,Pe).whenPropagated(t)}dispose(){g(this,zl)||(Q(this,zl,!0),g(this,Pe).disposeScope(g(this,Nt)),g(this,Wt).clear(),g(this,un).clear(),g(this,Zr).clear())}hasPointSelections(){for(const t of g(this,Zr).values())if(td(t)){const e=t.select;if(we(e)){if(e=="point")return!0}else if(e.type=="point")return!0}return!1}}Pe=new WeakMap,Nt=new WeakMap,Wt=new WeakMap,un=new WeakMap,Zr=new WeakMap,ea=new WeakMap,zl=new WeakMap,Hl=new WeakSet,Sp=function(t,e){const r=g(this,Pe).registerBase(g(this,Nt),t,e);g(this,un).set(t,r);const i=s=>{r.set(s),g(this,Pe).flushNow()};return g(this,Wt).set(t,i),i};function Zc(n,t){return!t||/^(data:|([A-Za-z]+:)?\/\/)/.test(n)||n.startsWith("/")?n:(t.endsWith("/")||(t+="/"),t+n)}function HM(n){if(!n)return n;if(/[?#]/.test(n))throw new Error(`Invalid base URL: ${n} - cannot contain query or hash.`);return n.endsWith("/")?n:n+"/"}const on="VISIT_SKIP",Tr="VISIT_STOP",M2=n=>n;class N2{constructor(t,e,r,i,s,o={}){v(this,Tt);v(this,ta);v(this,As,{});v(this,na,{});v(this,ra,{});v(this,Vl);v(this,_l);v(this,ia,!1);X(this,"opacityFunction",M2);v(this,sa,[]);v(this,oa,"none");X(this,"facetCoords",new Tn([],JSON.stringify));var a;if(!t)throw new Error("View spec must be defined!");if(this.context=e,this.layoutParent=r,this.dataParent=i,Q(this,ta,s),this.spec=t,this.resolutions={scale:{},axis:{}},My(this),this.options={blockEncodingInheritance:!1,...o},this.flowHandle=void 0,this.needsAxes={x:!1,y:!1},this.paramRuntime=new zM(()=>{var l;return(l=this.dataParent)==null?void 0:l.paramRuntime}),t.params)for(const l of t.params)this.paramRuntime.registerParam(l);if(!((a=this.layoutParent)!=null&&a.options.layeredChildren)){const l=c=>this.paramRuntime.findRuntimeForParam(c)?void 0:this.paramRuntime.allocateSetter(c,0);Q(this,_l,l("height")),Q(this,Vl,l("width"))}}get name(){return this.spec.name??g(this,ta)}get explicitName(){return this.spec.name}get defaultName(){return g(this,ta)}get coords(){return this.facetCoords.values().next().value}getPadding(){return this._cache("size/padding",()=>ct.createFromConfig(this.spec.padding))}getOverhang(){return ct.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache("size/size",()=>this.isConfiguredVisible()?new Mr(F(this,Tt,vu).call(this,"width"),F(this,Tt,vu).call(this,"height")):o2)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return o2;const t=this.getSize();return new Mr(F(this,Tt,vu).call(this,"viewportWidth")??t.width,F(this,Tt,vu).call(this,"viewportHeight")??t.height)}registerStepSizeInvalidation(){F(this,Tt,Qp).call(this,"width","x"),F(this,Tt,Qp).call(this,"height","y")}isConfiguredVisible(){return this.context.isViewConfiguredVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}isVisible(){return this.getLayoutAncestors().every(t=>t.isConfiguredVisible())}isDomainInert(){if(this.spec.domainInert)return!0;const t=this.dataParent;return t?t.isDomainInert():!1}getDataInitializationState(){return g(this,oa)}_setDataInitializationState(t){Q(this,oa,t)}isDataInitialized(){return g(this,oa)==="ready"}getEffectiveOpacity(){var t;return this.opacityFunction(((t=this.layoutParent)==null?void 0:t.getEffectiveOpacity())??1)}getPathString(){return this.getLayoutAncestors().map(t=>t.name).reverse().join("/")}getLayoutAncestors(){return F(this,Tt,Dp).call(this,"layoutParent")}getDataAncestors(){return F(this,Tt,Dp).call(this,"dataParent")}handleBroadcast(t){for(const e of g(this,As)[t.type]||[])e(t)}_addBroadcastHandler(t,e){let r=g(this,As)[t];return r||(r=[],g(this,As)[t]=r),r.push(e),()=>{const i=g(this,As)[t];if(!i)return;const s=i.indexOf(e);s>=0&&i.splice(s,1)}}handleInteractionEvent(t,e,r){const i=r?g(this,na):g(this,ra);for(const s of i[e.type]||[])s(t,e)}addInteractionEventListener(t,e,r){const i=r?g(this,na):g(this,ra);let s=i[t];s||(s=[],i[t]=s),s.push(e)}removeInteractionEventListener(t,e,r){const i=r?g(this,na):g(this,ra);let s=i==null?void 0:i[t];if(s){const o=s.indexOf(e);o>=0&&s.splice(o,1)}}visit(t){try{const e=t(this);if(t.postOrder&&t.postOrder(this),e!==Tr)return e}catch(e){throw e.view=this,e}}getDescendants(){const t=[];return this.visit(e=>{t.push(e)}),t}dispose(){for(const e of g(this,sa))e();g(this,sa).length=0;const t=this.flowHandle;t!=null&&t.collector&&(this.context.dataFlow.pruneCollectorBranch(t.collector),this.context.dataFlow.removeCollector(t.collector)),t!=null&&t.dataSource&&t.dataSource.view===this&&!t.dataSource.identifier&&this.context.dataFlow.removeDataSource(t.dataSource),this.paramRuntime.dispose(),this.context.dataFlow.loadingStatusRegistry.delete(this),this.flowHandle=void 0}registerDisposer(t){g(this,sa).push(t)}disposeSubtree(){const t=()=>{};t.postOrder=e=>{e.dispose()},this.visit(t)}configureViewOpacity(){(!this.opacityFunction||this.opacityFunction===M2)&&(this.opacityFunction=_M(this))}onBeforeRender(){g(this,ia)||Q(this,ia,!0)}hasRendered(){return g(this,ia)}render(t,e,r={}){var i,s;r.firstFacet&&this.facetCoords.clear(),this.facetCoords.set(r.facetId,r.clipRect?e.intersect(r.clipRect):e),(i=g(this,Vl))==null||i.call(this,e.width),(s=g(this,_l))==null||s.call(this,e.height)}getEncoding(){const t=this.dataParent&&!this.options.blockEncodingInheritance?this.dataParent.getEncoding():{},e=this.spec.encoding||{},r={...t,...e};for(const[i,s]of Object.entries(r))s===null&&delete r[i];return r}getFacetAccessor(t){if(this.layoutParent)return this.layoutParent.getFacetAccessor(this)}getFacetFields(t){var r;const e=this.getEncoding().sample;return Gn(e)?[e.field]:(r=this.layoutParent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(t){const e=wr(t);return this.getDataAncestors().map(r=>r.resolutions.scale[e]).find(r=>r)}getAxisResolution(t){const e=wr(t);return this.getDataAncestors().map(r=>r.resolutions.axis[e]).find(r=>r)}getConfiguredResolution(t,e){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[e])==null?void 0:i[t]}getConfiguredOrDefaultResolution(t,e){return this.getConfiguredResolution(t,e)??this.getConfiguredResolution("default",e)??this.getDefaultResolution(t,e)}getDefaultResolution(t,e){return"independent"}getBaseUrl(){return Ti(()=>{var t;return(t=this.dataParent)==null?void 0:t.getBaseUrl()},HM(this.spec.baseUrl))}isPickingSupported(){return!0}getTitleText(){const t=this.spec.title;if(t)return we(t)?t:Me(t.text)?this.paramRuntime.evaluateAndGet(t.text.expr):t.text}_cache(t,e){return jf(this,t,e)}_invalidateCacheByPrefix(t,e="self"){switch(e){case"self":Oc(this,t);break;case"ancestors":for(const r of this.getLayoutAncestors())Oc(r,t);break;case"progeny":this.visit(r=>Oc(r,t));break}}invalidateSizeCache(){Oc(this,"size"),this._invalidateCacheByPrefix("size","ancestors")}propagateInteractionEvent(t){}}ta=new WeakMap,As=new WeakMap,na=new WeakMap,ra=new WeakMap,Vl=new WeakMap,_l=new WeakMap,ia=new WeakMap,sa=new WeakMap,oa=new WeakMap,Tt=new WeakSet,vu=function(t){var s;let e=this.spec[t];const r=H0(e),i=t=="viewportWidth"||t=="viewportHeight";if(r){if(i)throw new rt(`Cannot use step-based size with "${t}"!`,this);const o=e.step,a=(s=this.getScaleResolution(t=="width"?"x":"y"))==null?void 0:s.getScale();if(a){let l=0;if(_n(a.type))l=a.domain().length;else if(["locus","index"].includes(a.type)){const u=a.domain();l=tf(u)-u[0]}else throw new rt(`Cannot use step-based size with "${a.type}" scale!`,this);const c=a;return l=f0(l,c.paddingInner(),c.paddingOuter()),{px:l*o,grow:0}}else throw new rt(`Cannot use step-based size with "${t}"!`,this)}else return(e&&a2(e))??(i?void 0:{px:0,grow:1})},Qp=function(t,e){const r=this.spec[t];if(!H0(r))return;const i=this.getScaleResolution(e);if(!i)throw new rt("Cannot use 'step' size without a scale!",this);const s=()=>this.invalidateSizeCache();i.addEventListener("domain",s),this.registerDisposer(()=>i.removeEventListener("domain",s))},Dp=function(t){const e=[];let r=this;do e.push(r),r=r[t];while(r);return e};function VM(n){return"unitsPerPixel"in n}function _M(n){const t="opacity"in n.spec?n.spec.opacity:void 0;if(t!==void 0){if(ot(t))return e=>e*t;if(VM(t)){const e=c=>{const u=n.getScaleResolution(c),f=u==null?void 0:u.getScale();if(["linear","index","locus"].includes(f==null?void 0:f.type))return{scale:f,scaleResolution:u}},r=T2(t.values,"opacity.values",n);if(!Re(t.unitsPerPixel))throw new rt('"opacity.unitsPerPixel" must be an array.',n);let i=()=>1,s=[];const o=()=>{const c=T2(s.map(h=>h()),"opacity.unitsPerPixel",n),u=YM(c,r,n),f=r0().domain(u.unitsPerPixel).range(u.values).clamp(!0);i=h=>f(h)};s=t.unitsPerPixel.map(c=>{if(Me(c)){const u=n.paramRuntime.watchExpression(c.expr,()=>{o(),n.context.animator.requestRender()});return()=>u(null)}else return()=>c}),o();const a=c=>{const f=c.scaleResolution.getAxisLength()||1e3;return Ga(c.scale.domain())/f};let l;if(t.channel==="auto"){const c=e("x"),u=e("y");if(c&&u)l=()=>(a(c)+a(u))/2;else if(c)l=()=>a(c);else if(u)l=()=>a(u);else throw new rt("Cannot find a resolved quantitative x or y scale for dynamic opacity!",n)}else{const c=t.channel?e(t.channel):e("x")??e("y");if(!c)throw new rt("Cannot find a resolved quantitative scale for dynamic opacity!",n);l=()=>a(c)}return c=>i(l())*c}else if(Me(t)){const e=n.paramRuntime.watchExpression(t.expr,()=>n.context.animator.requestRender());return r=>e(null)*r}}return e=>e}function YM(n,t,e){if(!n.length)throw new rt('"opacity.unitsPerPixel" must contain at least one stop.',e);if(n.length!==t.length)throw new rt('"opacity.unitsPerPixel" and "opacity.values" must have the same length.',e);n.forEach((o,a)=>{if(o<=0)throw new rt("Invalid opacity.unitsPerPixel value at index "+a+". Stop values must be positive.",e)});const r=n.map((o,a)=>({stop:o,value:t[a]}));r.sort((o,a)=>a.stop-o.stop);const i=r.map(o=>o.stop),s=r.map(o=>o.value);for(let o=1;o<n.length;o++)if(i[o-1]<=i[o])throw new rt('"opacity.unitsPerPixel" must be strictly decreasing.',e);return{unitsPerPixel:i,values:s}}function T2(n,t,e){if(!Re(n))throw new rt('"'+t+'" must evaluate to an array.',e);return n.map((r,i)=>{if(!ot(r)||!Number.isFinite(r))throw new rt("Invalid "+t+" value at index "+i+". Expected a finite number.",e);return r})}const H0=n=>!!(n!=null&&n.step);function JM(n){return qM(n==null?void 0:n.search,"search")}function qM(n,t){if(!n)return;const e=Array.isArray(n)?n:[n];if(e.length===0)throw new Error("The "+t+" channel array must not be empty.");const r=[];for(const i of e){if(!i||typeof i!="object"||!("field"in i))throw new Error("The "+t+" channel must be a field definition or an array of field definitions.");const s=i.field;if(typeof s!="string")throw new Error("The "+t+" channel field definition must include a string field name.");r.push(s)}return r}const KM={point:KR,rect:HR,rule:ZR,link:s6,text:f6};class Ct extends N2{constructor(e,r,i,s,o,a){super(e,r,i,s,o,a);v(this,KA);v(this,Yl);v(this,Jl,!1);v(this,aa,null);this.spec=e;const l=KM[this.getMarkType()];if(l)this.mark=new l(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.resolve(),Q(this,Yl,this.paramRuntime.allocateSetter("zoomLevel",1));for(const c of["x","y"]){const u=this.getScaleResolution(c);if(u){const f=()=>{g(this,Yl).call(this,Math.sqrt(this.getZoomLevel()))};u.addEventListener("domain",f),this.registerDisposer(()=>u.removeEventListener("domain",f))}}this.needsAxes={x:!0,y:!0},F(this,KA,SB).call(this)}render(e,r,i={}){super.render(e,r,i),this.isConfiguredVisible()&&(e.pushView(this,r),e.renderMark(this.mark,i),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}getEncoding(){const e=super.getEncoding(),r=this.mark.getSupportedChannels();for(const i of Object.keys(e))i!=="key"&&(r.includes(i)||delete e[i]);return e}resolve(e){if(!e){this.resolve("scale"),this.resolve("axis");return}const r=this.mark.encoding;for(const[i,s]of Object.entries(r)){if(!s||Array.isArray(s))continue;let o;if(zt(s))o=s;else if(Kh(s)){const c=s.condition;if(!Array.isArray(c)&&zt(c))o=c;else continue}else continue;const a=wr(o.resolutionChannel??i);if(!sf(a)||e=="axis"&&!dc(a))continue;let l=this;for(;(l.getConfiguredOrDefaultResolution(a,e)=="forced"||l.dataParent&&["shared","excluded","forced"].includes(l.dataParent.getConfiguredOrDefaultResolution(a,e)))&&l.getConfiguredOrDefaultResolution(a,e)!="excluded";)l=l.dataParent;if(e=="axis"&&dc(i)&&jh(a)){l.resolutions[e][a]||(l.resolutions[e][a]=new m5(a));const c=l.resolutions[e][a],u=c.registerMember({view:this,channel:i,channelDef:o});this.registerDisposer(()=>{u()&&l.resolutions[e][a]===c&&delete l.resolutions[e][a]})}else if(e=="scale"&&sf(i)){if(!l.resolutions[e][a]){const h=new p5(a);l.resolutions[e][a]=h;const A=d=>{var p;(p=this.context.glHelper)==null||p.createRangeTexture(d.scaleResolution,!0)};h.addEventListener("range",A),h.addEventListener("domain",A),this.registerDisposer(()=>{h.removeEventListener("range",A),h.removeEventListener("domain",A)})}const c=!this.isDomainInert(),u=l.resolutions[e][a],f=u.registerMember({view:this,channel:i,channelDef:o,contributesToDomain:c});this.registerDisposer(()=>{f()&&l.resolutions[e][a]===u&&(u.dispose(),delete l.resolutions[e][a])})}}}dispose(){super.dispose(),this.mark.dispose()}getDataAccessor(e){var i;const r=this.mark.encoders;if(r)return(i=r[e])==null?void 0:i.dataAccessor}getSearchAccessors(){if(!g(this,aa)){const e=JM(this.getEncoding())??[];Q(this,aa,e.map(r=>ue(r)))}return g(this,aa)}getFacetAccessor(e){const r=this.getDataAccessor("sample");return r||super.getFacetAccessor(this)}getCollector(){var e;return(e=this.flowHandle)==null?void 0:e.collector}registerDomainSubscriptions(){if(g(this,Jl)||this.isDomainInert())return;const e=this.getCollector();if(!e)return;const r=this.mark.encoders;if(!r)throw new Error("Encoders are not initialized!");Q(this,Jl,!0);const i=new Map;for(const s of Object.values(r)){if(!s)continue;const o=s.accessors??[];if(o.length!==0)for(const a of o){if(!m1(a)||a.channelDef.domainInert)continue;const l=this.getScaleResolution(a.scaleChannel);if(!l)throw new Error("Missing scale resolution for channel: "+a.scaleChannel);let c=i.get(l);c||(c=new Set,i.set(l,c)),c.add(a)}}for(const[s,o]of i){if(o.size===0)continue;const a=s.registerCollectorSubscriptions(e,o);this.registerDisposer(a)}}getZoomLevel(){const e=r=>{var i;return((i=this.getScaleResolution(r))==null?void 0:i.getZoomLevel())??1};return Ei.map(e).reduce((r,i)=>r*i,1)}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),e.target=this,!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}getDefaultResolution(e,r){return e=="x"?"shared":"independent"}}Yl=new WeakMap,Jl=new WeakMap,aa=new WeakMap,KA=new WeakSet,SB=function(){for(const[e,r]of this.paramRuntime.paramConfigs){if(!("select"in r))continue;const i=of(r.select),s=i.on,o=i.clear;if(af(i)){let l=0;const c=A=>{this.paramRuntime.setValue(e,A)},u=()=>{var d;const A=this.context.getCurrentHover();return((d=A==null?void 0:A.mark)==null?void 0:d.unitView)===this?A.datum:null},f=s.filter?F2(s.filter):()=>!0,h=(A,d)=>{if(!f(d.proxiedMouseEvent))return;const p=u(),C=p?p[Gt]:0;let m;if(i.toggle)if(d.mouseEvent.shiftKey){if(p){const I=this.paramRuntime.getValue(e);m=kQ(I,{toggle:[p]})}}else m=$h(p?[p]:null);else C!=l&&(l=C,m=Zh(p));m!==void 0&&c(m)};if(this.addInteractionEventListener(["mouseover","pointerover"].includes(s.type)?"mousemove":s.type,h),o){const A=o.filter?F2(o.filter):()=>!0,d=(p,C)=>{if(!A(C.proxiedMouseEvent))return;l=0;const m=i.toggle?$h():Zh(null);c(m)};this.addInteractionEventListener(o.type,d)}}}};function jM(n){const t=new Set;n.visit(e=>{for(const r of Object.values(e.resolutions.scale)){const i=r.name;if(i&&t.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);t.add(i)}})}function WM(n){for(const t of Ei){const e=n.getScaleResolution(t);e&&!e.name&&e.isZoomable()&&(e.name=`${t}_at_root`)}}function V0(n,t=()=>!0){return Promise.allSettled(n).then(e=>{if(t())for(const r of e)"value"in r?r.value.finalizeGraphicsInitialization():"reason"in r&&console.error(r.reason)})}async function XM(n,t,e){const r=n.import;if(!("url"in r))throw new Error("Not an url import: "+JSON.stringify(r));const i=Ti(t,r.url);let s;try{const o=await fetch(i);if(!o.ok)throw new Error(`${o.status} ${o.statusText}`);s=await o.json()}catch(o){throw new Error(`Could not load imported view spec: ${i}. Reason: ${o.message}`)}if(e.isViewSpec(s))return s.baseUrl=Ti(Hy(r.url),s.baseUrl),s;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(n)}`)}function ZM(n){const t=n.getSize(),e=n.getPadding(),r=(i,s)=>i.grow>0?void 0:i.px+s;return{width:r(t.width,e.horizontalTotal),height:r(t.height,e.verticalTotal)}}function*_0(n,t=[]){for(const[e,r]of n.entries())if(r instanceof Map)for(const i of _0(r,[...t,e]))yield i;else yield[[...t,e],r]}const P2=2147483647,$M=L2([P2]);function L2(n){let t=0;for(let e=0,r=n.length;e<r;e++)t=Math.max(t,n[e]);return Math.floor(Math.log2(t)/4)+1}function eN(n){const t=L2(n);let e=Array.from({length:n.length},(s,o)=>o),r=new Array(n.length);const i=new Array(16);for(let s=0;s<t;s++){i.fill(0);const o=s*4,a=Math.pow(16,s),l=c=>{const u=n[e[c]];return s>=$M?u>P2?Math.floor(u/a)%16:0:u>>o&15};for(let c=0;c<n.length;c++)i[l(c)]++;for(let c=1;c<16;c++)i[c]+=i[c-1];for(let c=n.length-1;c>=0;c--)r[--i[l(c)]]=e[c];[e,r]=[r,e]}return e}const oA="|",Y0="\\";class tN{constructor(){v(this,la);v(this,hs,null);v(this,tr,null);v(this,ca,!1)}invalidate(){Q(this,hs,null),Q(this,tr,null),Q(this,ca,!1)}findDatum(t,e,r){if(!t||t.length===0)return;const i=t.join(", ");if(t.length!==e.length)throw new Error(`Key tuple length ${e.length} does not match fields [${i}]`);(!g(this,hs)||!F(this,la,DB).call(this,t))&&F(this,la,QB).call(this,t,r);const s=g(this,tr);let o;if(g(this,ca)){let a="";for(let l=0;l<e.length;l++){l>0&&(a+=oA);const c=s[l],u=aA(e[l],c);a+=O2(u)}o=a}else{const a=s[0];o=aA(e[0],a)}return g(this,hs).get(o)}}hs=new WeakMap,tr=new WeakMap,ca=new WeakMap,la=new WeakSet,QB=function(t,e){const r=t.map(a=>ue(a)),i=new Map,s=t.join(", "),o=t.length!==1;if(o)for(const a of e)for(let l=0,c=a.length;l<c;l++){const u=a[l];let f="";for(let A=0;A<r.length;A++){A>0&&(f+=oA);const d=t[A],p=aA(r[A](u),d);f+=O2(p)}if(i.get(f)!==void 0){const A=r.map(d=>d(u));throw new Error(`Duplicate key detected for fields [${s}]: ${JSON.stringify(A)}`)}i.set(f,u)}else{const a=r[0],l=t[0];for(const c of e)for(let u=0,f=c.length;u<f;u++){const h=c[u],A=aA(a(h),l);if(i.get(A)!==void 0)throw new Error(`Duplicate key detected for fields [${s}]: ${JSON.stringify(A)}`);i.set(A,h)}}Q(this,hs,i),Q(this,tr,[...t]),Q(this,ca,o)},DB=function(t){if(!g(this,tr)||g(this,tr).length!==t.length)return!1;for(let e=0;e<t.length;e++)if(g(this,tr)[e]!==t[e])return!1;return!0};function aA(n,t){if(n===void 0)throw new Error(`Key field "${t}" is undefined. Ensure all key fields are present in the data.`);if(n===null)throw new Error(`Key field "${t}" is null. Ensure all key fields are present in the data.`);if(typeof n!="string"&&typeof n!="number"&&typeof n!="boolean")throw new Error(`Key field "${t}" must be a scalar value (string, number, or boolean).`);return n}function nN(n){if(!(n.indexOf(Y0)!==-1||n.indexOf(oA)!==-1))return n;let e="";for(let r=0;r<n.length;r++){const i=n[r];(i===Y0||i===oA)&&(e+=Y0),e+=i}return e}function O2(n){return typeof n=="string"?nN(n):String(n)}class U2 extends Yh{constructor(e){var r;super();v(this,st);v(this,nr,[]);v(this,ql,ue(Gt));v(this,$r,[]);v(this,ua,new tN);v(this,ds);v(this,fa);v(this,ei,new rN);this.params=e??{type:"collect"},this.observers=new Set,this.facetBatches=new Tn([],JSON.stringify),Q(this,fa,sN((r=this.params)==null?void 0:r.sort)),F(this,st,kp).call(this)}get behavior(){return _h}get label(){return"collect"}reset(){super.reset(),F(this,st,kp).call(this)}handle(e){g(this,nr).push(e)}beginBatch(e){g(this,ua).invalidate(),CQ(e)&&(Q(this,nr,[]),this.facetBatches.set(Ke(e.facetId),g(this,nr)))}complete(){var e;if(Q(this,nr,[]),(e=this.params.groupby)!=null&&e.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const r=this.facetBatches.get(void 0),i=this.params.groupby.map(o=>ue(o)),s=i.length>1?Uu(r,...i):iN(r,i[0]);this.facetBatches.clear();for(const[o,a]of _0(s))this.facetBatches.set(o,a)}if(g(this,fa))for(const r of this.facetBatches.values())r.sort(g(this,fa));F(this,st,kB).call(this),F(this,st,Fp).call(this),super.complete(),F(this,st,Rp).call(this);for(const r of this.observers)r(this)}observe(e){return this.observers.add(e),()=>{this.observers.delete(e)}}repropagate(){for(const e of this.children)e.reset();F(this,st,Fp).call(this);for(const e of this.children)e.complete();F(this,st,Rp).call(this)}getDomain(e,r,i){return g(this,ei).getDomain(e,()=>{const s=Zf(r);if(i.constant)s.extend(i({}));else if(this.completed)for(const o of this.facetBatches.values())for(let a=0,l=o.length;a<l;a++)s.extend(i(o[a]));return s})}subscribeDomainChanges(e,r){return g(this,ei).subscribe(e,r)}getData(){switch(F(this,st,ih).call(this),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const i of e.values())yield*i}}}}}visitData(e){F(this,st,ih).call(this);for(const r of this.facetBatches.values())for(let i=0;i<r.length;i++)e(r[i])}getItemCount(){let e=0;for(const r of this.facetBatches.values())e+=r.length;return e}findDatumByUniqueId(e){if(!g(this,$r).length)return;const r=mi(l=>l.start).right,i=g(this,ql),s=mi(l=>i(o(l))).left,o=l=>{const c=r(g(this,ds),l),u=g(this,ds)[c-1];return!u||l>=u.stop?void 0:this.facetBatches.get(u.facetId)[l-u.start]},a=s(g(this,$r),e);if(a>=0){const l=o(g(this,$r)[a]);if(l&&i(l)===e)return l}}findDatumByKey(e,r){return F(this,st,ih).call(this),g(this,ua).findDatum(e,r,this.facetBatches.values())}}nr=new WeakMap,ql=new WeakMap,$r=new WeakMap,ua=new WeakMap,ds=new WeakMap,fa=new WeakMap,ei=new WeakMap,st=new WeakSet,kp=function(){Q(this,nr,[]),Q(this,$r,[]),g(this,ua).invalidate(),this.facetBatches.clear(),this.facetBatches.set(void 0,g(this,nr))},Fp=function(){if(this.children.length)for(const[e,r]of this.facetBatches.entries()){if(e){const i={type:"facet",facetId:e};for(const s of this.children)s.beginBatch(i)}for(let i=0,s=r.length;i<s;i++)this._propagate(r[i])}},ih=function(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")},Rp=function(){g(this,ei).hasCachedDomains()&&g(this,ei).clear(),g(this,ei).notify()},kB=function(){var o;Q(this,ds,[]);const e=(o=this.facetBatches.values().next().value)==null?void 0:o[0];if(e==null||!(Gt in e))return;let r=0;const i=[],s=g(this,ql);for(const[a,l]of this.facetBatches){g(this,ds).push({start:r,stop:r+l.length,facetId:a}),r+=l.length;for(let c=0,u=l.length;c<u;c++)i.push(s(l[c]))}Q(this,$r,eN(i))};class rN{constructor(){v(this,gs,new Map);v(this,rr,new Map)}hasCachedDomains(){return g(this,gs).size>0}clear(){g(this,gs).clear()}getDomain(t,e){const r=g(this,gs).get(t);if(r)return r;{const i=e();return g(this,gs).set(t,i),i}}subscribe(t,e){let r=g(this,rr).get(t);return r||(r=new Set,g(this,rr).set(t,r)),r.add(e),()=>{const i=g(this,rr).get(t);i&&(i.delete(e),i.size===0&&g(this,rr).delete(t))}}notify(){if(g(this,rr).size===0)return;const t=new Set;for(const e of g(this,rr).values())for(const r of e)t.add(r);for(const e of t)e()}}gs=new WeakMap,rr=new WeakMap;function iN(n,t){const e=new Map;for(let r=0,i=n.length;r<i;r++){const s=n[r],o=t(s);let a=e.get(o);a||(a=[],e.set(o,a)),a.push(s)}return e}function sN(n){if(n!=null&&n.field){const t=Ke(n.field);if(t.length==1&&!t[0].includes(".")){const e=Ke(n.order)[0]??"ascending",r=JSON.stringify(t[0]);return new Function("a","b",`return a[${r}] ${e==="ascending"?"-":"+"} b[${r}];`)}return Wp(n.field,n.order)}}class oN extends ze{get behavior(){return pn}constructor(t){super(t),this.params=t,this.startAccessor=ue(t.start),this.endAccessor=ue(t.end),this.chromAccessor=t.chrom?ue(t.chrom):e=>{},this.weightAccessor=t.weight?ue(t.weight):e=>1,this.as={coverage:t.as??"coverage",start:t.asStart??t.start,end:t.asEnd??t.end,chrom:t.asChrom??t.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([e,r])=>r).map(([e,r])=>`${JSON.stringify(r)}: ${e}`).join(", ")+"};"),this.ends=new go}reset(){super.reset(),this.initialize()}initialize(){const t=this.as.coverage,e=this.as.end,r=this.as.chrom,i=this.startAccessor,s=this.endAccessor,o=this.chromAccessor,a=this.weightAccessor;let l,c,u,f=0,h=NaN;const A=this.ends;A.clear();const d=m=>{this._propagate(m),l=null},p=(m,y,I)=>{if(m==y)return;let w=!1;l&&(l[t]===I?(l[e]=y,w=!0):l[t]!=0&&d(l)),w||(l=this.createSegment(m,y,I,u))},C=()=>{let m=0;for(;(m=A.peekValue())!==void 0;)p(h,m,f),h=m,f-=A.pop();h=NaN,l&&d(l)};this.handle=m=>{const y=i(m);let I=0;for(;(I=A.peekValue())!==void 0&&I<y;)p(h,I,f),h=I,f-=A.pop();if(r){let x=o(m);x!==c&&(C(),u=x,c=u)}isNaN(h)||p(h,y,f),h=y;const w=a(m);f+=w,A.push(w,s(m))},this.complete=()=>{C(),super.complete()},this.beginBatch=m=>{C(),c=null,super.beginBatch(m)}}}function aN(n,t,e=s=>+s,r=0,i=n.length){const s=new go,o=i-r;let a;for(a=0;a<t&&a<o;a++)s.push(a,e(n[r+a]));for(;a<o;a++){const u=e(n[r+a]);u>=s.peekValue()&&(s.push(a,u),s.pop())}const l=[];let c;for(;(c=s.pop())!==void 0;)l.push(n[r+c]);return l.reverse()}class cN{constructor(t,e=-1/0,r=1/0){this.maxSize=t,this.lowerLimit=e,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(t,e,r=0){if(t>=this.lowerLimits[r]&&e<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const s=this._findSlot(t,e,i);return s>=0?s:this._findSlot(t,e,this.upperChildren[r])}else return r}else return-1}reserve(t,e){if(e-t<=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(t,e);if(r<0)return!1;const i=this.n++,s=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=t,this.lowerLimits[s]=e,this.upperLimits[s]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=s,!0}}class lN extends ze{get behavior(){return _h}constructor(t,e){if(super(t),this.params=t,this._data=[],this.channel=t.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.startPosAccessor=ue(this.params.pos),this.endPosAccessor=ue(this.params.pos2??this.params.pos),this.startPosBisector=mi(this.startPosAccessor),this.endPosBisector=mi(this.endPosAccessor),this.scoreAccessor=ue(this.params.score),this.widthAccessor=ue(this.params.width),this.laneAccessor=this.params.lane?ue(this.params.lane):o=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=e.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>e.context.animator.requestTransition(r);const i=()=>this.schedule();this.resolution.addEventListener("domain",i),this.registerDisposer(()=>this.resolution.removeEventListener("domain",i));const s=e._addBroadcastHandler("layoutComputed",()=>this.schedule());this.registerDisposer(s)}complete(){const t=this.startPosAccessor;this._data.sort((e,r)=>t(e)-t(r));for(const e of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(e,new cN(200));this.schedule(),super.complete()}_filterAndPropagate(){super.reset();const t=this.resolution.getScale(),e=this.resolution.getAxisLength();if(!e)return;for(const o of this.reservationMaps.values())o.reset();const r=t.domain(),s=aN(this._data,70,this.scoreAccessor,this.endPosBisector.left(this._data,r[0]),this.startPosBisector.right(this._data,r[1]));for(const o of s){let a=t(this.startPosAccessor(o))*e,l=t(this.endPosAccessor(o))*e;const c=l-a,u=this.widthAccessor(o)+this.padding*2;let f=(a+l)/2;const h=Math.max(0,(c-u)/2);if(h>0){const A=Math.max(0,u/2-f);f+=Math.min(A,h);const d=Math.max(0,u/2+f-e);f-=Math.min(d,h)}if(this.reservationMaps.get(this.laneAccessor(o)).reserve(f-u/2,f+u/2))if(this.params.asMidpoint){const A=Object.assign({},o);A[this.params.asMidpoint]=t.invert(f/e),this._propagate(A)}else this._propagate(o)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(t){this._data.push(t)}}class uN extends ze{constructor(t,e){super(t,e),this.params=t,this.predicate=void 0}initialize(){let t="";if(fN(this.params))t=this.params.expr;else if(AN(this.params)){const e=this.paramRuntime.findValue(this.params.param);if(!e)throw new Error(`Cannot initialize filter transform. Selection parameter "${this.params.param}" not found!`);t=FQ(this.params,e)}else throw new Error("Invalid filter params: "+JSON.stringify(this.params));this.predicate=this.paramRuntime.watchExpression(t,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)})}handle(t){this.predicate(t)&&this._propagate(t)}}function fN(n){return"expr"in n}function AN(n){return"param"in n}class hN extends ze{get behavior(){return pn}constructor(t){super(t),this.params=t;const e=t.index;if(t.fields){const r=Ke(t.fields).map(s=>ue(s)),i=Ke(t.as||t.fields);if(r.length!==i.length)throw new Error(`Lengths of "fields" (${r.length}), and "as" (${i.length}) do not match!`);this.handle=s=>{const o=r.map((l,c)=>l(s)??[]),a=o[0].length;for(let l=0;l<a;l++){const c=Object.assign({},s);for(let u=0;u<r.length;u++)c[i[u]]=l<o[u].length?o[u][l]:null;e&&(c[e]=l),this._propagate(c)}}}else this.handle=r=>{for(let i=0;i<r.length;i++){const s=Object.assign({},r[i]);e&&(s[e]=i),this._propagate(s)}}}}const dN=48;function*gN(n,t=","){const e=t.charCodeAt(0);let r=0;for(let i=0;i<n.length;i++){const s=n.charCodeAt(i);s==e?(yield r,r=0):r=r*10+s-dN}yield r}class pN extends ze{get behavior(){return pn}constructor(t){super(t);const e=ue(t.exons??"exons"),r=ue(t.start??"start"),[i,s]=t.as||["exonStart","exonEnd"];this.handle=o=>{let a=r(o),l=a,c=!0;const u=e(o);for(const f of gN(u)){if(c)l=a+f;else{a=l+f;const h=Object.assign({},o);h[i]=l,h[s]=a,this._propagate(h)}c=!c}}}}class mN extends ze{get behavior(){return pn}constructor(t){super(t);const e=Ke(t.field).map(s=>ue(s)),r=Ke(t.separator),i=Ke(t.as||t.field);if(e.length!==r.length||e.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${e.length}), and "as" (${i.length}) do not match!`);this.handle=s=>{if(e.some(l=>!l(s)))return;const o=e.map((l,c)=>l(s).split(r[c]));CN(o,s);const a=o[0].length;for(let l=0;l<a;l++){const c=Object.assign({},s);for(let u=0;u<e.length;u++)c[i[u]]=o[u][l];this._propagate(c)}}}}function CN(n,t){const e=n.map(r=>r.length);if(!e.every(r=>r==e[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(t))}class wN extends ze{get behavior(){return Cr}constructor(t,e){super(t,e),this.params=t,this.as=t.as,this.fn=void 0}initialize(){this.fn=this.paramRuntime.watchExpression(this.params.expr,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:t=>this.registerDisposer(t)})}handle(t){t[this.as]=this.fn(t),this._propagate(t)}}class G2 extends ze{get behavior(){return Cr}constructor(t,e){t={channel:"x",...t},super(t),this.params=t;const r=t.channel;if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=e.getScaleResolution(r).getScale(),s="genome"in i?i.genome():void 0;if(!s)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=ue(t.chrom),a=Ke(t.pos).map(p=>ue(p)),l=Ke(t.as);if(a.length!=l.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=Ke(t.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(t.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",l.map((p,C)=>`datum[${JSON.stringify(p)}] = chromOffset + +posAccessors[${C}](datum) - ${u[C]};`).join(`
655
- `));let h,A=0;const d=p=>{if(p!==h){if(A=s.cumulativeChromPositions.get(p),A===void 0)return;h=p}return A};this.handle=p=>{const C=o(p),m=d(C);if(m===void 0)throw new Error(`Unknown chromosome/contig "${C}" in datum: ${JSON.stringify(p)}`);f(p,m,a),this._propagate(p)}}}const z2={chars:JSON.parse('[{"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}]'),common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0}};class yN extends ze{get behavior(){return Cr}constructor(t,e){super(t,e),this.params=t;const r=Nd(z2),i=ue(t.field),s=t.as;let o=0;if(Me(t.fontSize)){const a=e.paramRuntime.watchExpression(t.fontSize.expr,()=>{o=a(),this.repropagate()},{scopeOwned:!1,registerDisposer:l=>this.registerDisposer(l)});o=a()}else o=t.fontSize;this.handle=a=>{const l=i(a);l!==void 0?a[s]=r.measureWidth(l,o):a[s]=0,this._propagate(a)}}}const IN=65536;class EN extends ze{get behavior(){return Cr}constructor(t){super(t),this.params=t}reset(){super.reset(),this.initialize()}initialize(){const t=this.params,e=t.as||"lane",r=ot(t.spacing)?t.spacing:1,i=ue(t.start),s=ue(t.end);if(!t.preference!=!t.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(t.preference){const o=new Float64Array(IN),a=ue(t.preference),l=t.preferredOrder;let c=1/0;this.handle=u=>{const f=i(u);f<c&&o.fill(-1/0),c=f;const h=l.indexOf(a(u));let A=-1;if(h>=0&&o[h]<f)A=h;else{const d=i(u);for(A=0;A<o.length&&!(o[A]<d);A++);if(A>=o.length)throw new Error("Out of lanes!")}o[A]=s(u)+r,u[e]=A,this._propagate(u)}}else{const o=new go,a=new go;let l=-1/0,c=0;this.handle=u=>{const f=i(u);for(;o.length&&(o.peekValue()<=f||f<l);){const A=o.pop();a.push(A,A)}l=f;let h=a.pop();h===void 0&&(h=c++),u[e]=h,this._propagate(u),o.push(h,s(u)+r)}}}}class bN extends ze{get behavior(){return pn}constructor(t){if(super(t),this.params=t,t.as&&t.as.length!=t.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const e=t.fields.map(i=>ue(i)),r=t.as?t.as:e.map(ke);this.handle=i=>{const s={};for(let o=0;o<e.length;o++)s[r[o]]=e[o](i);this._propagate(s)}}}class xN extends ze{get behavior(){return Cr}constructor(t){super(t),this.params=t;const e=new RegExp(t.regex),r=typeof t.as=="string"?[t.as]:t.as,i=ue(t.field);this.handle=s=>{const o=i(s);if(we(o)){const a=o.match(e);if(a){if(a.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let l=0;l<r.length;l++)s[r[l]]=a[l+1]}else if(t.skipInvalidInput)for(let l=0;l<r.length;l++)s[r[l]]=void 0;else throw new Error(`"${o}" does not match the given regex: ${e.toString()}`)}else if(!t.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof o}, field content: "${o}".`);this._propagate(s)}}}class BN extends ze{get behavior(){return pn}constructor(t){super(t),this.params=t;const e=Ke(t.columnRegex).map(h=>new RegExp(h));for(const h of e)if(RegExp("|"+h.source).exec("").length-1!=1)throw new Error(`Regex ${h.toString()} must have exactly one capturing group!`);const r=Ke(t.asValue);if(e.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=t.skipRegex?new RegExp(t.skipRegex):void 0,s=t.asKey||"sample";let o,a,l;const c=h=>{var C;const A=Object.keys(h);for(const m of e)if(!A.some(y=>m.test(y)))throw new Error(`No columns matching the regex ${m.toString()} found in the data!`);const d=new Map;for(const[m,y]of e.entries())for(const I of A){const w=(C=y.exec(I))==null?void 0:C[1];if(w!==void 0){let x=d.get(w);x||(x=[],d.set(w,x)),x[m]=I}}o=[...d.entries()],a=A.filter(m=>!e.some(y=>y.test(m))&&!(i&&i.test(m)));const p=[...a.map(m=>JSON.stringify(m)+": datum["+JSON.stringify(m)+"]"),JSON.stringify(s)+": sampleId",...r.map((m,y)=>JSON.stringify(m)+`: datum[attrs[${y}]]`)];l=new Function("datum","sampleId","attrs",`return {
656
- `+p.join(`,
612
+ }`)}catch(e){throw new Error(`Invalid expression: ${n}, ${e.message}`)}}function V4(n,e={}){return z4(n,e)}function ym(n,e){const t={},r=V4(n,t),i=new Map;for(const o of r.globals){if(i.has(o))continue;const a=e(o);if(!a)throw new Error('Unknown variable "'+o+'" in expression: '+n);i.set(o,a),Object.defineProperty(t,o,{enumerable:!0,get(){return a.get()}})}const s=new Set;return r.subscribe=o=>{const a=[];for(const u of i.values())a.push(u.subscribe(o));let l=!0;const c=()=>{l&&(l=!1,s.delete(c),a.forEach(u=>u()))};return s.add(c),c},r.invalidate=()=>{for(const o of s)o();s.clear()},r.identifier=()=>r.code+"|"+Array.from(i.values()).map(o=>o.id).join(","),{expression:r,dependencies:Array.from(i.values())}}class _4{#e=new vk;#t=new Bk({lifecycleRegistry:this.#e});#n=new Sk;createScope(e){const t=this.#e.createOwner("scope",e??"root");return e?this.#n.createChildScope(t,e):this.#n.createRootScope(t)}disposeScope(e){const t=this.#n.getOwnerId(e);this.#e.disposeOwner(t),this.#n.clearScope(e)}addScopeDisposer(e,t){const r=this.#n.getOwnerId(e);this.#e.addDisposer(r,t)}registerBase(e,t,r,i){const s=this.#n.getOwnerId(e),o=this.#t.createWritable(s,t,"base",r,i);return this.#n.register(e,t,o)}registerSelection(e,t,r,i){const s=this.#n.getOwnerId(e),o=this.#t.createWritable(s,t,"selection",r,i);return this.#n.register(e,t,o)}registerDerived(e,t,r){const{expression:i,dependencies:s}=ym(r,l=>this.resolve(e,l)),o=this.#n.getOwnerId(e),a=this.#t.computed(o,t,s,()=>i(null));return this.#n.register(e,t,a)}createExpression(e,t){const{expression:r}=ym(t,i=>this.resolve(e,i));return r}resolve(e,t){return this.#n.resolve(e,t)}runInTransaction(e){return this.#t.runInTransaction(e)}flushNow(){this.#t.flushNow()}whenPropagated(e){return this.#t.whenPropagated(e)}}class Y4{#e;#t;#n=new Map;#r=new Map;#s=new Map;#o;#i=!1;constructor(e){this.#o=e??(()=>{});const t=this.#o();t?(this.#e=t.#e,this.#t=this.#e.createScope(t.#t)):(this.#e=new _4,this.#t=this.#e.createScope())}registerParam(e){const t=e.name;if(Tt(t),this.#s.has(t))throw new Error('Parameter "'+t+'" already registered in this scope.');if("value"in e&&"expr"in e)throw new Error(`The parameter "${t}" must not have both value and expr properties!`);let r,i;if(e.push=="outer"){const s=this.findRuntimeForParam(t);if(!s)throw new Error(`Parameter "${t}" not found in outer scope!`);const o=s.paramConfigs.get(t);if(!o)throw new Error(`Outer parameter "${t}" exists as a value but has no registered config.`);if("expr"in o||"select"in o)throw new Error(`The outer parameter "${t}" must not have expr or select properties!`);r=a=>{s.setValue(t,a)},this.#n.set(t,r)}else if("value"in e)i=vl(e,this),r=this.#c(t,i);else if("expr"in e){const s=this.#e.registerDerived(this.#t,t,e.expr);this.#r.set(t,s),r=()=>{throw new Error('Cannot set derived parameter "'+t+'".')}}else i=vl(e,this),r=this.#c(t,i);if("select"in e){if(i??=vl(e,this),!this.#n.has(t)){const s=this.#e.registerSelection(this.#t,t,i);this.#r.set(t,s),this.#n.set(t,o=>{s.set(o),this.#e.flushNow()}),r=this.#n.get(t)}r(i)}return this.#s.set(t,e),r}allocateSetter(e,t,r=!1){if(Tt(e),this.#n.has(e))throw new Error("Setter already allocated for parameter: "+e);const i=this.#e.registerBase(this.#t,e,t,{notify:!r});this.#r.set(e,i);const s=o=>{i.set(o),this.#e.flushNow()};return this.#n.set(e,s),s}setValue(e,t){Tt(e);const r=this.#n.get(e);if(!r)throw new Error("Writable parameter not found in this scope: "+e);r(t)}getValue(e){return this.#r.get(e)?.get()}subscribe(e,t){Tt(e);const r=this.findRuntimeForParam(e);if(!r)throw new Error("Parameter not found: "+e);const i=r.#r.get(e);if(!i)throw new Error("Parameter found without local reference: "+e);return i.subscribe(t)}findValue(e){return this.findRuntimeForParam(e)?.getValue(e)}get paramConfigs(){return this.#s}findRuntimeForParam(e){return this.#r.has(e)?this:this.#o()?.findRuntimeForParam(e)}createExpression(e){return this.#e.createExpression(this.#t,e)}watchExpression(e,t,r={}){const i=this.createExpression(e),s=i.subscribe(t);return(r.scopeOwned??!0)&&this.#e.addScopeDisposer(this.#t,s),r.registerDisposer?.(s),i}#c(e,t){const r=this.#e.registerBase(this.#t,e,t);this.#r.set(e,r);const i=s=>{r.set(s),this.#e.flushNow()};return this.#n.set(e,i),i}evaluateAndGet(e){return this.createExpression(e)()}runInTransaction(e){return this.#e.runInTransaction(e)}flushNow(){this.#e.flushNow()}whenPropagated(e){return this.#e.whenPropagated(e)}dispose(){this.#i||(this.#i=!0,this.#e.disposeScope(this.#t),this.#n.clear(),this.#r.clear(),this.#s.clear())}hasPointSelections(){for(const e of this.#s.values())if(Bl(e)){const t=e.select;if(le(t)){if(t=="point")return!0}else if(t.type=="point")return!0}return!1}}function qs(n,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(n)||n.startsWith("/")?n:(e.endsWith("/")||(e+="/"),e+n)}function J4(n){if(!n)return n;if(/[?#]/.test(n))throw new Error(`Invalid base URL: ${n} - cannot contain query or hash.`);return n.endsWith("/")?n:n+"/"}const Dt="VISIT_SKIP",Ln="VISIT_STOP",Im=n=>n;class bm{#e;#t={};#n={};#r={};#s;#o;#i=!1;opacityFunction=Im;#c=[];#a="none";facetCoords=new jt([],JSON.stringify);constructor(e,t,r,i,s,o={}){if(!e)throw new Error("View spec must be defined!");if(this.context=t,this.layoutParent=r,this.dataParent=i,this.#e=s,this.spec=e,this.resolutions={scale:{},axis:{}},Ip(this),this.options={blockEncodingInheritance:!1,...o},this.flowHandle=void 0,this.needsAxes={x:!1,y:!1},this.paramRuntime=new Y4(()=>this.dataParent?.paramRuntime),e.params)for(const a of e.params)this.paramRuntime.registerParam(a);if(!this.layoutParent?.options.layeredChildren){const a=l=>this.paramRuntime.findRuntimeForParam(l)?void 0:this.paramRuntime.allocateSetter(l,0);this.#o=a("height"),this.#s=a("width")}}get name(){return this.spec.name??this.#e}get explicitName(){return this.spec.name}get defaultName(){return this.#e}get coords(){return this.facetCoords.values().next().value}getPadding(){return this._cache("size/padding",()=>qe.createFromConfig(this.spec.padding))}getOverhang(){return qe.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache("size/size",()=>this.isConfiguredVisible()?new Tn(this.#l("width"),this.#l("height")):Kp)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return Kp;const e=this.getSize();return new Tn(this.#l("viewportWidth")??e.width,this.#l("viewportHeight")??e.height)}#l(e){let t=this.spec[e];const r=hf(t),i=e=="viewportWidth"||e=="viewportHeight";if(r){if(i)throw new Ve(`Cannot use step-based size with "${e}"!`,this);const s=t.step,o=this.getScaleResolution(e=="width"?"x":"y")?.getScale();if(o){let a=0;if(sn(o.type))a=o.domain().length;else if(["locus","index"].includes(o.type)){const c=o.domain();a=_o(c)-c[0]}else throw new Ve(`Cannot use step-based size with "${o.type}" scale!`,this);const l=o;return a=Tu(a,l.paddingInner(),l.paddingOuter()),{px:a*s,grow:0}}else throw new Ve(`Cannot use step-based size with "${e}"!`,this)}else return(t&&jp(t))??(i?void 0:{px:0,grow:1})}registerStepSizeInvalidation(){this.#u("width","x"),this.#u("height","y")}#u(e,t){const r=this.spec[e];if(!hf(r))return;const i=this.getScaleResolution(t);if(!i)throw new Ve("Cannot use 'step' size without a scale!",this);const s=()=>this.invalidateSizeCache();i.addEventListener("domain",s),this.registerDisposer(()=>i.removeEventListener("domain",s))}isConfiguredVisible(){return this.context.isViewConfiguredVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}isVisible(){return this.getLayoutAncestors().every(e=>e.isConfiguredVisible())}isDomainInert(){if(this.spec.domainInert)return!0;const e=this.dataParent;return e?e.isDomainInert():!1}getDataInitializationState(){return this.#a}_setDataInitializationState(e){this.#a=e}isDataInitialized(){return this.#a==="ready"}getEffectiveOpacity(){return this.opacityFunction(this.layoutParent?.getEffectiveOpacity()??1)}getPathString(){return this.getLayoutAncestors().map(e=>e.name).reverse().join("/")}#f(e){const t=[];let r=this;do t.push(r),r=r[e];while(r);return t}getLayoutAncestors(){return this.#f("layoutParent")}getDataAncestors(){return this.#f("dataParent")}handleBroadcast(e){for(const t of this.#t[e.type]||[])t(e)}_addBroadcastHandler(e,t){let r=this.#t[e];return r||(r=[],this.#t[e]=r),r.push(t),()=>{const i=this.#t[e];if(!i)return;const s=i.indexOf(t);s>=0&&i.splice(s,1)}}handleInteractionEvent(e,t,r){const i=r?this.#n:this.#r;for(const s of i[t.type]||[])s(e,t)}addInteractionEventListener(e,t,r){const i=r?this.#n:this.#r;let s=i[e];s||(s=[],i[e]=s),s.push(t)}removeInteractionEventListener(e,t,r){let s=(r?this.#n:this.#r)?.[e];if(s){const o=s.indexOf(t);o>=0&&s.splice(o,1)}}visit(e){try{const t=e(this);if(e.postOrder&&e.postOrder(this),t!==Ln)return t}catch(t){throw t.view=this,t}}getDescendants(){const e=[];return this.visit(t=>{e.push(t)}),e}dispose(){for(const t of this.#c)t();this.#c.length=0;const e=this.flowHandle;e?.collector&&(this.context.dataFlow.pruneCollectorBranch(e.collector),this.context.dataFlow.removeCollector(e.collector)),e?.dataSource&&e.dataSource.view===this&&!e.dataSource.identifier&&this.context.dataFlow.removeDataSource(e.dataSource),this.paramRuntime.dispose(),this.context.dataFlow.loadingStatusRegistry.delete(this),this.flowHandle=void 0}registerDisposer(e){this.#c.push(e)}disposeSubtree(){const e=()=>{};e.postOrder=t=>{t.dispose()},this.visit(e)}configureViewOpacity(){(!this.opacityFunction||this.opacityFunction===Im)&&(this.opacityFunction=K4(this))}onBeforeRender(){this.#i||(this.#i=!0)}hasRendered(){return this.#i}render(e,t,r={}){r.firstFacet&&this.facetCoords.clear(),this.facetCoords.set(r.facetId,r.clipRect?t.intersect(r.clipRect):t),this.#s?.(t.width),this.#o?.(t.height)}getEncoding(){const e=this.dataParent&&!this.options.blockEncodingInheritance?this.dataParent.getEncoding():{},t=this.spec.encoding||{},r={...e,...t};for(const[i,s]of Object.entries(r))s===null&&delete r[i];return r}getFacetAccessor(e){if(this.layoutParent)return this.layoutParent.getFacetAccessor(this)}getFacetFields(e){const t=this.getEncoding().sample;return en(t)?[t.field]:this.layoutParent?.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(e){const t=In(e);return this.getDataAncestors().map(r=>r.resolutions.scale[t]).find(r=>r)}getAxisResolution(e){const t=In(e);return this.getDataAncestors().map(r=>r.resolutions.axis[t]).find(r=>r)}getConfiguredResolution(e,t){return this.spec.resolve?.[t]?.[e]}getConfiguredOrDefaultResolution(e,t){return this.getConfiguredResolution(e,t)??this.getConfiguredResolution("default",t)??this.getDefaultResolution(e,t)}getDefaultResolution(e,t){return"independent"}getBaseUrl(){return dr(()=>this.dataParent?.getBaseUrl(),J4(this.spec.baseUrl))}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return le(e)?e:Ie(e.text)?this.paramRuntime.evaluateAndGet(e.text.expr):e.text}_cache(e,t){return La(this,e,t)}_invalidateCacheByPrefix(e,t="self"){switch(t){case"self":Ms(this,e);break;case"ancestors":for(const r of this.getLayoutAncestors())Ms(r,e);break;case"progeny":this.visit(r=>Ms(r,e));break}}invalidateSizeCache(){Ms(this,"size"),this._invalidateCacheByPrefix("size","ancestors")}propagateInteractionEvent(e){}}function q4(n){return"unitsPerPixel"in n}function K4(n){const e="opacity"in n.spec?n.spec.opacity:void 0;if(e!==void 0){if(Ye(e))return t=>t*e;if(q4(e)){const t=c=>{const u=n.getScaleResolution(c),f=u?.getScale();if(["linear","index","locus"].includes(f?.type))return{scale:f,scaleResolution:u}},r=Em(e.values,"opacity.values",n);if(!ye(e.unitsPerPixel))throw new Ve('"opacity.unitsPerPixel" must be an array.',n);let i=()=>1,s=[];const o=()=>{const c=Em(s.map(h=>h()),"opacity.unitsPerPixel",n),u=j4(c,r,n),f=Su().domain(u.unitsPerPixel).range(u.values).clamp(!0);i=h=>f(h)};s=e.unitsPerPixel.map(c=>{if(Ie(c)){const u=n.paramRuntime.watchExpression(c.expr,()=>{o(),n.context.animator.requestRender()});return()=>u(null)}else return()=>c}),o();const a=c=>{const f=c.scaleResolution.getAxisLength()||1e3;return Pi(c.scale.domain())/f};let l;if(e.channel==="auto"){const c=t("x"),u=t("y");if(c&&u)l=()=>(a(c)+a(u))/2;else if(c)l=()=>a(c);else if(u)l=()=>a(u);else throw new Ve("Cannot find a resolved quantitative x or y scale for dynamic opacity!",n)}else{const c=e.channel?t(e.channel):t("x")??t("y");if(!c)throw new Ve("Cannot find a resolved quantitative scale for dynamic opacity!",n);l=()=>a(c)}return c=>i(l())*c}else if(Ie(e)){const t=n.paramRuntime.watchExpression(e.expr,()=>n.context.animator.requestRender());return r=>t(null)*r}}return t=>t}function j4(n,e,t){if(!n.length)throw new Ve('"opacity.unitsPerPixel" must contain at least one stop.',t);if(n.length!==e.length)throw new Ve('"opacity.unitsPerPixel" and "opacity.values" must have the same length.',t);n.forEach((o,a)=>{if(o<=0)throw new Ve("Invalid opacity.unitsPerPixel value at index "+a+". Stop values must be positive.",t)});const r=n.map((o,a)=>({stop:o,value:e[a]}));r.sort((o,a)=>a.stop-o.stop);const i=r.map(o=>o.stop),s=r.map(o=>o.value);for(let o=1;o<n.length;o++)if(i[o-1]<=i[o])throw new Ve('"opacity.unitsPerPixel" must be strictly decreasing.',t);return{unitsPerPixel:i,values:s}}function Em(n,e,t){if(!ye(n))throw new Ve('"'+e+'" must evaluate to an array.',t);return n.map((r,i)=>{if(!Ye(r)||!Number.isFinite(r))throw new Ve("Invalid "+e+" value at index "+i+". Expected a finite number.",t);return r})}const hf=n=>!!n?.step;function W4(n){return X4(n?.search,"search")}function X4(n,e){if(!n)return;const t=Array.isArray(n)?n:[n];if(t.length===0)throw new Error("The "+e+" channel array must not be empty.");const r=[];for(const i of t){if(!i||typeof i!="object"||!("field"in i))throw new Error("The "+e+" channel must be a field definition or an array of field definitions.");const s=i.field;if(typeof s!="string")throw new Error("The "+e+" channel field definition must include a string field name.");r.push(s)}return r}const Z4={point:ZQ,rect:JQ,rule:nD,link:lD,text:gD};class tt extends bm{#e;#t=!1;#n=null;constructor(e,t,r,i,s,o){super(e,t,r,i,s,o),this.spec=e;const a=Z4[this.getMarkType()];if(a)this.mark=new a(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.resolve(),this.#e=this.paramRuntime.allocateSetter("zoomLevel",1);for(const l of["x","y"]){const c=this.getScaleResolution(l);if(c){const u=()=>{this.#e(Math.sqrt(this.getZoomLevel()))};c.addEventListener("domain",u),this.registerDisposer(()=>c.removeEventListener("domain",u))}}this.needsAxes={x:!0,y:!0},this.#r()}#r(){for(const[e,t]of this.paramRuntime.paramConfigs){if(!("select"in t))continue;const r=Ko(t.select),i=r.on,s=r.clear;if(jo(r)){let a=0;const l=h=>{this.paramRuntime.setValue(e,h)},c=()=>{const h=this.context.getCurrentHover();return h?.mark?.unitView===this?h.datum:null},u=i.filter?Cm(i.filter):()=>!0,f=(h,A)=>{if(!u(A.proxiedMouseEvent))return;const d=c(),g=d?d[dt]:0;let p;if(r.toggle)if(A.mouseEvent.shiftKey){if(d){const C=this.paramRuntime.getValue(e);p=NE(C,{toggle:[d]})}}else p=El(d?[d]:null);else g!=a&&(a=g,p=bl(d));p!==void 0&&l(p)};if(this.addInteractionEventListener(["mouseover","pointerover"].includes(i.type)?"mousemove":i.type,f),s){const h=s.filter?Cm(s.filter):()=>!0,A=(d,g)=>{if(!h(g.proxiedMouseEvent))return;a=0;const p=r.toggle?El():bl(null);l(p)};this.addInteractionEventListener(s.type,A)}}}}render(e,t,r={}){super.render(e,t,r),this.isConfiguredVisible()&&(e.pushView(this,t),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}getEncoding(){const e=super.getEncoding(),t=this.mark.getSupportedChannels();for(const r of Object.keys(e))r!=="key"&&(t.includes(r)||delete e[r]);return e}resolve(e){if(!e){this.resolve("scale"),this.resolve("axis");return}const t=this.mark.encoding;for(const[r,i]of Object.entries(t)){if(!i||Array.isArray(i))continue;let s;if(gt(i))s=i;else if(wl(i)){const l=i.condition;if(!Array.isArray(l)&&gt(l))s=l;else continue}else continue;const o=In(s.resolutionChannel??r);if(!qo(o)||e=="axis"&&!ls(o))continue;let a=this;for(;(a.getConfiguredOrDefaultResolution(o,e)=="forced"||a.dataParent&&["shared","excluded","forced"].includes(a.dataParent.getConfiguredOrDefaultResolution(o,e)))&&a.getConfiguredOrDefaultResolution(o,e)!="excluded";)a=a.dataParent;if(e=="axis"&&ls(r)&&Cl(o)){a.resolutions[e][o]||(a.resolutions[e][o]=new Ik(o));const l=a.resolutions[e][o],c=l.registerMember({view:this,channel:r,channelDef:s});this.registerDisposer(()=>{c()&&a.resolutions[e][o]===l&&delete a.resolutions[e][o]})}else if(e=="scale"&&qo(r)){if(!a.resolutions[e][o]){const f=new yk(o);a.resolutions[e][o]=f;const h=A=>{this.context.glHelper?.createRangeTexture(A.scaleResolution,!0)};f.addEventListener("range",h),f.addEventListener("domain",h),this.registerDisposer(()=>{f.removeEventListener("range",h),f.removeEventListener("domain",h)})}const l=!this.isDomainInert(),c=a.resolutions[e][o],u=c.registerMember({view:this,channel:r,channelDef:s,contributesToDomain:l});this.registerDisposer(()=>{u()&&a.resolutions[e][o]===c&&(c.dispose(),delete a.resolutions[e][o])})}}}dispose(){super.dispose(),this.mark.dispose()}getDataAccessor(e){const t=this.mark.encoders;if(t)return t[e]?.dataAccessor}getSearchAccessors(){if(!this.#n){const e=W4(this.getEncoding())??[];this.#n=e.map(t=>$(t))}return this.#n}getFacetAccessor(e){const t=this.getDataAccessor("sample");return t||super.getFacetAccessor(this)}getCollector(){return this.flowHandle?.collector}registerDomainSubscriptions(){if(this.#t||this.isDomainInert())return;const e=this.getCollector();if(!e)return;const t=this.mark.encoders;if(!t)throw new Error("Encoders are not initialized!");this.#t=!0;const r=new Map;for(const i of Object.values(t)){if(!i)continue;const s=i.accessors??[];if(s.length!==0)for(const o of s){if(!sd(o)||o.channelDef.domainInert)continue;const a=this.getScaleResolution(o.scaleChannel);if(!a)throw new Error("Missing scale resolution for channel: "+o.scaleChannel);let l=r.get(a);l||(l=new Set,r.set(a,l)),l.add(o)}}for(const[i,s]of r){if(s.size===0)continue;const o=i.registerCollectorSubscriptions(e,s);this.registerDisposer(o)}}getZoomLevel(){const e=t=>this.getScaleResolution(t)?.getZoomLevel()??1;return tr.map(e).reduce((t,r)=>t*r,1)}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),e.target=this,!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}getDefaultResolution(e,t){return e=="x"?"shared":"independent"}}class df extends Error{constructor(e,t){super(t),this.kind=e}}async function xm(n,e={}){let t;try{t=await fetch(n,{signal:e.signal})}catch(r){throw new df("network",String(r))}if(!t.ok)throw new df("http",String(t.status)+" "+t.statusText);try{return await t.json()}catch(r){throw new df("json",String(r))}}function $4(n){const e=new Set;n.visit(t=>{for(const r of Object.values(t.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)}})}function e8(n){for(const e of tr){const t=n.getScaleResolution(e);t&&!t.name&&t.isZoomable()&&(t.name=`${e}_at_root`)}}function gf(n,e=()=>!0){return Promise.allSettled(n).then(t=>{if(e())for(const r of t)"value"in r?r.value.finalizeGraphicsInitialization():"reason"in r&&console.error(r.reason)})}async function t8(n,e,t){const r=n.import;if(!("url"in r))throw new Error("Not an url import: "+JSON.stringify(r));const i=dr(e,r.url);let s;try{s=await xm(i)}catch(o){throw new Error(`Could not load imported view spec: ${i}. Reason: ${o.message}`)}if(t.isViewSpec(s))return s.baseUrl=dr(kp(r.url),s.baseUrl),s;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(n)}`)}function n8(n){const e=n.getSize(),t=n.getPadding(),r=(i,s)=>i.grow>0?void 0:i.px+s;return{width:r(e.width,t.horizontalTotal),height:r(e.height,t.verticalTotal)}}function*pf(n,e=[]){for(const[t,r]of n.entries())if(r instanceof Map)for(const i of pf(r,[...e,t]))yield i;else yield[[...e,t],r]}const Bm=2147483647,r8=vm([Bm]);function vm(n){let e=0;for(let t=0,r=n.length;t<r;t++)e=Math.max(e,n[t]);return Math.floor(Math.log2(e)/4)+1}function i8(n){const e=vm(n);let t=Array.from({length:n.length},(s,o)=>o),r=new Array(n.length);const i=new Array(16);for(let s=0;s<e;s++){i.fill(0);const o=s*4,a=Math.pow(16,s),l=c=>{const u=n[t[c]];return s>=r8?u>Bm?Math.floor(u/a)%16:0:u>>o&15};for(let c=0;c<n.length;c++)i[l(c)]++;for(let c=1;c<16;c++)i[c]+=i[c-1];for(let c=n.length-1;c>=0;c--)r[--i[l(c)]]=t[c];[t,r]=[r,t]}return t}const Ka="|",mf="\\";class s8{#e=null;#t=null;#n=!1;invalidate(){this.#e=null,this.#t=null,this.#n=!1}findDatum(e,t,r){if(!e||e.length===0)return;const i=e.join(", ");if(e.length!==t.length)throw new Error(`Key tuple length ${t.length} does not match fields [${i}]`);(!this.#e||!this.#s(e))&&this.#r(e,r);const s=this.#t;let o;if(this.#n){let a="";for(let l=0;l<t.length;l++){l>0&&(a+=Ka);const c=s[l],u=ja(t[l],c);a+=Sm(u)}o=a}else{const a=s[0];o=ja(t[0],a)}return this.#e.get(o)}#r(e,t){const r=e.map(a=>$(a)),i=new Map,s=e.join(", "),o=e.length!==1;if(o)for(const a of t)for(let l=0,c=a.length;l<c;l++){const u=a[l];let f="";for(let A=0;A<r.length;A++){A>0&&(f+=Ka);const d=e[A],g=ja(r[A](u),d);f+=Sm(g)}if(i.get(f)!==void 0){const A=r.map(d=>d(u));throw new Error(`Duplicate key detected for fields [${s}]: ${JSON.stringify(A)}`)}i.set(f,u)}else{const a=r[0],l=e[0];for(const c of t)for(let u=0,f=c.length;u<f;u++){const h=c[u],A=ja(a(h),l);if(i.get(A)!==void 0)throw new Error(`Duplicate key detected for fields [${s}]: ${JSON.stringify(A)}`);i.set(A,h)}}this.#e=i,this.#t=[...e],this.#n=o}#s(e){if(!this.#t||this.#t.length!==e.length)return!1;for(let t=0;t<e.length;t++)if(this.#t[t]!==e[t])return!1;return!0}}function ja(n,e){if(n===void 0)throw new Error(`Key field "${e}" is undefined. Ensure all key fields are present in the data.`);if(n===null)throw new Error(`Key field "${e}" is null. Ensure all key fields are present in the data.`);if(typeof n!="string"&&typeof n!="number"&&typeof n!="boolean")throw new Error(`Key field "${e}" must be a scalar value (string, number, or boolean).`);return n}function o8(n){if(!(n.indexOf(mf)!==-1||n.indexOf(Ka)!==-1))return n;let t="";for(let r=0;r<n.length;r++){const i=n[r];(i===mf||i===Ka)&&(t+=mf),t+=i}return t}function Sm(n){return typeof n=="string"?o8(n):String(n)}class Qm extends gl{#e=[];#t=$(dt);#n=[];#r=new s8;#s;#o;#i=new a8;get behavior(){return dl}get label(){return"collect"}constructor(e){super(),this.params=e??{type:"collect"},this.observers=new Set,this.facetBatches=new jt([],JSON.stringify),this.#o=l8(this.params?.sort),this.#c()}#c(){this.#e=[],this.#n=[],this.#r.invalidate(),this.facetBatches.clear(),this.facetBatches.set(void 0,this.#e)}reset(){super.reset(),this.#c()}handle(e){this.#e.push(e)}beginBatch(e){this.#r.invalidate(),bE(e)&&(this.#e=[],this.facetBatches.set(Me(e.facetId),this.#e))}complete(){if(this.#e=[],this.params.groupby?.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const e=this.facetBatches.get(void 0),t=this.params.groupby.map(i=>$(i)),r=t.length>1?Qo(e,...t):c8(e,t[0]);this.facetBatches.clear();for(const[i,s]of pf(r))this.facetBatches.set(i,s)}if(this.#o)for(const e of this.facetBatches.values())e.sort(this.#o);this.#f(),this.#a(),super.complete(),this.#u();for(const e of this.observers)e(this)}observe(e){return this.observers.add(e),()=>{this.observers.delete(e)}}#a(){if(this.children.length)for(const[e,t]of this.facetBatches.entries()){if(e){const r={type:"facet",facetId:e};for(const i of this.children)i.beginBatch(r)}for(let r=0,i=t.length;r<i;r++)this._propagate(t[r])}}repropagate(){for(const e of this.children)e.reset();this.#a();for(const e of this.children)e.complete();this.#u()}getDomain(e,t,r){return this.#i.getDomain(e,()=>{const i=Ga(t);if(r.constant)i.extend(r({}));else if(this.completed)for(const s of this.facetBatches.values())for(let o=0,a=s.length;o<a;o++)i.extend(r(s[o]));return i})}subscribeDomainChanges(e,t){return this.#i.subscribe(e,t)}getData(){switch(this.#l(),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())yield*r}}}}}visitData(e){this.#l();for(const t of this.facetBatches.values())for(let r=0;r<t.length;r++)e(t[r])}getItemCount(){let e=0;for(const t of this.facetBatches.values())e+=t.length;return e}#l(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}#u(){this.#i.hasCachedDomains()&&this.#i.clear(),this.#i.notify()}#f(){this.#s=[];const e=this.facetBatches.values().next().value?.[0];if(e==null||!(dt in e))return;let t=0;const r=[],i=this.#t;for(const[s,o]of this.facetBatches){this.#s.push({start:t,stop:t+o.length,facetId:s}),t+=o.length;for(let a=0,l=o.length;a<l;a++)r.push(i(o[a]))}this.#n=i8(r)}findDatumByUniqueId(e){if(!this.#n.length)return;const t=Wn(a=>a.start).right,r=this.#t,i=Wn(a=>r(s(a))).left,s=a=>{const l=t(this.#s,a),c=this.#s[l-1];return!c||a>=c.stop?void 0:this.facetBatches.get(c.facetId)[a-c.start]},o=i(this.#n,e);if(o>=0){const a=s(this.#n[o]);if(a&&r(a)===e)return a}}findDatumByKey(e,t){return this.#l(),this.#r.findDatum(e,t,this.facetBatches.values())}}class a8{#e=new Map;#t=new Map;hasCachedDomains(){return this.#e.size>0}clear(){this.#e.clear()}getDomain(e,t){const r=this.#e.get(e);if(r)return r;{const i=t();return this.#e.set(e,i),i}}subscribe(e,t){let r=this.#t.get(e);return r||(r=new Set,this.#t.set(e,r)),r.add(t),()=>{const i=this.#t.get(e);i&&(i.delete(t),i.size===0&&this.#t.delete(e))}}notify(){if(this.#t.size===0)return;const e=new Set;for(const t of this.#t.values())for(const r of t)e.add(r);for(const t of e)t()}}function c8(n,e){const t=new Map;for(let r=0,i=n.length;r<i;r++){const s=n[r],o=e(s);let a=t.get(o);a||(a=[],t.set(o,a)),a.push(s)}return t}function l8(n){if(n?.field){const e=Me(n.field);if(e.length==1&&!e[0].includes(".")){const t=Me(n.order)[0]??"ascending",r=JSON.stringify(e[0]);return new Function("a","b",`return a[${r}] ${t==="ascending"?"-":"+"} b[${r}];`)}return OA(n.field,n.order)}}class u8 extends Qe{get behavior(){return Nt}constructor(e){super(e),this.params=e,this.startAccessor=$(e.start),this.endAccessor=$(e.end),this.chromAccessor=e.chrom?$(e.chrom):t=>{},this.weightAccessor=e.weight?$(e.weight):t=>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(([t,r])=>r).map(([t,r])=>`${JSON.stringify(r)}: ${t}`).join(", ")+"};"),this.ends=new ai}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,t=this.as.end,r=this.as.chrom,i=this.startAccessor,s=this.endAccessor,o=this.chromAccessor,a=this.weightAccessor;let l,c,u,f=0,h=NaN;const A=this.ends;A.clear();const d=m=>{this._propagate(m),l=null},g=(m,C,y)=>{if(m==C)return;let w=!1;l&&(l[e]===y?(l[t]=C,w=!0):l[e]!=0&&d(l)),w||(l=this.createSegment(m,C,y,u))},p=()=>{let m=0;for(;(m=A.peekValue())!==void 0;)g(h,m,f),h=m,f-=A.pop();h=NaN,l&&d(l)};this.handle=m=>{const C=i(m);let y=0;for(;(y=A.peekValue())!==void 0&&y<C;)g(h,y,f),h=y,f-=A.pop();if(r){let E=o(m);E!==c&&(p(),u=E,c=u)}isNaN(h)||g(h,C,f),h=C;const w=a(m);f+=w,A.push(w,s(m))},this.complete=()=>{p(),super.complete()},this.beginBatch=m=>{p(),c=null,super.beginBatch(m)}}}function f8(n,e,t=s=>+s,r=0,i=n.length){const s=new ai,o=i-r;let a;for(a=0;a<e&&a<o;a++)s.push(a,t(n[r+a]));for(;a<o;a++){const u=t(n[r+a]);u>=s.peekValue()&&(s.push(a,u),s.pop())}const l=[];let c;for(;(c=s.pop())!==void 0;)l.push(n[r+c]);return l.reverse()}class A8{constructor(e,t=-1/0,r=1/0){this.maxSize=e,this.lowerLimit=t,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,t,r=0){if(e>=this.lowerLimits[r]&&t<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const s=this._findSlot(e,t,i);return s>=0?s:this._findSlot(e,t,this.upperChildren[r])}else return r}else return-1}reserve(e,t){if(t-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,t);if(r<0)return!1;const i=this.n++,s=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[s]=t,this.upperLimits[s]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=s,!0}}class h8 extends Qe{get behavior(){return dl}constructor(e,t){if(super(e),this.params=e,this._data=[],this.channel=e.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.startPosAccessor=$(this.params.pos),this.endPosAccessor=$(this.params.pos2??this.params.pos),this.startPosBisector=Wn(this.startPosAccessor),this.endPosBisector=Wn(this.endPosAccessor),this.scoreAccessor=$(this.params.score),this.widthAccessor=$(this.params.width),this.laneAccessor=this.params.lane?$(this.params.lane):o=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=t.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>t.context.animator.requestTransition(r);const i=()=>this.schedule();this.resolution.addEventListener("domain",i),this.registerDisposer(()=>this.resolution.removeEventListener("domain",i));const s=t._addBroadcastHandler("layoutComputed",()=>this.schedule());this.registerDisposer(s)}complete(){const e=this.startPosAccessor;this._data.sort((t,r)=>e(t)-e(r));for(const t of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(t,new A8(200));this.schedule(),super.complete()}_filterAndPropagate(){super.reset();const e=this.resolution.getScale(),t=this.resolution.getAxisLength();if(!t)return;for(const o of this.reservationMaps.values())o.reset();const r=e.domain(),s=f8(this._data,70,this.scoreAccessor,this.endPosBisector.left(this._data,r[0]),this.startPosBisector.right(this._data,r[1]));for(const o of s){let a=e(this.startPosAccessor(o))*t,l=e(this.endPosAccessor(o))*t;const c=l-a,u=this.widthAccessor(o)+this.padding*2;let f=(a+l)/2;const h=Math.max(0,(c-u)/2);if(h>0){const A=Math.max(0,u/2-f);f+=Math.min(A,h);const d=Math.max(0,u/2+f-t);f-=Math.min(d,h)}if(this.reservationMaps.get(this.laneAccessor(o)).reserve(f-u/2,f+u/2))if(this.params.asMidpoint){const A=Object.assign({},o);A[this.params.asMidpoint]=e.invert(f/t),this._propagate(A)}else this._propagate(o)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class d8 extends Qe{constructor(e,t){super(e,t),this.params=e,this.predicate=void 0}initialize(){let e="";if(g8(this.params))e=this.params.expr;else if(p8(this.params)){const t=this.paramRuntime.findValue(this.params.param);if(!t)throw new Error(`Cannot initialize filter transform. Selection parameter "${this.params.param}" not found!`);e=TE(this.params,t)}else throw new Error("Invalid filter params: "+JSON.stringify(this.params));this.predicate=this.paramRuntime.watchExpression(e,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:t=>this.registerDisposer(t)})}handle(e){this.predicate(e)&&this._propagate(e)}}function g8(n){return"expr"in n}function p8(n){return"param"in n}class m8 extends Qe{get behavior(){return Nt}constructor(e){super(e),this.params=e;const t=e.index;if(e.fields){const r=Me(e.fields).map(s=>$(s)),i=Me(e.as||e.fields);if(r.length!==i.length)throw new Error(`Lengths of "fields" (${r.length}), and "as" (${i.length}) do not match!`);this.handle=s=>{const o=r.map((l,c)=>l(s)??[]),a=o[0].length;for(let l=0;l<a;l++){const c=Object.assign({},s);for(let u=0;u<r.length;u++)c[i[u]]=l<o[u].length?o[u][l]:null;t&&(c[t]=l),this._propagate(c)}}}else this.handle=r=>{for(let i=0;i<r.length;i++){const s=Object.assign({},r[i]);t&&(s[t]=i),this._propagate(s)}}}}const w8=48;function*C8(n,e=","){const t=e.charCodeAt(0);let r=0;for(let i=0;i<n.length;i++){const s=n.charCodeAt(i);s==t?(yield r,r=0):r=r*10+s-w8}yield r}class y8 extends Qe{get behavior(){return Nt}constructor(e){super(e);const t=$(e.exons??"exons"),r=$(e.start??"start"),[i,s]=e.as||["exonStart","exonEnd"];this.handle=o=>{let a=r(o),l=a,c=!0;const u=t(o);for(const f of C8(u)){if(c)l=a+f;else{a=l+f;const h=Object.assign({},o);h[i]=l,h[s]=a,this._propagate(h)}c=!c}}}}class I8 extends Qe{get behavior(){return Nt}constructor(e){super(e);const t=Me(e.field).map(s=>$(s)),r=Me(e.separator),i=Me(e.as||e.field);if(t.length!==r.length||t.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${t.length}), and "as" (${i.length}) do not match!`);this.handle=s=>{if(t.some(l=>!l(s)))return;const o=t.map((l,c)=>l(s).split(r[c]));b8(o,s);const a=o[0].length;for(let l=0;l<a;l++){const c=Object.assign({},s);for(let u=0;u<t.length;u++)c[i[u]]=o[u][l];this._propagate(c)}}}}function b8(n,e){const t=n.map(r=>r.length);if(!t.every(r=>r==t[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(e))}class E8 extends Qe{get behavior(){return yn}constructor(e,t){super(e,t),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=this.paramRuntime.watchExpression(this.params.expr,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)})}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Dm extends Qe{get behavior(){return yn}constructor(e,t){e={channel:"x",...e},super(e),this.params=e;const r=e.channel;if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=t.getScaleResolution(r).getScale(),s="genome"in i?i.genome():void 0;if(!s)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=$(e.chrom),a=Me(e.pos).map(g=>$(g)),l=Me(e.as);if(a.length!=l.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=Me(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",l.map((g,p)=>`datum[${JSON.stringify(g)}] = chromOffset + +posAccessors[${p}](datum) - ${u[p]};`).join(`
613
+ `));let h,A=0;const d=g=>{if(g!==h){if(A=s.cumulativeChromPositions.get(g),A===void 0)return;h=g}return A};this.handle=g=>{const p=o(g),m=d(p);if(m===void 0)throw new Error(`Unknown chromosome/contig "${p}" in datum: ${JSON.stringify(g)}`);f(g,m,a),this._propagate(g)}}}const km={chars:JSON.parse('[{"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}]'),common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0}};class x8 extends Qe{get behavior(){return yn}constructor(e,t){super(e,t),this.params=e;const r=iu(km),i=$(e.field),s=e.as;let o=0;if(Ie(e.fontSize)){const a=t.paramRuntime.watchExpression(e.fontSize.expr,()=>{o=a(),this.repropagate()},{scopeOwned:!1,registerDisposer:l=>this.registerDisposer(l)});o=a()}else o=e.fontSize;this.handle=a=>{const l=i(a);l!==void 0?a[s]=r.measureWidth(l,o):a[s]=0,this._propagate(a)}}}const B8=65536;class v8 extends Qe{get behavior(){return yn}constructor(e){super(e),this.params=e}reset(){super.reset(),this.initialize()}initialize(){const e=this.params,t=e.as||"lane",r=Ye(e.spacing)?e.spacing:1,i=$(e.start),s=$(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const o=new Float64Array(B8),a=$(e.preference),l=e.preferredOrder;let c=1/0;this.handle=u=>{const f=i(u);f<c&&o.fill(-1/0),c=f;const h=l.indexOf(a(u));let A=-1;if(h>=0&&o[h]<f)A=h;else{const d=i(u);for(A=0;A<o.length&&!(o[A]<d);A++);if(A>=o.length)throw new Error("Out of lanes!")}o[A]=s(u)+r,u[t]=A,this._propagate(u)}}else{const o=new ai,a=new ai;let l=-1/0,c=0;this.handle=u=>{const f=i(u);for(;o.length&&(o.peekValue()<=f||f<l);){const A=o.pop();a.push(A,A)}l=f;let h=a.pop();h===void 0&&(h=c++),u[t]=h,this._propagate(u),o.push(h,s(u)+r)}}}}class S8 extends Qe{get behavior(){return Nt}constructor(e){if(super(e),this.params=e,e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const t=e.fields.map(i=>$(i)),r=e.as?e.as:t.map(Zy);this.handle=i=>{const s={};for(let o=0;o<t.length;o++)s[r[o]]=t[o](i);this._propagate(s)}}}class Q8 extends Qe{get behavior(){return yn}constructor(e){super(e),this.params=e;const t=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=$(e.field);this.handle=s=>{const o=i(s);if(le(o)){const a=o.match(t);if(a){if(a.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let l=0;l<r.length;l++)s[r[l]]=a[l+1]}else if(e.skipInvalidInput)for(let l=0;l<r.length;l++)s[r[l]]=void 0;else throw new Error(`"${o}" does not match the given regex: ${t.toString()}`)}else if(!e.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof o}, field content: "${o}".`);this._propagate(s)}}}class D8 extends Qe{get behavior(){return Nt}constructor(e){super(e),this.params=e;const t=Me(e.columnRegex).map(h=>new RegExp(h));for(const h of t)if(RegExp("|"+h.source).exec("").length-1!=1)throw new Error(`Regex ${h.toString()} must have exactly one capturing group!`);const r=Me(e.asValue);if(t.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,s=e.asKey||"sample";let o,a,l;const c=h=>{const A=Object.keys(h);for(const p of t)if(!A.some(m=>p.test(m)))throw new Error(`No columns matching the regex ${p.toString()} found in the data!`);const d=new Map;for(const[p,m]of t.entries())for(const C of A){const y=m.exec(C)?.[1];if(y!==void 0){let w=d.get(y);w||(w=[],d.set(y,w)),w[p]=C}}o=[...d.entries()],a=A.filter(p=>!t.some(m=>m.test(p))&&!(i&&i.test(p)));const g=[...a.map(p=>JSON.stringify(p)+": datum["+JSON.stringify(p)+"]"),JSON.stringify(s)+": sampleId",...r.map((p,m)=>JSON.stringify(p)+`: datum[attrs[${m}]]`)];l=new Function("datum","sampleId","attrs",`return {
614
+ `+g.join(`,
657
615
  `)+`
658
- };`)},u=h=>{o||c(h);for(let A=0;A<o.length;A++){const[d,p]=o[A],C=l(h,d,p);this._propagate(C)}},f=h=>{c(h),u(h),this.handle=u};this.handle=f,this.beginBatch=h=>{h1(h)&&(this.handle=f),super.beginBatch(h)}}}class vN extends ze{get behavior(){return Cr}constructor(t){super(t),this.params=t,this.buffer=[]}reset(){super.reset(),this.buffer=[]}handle(t){this.buffer.push(t)}complete(){const t=this.params,e=t.as||["y0","y1"],r=t.sort?Wp(t.sort.field,t.sort.order):void 0,i=t.field?ue(t.field):()=>1,s=t.groupby.map(u=>ue(u)),o=u3(this.buffer,u=>s.map(f=>f(u)).join()).map(u=>u[1]);let a=u=>!0;if(t.baseField){const u=ue(t.baseField);a=f=>u(f)!==null}let l,c;switch(t.offset){case"normalize":l=(u,f)=>u/f,c=(u,f)=>Za(u,f);break;case"center":l=(u,f)=>u-f/2,c=(u,f)=>Za(u,f);break;case"information":{const u=Math.log2(t.cardinality??4);l=(f,h)=>f/h,c=(f,h)=>{const d=Za(f,y=>+!a(y)),p=Za(f,h),C=p-d;let m=0;for(let y=0;y<f.length;y++){const I=f[y];if(a(I)){const w=h(I)/C;m-=w*Math.log2(w)}}return C/(u-(m+0))*(C/p)}}break;default:l=(u,f)=>u,c=(u,f)=>1}for(const u of o){r&&u.sort(r);const f=c(u,i);let h=0;for(const A of u){const d=h+i(A);a(A)&&(A[e[0]]=l(h,f),A[e[1]]=l(d,f),this._propagate(A),h=d)}}super.complete()}}class SN extends ze{get behavior(){return pn}constructor(t){super(t),this.params=t;const e=ue(t.field??"sequence"),[r,i]=t.as??["pos","sequence"];this.handle=s=>{const o=Object.assign({},s,{[i]:"",[r]:0}),a=e(s);for(let l=0;l<a.length;l++){const c=Object.assign({},o);c[r]=l,c[i]=a.charAt(l),this._propagate(c)}}}}const H2={count:n=>n.length,valid:i3,sum:Za,min:Sh,max:vh,mean:p3,median:m3,variance:s3};class QN extends ze{get behavior(){return pn}constructor(t){if(super(t),this.params=t,this.buffer=[],this.ops=[],this.as=[],t.fields){if(t.fields.length!=t.ops.length)throw new Error("Fields and ops must have the same length!");if(t.as&&t.as.length!=t.ops.length)throw new Error('If "as" is defined, "fields" and "as" must have the same length!');t.fields.forEach((e,r)=>{const i=ue(e),s=H2[t.ops[r]];this.ops.push(o=>s(o,i)),this.as.push(t.as?t.as[r]:`${t.ops[r]}_${t.fields[r]}`)})}else this.ops.push(e=>H2.count(e)),this.as.push("count")}reset(){super.reset(),this.buffer=[]}handle(t){this.buffer.push(t)}complete(){const t=this.params,e=t==null?void 0:t.groupby;if((e==null?void 0:e.length)>0){const r=e.map(s=>ue(s)),i=Uu(this.buffer,...r);for(const[s,o]of _0(i)){const a={};for(let l=0;l<e.length;l++)a[e[l]]=s[l];this.ops.forEach((l,c)=>{a[this.as[c]]=l(o)}),this._propagate(a)}}else{const r={};this.ops.forEach((i,s)=>{r[this.as[s]]=i(this.buffer)}),this._propagate(r)}super.complete()}}const DN={aggregate:QN,collect:U2,coverage:oN,filterScoredLabels:lN,filter:uN,flatten:hN,flattenCompressedExons:pN,flattenDelimited:mN,flattenSequence:SN,formula:wN,identifier:Jh,linearizeGenomicCoordinate:G2,measureText:yN,pileup:EN,project:bN,regexExtract:xN,regexFold:BN,sample:Uy,stack:vN};function kN(n,t){const e=DN[n.type];if(e)return new e(n,t);throw new Error("Unknown transform: "+n.type)}function V2(n,t=[]){if(!J2(n)&&!Y2(n))return;const e={...n.format};if(e.type??(e.type=Y2(n)&&RN(t)),e.parse??(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(n));return e}function FN(n){var t;return((t=Hh(n))==null?void 0:t.responseType)??"text"}function RN(n){var t;if(Array.isArray(n)&&(n=n[0]),n)return(t=n.match(/\.(csv|tsv|json)/))==null?void 0:t[1]}const _2=n=>typeof n!="object"?MN:NN,MN=n=>({data:n}),NN=n=>n;function Y2(n){return"url"in n}class Ui extends Yh{constructor(e){super();X(this,"view");this.view=e}get identifier(){}setLoadingStatus(e,r){this.view.context.dataFlow.loadingStatusRegistry.set(this.view,e,r)}get paramRuntime(){return this.view.paramRuntime}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}repropagate(){this.load()}}function J2(n){return"values"in n}class TN extends Ui{constructor(e,r){var i;super(r);v(this,Kl);if(this.params=e,typeof e.values=="string"&&!((i=e==null?void 0:e.format)!=null&&i.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}get label(){return"inlineSource"}isTrivial(){const e=this.params.values,r=Array.isArray(e)?e[0]:e;return!!(r&&Object.keys(r).length==0&&r.constructor===Object)}updateDynamicData(e){F(this,Kl,Mp).call(this,e)}loadSynchronously(){F(this,Kl,Mp).call(this,this.params.values)}async load(){this.loadSynchronously()}}Kl=new WeakSet,Mp=function(e){let r=[],i=s=>s;if(Array.isArray(e))e.length>0&&(r=e,i=_2(e[0]));else if(typeof e=="object")r=[e];else if(typeof e=="string")r=Vh(e,V2(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 s of r)this._propagate(i(s));this.complete()};function PN(n){return"url"in n}class LN extends Ui{constructor(e,r){super(r);v(this,jA);this.params=gc(r.paramRuntime,e,()=>this.load(),i=>this.registerDisposer(i),{batchMode:"whenPropagated"}),this.baseUrl=r==null?void 0:r.getBaseUrl()}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}get label(){return"urlSource"}async load(){const e=Oe(this.params.url),r=typeof e=="object"&&"urlsFromFile"in e?await F(this,jA,FB).call(this,e):(Array.isArray(e)?e:[e]).map(l=>Ti(this.baseUrl,l)),i=V2(this.params,r),s=FN(i.type);if(r.length===0||!r[0]){this.reset(),this.complete();return}const o=async l=>{try{const c=await fetch(l);if(!c.ok)throw new Error(`${c.status} ${c.statusText}`);return typeof c[s]=="function"?c[s]():c.text()}catch(c){throw new Error(`Could not load data: ${l}. Reason: ${c.message}`)}},a=(l,c)=>{try{const u=Vh(l,i);this.beginBatch({type:"file",url:c});for(const f of u)this._propagate(f)}catch(u){throw new Error(`Cannot parse: ${c}: ${u.message}`)}};this.setLoadingStatus("loading"),this.reset();try{await Promise.all(r.map(l=>o(l).then(a))),this.setLoadingStatus("complete")}catch(l){this.setLoadingStatus("error",l.message)}this.complete()}}jA=new WeakSet,FB=async function(e){const r=Ti(this.baseUrl,e.urlsFromFile),i=await fetch(r);if(!i.ok)throw new Error(`Cannot load "${r}": ${i.status} ${i.statusText}`);const s=await i.text();return Vh(s,{type:e.type??"tsv"}).map(a=>typeof a=="string"?a:a.url).map(a=>Ti(r,a))};function ON(n){return"sequence"in n}class UN extends Ui{constructor(t,e){if(super(e),this.sequence=gc(e.paramRuntime,t.sequence,()=>this.loadSynchronously(),r=>this.registerDisposer(r),{batchMode:"whenPropagated"}),!("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!")}get label(){return"sequenceSource"}loadSynchronously(){const t=Oe(this.sequence.as)??"data",e=Oe(this.sequence.start)??0,r=Oe(this.sequence.step)??1,i=Oe(this.sequence.stop);this.reset(),this.beginBatch({type:"file"});for(let s=e;s<i;s+=r)this._propagate({[t]:s});this.complete()}async load(){this.loadSynchronously()}}class J0 extends Ui{constructor(e,r){super(e);X(this,"initializedPromise",Promise.resolve());X(this,"_lastLoadedDomain");if(r){if(r!=="x"&&r!=="y")throw new Error(`Invalid channel specified for the lazy data source: ${r}. Must be either "x" or "y"`)}else throw new Error('No channel has been specified for the lazy data source. Must be either "x" or "y".');if(this.channel=r,this.scaleResolution=this.view.getScaleResolution(r),!this.scaleResolution){const s=[`The lazy data source cannot find a resolved scale for channel "${r}".`];throw this.view instanceof Ct||s.push('Make sure the view has a "shared" scale resolution as it is not a unit view.'),new Error(s.join(" "))}const i=()=>{this.view.isVisible()&&this.onDomainChanged(this.scaleResolution.getDomain(),this.scaleResolution.getComplexDomain())};this.scaleResolution.addEventListener("domain",i),this.view.context.addBroadcastListener("layoutComputed",i)}get genome(){const e=this.scaleResolution.getScale();if("genome"in e){const r=e.genome();if(r)return r}throw new Error("No genome has been defined!")}onDomainChanged(e,r){}requestRender(){this.view.context.animator.requestRender()}async load(){this.reset(),this.complete()}publishData(e){this._lastLoadedDomain=Array.from(this.scaleResolution.getDomain()),this.reset(),this.beginBatch({type:"file"});for(const r of e)for(const i of r)this._propagate(i);this.complete()}isDataReadyForDomain(e){const r=e[this.channel];if(!r||!this._lastLoadedDomain)return!1;const[i,s]=r[0]<=r[1]?r:[r[1],r[0]],[o,a]=this._lastLoadedDomain[0]<=this._lastLoadedDomain[1]?this._lastLoadedDomain:[this._lastLoadedDomain[1],this._lastLoadedDomain[0]];return i>=o&&s<=a}}class GN extends J0{constructor(e,r){const i={...e};super(r,i.channel);X(this,"ticks",[]);this.params=e}get label(){return"axisTickSource"}async load(){this.ticks=null,this.onDomainChanged()}onDomainChanged(){const e=this.scaleResolution.getScale(),r=this.scaleResolution.getAxisLength(),i=this.params.axis,s=c=>25+60*D2(100,700,c),o=ot(i.tickCount)?i.tickCount:Math.round(r/s(r)),a=Yy(e,o,i.tickMinStep),l=i.values?Jy(e,i.values,a):v6(e,a);if(this.ticks==null||!Js(l,this.ticks)){this.ticks=l;const c=Q6(e,o,i.format);this.publishData([l.map(u=>({value:u,label:c(u)}))])}}}class zN extends J0{constructor(t,e){super(e,t.channel)}get label(){return"axisGenomeSource"}async load(){this.publishData([this.genome.chromosomes])}}class $c extends J0{constructor(){super(...arguments);v(this,Aa,new AbortController);v(this,ha,[0,0]);v(this,da,[0,0]);v(this,jl,0);X(this,"params")}setupDebouncing(e){const r=()=>Oe(e.debounce),i=e.debounceMode;if(i=="domain")this.onDomainChanged=nf(this.onDomainChanged.bind(this),r,!1);else if(i=="window")this.loadInterval=nf(this.loadInterval.bind(this),r,!1);else throw new Error("Invalid debounceMode: "+i)}onDomainChanged(e){var i;Q(this,da,e);const r=Oe((i=this.params)==null?void 0:i.windowSize)??-1;e[1]-e[0]>r||this.callIfWindowsChanged(e,r,async s=>{await this.initializedPromise,this.loadInterval(s)})}reloadLastDomain(){const e=g(this,da);Q(this,da,[0,0]),Q(this,ha,[0,0]),this._lastLoadedDomain=void 0,this.onDomainChanged(e)}async loadInterval(e){}publishData(e){const r=this._lastLoadedDomain;super.publishData(e),r&&(this._lastLoadedDomain=r)}async discretizeAndLoad(e,r){g(this,Aa).abort(),this.setLoadingStatus("loading"),Q(this,Aa,new AbortController);const i=g(this,Aa).signal,s=this.genome.continuousToDiscreteChromosomeIntervals(e);try{const o=await Promise.all(s.map(async a=>r(a,i)));if(!i.aborted)return this.setLoadingStatus("complete"),this._lastLoadedDomain=Array.from(e),o}catch(o){if(!i.aborted)throw this.setLoadingStatus("error",o.message),o}}callIfWindowsChanged(e,r,i){const s=[Math.max(Math.floor(e[0]/r)*r,0),Math.min(Math.ceil(e[1]/r)*r,this.genome.totalSize)],o=g(this,ha);(r!==g(this,jl)||s[0]<o[0]||s[1]>o[1])&&(Q(this,ha,s),Q(this,jl,r),i(s))}}Aa=new WeakMap,ha=new WeakMap,da=new WeakMap,jl=new WeakMap;class HN extends $c{constructor(t,e){const r={channel:"x",windowSize:7e3,debounce:200,debounceMode:"window",...t};if(super(e,r.channel),this.params=r,!this.params.url)throw new Error("No URL provided for IndexedFastaSource");this.setupDebouncing(this.params),this.initializedPromise=new Promise(i=>{Promise.all([Promise.resolve().then(()=>$P),Promise.resolve().then(()=>rl)]).then(([{IndexedFasta:s},{RemoteFile:o}])=>{const a=l=>new o(Zc(l,this.view.getBaseUrl()));this.fasta=new s({fasta:a(this.params.url),fai:a(this.params.indexUrl??this.params.url+".fai")}),i()})})}get label(){return"bigWigSource"}async loadInterval(t){const e=await this.discretizeAndLoad(t,async(r,i)=>this.fasta.getSequence(r.chrom,r.startPos,r.endPos,{signal:i}).then(s=>{if(s!=null)return{chrom:r.chrom,start:r.startPos,sequence:s};console.log(`No sequence found for interval ${r.chrom}:${r.startPos}-${r.endPos}`)}));this.publishData([e.filter(r=>r!==void 0)])}}class VN extends $c{constructor(e,r){const i={pixelsPerBin:2,channel:"x",debounce:200,debounceMode:"window",...e},s=Oe(i.channel);super(r,s);v(this,Wl);v(this,ga,[]);v(this,pa);if(this.params=gc(r.paramRuntime,i,o=>{o.has("url")?F(this,Wl,Np).call(this).then(()=>this.reloadLastDomain()):o.has("pixelsPerBin")&&this.reloadLastDomain()},o=>this.registerDisposer(o),{batchMode:"whenPropagated"}),!this.params.url)throw new Error("No URL provided for BigWigSource");this.setupDebouncing(this.params),F(this,Wl,Np).call(this)}get label(){return"bigWigSource"}async onDomainChanged(e){await this.initializedPromise;const r=this.scaleResolution.getAxisLength()||700,i=_N(e,r,g(this,ga)),s=Math.max(i*r,5e3);this.callIfWindowsChanged(e,s,o=>this.loadInterval(o,i))}async loadInterval(e,r){const i=.5/r/Oe(this.params.pixelsPerBin),s=await this.discretizeAndLoad(e,(o,a)=>g(this,pa).getFeatures(o.chrom,o.startPos,o.endPos,{scale:i,signal:a}).then(l=>l.map(c=>({chrom:o.chrom,start:c.start,end:c.end,score:c.score}))));s&&this.publishData(s)}}ga=new WeakMap,pa=new WeakMap,Wl=new WeakSet,Np=function(){return this.initializedPromise=new Promise((e,r)=>{Promise.all([Promise.resolve().then(()=>mb),Promise.resolve().then(()=>rl)]).then(([{BigWig:i},{RemoteFile:s}])=>{Q(this,pa,new i({filehandle:new s(Zc(Oe(this.params.url),this.view.getBaseUrl()))})),this.setLoadingStatus("loading"),g(this,pa).getHeader().then(o=>{Q(this,ga,o.zoomLevels.map(a=>a.reductionLevel).reverse()),g(this,ga).push(1),this.setLoadingStatus("complete"),e()}).catch(o=>{this.load(),this.setLoadingStatus("error",`${Oe(this.params.url)}: ${o.message}`),r(o)})})}),this.initializedPromise};function _N(n,t,e){const r=(n[1]-n[0])/t;return e.find(i=>i<r)??e.at(-1)}class YN extends $c{constructor(e,r){const i={channel:"x",windowSize:1e6,debounce:200,debounceMode:"window",...e},s=Oe(i.channel);super(r,s);v(this,Xl);X(this,"parser");X(this,"bbi");X(this,"parseLine");if(this.params=gc(r.paramRuntime,i,o=>{o.has("url")?F(this,Xl,Tp).call(this).then(()=>this.reloadLastDomain()):o.has("windowSize")&&this.reloadLastDomain()},o=>this.registerDisposer(o),{batchMode:"whenPropagated"}),!this.params.url)throw new Error("No URL provided for BigBedSource");this.setupDebouncing(this.params),F(this,Xl,Tp).call(this)}get label(){return"bigBedSource"}async loadInterval(e){const r=await this.discretizeAndLoad(e,async(i,s)=>this.bbi.getFeatures(i.chrom,i.startPos,i.endPos,{signal:s}).then(o=>o.map(a=>this.parseLine(i.chrom,a))));r&&this.publishData(r)}}Xl=new WeakSet,Tp=function(){return this.initializedPromise=new Promise((e,r)=>{Promise.all([Promise.resolve().then(()=>sL),Promise.resolve().then(()=>mb),Promise.resolve().then(()=>rl)]).then(([i,{BigBed:s},{RemoteFile:o}])=>{const a=i.default;this.bbi=new s({filehandle:new o(Zc(Oe(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus("loading"),this.bbi.getHeader().then(async l=>{this.parser=new a({autoSql:l.autoSql});try{const c=JN(this.parser);this.parseLine=(u,f)=>c(u,f.start,f.end,f.rest)}catch{this.parseLine=(u,f)=>this.parser.parseLine(`${u} ${f.start} ${f.end} ${f.rest}`)}this.setLoadingStatus("complete"),e()}).catch(l=>{this.load(),this.setLoadingStatus("error",`${Oe(this.params.url)}: ${l.message}`),r(l)})})}),this.initializedPromise};function JN(n){const t=n.autoSql.fields.filter(y=>y.type).slice(3);let e=0,r="",i=0,s={};const o=" ",a=o.charCodeAt(0),l=48,c=45;function u(){let y=r.indexOf(o,e);y<0&&(y=i);const I=r.substring(e,y);return e=y+1,I}function f(){let y=0,I=r.charCodeAt(e),w=1;I===c&&(w=-1,e++,I=r.charCodeAt(e));do{if(I===a){e++;break}y=y*10+I-l,I=r.charCodeAt(++e)}while(e<i);return y*w}const h=t.map(y=>`${JSON.stringify(y.name)}: ${y.isNumeric?"0":"emptyString"}`),A=new Function(`
616
+ };`)},u=h=>{o||c(h);for(let A=0;A<o.length;A++){const[d,g]=o[A],p=l(h,d,g);this._propagate(p)}},f=h=>{c(h),u(h),this.handle=u};this.handle=f,this.beginBatch=h=>{td(h)&&(this.handle=f),super.beginBatch(h)}}}class k8 extends Qe{get behavior(){return yn}constructor(e){super(e),this.params=e,this.buffer=[]}reset(){super.reset(),this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const e=this.params,t=e.as||["y0","y1"],r=e.sort?OA(e.sort.field,e.sort.order):void 0,i=e.field?$(e.field):()=>1,s=e.groupby.map(u=>$(u)),o=dI(this.buffer,u=>s.map(f=>f(u)).join()).map(u=>u[1]);let a=u=>!0;if(e.baseField){const u=$(e.baseField);a=f=>u(f)!==null}let l,c;switch(e.offset){case"normalize":l=(u,f)=>u/f,c=(u,f)=>qi(u,f);break;case"center":l=(u,f)=>u-f/2,c=(u,f)=>qi(u,f);break;case"information":{const u=Math.log2(e.cardinality??4);l=(f,h)=>f/h,c=(f,h)=>{const d=qi(f,C=>+!a(C)),g=qi(f,h),p=g-d;let m=0;for(let C=0;C<f.length;C++){const y=f[C];if(a(y)){const w=h(y)/p;m-=w*Math.log2(w)}}return p/(u-(m+0))*(p/g)}}break;default:l=(u,f)=>u,c=(u,f)=>1}for(const u of o){r&&u.sort(r);const f=c(u,i);let h=0;for(const A of u){const d=h+i(A);a(A)&&(A[t[0]]=l(h,f),A[t[1]]=l(d,f),this._propagate(A),h=d)}}super.complete()}}class F8 extends Qe{get behavior(){return Nt}constructor(e){super(e),this.params=e;const t=$(e.field??"sequence"),[r,i]=e.as??["pos","sequence"];this.handle=s=>{const o=Object.assign({},s,{[i]:"",[r]:0}),a=t(s);for(let l=0;l<a.length;l++){const c=Object.assign({},o);c[r]=l,c[i]=a.charAt(l),this._propagate(c)}}}}const Fm={count:n=>n.length,valid:cI,sum:qi,min:Xc,max:Wc,mean:yI,median:II,variance:lI};class R8 extends Qe{get behavior(){return Nt}constructor(e){if(super(e),this.params=e,this.buffer=[],this.ops=[],this.as=[],e.fields){if(e.fields.length!=e.ops.length)throw new Error("Fields and ops must have the same length!");if(e.as&&e.as.length!=e.ops.length)throw new Error('If "as" is defined, "fields" and "as" must have the same length!');e.fields.forEach((t,r)=>{const i=$(t),s=Fm[e.ops[r]];this.ops.push(o=>s(o,i)),this.as.push(e.as?e.as[r]:`${e.ops[r]}_${e.fields[r]}`)})}else this.ops.push(t=>Fm.count(t)),this.as.push("count")}reset(){super.reset(),this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const t=this.params?.groupby;if(t?.length>0){const r=t.map(s=>$(s)),i=Qo(this.buffer,...r);for(const[s,o]of pf(i)){const a={};for(let l=0;l<t.length;l++)a[t[l]]=s[l];this.ops.forEach((l,c)=>{a[this.as[c]]=l(o)}),this._propagate(a)}}else{const r={};this.ops.forEach((i,s)=>{r[this.as[s]]=i(this.buffer)}),this._propagate(r)}super.complete()}}const M8={aggregate:R8,collect:Qm,coverage:u8,filterScoredLabels:h8,filter:d8,flatten:m8,flattenCompressedExons:y8,flattenDelimited:I8,flattenSequence:F8,formula:E8,identifier:pl,linearizeGenomicCoordinate:Dm,measureText:x8,pileup:v8,project:S8,regexExtract:Q8,regexFold:D8,sample:Sp,stack:k8};function N8(n,e){const t=M8[n.type];if(t)return new t(n,e);throw new Error("Unknown transform: "+n.type)}function Rm(n,e=[]){if(!Tm(n)&&!Nm(n))return;const t={...n.format};if(t.type??=Nm(n)&&P8(e),t.parse??="auto",!t.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(n));return t}function T8(n){return Al(n)?.responseType??"text"}function P8(n){if(Array.isArray(n)&&(n=n[0]),n)return n.match(/\.(csv|tsv|json)/)?.[1]}const Mm=n=>typeof n!="object"?L8:O8,L8=n=>({data:n}),O8=n=>n;function Nm(n){return"url"in n}class wr extends gl{view;constructor(e){super(),this.view=e}get identifier(){}setLoadingStatus(e,t){this.view.context.dataFlow.loadingStatusRegistry.set(this.view,e,t)}get paramRuntime(){return this.view.paramRuntime}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}repropagate(){this.load()}}function Tm(n){return"values"in n}class U8 extends wr{constructor(e,t){if(super(t),this.params=e,typeof e.values=="string"&&!e?.format?.type)throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}get label(){return"inlineSource"}isTrivial(){const e=this.params.values,t=Array.isArray(e)?e[0]:e;return!!(t&&Object.keys(t).length==0&&t.constructor===Object)}updateDynamicData(e){this.#e(e)}loadSynchronously(){this.#e(this.params.values)}#e(e){let t=[],r=i=>i;if(Array.isArray(e))e.length>0&&(t=e,r=Mm(e[0]));else if(typeof e=="object")t=[e];else if(typeof e=="string")t=hl(e,Rm(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 t)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}function G8(n){return"url"in n}class z8 extends wr{constructor(e,t){super(t),this.params=us(t.paramRuntime,e,()=>this.load(),r=>this.registerDisposer(r),{batchMode:"whenPropagated"}),this.baseUrl=t?.getBaseUrl()}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}get label(){return"urlSource"}async#e(e){const t=dr(this.baseUrl,e.urlsFromFile),r=await fetch(t);if(!r.ok)throw new Error(`Cannot load "${t}": ${r.status} ${r.statusText}`);const i=await r.text();return hl(i,{type:e.type??"tsv"}).map(o=>typeof o=="string"?o:o.url).map(o=>dr(t,o))}async load(){const e=xe(this.params.url),t=typeof e=="object"&&"urlsFromFile"in e?await this.#e(e):(Array.isArray(e)?e:[e]).map(a=>dr(this.baseUrl,a)),r=Rm(this.params,t),i=T8(r.type);if(t.length===0||!t[0]){this.reset(),this.complete();return}const s=async a=>{try{const l=await fetch(a);if(!l.ok)throw new Error(`${l.status} ${l.statusText}`);return typeof l[i]=="function"?l[i]():l.text()}catch(l){throw new Error(`Could not load data: ${a}. Reason: ${l.message}`)}},o=(a,l)=>{try{const c=hl(a,r);this.beginBatch({type:"file",url:l});for(const u of c)this._propagate(u)}catch(c){throw new Error(`Cannot parse: ${l}: ${c.message}`)}};this.setLoadingStatus("loading"),this.reset();try{await Promise.all(t.map(a=>s(a).then(o))),this.setLoadingStatus("complete")}catch(a){this.setLoadingStatus("error",a.message)}this.complete()}}function H8(n){return"sequence"in n}class V8 extends wr{constructor(e,t){if(super(t),this.sequence=us(t.paramRuntime,e.sequence,()=>this.loadSynchronously(),r=>this.registerDisposer(r),{batchMode:"whenPropagated"}),!("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!")}get label(){return"sequenceSource"}loadSynchronously(){const e=xe(this.sequence.as)??"data",t=xe(this.sequence.start)??0,r=xe(this.sequence.step)??1,i=xe(this.sequence.stop);this.reset(),this.beginBatch({type:"file"});for(let s=t;s<i;s+=r)this._propagate({[e]:s});this.complete()}async load(){this.loadSynchronously()}}class wf extends wr{initializedPromise=Promise.resolve();_lastLoadedDomain;constructor(e,t){if(super(e),t){if(t!=="x"&&t!=="y")throw new Error(`Invalid channel specified for the lazy data source: ${t}. Must be either "x" or "y"`)}else throw new Error('No channel has been specified for the lazy data source. Must be either "x" or "y".');if(this.channel=t,this.scaleResolution=this.view.getScaleResolution(t),!this.scaleResolution){const i=[`The lazy data source cannot find a resolved scale for channel "${t}".`];throw this.view instanceof tt||i.push('Make sure the view has a "shared" scale resolution as it is not a unit view.'),new Error(i.join(" "))}const r=()=>{this.view.isVisible()&&this.onDomainChanged(this.scaleResolution.getDomain(),this.scaleResolution.getComplexDomain())};this.scaleResolution.addEventListener("domain",r),this.view.context.addBroadcastListener("layoutComputed",r)}get genome(){const e=this.scaleResolution.getScale();if("genome"in e){const t=e.genome();if(t)return t}throw new Error("No genome has been defined!")}onDomainChanged(e,t){}requestRender(){this.view.context.animator.requestRender()}async load(){this.reset(),this.complete()}publishData(e){this._lastLoadedDomain=Array.from(this.scaleResolution.getDomain()),this.reset(),this.beginBatch({type:"file"});for(const t of e)for(const r of t)this._propagate(r);this.complete()}isDataReadyForDomain(e){const t=e[this.channel];if(!t||!this._lastLoadedDomain)return!1;const[r,i]=t[0]<=t[1]?t:[t[1],t[0]],[s,o]=this._lastLoadedDomain[0]<=this._lastLoadedDomain[1]?this._lastLoadedDomain:[this._lastLoadedDomain[1],this._lastLoadedDomain[0]];return r>=s&&i<=o}}class _8 extends wf{ticks=[];constructor(e,t){const r={...e};super(t,r.channel),this.params=e}get label(){return"axisTickSource"}async load(){this.ticks=null,this.onDomainChanged()}onDomainChanged(){const e=this.scaleResolution.getScale(),t=this.scaleResolution.getAxisLength(),r=this.params.axis,i=l=>25+60*mm(100,700,l),s=Ye(r.tickCount)?r.tickCount:Math.round(t/i(t)),o=Mp(e,s,r.tickMinStep),a=r.values?Np(e,r.values,o):kD(e,o);if(this.ticks==null||!Ur(a,this.ticks)){this.ticks=a;const l=RD(e,s,r.format);this.publishData([a.map(c=>({value:c,label:l(c)}))])}}}class Y8 extends wf{constructor(e,t){super(t,e.channel)}get label(){return"axisGenomeSource"}async load(){this.publishData([this.genome.chromosomes])}}class Ks extends wf{#e=new AbortController;#t=[0,0];#n=[0,0];#r=0;params;setupDebouncing(e){const t=()=>xe(e.debounce),r=e.debounceMode;if(r=="domain")this.onDomainChanged=Yo(this.onDomainChanged.bind(this),t,!1);else if(r=="window")this.loadInterval=Yo(this.loadInterval.bind(this),t,!1);else throw new Error("Invalid debounceMode: "+r)}onDomainChanged(e){this.#n=e;const t=xe(this.params?.windowSize)??-1;e[1]-e[0]>t||this.callIfWindowsChanged(e,t,async r=>{await this.initializedPromise,this.loadInterval(r)})}reloadLastDomain(){const e=this.#n;this.#n=[0,0],this.#t=[0,0],this._lastLoadedDomain=void 0,this.onDomainChanged(e)}async loadInterval(e){}publishData(e){const t=this._lastLoadedDomain;super.publishData(e),t&&(this._lastLoadedDomain=t)}async discretizeAndLoad(e,t){this.#e.abort(),this.setLoadingStatus("loading"),this.#e=new AbortController;const r=this.#e.signal,i=this.genome.continuousToDiscreteChromosomeIntervals(e);try{const s=await Promise.all(i.map(async o=>t(o,r)));if(!r.aborted)return this.setLoadingStatus("complete"),this._lastLoadedDomain=Array.from(e),s}catch(s){if(!r.aborted)throw this.setLoadingStatus("error",s.message),s}}callIfWindowsChanged(e,t,r){const i=[Math.max(Math.floor(e[0]/t)*t,0),Math.min(Math.ceil(e[1]/t)*t,this.genome.totalSize)],s=this.#t;(t!==this.#r||i[0]<s[0]||i[1]>s[1])&&(this.#t=i,this.#r=t,r(i))}}class J8 extends Ks{constructor(e,t){const r={channel:"x",windowSize:7e3,debounce:200,debounceMode:"window",...e};if(super(t,r.channel),this.params=r,!this.params.url)throw new Error("No URL provided for IndexedFastaSource");this.setupDebouncing(this.params),this.initializedPromise=new Promise(i=>{Promise.all([Promise.resolve().then(()=>rM),Promise.resolve().then(()=>Zs)]).then(([{IndexedFasta:s},{RemoteFile:o}])=>{const a=l=>new o(qs(l,this.view.getBaseUrl()));this.fasta=new s({fasta:a(this.params.url),fai:a(this.params.indexUrl??this.params.url+".fai")}),i()})})}get label(){return"bigWigSource"}async loadInterval(e){const t=await this.discretizeAndLoad(e,async(r,i)=>this.fasta.getSequence(r.chrom,r.startPos,r.endPos,{signal:i}).then(s=>{if(s!=null)return{chrom:r.chrom,start:r.startPos,sequence:s};console.log(`No sequence found for interval ${r.chrom}:${r.startPos}-${r.endPos}`)}));this.publishData([t.filter(r=>r!==void 0)])}}class q8 extends Ks{#e=[];#t;constructor(e,t){const r={pixelsPerBin:2,channel:"x",debounce:200,debounceMode:"window",...e},i=xe(r.channel);if(super(t,i),this.params=us(t.paramRuntime,r,s=>{s.has("url")?this.#n().then(()=>this.reloadLastDomain()):s.has("pixelsPerBin")&&this.reloadLastDomain()},s=>this.registerDisposer(s),{batchMode:"whenPropagated"}),!this.params.url)throw new Error("No URL provided for BigWigSource");this.setupDebouncing(this.params),this.#n()}get label(){return"bigWigSource"}#n(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>oC),Promise.resolve().then(()=>Zs)]).then(([{BigWig:r},{RemoteFile:i}])=>{this.#t=new r({filehandle:new i(qs(xe(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus("loading"),this.#t.getHeader().then(s=>{this.#e=s.zoomLevels.map(o=>o.reductionLevel).reverse(),this.#e.push(1),this.setLoadingStatus("complete"),e()}).catch(s=>{this.load(),this.setLoadingStatus("error",`${xe(this.params.url)}: ${s.message}`),t(s)})})}),this.initializedPromise}async onDomainChanged(e){await this.initializedPromise;const t=this.scaleResolution.getAxisLength()||700,r=K8(e,t,this.#e),i=Math.max(r*t,5e3);this.callIfWindowsChanged(e,i,s=>this.loadInterval(s,r))}async loadInterval(e,t){const r=.5/t/xe(this.params.pixelsPerBin),i=await this.discretizeAndLoad(e,(s,o)=>this.#t.getFeatures(s.chrom,s.startPos,s.endPos,{scale:r,signal:o}).then(a=>a.map(l=>({chrom:s.chrom,start:l.start,end:l.end,score:l.score}))));i&&this.publishData(i)}}function K8(n,e,t){const r=(n[1]-n[0])/e;return t.find(i=>i<r)??t.at(-1)}class j8 extends Ks{parser;bbi;parseLine;constructor(e,t){const r={channel:"x",windowSize:1e6,debounce:200,debounceMode:"window",...e},i=xe(r.channel);if(super(t,i),this.params=us(t.paramRuntime,r,s=>{s.has("url")?this.#e().then(()=>this.reloadLastDomain()):s.has("windowSize")&&this.reloadLastDomain()},s=>this.registerDisposer(s),{batchMode:"whenPropagated"}),!this.params.url)throw new Error("No URL provided for BigBedSource");this.setupDebouncing(this.params),this.#e()}get label(){return"bigBedSource"}#e(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>u5),Promise.resolve().then(()=>oC),Promise.resolve().then(()=>Zs)]).then(([r,{BigBed:i},{RemoteFile:s}])=>{const o=r.default;this.bbi=new i({filehandle:new s(qs(xe(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus("loading"),this.bbi.getHeader().then(async a=>{this.parser=new o({autoSql:a.autoSql});try{const l=W8(this.parser);this.parseLine=(c,u)=>l(c,u.start,u.end,u.rest)}catch{this.parseLine=(c,u)=>this.parser.parseLine(`${c} ${u.start} ${u.end} ${u.rest}`)}this.setLoadingStatus("complete"),e()}).catch(a=>{this.load(),this.setLoadingStatus("error",`${xe(this.params.url)}: ${a.message}`),t(a)})})}),this.initializedPromise}async loadInterval(e){const t=await this.discretizeAndLoad(e,async(r,i)=>this.bbi.getFeatures(r.chrom,r.startPos,r.endPos,{signal:i}).then(s=>s.map(o=>this.parseLine(r.chrom,o))));t&&this.publishData(t)}}function W8(n){const e=n.autoSql.fields.filter(C=>C.type).slice(3);let t=0,r="",i=0,s={};const o=" ",a=o.charCodeAt(0),l=48,c=45;function u(){let C=r.indexOf(o,t);C<0&&(C=i);const y=r.substring(t,C);return t=C+1,y}function f(){let C=0,y=r.charCodeAt(t),w=1;y===c&&(w=-1,t++,y=r.charCodeAt(t));do{if(y===a){t++;break}C=C*10+y-l,y=r.charCodeAt(++t)}while(t<i);return C*w}const h=e.map(C=>`${JSON.stringify(C.name)}: ${C.isNumeric?"0":"emptyString"}`),A=new Function(`
659
617
  const emptyString = "";
660
618
  return function makeTemplate(chrom, chromStart, chromEnd) {
661
619
  return {
@@ -665,43 +623,43 @@ chrM 16299`};function d6(n){if(!(n in zy))throw new Error(`Unknown assembly: ${n
665
623
  ${h.join(`,
666
624
  `)}
667
625
  }
668
- };`)(),d=t.map(y=>{const I=y.type,w=JSON.stringify(y.name);if(["ubyte","int","uint"].includes(I))return`d[${w}] = parseInt();`;if(y.isNumeric)return`d[${w}] = Number(parseString());`;if(["char","string","lstring"].includes(I))return`d[${w}] = parseString();`;throw new Error("Unsupported type: "+I)}),p=qN(d,50).map((y,I)=>Function("parseInt","parseString",`return function parseFieldChunk${I}(d) {
669
- ${y.join(`
626
+ };`)(),d=e.map(C=>{const y=C.type,w=JSON.stringify(C.name);if(["ubyte","int","uint"].includes(y))return`d[${w}] = parseInt();`;if(C.isNumeric)return`d[${w}] = Number(parseString());`;if(["char","string","lstring"].includes(y))return`d[${w}] = parseString();`;throw new Error("Unsupported type: "+y)}),g=X8(d,50).map((C,y)=>Function("parseInt","parseString",`return function parseFieldChunk${y}(d) {
627
+ ${C.join(`
670
628
  `)}
671
- }`)(f,u));function C(y){r=y,i=y.length,e=0}function m(y,I,w,x){C(x),s=A(y,I,w);for(const B of p)B(s);return s}return m}function qN(n,t){return Array.from({length:Math.ceil(n.length/t)},(e,r)=>n.slice(r*t,r*t+t))}class KN extends $c{constructor(e,r){const i={channel:"x",windowSize:2e4,debounce:200,debounceMode:"domain",...e};super(r,i.channel);v(this,ps);X(this,"chrPrefixFixer",e=>e);if(this.params=i,!this.params.url)throw new Error("No URL provided for BamSource");this.setupDebouncing(this.params),this.initializedPromise=new Promise(s=>{Promise.all([Promise.resolve().then(()=>bO),Promise.resolve().then(()=>rl)]).then(([{BamFile:o},{RemoteFile:a}])=>{const l=c=>new a(Zc(c,this.view.getBaseUrl()));Q(this,ps,new o({bamFilehandle:l(this.params.url),baiFilehandle:l(this.params.indexUrl??this.params.url+".bai")})),g(this,ps).getHeader().then(c=>{var h,A;const u=this.genome.hasChrPrefix(),f=(A=(h=g(this,ps).indexToChr)==null?void 0:h[0])==null?void 0:A.refName.startsWith("chr");u&&!f?this.chrPrefixFixer=d=>d.replace("chr",""):!u&&f&&(this.chrPrefixFixer=d=>"chr"+d),s()})})})}get label(){return"bamSource"}async loadInterval(e){const r=await this.discretizeAndLoad(e,async(i,s)=>g(this,ps).getRecordsForRange(this.chrPrefixFixer(i.chrom),i.startPos,i.endPos,{signal:s}).then(o=>o.map(a=>({chrom:i.chrom,start:a.start,end:a.end,name:a.name,cigar:a.CIGAR,mapq:a.mq,strand:a.strand===1?"+":"-"}))));r&&this.publishData(r)}}ps=new WeakMap;class q2 extends $c{constructor(e,r){const i={channel:"x",windowSize:3e6,debounce:200,debounceMode:"domain",addChrPrefix:!1,...e},s=Oe(i.channel);super(r,s);v(this,Zl);v(this,ma);if(this.params=gc(r.paramRuntime,i,o=>{o.has("url")||o.has("indexUrl")||o.has("addChrPrefix")?F(this,Zl,Pp).call(this).then(()=>this.reloadLastDomain()):o.has("windowSize")&&this.reloadLastDomain()},o=>this.registerDisposer(o),{batchMode:"whenPropagated"}),!Oe(this.params.url))throw new Error("No URL provided for TabixSource");this.setupDebouncing(this.params),F(this,Zl,Pp).call(this)}async loadInterval(e){await this.initializedPromise;const r=await this.discretizeAndLoad(e,async(i,s)=>{const o=[];return await g(this,ma).getLines(i.chrom,i.startPos,i.endPos,{lineCallback:a=>{o.push(a)},signal:s}),this._parseFeatures(o)});r&&this.publishData(r)}async _handleHeader(e){}_parseFeatures(e){return[]}}ma=new WeakMap,Zl=new WeakSet,Pp=function(){return this.initializedPromise=new Promise((e,r)=>{Promise.all([Promise.resolve().then(()=>MO),Promise.resolve().then(()=>rl)]).then(async([{TabixIndexedFile:i},{RemoteFile:s}])=>{const o=u=>new s(Zc(u,this.view.getBaseUrl())),a=Oe(this.params.url),l=Oe(this.params.indexUrl)??a+".tbi",c=Oe(this.params.addChrPrefix);Q(this,ma,new i({filehandle:o(a),tbiFilehandle:o(l),renameRefSeqs:c===!0?u=>"chr"+u:c?u=>c+u:void 0}));try{this.setLoadingStatus("loading");const u=await g(this,ma).getHeader();await this._handleHeader(u),this.setLoadingStatus("complete"),e()}catch(u){this.load(),this.setLoadingStatus("error",`${Oe(this.params.url)}: ${u.message}`),r(u)}})}),this.initializedPromise};class jN extends q2{constructor(){super(...arguments);v(this,$l)}get label(){return"gff3Source"}async _handleHeader(e){Q(this,$l,await Promise.resolve().then(()=>XO))}_parseFeatures(e){var i;return(i=g(this,$l))==null?void 0:i.parseArraySync(e)}}$l=new WeakMap;class WN extends q2{constructor(){super(...arguments);v(this,eu)}get label(){return"vcfSource"}async _handleHeader(e){const r=(await Promise.resolve().then(()=>iU)).default;Q(this,eu,new r({header:e}))}_parseFeatures(e){return e.map(r=>{const i=g(this,eu).parseLine(r);return delete i.GENOTYPES,i.SAMPLES=i.SAMPLES(),i})}}eu=new WeakMap;const XN=[];function ZN(n,t){if(J2(n))return new TN(n,t);if(PN(n))return new LN(n,t);if(ON(n))return new UN(n,t);if($N(n))return l9(n.lazy,t);throw new Error("Cannot figure out the data source type: "+JSON.stringify(n))}function $N(n){return"lazy"in n}function e9(n){return(n==null?void 0:n.type)=="axisTicks"}function t9(n){return(n==null?void 0:n.type)=="axisGenome"}function n9(n){return(n==null?void 0:n.type)=="indexedFasta"}function r9(n){return(n==null?void 0:n.type)=="bigwig"}function i9(n){return(n==null?void 0:n.type)=="bigbed"}function s9(n){return(n==null?void 0:n.type)=="bam"}function o9(n){return(n==null?void 0:n.type)=="gff3"}function a9(n){return(n==null?void 0:n.type)=="vcf"}const c9=[{guard:e9,Source:GN},{guard:t9,Source:zN},{guard:n9,Source:HN},{guard:r9,Source:VN},{guard:i9,Source:YN},{guard:s9,Source:KN},{guard:o9,Source:jN},{guard:a9,Source:WN}];function l9(n,t){for(const e of XN)if(e.guard(n))return new e.Source(n,t);for(const e of c9)if(e.guard(n))return new e.Source(n,t);throw new Error("Cannot figure out the data source type: "+JSON.stringify(n))}function u9(n){const t=K2(n).filter(r=>typeof r=="string"),e=new Function("source","return { "+t.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
672
- `)+" };");return e.properties=t,e}function K2(n){let t=[];do t=t.concat(Object.keys(n)),n=Object.getPrototypeOf(n);while(n&&n!==Object.prototype);return Array.from(new Set(t))}class cA extends ze{constructor(){super({type:"clone"});v(this,Ca);v(this,tu,e=>e);const e=r=>{const i=K2(r);(!g(this,Ca)||!Js(i,g(this,Ca)))&&(Q(this,Ca,i),Q(this,tu,u9(r)));const s=g(this,tu);this.handle=o=>this._propagate(s(o)),this.handle(r)};this.handle=e,this.beginBatch=r=>{h1(r)&&(this.handle=e),super.beginBatch(r)}}get behavior(){return pn}}Ca=new WeakMap,tu=new WeakMap;function f9(n){return"name"in n}class j2 extends Ui{constructor(e,r,i){super(r);v(this,nu);this.provider=i,this.params=e}get identifier(){return this.params.name}get label(){return"namedSource"}updateDynamicData(e){Q(this,nu,e),this.loadSynchronously()}loadSynchronously(){const e=g(this,nu)??this.provider(this.params.name)??[];let r=i=>i;if(Array.isArray(e))e.length>0&&(r=_2(e[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const i of e)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}nu=new WeakMap;class W2{constructor(){v(this,ir);v(this,ms);X(this,"loadingStatusRegistry");Q(this,ir,new Set),Q(this,ms,new Set),this.loadingStatusRegistry=new f1}get dataSources(){return[...g(this,ir)]}get collectors(){return[...g(this,ms)]}replaceDataSources(t){Q(this,ir,new Set(t))}addDataSource(t){g(this,ir).add(t)}removeDataSource(t){t.disposeSubtree(),g(this,ir).delete(t)}addCollector(t){g(this,ms).add(t)}removeCollector(t){t.parent&&t.parent.removeChild(t),t.disposeSubtree(),t.observers.clear(),g(this,ms).delete(t)}pruneCollectorBranch(t){let e=t.parent;for(e&&e.removeChild(t),t.disposeSubtree();e&&e.children.length===0;){const r=e;e=r.parent,e?(e.removeChild(r),r.dispose()):r instanceof Ui?this.removeDataSource(r):r.dispose()}}findNamedDataSource(t){let e;for(const r of g(this,ir).values())if(r instanceof j2&&t==r.identifier){if(e&&e!==r)throw new Error(`Found multiple instances of named data: ${t}. Data flow optimization is broken (it's a bug).`);e=r}if(e)return{dataSource:e}}}ir=new WeakMap,ms=new WeakMap;function A9(n,t){const e=new Map,r=[];for(const i of n)e.set(i,{ref:i,children:[]});for(const i of e.values()){const s=e.get(t(i.ref));s?s.children.push(i):r.push(i)}return r}function X2(n,t,e){var i,s;const r=(i=t.preOrder)==null?void 0:i.call(t,n);if(r)return r;for(const o of e(n)){const a=X2(o,t,e);if(a==="stop")return a}return(s=t.postOrder)==null?void 0:s.call(t,n)}function h9(n,t){return X2(n,t,e=>e.children)}function d9(n,t,e,r){const i=[],s=[];let o;const a=t??new W2,l=[],c=r??(()=>!0);function u(m,y=()=>{}){if(!o)throw y()||new Error("Cannot append data flow node, no parent exist!");return o.addChild(m),o=m,i.push(m),m}function f(m,y){return u(m,()=>new Error("Cannot append a transform because no (inherited) data are available! "))}function h(m,y){for(const I of m){let w;try{w=kN(I,y)}catch(x){throw console.warn(x),new Error(`Cannot initialize "${I.type}" transform: ${x}`)}w.behavior&Cr&&f(new cA),f(w)}}function A(){return i.findLastIndex(m=>m instanceof Jh)>i.findLastIndex(m=>m instanceof Ui)}const d=m=>{var y,I,w;if(!c(m)){const x=(y=m.flowHandle)==null?void 0:y.node;if(x){x!==o&&(o=x,i.push(x));return}if(m.spec.data||m.spec.transform||m instanceof Ct)throw new Error("Cannot reuse missing flow nodes for "+m.getPathString());return}if(m.spec.data){const x=(I=m.flowHandle)==null?void 0:I.dataSource;x&&x.view===m&&!x.identifier&&a.removeDataSource(x);const B=f9(m.spec.data)?new j2(m.spec.data,m,m.context.getNamedDataFromProvider):ZN(m.spec.data,m);o=B,i.push(B),a.addDataSource(B),m.flowHandle??(m.flowHandle={}),m.flowHandle.dataSource=B}if(m.spec.transform&&h(m.spec.transform,m),m instanceof Ct){if(!o)throw new Error(`A unit view (${m.getPathString()}) has no (inherited) data source`);const x=p9(m);if(x){l.push(x.rewrite);for(const D of x.transforms)f(D)}m.mark.isPickingParticipant()&&!A()&&(f(new cA),f(new Jh({type:"identifier"})));const B=new U2({type:"collect",groupby:m.getFacetFields(),sort:m9(m,x==null?void 0:x.rewrittenEncoding)});u(B);const E=(w=m.flowHandle)==null?void 0:w.collector;E&&a.removeCollector(E),a.addCollector(B),m.flowHandle??(m.flowHandle={}),m.flowHandle.collector=B}o&&(m.flowHandle??(m.flowHandle={}),m.flowHandle.node=o)},p=g9(n,e),C=A9(p,m=>m.dataParent);for(const m of C)h9(m,{preOrder:y=>{s.push({view:y.ref,nodeStackDepth:i.length}),d(y.ref)},postOrder:()=>{const{nodeStackDepth:y}=s.pop();i.length=y,o=i.at(-1)}});return l.forEach(m=>m()),a}function g9(n,t){if(!t)return n.getDescendants();const e=[];return n.visit(r=>{if(!t(r))return on;e.push(r)}),e}function p9(n){var a;const t=[],e={},r=n.mark.encoding,i=n.getEncoding(),s=[];for(const[l,c]of Object.entries(r)){const u=l;wr(u)!==u&&!(u in i)||dc(u)&&!Array.isArray(c)&&x1(c)&&s.push({channel:u,chromPosDef:c})}const o=Uu(s,l=>wr(l.channel),l=>l.chromPosDef.chrom);for(const[l,c]of o.entries())for(const[u,f]of c.entries()){const h=[],A=[],d=[];for(const{channel:p,chromPosDef:C}of f){const m=w=>w.replace(/[^A-Za-z0-9_]/g,""),y=["_linearized_",m(C.chrom),"_",m(C.pos)].join(""),I={...((a=n.spec.encoding)==null?void 0:a[p])??i[p]??r[p]??{},field:y};delete I.chrom,delete I.pos,!I.type&&C.type&&(I.type=C.type),e[p]=I,h.push(C.pos),d.push(C.offset??0),A.push(y)}t.push(new cA),t.push(new G2({type:"linearizeGenomicCoordinate",channel:l,chrom:u,pos:h,offset:d,as:A},n))}return t.length?{transforms:t,rewrittenEncoding:e,rewrite:()=>{n.spec.encoding={...n.spec.encoding,...e},E0(n.mark,"encoding")}}:void 0}function m9(n,t){var r;const e={...n.getEncoding(),...t}.x;if(zt(e)&&(r=n.getScaleResolution("x"))!=null&&r.isZoomable()){if(Gn(e))return"buildIndex"in e&&e.buildIndex?{field:e.field}:null;if(!qs(e)){if(Ks(e))throw new Error("A zoomable x channel must be mapped to a field.")}}}function Z2(n,t=void 0){if(n.parent!==t)return!1;for(const e of n.children)if(!Z2(e,n))return!1;return!0}function q0(n,t=!1){if(n.behavior&_h&&(t=!0),n instanceof cA)if(t)t=!1;else{const e=n.children[0];n.excise(),e&&q0(e,t);return}n.behavior&pn&&(t=!1);for(let e=0,r=n.children.length;e<r;e++)q0(n.children[e],t||r>1)}function C9(n){const t=n.dataSources,e=new Map;for(const s of t)s.identifier&&!e.has(s.identifier)&&e.set(s.identifier,s);const r=new Set,i=new Map;for(const s of t)if(s.identifier){const o=e.get(s.identifier);o&&(o!==s&&o.adoptChildrenOf(s),r.add(o),i.set(s,o))}else r.add(s),i.set(s,s);return n.replaceDataSources(r),i}function w9(n){if(q0(n),!Z2(n))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function y9(n){const t=C9(n);for(const e of n.dataSources)w9(e);return t}const K0=new WeakMap,j0=new WeakMap;function $2(n,t){const e=K0.get(n);if(e){if(!(t!=null&&t.queueReload))return e;const i=j0.get(n);if(i)return i;const s=e.catch(()=>{}).then(()=>$2(n)).finally(()=>{j0.delete(n)});return j0.set(n,s),s}const r=Promise.resolve().then(()=>n.load()).finally(()=>{K0.delete(n)});return K0.set(n,r),r}function I9(n,t){for(const e of n.getDescendants()){const r=e.flowHandle;if(!r)continue;const i=r.dataSource;i&&(r.dataSource=t.get(i)??i)}}function W0(n,t,e,r){const i=r??(()=>!0),o=eI(n,e).filter(i);if(o.length===0)return{dataFlow:t,unitViews:[],dataSources:new Set,graphicsPromises:[]};const a=new Set(o);for(const A of o)A._setDataInitializationState("pending");let l;try{l=d9(n,t,e,d=>a.has(d));const A=y9(l);I9(n,A)}catch(A){for(const d of o)d._setDataInitializationState("none");throw A}const c=E9(o);for(const A of c)A.visit(d=>d.initializeOnce());const u=o.filter(A=>A instanceof Ct),f=[],h=!!n.context.glHelper;for(const A of u){const d=A.mark;d.initializeEncoders(),A.registerDomainSubscriptions(),h&&f.push(d.initializeGraphics().then(()=>d));const p=C=>{if(d.initializeData(),h)try{d.updateGraphicsData()}catch(m){throw m.view=A,m}A.context.animator.requestRender()};A.registerDisposer(A.flowHandle.collector.observe(p))}for(const A of o)A._setDataInitializationState("ready");return{dataFlow:l,unitViews:u,dataSources:c,graphicsPromises:f}}function E9(n,t){var i,s;const e=Array.isArray(n)?n:eI(n,t),r=new Set;for(const o of e){let a=o;for(;a&&!((i=a.flowHandle)!=null&&i.dataSource);)a=a.dataParent;(s=a==null?void 0:a.flowHandle)!=null&&s.dataSource&&r.add(a.flowHandle.dataSource)}return r}function b9(n,t){const e=new Set;return n.visit(r=>{var i;if(t&&!t(r))return on;if((i=r.flowHandle)!=null&&i.dataSource)return e.add(r.flowHandle.dataSource),on}),e}function X0(n,t,e,r){return t||(t=b9(n,e)),Promise.all(Array.from(t).map(i=>$2(i,r))).then(i=>(x9(n),i))}function eI(n,t){const e=[];return t?(n.visit(r=>{if(!t(r))return on;e.push(r)}),e):n.getDescendants()}function x9(n){const t={type:"subtreeDataReady",payload:{subtreeRoot:n}};n.visit(e=>e.handleBroadcast(t))}async function B9(n,t,e,r){const i=a=>a.isConfiguredVisible(),{dataFlow:s,graphicsPromises:o}=W0(n,t,i);return r(s),await e.waitUntilReady(),await X0(n,new Set(s.dataSources),i),await V0(o),s}async function v9(n,t,e){const r=h=>h.isConfiguredVisible(),s=S9(n,r).filter(h=>h.getDataInitializationState()==="none");if(s.length===0)return t;const o=new Set(s),a=h=>o.has(h),l=new Set,c=[];for(const h of s){if(h.spec.data){c.push(h);continue}const A=D9(h);A?l.add(A):c.push(h)}const{dataFlow:u,graphicsPromises:f}=W0(n,t,r,a);await e.waitUntilReady();for(const h of l)h.repropagate();if(c.length){const h=Q9(c);await Promise.all(Array.from(h.entries()).map(([A,d])=>X0(A,d,void 0,{queueReload:!0})))}return await V0(f),u}function S9(n,t){const e=[];return n.visit(r=>{if(!t(r))return on;e.push(r)}),e}function Q9(n){var e,r;const t=new Map;for(const i of n){let s=i;for(;s&&!((e=s.flowHandle)!=null&&e.dataSource);)s=s.dataParent;if(!((r=s==null?void 0:s.flowHandle)!=null&&r.dataSource)){if(i.spec.data)throw new Error("No data source found for view "+i.getPathString());continue}let o=t.get(s);o||(o=new Set,t.set(s,o)),o.add(s.flowHandle.dataSource)}return t}function D9(n){var e;let t=n.dataParent;for(;t;){const r=(e=t.flowHandle)==null?void 0:e.collector;if(r)return r.completed?r:void 0;t=t.dataParent}}class k9{constructor(t){this._renderCallback=t,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(t){this.cancelTransition(t),this.transitions.push(t),this.requestRender()}cancelTransition(t){const e=this.transitions.indexOf(t);e>=0&&this.transitions.splice(e,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(t=>{this._renderRequested=!1;const e=this.transitions;this.transitions=[];let r;for(;r=e.shift();)r(t);this._renderCallback(t)}))}transition(t){return f5({requestAnimationFrame:e=>this.requestTransition(e),...t})}}function Z0(n,t,e,r,i){let s=0,o=!0,a=structuredClone(i),l=a;function c(h,A,d,p){return A+(h-A)*Math.pow(2,-d/p)}function u(h){if(o)return;const A=h-s;s=h;for(const p of Object.keys(l))a[p]=c(a[p],l[p],A,e);t(a);let d=-1/0;for(const p of Object.keys(l))d=Math.max(d,Math.abs(l[p]-a[p]));d<r?(a=l,t(a),o=!0,d!=0&&n.requestRender()):n.requestTransition(p=>u(p))}function f(h){l=h,o&&(o=!1,s=+document.timeline.currentTime,u(s))}return f.stop=()=>{o=!0},f}class F9{constructor(t){this.genomes=new Map,this.baseUrl=t}async initialize(t){const e=new p6(t);return this.genomes.set(e.name,e),Promise.all([...this.genomes.values()].map(r=>r.load(this.baseUrl)))}getGenome(t){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(t){const e=this.genomes.get(t);if(!e)throw new Error(`No genome with the name ${t} has been configured!`);return e}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 R9="data:image/png;base64,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",M9={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class N9{constructor(t){this._webGLHelper=t,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Tn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Nd(z2),texture:t?this._createTextureNow(R9):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(t,e="normal",r="regular"){if(we(r)&&(r=M9[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:t,style:e,weight:r};let s=this._fonts.get(i);return s||(s={metrics:void 0,texture:void 0},this._fonts.set(i,s),this._promises.push(this._loadFontEntry(s,i))),s}async _loadFontEntry(t,e){try{const r=await this._loadMetadata(e.family),i=P9(r,e),s=this.fontRepository+tI(e.family)+"/"+i.replace(/\.\w+/,""),o=this._createTexture(s+".png"),a=this._loadFont(s+".json");t.texture=await o,t.metrics=await a}catch{console.warn(`Cannot load font: "${e.family}". Using the embedded default font.`),t.metrics=this._defaultFontEntry.metrics,t.texture=this._defaultFontEntry.texture}}_loadFont(t){let e=this._fontPromises.get(t);return e||(e=fetch(t).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>Nd(r)),this._fontPromises.set(t,e)),e}_loadMetadata(t){const e=tI(t);let r=this._metadataPromises.get(e);if(!r){const i=this.fontRepository+e+"/METADATA.pb";r=fetch(i).then(s=>{if(!s.ok)throw new Error("Could not load font metadata. Response status: "+s.status+", url: "+i);return s}).then(s=>s.text()).then(s=>T9(s)).catch(s=>{console.warn(s.message)}),this._metadataPromises.set(e,r)}return r}getDefaultFont(){return this._defaultFontEntry}_createTexture(t){const e=this._webGLHelper.gl;return new Promise((r,i)=>{Ic(e,{src:t,min:e.LINEAR},(s,o,a)=>{s?i(s):r(o)})})}_createTextureNow(t){const e=this._webGLHelper.gl;let r;const i=new Promise((s,o)=>{r=Ic(e,{src:t,min:e.LINEAR},(a,l,c)=>{a?o(a):s(l)})});return this._promises.push(i),r}}function tI(n){return n.toLowerCase().replaceAll(/[^\w]/g,"")}function T9(n){const t=n.split(`
673
- `),e=[];let r;for(const i of t)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("}")&&(e.push(r),r=void 0),r){let s=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(s){const o=s[1];r[o]=s[2]}if(s=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),s){const o=s[1];r[o]=+s[2]}}return e}function P9(n,t){let e,r=Number.POSITIVE_INFINITY;for(const i of n)if(t.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&t.style==i.style){const s=Math.abs(t.weight-i.weight);s<r&&(r=s,e=i)}return e==null?void 0:e.filename}function L9(n,t){const e=[];let r;for(const i of n.split(`
674
- `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},e.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return e}const nI=new Map,O9={Organism:"Homo sapiens"};async function U9(n,t,e={}){const r=n.symbol,i={...O9,GENE:r};for(const[o,a]of Object.entries(e))typeof a=="string"&&(i[o]=a);let s=nI.get(r)??await H9(i);return s?(nI.set(r,s),me`
629
+ }`)(f,u));function p(C){r=C,i=C.length,t=0}function m(C,y,w,E){p(E),s=A(C,y,w);for(const x of g)x(s);return s}return m}function X8(n,e){return Array.from({length:Math.ceil(n.length/e)},(t,r)=>n.slice(r*e,r*e+e))}class Z8 extends Ks{#e;chrPrefixFixer=e=>e;constructor(e,t){const r={channel:"x",windowSize:2e4,debounce:200,debounceMode:"domain",...e};if(super(t,r.channel),this.params=r,!this.params.url)throw new Error("No URL provided for BamSource");this.setupDebouncing(this.params),this.initializedPromise=new Promise(i=>{Promise.all([Promise.resolve().then(()=>QN),Promise.resolve().then(()=>Zs)]).then(([{BamFile:s},{RemoteFile:o}])=>{const a=l=>new o(qs(l,this.view.getBaseUrl()));this.#e=new s({bamFilehandle:a(this.params.url),baiFilehandle:a(this.params.indexUrl??this.params.url+".bai")}),this.#e.getHeader().then(l=>{const c=this.genome.hasChrPrefix(),u=this.#e.indexToChr?.[0]?.refName.startsWith("chr");c&&!u?this.chrPrefixFixer=f=>f.replace("chr",""):!c&&u&&(this.chrPrefixFixer=f=>"chr"+f),i()})})})}get label(){return"bamSource"}async loadInterval(e){const t=await this.discretizeAndLoad(e,async(r,i)=>this.#e.getRecordsForRange(this.chrPrefixFixer(r.chrom),r.startPos,r.endPos,{signal:i}).then(s=>s.map(o=>({chrom:r.chrom,start:o.start,end:o.end,name:o.name,cigar:o.CIGAR,mapq:o.mq,strand:o.strand===1?"+":"-"}))));t&&this.publishData(t)}}class Pm extends Ks{#e;constructor(e,t){const r={channel:"x",windowSize:3e6,debounce:200,debounceMode:"domain",addChrPrefix:!1,...e},i=xe(r.channel);if(super(t,i),this.params=us(t.paramRuntime,r,s=>{s.has("url")||s.has("indexUrl")||s.has("addChrPrefix")?this.#t().then(()=>this.reloadLastDomain()):s.has("windowSize")&&this.reloadLastDomain()},s=>this.registerDisposer(s),{batchMode:"whenPropagated"}),!xe(this.params.url))throw new Error("No URL provided for TabixSource");this.setupDebouncing(this.params),this.#t()}#t(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>ON),Promise.resolve().then(()=>Zs)]).then(async([{TabixIndexedFile:r},{RemoteFile:i}])=>{const s=c=>new i(qs(c,this.view.getBaseUrl())),o=xe(this.params.url),a=xe(this.params.indexUrl)??o+".tbi",l=xe(this.params.addChrPrefix);this.#e=new r({filehandle:s(o),tbiFilehandle:s(a),renameRefSeqs:l===!0?c=>"chr"+c:l?c=>l+c:void 0});try{this.setLoadingStatus("loading");const c=await this.#e.getHeader();await this._handleHeader(c),this.setLoadingStatus("complete"),e()}catch(c){this.load(),this.setLoadingStatus("error",`${xe(this.params.url)}: ${c.message}`),t(c)}})}),this.initializedPromise}async loadInterval(e){await this.initializedPromise;const t=await this.discretizeAndLoad(e,async(r,i)=>{const s=[];return await this.#e.getLines(r.chrom,r.startPos,r.endPos,{lineCallback:o=>{s.push(o)},signal:i}),this._parseFeatures(s)});t&&this.publishData(t)}async _handleHeader(e){}_parseFeatures(e){return[]}}class $8 extends Pm{#e;get label(){return"gff3Source"}async _handleHeader(e){this.#e=await Promise.resolve().then(()=>n9)}_parseFeatures(e){return this.#e?.parseArraySync(e)}}class eF extends Pm{#e;get label(){return"vcfSource"}async _handleHeader(e){const t=(await Promise.resolve().then(()=>l9)).default;this.#e=new t({header:e})}_parseFeatures(e){return e.map(t=>{const r=this.#e.parseLine(t);return delete r.GENOTYPES,r.SAMPLES=r.SAMPLES(),r})}}const tF=[];function nF(n,e){if(Tm(n))return new U8(n,e);if(G8(n))return new z8(n,e);if(H8(n))return new V8(n,e);if(rF(n))return hF(n.lazy,e);throw new Error("Cannot figure out the data source type: "+JSON.stringify(n))}function rF(n){return"lazy"in n}function iF(n){return n?.type=="axisTicks"}function sF(n){return n?.type=="axisGenome"}function oF(n){return n?.type=="indexedFasta"}function aF(n){return n?.type=="bigwig"}function cF(n){return n?.type=="bigbed"}function lF(n){return n?.type=="bam"}function uF(n){return n?.type=="gff3"}function fF(n){return n?.type=="vcf"}const AF=[{guard:iF,Source:_8},{guard:sF,Source:Y8},{guard:oF,Source:J8},{guard:aF,Source:q8},{guard:cF,Source:j8},{guard:lF,Source:Z8},{guard:uF,Source:$8},{guard:fF,Source:eF}];function hF(n,e){for(const t of tF)if(t.guard(n))return new t.Source(n,e);for(const t of AF)if(t.guard(n))return new t.Source(n,e);throw new Error("Cannot figure out the data source type: "+JSON.stringify(n))}function dF(n){const e=Lm(n).filter(r=>typeof r=="string"),t=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
630
+ `)+" };");return t.properties=e,t}function Lm(n){let e=[];do e=e.concat(Object.keys(n)),n=Object.getPrototypeOf(n);while(n&&n!==Object.prototype);return Array.from(new Set(e))}class Wa extends Qe{get behavior(){return Nt}#e;#t=e=>e;constructor(){super({type:"clone"});const e=t=>{const r=Lm(t);(!this.#e||!Ur(r,this.#e))&&(this.#e=r,this.#t=dF(t));const i=this.#t;this.handle=s=>this._propagate(i(s)),this.handle(t)};this.handle=e,this.beginBatch=t=>{td(t)&&(this.handle=e),super.beginBatch(t)}}}function gF(n){return"name"in n}class Om extends wr{#e;constructor(e,t,r){super(t),this.provider=r,this.params=e}get identifier(){return this.params.name}get label(){return"namedSource"}updateDynamicData(e){this.#e=e,this.loadSynchronously()}loadSynchronously(){const e=this.#e??this.provider(this.params.name)??[];let t=r=>r;if(Array.isArray(e))e.length>0&&(t=Mm(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(t(r));this.complete()}async load(){this.loadSynchronously()}}class Um{#e;#t;loadingStatusRegistry;constructor(){this.#e=new Set,this.#t=new Set,this.loadingStatusRegistry=new $h}get dataSources(){return[...this.#e]}get collectors(){return[...this.#t]}replaceDataSources(e){this.#e=new Set(e)}addDataSource(e){this.#e.add(e)}removeDataSource(e){e.disposeSubtree(),this.#e.delete(e)}addCollector(e){this.#t.add(e)}removeCollector(e){e.parent&&e.parent.removeChild(e),e.disposeSubtree(),e.observers.clear(),this.#t.delete(e)}pruneCollectorBranch(e){let t=e.parent;for(t&&t.removeChild(e),e.disposeSubtree();t&&t.children.length===0;){const r=t;t=r.parent,t?(t.removeChild(r),r.dispose()):r instanceof wr?this.removeDataSource(r):r.dispose()}}findNamedDataSource(e){let t;for(const r of this.#e.values())if(r instanceof Om&&e==r.identifier){if(t&&t!==r)throw new Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);t=r}if(t)return{dataSource:t}}}function pF(n,e){const t=new Map,r=[];for(const i of n)t.set(i,{ref:i,children:[]});for(const i of t.values()){const s=t.get(e(i.ref));s?s.children.push(i):r.push(i)}return r}function Gm(n,e,t){const r=e.preOrder?.(n);if(r)return r;for(const i of t(n)){const s=Gm(i,e,t);if(s==="stop")return s}return e.postOrder?.(n)}function mF(n,e){return Gm(n,e,t=>t.children)}function wF(n,e,t,r){const i=[],s=[];let o;const a=e??new Um,l=[],c=r??(()=>!0);function u(m,C=()=>{}){if(!o)throw C()||new Error("Cannot append data flow node, no parent exist!");return o.addChild(m),o=m,i.push(m),m}function f(m,C){return u(m,()=>new Error("Cannot append a transform because no (inherited) data are available! "))}function h(m,C){for(const y of m){let w;try{w=N8(y,C)}catch(E){throw console.warn(E),new Error(`Cannot initialize "${y.type}" transform: ${E}`)}w.behavior&yn&&f(new Wa),f(w)}}function A(){return i.findLastIndex(m=>m instanceof pl)>i.findLastIndex(m=>m instanceof wr)}const d=m=>{if(!c(m)){const C=m.flowHandle?.node;if(C){C!==o&&(o=C,i.push(C));return}if(m.spec.data||m.spec.transform||m instanceof tt)throw new Error("Cannot reuse missing flow nodes for "+m.getPathString());return}if(m.spec.data){const C=m.flowHandle?.dataSource;C&&C.view===m&&!C.identifier&&a.removeDataSource(C);const y=gF(m.spec.data)?new Om(m.spec.data,m,m.context.getNamedDataFromProvider):nF(m.spec.data,m);o=y,i.push(y),a.addDataSource(y),m.flowHandle??={},m.flowHandle.dataSource=y}if(m.spec.transform&&h(m.spec.transform,m),m instanceof tt){if(!o)throw new Error(`A unit view (${m.getPathString()}) has no (inherited) data source`);const C=yF(m);if(C){l.push(C.rewrite);for(const E of C.transforms)f(E)}m.mark.isPickingParticipant()&&!A()&&(f(new Wa),f(new pl({type:"identifier"})));const y=new Qm({type:"collect",groupby:m.getFacetFields(),sort:IF(m,C?.rewrittenEncoding)});u(y);const w=m.flowHandle?.collector;w&&a.removeCollector(w),a.addCollector(y),m.flowHandle??={},m.flowHandle.collector=y}o&&(m.flowHandle??={},m.flowHandle.node=o)},g=CF(n,t),p=pF(g,m=>m.dataParent);for(const m of p)mF(m,{preOrder:C=>{s.push({view:C.ref,nodeStackDepth:i.length}),d(C.ref)},postOrder:()=>{const{nodeStackDepth:C}=s.pop();i.length=C,o=i.at(-1)}});return l.forEach(m=>m()),a}function CF(n,e){if(!e)return n.getDescendants();const t=[];return n.visit(r=>{if(!e(r))return Dt;t.push(r)}),t}function yF(n){const e=[],t={},r=n.mark.encoding,i=n.getEncoding(),s=[];for(const[a,l]of Object.entries(r)){const c=a;In(c)!==c&&!(c in i)||ls(c)&&!Array.isArray(l)&&Ad(l)&&s.push({channel:c,chromPosDef:l})}const o=Qo(s,a=>In(a.channel),a=>a.chromPosDef.chrom);for(const[a,l]of o.entries())for(const[c,u]of l.entries()){const f=[],h=[],A=[];for(const{channel:d,chromPosDef:g}of u){const p=y=>y.replace(/[^A-Za-z0-9_]/g,""),m=["_linearized_",p(g.chrom),"_",p(g.pos)].join(""),C={...n.spec.encoding?.[d]??i[d]??r[d]??{},field:m};delete C.chrom,delete C.pos,!C.type&&g.type&&(C.type=g.type),t[d]=C,f.push(g.pos),A.push(g.offset??0),h.push(m)}e.push(new Wa),e.push(new Dm({type:"linearizeGenomicCoordinate",channel:a,chrom:c,pos:f,offset:A,as:h},n))}return e.length?{transforms:e,rewrittenEncoding:t,rewrite:()=>{n.spec.encoding={...n.spec.encoding,...t},Ju(n.mark,"encoding")}}:void 0}function IF(n,e){const t={...n.getEncoding(),...e}.x;if(gt(t)&&n.getScaleResolution("x")?.isZoomable()){if(en(t))return"buildIndex"in t&&t.buildIndex?{field:t.field}:null;if(!Gr(t)){if(zr(t))throw new Error("A zoomable x channel must be mapped to a field.")}}}function zm(n,e=void 0){if(n.parent!==e)return!1;for(const t of n.children)if(!zm(t,n))return!1;return!0}function Cf(n,e=!1){if(n.behavior&dl&&(e=!0),n instanceof Wa)if(e)e=!1;else{const t=n.children[0];n.excise(),t&&Cf(t,e);return}n.behavior&Nt&&(e=!1);for(let t=0,r=n.children.length;t<r;t++)Cf(n.children[t],e||r>1)}function bF(n){const e=n.dataSources,t=new Map;for(const s of e)s.identifier&&!t.has(s.identifier)&&t.set(s.identifier,s);const r=new Set,i=new Map;for(const s of e)if(s.identifier){const o=t.get(s.identifier);o&&(o!==s&&o.adoptChildrenOf(s),r.add(o),i.set(s,o))}else r.add(s),i.set(s,s);return n.replaceDataSources(r),i}function EF(n){if(Cf(n),!zm(n))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function xF(n){const e=bF(n);for(const t of n.dataSources)EF(t);return e}const yf=new WeakMap,If=new WeakMap;function Hm(n,e){const t=yf.get(n);if(t){if(!e?.queueReload)return t;const i=If.get(n);if(i)return i;const s=t.catch(()=>{}).then(()=>Hm(n)).finally(()=>{If.delete(n)});return If.set(n,s),s}const r=Promise.resolve().then(()=>n.load()).finally(()=>{yf.delete(n)});return yf.set(n,r),r}function BF(n,e){for(const t of n.getDescendants()){const r=t.flowHandle;if(!r)continue;const i=r.dataSource;i&&(r.dataSource=e.get(i)??i)}}function bf(n,e,t,r){const i=r??(()=>!0),o=Vm(n,t).filter(i);if(o.length===0)return{dataFlow:e,unitViews:[],dataSources:new Set,graphicsPromises:[]};const a=new Set(o);for(const A of o)A._setDataInitializationState("pending");let l;try{l=wF(n,e,t,d=>a.has(d));const A=xF(l);BF(n,A)}catch(A){for(const d of o)d._setDataInitializationState("none");throw A}const c=vF(o);for(const A of c)A.visit(d=>d.initializeOnce());const u=o.filter(A=>A instanceof tt),f=[],h=!!n.context.glHelper;for(const A of u){const d=A.mark;d.initializeEncoders(),A.registerDomainSubscriptions(),h&&f.push(d.initializeGraphics().then(()=>d));const g=p=>{if(d.initializeData(),h)try{d.updateGraphicsData()}catch(m){throw m.view=A,m}A.context.animator.requestRender()};A.registerDisposer(A.flowHandle.collector.observe(g))}for(const A of o)A._setDataInitializationState("ready");return{dataFlow:l,unitViews:u,dataSources:c,graphicsPromises:f}}function vF(n,e){const t=Array.isArray(n)?n:Vm(n,e),r=new Set;for(const i of t){let s=i;for(;s&&!s.flowHandle?.dataSource;)s=s.dataParent;s?.flowHandle?.dataSource&&r.add(s.flowHandle.dataSource)}return r}function SF(n,e){const t=new Set;return n.visit(r=>{if(e&&!e(r))return Dt;if(r.flowHandle?.dataSource)return t.add(r.flowHandle.dataSource),Dt}),t}function Ef(n,e,t,r){return e||(e=SF(n,t)),Promise.all(Array.from(e).map(i=>Hm(i,r))).then(i=>(QF(n),i))}function Vm(n,e){const t=[];return e?(n.visit(r=>{if(!e(r))return Dt;t.push(r)}),t):n.getDescendants()}function QF(n){const e={type:"subtreeDataReady",payload:{subtreeRoot:n}};n.visit(t=>t.handleBroadcast(e))}async function DF(n,e,t,r){const i=a=>a.isConfiguredVisible(),{dataFlow:s,graphicsPromises:o}=bf(n,e,i);return r(s),await t.waitUntilReady(),await Ef(n,new Set(s.dataSources),i),await gf(o),s}async function kF(n,e,t){const r=h=>h.isConfiguredVisible(),s=FF(n,r).filter(h=>h.getDataInitializationState()==="none");if(s.length===0)return e;const o=new Set(s),a=h=>o.has(h),l=new Set,c=[];for(const h of s){if(h.spec.data){c.push(h);continue}const A=MF(h);A?l.add(A):c.push(h)}const{dataFlow:u,graphicsPromises:f}=bf(n,e,r,a);await t.waitUntilReady();for(const h of l)h.repropagate();if(c.length){const h=RF(c);await Promise.all(Array.from(h.entries()).map(([A,d])=>Ef(A,d,void 0,{queueReload:!0})))}return await gf(f),u}function FF(n,e){const t=[];return n.visit(r=>{if(!e(r))return Dt;t.push(r)}),t}function RF(n){const e=new Map;for(const t of n){let r=t;for(;r&&!r.flowHandle?.dataSource;)r=r.dataParent;if(!r?.flowHandle?.dataSource){if(t.spec.data)throw new Error("No data source found for view "+t.getPathString());continue}let i=e.get(r);i||(i=new Set,e.set(r,i)),i.add(r.flowHandle.dataSource)}return e}function MF(n){let e=n.dataParent;for(;e;){const t=e.flowHandle?.collector;if(t)return t.completed?t:void 0;e=e.dataParent}}class NF{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 t=this.transitions.indexOf(e);t>=0&&this.transitions.splice(t,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;const t=this.transitions;this.transitions=[];let r;for(;r=t.shift();)r(e);this._renderCallback(e)}))}transition(e){return gk({requestAnimationFrame:t=>this.requestTransition(t),...e})}}function xf(n,e,t,r,i){let s=0,o=!0,a=structuredClone(i),l=a;function c(h,A,d,g){return A+(h-A)*Math.pow(2,-d/g)}function u(h){if(o)return;const A=h-s;s=h;for(const g of Object.keys(l))a[g]=c(a[g],l[g],A,t);e(a);let d=-1/0;for(const g of Object.keys(l))d=Math.max(d,Math.abs(l[g]-a[g]));d<r?(a=l,e(a),o=!0,d!=0&&n.requestRender()):n.requestTransition(g=>u(g))}function f(h){l=h,o&&(o=!1,s=+document.timeline.currentTime,u(s))}return f.stop=()=>{o=!0},f}class TF{constructor(e){this.genomes=new Map,this.baseUrl=e}async initialize(e){const t=new yD(e);return this.genomes.set(t.name,t),Promise.all([...this.genomes.values()].map(r=>r.load(this.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const t=this.genomes.get(e);if(!t)throw new Error(`No genome with the name ${e} has been configured!`);return t}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 PF="data:image/png;base64,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",LF={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class OF{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new jt([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:iu(km),texture:e?this._createTextureNow(PF):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,t="normal",r="regular"){if(le(r)&&(r=LF[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:t,weight:r};let s=this._fonts.get(i);return s||(s={metrics:void 0,texture:void 0},this._fonts.set(i,s),this._promises.push(this._loadFontEntry(s,i))),s}async _loadFontEntry(e,t){try{const r=await this._loadMetadata(t.family),i=GF(r,t),s=this.fontRepository+_m(t.family)+"/"+i.replace(/\.\w+/,""),o=this._createTexture(s+".png"),a=this._loadFont(s+".json");e.texture=await o,e.metrics=await a}catch{console.warn(`Cannot load font: "${t.family}". Using the embedded default font.`),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let t=this._fontPromises.get(e);return t||(t=fetch(e).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>iu(r)),this._fontPromises.set(e,t)),t}_loadMetadata(e){const t=_m(e);let r=this._metadataPromises.get(t);if(!r){const i=this.fontRepository+t+"/METADATA.pb";r=fetch(i).then(s=>{if(!s.ok)throw new Error("Could not load font metadata. Response status: "+s.status+", url: "+i);return s}).then(s=>s.text()).then(s=>UF(s)).catch(s=>{console.warn(s.message)}),this._metadataPromises.set(t,r)}return r}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){const t=this._webGLHelper.gl;return new Promise((r,i)=>{ps(t,{src:e,min:t.LINEAR},(s,o,a)=>{s?i(s):r(o)})})}_createTextureNow(e){const t=this._webGLHelper.gl;let r;const i=new Promise((s,o)=>{r=ps(t,{src:e,min:t.LINEAR},(a,l,c)=>{a?o(a):s(l)})});return this._promises.push(i),r}}function _m(n){return n.toLowerCase().replaceAll(/[^\w]/g,"")}function UF(n){const e=n.split(`
631
+ `),t=[];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("}")&&(t.push(r),r=void 0),r){let s=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(s){const o=s[1];r[o]=s[2]}if(s=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),s){const o=s[1];r[o]=+s[2]}}return t}function GF(n,e){let t,r=Number.POSITIVE_INFINITY;for(const i of n)if(e.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&e.style==i.style){const s=Math.abs(e.weight-i.weight);s<r&&(r=s,t=i)}return t?.filename}function zF(n,e){const t=[];let r;for(const i of n.split(`
632
+ `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},t.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return t}const Ym=new Map,HF={Organism:"Homo sapiens"};async function VF(n,e,t={}){const r=n.symbol,i={...HF,GENE:r};for(const[o,a]of Object.entries(t))typeof a=="string"&&(i[o]=a);let s=Ym.get(r)??await JF(i);return s?(Ym.set(r,s),ce`
675
633
  <div class="title">
676
634
  <strong>${s.name}</strong>
677
635
  ${s.description}
678
636
  </div>
679
637
  <p class="summary">${s.summary}</p>
680
638
  <p class="source">Source: NCBI RefSeq Gene</p>
681
- `):null}async function G9(n){const t={mode:"cors"},e=new URL("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi");e.search=new URLSearchParams({db:"gene",term:V9(n),sort:"relevance",retmax:"1",retmode:"json"}).toString();const i=(await fetch(e.toString(),t).then(s=>s.json())).esearchresult.idlist[0];if(i){const s=new URL("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi");return s.search=new URLSearchParams({db:"gene",id:i,retmode:"json"}).toString(),(await fetch(s.toString(),t).then(l=>l.json())).result[i]}else return null}const z9=nf(G9,500);function H9(n){return z9(n)}function V9(n){return Object.entries(n).filter(([t,e])=>e&&e.length>0).map(([t,e])=>`("${e}"[${t}])`).join(" AND ")}const _9=nt(".4~r"),Y9=nt(".4~e");function rI(n){return n==null?me` <span class="na">NA</span> `:we(n)?n.substring(0,30):Number.isInteger(n)?""+n:ot(n)?Math.abs(n)>Math.pow(10,8)||Math.abs(n)<Math.pow(10,-8)?Y9(n):_9(n):Ua(n)?n?"True":"False":Re(n)?me`${n.map((t,e)=>[rI(t),e<n.length-1?", ":Ne])}`:"?"+typeof n+" "+n}function iI(n){const t=[];return sI(Object.entries(n),t),t}function sI(n,t,e){for(const[r,i]of n)r.startsWith("_")||(i!==null&&typeof i=="object"&&!Array.isArray(i)?sI(Object.entries(i),t,(e||"")+r+"."):t.push({key:(e||"")+r,value:i}))}const J9={x:"x2",y:"y2"},q9=new Set(["auto","locus","interval","endpoints","disabled"]),oI=new WeakMap;function aI(n,t,e){const r=K9(t),i=lI("x",n,t,r,dI(e,"x")),s=lI("y",n,t,r,dI(e,"y")),o=i.rows.length>0&&s.rows.length>0,a=[...o?cI("x",i.rows):i.rows,...o?cI("y",s.rows):s.rows],l=new Set;for(const c of[i,s])for(const u of c.usedLinearizedFields){const f=r.get(u);if(!f||f.ambiguous)continue;eT(n,u,f,t)&&(l.add(f.chrom),l.add(f.pos))}return{hiddenRowKeys:[...l],genomicRows:a,flattenDatumRows:()=>iI(n),formatGenomicLocus:(c,u)=>lA(t,c,u),formatGenomicInterval:(c,u)=>hI(t,c,u)}}function K9(n){const t=oI.get(n);if(t)return t;const e=Z9(n);return oI.set(n,e),e}function cI(n,t){const e=n.toUpperCase()+" ";return t.map(r=>({key:e+r.key,value:r.value}))}function lI(n,t,e,r,i){const s=new Set;if(i==="disabled")return{rows:[],usedLinearizedFields:s};const o=AI(e,n,t);if(!o)return{rows:[],usedLinearizedFields:s};o.field&&s.add(o.field);const a=AI(e,J9[n],t);a!=null&&a.field&&s.add(a.field);const l=i==="auto"?j9(o,a,r):i;if(l==="endpoints"&&a){const[c,u]=W9(o,a,r);return{rows:[{key:"Endpoint 1",value:lA(e,n,c.value)??String(c.value)},{key:"Endpoint 2",value:lA(e,n,u.value)??String(u.value)}],usedLinearizedFields:s}}return l==="interval"&&a?{rows:[{key:"Interval",value:hI(e,n,[o.value,a.value])??o.value+" - "+a.value}],usedLinearizedFields:s}:{rows:[{key:"Coordinate",value:lA(e,n,o.value)??String(o.value)}],usedLinearizedFields:s}}function j9(n,t,e){if(!t)return"locus";const r=uI(n.field,e),i=uI(t.field,e);return r&&i&&r!==i?"endpoints":"interval"}function uI(n,t){const e=n?t.get(n):void 0;return e&&!e.ambiguous?e.groupId:void 0}function W9(n,t,e){const r=fI(n.field,e),i=fI(t.field,e);return r===2&&i!==2?[t,n]:i===1&&r!==1?[t,n]:r===2&&i===1?[t,n]:[n,t]}function fI(n,t){const e=n?t.get(n):void 0,r=[e==null?void 0:e.pos,e==null?void 0:e.chrom,n];let i;for(const s of r){const o=X9(s);if(o!==void 0){if(i===void 0)i=o;else if(i!==o)return}}return i}function X9(n){if(!n)return;const t=n.toLowerCase(),e=t.match(/(?:^|[^0-9])(1|2)$/);if(e)return e[1]==="1"?1:2;const r=t.match(/(?:^|[_-])(first|second)(?:[_-]|$)/);if(r)return r[1]==="first"?1:2}function AI(n,t,e){var o,a,l;const r=(o=n.encoders)==null?void 0:o[t];if(((a=r==null?void 0:r.scale)==null?void 0:a.type)!=="locus")return;const i=r.dataAccessor;if(!i)return;const s=+i(e);if(Number.isFinite(s))return{value:s,field:((l=i.fields)==null?void 0:l.length)===1?i.fields[0]:void 0}}function Z9(n){var s,o;const t=new Map;let e=0;const r=(o=(s=n.unitView)==null?void 0:s.getCollector)==null?void 0:o.call(s);let i=r==null?void 0:r.parent;for(;i;){const a=i.params;if((a==null?void 0:a.type)==="linearizeGenomicCoordinate"){const l=Ke(a.as),c=Ke(a.pos),u=$9(a.offset,c.length),f="g"+e++,h=a.channel==="y"?"y":"x";for(let A=0;A<l.length;A++){if(A>=c.length)continue;const d=t.get(l[A]);d?d.ambiguous=!0:t.set(l[A],{groupId:f,chrom:a.chrom,pos:c[A],offset:u[A],channel:h,ambiguous:!1})}}i=i.parent}return t}function $9(n,t){const e=Ke(n);return e.length===0?new Array(t).fill(0):e.length===1?new Array(t).fill(e[0]):e.length===t?e:new Array(t).fill(0)}function lA(n,t,e){const r=$0(n,t);return r==null?void 0:r.formatLocus(e)}function hI(n,t,e){const r=$0(n,t);return r==null?void 0:r.formatInterval(e)}function $0(n,t){var r,i;const e=(i=(r=n.encoders)==null?void 0:r[t])==null?void 0:i.scale;return(e==null?void 0:e.type)==="locus"&&"genome"in e?e.genome():void 0}function dI(n,t){var i;const e=(i=n==null?void 0:n.genomicCoordinates)==null?void 0:i[t],r=typeof e=="string"?e:(e==null?void 0:e.mode)??"auto";if(!q9.has(r))throw new Error('Unknown genomic coordinate display mode: "'+r+'"');return r}function eT(n,t,e,r){const i=$0(r,e.channel);if(!i)return!1;const s=n[e.chrom],o=n[e.pos],a=n[t];if(s===void 0||o===void 0||a===void 0)return!1;const l=+o,c=+a;if(!Number.isFinite(l)||!Number.isFinite(c))return!1;let u;try{u=i.toContinuous(s,l-e.offset)}catch{return!1}return Math.abs(u-c)<1e-6}async function tT(n,t,e,r){const i=(p,C)=>{var m;for(const[y,I]of Object.entries(t.encoders))if((m=I==null?void 0:I.dataAccessor)!=null&&m.fields.includes(p))switch(y){case"color":case"fill":case"stroke":return me`
639
+ `):null}async function _F(n){const e={mode:"cors"},t=new URL("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi");t.search=new URLSearchParams({db:"gene",term:qF(n),sort:"relevance",retmax:"1",retmode:"json"}).toString();const i=(await fetch(t.toString(),e).then(s=>s.json())).esearchresult.idlist[0];if(i){const s=new URL("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi");return s.search=new URLSearchParams({db:"gene",id:i,retmode:"json"}).toString(),(await fetch(s.toString(),e).then(l=>l.json())).result[i]}else return null}const YF=Yo(_F,500);function JF(n){return YF(n)}function qF(n){return Object.entries(n).filter(([e,t])=>t&&t.length>0).map(([e,t])=>`("${t}"[${e}])`).join(" AND ")}const KF=He(".4~r"),jF=He(".4~e");function Jm(n){return n==null?ce` <span class="na">NA</span> `:le(n)?n.substring(0,30):Number.isInteger(n)?""+n:Ye(n)?Math.abs(n)>Math.pow(10,8)||Math.abs(n)<Math.pow(10,-8)?jF(n):KF(n):Ti(n)?n?"True":"False":ye(n)?ce`${n.map((e,t)=>[Jm(e),t<n.length-1?", ":be])}`:"?"+typeof n+" "+n}function qm(n){const e=[];return Km(Object.entries(n),e),e}function Km(n,e,t){for(const[r,i]of n)r.startsWith("_")||(i!==null&&typeof i=="object"&&!Array.isArray(i)?Km(Object.entries(i),e,(t||"")+r+"."):e.push({key:(t||"")+r,value:i}))}const WF={x:"x2",y:"y2"},XF=new Set(["auto","locus","interval","endpoints","disabled"]),jm=new WeakMap;function Wm(n,e,t){const r=ZF(e),i=Zm("x",n,e,r,r1(t,"x")),s=Zm("y",n,e,r,r1(t,"y")),o=i.rows.length>0&&s.rows.length>0,a=[...o?Xm("x",i.rows):i.rows,...o?Xm("y",s.rows):s.rows],l=new Set;for(const c of[i,s])for(const u of c.usedLinearizedFields){const f=r.get(u);if(!f||f.ambiguous)continue;iR(n,u,f,e)&&(l.add(f.chrom),l.add(f.pos))}return{hiddenRowKeys:[...l],genomicRows:a,flattenDatumRows:()=>qm(n),formatGenomicLocus:(c,u)=>Xa(e,c,u),formatGenomicInterval:(c,u)=>n1(e,c,u)}}function ZF(n){const e=jm.get(n);if(e)return e;const t=nR(n);return jm.set(n,t),t}function Xm(n,e){const t=n.toUpperCase()+" ";return e.map(r=>({key:t+r.key,value:r.value}))}function Zm(n,e,t,r,i){const s=new Set;if(i==="disabled")return{rows:[],usedLinearizedFields:s};const o=t1(t,n,e);if(!o)return{rows:[],usedLinearizedFields:s};o.field&&s.add(o.field);const a=t1(t,WF[n],e);a?.field&&s.add(a.field);const l=i==="auto"?$F(o,a,r):i;if(l==="endpoints"&&a){const[c,u]=eR(o,a,r);return{rows:[{key:"Endpoint 1",value:Xa(t,n,c.value)??String(c.value)},{key:"Endpoint 2",value:Xa(t,n,u.value)??String(u.value)}],usedLinearizedFields:s}}return l==="interval"&&a?{rows:[{key:"Interval",value:n1(t,n,[o.value,a.value])??o.value+" - "+a.value}],usedLinearizedFields:s}:{rows:[{key:"Coordinate",value:Xa(t,n,o.value)??String(o.value)}],usedLinearizedFields:s}}function $F(n,e,t){if(!e)return"locus";const r=$m(n.field,t),i=$m(e.field,t);return r&&i&&r!==i?"endpoints":"interval"}function $m(n,e){const t=n?e.get(n):void 0;return t&&!t.ambiguous?t.groupId:void 0}function eR(n,e,t){const r=e1(n.field,t),i=e1(e.field,t);return r===2&&i!==2?[e,n]:i===1&&r!==1?[e,n]:r===2&&i===1?[e,n]:[n,e]}function e1(n,e){const t=n?e.get(n):void 0,r=[t?.pos,t?.chrom,n];let i;for(const s of r){const o=tR(s);if(o!==void 0){if(i===void 0)i=o;else if(i!==o)return}}return i}function tR(n){if(!n)return;const e=n.toLowerCase(),t=e.match(/(?:^|[^0-9])(1|2)$/);if(t)return t[1]==="1"?1:2;const r=e.match(/(?:^|[_-])(first|second)(?:[_-]|$)/);if(r)return r[1]==="first"?1:2}function t1(n,e,t){const r=n.encoders?.[e];if(r?.scale?.type!=="locus")return;const i=r.dataAccessor;if(!i)return;const s=+i(t);if(Number.isFinite(s))return{value:s,field:i.fields?.length===1?i.fields[0]:void 0}}function nR(n){const e=new Map;let t=0,i=n.unitView?.getCollector?.()?.parent;for(;i;){const s=i.params;if(s?.type==="linearizeGenomicCoordinate"){const o=Me(s.as),a=Me(s.pos),l=rR(s.offset,a.length),c="g"+t++,u=s.channel==="y"?"y":"x";for(let f=0;f<o.length;f++){if(f>=a.length)continue;const h=e.get(o[f]);h?h.ambiguous=!0:e.set(o[f],{groupId:c,chrom:s.chrom,pos:a[f],offset:l[f],channel:u,ambiguous:!1})}}i=i.parent}return e}function rR(n,e){const t=Me(n);return t.length===0?new Array(e).fill(0):t.length===1?new Array(e).fill(t[0]):t.length===e?t:new Array(e).fill(0)}function Xa(n,e,t){return Bf(n,e)?.formatLocus(t)}function n1(n,e,t){return Bf(n,e)?.formatInterval(t)}function Bf(n,e){const t=n.encoders?.[e]?.scale;return t?.type==="locus"&&"genome"in t?t.genome():void 0}function r1(n,e){const t=n?.genomicCoordinates?.[e],r=typeof t=="string"?t:t?.mode??"auto";if(!XF.has(r))throw new Error('Unknown genomic coordinate display mode: "'+r+'"');return r}function iR(n,e,t,r){const i=Bf(r,t.channel);if(!i)return!1;const s=n[t.chrom],o=n[t.pos],a=n[e];if(s===void 0||o===void 0||a===void 0)return!1;const l=+o,c=+a;if(!Number.isFinite(l)||!Number.isFinite(c))return!1;let u;try{u=i.toContinuous(s,l-t.offset)}catch{return!1}return Math.abs(u-c)<1e-6}async function sR(n,e,t,r){const i=(g,p)=>{for(const[m,C]of Object.entries(e.encoders))if(C?.dataAccessor?.fields.includes(g))switch(m){case"color":case"fill":case"stroke":return ce`
682
640
  <span
683
641
  class="color-legend"
684
- style=${`background-color: ${I(C)}`}
642
+ style=${`background-color: ${C(p)}`}
685
643
  ></span>
686
- `}return""},s=r??aI(n,t,e),o=s.flattenDatumRows?s.flattenDatumRows():iI(n),a=s.genomicRows??[],l=new Set(s.hiddenRowKeys??[]),c=o.filter(p=>!l.has(p.key)),u=[...a,...c];if(!u.length)return;const f=u.map(p=>{const C=rI(p.value),m=i(p.key,n);return me`
644
+ `}return""},s=r??Wm(n,e,t),o=s.flattenDatumRows?s.flattenDatumRows():qm(n),a=s.genomicRows??[],l=new Set(s.hiddenRowKeys??[]),c=o.filter(g=>!l.has(g.key)),u=[...a,...c];if(!u.length)return;const f=u.map(g=>{const p=Jm(g.value),m=i(g.key,n);return ce`
687
645
  <tr>
688
- <th>${p.key}</th>
689
- <td>${C} ${m}</td>
646
+ <th>${g.key}</th>
647
+ <td>${p} ${m}</td>
690
648
  </tr>
691
- `}),h=me`
649
+ `}),h=ce`
692
650
  <table class="attributes">
693
651
  ${f}
694
652
  </table>
695
- `,A=t.unitView.getTitleText(),d=A?me`
653
+ `,A=e.unitView.getTitleText(),d=A?ce`
696
654
  <div class="title">
697
655
  <strong>${A}</strong>
698
656
  </div>
699
- `:"";return me`${d}${h}`}const sp=class sp extends N2{constructor(e,r,i,s,o,a){super(e,r,i,s,o,a);v(this,WA);v(this,ru,new Map);this.spec=e}async initializeChildren(){}getNextAutoName(e){const r=g(this,ru).get(e)??0;return g(this,ru).set(e,r+1),e+r}*[Symbol.iterator](){}visit(e){let r;try{r=e(this)}catch(i){throw i.view=this,i}if(r===Tr)return r;if(r!==on){e.beforeChildren&&e.beforeChildren(this);for(const i of this){const s=i.visit(e);if(s===Tr)return s}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){var i;let r=this;for(let s=0;s<e.length;s++){if(!(r instanceof sp))return;const o=F(i=r,WA,RB).call(i,e[s]);if(!o)return;if(s===e.length-1)return o;r=o}}findDescendantByName(e){let r;return this.visit(i=>{if(i.name==e)return r=i,Tr}),r}getDefaultResolution(e,r){return"shared"}};ru=new WeakMap,WA=new WeakSet,RB=function(e){for(const r of this)if(r.name===e)return r};let el=sp;function nT(n){jM(n),WM(n)}function gI(n){n.getDescendants().forEach(t=>t.configureViewOpacity())}class pI{constructor(t,e){this.container=t,this.options=e}async addChildSpec(t,e){var h,A;const{specs:r,insertAt:i}=this.options.getChildSpecs(),s=e??r.length,o=((A=(h=this.options).defaultName)==null?void 0:A.call(h,s,t))??this.container.getNextAutoName("child"),a=await this.container.context.createOrImportView(t,this.container,this.container,o);i(s,t);const l=this.options.insertView(a,s);this.options.prepareView&&await this.options.prepareView(a,s,l),gI(a);const c=d=>d.isConfiguredVisible(),{dataSources:u,graphicsPromises:f}=W0(a,this.container.context.dataFlow,c);return await X0(a,u),await V0(f),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow()),a}async removeChildAt(t){const{removeAt:e}=this.options.getChildSpecs();this.options.removeView(t),e(t),this.options.afterRemove&&await this.options.afterRemove(t),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow())}}const mI=.5;function eg(n){return"multiscale"in n&&Re(n.multiscale)}function rT(n){if(!n.multiscale.length)throw new Error('"multiscale" must contain at least one child view.');const t=iT(n.stops,n.multiscale.length),e=n.multiscale.map((i,s)=>n.multiscale.length===1?i:{opacity:sT(s,n.multiscale.length,t),layer:[i]}),r={...n};return delete r.multiscale,delete r.stops,{...r,layer:e}}function iT(n,t){let e="unitsPerPixel",r,i="auto",s=mI;if(Re(n))r=CI(n,t,"stops");else if(tt(n))e=n.metric??"unitsPerPixel",r=CI(n.values,t,"stops.values"),i=n.channel??"auto",s=n.fade??mI;else throw new Error('"stops" must be an array or an object with "values".');if(e!=="unitsPerPixel")throw new Error('Only "unitsPerPixel" is supported for "stops.metric" in multiscale.');if(!["x","y","auto"].includes(i))throw new Error('"stops.channel" must be one of "x", "y", or "auto".');if(!Number.isFinite(s)||s<0||s>.5)throw new Error('"stops.fade" must be a finite number in range [0, 0.5].');if(r.forEach((o,a)=>{if(!Me(o)&&(!Number.isFinite(o)||o<=0))throw new Error("Invalid stop value at index "+a+". Stop values must be positive finite numbers.")}),!r.some(Me)){const o=r;for(let a=1;a<o.length;a++)if(o[a-1]<=o[a])throw new Error('"stops.values" must be strictly decreasing for "unitsPerPixel".');for(let a=0;a<o.length-1;a++){const l=o[a]*(1-s),c=o[a+1]*(1+s);if(l<=c)throw new Error("Adjacent transitions overlap. Reduce fade or increase stop spacing.")}}return{metric:e,values:r,channel:i,fade:s}}function CI(n,t,e){if(!Re(n))throw new Error('"'+e+'" must be an array of numbers or ExprRefs.');const r=t-1;if(n.length!==r)throw new Error("Invalid stop count for multiscale. Expected "+r+", got "+n.length+".");for(const i of n)if(!Me(i)&&!Number.isFinite(i))throw new Error('"'+e+'" must contain only numbers or ExprRefs.');return n}function sT(n,t,e){let r,i;const s=e.values.map(o=>({hi:wI(o,1+e.fade),lo:wI(o,1-e.fade)}));if(n===0)r=[s[0].hi,s[0].lo];else if(n===t-1){const o=s.at(-1);r=[o.hi,o.lo]}else{const o=s[n-1],a=s[n];r=[o.hi,o.lo,a.hi,a.lo]}return n===0?i=[1,0]:n===t-1?i=[0,1]:i=[0,1,1,0],{channel:e.channel,unitsPerPixel:r,values:i}}function wI(n,t){return Me(n)?{expr:"("+n.expr+") * "+t}:n*t}class Gi extends el{constructor(e,r,i,s,o,a){super(e,r,i,s,o,{layersChildren:!0,...a});v(this,iu);v(this,Xt,[]);this.spec=e,this.needsAxes={x:!0,y:!0}}async initializeChildren(){Q(this,Xt,await Promise.all(this.spec.layer.map(e=>this.context.createOrImportView(e,this,this,this.getNextAutoName("layer"),r=>{if(!sg(r)&&!ig(r)&&!eg(r))throw new rt("LayerView accepts only unit, layer, or multiscale specs as children!",this)}))))}async addChildSpec(e,r){return F(this,iu,Lp).call(this).addChildSpec(e,r)}async removeChildAt(e){await F(this,iu,Lp).call(this).removeChildAt(e)}get children(){return g(this,Xt).slice()}*[Symbol.iterator](){for(const e of g(this,Xt))yield e}render(e,r,i={}){if(super.render(e,r,i),!!this.isConfiguredVisible()){e.pushView(this,r);for(const s of g(this,Xt))s.render(e,r,i);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0);for(let r=g(this,Xt).length-1;r>=0;r--)if(g(this,Xt)[r].propagateInteractionEvent(e),e.stopped)return;this.handleInteractionEvent(void 0,e,!1)}}Xt=new WeakMap,iu=new WeakSet,Lp=function(){return new pI(this,{getChildSpecs:()=>({specs:this.spec.layer,insertAt:(e,r)=>{this.spec.layer.splice(e,0,r)},removeAt:e=>{this.spec.layer.splice(e,1)}}),insertView:(e,r)=>(e.layoutParent??(e.layoutParent=this),g(this,Xt).splice(r,0,e),e),removeView:e=>{const r=g(this,Xt)[e];if(!r)throw new Error("Child index out of range!");r.disposeSubtree(),g(this,Xt).splice(e,1)},defaultName:()=>this.getNextAutoName("layer")})};class yI{constructor(t,e){this.n=t,this.maxCols=e??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 t=[],e=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const s=[];t.push(s);for(let o=0;o<e;o++){const a=i*e+o;a<this.n&&s.push(a)}}return t}get colIndices(){const t=[],e=this.nCols,r=this.nRows;for(let i=0;i<e;i++){const s=[];t.push(s);for(let o=0;o<r;o++){const a=o*e+i;a<this.n&&s.push(a)}}return t}getCellIndex(t,e){let r=0;if(this.maxCols==1/0)r=e==0?t:void 0;else{if(t>=this.maxCols)return;r=e*this.nCols+t}return r<this.n?r:void 0}getCellCoords(t){if(!(t<0||t>=this.n))return[t%this.nCols,Math.floor(t/this.nCols)]}}function Jn(n){return()=>n}const fn=class fn{static create(t,e,r,i){return new fn(Jn(t),Jn(e),Jn(r),Jn(i))}_offset(t,e){const r=this["_"+t];if(e===0)return r;switch(typeof e){case"number":return()=>r()+e;case"function":return()=>r()+e();default:throw new Error("Not a number of function")}}_passThrough(t){return this._offset(t,0)}constructor(t,e,r,i){this._x=t,this._y=e,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(t){return t?this===t||this.x===t.x&&this.y===t.y&&this.width===t.width&&this.height===t.height:!1}modify(t){if(!Object.keys(t).length)return this;const e=r=>{const i=t[r];return typeof i=="number"?Jn(i):typeof i=="function"?i:this._passThrough(r)};return new fn(e("x"),e("y"),e("width"),e("height"))}translate(t,e){return t===0&&e===0?this:new fn(this._offset("x",t),this._offset("y",e),this._passThrough("width"),this._passThrough("height"))}translateBy(t){return this.translate(t.x,t.y)}expand(t,e=1){return t.left==0&&t.top==0&&t.right==0&&t.bottom==0?this:new fn(t.left?this._offset("x",-t.left*e):this._passThrough("x"),t.top?this._offset("y",-t.top*e):this._passThrough("y"),t.width?this._offset("width",t.width*e):this._passThrough("width"),t.height?this._offset("height",t.height*e):this._passThrough("height"))}shrink(t){return this.expand(t,-1)}intersect(t){return this===t||t==null?this:new fn(()=>Math.max(this.x,t.x),()=>Math.max(this.y,t.y),()=>Math.min(this.x2,t.x2)-Math.max(this.x,t.x),()=>Math.min(this.y2,t.y2)-Math.max(this.y,t.y))}union(t){return this===t||t==null?this:new fn(()=>Math.min(this.x,t.x),()=>Math.min(this.y,t.y),()=>Math.max(this.x2,t.x2)-Math.min(this.x,t.x),()=>Math.max(this.y2,t.y2)-Math.min(this.y,t.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new fn(Jn(this.x),Jn(this.y),Jn(this.width),Jn(this.height))}containsPoint(t,e){return t>=this.x&&t<this.x2&&e>=this.y&&e<this.y2}normalizePoint(t,e,r=!1){const i={x:(t-this.x)/this.width,y:(e-this.y)/this.height};return r&&(i.y=1-i.y),i}denormalizePoint(t,e,r=!1){return r&&(e=1-e),{x:this.x+t*this.width,y:this.y+e*this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}toRoundedString(){return`Rectangle: x: ${Math.round(this.x)}, y: ${Math.round(this.y)}, width: ${Math.round(this.width)}, height: ${Math.round(this.height)}`}};X(fn,"ZERO",fn.create(0,0,0,0));let Rt=fn;const zi=new WeakMap,uA=new WeakMap;function oT(n,t){if(t!==null&&typeof t!="string")throw new Error("Import scope name must be a string or null.");zi.set(n,{name:t})}function qn(n,t={}){const r=t.skipSubtree??!1?"excludeSubtree":"exclude";uA.set(n,r)}function aT(n){const t=n.getDataAncestors(),e=[];for(let r=t.length-1;r>=0;r-=1){const i=zi.get(t[r]);i&&typeof i.name=="string"&&e.push(i.name)}return e}function cT(n){const t=[];for(const e of lT(n)){const r=uT(e);fT(e,r,t),AT(e,r,t),hT(e,r,t)}return t}function II(n){const t=n.spec.configurableVisibility;return t!==void 0?t:!(n.layoutParent&&n.layoutParent.spec&&"layer"in n.layoutParent.spec)}function EI(n){return n.persist===!1?!1:td(n)?!0:N1(n)?!!n.bind:!1}function lT(n){const t=new Set([n]);return n.visit(e=>{const r=zi.get(e);r&&typeof r.name=="string"&&t.add(e)}),Array.from(t)}function uT(n){const t=aT(n),e=zi.get(n);return e&&typeof e.name=="string"?[...t,e.name]:t}function fA(n){return n.length?"import scope ["+n.join(" / ")+"]":"import scope (root)"}function fT(n,t,e){const r=new Map;bI(n,i=>{const s=i.explicitName,o=II(i),a=i.spec.configurableVisibility===!0;if(!o)return;if(!s){if(!a)return;e.push({message:"Configurable view must have an explicit name in "+fA(t)+".",scope:t});return}const l=r.get(s);l?l.push(i):r.set(s,[i])},{includeNamedImportRoots:!0});for(const[i,s]of r){if(s.length<=1)continue;const o=s.map(a=>a.getPathString()).join(", ");e.push({message:'Configurable view name "'+i+'" is not unique within '+fA(t)+". Found in: "+o+".",scope:t})}}function AT(n,t,e){const r=new Map;bI(n,i=>{for(const[s,o]of i.paramRuntime.paramConfigs){if(!EI(o))continue;const a=r.get(s);a?a.push(i):r.set(s,[i])}});for(const[i,s]of r){if(s.length<=1)continue;const o=s.map(a=>a.getPathString()).join(", ");e.push({message:'Bookmarkable parameter "'+i+'" is not unique within '+fA(t)+". Found in: "+o+".",scope:t})}}function hT(n,t,e){const r=dT(n);if(!r.length)return;const i=r.filter(o=>gT(o));if(i.length<=1)return;const s=new Map;for(const o of i){const a=zi.get(o),l=a?a.name:void 0;typeof l!="string"||!l.length||s.set(l,(s.get(l)??0)+1)}for(const[o,a]of s)a>1&&e.push({message:'Import instance name "'+o+'" is used multiple times for addressable instances in '+fA(t)+".",scope:t})}function dT(n){const t=[];return n.visit(e=>{if(e===n)return;if(uA.get(e)==="excludeSubtree")return on;if(zi.get(e))return t.push(e),on}),t}function gT(n){let t=!1;return n.visit(e=>{const r=uA.get(e);if(r==="excludeSubtree")return on;if(r!=="exclude"){const i=II(e),s=e.spec.configurableVisibility===!0;if(i&&(e.explicitName||s))return t=!0,Tr;for(const o of e.paramRuntime.paramConfigs.values())if(EI(o))return t=!0,Tr}}),t}function bI(n,t,e={}){const r=e.includeNamedImportRoots??!1;n.visit(i=>{const s=uA.get(i);if(s==="excludeSubtree")return on;const o=zi.get(i);if(i!==n&&o&&typeof o.name=="string"){if(s!=="exclude"&&r){const l=t(i);if(l===Tr)return l}return on}if(s!=="exclude")return t(i)})}const pT="chromosome_ticks_and_labels",mT={x:"width",y:"height"};function tg(n){return n=="x"?"y":"x"}const AA={x:["bottom","top"],y:["left","right"]},ng=Object.fromEntries(Object.entries(AA).map(([n,t])=>t.map(e=>[e,n])).flat(1));function Pr(n){return ng[n]}class xI extends Gi{constructor(t,e,r,i,s,o){const a=e=="locus",l={...a?wT:BI,...CT(e,t),...t};super(a?yT(l,e):vI(l,e),r,i,s,`axis_${t.orient}`,{blockEncodingInheritance:!0,...o}),this.axisProps=l,qn(this,{skipSubtree:!0})}getSize(){const t={px:this.getPerpendicularSize()},e={grow:1};return ng[this.axisProps.orient]=="x"?new Mr(e,t):new Mr(t,e)}getPerpendicularSize(){return rg(this.axisProps)}isPickingSupported(){return!1}}function rg(n){const t=Pr(n.orient);let e=n.ticks&&n.tickSize||0;return n.labels&&(e+=n.labelPadding,t=="x"?e+=n.labelFontSize:e+=30),n.title&&(e+=n.titlePadding+n.titleFontSize),e=Math.min(n.maxExtent||1/0,Math.max(n.minExtent||0,e)),e}const BI={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 CT(n,t){const e=t.orient,r=n=="nominal"||n=="ordinal";let i="center",s="middle",o=t.labelAngle??((e=="top"||e=="bottom")&&r?-90:0);switch(e){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(o)>30?(i=o>0==(e=="bottom")?"left":"right",s="middle"):s=e=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:o,labelBaseline:s}}function vI(n,t){const e={...n,extent:rg(n)},r=Pr(e.orient),i=tg(r),s=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,a=()=>({field:"value",type:t}),l=()=>({name:"domain",data:{values:[{}]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[i]:o,size:e.domainWidth}}),c=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[i+"Offset"]:(e.tickSize+e.labelPadding)*s,[i]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500},encoding:{[r]:a(),text:{field:"label"}}}),u=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[i]:{value:o},[i+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),f=()=>({name:"title",data:{values:[{}]},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,[r]:.5,[i]:1-o}}),h=()=>{const d={name:"ticks_and_labels",encoding:{[r]:a()},layer:[]};return e.ticks&&d.layer.push(u()),e.labels&&d.layer.push(c()),d},A={resolve:{scale:{[r]:"forced"}},domainInert:!0,[mT[tg(r)]]:e.extent,data:{lazy:{type:"axisTicks",channel:r,axis:n}},layer:[]};return e.domain&&A.layer.push(l()),(e.ticks||e.labels)&&A.layer.push(h()),e.title&&A.layer.push(f()),A}const wT={...BI,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 yT(n,t){const e={...n,extent:rg(n)},r=Pr(e.orient),i=tg(r),s=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:n.chromTickDash,strokeDashOffset:n.chromTickDashOffset,[i]:s,[i+"2"]:s-e.chromTickSize/e.extent*(s?1:-1),color:n.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:n.chromLabelAlign,baseline:"alphabetic",clip:!1,...u},encoding:{[r+"2"]:{field:"continuousEnd",type:t},text:{field:"name"}}}};let l;switch(e.orient){case"bottom":case"top":l={};break;case"left":l={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":l={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:l={}}const c=vI({...n,...l},t);if(n.chromTicks||n.chromLabels){const u={name:pT,data:{lazy:{type:"axisGenome",channel:Pr(e.orient)}},encoding:{[r]:{field:"continuousStart",type:t,band:0}},layer:[]};if(n.chromTicks&&u.layer.push(o()),n.chromLabels){u.layer.push(a());let f;c.layer.filter(h=>h.name=="ticks_and_labels").forEach(h=>h.layer.filter(A=>A.name=="labels").forEach(A=>{f=A.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}class IT{constructor(t){v(this,Cs);v(this,ti,0);v(this,ni,0);Q(this,Cs,new Array(t))}push(t){g(this,Cs)[g(this,ti)]=t,Q(this,ti,(g(this,ti)+1)%this.size),Q(this,ni,Math.min(g(this,ni)+1,this.size))}get(){const t=g(this,Cs);return g(this,ni)<this.size?t.slice(0,g(this,ni)):t.slice(g(this,ti),this.size).concat(t.slice(0,g(this,ti)))}get size(){return g(this,Cs).length}get length(){return g(this,ni)}}Cs=new WeakMap,ti=new WeakMap,ni=new WeakMap;class Dt{static fromMouseEvent(t){return new Dt(t.clientX,t.clientY)}constructor(t,e){this.x=t,this.y=e}subtract(t){return new Dt(this.x-t.x,this.y-t.y)}add(t){return new Dt(this.x-t.x,this.y-t.y)}multiply(t){return new Dt(this.x*t,this.y*t)}get length(){return Math.sqrt(this.x**2+this.y**2)}equals(t){return t?t===this||t.x===this.x&&t.y===this.y:!1}}let Hi,SI=0;function QI(){return performance.now()-SI<50}function ET(n){return function(...t){SI=performance.now(),n(...t)}}function bT(n,t,e,r,i){if(e=ET(e),n.type=="wheel"){n.uiEvent.preventDefault();const s=n.uiEvent,o=s.deltaMode?120:1;if(!s.deltaX&&!s.deltaY)return;Hi==null||Hi.stop();let{x:a,y:l}=n.point;if(r){const c=r.mark.encoders;c.x&&!c.x2&&!c.x.constant&&(a=+c.x(r.datum)*t.width+t.x),c.y&&!c.y2&&!c.y.constant&&(l=(1-+c.y(r.datum))*t.height+t.y)}Math.abs(s.deltaX)<Math.abs(s.deltaY)?e({x:a,y:l,xDelta:0,yDelta:0,zDelta:s.deltaY*o/300}):e({x:a,y:l,xDelta:-s.deltaX*o,yDelta:0,zDelta:0})}else if(n.type=="mousedown"&&n.mouseEvent.button===0){Hi&&Hi.stop();const s=new IT(30),o=n.mouseEvent;o.preventDefault();let a=Dt.fromMouseEvent(o);const l=f=>{const h=Dt.fromMouseEvent(f);s.push({point:h,timestamp:performance.now()});const A=h.subtract(a);e({x:a.x,y:a.y,xDelta:A.x,yDelta:A.y,zDelta:0}),a=h},c=()=>{const h=performance.now(),A=s.get().filter(I=>h-I.timestamp<160);if(A.length<5||!i||xT(A))return;const d=A.at(-1),p=A[0],C=d.point.subtract(p.point).multiply(1/(d.timestamp-p.timestamp));let m=a.x,y=a.y;Hi=Z0(i,I=>{e({x:I.x,y:I.y,xDelta:m-I.x,yDelta:y-I.y,zDelta:0}),m=I.x,y=I.y},150,.5,{x:m,y}),Hi({x:a.x-C.x*250,y:a.y-C.y*250})},u=()=>{document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",u),c()};document.addEventListener("mouseup",u,!1),document.addEventListener("mousemove",l,!1)}}function xT(n){const t=n[Math.floor(n.length/2)],e=t.point.subtract(n[0].point).multiply(t.timestamp-n[0].timestamp),r=n.at(-1).point.subtract(t.point).multiply(n.at(-1).timestamp-t.timestamp),i=e.length;return r.length/i<.4}class BT extends Gi{constructor(t,e,r,i,s,o){const l={...e=="locus"?vT:DI,...t};super(kT(l,e),r,i,s,`axisGrid_${t.orient}`,{blockEncodingInheritance:!0,...o}),this.axisProps=l,qn(this,{skipSubtree:!0})}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}}const DI={values:null,grid:!1,gridCap:"butt",gridColor:"lightgray",gridDash:null,gridOpacity:1,gridWidth:1,tickCount:null,tickMinStep:null},vT={...DI,chromGrid:!1,chromGridCap:"butt",chromGridColor:"gray",chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1};function ST(n,t){const e=n,r=Pr(e.orient);return{name:"grid_lines",data:{lazy:{type:"axisTicks",channel:r,axis:n}},mark:{type:"rule",strokeDash:e.gridDash,strokeCap:e.gridCap,color:e.gridColor,size:e.gridWidth,opacity:e.gridOpacity,minBufferSize:300},encoding:{[r]:{field:"value",type:t}}}}function QT(n,t){const e=n,r=Pr(e.orient);return{name:"chromosome_lines",data:{lazy:{type:"axisGenome",channel:r}},mark:{type:"rule",strokeDash:e.chromGridDash,strokeCap:e.chromGridCap,color:e.chromGridColor,size:e.chromGridWidth,opacity:e.chromGridOpacity},encoding:{[r]:{field:"continuousStart",type:t,band:0}}}}function DT(n,t){const e=n,r=Pr(e.orient);return{name:"chromosome_fill",data:{lazy:{type:"axisGenome",channel:r}},mark:{type:"rect"},encoding:{[r]:{field:"continuousStart",type:t,band:0},[r+"2"]:{field:"continuousEnd",band:0},fill:{field:"odd",type:"nominal",scale:{domain:[!1,!0],range:[e.chromGridFillEven??"white",e.chromGridFillOdd??"white"]}},opacity:{field:"odd",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[e.chromGridFillEven?1:0,e.chromGridFillOdd?1:0]}}}}}function kT(n,t){const e={...n},r=[];return e.chromGrid&&(e.chromGridFillOdd||e.chromGridFillEven)&&r.push(DT(e,t)),e.chromGrid&&e.chromGridOpacity>0&&r.push(QT(e,t)),e.grid&&e.gridOpacity>0&&r.push(ST(e,t)),{name:"grid_layers",configurableVisibility:!1,resolve:{scale:{[Pr(n.orient)]:"forced",fill:"independent",opacity:"independent"}},domainInert:!0,layer:r}}const kI={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"},FT={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},RT={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},MT={start:0,middle:.5,end:1},NT={start:"left",middle:"center",end:"right"};function TT(n){if(!n)return;const t=we(n)?{text:n}:n;if(!t.text||t.orient=="none")return;const e={"track-title":FT,overlay:RT}[t.style]??{},r={...kI,...e,...t};let i={},s={x:0,y:0};const o=MT[r.anchor??"middle"];switch(r.orient){case"top":s={x:o,y:1},i={baseline:"alphabetic",angle:0};break;case"right":s={x:1,y:1-o},i={baseline:"alphabetic",angle:90};break;case"bottom":s={x:o,y:0},i={baseline:"top",angle:0};break;case"left":s={x:0,y:o},i={baseline:"alphabetic",angle:-90};break}const a={...kI,...i,...e,...t},l={xOffset:0,yOffset:0};switch(r.orient){case"top":l.yOffset=-a.offset;break;case"right":l.xOffset=a.offset;break;case"bottom":l.yOffset=a.offset;break;case"left":l.xOffset=-a.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...s,...l,text:a.text,align:a.align??NT[a.anchor],angle:a.angle,baseline:a.baseline,dx:a.dx,dy:a.dy,color:a.color,font:a.font,size:a.fontSize,fontStyle:a.fontStyle,fontWeight:a.fontWeight}}}class FI extends Ct{constructor(e,r,i={}){const s={scrollbarSize:8,scrollbarPadding:2,scrollbarMinLength:20};super({params:[{name:"scrollbarOpacity",value:1}],opacity:{expr:"scrollbarOpacity"},data:{values:[{}]},mark:{type:"rect",fill:"#b0b0b0",fillOpacity:.6,stroke:"white",strokeWidth:1,strokeOpacity:1,cornerRadius:5,clip:!1},configurableVisibility:!1},e.layoutParent.context,e.layoutParent,e.view,"scrollbar-"+r,{blockEncodingInheritance:!0});v(this,Ce);v(this,ri);v(this,su,Rt.ZERO);v(this,Pt,Rt.ZERO);v(this,wa,Rt.ZERO);X(this,"viewportOffset",0);v(this,ya);qn(this,{skipSubtree:!0}),this.config=s,Q(this,ri,r),Q(this,ya,i.onViewportOffsetChange);const o=this.config.scrollbarPadding,a=this.config.scrollbarSize;Q(this,su,g(this,ri)=="vertical"?new Rt(()=>g(this,Pt).x+g(this,Pt).width-a-o,()=>g(this,Pt).y+o+this.scrollOffset,()=>a,()=>F(this,Ce,sh).call(this)):new Rt(()=>g(this,Pt).x+o+this.scrollOffset,()=>g(this,Pt).y+g(this,Pt).height-a-o,()=>F(this,Ce,sh).call(this),()=>a)),F(this,Ce,Up).call(this,this.viewportOffset),this.addInteractionEventListener("mousedown",(l,c)=>{if(c.stopPropagation(),F(this,Ce,Su).call(this)<=0)return;const u=p=>r=="vertical"?p.clientY:p.clientX;c.mouseEvent.preventDefault();const f=this.scrollOffset,h=u(c.mouseEvent),A=p=>{const C=F(this,Ce,Su).call(this);if(C<=0)return;const m=io(u(p)-h+f,0,C);this.interpolateViewportOffset({x:F(this,Ce,TB).call(this,m)})},d=()=>{document.removeEventListener("mousemove",A),document.removeEventListener("mouseup",d)};document.addEventListener("mouseup",d,!1),document.addEventListener("mousemove",A,!1)})}get scrollOffset(){return F(this,Ce,NB).call(this,this.viewportOffset)}setViewportOffset(e,{notify:r=!0,syncSmoother:i=!1}={}){this.viewportOffset=io(e,0,F(this,Ce,oh).call(this)),i&&F(this,Ce,Up).call(this,this.viewportOffset),r&&g(this,ya)&&g(this,ya).call(this,this.viewportOffset)}render(e,r,i){super.render(e,g(this,su),i)}updateScrollbar(e,r){Q(this,Pt,e.flatten()),Q(this,wa,r),this.setViewportOffset(this.viewportOffset,{notify:!1,syncSmoother:!0})}}ri=new WeakMap,su=new WeakMap,Pt=new WeakMap,wa=new WeakMap,ya=new WeakMap,Ce=new WeakSet,MB=function(){const e=g(this,ri)=="horizontal"?"width":"height",r=g(this,Pt)[e],i=g(this,wa)[e];return i>0?Math.min(1,r/i):1},Op=function(){const e=g(this,ri)=="horizontal"?"width":"height";return Math.max(0,g(this,Pt)[e]-2*this.config.scrollbarPadding)},sh=function(){const e=F(this,Ce,Op).call(this),r=F(this,Ce,MB).call(this)*e,i=this.config.scrollbarMinLength;return Math.min(e,Math.max(i,r))},Su=function(){return Math.max(0,F(this,Ce,Op).call(this)-F(this,Ce,sh).call(this))},NB=function(e){const r=F(this,Ce,oh).call(this),i=F(this,Ce,Su).call(this);return r<=0||i<=0?0:e/r*i},TB=function(e){const r=F(this,Ce,oh).call(this),i=F(this,Ce,Su).call(this);return r<=0||i<=0?0:e/i*r},oh=function(){const e=g(this,ri)=="horizontal"?"width":"height";return Math.max(0,g(this,wa)[e]-g(this,Pt)[e])},Up=function(e){this.interpolateViewportOffset=Z0(this.context.animator,r=>{this.setViewportOffset(r.x,{notify:!0,syncSmoother:!1})},35,.4,{x:e})};class PT extends Gi{constructor(t,e,r={}){const i=e(),s=Object.keys(i.intervals);if(Ei.every(u=>!s.includes(u)))throw new Error("SelectionRect requires at least one of the channels 'x' or 'y' to be present in the selection.");const o={name:"selectionRect",configurableVisibility:!1,domainInert:!0,resolve:{scale:{x:"forced",y:"forced"}},data:{values:RI(e())},encoding:{},layer:[]};s.includes("x")&&(o.encoding.x={field:"_x",type:null,title:null},o.encoding.x2={field:"_x2"}),s.includes("y")&&(o.encoding.y={field:"_y",type:null,title:null},o.encoding.y2={field:"_y2"}),o.layer.push({name:"selectionRectRect",mark:{type:"rect",clip:!0,fill:"#808080",fillOpacity:.05,stroke:"black",strokeWidth:1,strokeOpacity:.2,...r}});const a=u=>{const f=t.view.getScaleResolution(u);return`format(datum._${u}2 - datum._${u}, '.3s')`+(f.type==="locus"?" + 'b'":"")},l=r.measure=="inside"?9:r.measure=="outside"?-9:0;s.includes("x")&&l!=0&&o.layer.push({name:"selectionRectTextX",mark:{type:"text",align:"center",paddingX:5,dy:l,tooltip:null},encoding:{text:{expr:a("x")},y:s.includes("y")?{field:"_y2",type:null,title:null}:{value:1},y2:null}}),s.includes("y")&&l!=0&&o.layer.push({name:"selectionRectTextY",mark:{type:"text",align:"center",paddingY:5,dy:l,tooltip:null,angle:-90},encoding:{text:{expr:a("y")},x2:null}}),super(o,t.layoutParent.context,t.layoutParent,t.view,"selectionRect",{blockEncodingInheritance:!0}),qn(this,{skipSubtree:!0});const c=()=>{var h;const u=e(),f=(h=this.flowHandle)==null?void 0:h.dataSource;if(!f)throw new Error("Cannot find selection rect data source handle!");f.updateDynamicData(RI(u))};this.registerDisposer(e.subscribe(c))}}function RI(n){const t=n.intervals.x,e=n.intervals.y;return!t&&!e?[]:[{_x:t==null?void 0:t[0],_x2:t==null?void 0:t[1],_y:e==null?void 0:e[0],_y2:e==null?void 0:e[1]}]}class LT{constructor(t,e,r){v(this,XA);if(this.layoutParent=e,this.view=t,this.serial=r,this.background=void 0,this.backgroundStroke=void 0,this.axes={},this.gridLines={},this.scrollbars={},this.selectionRect=void 0,this.title=void 0,this.coords=Rt.ZERO,t.needsAxes.x||t.needsAxes.y){const i=t.spec,s="view"in i?i==null?void 0:i.view:void 0,o=OT(s);o&&(this.background=new Ct(o,e.context,e,t,"background"+r,{blockEncodingInheritance:!0}),qn(this.background,{skipSubtree:!0}));const a=UT(s);a&&(this.backgroundStroke=new Ct(a,e.context,e,t,"backgroundStroke"+r,{blockEncodingInheritance:!0}),qn(this.backgroundStroke,{skipSubtree:!0}));const l=TT(t.spec.title);if(l){const c=new Ct(l,e.context,e,t,"title"+r,{blockEncodingInheritance:!0});this.title=c,qn(this.title,{skipSubtree:!0})}}t.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new FI(this,"horizontal")),t.spec.viewportHeight!=null&&(this.scrollbars.vertical=new FI(this,"vertical")),F(this,XA,PB).call(this)}*getChildren(){this.background&&(yield this.background),this.backgroundStroke&&(yield this.backgroundStroke),this.title&&(yield this.title),yield*Object.values(this.axes),yield*Object.values(this.gridLines),yield this.view,yield*Object.values(this.scrollbars),this.selectionRect&&(yield this.selectionRect)}async createAxes(){this.disposeAxisViews();const{view:t,axes:e,gridLines:r}=this,i=(a,l)=>{const c=a.getAxisProps();if(c===null)return;const u=c?{...c}:{};if(!u.orient){for(const f of AA[l])if(!e[f]){u.orient=f;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(u.title??(u.title=a.getTitle()),!AA[l].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${l}"!`);return u},s=async(a,l,c)=>{const u=i(a,l);if(u){if(e[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);const f=new xI(u,a.scaleResolution.type,this.layoutParent.context,this.layoutParent,c);e[u.orient]=f,await f.initializeChildren()}},o=async(a,l,c)=>{const u=i(a,l);if(u&&(u.grid||u.chromGrid)){const f=new BT(u,a.scaleResolution.type,this.layoutParent.context,this.layoutParent,c);r[u.orient]=f,await f.initializeChildren()}};for(const a of["x","y"])if(t.needsAxes[a]){const l=t.resolutions.axis[a];if(!l)continue;await s(l,a,t)}for(const a of["x","y"])if(t.needsAxes[a]&&t.getConfiguredOrDefaultResolution(a,"axis")!="excluded"){const l=t.getAxisResolution(a);if(!l)continue;await o(l,a,t)}if(t instanceof Gi){for(const a of t)for(const[l,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&u.orient&&await s(c,l,a)}for(const a of t)for(const[l,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&!u.orient&&await s(c,l,a)}}[...Object.values(e),...Object.values(r)].forEach(a=>a.visit(l=>{l instanceof Ct&&l.resolve("scale")}))}disposeAxisViews(){for(const t of Object.values(this.axes))t.disposeSubtree();for(const t of Object.values(this.gridLines))t.disposeSubtree();this.axes={},this.gridLines={}}getOverhang(){const t=e=>{const r=this.axes[e];return r?Math.max(r.getPerpendicularSize()+(r.axisProps.offset??0),0):0};return new ct(t("top"),t("right"),t("bottom"),t("left")).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}}XA=new WeakSet,PB=function(){const t=this.view,e=r=>{this.view.context.glHelper.canvas.style.cursor=r};for(const[r,i]of t.paramRuntime.paramConfigs){if(!("select"in i))continue;const s=of(i.select);if(!F1(s))continue;const o=s.encodings,a=Object.fromEntries(o.map(I=>{const w=this.view.getScaleResolution(I),x=w==null?void 0:w.getScale();if(!x||!Xe(x.type))throw new Error(`No continuous scale found for interval selection param "${r}" on channel "${I}"! Scale type is "${(x==null?void 0:x.type)??"none"}".`);return[I,w]}));if(this.selectionRect)throw new Error("Only one interval selection per container is currently allowed!");let l=!1,c=!1,u=!1,f=null;const h=(I,w)=>Object.fromEntries(o.map(x=>[x,[Math.min(I[x],w[x]),Math.max(I[x],w[x])]])),A=t.paramRuntime.createExpression(r),d=I=>{t.paramRuntime.setValue(r,I)};i.value&&d({type:"interval",intervals:i.value});const p=()=>{d(Q1(o)),e(null)};this.selectionRect=new PT(this,A,s.mark),this.selectionRect.initializeChildren();const C=I=>{const w={x:0,y:0},x=t.coords.normalizePoint(I.x,I.y,!0);for(const B of o){const E=a[B].getScale(),D=E.invert(B=="x"?x.x:x.y);w[B]=D+(["index","locus"].includes(E.type)?.5:0)}return w},m=I=>{var D,R,k,P;const{intervals:w}=I,x=(T,O,z)=>{const J=(oe,se)=>se==null?null:a[oe].getScale()(se),V=J("x",T)??z,q=J("y",O)??z;return t.coords.denormalizePoint(V,q,!0)},B=x((D=w.x)==null?void 0:D[0],(R=w.y)==null?void 0:R[0],0),E=x((k=w.x)==null?void 0:k[1],(P=w.y)==null?void 0:P[1],1);return Rt.create(B.x,B.y,E.x-B.x,E.y-B.y)};t.addInteractionEventListener("mousedown",(I,w)=>{if(w.mouseEvent.button!=0)return;if(f=l?m(A()):null,f)e("grabbing"),c=!0;else{const R=w.point;if(R1(A())&&(c=!0),w.mouseEvent.shiftKey)p(),u=!0;else if(R1(A())){const P=(T,O)=>{t.removeInteractionEventListener("mouseup",P);const z=O.point;R.subtract(z).length<2&&p()};t.addInteractionEventListener("mouseup",P);return}else return}w.stopPropagation();const x=w.point,B=Dt.fromMouseEvent(w.mouseEvent).subtract(x),E=R=>{const k=Dt.fromMouseEvent(R).subtract(B);let P;if(f){const T=k.subtract(x),O=f.translate(T.x,T.y);P=h(C(new Dt(O.x,O.y)),C(new Dt(O.x2,O.y2)))}else P=h(C(x),C(k));for(const T of o){const O=a[T],{zoomExtent:z,scale:J}=O,V=P[T];if(["index","locus"].includes(J.type)&&(V[0]=Math.ceil(V[0]),V[1]=Math.ceil(V[1])),f){const q=V[1]-V[0],oe=z[0],se=z[1];V[0]<oe&&(V[0]=oe,V[1]=oe+q),V[1]>se&&(V[1]=se,V[0]=se-q)}else V[0]=Math.max(z[0],V[0]),V[1]=Math.min(z[1],V[1]);V[1]=Math.min(z[1],V[1])}d({type:"interval",intervals:P})},D=()=>{document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",D),u=!1,f&&(e("move"),f=null)};document.addEventListener("mousemove",E),document.addEventListener("mouseup",D)}),t.addInteractionEventListener("click",(I,w)=>{w.mouseEvent.button==0&&c&&(w.stopPropagation(),c=!1)},!0);const y=I=>RQ(A(),C(I));t.addInteractionEventListener("dblclick",(I,w)=>{y(w.point)&&(p(),w.stopPropagation())},!0),t.addInteractionEventListener("mousemove",(I,w)=>{y(w.point)?u||(l=!0,f||e("move")):(l=!1,f||e(null))})}};function OT(n){if(n!=null&&n.fill||n!=null&&n.fillOpacity||n!=null&&n.shadowOpacity)return{configurableVisibility:!1,data:{values:[{}]},mark:{color:n.fill,opacity:n.fillOpacity??(n.fill?1:0),type:"rect",clip:!1,tooltip:null,minHeight:1,minOpacity:0,shadowBlur:n.shadowBlur,shadowColor:n.shadowColor,shadowOffsetX:n.shadowOffsetX,shadowOffsetY:n.shadowOffsetY,shadowOpacity:n.shadowOpacity}}}function UT(n){if(!(!n||!n.stroke||n.strokeWidth===0||n.strokeOpacity===0))return{configurableVisibility:!1,resolve:{scale:{x:"excluded",y:"excluded"},axis:{x:"excluded",y:"excluded"}},data:{values:[{x:0,y:0,x2:1,y2:0},{x:1,y:0,x2:1,y2:1},{x:1,y:1,x2:0,y2:1},{x:0,y:1,x2:0,y2:0}]},mark:{size:n.strokeWidth??1,color:n.stroke??"lightgray",strokeCap:"square",opacity:n.strokeOpacity??1,type:"rule",clip:!1,tooltip:null},encoding:{x:{field:"x",type:"quantitative",scale:null},y:{field:"y",type:"quantitative",scale:null},x2:{field:"x2"},y2:{field:"y2"}}}}const hA=Object.freeze({size:1,color:"#ccc",opacity:1,strokeDash:[4,4],strokeCap:"butt"});class GT{constructor({direction:t,props:e,context:r,layoutParent:i,dataParent:s,getName:o}){v(this,oi);v(this,ws);v(this,ii);v(this,sr);v(this,ys,[]);v(this,si,[]);v(this,Is,{x:[0,0],y:[0,0]});Q(this,ws,t),Q(this,ii,e.includePlotMargin??!0);const a={...e};delete a.includePlotMargin,Q(this,sr,F(this,oi,UB).call(this,a,r,i,s,o))}get view(){return g(this,sr)}update(t,e,r,i,s,o){F(this,oi,LB).call(this,t,e,i,s),F(this,oi,OB).call(this,r,o)}render(t,e,r){g(this,sr).render(t,e,r)}}ws=new WeakMap,ii=new WeakMap,sr=new WeakMap,ys=new WeakMap,si=new WeakMap,Is=new WeakMap,oi=new WeakSet,LB=function(t,e,r,i){if(g(this,si).length=0,e<2)return;const s=g(this,ws)==="vertical"?"column":"row",o=i?3:2;for(let a=1;a<e;a++){const c=r(s,a)-o,u=t[c],f=u?u.location:0,h=u?u.size:0;g(this,si).push(f+h/2)}},OB=function(t,e){var u,f,h;const r=g(this,ii)?0:e.left,i=g(this,ii)?t.width:t.width-e.right,s=g(this,ii)?0:e.bottom,o=g(this,ii)?t.height:t.height-e.top;g(this,ys).length=g(this,si).length;for(let A=0;A<g(this,si).length;A++){const d=g(this,si)[A],p=g(this,ys)[A]??{};if(g(this,ws)==="vertical")p.x=d,p.x2=d,p.y=s,p.y2=o;else{const C=t.height-d;p.x=r,p.x2=i,p.y=C,p.y2=C}g(this,ys)[A]=p}const a=(u=g(this,sr).flowHandle)==null?void 0:u.dataSource;if(!a)return;a.updateDynamicData(g(this,ys)),g(this,Is).x[1]=t.width,g(this,Is).y[1]=t.height;const l=(f=g(this,sr).getScaleResolution("x"))==null?void 0:f.getScale();l&&l.domain(g(this,Is).x);const c=(h=g(this,sr).getScaleResolution("y"))==null?void 0:h.getScale();c&&c.domain(g(this,Is).y)},UB=function(t,e,r,i,s){const o=HT(t),a=g(this,ws)==="horizontal"?s("separatorHorizontal"):s("separatorVertical"),l=new Ct(o,e,r,i,a,{blockEncodingInheritance:!0});return qn(l,{skipSubtree:!0}),l};function zT(n){if(!n)return null;const t=n===!0?{...hA}:{...hA,...n};return t.strokeDash===hA.strokeDash&&(t.strokeDash=hA.strokeDash.slice()),t}function HT(n){return{configurableVisibility:!1,domainInert:!0,data:{values:[]},resolve:{scale:{x:"excluded",y:"excluded"},axis:{x:"excluded",y:"excluded"}},mark:{...n,type:"rule",clip:n.clip??!1,tooltip:null},encoding:{x:{field:"x",type:"quantitative",scale:{nice:!1,zero:!1}},y:{field:"y",type:"quantitative",scale:{nice:!1,zero:!1}},x2:{field:"x2"},y2:{field:"y2"}}}}class VT extends el{constructor(e,r,i,s,o,a,l){super(e,r,i,s,o,l);v(this,ie);v(this,Ia,1/0);v(this,Ea,10);v(this,At,[]);v(this,or,{});v(this,ou,0);v(this,Es,{});this.spec=e,Q(this,Ea,e.spacing??10),Q(this,Ia,a),Q(this,At,[]),this.wrappingFacet=!1;const c=zT(e.separator);if(c)for(const u of JT(e))g(this,Es)[u]=new GT({direction:u,props:c,context:this.context,layoutParent:this,dataParent:this,getName:f=>this.getNextAutoName(f)})}appendChild(e){this.appendChildView(e)}appendChildView(e){return this.insertChildViewAt(e,g(this,At).length)}insertChildViewAt(e,r){e.layoutParent??(e.layoutParent=this);const i=new LT(e,this,g(this,ou));return ui(this,ou)._++,g(this,At).splice(r,0,i),this.invalidateSizeCache(),i}removeChildView(e){const r=g(this,At).findIndex(i=>i.view===e);if(r<0)throw new Error("Not my child view!");this.removeChildAt(r)}removeChildAt(e){const r=g(this,At)[e];if(!r)throw new Error("Child index out of range!");F(this,ie,Gp).call(this,r),g(this,At).splice(e,1),this.invalidateSizeCache()}setChildren(e){for(const r of g(this,At))F(this,ie,Gp).call(this,r);Q(this,At,[]);for(const r of e)this.appendChild(r);this.invalidateSizeCache()}get children(){return g(this,At).map(e=>e.view)}get childCount(){return g(this,At).length}async createAxes(){await this.syncSharedAxes(),await Promise.all(g(this,At).map(e=>e.createAxes()))}async syncSharedAxes(){for(const r of Object.values(g(this,or)))r.disposeSubtree();Q(this,or,{});const e=[];for(const r of Ei){const i=this.resolutions.axis[r];if(!i)continue;const s=i.getAxisProps();if(!s)continue;const o={title:i.getTitle(),orient:AA[r][0],...s},a=new xI(o,i.scaleResolution.type,this.context,this,this);e.push(a.initializeChildren()),g(this,or)[r]=a}await Promise.all(e)}*[Symbol.iterator](){for(const e of g(this,At))yield*e.getChildren();for(const e of Object.values(g(this,Es)))yield e.view;for(const e of Object.values(g(this,or)))yield e}getOverhang(){return F(this,ie,Vp).call(this).union(F(this,ie,ah).call(this))}getSize(){return this._cache("size",()=>new Mr(F(this,ie,Hp).call(this,"column"),F(this,ie,Hp).call(this,"row")).addPadding(F(this,ie,ah).call(this)))}render(e,r,i={}){var p;if(super.render(e,r,i),!this.isConfiguredVisible())return;this.layoutParent||(r=r.shrink(this.getPadding())),r=r.shrink(F(this,ie,ah).call(this)),e.pushView(this,r);const s=e.getDevicePixelRatio(),o={devicePixelRatio:s},a=s2(F(this,ie,zp).call(this,"column"),r.width,o),l=s2(F(this,ie,zp).call(this,"row"),r.height,o),c=new yI(g(this,ie,Ts).length,g(this,Ia)??1/0),u=C=>Math.round(C*s)/s,f=[];for(const[C,m]of g(this,ie,Ts).entries()){const{view:y,axes:I,gridLines:w,background:x,backgroundStroke:B,title:E,selectionRect:D}=m,[R,k]=c.getCellCoords(C),P=a[F(this,ie,Du).call(this,"column",R)],T=l[F(this,ie,Du).call(this,"row",k)],O=y.getViewportSize(),z=y.getSize(),J=y.getOverhang(),V=P.location-J.left,q=T.location-J.top,oe=(ae,L)=>(ae[L].grow?(L=="width"?P:T).size:ae[L].px)+J[L],se=oe(O,"width"),Ae=oe(O,"height"),ht=oe(z,"width"),Lt=oe(z,"height"),Mn=m.scrollbars.horizontal,Ms=m.scrollbars.vertical,Iu=Mn?()=>u(Mn.viewportOffset):()=>0,Ta=Ms?()=>u(Ms.viewportOffset):()=>0,lr=new Rt(()=>r.x+V,()=>r.y+q,()=>se,()=>Ae),Ns=y.isScrollable(),_=Ns?new Rt(()=>r.x+V-Iu(),()=>r.y+q-Ta(),()=>ht,()=>Lt):lr;m.coords=lr;const ee=i.clipRect?lr.intersect(i.clipRect):lr;f.push({col:R,row:k,view:y,axes:I,gridLines:w,background:x,backgroundStroke:B,title:E,selectionRect:D,viewportCoords:lr,viewCoords:_,clippedChildCoords:ee,viewWidth:ht,viewHeight:Lt,scrollable:Ns,gridChild:m})}for(const C of f)(p=C.background)==null||p.render(e,C.clippedChildCoords,{...i,clipRect:void 0});const h=F(this,ie,Vp).call(this),A=g(this,Es).vertical;A&&(A.update(a,c.nCols,r,(C,m)=>F(this,ie,Du).call(this,C,m),this.wrappingFacet,h),A.render(e,r,i));const d=g(this,Es).horizontal;d&&(d.update(l,c.nRows,r,(C,m)=>F(this,ie,Du).call(this,C,m),this.wrappingFacet,h),d.render(e,r,i));for(const C of f){const{view:m,axes:y,gridLines:I,backgroundStroke:w,title:x,selectionRect:B,viewportCoords:E,viewCoords:D,clippedChildCoords:R,viewWidth:k,viewHeight:P,scrollable:T,gridChild:O,col:z,row:J}=C;for(const q of Object.values(I))q.render(e,E,i);const V=YT(m)||T;V&&m.render(e,D,{...i,clipRect:R}),w==null||w.render(e,R,{...i,clipRect:void 0});for(const[q,oe]of Object.entries(y)){const se=q=="left"||q=="right"?"vertical":"horizontal",Ae=O.scrollbars[se],ht=Ae?E.modify(se=="vertical"?{y:()=>D.y,height:P}:{x:()=>D.x,width:k}):E,Lt=MI(ht,q,oe);let Mn=i.clipRect;Ae&&(Mn=Lt.intersect(Mn).intersect(Ae?E.modify(se=="vertical"?{x:-1e5,width:2e5}:{y:-1e5,height:2e5}):void 0)),oe.render(e,Lt,{...i,clipRect:Mn})}for(const q of Object.values(g(this,or))){const se=q.axisProps.orient;(se=="left"&&z==0||se=="right"&&z==c.nCols-1||se=="top"&&J==0||se=="bottom"&&J==c.nRows-1)&&q.render(e,MI(E.shrink(O.view.getOverhang()),se,q),i)}V||m.render(e,D,i),B==null||B.render(e,D,i);for(const q of Object.values(O.scrollbars))q.updateScrollbar(E,D),q.render(e,r,i);x==null||x.render(e,E,i)}e.popView(this)}propagateInteractionEvent(e){if(this.handleInteractionEvent(void 0,e,!0),e.stopped)return;const r=g(this,ie,Ts).find(s=>s.coords.containsPoint(e.point.x,e.point.y));for(const s of Object.values((r==null?void 0:r.scrollbars)??{}))if(s.coords.containsPoint(e.point.x,e.point.y)&&(s.propagateInteractionEvent(e),e.stopped))return;const i=r==null?void 0:r.view;if(i){if(i.propagateInteractionEvent(e),e.stopped)return;(i instanceof Ct||i instanceof Gi)&&bT(e,r.coords,s=>F(this,ie,zB).call(this,r.coords,r.view,s),this.context.getCurrentHover(),this.context.animator)}e.stopped||this.handleInteractionEvent(void 0,e,!1)}getDefaultResolution(e,r){return"independent"}}Ia=new WeakMap,Ea=new WeakMap,At=new WeakMap,or=new WeakMap,ou=new WeakMap,Es=new WeakMap,ie=new WeakSet,Ts=function(){return g(this,At).filter(e=>e.view.isConfiguredVisible())},GB=function(){return new yI(g(this,ie,Ts).length,g(this,Ia)??1/0)},Gp=function(e){e.disposeAxisViews();for(const r of e.getChildren())r.disposeSubtree()},Qu=function(e){const r=e=="column"?"width":"height",i=(s,o)=>s.map(a=>{const c=g(this,ie,Ts)[a].getOverhangAndPadding();return e=="column"?o?c.right:c.left:o?c.bottom:c.top}).reduce((a,l)=>Math.max(a,l),0);return this._cache(`size/directionSizes/${e}`,()=>g(this,ie,GB)[e=="column"?"colIndices":"rowIndices"].map(s=>({axisBefore:i(s,0),axisAfter:i(s,1),view:C5(s.map(o=>g(this,ie,Ts)[o].view.getViewportSize()[r]))})))},zp=function(e){const r=F(this,ie,Qu).call(this,e),i=[];i.push(_c);for(const[s,o]of r.entries())s>0&&i.push({px:g(this,Ea),grow:0}),(s==0||this.wrappingFacet)&&i.push(_c),i.push({px:o.axisBefore,grow:0}),i.push(o.view),i.push({px:o.axisAfter,grow:0}),(s==r.length-1||this.wrappingFacet)&&i.push(_c);return i},Hp=function(e){let r=0,i=0;const s=e=="row"?this.spec.height:this.spec.width;if(s||s===0)return a2(s);const o=F(this,ie,Qu).call(this,e);for(const[a,l]of o.entries())a>0&&(i+=g(this,Ea)),(a==0||this.wrappingFacet)&&(i+=0),i+=l.axisBefore,i+=l.view.px??0,r+=l.view.grow??0,i+=l.axisAfter,(a==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},Du=function(e,r){return e=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Vp=function(){const e=F(this,ie,Qu).call(this,"column"),r=F(this,ie,Qu).call(this,"row");return!e.length||!r.length?ct.zero():new ct(r.at(0).axisBefore,e.at(-1).axisAfter,r.at(-1).axisAfter,e.at(0).axisBefore)},ah=function(){const e=r=>{const i=ng[r],s=g(this,or)[i];return(s==null?void 0:s.axisProps.orient)!==r?0:Math.max(s.getPerpendicularSize()+(s.axisProps.offset??0),0)};return new ct(e("top"),e("right"),e("bottom"),e("left"))},zB=function(e,r,i){for(const[s,o]of Object.entries(_T(r))){if(o.size<=0)continue;const a=e.normalizePoint(i.x,i.y),l=e.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),c={x:l.x-a.x,y:l.y-a.y};for(const u of o)u.zoom(2**i.zDelta,s=="y"?1-a[s]:a[s],s=="x"?c.x:-c.y)}this.context.animator.requestRender()};function _T(n){const t={x:new Set,y:new Set};return n.visit(e=>{for(const[r,i]of Object.entries(t)){const s=e.getScaleResolution(r);s&&s.isZoomable()&&i.add(s)}}),t}function YT(n){let t=!0;return n.visit(e=>{e instanceof Ct&&t&&(t=e.mark.properties.clip===!0)}),t}function JT(n){return"vconcat"in n?["horizontal"]:"hconcat"in n?["vertical"]:["horizontal","vertical"]}function MI(n,t,e){const r=e.axisProps,i=e.getPerpendicularSize();if(t=="bottom")return n.translate(0,n.height+r.offset).modify({height:i});if(t=="top")return n.translate(0,-i-r.offset).modify({height:i});if(t=="left")return n.translate(-i-r.offset,0).modify({width:i});if(t=="right")return n.translate(n.width+r.offset,0).modify({width:i})}const op=class op extends VT{constructor(e,r,i,s,o){super(e,r,i,s,o,dA(e)?e.columns:nl(e)?1:1/0);v(this,bs);this.spec=e}async initializeChildren(){const e=this.spec,r=dA(e)?e.concat:nl(e)?e.vconcat:e.hconcat;this.setChildren(await Promise.all(r.map(i=>this.context.createOrImportView(i,this,this,this.getNextAutoName("grid"))))),await this.createAxes()}async addChildSpec(e,r){return F(this,bs,_p).call(this).addChildSpec(e,r)}async removeChildAt(e){await F(this,bs,_p).call(this).removeChildAt(e)}getDefaultResolution(e,r){return r=="axis"?"independent":nl(this.spec)&&e==="x"||LI(this.spec)&&e==="y"?"shared":"independent"}};bs=new WeakSet,HB=function(){const e=this.spec;let r;return dA(e)?r=e.concat:nl(e)?r=e.vconcat:r=e.hconcat,{specs:r,insertAt:(i,s)=>{r.splice(i,0,s)},removeAt:i=>{r.splice(i,1)}}},_p=function(){return new pI(this,{getChildSpecs:F(this,bs,HB).bind(this),insertView:(e,r)=>this.insertChildViewAt(e,r),removeView:e=>fB(op.prototype,this,"removeChildAt").call(this,e),prepareView:async(e,r,i)=>{await i.createAxes(),await this.syncSharedAxes()},afterRemove:async()=>{await this.syncSharedAxes()},defaultName:()=>this.getNextAutoName("grid")})};let tl=op;const NI="viewRoot";class qT{constructor(t={}){v(this,ba,new Map);this.options={allowImport:!0,wrapRoot:!0,...t};const e=r=>(i,s,o,a,l)=>new r(i,s,o,a,l);this.addViewType(sg,e(Gi)),this.addViewType(eg,((r,i,s,o,a)=>new Gi(rT(r),i,s,o,a))),this.addViewType(ig,e(Ct)),this.addViewType(nl,e(tl)),this.addViewType(LI,e(tl)),this.addViewType(dA,e(tl))}addViewType(t,e){g(this,ba).set(t,e)}createView(t,e,r,i,s){for(const[o,a]of g(this,ba))if(o(t))return a(t,e,r,i,s);throw jT(t)?new Error("SampleView is not supported by the @genome-spy/core package. Use @genome-spy/app instead!"):new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(t)]))}isViewSpec(t){const e=[...g(this,ba).keys()].filter(r=>r(t));if(e.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return e.length==1}async createOrImportView(t,e,r,i,s,o){let a;const l=PI(t)?t.name??null:void 0;if(PI(t)){let h;if("url"in t.import)if(this.options.allowImport)h=await XM(t,i.getBaseUrl(),e);else throw new rt("Importing views is not allowed!",r);else if("template"in t.import)h=TI(t.import.template,i);else throw new Error("Invalid import: "+JSON.stringify(t));o==null||o(h),KT(h,t),a=h}else a=t;const c=h=>{var A;return(A=h==null?void 0:h.params)==null?void 0:A.some(d=>td(d)&&of(d.select).type=="interval")};let u=!1;!i&&this.options.wrapRoot&&(ig(a)||sg(a)||eg(a)||c(a))&&s===NI&&(a={name:"implicitRoot",vconcat:[a]},u=!0);const f=this.createView(a,e,r,i,s);return l!==void 0&&oT(f,l),u&&qn(f),f instanceof el&&await f.initializeChildren(),f.registerStepSizeInvalidation(),f}}ba=new WeakMap;function TI(n,t){var r,i;const e=(i=(r=t.spec)==null?void 0:r.templates)==null?void 0:i[n];if(e)return structuredClone(e);if(t.dataParent)return TI(n,t.dataParent);throw new Error(`Cannot find template "${n}" in current view or its ancestors!`)}function KT(n,t){t.name!=null&&(n.name=t.name),t.visible!=null&&(n.visible=t.visible);const e=Re(t.params)?t.params:tt(t.params)?Object.entries(t.params).map(([r,i])=>({name:r,value:i})):[];if(e.length){n.params??(n.params=[]);for(const r of e){const i=n.params.findIndex(s=>s.name==r.name);i>=0&&(n.params[i]=r)}for(const r of e)n.params.some(i=>i.name==r.name)||n.params.push(r)}}function ig(n){return"mark"in n&&(we(n.mark)||tt(n.mark))}function sg(n){return"layer"in n&&tt(n.layer)}function PI(n){return"import"in n}function nl(n){return"vconcat"in n&&Re(n.vconcat)}function LI(n){return"hconcat"in n&&Re(n.hconcat)}function dA(n){return"concat"in n&&Re(n.concat)}function jT(n){return"samples"in n&&tt(n.samples)&&"spec"in n&&tt(n.spec)}class WT{constructor(t,e){v(this,xa);this.point=t,this.uiEvent=e,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}get proxiedMouseEvent(){return g(this,xa)||Q(this,xa,XT(this.mouseEvent)),g(this,xa)}get mouseEvent(){if(this.uiEvent instanceof MouseEvent)return this.uiEvent;throw new Error("Not a MouseEvent!")}}xa=new WeakMap;function XT(n){const t=r=>r===null||typeof r!="object"&&typeof r!="function",e={get(r,i,s){const o=Reflect.get(r,i,r);if(!t(o))throw new Error(`Access to non-primitive property "${String(i)}" is not allowed.`);return o},getPrototypeOf(){return null},ownKeys(r){return Reflect.ownKeys(r).filter(s=>t(r[s])).map(s=>typeof s=="symbol"?s:String(s))},getOwnPropertyDescriptor(r,i){const s=Reflect.getOwnPropertyDescriptor(r,i);if(s&&!("get"in s||"set"in s)&&t(s.value))return{value:s.value,writable:!!s.writable,enumerable:!!s.enumerable,configurable:!!s.configurable}},has(r,i){return i in r?t(r[i]):!1}};return new Proxy(n,e)}class ZT{constructor(t,e){this.animator=t,this.disabled=!!e,this.maxDistance=500,this.callback=null,this.targetValue=0,this.lastValue=0,this.smoother=Z0(t,r=>{var s;const i=r.x-this.lastValue;this.lastValue=r.x,(s=this.callback)==null||s.call(this,i)},40,.1,{x:0})}cancel(){this.lastValue!==this.targetValue&&(this.targetValue=Zp([this.lastValue,this.targetValue],.3),this.smoother({x:this.targetValue}))}setMomentum(t,e){if(this.disabled){e(t);return}this.callback=e;const r=io(this.targetValue+t-this.lastValue,-this.maxDistance,this.maxDistance);this.targetValue=this.lastValue+r,this.smoother({x:this.targetValue})}}function $T(n){const t={},e=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in n){const s=i;!r.includes(i)&&e.includes(typeof n[s])&&(t[s]=n[s])}return t}class eP{constructor({viewRoot:t,glHelper:e,tooltip:r,animator:i,emitEvent:s,tooltipHandlers:o,renderPickingFramebuffer:a,getDevicePixelRatio:l}){v(this,ZA);v(this,Ba);v(this,xs);v(this,It);v(this,au);v(this,cu);v(this,lu);v(this,va);v(this,uu);v(this,Je);v(this,Bs);v(this,Sa);v(this,ar);Q(this,Ba,t),Q(this,xs,e),Q(this,It,r),Q(this,au,i),Q(this,cu,s),Q(this,lu,o),Q(this,va,a),Q(this,uu,l),Q(this,Je,void 0),Q(this,Bs,new ZT(g(this,au))),Q(this,Sa,void 0),Q(this,ar,!1)}getCurrentHover(){return g(this,Je)}registerMouseEvents(){const t=g(this,xs).canvas;let e=performance.now(),r=!1;const i=s=>{var l;const o=performance.now(),a=o-e<200;if(s instanceof MouseEvent){const c=t.getBoundingClientRect(),u=new Dt(s.clientX-c.left-t.clientLeft,s.clientY-c.top-t.clientTop);s.type=="mousemove"&&!a&&(g(this,It).handleMouseMove(s),Q(this,ar,!1),s.buttons==0&&!QI()&&(g(this,va).call(this),F(this,ZA,VB).call(this,u.x,u.y)));const f=h=>{g(this,Ba).propagateInteractionEvent(new WT(u,h)),g(this,ar)||g(this,It).clear()};if(s.type!="wheel"&&g(this,Bs).cancel(),(s.type=="mousedown"||s.type=="mouseup")&&!QI())g(this,va).call(this);else if(s.type=="wheel"){e=o,Q(this,ar,!1);const h=s;if(Math.abs(h.deltaX)>Math.abs(h.deltaY))Q(this,Je,null),g(this,Bs).cancel();else{const A=$T(h);g(this,Bs).setMomentum(h.deltaY*(h.deltaMode?80:1),d=>{const p=new WheelEvent("wheel",{...A,deltaMode:0,deltaX:0,deltaY:d});f(p)}),h.preventDefault();return}}if(s.type=="click"){if(r)return;const h=g(this,Je)?{type:s.type,viewPath:g(this,Je).mark.unitView.getLayoutAncestors().map(A=>A.name).reverse(),datum:g(this,Je).datum}:{type:s.type,viewPath:null,datum:null};g(this,cu).call(this,"click",h)}(s.type!="click"||((l=g(this,Sa))==null?void 0:l.subtract(Dt.fromMouseEvent(s)).length)<3)&&f(s)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu","dblclick"].forEach(s=>t.addEventListener(s,i)),t.addEventListener("mousedown",s=>{Q(this,Sa,Dt.fromMouseEvent(s)),g(this,It).sticky?(g(this,It).sticky=!1,g(this,It).clear(),r=!0):r=!1;const o=()=>{document.addEventListener("mouseup",()=>g(this,It).popEnabledState(),{once:!0}),g(this,It).pushEnabledState(!1)};if(s.button==2||s.shiftKey||s.ctrlKey||s.metaKey)o();else if(g(this,It).visible){const a=setTimeout(()=>{r=!0,g(this,It).sticky=!0},400),l=()=>clearTimeout(a);document.addEventListener("mouseup",l,{once:!0}),document.addEventListener("mousemove",l,{once:!0})}}),t.addEventListener("dragstart",s=>s.stopPropagation()),t.addEventListener("mouseout",()=>{g(this,It).clear(),Q(this,Je,null)})}updateTooltip(t,e){if(!g(this,ar)||!t)g(this,It).updateWithDatum(t,e),Q(this,ar,!0);else throw new Error("Tooltip has already been updated! Duplicate event handler?")}}Ba=new WeakMap,xs=new WeakMap,It=new WeakMap,au=new WeakMap,cu=new WeakMap,lu=new WeakMap,va=new WeakMap,uu=new WeakMap,Je=new WeakMap,Bs=new WeakMap,Sa=new WeakMap,ar=new WeakMap,ZA=new WeakSet,VB=function(t,e){var o;const r=g(this,uu).call(this),i=oR(g(this,xs).gl,g(this,xs)._pickingBufferInfo,t*r,e*r),s=i[0]|i[1]<<8|i[2]<<16|i[3]<<24;if(s==0){Q(this,Je,null);return}if(s!==((o=g(this,Je))==null?void 0:o.uniqueId)&&Q(this,Je,null),g(this,Je)||g(this,Ba).visit(a=>{if(a instanceof Ct){if(a.mark.isPickingParticipant()&&[...a.facetCoords.values()].some(l=>l.containsPoint(t,e))){const l=a.getCollector().findDatumByUniqueId(s);l&&Q(this,Je,{mark:a.mark,datum:l,uniqueId:s})}if(g(this,Je))return Tr}}),g(this,Je)){const a=g(this,Je).mark;this.updateTooltip(g(this,Je).datum,async l=>{if(!a.isPickingParticipant())return;const c=a.properties.tooltip;if(c!==null){const u=(c==null?void 0:c.handler)??"default",f=g(this,lu)[u];if(!f)throw new Error("No such tooltip handler: "+u);const h=aI(l,a,c==null?void 0:c.params);return f(l,a,c==null?void 0:c.params,h)}})}};class OI{constructor(t){this.globalOptions=t}pushView(t,e){}popView(t){}renderMark(t,e){}getDevicePixelRatio(){return 1}}class og extends OI{constructor(e,r){super(e);v(this,$A);v(this,fu,[0,0,0,0]);v(this,An);v(this,Au,[]);v(this,Qa);v(this,hu);v(this,du,new Set);v(this,gu);v(this,Da,1);v(this,pu,{width:0,height:0});if(Q(this,hu,r.webGLHelper),Q(this,Qa,r.framebufferInfo),Q(this,Da,r.devicePixelRatio),Q(this,pu,r.canvasSize),r.clearColor){const i=Dr(r.clearColor).rgb();Q(this,fu,[i.r/255,i.g/255,i.b/255,i.opacity])}}getDevicePixelRatio(){return g(this,Da)}pushView(e,r){g(this,du).add(e),Q(this,gu,r)}renderMark(e,r){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const i=e.render(r);i&&g(this,Au).push({mark:e,callback:i,coords:g(this,gu),clipRect:r.clipRect})}render(){if(g(this,An)||F(this,$A,_B).call(this),g(this,An).length==0)return;const e=g(this,hu).gl,r=g(this,Qa);r?(e.bindFramebuffer(e.FRAMEBUFFER,r.framebuffer),e.viewport(0,0,r.width,r.height)):e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight),e.disable(e.SCISSOR_TEST),e.clearColor(...g(this,fu)),e.clear(e.COLOR_BUFFER_BIT);for(const i of g(this,du))i.onBeforeRender();for(const i of g(this,An))i();g(this,Qa)&&e.bindFramebuffer(e.FRAMEBUFFER,null)}}fu=new WeakMap,An=new WeakMap,Au=new WeakMap,Qa=new WeakMap,hu=new WeakMap,du=new WeakMap,gu=new WeakMap,Da=new WeakMap,pu=new WeakMap,$A=new WeakSet,_B=function(){Q(this,An,[]);let e=!0,r=!0;const i=a=>()=>{e&&a()},s=a=>()=>{e&&r&&a()},o=Uu(g(this,Au).reverse(),a=>a.mark);for(const[a,l]of[...o.entries()].reverse()){if(!a.isReady())continue;g(this,An).push(()=>{e=a.unitView.getEffectiveOpacity()>0}),g(this,An).push(...a.prepareRender(this.globalOptions).map(u=>i(u)));let c;for(const u of l){const f=u.coords;f.equals(c)||g(this,An).push(i(()=>{r=a.setViewport(g(this,pu),g(this,Da),f,u.clipRect)})),g(this,An).push(s(u.callback)),c=u.coords}}};class tP extends OI{constructor(...t){super({}),this.contexts=t}pushView(t,e){for(const r of this.contexts)r.pushView(t,e)}popView(t){for(const e of this.contexts)e.popView(t)}renderMark(t,e){for(const r of this.contexts)r.renderMark(t,e)}}class nP{constructor({viewRoot:t,glHelper:e,getBackground:r,broadcast:i,onLayoutComputed:s}){v(this,mu);v(this,vs);v(this,Cu);v(this,ka);v(this,wu);v(this,Ss);v(this,Qs);v(this,Ds);Q(this,mu,t),Q(this,vs,e),Q(this,Cu,r),Q(this,ka,i),Q(this,wu,s),Q(this,Ss,void 0),Q(this,Qs,void 0),Q(this,Ds,!1)}computeLayout(){const t=g(this,mu);if(!t)return;g(this,ka).call(this,"layout");const e=g(this,vs).getLogicalCanvasSize();if(isNaN(e.width)||isNaN(e.height)){console.log(`NaN in canvas size: ${e.width}x${e.height}. Skipping computeLayout().`);return}const r={webGLHelper:g(this,vs),canvasSize:e,devicePixelRatio:window.devicePixelRatio??1};Q(this,Ss,new og({picking:!1},{...r,clearColor:g(this,Cu).call(this)})),Q(this,Qs,new og({picking:!0},{...r,framebufferInfo:g(this,vs)._pickingBufferInfo})),t.render(new tP(g(this,Ss),g(this,Qs)),Rt.create(0,0,e.width,e.height)),g(this,wu).call(this),g(this,ka).call(this,"layoutComputed")}renderAll(){var t;(t=g(this,Ss))==null||t.render(),Q(this,Ds,!0)}renderPickingFramebuffer(){g(this,Ds)&&(g(this,Qs).render(),Q(this,Ds,!1))}}mu=new WeakMap,vs=new WeakMap,Cu=new WeakMap,ka=new WeakMap,wu=new WeakMap,Ss=new WeakMap,Qs=new WeakMap,Ds=new WeakMap;function rP(n){const t=o=>{throw new Error("ViewContext."+o+" is not configured.")},e={dataFlow:n.dataFlow??t("dataFlow"),glHelper:n.glHelper??t("glHelper"),animator:n.animator??t("animator"),genomeStore:n.genomeStore,fontManager:n.fontManager??t("fontManager"),createOrImportView:async function(o,a,l,c,u){const f=n.createOrImportViewWithContext;return f?f(e,o,a,l,c,u):Promise.reject(new Error("ViewContext.createOrImportView is not configured."))}},r=["requestLayoutReflow","updateTooltip","getNamedDataFromProvider","getCurrentHover","addKeyboardListener","addBroadcastListener","removeBroadcastListener","highlightView","isViewConfiguredVisible","isViewSpec"],i=n,s=e;for(const o of r)s[o]=i[o]??(()=>t(o));return e}function iP({glHelper:n,viewRoot:t,logicalWidth:e,logicalHeight:r,devicePixelRatio:i,clearColor:s="white"}){e??(e=n.getLogicalCanvasSize().width),r??(r=n.getLogicalCanvasSize().height),i??(i=window.devicePixelRatio??1);const o=n.gl,a=Math.floor(e*i),l=Math.floor(r*i),c=KC(o,[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],a,l),u=new og({picking:!1},{webGLHelper:n,canvasSize:{width:e,height:r},devicePixelRatio:i,clearColor:s,framebufferInfo:c});return t.render(u,Rt.create(0,0,e,r)),u.render(),aR(o,c,"image/png")}Hh("fasta",L9);class UI{constructor(t,e,r={}){v(this,Qe);v(this,Fa,[]);v(this,ks);v(this,Ra);v(this,cr);v(this,Ma);v(this,Fs);v(this,Et);v(this,yu,new mQ);v(this,Rs,new A1);v(this,Na,new A1);this.container=t,this.options=r,r.inputBindingContainer??(r.inputBindingContainer="default"),this.spec=e,this.viewFactory=new qT,this.namedDataProviders=[],this.animator=new k9(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=i=>i.isVisibleInSpec(),this.tooltipHandlers={default:tT,refseqgene:U9,...r.tooltipHandlers??{}},this.viewRoot=void 0,Q(this,Ma,new NQ(t,r)),this.dpr=window.devicePixelRatio}registerNamedDataProvider(t){this.namedDataProviders.unshift(t)}getNamedDataFromProvider(t){for(const e of this.namedDataProviders){const r=e(t);if(r)return r}}updateNamedData(t,e){const r=this.viewRoot.context.dataFlow.findNamedDataSource(t);if(!r)throw new Error("No such named data source: "+t);r.dataSource.updateDynamicData(e),this.animator.requestRender()}addEventListener(t,e){g(this,Rs).add(t,e)}removeEventListener(t,e){g(this,Rs).remove(t,e)}broadcast(t,e){const r={type:t,payload:e};this.viewRoot.visit(i=>i.handleBroadcast(r)),g(this,Na).emit(t,r)}destroy(){const t=g(this,Qe,ch);for(this.container.classList.remove("genome-spy"),t.classList.remove("loading"),g(this,yu).removeAll(),g(this,Fa).forEach(e=>e()),g(this,Et).finalize(),g(this,Ma).remove(),g(this,Ra).destroy();this.container.firstChild;)this.container.firstChild.remove()}async launch(){var e,r;let t=!1;try{return F(this,Qe,qB).call(this),await F(this,Qe,KB).call(this),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),t=!0,!0}catch(i){const s=`${i.view?`At "${i.view.getPathString()}": `:""}${i.toString()}`;return console.error(i.stack),((r=(e=this.options).onError)==null?void 0:r.call(e,i,this.container))||uQ(this.container,s),this.viewRoot&&g(this,cr).set(this.viewRoot,"error",s),!1}finally{g(this,Qe,ch).classList.remove("loading"),t&&this.viewRoot&&g(this,cr).set(this.viewRoot,"complete")}}async initializeVisibleViewData(){this.viewRoot&&(await v9(this.viewRoot,this.viewRoot.context.dataFlow,this.viewRoot.context.fontManager),this.viewRoot._invalidateCacheByPrefix("size","progeny"),g(this,Et).invalidateSize(),this.computeLayout(),this.animator.requestRender())}registerMouseEvents(){g(this,Fs).registerMouseEvents()}updateTooltip(t,e){g(this,Fs).updateTooltip(t,e)}exportCanvas(t,e,r,i="white"){const s=iP({glHelper:g(this,Et),viewRoot:this.viewRoot,logicalWidth:t,logicalHeight:e,devicePixelRatio:r,clearColor:i});return this.computeLayout(),this.renderAll(),s}getLogicalCanvasSize(){return g(this,Et).getLogicalCanvasSize()}computeLayout(){g(this,ks).computeLayout()}renderAll(){g(this,ks).renderAll()}renderPickingFramebuffer(){g(this,ks).renderPickingFramebuffer()}getSearchableViews(){const t=[];return this.viewRoot.visit(e=>{e instanceof Ct&&e.getSearchAccessors().length>0&&t.push(e)}),t}getNamedScaleResolutions(){const t=new Map;return this.viewRoot.visit(e=>{for(const r of Object.values(e.resolutions.scale))r.name&&t.set(r.name,r)}),t}}Fa=new WeakMap,ks=new WeakMap,Ra=new WeakMap,cr=new WeakMap,Ma=new WeakMap,Fs=new WeakMap,Et=new WeakMap,yu=new WeakMap,Rs=new WeakMap,Na=new WeakMap,Qe=new WeakSet,ch=function(){return this.container.querySelector(".canvas-wrapper")},YB=function(){g(this,Ma).initialize(this.viewRoot)},JB=function(){const t=this.viewRoot.paramRuntime.allocateSetter("devicePixelRatio",this.dpr),e=()=>{g(this,Et).invalidateSize(),this.dpr=window.devicePixelRatio,t(this.dpr),this.computeLayout(),this.renderAll()};if(this.viewRoot.getSize().isGrowing()){const s=new ResizeObserver(e);s.observe(this.container),g(this,Fa).push(()=>s.disconnect())}let r=null;const i=()=>{r!=null&&(r(),e());const s=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);s.addEventListener("change",i),r=()=>{s.removeEventListener("change",i)}};i(),r&&g(this,Fa).push(r)},qB=function(){const{canvasWrapper:t,loadingIndicatorsElement:e,tooltip:r}=lQ(this.container);Q(this,Et,new rR(t,()=>this.viewRoot?ZM(this.viewRoot):{width:void 0,height:void 0},{powerPreference:this.options.powerPreference??"default"})),this.tooltip=r,Q(this,cr,new f1),Q(this,Ra,new gQ(e,g(this,cr)))},KB=async function(){await F(this,Qe,jB).call(this);const t=F(this,Qe,WB).call(this);await F(this,Qe,XB).call(this,t),await B9(this.viewRoot,t.dataFlow,t.fontManager,e=>this.broadcast("dataFlowBuilt",e)),F(this,Qe,$B).call(this,t)},jB=async function(){this.spec.genome&&(this.genomeStore=new F9(this.spec.baseUrl),await this.genomeStore.initialize(this.spec.genome))},WB=function(){const t=new W2;return t.loadingStatusRegistry=g(this,cr),rP({dataFlow:t,glHelper:g(this,Et),animator:this.animator,genomeStore:this.genomeStore,fontManager:new N9(g(this,Et)),updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>g(this,Fs).getCurrentHover(),addKeyboardListener:(e,r)=>{g(this,yu).add(e,r)},addBroadcastListener:(e,r)=>g(this,Na).add(e,r),removeBroadcastListener:(e,r)=>g(this,Na).remove(e,r),isViewConfiguredVisible:this.viewVisibilityPredicate,isViewSpec:e=>this.viewFactory.isViewSpec(e),createOrImportViewWithContext:(e,r,i,s,o,a)=>this.viewFactory.createOrImportView(r,e,i,s,o,a),highlightView:pQ(this.container)})},XB=async function(t){const e=this.spec;e.datasets&&this.registerNamedDataProvider(r=>e.datasets[r]),this.viewRoot=await t.createOrImportView(e,null,null,NI),g(this,cr).set(this.viewRoot,"loading"),g(this,Qe,ch).style.flexGrow=this.viewRoot.getSize().height.grow>0?"1":"0",F(this,Qe,YB).call(this),nT(this.viewRoot),gI(this.viewRoot),F(this,Qe,ZB).call(this),g(this,Et).invalidateSize(),Q(this,ks,new nP({viewRoot:this.viewRoot,glHelper:g(this,Et),getBackground:()=>this.spec.background,broadcast:this.broadcast.bind(this),onLayoutComputed:()=>g(this,Ra).updateLayout()})),t.requestLayoutReflow=this.computeLayout.bind(this),F(this,Qe,JB).call(this)},ZB=function(){const t=cT(this.viewRoot);if(t.length)for(const e of t)console.warn("Selector constraints warning:",e.message)},$B=function(t){t.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(e=>Oc(e,"size")),g(this,Et).invalidateSize(),Q(this,Fs,new eP({viewRoot:this.viewRoot,glHelper:g(this,Et),tooltip:this.tooltip,animator:this.animator,emitEvent:g(this,Rs).emit.bind(g(this,Rs)),tooltipHandlers:this.tooltipHandlers,renderPickingFramebuffer:this.renderPickingFramebuffer.bind(this),getDevicePixelRatio:()=>this.dpr}))};const sP="data:image/svg+xml,%3csvg%20viewBox='0%200%2032%2032'%20xmlns='http://www.w3.org/2000/svg'%20fill-rule='evenodd'%20clip-rule='evenodd'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='1.5'%3e%3cpath%20d='M4.7%2021.2s.4%202.3%201.3%203.6C7%2026%209.8%2028%209.8%2028s3.4-2.6%206.4-8.5c0%200%201%20.1%201.9-.4.9-.6.8-.4%201-1.2%200%200%202.9.5%206.6%200%202.1-.3%204.3-1%206.2-2.5%200%200-1.1-1.7-2.5-5.1-.5-1.3-2-1.8-4.6-4.6l-8.2%208.6-11.9%206.9z'%20fill-opacity='.1'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='%237fbbdd'/%3e%3cpath%20d='M12.4%2015.5c-.7-.5-2.4-.8-4.4-.4-2%20.4-4%201.3-4.8%201.8-.5.3-1.2%201-1.2%201.4%200%20.7.3%201.8.8%202.4.3.3.7.5%201.4.6.8%200%202.5-1.4%203.5-2%201-.6%201.6-.8%202.7-1.2l-2.9%202.4c-1.3%201.2-2.2%201.5-2.4%202.3%200%20.5%200%201.4.5%201.8.4.5.6.8%201.6.8.6%200%201%200%202.6-1.5.9-.9%202.3-3%202.7-3.7.6-1.1%201-2.2.7-3-.2-1-.4-1.4-.8-1.7zM17.4%2014.2c-.3-.5-.9-1.2-.2-2.5l1.9-3c.5-.8%202-2.3%202.6-2.6.6-.4%201.5-.6%202-.2.6.4%201%201%201.3%201.5.4.6.7%201.3.2%202-.7%201-1.6.9-2.8%201.7-1.2.8-1.9%201.2-2.5%201.9l3.8-1.8c1.3-.6%202.7-1.1%203.4-.7.8.5.8.7%201%201.4.3%201-.2%201.9-.8%202.4-.5.6-1.5.9-2.6%201.2-1.4.4-4.5%201-5.8.5-1.3-.5-1.3-1.4-1.5-1.8z'%20fill='%23fff'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='%237fbbdd'/%3e%3cpath%20d='M13.8%2015.3c.9.8.6%202%201.4%201.8%201-.2%201.4-.8%201.3-1.5%200-.7%200-.8-.4-1.6-.3-.7-1-1.1-2-.5-.7.5-1.4%201.3-1.4%201.3s.2-.3%201.1.5z'%20fill='%23fff'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3c/svg%3e",oP="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5'%20viewBox='0%200%2064%2064'%3e%3cpath%20d='M208.6%20548.2s11.2%2046.2%2031.2%2071c20%2024.9%2079.3%2061.6%2079.3%2061.6S385.6%20623%20438%20498.3c0%200%2018.1%201%2036-11.9%2017.7-12.7%2016.3-7.9%2021-24.8%200%200%2057%206.3%20131-9.7%2041.7-9.1%2084.3-26.3%20121.5-58.8%200%200-25.4-32.9-58-101.7-12.4-26.1-41.9-34.3-98.7-88L438.1%20391.2%20208.6%20548.2Z'%20style='fill-opacity:.11'%20transform='matrix(.10221%20.00684%20-.00671%20.10035%20-8%20-13.2)'/%3e%3cg%20transform='rotate(-35.4%2034.2%2080.8)%20scale(.10057)'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='a'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20d='M386.9%20397.2c-15.6-13.6-51.8-22.4-96.3-16.7-44.5%205.8-93.8%2021.8-111.8%2031.6-10.6%205.7-27.3%2017.3-28.1%2027.2-1.2%2014.2%202.9%2037.8%2015%2052%206%207.2%2014.2%2012.1%2028.1%2014.1%2017.9%202.6%2059-24.8%2081.6-36.2%2024-12%2038.6-14.6%2063-22.2%200%200-47%2031.6-68.2%2047.4-30.6%2022.9-51.6%2028-57.3%2045.5-3.1%209.4-.7%2027.9%207.5%2037.6%209%2011%2012.8%2017.6%2034.2%2020.1%2012.7%201.5%2022%201.2%2059.8-28.6%2021.7-17.2%2055.9-59.2%2067-74.4%2016.2-22%2023.8-43.1%2021.3-59.6-3.7-23.6-8.4-31.3-15.8-37.8Z'%20style='fill:%23fff'%20transform='scale(.88664)%20rotate(31.2%20485%20792.2)'/%3e%3cpath%20d='M484.7%20379c-5.4-11.1-17.6-28.5-.8-53.8a739%20739%200%200%201%2044.2-60.6c13.2-16.3%2046.7-46.2%2059.6-52%2013-6%2033.3-8.7%2044.2.2%2011%209.1%2016.5%2020.6%2023%2032.7%207.4%2013.8%2012.4%2029.3%201.6%2042.8-15.4%2019.2-34.3%2017-61.6%2031.5-27.7%2014.8-42.3%2023.1-55.7%2035.9%200%200%2052.2-21.6%2082-31.2%2029.8-9.7%2059.8-20%2074.8-8.5s14.6%2015.5%2018.4%2031.2c4.7%2019.4-7.2%2038-20.1%2048.6-13%2010.7-34.3%2016-57.4%2021-30.5%206.8-96.6%2015.1-124%202.6-27.5-12.6-24.4-32.8-28.2-40.5Z'%20style='fill:%23fff'%20transform='scale(.87906)%20rotate(31.2%20487.2%20893.5)'/%3e%3c/g%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3cg%20transform='rotate(-4.2%20-78%20211)%20scale(.10057)'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='b'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23b)'%3e%3cpath%20d='M413.3%20402.7c17.5%2018.9%2010%2045.7%2028.4%2043.4%2021.7-2.7%2030.9-15.7%2031.6-32.7.7-17-1-19.5-7.1-38-6.1-18.7-18.2-23.2-43.4-18.2-20.8%204.1-17.8%203-24%2010-6.4%207-14.5%2026-14.5%2026s8.4-12.7%2029%209.5Z'%20style='fill:%23fff'%20transform='matrix(.90907%200%200%20.85852%2037%2052.2)'/%3e%3c/g%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3c/svg%3e";async function aP(n,t,e={}){let r;if(we(n)){if(r=document.querySelector(n),!r)throw new Error(`No such element: ${n}`)}else if(n instanceof HTMLElement)r=n;else throw new Error(`Invalid element: ${n}`);let i;try{const s=tt(t)?t:await GI(t);if(s.baseUrl??(s.baseUrl=""),s.width??(s.width="container"),s.padding??(s.padding=10),r==document.body){const o=document.createElement("div");o.style.position="fixed",o.style.inset="0",o.style.overflow="hidden",r.appendChild(o),r=o}i=new UI(r,s,e),cP(i,e),await i.launch()}catch(s){r.innerText=s.toString(),console.error(s)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(s,o){i.addEventListener(s,o)},removeEventListener(s,o){i.removeEventListener(s,o)},getScaleResolutionByName(s){return i.getNamedScaleResolutions().get(s)},updateNamedData:i.updateNamedData.bind(i),exportCanvas:i.exportCanvas.bind(i)}}function cP(n,t){t.namedDataProvider&&n.registerNamedDataProvider(t.namedDataProvider)}async function GI(n){let t;try{const e=await fetch(n);if(!e.ok)throw new Error(`${e.status} ${e.statusText}`);t=await e.json()}catch(e){throw new Error(`Could not load or parse configuration: ${n}, reason: ${e.message}`)}if(!t.baseUrl){const e=n.match(/^[^?#]*\//);t.baseUrl=e&&e[0]||"./"}return t}class lP{constructor(t){this.blob=t}async read(t,e=0){if(!t)return new Uint8Array(0);const r=e,i=r+t,s=this.blob.slice(r,i);return s.bytes?s.bytes():new Uint8Array(await s.arrayBuffer())}async readFile(t){const e=typeof t=="string"?t:t==null?void 0:t.encoding;if(e==="utf8")return this.blob.text();if(e)throw new Error(`unsupported encoding: ${e}`);return this.blob.bytes?this.blob.bytes():new Uint8Array(await this.blob.arrayBuffer())}async stat(){return{size:this.blob.size}}async close(){}}function uP(n){return(typeof n=="object"&&n!==null&&"message"in n?n.message:`${n}`).replace(/\.$/,"")}class vn{constructor(t,e={}){this.baseOverrides={},this.url=t;const r=e.fetch||globalThis.fetch.bind(globalThis);e.overrides&&(this.baseOverrides=e.overrides),this.fetchImplementation=r}async fetch(t,e){const r=s=>new Error(`${uP(s)} fetching ${t}`,{cause:s});let i;try{i=await this.fetchImplementation(t,e)}catch(s){if(`${s}`.includes("Failed to fetch")){console.warn(`generic-filehandle: refetching ${t} to attempt to work around chrome CORS header caching bug`);try{i=await this.fetchImplementation(t,{...e,cache:"reload"})}catch(o){throw r(o)}}else throw r(s)}return i}async read(t,e,r={}){if(t===0)return new Uint8Array(0);const{headers:i={},signal:s,overrides:o={}}=r;t<1/0?i.range=`bytes=${e}-${e+t-1}`:t===1/0&&e!==0&&(i.range=`bytes=${e}-`);const a=await this.fetch(this.url,{...this.baseOverrides,...o,headers:{...this.baseOverrides.headers,...o.headers,...i},method:"GET",redirect:"follow",mode:"cors",signal:s});if(!a.ok)throw new Error(`HTTP ${a.status} fetching ${this.url}`);if(a.status===200&&e===0||a.status===206){const l=a.headers.get("content-range"),c=/\/(\d+)$/.exec(l||"");c!=null&&c[1]&&(this._stat={size:parseInt(c[1],10)});const u=a.bytes?await a.bytes():new Uint8Array(await a.arrayBuffer());return u.byteLength<=t?u:u.subarray(0,t)}throw new Error(a.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${a.status} fetching ${this.url}`)}async readFile(t={}){let e,r;if(typeof t=="string")e=t,r={};else{e=t.encoding;const{encoding:l,...c}=t;r=c}const{headers:i={},signal:s,overrides:o={}}=r,a=await this.fetch(this.url,{...this.baseOverrides,...o,headers:{...this.baseOverrides.headers,...o.headers,...i},method:"GET",redirect:"follow",mode:"cors",signal:s});if(!a.ok)throw new Error(`HTTP ${a.status} fetching ${this.url}`);if(e==="utf8")return a.text();if(e)throw new Error(`unsupported encoding: ${e}`);return a.bytes?a.bytes():new Uint8Array(await a.arrayBuffer())}async stat(){if(!this._stat&&(await this.read(10,0),!this._stat))throw new Error(`unable to determine size of file at ${this.url}`);return this._stat}async close(){}}class ft{readFile(){throw new Error("unimplemented")}read(){throw new Error("unimplemented")}close(){throw new Error("unimplemented")}}const rl=Object.freeze(Object.defineProperty({__proto__:null,BlobFile:lP,LocalFile:ft,RemoteFile:vn},Symbol.toStringTag,{value:"Module"})),zI=65536,fP=zI*zI;function ag(n,t=0){const e=n[t]|n[t+1]<<8|n[t+2]<<16|n[t+3]<<24;return((n[t+4]|n[t+5]<<8|n[t+6]<<16|n[t+7]<<24)>>>0)*fP+(e>>>0)}const gA=1;function HI(n,t,e){const r=t[gA],i=e?e[gA]:1/0;return r<=n&&i>n?0:r<n?-1:1}class AP{constructor({filehandle:t}){X(this,"filehandle");X(this,"index");this.filehandle=t}_getIndex(){return this.index||(this.index=this._readIndex().catch(t=>{throw this.index=void 0,t})),this.index}async _readIndex(){const t=await this.filehandle.read(8,0),e=ag(t);if(!e)return[[0,0]];const r=new Array(e+1);r[0]=[0,0];const i=16*e;if(i>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");const s=await this.filehandle.read(i,8);for(let o=0;o<e;o+=1){const a=ag(s,o*16),l=ag(s,o*16+8);r[o+1]=[a,l]}return r}async getLastBlock(){return(await this._getIndex()).at(-1)}async getRelevantBlocksForRead(t,e){const r=e+t;if(t===0)return[];const i=await this._getIndex(),s=[];let o=0,a=i.length-1,l=Math.floor(i.length/2),c=HI(e,i[l],i[l+1]);for(;c!==0;)c>0?a=l-1:c<0&&(o=l+1),l=Math.ceil((a-o)/2)+o,c=HI(e,i[l],i[l+1]);s.push(i[l]);let u=l+1;for(;u<i.length&&(s.push(i[u]),!(i[u][gA]>=r));u+=1);return s[s.length-1][gA]<r&&s.push([]),s}}var VI=0,cg=2,pA=4,Vi=0,mA=1,hP=2,dP=-5;function gP(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function pP(n){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var e=t.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(var r in e)gP(e,r)&&(n[r]=e[r])}}return n}function _I(n,t){return n.length===t?n:n.subarray?n.subarray(0,t):(n.length=t,n)}var il={arraySet:function(n,t,e,r,i){if(t.subarray&&n.subarray){n.set(t.subarray(e,e+r),i);return}for(var s=0;s<r;s++)n[i+s]=t[e+s]},flattenChunks:function(n){var t,e,r,i,s,o;for(r=0,t=0,e=n.length;t<e;t++)r+=n[t].length;for(o=new Uint8Array(r),i=0,t=0,e=n.length;t<e;t++)s=n[t],o.set(s,i),i+=s.length;return o},Buf8:function(n){return new Uint8Array(n)},Buf16:function(n){return new Uint16Array(n)},Buf32:function(n){return new Int32Array(n)}},sl={arraySet:function(n,t,e,r,i){for(var s=0;s<r;s++)n[i+s]=t[e+s]},flattenChunks:function(n){return[].concat.apply([],n)},Buf8:function(n){return new Array(n)},Buf16:function(n){return new Array(n)},Buf32:function(n){return new Array(n)}};let po=()=>{const n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return po=()=>n,n},Lr=(n,t,e,r,i)=>(Lr=po()?il.arraySet:sl.arraySet,Lr(n,t,e,r,i)),lg=n=>(lg=po()?il.flattenChunks:sl.flattenChunks,lg(n)),mo=n=>(mo=po()?il.Buf8:sl.Buf8,mo(n)),Co=n=>(Co=po()?il.Buf16:sl.Buf16,Co(n)),wo=n=>(wo=po()?il.Buf32:sl.Buf32,wo(n)),YI=function(){let n=!0;try{String.fromCharCode.apply(null,[0])}catch{n=!1}return YI=()=>n,n},JI=function(){let n=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{n=!1}return JI=()=>n,n},ug=function(n){for(var t=mo(256),e=0;e<256;e++)t[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;return t[254]=t[254]=1,ug=r=>t[r],t[n]};function qI(n){var t,e,r,i,s,o=n.length,a=0;for(i=0;i<o;i++)e=n.charCodeAt(i),(e&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),i++)),a+=e<128?1:e<2048?2:e<65536?3:4;for(t=new Uint8Array(a),s=0,i=0;s<a;i++)e=n.charCodeAt(i),(e&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),i++)),e<128?t[s++]=e:e<2048?(t[s++]=192|e>>>6,t[s++]=128|e&63):e<65536?(t[s++]=224|e>>>12,t[s++]=128|e>>>6&63,t[s++]=128|e&63):(t[s++]=240|e>>>18,t[s++]=128|e>>>12&63,t[s++]=128|e>>>6&63,t[s++]=128|e&63);return t}function mP(n,t){if(t<65534&&(n.subarray&&JI()||!n.subarray&&YI()))return String.fromCharCode.apply(null,_I(n,t));for(var e="",r=0;r<t;r++)e+=String.fromCharCode(n[r]);return e}function CP(n){for(var t=new Uint8Array(n.length),e=0,r=t.length;e<r;e++)t[e]=n.charCodeAt(e);return t}function wP(n,t){var e,r,i,s,o=t||n.length,a=new Array(o*2);for(r=0,e=0;e<o;){if(i=n[e++],i<128){a[r++]=i;continue}if(s=ug(i),s>4){a[r++]=65533,e+=s-1;continue}for(i&=s===2?31:s===3?15:7;s>1&&e<o;)i=i<<6|n[e++]&63,s--;if(s>1){a[r++]=65533;continue}i<65536?a[r++]=i:(i-=65536,a[r++]=55296|i>>10&1023,a[r++]=56320|i&1023)}return mP(a,r)}function yP(n,t){var e;for(t=t||n.length,t>n.length&&(t=n.length),e=t-1;e>=0&&(n[e]&192)===128;)e--;return e<0||e===0?t:e+ug(n[e])>t?e:t}function IP(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function fg(n,t,e,r){for(var i=n&65535|0,s=n>>>16&65535|0,o=0;e!==0;){o=e>2e3?2e3:e,e-=o;do i=i+t[r++]|0,s=s+i|0;while(--o);i%=65521,s%=65521}return i|s<<16|0}function EP(){for(var n,t=[],e=0;e<256;e++){n=e;for(var r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;t[e]=n}return t}let KI=function(){const n=EP();return KI=()=>n,n};function Sn(n,t,e,r){var i=KI(),s=r+e;n^=-1;for(var o=r;o<s;o++)n=n>>>8^i[(n^t[o])&255];return n^-1}var CA=30,bP=12;function xP(n,t){var e,r,i,s,o,a,l,c,u,f,h,A,d,p,C,m,y,I,w,x,B,E,D,R,k;e=n.state,r=n.next_in,R=n.input,i=r+(n.avail_in-5),s=n.next_out,k=n.output,o=s-(t-n.avail_out),a=s+(n.avail_out-257),l=e.dmax,c=e.wsize,u=e.whave,f=e.wnext,h=e.window,A=e.hold,d=e.bits,p=e.lencode,C=e.distcode,m=(1<<e.lenbits)-1,y=(1<<e.distbits)-1;e:do{d<15&&(A+=R[r++]<<d,d+=8,A+=R[r++]<<d,d+=8),I=p[A&m];t:for(;;){if(w=I>>>24,A>>>=w,d-=w,w=I>>>16&255,w===0)k[s++]=I&65535;else if(w&16){x=I&65535,w&=15,w&&(d<w&&(A+=R[r++]<<d,d+=8),x+=A&(1<<w)-1,A>>>=w,d-=w),d<15&&(A+=R[r++]<<d,d+=8,A+=R[r++]<<d,d+=8),I=C[A&y];n:for(;;){if(w=I>>>24,A>>>=w,d-=w,w=I>>>16&255,w&16){if(B=I&65535,w&=15,d<w&&(A+=R[r++]<<d,d+=8,d<w&&(A+=R[r++]<<d,d+=8)),B+=A&(1<<w)-1,B>l){n.msg="invalid distance too far back",e.mode=CA;break e}if(A>>>=w,d-=w,w=s-o,B>w){if(w=B-w,w>u&&e.sane){n.msg="invalid distance too far back",e.mode=CA;break e}if(E=0,D=h,f===0){if(E+=c-w,w<x){x-=w;do k[s++]=h[E++];while(--w);E=s-B,D=k}}else if(f<w){if(E+=c+f-w,w-=f,w<x){x-=w;do k[s++]=h[E++];while(--w);if(E=0,f<x){w=f,x-=w;do k[s++]=h[E++];while(--w);E=s-B,D=k}}}else if(E+=f-w,w<x){x-=w;do k[s++]=h[E++];while(--w);E=s-B,D=k}for(;x>2;)k[s++]=D[E++],k[s++]=D[E++],k[s++]=D[E++],x-=3;x&&(k[s++]=D[E++],x>1&&(k[s++]=D[E++]))}else{E=s-B;do k[s++]=k[E++],k[s++]=k[E++],k[s++]=k[E++],x-=3;while(x>2);x&&(k[s++]=k[E++],x>1&&(k[s++]=k[E++]))}}else if((w&64)===0){I=C[(I&65535)+(A&(1<<w)-1)];continue n}else{n.msg="invalid distance code",e.mode=CA;break e}break}}else if((w&64)===0){I=p[(I&65535)+(A&(1<<w)-1)];continue t}else if(w&32){e.mode=bP;break e}else{n.msg="invalid literal/length code",e.mode=CA;break e}break}}while(r<i&&s<a);x=d>>3,r-=x,d-=x<<3,A&=(1<<d)-1,n.next_in=r,n.next_out=s,n.avail_in=r<i?5+(i-r):5-(r-i),n.avail_out=s<a?257+(a-s):257-(s-a),e.hold=A,e.bits=d}var yo=15,jI=852,WI=592,XI=0,Ag=1,ZI=2,BP=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],vP=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],SP=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],QP=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function ol(n,t,e,r,i,s,o,a){var l=a.bits,c=0,u=0,f=0,h=0,A=0,d=0,p=0,C=0,m=0,y=0,I,w,x,B,E,D=null,R=0,k,P=Co(yo+1),T=Co(yo+1),O=null,z=0,J,V,q;for(c=0;c<=yo;c++)P[c]=0;for(u=0;u<r;u++)P[t[e+u]]++;for(A=l,h=yo;h>=1&&P[h]===0;h--);if(A>h&&(A=h),h===0)return i[s++]=1<<24|64<<16|0,i[s++]=1<<24|64<<16|0,a.bits=1,0;for(f=1;f<h&&P[f]===0;f++);for(A<f&&(A=f),C=1,c=1;c<=yo;c++)if(C<<=1,C-=P[c],C<0)return-1;if(C>0&&(n===XI||h!==1))return-1;for(T[1]=0,c=1;c<yo;c++)T[c+1]=T[c]+P[c];for(u=0;u<r;u++)t[e+u]!==0&&(o[T[t[e+u]]++]=u);if(n===XI?(D=O=o,k=19):n===Ag?(D=BP,R-=257,O=vP,z-=257,k=256):(D=SP,O=QP,k=-1),y=0,u=0,c=f,E=s,d=A,p=0,x=-1,m=1<<A,B=m-1,n===Ag&&m>jI||n===ZI&&m>WI)return 1;for(;;){J=c-p,o[u]<k?(V=0,q=o[u]):o[u]>k?(V=O[z+o[u]],q=D[R+o[u]]):(V=96,q=0),I=1<<c-p,w=1<<d,f=w;do w-=I,i[E+(y>>p)+w]=J<<24|V<<16|q|0;while(w!==0);for(I=1<<c-1;y&I;)I>>=1;if(I!==0?(y&=I-1,y+=I):y=0,u++,--P[c]===0){if(c===h)break;c=t[e+o[u]]}if(c>A&&(y&B)!==x){for(p===0&&(p=A),E+=f,d=c-p,C=1<<d;d+p<h&&(C-=P[d+p],!(C<=0));)d++,C<<=1;if(m+=1<<d,n===Ag&&m>jI||n===ZI&&m>WI)return 1;x=y&B,i[x]=A<<24|d<<16|E-s|0}}return y!==0&&(i[E+y]=c-p<<24|64<<16|0),a.bits=A,0}var DP=0,$I=1,eE=2,tE=4,_i=0,kP=1,FP=2,Vt=-2,nE=-3,rE=-4,RP=-5,iE=8,sE=1,oE=2,aE=3,cE=4,lE=5,uE=6,fE=7,AE=8,hE=9,dE=10,wA=11,Kn=12,hg=13,gE=14,dg=15,pE=16,mE=17,CE=18,wE=19,yA=20,IA=21,yE=22,IE=23,EE=24,bE=25,xE=26,gg=27,BE=28,vE=29,ve=30,SE=31,MP=32,NP=852,TP=592;function QE(n){return(n>>>24&255)+(n>>>8&65280)+((n&65280)<<8)+((n&255)<<24)}function PP(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=Co(320),this.work=Co(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function LP(n){var t;return!n||!n.state?Vt:(t=n.state,n.total_in=n.total_out=t.total=0,n.msg="",t.wrap&&(n.adler=t.wrap&1),t.mode=sE,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=wo(NP),t.distcode=t.distdyn=wo(TP),t.sane=1,t.back=-1,_i)}function OP(n){var t;return!n||!n.state?Vt:(t=n.state,t.wsize=0,t.whave=0,t.wnext=0,LP(n))}function UP(n,t){var e,r;return!n||!n.state||(r=n.state,t<0?(e=0,t=-t):(e=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?Vt:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=e,r.wbits=t,OP(n))}function GP(n,t){var e,r;return n?(r=new PP,n.state=r,r.window=null,e=UP(n,t),e!==_i&&(n.state=null),e):Vt}var DE=!0,pg,mg;function zP(n){if(DE){var t;for(pg=wo(512),mg=wo(32),t=0;t<144;)n.lens[t++]=8;for(;t<256;)n.lens[t++]=9;for(;t<280;)n.lens[t++]=7;for(;t<288;)n.lens[t++]=8;for(ol($I,n.lens,0,288,pg,0,n.work,{bits:9}),t=0;t<32;)n.lens[t++]=5;ol(eE,n.lens,0,32,mg,0,n.work,{bits:5}),DE=!1}n.lencode=pg,n.lenbits=9,n.distcode=mg,n.distbits=5}function kE(n,t,e,r){var i,s=n.state;return s.window===null&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=mo(s.wsize)),r>=s.wsize?(Lr(s.window,t,e-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),Lr(s.window,t,e-r,i,s.wnext),r-=i,r?(Lr(s.window,t,e-r,r,0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}function HP(n,t){var e,r,i,s,o,a,l,c,u,f,h,A,d,p,C=0,m,y,I,w,x,B,E,D,R=mo(4),k,P,T=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!n||!n.state||!n.output||!n.input&&n.avail_in!==0)return Vt;e=n.state,e.mode===Kn&&(e.mode=hg),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=e.hold,u=e.bits,f=a,h=l,D=_i;e:for(;;)switch(e.mode){case sE:if(e.wrap===0){e.mode=hg;break}for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.wrap&2&&c===35615){e.check=0,R[0]=c&255,R[1]=c>>>8&255,e.check=Sn(e.check,R,2,0),c=0,u=0,e.mode=oE;break}if(e.flags=0,e.head&&(e.head.done=!1),!(e.wrap&1)||(((c&255)<<8)+(c>>8))%31){n.msg="incorrect header check",e.mode=ve;break}if((c&15)!==iE){n.msg="unknown compression method",e.mode=ve;break}if(c>>>=4,u-=4,E=(c&15)+8,e.wbits===0)e.wbits=E;else if(E>e.wbits){n.msg="invalid window size",e.mode=ve;break}e.dmax=1<<E,n.adler=e.check=1,e.mode=c&512?dE:Kn,c=0,u=0;break;case oE:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.flags=c,(e.flags&255)!==iE){n.msg="unknown compression method",e.mode=ve;break}if(e.flags&57344){n.msg="unknown header flags set",e.mode=ve;break}e.head&&(e.head.text=c>>8&1),e.flags&512&&(R[0]=c&255,R[1]=c>>>8&255,e.check=Sn(e.check,R,2,0)),c=0,u=0,e.mode=aE;case aE:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.head&&(e.head.time=c),e.flags&512&&(R[0]=c&255,R[1]=c>>>8&255,R[2]=c>>>16&255,R[3]=c>>>24&255,e.check=Sn(e.check,R,4,0)),c=0,u=0,e.mode=cE;case cE:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.head&&(e.head.xflags=c&255,e.head.os=c>>8),e.flags&512&&(R[0]=c&255,R[1]=c>>>8&255,e.check=Sn(e.check,R,2,0)),c=0,u=0,e.mode=lE;case lE:if(e.flags&1024){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.length=c,e.head&&(e.head.extra_len=c),e.flags&512&&(R[0]=c&255,R[1]=c>>>8&255,e.check=Sn(e.check,R,2,0)),c=0,u=0}else e.head&&(e.head.extra=null);e.mode=uE;case uE:if(e.flags&1024&&(A=e.length,A>a&&(A=a),A&&(e.head&&(E=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),Lr(e.head.extra,r,s,A,E)),e.flags&512&&(e.check=Sn(e.check,r,A,s)),a-=A,s+=A,e.length-=A),e.length))break e;e.length=0,e.mode=fE;case fE:if(e.flags&2048){if(a===0)break e;A=0;do E=r[s+A++],e.head&&E&&e.length<65536&&(e.head.name+=String.fromCharCode(E));while(E&&A<a);if(e.flags&512&&(e.check=Sn(e.check,r,A,s)),a-=A,s+=A,E)break e}else e.head&&(e.head.name=null);e.length=0,e.mode=AE;case AE:if(e.flags&4096){if(a===0)break e;A=0;do E=r[s+A++],e.head&&E&&e.length<65536&&(e.head.comment+=String.fromCharCode(E));while(E&&A<a);if(e.flags&512&&(e.check=Sn(e.check,r,A,s)),a-=A,s+=A,E)break e}else e.head&&(e.head.comment=null);e.mode=hE;case hE:if(e.flags&512){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(e.check&65535)){n.msg="header crc mismatch",e.mode=ve;break}c=0,u=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),n.adler=e.check=0,e.mode=Kn;break;case dE:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}n.adler=e.check=QE(c),c=0,u=0,e.mode=wA;case wA:if(e.havedict===0)return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,FP;n.adler=e.check=1,e.mode=Kn;case Kn:case hg:if(e.last){c>>>=u&7,u-=u&7,e.mode=gg;break}for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}switch(e.last=c&1,c>>>=1,u-=1,c&3){case 0:e.mode=gE;break;case 1:zP(e),e.mode=yA;break;case 2:e.mode=mE;break;case 3:n.msg="invalid block type",e.mode=ve}c>>>=2,u-=2;break;case gE:for(c>>>=u&7,u-=u&7;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){n.msg="invalid stored block lengths",e.mode=ve;break}e.length=c&65535,c=0,u=0,e.mode=dg;case dg:e.mode=pE;case pE:if(A=e.length,A){if(A>a&&(A=a),A>l&&(A=l),A===0)break e;Lr(i,r,s,A,o),a-=A,s+=A,l-=A,o+=A,e.length-=A;break}e.mode=Kn;break;case mE:for(;u<14;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.nlen=(c&31)+257,c>>>=5,u-=5,e.ndist=(c&31)+1,c>>>=5,u-=5,e.ncode=(c&15)+4,c>>>=4,u-=4,e.nlen>286||e.ndist>30){n.msg="too many length or distance symbols",e.mode=ve;break}e.have=0,e.mode=CE;case CE:for(;e.have<e.ncode;){for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.lens[T[e.have++]]=c&7,c>>>=3,u-=3}for(;e.have<19;)e.lens[T[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,k={bits:e.lenbits},D=ol(DP,e.lens,0,19,e.lencode,0,e.work,k),e.lenbits=k.bits,D){n.msg="invalid code lengths set",e.mode=ve;break}e.have=0,e.mode=wE;case wE:for(;e.have<e.nlen+e.ndist;){for(;C=e.lencode[c&(1<<e.lenbits)-1],m=C>>>24,y=C>>>16&255,I=C&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(I<16)c>>>=m,u-=m,e.lens[e.have++]=I;else{if(I===16){for(P=m+2;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c>>>=m,u-=m,e.have===0){n.msg="invalid bit length repeat",e.mode=ve;break}E=e.lens[e.have-1],A=3+(c&3),c>>>=2,u-=2}else if(I===17){for(P=m+3;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=m,u-=m,E=0,A=3+(c&7),c>>>=3,u-=3}else{for(P=m+7;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=m,u-=m,E=0,A=11+(c&127),c>>>=7,u-=7}if(e.have+A>e.nlen+e.ndist){n.msg="invalid bit length repeat",e.mode=ve;break}for(;A--;)e.lens[e.have++]=E}}if(e.mode===ve)break;if(e.lens[256]===0){n.msg="invalid code -- missing end-of-block",e.mode=ve;break}if(e.lenbits=9,k={bits:e.lenbits},D=ol($I,e.lens,0,e.nlen,e.lencode,0,e.work,k),e.lenbits=k.bits,D){n.msg="invalid literal/lengths set",e.mode=ve;break}if(e.distbits=6,e.distcode=e.distdyn,k={bits:e.distbits},D=ol(eE,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,k),e.distbits=k.bits,D){n.msg="invalid distances set",e.mode=ve;break}e.mode=yA;case yA:e.mode=IA;case IA:if(a>=6&&l>=258){n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,xP(n,h),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=e.hold,u=e.bits,e.mode===Kn&&(e.back=-1);break}for(e.back=0;C=e.lencode[c&(1<<e.lenbits)-1],m=C>>>24,y=C>>>16&255,I=C&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(y&&(y&240)===0){for(w=m,x=y,B=I;C=e.lencode[B+((c&(1<<w+x)-1)>>w)],m=C>>>24,y=C>>>16&255,I=C&65535,!(w+m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=w,u-=w,e.back+=w}if(c>>>=m,u-=m,e.back+=m,e.length=I,y===0){e.mode=xE;break}if(y&32){e.back=-1,e.mode=Kn;break}if(y&64){n.msg="invalid literal/length code",e.mode=ve;break}e.extra=y&15,e.mode=yE;case yE:if(e.extra){for(P=e.extra;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.length+=c&(1<<e.extra)-1,c>>>=e.extra,u-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=IE;case IE:for(;C=e.distcode[c&(1<<e.distbits)-1],m=C>>>24,y=C>>>16&255,I=C&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((y&240)===0){for(w=m,x=y,B=I;C=e.distcode[B+((c&(1<<w+x)-1)>>w)],m=C>>>24,y=C>>>16&255,I=C&65535,!(w+m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=w,u-=w,e.back+=w}if(c>>>=m,u-=m,e.back+=m,y&64){n.msg="invalid distance code",e.mode=ve;break}e.offset=I,e.extra=y&15,e.mode=EE;case EE:if(e.extra){for(P=e.extra;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.offset+=c&(1<<e.extra)-1,c>>>=e.extra,u-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){n.msg="invalid distance too far back",e.mode=ve;break}e.mode=bE;case bE:if(l===0)break e;if(A=h-l,e.offset>A){if(A=e.offset-A,A>e.whave&&e.sane){n.msg="invalid distance too far back",e.mode=ve;break}A>e.wnext?(A-=e.wnext,d=e.wsize-A):d=e.wnext-A,A>e.length&&(A=e.length),p=e.window}else p=i,d=o-e.offset,A=e.length;A>l&&(A=l),l-=A,e.length-=A;do i[o++]=p[d++];while(--A);e.length===0&&(e.mode=IA);break;case xE:if(l===0)break e;i[o++]=e.length,l--,e.mode=IA;break;case gg:if(e.wrap){for(;u<32;){if(a===0)break e;a--,c|=r[s++]<<u,u+=8}if(h-=l,n.total_out+=h,e.total+=h,h&&(n.adler=e.check=e.flags?Sn(e.check,i,h,o-h):fg(e.check,i,h,o-h)),h=l,(e.flags?c:QE(c))!==e.check){n.msg="incorrect data check",e.mode=ve;break}c=0,u=0}e.mode=BE;case BE:if(e.wrap&&e.flags){for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(e.total&4294967295)){n.msg="incorrect length check",e.mode=ve;break}c=0,u=0}e.mode=vE;case vE:D=kP;break e;case ve:D=nE;break e;case SE:return rE;case MP:default:return Vt}return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,(e.wsize||h!==n.avail_out&&e.mode<ve&&(e.mode<gg||t!==tE))&&kE(n,n.output,n.next_out,h-n.avail_out),f-=n.avail_in,h-=n.avail_out,n.total_in+=f,n.total_out+=h,e.total+=h,e.wrap&&h&&(n.adler=e.check=e.flags?Sn(e.check,i,h,n.next_out-h):fg(e.check,i,h,n.next_out-h)),n.data_type=e.bits+(e.last?64:0)+(e.mode===Kn?128:0)+(e.mode===yA||e.mode===dg?256:0),(f===0&&h===0||t===tE)&&D===_i&&(D=RP),D}function VP(n){if(!n||!n.state)return Vt;var t=n.state;return t.window&&(t.window=null),n.state=null,_i}function _P(n,t){var e;return!n||!n.state||(e=n.state,(e.wrap&2)===0)?Vt:(e.head=t,t.done=!1,_i)}function FE(n,t){var e=t.length,r,i,s;return!n||!n.state||(r=n.state,r.wrap!==0&&r.mode!==wA)?Vt:r.mode===wA&&(i=1,i=fg(i,t,e,0),i!==r.check)?nE:(s=kE(n,t,e,e),s?(r.mode=SE,rE):(r.havedict=1,_i))}const Cg={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function YP(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var wg=Object.prototype.toString;let RE=class Yp{constructor(t){if(!(this instanceof Yp))return new Yp(t);this.options=pP({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new YP,this.strm.avail_out=0;var r=GP(this.strm,e.windowBits);if(r!==Vi)throw new Error(Cg[r]);if(this.header=new IP,_P(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=qI(e.dictionary):wg.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=FE(this.strm,e.dictionary),r!==Vi)))throw new Error(Cg[r])}push(t,e){var r=this.strm,i=this.options.chunkSize,s=this.options.dictionary,o,a,l,c,u,f,h=!1;if(this.ended)return!1;a=e===~~e?e:e===!0?pA:VI,typeof t=="string"?r.input=CP(t):wg.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=mo(i),r.next_out=0,r.avail_out=i),o=HP(r,VI),o===hP&&s&&(typeof s=="string"?f=qI(s):wg.call(s)==="[object ArrayBuffer]"?f=new Uint8Array(s):f=s,o=FE(this.strm,f)),o===dP&&h===!0&&(o=Vi,h=!1),o!==mA&&o!==Vi)return this.onEnd(o),this.ended=!0,!1;r.next_out&&(r.avail_out===0||o===mA||r.avail_in===0&&(a===pA||a===cg))&&(this.options.to==="string"?(l=yP(r.output,r.next_out),c=r.next_out-l,u=wP(r.output,l),r.next_out=c,r.avail_out=i-c,c&&Lr(r.output,r.output,l,c,0),this.onData(u)):this.onData(_I(r.output,r.next_out))),r.avail_in===0&&r.avail_out===0&&(h=!0)}while((r.avail_in>0||r.avail_out===0)&&o!==mA);return o===mA&&(a=pA),a===pA?(o=VP(this.strm),this.onEnd(o),this.ended=!0,o===Vi):(a===cg&&(this.onEnd(Vi),r.avail_out=0),!0)}onData(t){this.chunks.push(t)}onEnd(t){t===Vi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=lg(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg}};function JP(n,t){var e=new RE(t);if(e.push(n,!0),e.err)throw e.msg||Cg[e.err];return e.result}function qP(n,t){return t=t||{},t.raw=!0,JP(n,t)}function KP(n){let t=0;for(const e of n)t+=e.length;return t}function ME(n,t){const e=new Uint8Array(t??KP(n));let r=0;for(const i of n)e.set(i,r),r+=i.length;return e}async function jP(n){try{let t,e=0,r;const i=[];let s=0;do{const o=n.subarray(e);if(r=new RE(void 0),{strm:t}=r,r.push(o,cg),r.err)throw new Error(r.msg);e+=t.next_in;const a=r.result;i.push(a),s+=a.length}while(t.avail_in);return ME(i,s)}catch(t){throw/incorrect header check/.exec(`${t}`)?new Error("problem decompressing block: incorrect gzip header check"):t}}class NE{constructor({filehandle:t,gziFilehandle:e}){X(this,"filehandle");X(this,"gzi");this.filehandle=t,this.gzi=new AP({filehandle:e})}async _readAndUncompressBlock(t,e){let r=e;r||(r=(await this.filehandle.stat()).size);const i=r-t,s=await this.filehandle.read(i,t);return jP(s)}async read(t,e){const r=await this.gzi.getRelevantBlocksForRead(t,e),i=[];for(let s=0;s<r.length-1;s+=1){const o=await this._readAndUncompressBlock(r[s][0],r[s+1][0]),[,a]=r[s],l=a>=e?0:e-a,c=Math.min(e+t,a+o.length)-a;l>=0&&l<o.length&&i.push(o.subarray(l,c))}return ME(i)}}function TE(n,t){return n.offset+n.lineBytes*Math.floor(t/n.lineLength)+t%n.lineLength}async function WP(n,t={}){const e=new TextDecoder("utf8");return Object.fromEntries(e.decode(await n.readFile(t)).split(/\r?\n/).map(r=>r.trim()).filter(r=>!!r).map(r=>r.split(" ")).map(r=>{var i;if((i=r[0])!=null&&i.startsWith(">"))throw new Error("found > in sequence name, might have supplied FASTA file for the FASTA index");return[r[0],{name:r[0],length:+r[1],start:0,end:+r[1],offset:+r[2],lineLength:+r[3],lineBytes:+r[4]}]}))}class PE{constructor({fasta:t,fai:e,path:r,faiPath:i}){if(t)this.fasta=t;else if(r)this.fasta=new ft(r);else throw new Error("Need to pass filehandle for fasta or path to localfile");if(e)this.fai=e;else if(i)this.fai=new ft(i);else if(r)this.fai=new ft(`${r}.fai`);else throw new Error("Need to pass filehandle for or path to localfile")}async _getIndexes(t){return this.indexes||(this.indexes=WP(this.fai,t).catch(e=>{throw this.indexes=void 0,e})),this.indexes}async getSequenceNames(t){return Object.keys(await this._getIndexes(t))}async getSequenceSizes(t){const e={},r=await this._getIndexes(t);for(const i of Object.values(r))e[i.name]=i.length;return e}async getSequenceSize(t,e){var i;return(i=(await this._getIndexes(e))[t])==null?void 0:i.length}async hasReferenceSequence(t,e){return!!(await this._getIndexes(e))[t]}async getResiduesByName(t,e,r,i){const s=(await this._getIndexes(i))[t];return s?this._fetchFromIndexEntry(s,e,r,i):void 0}async getSequence(t,e,r,i){return this.getResiduesByName(t,e,r,i)}async _fetchFromIndexEntry(t,e=0,r,i){let s=r;if(e<0)throw new TypeError("regionStart cannot be less than 0");if((s===void 0||s>t.length)&&(s=t.length),e>=s)return"";const o=TE(t,e),a=TE(t,s)-o,c=new TextDecoder("utf8").decode(await this.fasta.read(a,o,i)).replace(/\s+/g,"");if(/[^\x20-\x7e]/.test(c.slice(0,1e3)))throw new Error("Non-ASCII characters detected in sequence. The file may be gzip compressed. Use BgzipIndexedFasta for bgzip files, or decompress the file.");return c}}class XP extends PE{constructor({fasta:t,path:e,fai:r,faiPath:i,gzi:s,gziPath:o}){super({fasta:t,path:e,fai:r,faiPath:i}),t&&s?this.fasta=new NE({filehandle:t,gziFilehandle:s}):e&&o&&(this.fasta=new NE({filehandle:new ft(e),gziFilehandle:new ft(o)}))}}function LE(n){return n.split(">").filter(t=>/\S/.test(t)).map(t=>{const[e,...r]=t.split(`
700
- `),[i,...s]=e.split(" "),o=r.join("").replace(/\s/g,"");return{id:i,description:s.join(" "),sequence:o}})}class ZP{constructor({fasta:t,path:e}){if(t)this.fasta=t;else if(e)this.fasta=new ft(e);else throw new Error("Need to pass fasta or path");this.data=this.fasta.readFile().then(r=>{const s=new TextDecoder("utf8").decode(r);return LE(s)})}async fetch(t,e,r){const s=(await this.data).find(a=>a.id===t),o=r-e;if(!s)throw new Error(`no sequence with id ${t} exists`);return s.sequence.slice(e,o)}async getSequenceNames(){return(await this.data).map(e=>e.id)}}const $P=Object.freeze(Object.defineProperty({__proto__:null,BgzipIndexedFasta:XP,FetchableSmallFasta:ZP,IndexedFasta:PE,parseSmallFasta:LE},Symbol.toStringTag,{value:"Module"})),OE=BigInt(32);function e7(n,t,e){const r=+!!e,i=+!e;return BigInt(n.getInt32(t,e)*i+n.getInt32(t+4,e)*r)<<OE|BigInt(n.getUint32(t,e)*r+n.getUint32(t+4,e)*i)}function t7(n,t,e){const r=n.getUint32(t,e),i=n.getUint32(t+4,e),s=+!!e,o=+!e;return BigInt(r*o+i*s)<<OE|BigInt(r*s+i*o)}"getBigInt64"in DataView||(DataView.prototype.getBigInt64=function(n,t){return e7(this,n,t)}),"getBigUint64"in DataView||(DataView.prototype.getBigUint64=function(n,t){return t7(this,n,t)});var yg=function(n,t){return yg=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])},yg(n,t)};function Ig(n,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");yg(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function n7(n,t,e,r){function i(s){return s instanceof e?s:new e(function(o){o(s)})}return new(e||(e=Promise))(function(s,o){function a(u){try{c(r.next(u))}catch(f){o(f)}}function l(u){try{c(r.throw(u))}catch(f){o(f)}}function c(u){u.done?s(u.value):i(u.value).then(a,l)}c((r=r.apply(n,t||[])).next())})}function UE(n,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},r,i,s,o=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(c){return function(u){return l([c,u])}}function l(c){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(e=0)),e;)try{if(r=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++,i=c[1],c=[0];continue;case 7:c=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){e=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]<s[3])){e.label=c[1];break}if(c[0]===6&&e.label<s[1]){e.label=s[1],s=c;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(c);break}s[2]&&e.ops.pop(),e.trys.pop();continue}c=t.call(n,e)}catch(u){c=[6,u],i=0}finally{r=s=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}function al(n){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&n[t],r=0;if(e)return e.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&r>=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Eg(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),i,s=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)s.push(i.value)}catch(a){o={error:a}}finally{try{i&&!i.done&&(e=r.return)&&e.call(r)}finally{if(o)throw o.error}}return s}function bg(n,t,e){if(e||arguments.length===2)for(var r=0,i=t.length,s;r<i;r++)(s||!(r in t))&&(s||(s=Array.prototype.slice.call(t,0,r)),s[r]=t[r]);return n.concat(s||Array.prototype.slice.call(t))}function Io(n){return this instanceof Io?(this.v=n,this):new Io(n)}function r7(n,t,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=e.apply(n,t||[]),i,s=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(A){return function(d){return Promise.resolve(d).then(A,f)}}function a(A,d){r[A]&&(i[A]=function(p){return new Promise(function(C,m){s.push([A,p,C,m])>1||l(A,p)})},d&&(i[A]=d(i[A])))}function l(A,d){try{c(r[A](d))}catch(p){h(s[0][3],p)}}function c(A){A.value instanceof Io?Promise.resolve(A.value.v).then(u,f):h(s[0][2],A)}function u(A){l("next",A)}function f(A){l("throw",A)}function h(A,d){A(d),s.shift(),s.length&&l(s[0][0],s[0][1])}}function i7(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=n[Symbol.asyncIterator],e;return t?t.call(n):(n=typeof al=="function"?al(n):n[Symbol.iterator](),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(s){e[s]=n[s]&&function(o){return new Promise(function(a,l){o=n[s](o),i(a,l,o.done,o.value)})}}function i(s,o,a,l){Promise.resolve(l).then(function(c){s({value:c,done:a})},o)}}typeof SuppressedError=="function"&&SuppressedError;function Ve(n){return typeof n=="function"}function GE(n){var t=function(r){Error.call(r),r.stack=new Error().stack},e=n(t);return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var xg=GE(function(n){return function(e){n(this),this.message=e?e.length+` errors occurred during unsubscription:
701
- `+e.map(function(r,i){return i+1+") "+r.toString()}).join(`
702
- `):"",this.name="UnsubscriptionError",this.errors=e}});function zE(n,t){if(n){var e=n.indexOf(t);0<=e&&n.splice(e,1)}}var Bg=(function(){function n(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return n.prototype.unsubscribe=function(){var t,e,r,i,s;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var a=al(o),l=a.next();!l.done;l=a.next()){var c=l.value;c.remove(this)}}catch(p){t={error:p}}finally{try{l&&!l.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}else o.remove(this);var u=this.initialTeardown;if(Ve(u))try{u()}catch(p){s=p instanceof xg?p.errors:[p]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var h=al(f),A=h.next();!A.done;A=h.next()){var d=A.value;try{VE(d)}catch(p){s=s??[],p instanceof xg?s=bg(bg([],Eg(s)),Eg(p.errors)):s.push(p)}}}catch(p){r={error:p}}finally{try{A&&!A.done&&(i=h.return)&&i.call(h)}finally{if(r)throw r.error}}}if(s)throw new xg(s)}},n.prototype.add=function(t){var e;if(t&&t!==this)if(this.closed)VE(t);else{if(t instanceof n){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(e=this._finalizers)!==null&&e!==void 0?e:[]).push(t)}},n.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},n.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},n.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&zE(e,t)},n.prototype.remove=function(t){var e=this._finalizers;e&&zE(e,t),t instanceof n&&t._removeParent(this)},n.EMPTY=(function(){var t=new n;return t.closed=!0,t})(),n})();Bg.EMPTY;function HE(n){return n instanceof Bg||n&&"closed"in n&&Ve(n.remove)&&Ve(n.add)&&Ve(n.unsubscribe)}function VE(n){Ve(n)?n():n.unsubscribe()}var s7={Promise:void 0},o7={setTimeout:function(n,t){for(var e=[],r=2;r<arguments.length;r++)e[r-2]=arguments[r];return setTimeout.apply(void 0,bg([n,t],Eg(e)))},clearTimeout:function(n){return clearTimeout(n)},delegate:void 0};function _E(n){o7.setTimeout(function(){throw n})}function YE(){}function a7(n){n()}var vg=(function(n){Ig(t,n);function t(e){var r=n.call(this)||this;return r.isStopped=!1,e?(r.destination=e,HE(e)&&e.add(r)):r.destination=u7,r}return t.create=function(e,r,i){return new EA(e,r,i)},t.prototype.next=function(e){this.isStopped||this._next(e)},t.prototype.error=function(e){this.isStopped||(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,n.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t})(Bg),c7=(function(){function n(t){this.partialObserver=t}return n.prototype.next=function(t){var e=this.partialObserver;if(e.next)try{e.next(t)}catch(r){bA(r)}},n.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(r){bA(r)}else bA(t)},n.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(e){bA(e)}},n})(),EA=(function(n){Ig(t,n);function t(e,r,i){var s=n.call(this)||this,o;return Ve(e)||!e?o={next:e??void 0,error:r??void 0,complete:i??void 0}:o=e,s.destination=new c7(o),s}return t})(vg);function bA(n){_E(n)}function l7(n){throw n}var u7={closed:!0,next:YE,error:l7,complete:YE},Sg=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})();function JE(n){return n}function f7(n){return n.length===0?JE:n.length===1?n[0]:function(e){return n.reduce(function(r,i){return i(r)},e)}}var _t=(function(){function n(t){t&&(this._subscribe=t)}return n.prototype.lift=function(t){var e=new n;return e.source=this,e.operator=t,e},n.prototype.subscribe=function(t,e,r){var i=this,s=h7(t)?t:new EA(t,e,r);return a7(function(){var o=i,a=o.operator,l=o.source;s.add(a?a.call(s,l):l?i._subscribe(s):i._trySubscribe(s))}),s},n.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},n.prototype.forEach=function(t,e){var r=this;return e=qE(e),new e(function(i,s){var o=new EA({next:function(a){try{t(a)}catch(l){s(l),o.unsubscribe()}},error:s,complete:i});r.subscribe(o)})},n.prototype._subscribe=function(t){var e;return(e=this.source)===null||e===void 0?void 0:e.subscribe(t)},n.prototype[Sg]=function(){return this},n.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return f7(t)(this)},n.prototype.toPromise=function(t){var e=this;return t=qE(t),new t(function(r,i){var s;e.subscribe(function(o){return s=o},function(o){return i(o)},function(){return r(s)})})},n.create=function(t){return new n(t)},n})();function qE(n){var t;return(t=n??s7.Promise)!==null&&t!==void 0?t:Promise}function A7(n){return n&&Ve(n.next)&&Ve(n.error)&&Ve(n.complete)}function h7(n){return n&&n instanceof vg||A7(n)&&HE(n)}function d7(n){return Ve(n==null?void 0:n.lift)}function Eo(n){return function(t){if(d7(t))return t.lift(function(e){try{return n(e,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function cl(n,t,e,r,i){return new g7(n,t,e,r,i)}var g7=(function(n){Ig(t,n);function t(e,r,i,s,o,a){var l=n.call(this,e)||this;return l.onFinalize=o,l.shouldUnsubscribe=a,l._next=r?function(c){try{r(c)}catch(u){e.error(u)}}:n.prototype._next,l._error=s?function(c){try{s(c)}catch(u){e.error(u)}finally{this.unsubscribe()}}:n.prototype._error,l._complete=i?function(){try{i()}catch(c){e.error(c)}finally{this.unsubscribe()}}:n.prototype._complete,l}return t.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var r=this.closed;n.prototype.unsubscribe.call(this),!r&&((e=this.onFinalize)===null||e===void 0||e.call(this))}},t})(vg),p7=new _t(function(n){return n.complete()});function m7(n){return n&&Ve(n.schedule)}function KE(n){return n[n.length-1]}function C7(n){return m7(KE(n))?n.pop():void 0}function w7(n,t){return typeof KE(n)=="number"?n.pop():t}var jE=(function(n){return n&&typeof n.length=="number"&&typeof n!="function"});function WE(n){return Ve(n==null?void 0:n.then)}function XE(n){return Ve(n[Sg])}function ZE(n){return Symbol.asyncIterator&&Ve(n==null?void 0:n[Symbol.asyncIterator])}function $E(n){return new TypeError("You provided "+(n!==null&&typeof n=="object"?"an invalid object":"'"+n+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function y7(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var eb=y7();function tb(n){return Ve(n==null?void 0:n[eb])}function nb(n){return r7(this,arguments,function(){var e,r,i,s;return UE(this,function(o){switch(o.label){case 0:e=n.getReader(),o.label=1;case 1:o.trys.push([1,,9,10]),o.label=2;case 2:return[4,Io(e.read())];case 3:return r=o.sent(),i=r.value,s=r.done,s?[4,Io(void 0)]:[3,5];case 4:return[2,o.sent()];case 5:return[4,Io(i)];case 6:return[4,o.sent()];case 7:return o.sent(),[3,2];case 8:return[3,10];case 9:return e.releaseLock(),[7];case 10:return[2]}})})}function rb(n){return Ve(n==null?void 0:n.getReader)}function bo(n){if(n instanceof _t)return n;if(n!=null){if(XE(n))return I7(n);if(jE(n))return E7(n);if(WE(n))return b7(n);if(ZE(n))return ib(n);if(tb(n))return x7(n);if(rb(n))return B7(n)}throw $E(n)}function I7(n){return new _t(function(t){var e=n[Sg]();if(Ve(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function E7(n){return new _t(function(t){for(var e=0;e<n.length&&!t.closed;e++)t.next(n[e]);t.complete()})}function b7(n){return new _t(function(t){n.then(function(e){t.closed||(t.next(e),t.complete())},function(e){return t.error(e)}).then(null,_E)})}function x7(n){return new _t(function(t){var e,r;try{for(var i=al(n),s=i.next();!s.done;s=i.next()){var o=s.value;if(t.next(o),t.closed)return}}catch(a){e={error:a}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}t.complete()})}function ib(n){return new _t(function(t){v7(n,t).catch(function(e){return t.error(e)})})}function B7(n){return ib(nb(n))}function v7(n,t){var e,r,i,s;return n7(this,void 0,void 0,function(){var o,a;return UE(this,function(l){switch(l.label){case 0:l.trys.push([0,5,6,11]),e=i7(n),l.label=1;case 1:return[4,e.next()];case 2:if(r=l.sent(),!!r.done)return[3,4];if(o=r.value,t.next(o),t.closed)return[2];l.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=l.sent(),i={error:a},[3,11];case 6:return l.trys.push([6,,9,10]),r&&!r.done&&(s=e.return)?[4,s.call(e)]:[3,8];case 7:l.sent(),l.label=8;case 8:return[3,10];case 9:if(i)throw i.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function Yi(n,t,e,r,i){r===void 0&&(r=0),i===void 0&&(i=!1);var s=t.schedule(function(){e(),i?n.add(this.schedule(null,r)):this.unsubscribe()},r);if(n.add(s),!i)return s}function sb(n,t){return t===void 0&&(t=0),Eo(function(e,r){e.subscribe(cl(r,function(i){return Yi(r,n,function(){return r.next(i)},t)},function(){return Yi(r,n,function(){return r.complete()},t)},function(i){return Yi(r,n,function(){return r.error(i)},t)}))})}function ob(n,t){return t===void 0&&(t=0),Eo(function(e,r){r.add(n.schedule(function(){return e.subscribe(r)},t))})}function S7(n,t){return bo(n).pipe(ob(t),sb(t))}function Q7(n,t){return bo(n).pipe(ob(t),sb(t))}function D7(n,t){return new _t(function(e){var r=0;return t.schedule(function(){r===n.length?e.complete():(e.next(n[r++]),e.closed||this.schedule())})})}function k7(n,t){return new _t(function(e){var r;return Yi(e,t,function(){r=n[eb](),Yi(e,t,function(){var i,s,o;try{i=r.next(),s=i.value,o=i.done}catch(a){e.error(a);return}o?e.complete():e.next(s)},0,!0)}),function(){return Ve(r==null?void 0:r.return)&&r.return()}})}function ab(n,t){if(!n)throw new Error("Iterable cannot be null");return new _t(function(e){Yi(e,t,function(){var r=n[Symbol.asyncIterator]();Yi(e,t,function(){r.next().then(function(i){i.done?e.complete():e.next(i.value)})},0,!0)})})}function F7(n,t){return ab(nb(n),t)}function R7(n,t){if(n!=null){if(XE(n))return S7(n,t);if(jE(n))return D7(n,t);if(WE(n))return Q7(n,t);if(ZE(n))return ab(n,t);if(tb(n))return k7(n,t);if(rb(n))return F7(n,t)}throw $E(n)}function M7(n,t){return t?R7(n,t):bo(n)}var N7=GE(function(n){return function(){n(this),this.name="EmptyError",this.message="no elements in sequence"}});function cb(n,t){return new Promise(function(e,r){var i=new EA({next:function(s){e(s),i.unsubscribe()},error:r,complete:function(){r(new N7)}});n.subscribe(i)})}function lb(n,t){return Eo(function(e,r){var i=0;e.subscribe(cl(r,function(s){r.next(n.call(t,s,i++))}))})}function T7(n,t,e,r,i,s,o,a){var l=[],c=0,u=0,f=!1,h=function(){f&&!l.length&&!c&&t.complete()},A=function(p){return c<r?d(p):l.push(p)},d=function(p){c++;var C=!1;bo(e(p,u++)).subscribe(cl(t,function(m){t.next(m)},function(){C=!0},void 0,function(){if(C)try{c--;for(var m=function(){var y=l.shift();o||d(y)};l.length&&c<r;)m();h()}catch(y){t.error(y)}}))};return n.subscribe(cl(t,A,function(){f=!0,h()})),function(){}}function ub(n,t,e){return e===void 0&&(e=1/0),Ve(t)?ub(function(r,i){return lb(function(s,o){return t(r,s,i,o)})(bo(n(r,i)))},e):(typeof t=="number"&&(e=t),Eo(function(r,i){return T7(r,i,n,e)}))}function P7(n){return n===void 0&&(n=1/0),ub(JE,n)}function L7(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=C7(n),r=w7(n,1/0),i=n;return i.length?i.length===1?bo(i[0]):P7(r)(M7(i,e)):p7}function O7(n,t,e,r,i){return function(s,o){var a=e,l=t,c=0;s.subscribe(cl(o,function(u){var f=c++;l=a?n(l,u,f):(a=!0,u)},(function(){a&&o.next(l),o.complete()})))}}function fb(n,t){return Eo(O7(n,t,arguments.length>=2,!1,!0))}var U7=function(n,t){return n.push(t),n};function G7(){return Eo(function(n,t){fb(U7,[])(n).subscribe(t)})}class z7{}class H7{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(t=new z7){if(this.signal.aborted)throw new Error("cannot add a signal, already aborted!");this.signals.add(t),t.aborted?this.handleAborted(t):typeof t.addEventListener=="function"&&t.addEventListener("abort",()=>{this.handleAborted(t)})}handleAborted(t){this.signals.delete(t),this.signals.size===0&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}class V7{constructor(){this.callbacks=new Set}addCallback(t=()=>{}){this.callbacks.add(t),this.currentMessage&&t(this.currentMessage)}callback(t){this.currentMessage=t;for(const e of this.callbacks)e(t)}}class xo{constructor({fill:t,cache:e}){if(typeof t!="function")throw new TypeError("must pass a fill function");if(typeof e!="object")throw new TypeError("must pass a cache object");if(typeof e.get!="function"||typeof e.set!="function"||typeof e.delete!="function")throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=e,this.fillCallback=t}static isAbortException(t){return t.name==="AbortError"||t.code==="ERR_ABORTED"||t.message==="AbortError: aborted"||t.message==="Error: aborted"}evict(t,e){this.cache.get(t)===e&&this.cache.delete(t)}fill(t,e,r,i){const s=new H7,o=new V7;o.addCallback(i);const a={aborter:s,promise:this.fillCallback(e,s.signal,l=>{o.callback(l)}),settled:!1,statusReporter:o,get aborted(){return this.aborter.signal.aborted}};a.aborter.addSignal(r),a.aborter.signal.addEventListener("abort",()=>{a.settled||this.evict(t,a)}),a.promise.then(()=>{a.settled=!0},()=>{a.settled=!0,this.evict(t,a)}).catch(l=>{throw console.error(l),l}),this.cache.set(t,a)}static checkSinglePromise(t,e){function r(){if(e!=null&&e.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return t.then(i=>(r(),i),i=>{throw r(),i})}has(t){return this.cache.has(t)}get(t,e,r,i){if(!r&&e instanceof AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const s=this.cache.get(t);return s?s.aborted&&!s.settled?(this.evict(t,s),this.get(t,e,r,i)):s.settled?s.promise:(s.aborter.addSignal(r),s.statusReporter.addCallback(i),xo.checkSinglePromise(s.promise,r)):(this.fill(t,e,r,i),xo.checkSinglePromise(this.cache.get(t).promise,r))}delete(t){const e=this.cache.get(t);e&&(e.settled||e.aborter.abort(),this.cache.delete(t))}clear(){const t=this.cache.keys();let e=0;for(let r=t.next();!r.done;r=t.next())this.delete(r.value),e+=1;return e}}function _7(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Qg,Ab;function Y7(){if(Ab)return Qg;Ab=1;class n{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){this.cache.set(e,r),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){const r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){const r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(const[e]of this)yield e}*values(){for(const[,e]of this)yield e}*[Symbol.iterator](){for(const e of this.cache)yield e;for(const e of this.oldCache){const[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(const r of this.oldCache.keys())this.cache.has(r)||e++;return this._size+e}}return Qg=n,Qg}var J7=Y7();const hb=_7(J7);class Bo{constructor(t){X(this,"ranges");this.ranges=t}get min(){return this.ranges[0].min}get max(){return this.ranges.at(-1).max}contains(t){for(const e of this.ranges)if(e.min<=t&&e.max>=t)return!0;return!1}isContiguous(){return this.ranges.length>1}getRanges(){return this.ranges.map(t=>new Bo([{min:t.min,max:t.max}]))}toString(){return this.ranges.map(t=>`[${t.min}-${t.max}]`).join(",")}union(t){const e=[...this.getRanges(),...t.getRanges()].sort((s,o)=>s.min<o.min?-1:s.min>o.min?1:s.max<o.max?-1:o.max>s.max?1:0),r=[];let i=e[0];for(const s of e)s.min>i.max+1?(r.push(i),i=s):s.max>i.max&&(i=new Bo([{min:i.min,max:s.max}]));return r.push(i),r.length===1?r[0]:new Bo(r)}}function q7(n){return qP(n.subarray(2),void 0)}class K7 extends Error{constructor(e){super(e);X(this,"code");this.code="ERR_ABORTED"}}function j7(n){n.sort((i,s)=>i.offset-s.offset);const t=[];let e,r;for(const i of n)e&&r&&i.offset-r<=2e3?(e.length=e.length+i.length-r+i.offset,e.blocks.push(i)):t.push(e={blocks:[i],length:i.length,offset:i.offset}),r=e.offset+e.length;return t}function xA(n){if(n&&n.aborted)if(typeof DOMException>"u"){const t=new K7("aborted");throw t.code="ERR_ABORTED",t}else throw new DOMException("aborted","AbortError")}const Dg=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function kg(n,t,e,r){return n<r&&t>=e}class db{constructor(t,e,r,i,s){X(this,"bbi");X(this,"refsByName");X(this,"cirTreeOffset");X(this,"isCompressed");X(this,"blockType");X(this,"cirTreePromise");X(this,"featureCache",new xo({cache:new hb({maxSize:1e3}),fill:async({length:t,offset:e},r)=>this.bbi.read(t,e,{signal:r})}));if(this.bbi=t,this.refsByName=e,this.cirTreeOffset=r,this.isCompressed=i,this.blockType=s,!(r>=0))throw new Error("invalid cirTreeOffset!")}async readWigData(t,e,r,i,s){try{const o=this.refsByName[t];o===void 0&&i.complete();const a={chrId:o,start:e,end:r};this.cirTreePromise||(this.cirTreePromise=this.bbi.read(48,this.cirTreeOffset,s));const l=await this.cirTreePromise,u=new DataView(l.buffer).getUint32(4,!0);let f=[],h=0;const A=(m,y,I)=>{try{const x=m.subarray(y),B=new DataView(x.buffer,x.byteOffset,x.length);let E=0;const D=B.getUint8(E);E+=2;const R=B.getUint16(E,!0);if(E+=2,D===1){const k=[];for(let P=0;P<R;P++){const T=B.getUint32(E,!0);E+=4;const O=B.getUint32(E,!0);E+=4;const z=B.getUint32(E,!0);E+=4;const J=B.getUint32(E,!0);E+=4;const V=Number(B.getBigUint64(E,!0));E+=8;const q=Number(B.getBigUint64(E,!0));E+=8,k.push({startChrom:T,startBase:O,endBase:J,endChrom:z,blockOffset:V,blockSize:q,offset:E})}f=f.concat(k.filter(P=>d(P)).map(P=>({offset:P.blockOffset,length:P.blockSize})))}else if(D===0){const k=[];for(let T=0;T<R;T++){const O=B.getUint32(E,!0);E+=4;const z=B.getUint32(E,!0);E+=4;const J=B.getUint32(E,!0);E+=4;const V=B.getUint32(E,!0);E+=4;const q=Number(B.getBigUint64(E,!0));E+=8,k.push({startChrom:O,startBase:z,endChrom:J,endBase:V,blockOffset:q,offset:E})}const P=k.filter(T=>d(T)).map(T=>T.blockOffset);P.length>0&&C(P,I+1)}}catch(w){i.error(w)}},d=m=>{const{startChrom:y,startBase:I,endChrom:w,endBase:x}=m;return(y<o||y===o&&I<=r)&&(w>o||w===o&&x>=e)},p=async(m,y,I)=>{try{const w=y.max-y.min,x=y.min,B=await this.featureCache.get(`${w}_${x}`,{length:w,offset:x},s==null?void 0:s.signal);for(const E of m)y.contains(E)&&(A(B,E-x,I),h-=1,h===0&&this.readFeatures(i,f,{...s,request:a}).catch(D=>{i.error(D)}))}catch(w){i.error(w)}},C=(m,y)=>{try{h+=m.length;const I=4+u*32;let w=new Bo([{min:m[0],max:m[0]+I}]);for(let x=1;x<m.length;x+=1){const B=new Bo([{min:m[x],max:m[x]+I}]);w=w.union(B)}w.getRanges().map(x=>p(m,x,y))}catch(I){i.error(I)}};C([this.cirTreeOffset+48],1);return}catch(o){i.error(o)}}parseSummaryBlock(t,e,r){const i=[];let s=e;const o=new DataView(t.buffer,t.byteOffset,t.length);for(;s<t.byteLength;){const a=o.getUint32(s,!0);s+=4;const l=o.getUint32(s,!0);s+=4;const c=o.getUint32(s,!0);s+=4;const u=o.getUint32(s,!0);s+=4;const f=o.getFloat32(s,!0);s+=4;const h=o.getFloat32(s,!0);s+=4;const A=o.getFloat32(s,!0);s+=4,s+=4,(!r||a===r.chrId&&kg(l,c,r.start,r.end))&&i.push({start:l,end:c,maxScore:h,minScore:f,summary:!0,score:A/(u||1)})}return i}parseBigBedBlock(t,e,r,i){const s=[];let o=e;const a=t,l=new DataView(a.buffer,a.byteOffset,a.length);for(;o<t.byteLength;){const c=o,u=l.getUint32(o,!0);o+=4;const f=l.getInt32(o,!0);o+=4;const h=l.getInt32(o,!0);o+=4;let A=o;for(;A<t.length&&t[A]!==0;A++);const d=t.subarray(o,A),p=(Dg==null?void 0:Dg.decode(d))??d.toString();o=A+1,s.push({chromId:u,start:f,end:h,rest:p,uniqueId:`bb-${r+c}`})}return i?s.filter(c=>kg(c.start,c.end,i.start,i.end)):s}parseBigWigBlock(t,e,r){const i=t.subarray(e),s=new DataView(i.buffer,i.byteOffset,i.length);let o=0;o+=4;const a=s.getInt32(o,!0);o+=8;const l=s.getUint32(o,!0);o+=4;const c=s.getUint32(o,!0);o+=4;const u=s.getUint8(o);o+=2;const f=s.getUint16(o,!0);o+=2;const h=new Array(f);switch(u){case 1:{for(let A=0;A<f;A++){const d=s.getInt32(o,!0);o+=4;const p=s.getInt32(o,!0);o+=4;const C=s.getFloat32(o,!0);o+=4,h[A]={start:d,end:p,score:C}}break}case 2:{for(let A=0;A<f;A++){const d=s.getInt32(o,!0);o+=4;const p=s.getFloat32(o,!0);o+=4,h[A]={score:p,start:d,end:d+c}}break}case 3:{for(let A=0;A<f;A++){const d=s.getFloat32(o,!0);o+=4;const p=a+A*l;h[A]={score:d,start:p,end:p+c}}break}}return r?h.filter(A=>kg(A.start,A.end,r.start,r.end)):h}async readFeatures(t,e,r={}){try{const{blockType:i,isCompressed:s}=this,{signal:o,request:a}=r,l=j7(e);xA(o),await Promise.all(l.map(async c=>{xA(o);const{length:u,offset:f}=c,h=await this.featureCache.get(`${u}_${f}`,c,o);for(const A of c.blocks){xA(o);let d=h.subarray(A.offset-c.offset);switch(s&&(d=q7(d)),xA(o),i){case"summary":{t.next(this.parseSummaryBlock(d,0,a));break}case"bigwig":{t.next(this.parseBigWigBlock(d,0,a));break}case"bigbed":{t.next(this.parseBigBedBlock(d,0,A.offset*256,a));break}default:console.warn(`Don't know what to do with ${i}`)}}})),t.complete()}catch(i){t.error(i)}}}const W7=-2003829722,gb=-2021002517;function vo(n){return new DataView(n.buffer,n.byteOffset,n.length)}class pb{constructor(t){X(this,"bbi");X(this,"headerP");X(this,"renameRefSeqs");const{filehandle:e,renameRefSeqs:r=o=>o,path:i,url:s}=t;if(this.renameRefSeqs=r,e)this.bbi=e;else if(s)this.bbi=new vn(s);else if(i)this.bbi=new ft(i);else throw new Error("no file given")}getHeader(t){return this.headerP||(this.headerP=this._getHeader(t).catch(e=>{throw this.headerP=void 0,e})),this.headerP}async _getHeader(t){const e=await this._getMainHeader(t),r=await this._readChromTree(e,t);return{...e,...r}}async _getMainHeader(t,e=2e3){const r=await this.bbi.read(e,0,t),i=vo(r),s=i.getInt32(0,!0);if(s!==W7&&s!==gb)throw new Error("not a BigWig/BigBed file");let o=0;const a=i.getInt32(o,!0);o+=4;const l=i.getUint16(o,!0);o+=2;const c=i.getUint16(o,!0);o+=2;const u=Number(i.getBigUint64(o,!0));o+=8;const f=Number(i.getBigUint64(o,!0));o+=8;const h=Number(i.getBigUint64(o,!0));o+=8;const A=i.getUint16(o,!0);o+=2;const d=i.getUint16(o,!0);o+=2;const p=Number(i.getBigUint64(o,!0));o+=8;const C=Number(i.getBigUint64(o,!0));o+=8;const m=i.getUint32(o,!0);o+=4;const y=Number(i.getBigUint64(o,!0));o+=8;const I=[];for(let E=0;E<c;E++){const D=i.getUint32(o,!0);o+=4;const R=i.getUint32(o,!0);o+=4;const k=Number(i.getBigUint64(o,!0));o+=8;const P=Number(i.getBigUint64(o,!0));o+=8,I.push({reductionLevel:D,reserved:R,dataOffset:k,indexOffset:P})}const w=a===gb?"bigbed":"bigwig";if(p>e||C>e-40)return this._getMainHeader(t,e*2);let x;if(C){const E=r.subarray(C);let D=0;const R=vo(E),k=Number(R.getBigUint64(D,!0));D+=8;const P=R.getFloat64(D,!0);D+=8;const T=R.getFloat64(D,!0);D+=8;const O=R.getFloat64(D,!0);D+=8;const z=R.getFloat64(D,!0);D+=8,x={scoreMin:P,scoreMax:T,scoreSum:O,scoreSumSquares:z,basesCovered:k}}else throw new Error("no stats");const B=new TextDecoder("utf8");return{zoomLevels:I,magic:a,extHeaderOffset:y,numZoomLevels:c,fieldCount:A,totalSummary:x,definedFieldCount:d,uncompressBufSize:m,asOffset:p,chromTreeOffset:u,totalSummaryOffset:C,unzoomedDataOffset:f,unzoomedIndexOffset:h,fileType:w,version:l,autoSql:p?B.decode(r.subarray(p,r.indexOf(0,p))):""}}async _readChromTree(t,e){const r=[],i={},s=t.chromTreeOffset,o=vo(await this.bbi.read(32,s,e));let a=0;a+=4,a+=4;const l=o.getUint32(a,!0);a+=4;const c=o.getUint32(a,!0);a+=4,a+=8;const u=new TextDecoder("utf8"),f=async h=>{const A=await this.bbi.read(4,h),d=vo(A);let p=0;const C=d.getUint8(p);p+=1,p+=1;const m=d.getUint16(p,!0);if(p+=2,C){const y=await this.bbi.read(m*(l+c),h+p),I=vo(y);p=0;for(let w=0;w<m;w++){const x=u.decode(y.subarray(p,p+l)).replaceAll("\0","");p+=l;const B=I.getUint32(p,!0);p+=4;const E=I.getUint32(p,!0);p+=4,i[this.renameRefSeqs(x)]=B,r[B]={name:x,id:B,length:E}}}else{const y=[],I=vo(await this.bbi.read(m*(l+8),h+p));p=0;for(let w=0;w<m;w++){p+=l;const x=Number(I.getBigUint64(p,!0));p+=8,y.push(f(x))}await Promise.all(y)}};return await f(s+32),{refsByName:i,refsByNumber:r}}async getUnzoomedView(t){const{unzoomedIndexOffset:e,refsByName:r,uncompressBufSize:i,fileType:s}=await this.getHeader(t);return new db(this.bbi,r,e,i>0,s)}async getFeatureStream(t,e,r,i){await this.getHeader(i);const s=this.renameRefSeqs(t);let o;const{basesPerSpan:a,scale:l}=i||{};return a?o=await this.getView(1/a,i):l?o=await this.getView(l,i):o=await this.getView(1,i),new _t(c=>{o.readWigData(s,e,r,c,i).catch(u=>{c.error(u)})})}async getFeatures(t,e,r,i){const s=await this.getFeatureStream(t,e,r,i);return(await cb(s.pipe(G7()))).flat()}}class X7 extends pb{async getView(t,e){const{zoomLevels:r,refsByName:i,uncompressBufSize:s}=await this.getHeader(e),o=1/t,a=r.length-1;for(let l=a;l>=0;l-=1){const c=r[l];if(c&&c.reductionLevel<=2*o)return new db(this.bbi,i,c.indexOffset,s>0,"summary")}return this.getUnzoomedView(e)}}function Z7(n){return n.filter(t=>!!t)}class $7 extends pb{constructor(){super(...arguments);X(this,"readIndicesCache",new xo({cache:new hb({maxSize:1}),fill:(e,r)=>this._readIndices({...e,signal:r})}))}readIndices(e={}){const{signal:r,...i}=e;return this.readIndicesCache.get(JSON.stringify(i),e,r)}async getView(e,r){return this.getUnzoomedView(r)}async _readIndices(e){const{extHeaderOffset:r}=await this.getHeader(e),i=await this.bbi.read(64,r),s=new DataView(i.buffer,i.byteOffset,i.length);let o=0;o+=2;const a=s.getUint16(o,!0);o+=2;const l=Number(s.getBigUint64(o,!0));if(o+=8,a===0)return[];const c=20,u=c*a,f=await this.bbi.read(u,l),h=[];for(let A=0;A<a;A+=1){const d=f.subarray(A*c),p=new DataView(d.buffer,d.byteOffset,d.length);let C=0;const m=p.getInt16(C,!0);C+=2;const y=p.getInt16(C,!0);C+=2;const I=Number(p.getBigUint64(C,!0));C+=12;const w=p.getInt16(C,!0);h.push({type:m,fieldcount:y,offset:I,field:w})}return h}async searchExtraIndexBlocks(e,r={}){const i=await this.readIndices(r);if(i.length===0)return[];const s=new TextDecoder("utf8"),o=i.map(async a=>{const{offset:l,field:c}=a,u=await this.bbi.read(32,l,r),f=new DataView(u.buffer,u.byteOffset,u.length);let h=0;h+=4;const A=f.getInt32(h,!0);h+=4;const d=f.getInt32(h,!0);h+=4;const p=f.getInt32(h,!0);h+=4,h+=8;const C=async m=>{const y=m,I=4+A*(d+p),x=await this.bbi.read(I,y,r),B=new DataView(x.buffer,x.byteOffset,x.length);let E=0;const D=B.getInt8(E);E+=2;const R=B.getInt16(E,!0);E+=2;const k=[];if(D===0){const P=[];for(let O=0;O<R;O++){const z=s.decode(x.subarray(E,E+d)).replaceAll("\0","");E+=d;const J=Number(B.getBigUint64(E,!0));E+=8,P.push({key:z,offset:J})}let T=0;for(const{key:O,offset:z}of P){if(e.localeCompare(O)<0&&T)return C(T);T=z}return C(T)}else if(D===1){for(let P=0;P<R;P++){const T=s.decode(x.subarray(E,E+d)).replaceAll("\0","");E+=d;const O=Number(B.getBigUint64(E,!0));E+=8;const z=B.getUint32(E,!0);E+=4;const J=B.getUint32(E,!0);E+=4,k.push({key:T,offset:O,length:z,reserved:J})}for(const P of k)if(P.key===e)return{...P,field:c};return}};return C(l+32)});return Z7(await Promise.all(o))}async searchExtraIndex(e,r={}){const i=await this.searchExtraIndexBlocks(e,r);if(i.length===0)return[];const s=await this.getUnzoomedView(r),o=i.map(l=>new _t(c=>{s.readFeatures(c,[l],r).catch(u=>{c.error(u)})}).pipe(fb((c,u)=>c.concat(u)),lb(c=>{for(const u of c)u.field=l.field;return c})));return(await cb(L7(...o))).filter(l=>{var c;return((c=l.rest)==null?void 0:c.split(" ")[(l.field||0)-3])===e})}}const mb=Object.freeze(Object.defineProperty({__proto__:null,BigBed:$7,BigWig:X7},Symbol.toStringTag,{value:"Module"}));function eL(n,t){function e(){this.constructor=n}e.prototype=t.prototype,n.prototype=new e}function So(n,t,e,r){this.message=n,this.expected=t,this.found=e,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,So)}eL(So,Error),So.buildMessage=function(n,t){var e={literal:function(c){return'"'+i(c.text)+'"'},class:function(c){var u="",f;for(f=0;f<c.parts.length;f++)u+=c.parts[f]instanceof Array?s(c.parts[f][0])+"-"+s(c.parts[f][1]):s(c.parts[f]);return"["+(c.inverted?"^":"")+u+"]"},any:function(c){return"any character"},end:function(c){return"end of input"},other:function(c){return c.description}};function r(c){return c.charCodeAt(0).toString(16).toUpperCase()}function i(c){return c.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function s(c){return c.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function o(c){return e[c.type](c)}function a(c){var u=new Array(c.length),f,h;for(f=0;f<c.length;f++)u[f]=o(c[f]);if(u.sort(),u.length>0){for(f=1,h=1;f<u.length;f++)u[f-1]!==u[f]&&(u[h]=u[f],h++);u.length=h}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}function l(c){return c?'"'+i(c)+'"':"end of input"}return"Expected "+a(n)+" but "+l(t)+" found."};function tL(n,t){t=t!==void 0?t:{};var e={},r={declaration:sB},i=sB,s="(",o=pe("(",!1),a=")",l=pe(")",!1),c=function(b,M,U,H){return{type:b,name:M,comment:U,fields:H}},u="simple",f=pe("simple",!1),h="object",A=pe("object",!1),d="table",p=pe("table",!1),C="auto",m=pe("auto",!1),y="primary",I=pe("primary",!1),w="index",x=pe("index",!1),B="unique",E=pe("unique",!1),D=function(b,M){return M},R=function(b,M){return b.name&&M.unshift(b),M},k="#",P=pe("#",!1),T=";",O=pe(";",!1),z=function(b,M,U){return{type:b,name:M,comment:U}},J="[",V=pe("[",!1),q="]",oe=pe("]",!1),se=function(b,M,U,H){return{type:b,size:M,name:U,comment:H}},Ae=function(b,M,U,H){return{type:b,vals:M,name:U,comment:H}},ht=",",Lt=pe(",",!1),Mn=function(b,M){return M.unshift(b),M},Ms="int",Iu=pe("int",!1),Ta="uint",lr=pe("uint",!1),Ns="short",_=pe("short",!1),ee="ushort",ae=pe("ushort",!1),L="byte",dt=pe("byte",!1),ge="ubyte",bt=pe("ubyte",!1),gt="float",ur=pe("float",!1),Eu="char",sU=pe("char",!1),zx="string",oU=pe("string",!1),Hx="lstring",aU=pe("lstring",!1),Vx="enum",cU=pe("enum",!1),_x="double",lU=pe("double",!1),Yx="bigint",uU=pe("bigint",!1),Jx="set",fU=pe("set",!1),AU=function(b,M){return b+" "+M},hU=/^[a-zA-Z_]/,dU=bu([["a","z"],["A","Z"],"_"],!1,!1),qx=/^[a-zA-Z0-9_]/,Kx=bu([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),gU=function(b){return tB()},jx=/^[^\n\r]/,Wx=bu([`
703
- `,"\r"],!0,!1),pU=function(b){return b.join("").replace(/^"/,"").replace(/"$/,"")},mU=nB("integer"),Xx=/^[0-9]/,Zx=bu([["0","9"]],!1,!1),CU=function(){return parseInt(tB(),10)},wU=nB("whitespace"),$x=/^[ \t\n\r]/,eB=bu([" "," ",`
704
- `,"\r"],!1,!1),S=0,xt=0,eh=[{line:1,column:1}],Nn=0,ap=[],W=0,th;if("startRule"in t){if(!(t.startRule in r))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');i=r[t.startRule]}function tB(){return n.substring(xt,S)}function pe(b,M){return{type:"literal",text:b,ignoreCase:M}}function bu(b,M,U){return{type:"class",parts:b,inverted:M,ignoreCase:U}}function yU(){return{type:"end"}}function nB(b){return{type:"other",description:b}}function rB(b){var M=eh[b],U;if(M)return M;for(U=b-1;!eh[U];)U--;for(M=eh[U],M={line:M.line,column:M.column};U<b;)n.charCodeAt(U)===10?(M.line++,M.column=1):M.column++,U++;return eh[b]=M,M}function iB(b,M){var U=rB(b),H=rB(M);return{start:{offset:b,line:U.line,column:U.column},end:{offset:M,line:H.line,column:H.column}}}function Z(b){S<Nn||(S>Nn&&(Nn=S,ap=[]),ap.push(b))}function IU(b,M,U){return new So(So.buildMessage(b,M),b,M,U)}function sB(){var b,M,U,H,j,Ee,De,Zt,ai,fr,ci,Ar,li,hr;return b=S,M=ce(),M!==e?(U=oB(),U!==e?(H=ce(),H!==e?(j=aB(),j!==e?(Ee=ce(),Ee!==e?(De=nh(),De!==e?(Zt=ce(),Zt!==e?(n.charCodeAt(S)===40?(ai=s,S++):(ai=e,W===0&&Z(o)),ai!==e?(fr=ce(),fr!==e?(ci=EU(),ci!==e?(Ar=ce(),Ar!==e?(n.charCodeAt(S)===41?(li=a,S++):(li=e,W===0&&Z(l)),li!==e?(hr=ce(),hr!==e?(xt=b,M=c(U,j,De,ci),b=M):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e),b}function oB(){var b;return n.substr(S,6)===u?(b=u,S+=6):(b=e,W===0&&Z(f)),b===e&&(n.substr(S,6)===h?(b=h,S+=6):(b=e,W===0&&Z(A)),b===e&&(n.substr(S,5)===d?(b=d,S+=5):(b=e,W===0&&Z(p)))),b}function aB(){var b,M,U,H;return b=hn(),b===e&&(b=S,M=hn(),M!==e?(U=cB(),U!==e?(M=[M,U],b=M):(S=b,b=e)):(S=b,b=e),b===e&&(b=S,M=hn(),M!==e?(n.substr(S,4)===C?(U=C,S+=4):(U=e,W===0&&Z(m)),U!==e?(M=[M,U],b=M):(S=b,b=e)):(S=b,b=e),b===e&&(b=S,M=hn(),M!==e?(U=cB(),U!==e?(n.substr(S,4)===C?(H=C,S+=4):(H=e,W===0&&Z(m)),H!==e?(M=[M,U,H],b=M):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)))),b}function cB(){var b;return n.substr(S,7)===y?(b=y,S+=7):(b=e,W===0&&Z(I)),b===e&&(n.substr(S,5)===w?(b=w,S+=5):(b=e,W===0&&Z(x)),b===e&&(n.substr(S,6)===B?(b=B,S+=6):(b=e,W===0&&Z(E)))),b}function nh(){var b;return b=lB(),b===e&&(b=ce()),b}function EU(){var b,M,U,H,j,Ee,De;if(b=S,M=cp(),M!==e)if(U=ce(),U!==e){for(H=[],j=S,Ee=ce(),Ee!==e?(De=cp(),De!==e?(xt=j,Ee=D(M,De),j=Ee):(S=j,j=e)):(S=j,j=e);j!==e;)H.push(j),j=S,Ee=ce(),Ee!==e?(De=cp(),De!==e?(xt=j,Ee=D(M,De),j=Ee):(S=j,j=e)):(S=j,j=e);H!==e?(j=ce(),j!==e?(xt=b,M=R(M,H),b=M):(S=b,b=e)):(S=b,b=e)}else S=b,b=e;else S=b,b=e;return b}function bU(){var b;return n.charCodeAt(S)===35?(b=k,S++):(b=e,W===0&&Z(P)),b}function xU(){var b,M,U,H,j;return b=S,M=ce(),M!==e?(U=bU(),U!==e?(H=lB(),H!==e?(j=ce(),j!==e?(M=[M,U,H,j],b=M):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e),b}function cp(){var b,M,U,H,j,Ee,De,Zt,ai,fr,ci,Ar,li,hr;return b=S,M=lp(),M!==e?(U=ce(),U!==e?(H=hn(),H!==e?(j=ce(),j!==e?(n.charCodeAt(S)===59?(Ee=T,S++):(Ee=e,W===0&&Z(O)),Ee!==e?(De=ce(),De!==e?(Zt=nh(),Zt!==e?(xt=b,M=z(M,H,Zt),b=M):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e),b===e&&(b=S,M=lp(),M!==e?(U=ce(),U!==e?(n.charCodeAt(S)===91?(H=J,S++):(H=e,W===0&&Z(V)),H!==e?(j=ce(),j!==e?(Ee=vU(),Ee!==e?(De=ce(),De!==e?(n.charCodeAt(S)===93?(Zt=q,S++):(Zt=e,W===0&&Z(oe)),Zt!==e?(ai=ce(),ai!==e?(fr=hn(),fr!==e?(ci=ce(),ci!==e?(n.charCodeAt(S)===59?(Ar=T,S++):(Ar=e,W===0&&Z(O)),Ar!==e?(li=ce(),li!==e?(hr=nh(),hr!==e?(xt=b,M=se(M,Ee,fr,hr),b=M):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e),b===e&&(b=S,M=lp(),M!==e?(U=ce(),U!==e?(n.charCodeAt(S)===40?(H=s,S++):(H=e,W===0&&Z(o)),H!==e?(j=ce(),j!==e?(Ee=BU(),Ee!==e?(De=ce(),De!==e?(n.charCodeAt(S)===41?(Zt=a,S++):(Zt=e,W===0&&Z(l)),Zt!==e?(ai=ce(),ai!==e?(fr=hn(),fr!==e?(ci=ce(),ci!==e?(n.charCodeAt(S)===59?(Ar=T,S++):(Ar=e,W===0&&Z(O)),Ar!==e?(li=ce(),li!==e?(hr=nh(),hr!==e?(xt=b,M=Ae(M,Ee,fr,hr),b=M):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e)):(S=b,b=e),b===e&&(b=xU()))),b}function BU(){var b,M,U,H,j,Ee,De;if(b=S,M=hn(),M!==e){for(U=[],H=S,n.charCodeAt(S)===44?(j=ht,S++):(j=e,W===0&&Z(Lt)),j!==e?(Ee=ce(),Ee!==e?(De=hn(),De!==e?(xt=H,j=D(M,De),H=j):(S=H,H=e)):(S=H,H=e)):(S=H,H=e);H!==e;)U.push(H),H=S,n.charCodeAt(S)===44?(j=ht,S++):(j=e,W===0&&Z(Lt)),j!==e?(Ee=ce(),Ee!==e?(De=hn(),De!==e?(xt=H,j=D(M,De),H=j):(S=H,H=e)):(S=H,H=e)):(S=H,H=e);U!==e?(xt=b,M=Mn(M,U),b=M):(S=b,b=e)}else S=b,b=e;return b}function lp(){var b,M,U,H;return n.substr(S,3)===Ms?(b=Ms,S+=3):(b=e,W===0&&Z(Iu)),b===e&&(n.substr(S,4)===Ta?(b=Ta,S+=4):(b=e,W===0&&Z(lr)),b===e&&(n.substr(S,5)===Ns?(b=Ns,S+=5):(b=e,W===0&&Z(_)),b===e&&(n.substr(S,6)===ee?(b=ee,S+=6):(b=e,W===0&&Z(ae)),b===e&&(n.substr(S,4)===L?(b=L,S+=4):(b=e,W===0&&Z(dt)),b===e&&(n.substr(S,5)===ge?(b=ge,S+=5):(b=e,W===0&&Z(bt)),b===e&&(n.substr(S,5)===gt?(b=gt,S+=5):(b=e,W===0&&Z(ur)),b===e&&(n.substr(S,4)===Eu?(b=Eu,S+=4):(b=e,W===0&&Z(sU)),b===e&&(n.substr(S,6)===zx?(b=zx,S+=6):(b=e,W===0&&Z(oU)),b===e&&(n.substr(S,7)===Hx?(b=Hx,S+=7):(b=e,W===0&&Z(aU)),b===e&&(n.substr(S,4)===Vx?(b=Vx,S+=4):(b=e,W===0&&Z(cU)),b===e&&(n.substr(S,6)===_x?(b=_x,S+=6):(b=e,W===0&&Z(lU)),b===e&&(n.substr(S,6)===Yx?(b=Yx,S+=6):(b=e,W===0&&Z(uU)),b===e&&(n.substr(S,3)===Jx?(b=Jx,S+=3):(b=e,W===0&&Z(fU)),b===e&&(b=S,M=oB(),M!==e?(U=ce(),U!==e?(H=aB(),H!==e?(xt=b,M=AU(M,H),b=M):(S=b,b=e)):(S=b,b=e)):(S=b,b=e))))))))))))))),b}function vU(){var b;return b=SU(),b===e&&(b=hn()),b}function hn(){var b,M,U,H,j;if(b=S,M=S,hU.test(n.charAt(S))?(U=n.charAt(S),S++):(U=e,W===0&&Z(dU)),U!==e){for(H=[],qx.test(n.charAt(S))?(j=n.charAt(S),S++):(j=e,W===0&&Z(Kx));j!==e;)H.push(j),qx.test(n.charAt(S))?(j=n.charAt(S),S++):(j=e,W===0&&Z(Kx));H!==e?(U=[U,H],M=U):(S=M,M=e)}else S=M,M=e;return M!==e&&(xt=b,M=gU()),b=M,b}function lB(){var b,M,U;for(b=S,M=[],jx.test(n.charAt(S))?(U=n.charAt(S),S++):(U=e,W===0&&Z(Wx));U!==e;)M.push(U),jx.test(n.charAt(S))?(U=n.charAt(S),S++):(U=e,W===0&&Z(Wx));return M!==e&&(xt=b,M=pU(M)),b=M,b}function SU(){var b,M,U,H;if(W++,b=S,M=ce(),M!==e){if(U=[],Xx.test(n.charAt(S))?(H=n.charAt(S),S++):(H=e,W===0&&Z(Zx)),H!==e)for(;H!==e;)U.push(H),Xx.test(n.charAt(S))?(H=n.charAt(S),S++):(H=e,W===0&&Z(Zx));else U=e;U!==e?(xt=b,M=CU(),b=M):(S=b,b=e)}else S=b,b=e;return W--,b===e&&(M=e,W===0&&Z(mU)),b}function ce(){var b,M;for(W++,b=[],$x.test(n.charAt(S))?(M=n.charAt(S),S++):(M=e,W===0&&Z(eB));M!==e;)b.push(M),$x.test(n.charAt(S))?(M=n.charAt(S),S++):(M=e,W===0&&Z(eB));return W--,b===e&&(M=e,W===0&&Z(wU)),b}if(th=i(),th!==e&&S===n.length)return th;throw th!==e&&S<n.length&&Z(yU()),IU(ap,Nn<n.length?n.charAt(Nn):null,Nn<n.length?iB(Nn,Nn+1):iB(Nn,Nn))}const Cb={SyntaxError:So,parse:tL},Fg=Object.fromEntries(Object.entries(Object.freeze(Object.defineProperty({__proto__:null,bigChain:`table bigChain
657
+ `:"";return ce`${d}${h}`}class js extends bm{#e=new Map;constructor(e,t,r,i,s,o){super(e,t,r,i,s,o),this.spec=e}async initializeChildren(){}getNextAutoName(e){const t=this.#e.get(e)??0;return this.#e.set(e,t+1),e+t}*[Symbol.iterator](){}visit(e){let t;try{t=e(this)}catch(r){throw r.view=this,r}if(t===Ln)return t;if(t!==Dt){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Ln)return i}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){let t=this;for(let r=0;r<e.length;r++){if(!(t instanceof js))return;const i=t.#t(e[r]);if(!i)return;if(r===e.length-1)return i;t=i}}#t(e){for(const t of this)if(t.name===e)return t}findDescendantByName(e){let t;return this.visit(r=>{if(r.name==e)return t=r,Ln}),t}getDefaultResolution(e,t){return"shared"}}function oR(n){$4(n),e8(n)}function i1(n){n.getDescendants().forEach(e=>e.configureViewOpacity())}class s1{constructor(e,t){this.container=e,this.options=t}async addChildSpec(e,t){const{specs:r,insertAt:i}=this.options.getChildSpecs(),s=t??r.length,o=this.options.defaultName?.(s,e)??this.container.getNextAutoName("child"),a=await this.container.context.createOrImportView(e,this.container,this.container,o);i(s,e);const l=this.options.insertView(a,s);this.options.prepareView&&await this.options.prepareView(a,s,l),i1(a);const c=h=>h.isConfiguredVisible(),{dataSources:u,graphicsPromises:f}=bf(a,this.container.context.dataFlow,c);return await Ef(a,u),await gf(f),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow()),a}async removeChildAt(e){const{removeAt:t}=this.options.getChildSpecs();this.options.removeView(e),t(e),this.options.afterRemove&&await this.options.afterRemove(e),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow())}}const o1=.5;function vf(n){return"multiscale"in n&&ye(n.multiscale)}function aR(n){if(!n.multiscale.length)throw new Error('"multiscale" must contain at least one child view.');const e=cR(n.stops,n.multiscale.length),t=n.multiscale.map((i,s)=>n.multiscale.length===1?i:{opacity:lR(s,n.multiscale.length,e),layer:[i]}),r={...n};return delete r.multiscale,delete r.stops,{...r,layer:t}}function cR(n,e){let t="unitsPerPixel",r,i="auto",s=o1;if(ye(n))r=a1(n,e,"stops");else if(ze(n))t=n.metric??"unitsPerPixel",r=a1(n.values,e,"stops.values"),i=n.channel??"auto",s=n.fade??o1;else throw new Error('"stops" must be an array or an object with "values".');if(t!=="unitsPerPixel")throw new Error('Only "unitsPerPixel" is supported for "stops.metric" in multiscale.');if(!["x","y","auto"].includes(i))throw new Error('"stops.channel" must be one of "x", "y", or "auto".');if(!Number.isFinite(s)||s<0||s>.5)throw new Error('"stops.fade" must be a finite number in range [0, 0.5].');if(r.forEach((o,a)=>{if(!Ie(o)&&(!Number.isFinite(o)||o<=0))throw new Error("Invalid stop value at index "+a+". Stop values must be positive finite numbers.")}),!r.some(Ie)){const o=r;for(let a=1;a<o.length;a++)if(o[a-1]<=o[a])throw new Error('"stops.values" must be strictly decreasing for "unitsPerPixel".');for(let a=0;a<o.length-1;a++){const l=o[a]*(1-s),c=o[a+1]*(1+s);if(l<=c)throw new Error("Adjacent transitions overlap. Reduce fade or increase stop spacing.")}}return{metric:t,values:r,channel:i,fade:s}}function a1(n,e,t){if(!ye(n))throw new Error('"'+t+'" must be an array of numbers or ExprRefs.');const r=e-1;if(n.length!==r)throw new Error("Invalid stop count for multiscale. Expected "+r+", got "+n.length+".");for(const i of n)if(!Ie(i)&&!Number.isFinite(i))throw new Error('"'+t+'" must contain only numbers or ExprRefs.');return n}function lR(n,e,t){let r,i;const s=t.values.map(o=>({hi:c1(o,1+t.fade),lo:c1(o,1-t.fade)}));if(n===0)r=[s[0].hi,s[0].lo];else if(n===e-1){const o=s.at(-1);r=[o.hi,o.lo]}else{const o=s[n-1],a=s[n];r=[o.hi,o.lo,a.hi,a.lo]}return n===0?i=[1,0]:n===e-1?i=[0,1]:i=[0,1,1,0],{channel:t.channel,unitsPerPixel:r,values:i}}function c1(n,e){return Ie(n)?{expr:"("+n.expr+") * "+e}:n*e}class Cr extends js{#e=[];constructor(e,t,r,i,s,o){super(e,t,r,i,s,{layersChildren:!0,...o}),this.spec=e,this.needsAxes={x:!0,y:!0}}async initializeChildren(){this.#e=await Promise.all(this.spec.layer.map(e=>this.context.createOrImportView(e,this,this,this.getNextAutoName("layer"),t=>{if(!Rf(t)&&!Ff(t)&&!vf(t))throw new Ve("LayerView accepts only unit, layer, or multiscale specs as children!",this)})))}async addChildSpec(e,t){return this.#t().addChildSpec(e,t)}async removeChildAt(e){await this.#t().removeChildAt(e)}#t(){return new s1(this,{getChildSpecs:()=>({specs:this.spec.layer,insertAt:(e,t)=>{this.spec.layer.splice(e,0,t)},removeAt:e=>{this.spec.layer.splice(e,1)}}),insertView:(e,t)=>(e.layoutParent??=this,this.#e.splice(t,0,e),e),removeView:e=>{const t=this.#e[e];if(!t)throw new Error("Child index out of range!");t.disposeSubtree(),this.#e.splice(e,1)},defaultName:()=>this.getNextAutoName("layer")})}get children(){return this.#e.slice()}*[Symbol.iterator](){for(const e of this.#e)yield e}render(e,t,r={}){if(super.render(e,t,r),!!this.isConfiguredVisible()){e.pushView(this,t);for(const i of this.#e)i.render(e,t,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0);for(let t=this.#e.length-1;t>=0;t--)if(this.#e[t].propagateInteractionEvent(e),e.stopped)return;this.handleInteractionEvent(void 0,e,!1)}}class l1{constructor(e,t){this.n=e,this.maxCols=t??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=[],t=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const s=[];e.push(s);for(let o=0;o<t;o++){const a=i*t+o;a<this.n&&s.push(a)}}return e}get colIndices(){const e=[],t=this.nCols,r=this.nRows;for(let i=0;i<t;i++){const s=[];e.push(s);for(let o=0;o<r;o++){const a=o*t+i;a<this.n&&s.push(a)}}return e}getCellIndex(e,t){let r=0;if(this.maxCols==1/0)r=t==0?e:void 0;else{if(e>=this.maxCols)return;r=t*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 an(n){return()=>n}class ve{static create(e,t,r,i){return new ve(an(e),an(t),an(r),an(i))}static ZERO=ve.create(0,0,0,0);_offset(e,t){const r=this["_"+e];if(t===0)return r;switch(typeof t){case"number":return()=>r()+t;case"function":return()=>r()+t();default:throw new Error("Not a number of function")}}_passThrough(e){return this._offset(e,0)}constructor(e,t,r,i){this._x=e,this._y=t,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 t=r=>{const i=e[r];return typeof i=="number"?an(i):typeof i=="function"?i:this._passThrough(r)};return new ve(t("x"),t("y"),t("width"),t("height"))}translate(e,t){return e===0&&t===0?this:new ve(this._offset("x",e),this._offset("y",t),this._passThrough("width"),this._passThrough("height"))}translateBy(e){return this.translate(e.x,e.y)}expand(e,t=1){return e.left==0&&e.top==0&&e.right==0&&e.bottom==0?this:new ve(e.left?this._offset("x",-e.left*t):this._passThrough("x"),e.top?this._offset("y",-e.top*t):this._passThrough("y"),e.width?this._offset("width",e.width*t):this._passThrough("width"),e.height?this._offset("height",e.height*t):this._passThrough("height"))}shrink(e){return this.expand(e,-1)}intersect(e){return this===e||e==null?this:new ve(()=>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))}union(e){return this===e||e==null?this:new ve(()=>Math.min(this.x,e.x),()=>Math.min(this.y,e.y),()=>Math.max(this.x2,e.x2)-Math.min(this.x,e.x),()=>Math.max(this.y2,e.y2)-Math.min(this.y,e.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new ve(an(this.x),an(this.y),an(this.width),an(this.height))}containsPoint(e,t){return e>=this.x&&e<this.x2&&t>=this.y&&t<this.y2}normalizePoint(e,t,r=!1){const i={x:(e-this.x)/this.width,y:(t-this.y)/this.height};return r&&(i.y=1-i.y),i}denormalizePoint(e,t,r=!1){return r&&(t=1-t),{x:this.x+e*this.width,y:this.y+t*this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}toRoundedString(){return`Rectangle: x: ${Math.round(this.x)}, y: ${Math.round(this.y)}, width: ${Math.round(this.width)}, height: ${Math.round(this.height)}`}}const yr=new WeakMap,Za=new WeakMap;function uR(n,e){if(e!==null&&typeof e!="string")throw new Error("Import scope name must be a string or null.");yr.set(n,{name:e})}function cn(n,e={}){const r=e.skipSubtree??!1?"excludeSubtree":"exclude";Za.set(n,r)}function fR(n){const e=n.getDataAncestors(),t=[];for(let r=e.length-1;r>=0;r-=1){const i=yr.get(e[r]);i&&typeof i.name=="string"&&t.push(i.name)}return t}function AR(n){const e=[];for(const t of hR(n)){const r=dR(t);gR(t,r,e),pR(t,r,e),mR(t,r,e)}return e}function u1(n){const e=n.spec.configurableVisibility;return e!==void 0?e:!(n.layoutParent&&n.layoutParent.spec&&"layer"in n.layoutParent.spec)}function f1(n){return n.persist===!1?!1:Bl(n)?!0:bd(n)?!!n.bind:!1}function hR(n){const e=new Set([n]);return n.visit(t=>{const r=yr.get(t);r&&typeof r.name=="string"&&e.add(t)}),Array.from(e)}function dR(n){const e=fR(n),t=yr.get(n);return t&&typeof t.name=="string"?[...e,t.name]:e}function $a(n){return n.length?"import scope ["+n.join(" / ")+"]":"import scope (root)"}function gR(n,e,t){const r=new Map;A1(n,i=>{const s=i.explicitName,o=u1(i),a=i.spec.configurableVisibility===!0;if(!o)return;if(!s){if(!a)return;t.push({message:"Configurable view must have an explicit name in "+$a(e)+".",scope:e});return}const l=r.get(s);l?l.push(i):r.set(s,[i])},{includeNamedImportRoots:!0});for(const[i,s]of r){if(s.length<=1)continue;const o=s.map(a=>a.getPathString()).join(", ");t.push({message:'Configurable view name "'+i+'" is not unique within '+$a(e)+". Found in: "+o+".",scope:e})}}function pR(n,e,t){const r=new Map;A1(n,i=>{for(const[s,o]of i.paramRuntime.paramConfigs){if(!f1(o))continue;const a=r.get(s);a?a.push(i):r.set(s,[i])}});for(const[i,s]of r){if(s.length<=1)continue;const o=s.map(a=>a.getPathString()).join(", ");t.push({message:'Bookmarkable parameter "'+i+'" is not unique within '+$a(e)+". Found in: "+o+".",scope:e})}}function mR(n,e,t){const r=wR(n);if(!r.length)return;const i=r.filter(o=>CR(o));if(i.length<=1)return;const s=new Map;for(const o of i){const a=yr.get(o),l=a?a.name:void 0;typeof l!="string"||!l.length||s.set(l,(s.get(l)??0)+1)}for(const[o,a]of s)a>1&&t.push({message:'Import instance name "'+o+'" is used multiple times for addressable instances in '+$a(e)+".",scope:e})}function wR(n){const e=[];return n.visit(t=>{if(t===n)return;if(Za.get(t)==="excludeSubtree")return Dt;if(yr.get(t))return e.push(t),Dt}),e}function CR(n){let e=!1;return n.visit(t=>{const r=Za.get(t);if(r==="excludeSubtree")return Dt;if(r!=="exclude"){const i=u1(t),s=t.spec.configurableVisibility===!0;if(i&&(t.explicitName||s))return e=!0,Ln;for(const o of t.paramRuntime.paramConfigs.values())if(f1(o))return e=!0,Ln}}),e}function A1(n,e,t={}){const r=t.includeNamedImportRoots??!1;n.visit(i=>{const s=Za.get(i);if(s==="excludeSubtree")return Dt;const o=yr.get(i);if(i!==n&&o&&typeof o.name=="string"){if(s!=="exclude"&&r){const l=e(i);if(l===Ln)return l}return Dt}if(s!=="exclude")return e(i)})}const yR="chromosome_ticks_and_labels",IR={x:"width",y:"height"};function Sf(n){return n=="x"?"y":"x"}const ec={x:["bottom","top"],y:["left","right"]},Qf=Object.fromEntries(Object.entries(ec).map(([n,e])=>e.map(t=>[t,n])).flat(1));function On(n){return Qf[n]}class h1 extends Cr{constructor(e,t,r,i,s,o){const a=t=="locus",l={...a?ER:d1,...bR(t,e),...e};super(a?xR(l,t):g1(l,t),r,i,s,`axis_${e.orient}`,{blockEncodingInheritance:!0,...o}),this.axisProps=l,cn(this,{skipSubtree:!0})}getSize(){const e={px:this.getPerpendicularSize()},t={grow:1};return Qf[this.axisProps.orient]=="x"?new Tn(t,e):new Tn(e,t)}getPerpendicularSize(){return Df(this.axisProps)}isPickingSupported(){return!1}}function Df(n){const e=On(n.orient);let t=n.ticks&&n.tickSize||0;return n.labels&&(t+=n.labelPadding,e=="x"?t+=n.labelFontSize:t+=30),n.title&&(t+=n.titlePadding+n.titleFontSize),t=Math.min(n.maxExtent||1/0,Math.max(n.minExtent||0,t)),t}const d1={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 bR(n,e){const t=e.orient,r=n=="nominal"||n=="ordinal";let i="center",s="middle",o=e.labelAngle??((t=="top"||t=="bottom")&&r?-90:0);switch(t){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(o)>30?(i=o>0==(t=="bottom")?"left":"right",s="middle"):s=t=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:o,labelBaseline:s}}function g1(n,e){const t={...n,extent:Df(n)},r=On(t.orient),i=Sf(r),s=t.orient=="bottom"||t.orient=="right"?1:-1,o=t.orient=="bottom"||t.orient=="left"?1:0,a=()=>({field:"value",type:e}),l=()=>({name:"domain",data:{values:[{}]},mark:{type:"rule",clip:!1,strokeDash:t.domainDash,strokeCap:t.domainCap,color:t.domainColor,[i]:o,size:t.domainWidth}}),c=()=>({name:"labels",mark:{type:"text",clip:!1,align:t.labelAlign,angle:t.labelAngle,baseline:t.labelBaseline,[i+"Offset"]:(t.tickSize+t.labelPadding)*s,[i]:o,size:t.labelFontSize,color:t.labelColor,minBufferSize:1500},encoding:{[r]:a(),text:{field:"label"}}}),u=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:t.tickDash,strokeCap:t.tickCap,color:t.tickColor,size:t.tickWidth,minBufferSize:300},encoding:{[i]:{value:o},[i+"2"]:{value:o-t.tickSize/t.extent*(o?1:-1)}}}),f=()=>({name:"title",data:{values:[{}]},mark:{type:"text",clip:!1,align:"center",baseline:t.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(t.orient)],text:t.title,color:t.titleColor,[r]:.5,[i]:1-o}}),h=()=>{const d={name:"ticks_and_labels",encoding:{[r]:a()},layer:[]};return t.ticks&&d.layer.push(u()),t.labels&&d.layer.push(c()),d},A={resolve:{scale:{[r]:"forced"}},domainInert:!0,[IR[Sf(r)]]:t.extent,data:{lazy:{type:"axisTicks",channel:r,axis:n}},layer:[]};return t.domain&&A.layer.push(l()),(t.ticks||t.labels)&&A.layer.push(h()),t.title&&A.layer.push(f()),A}const ER={...d1,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 xR(n,e){const t={...n,extent:Df(n)},r=On(t.orient),i=Sf(r),s=t.orient=="bottom"||t.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:n.chromTickDash,strokeDashOffset:n.chromTickDashOffset,[i]:s,[i+"2"]:s-t.chromTickSize/t.extent*(s?1:-1),color:n.chromTickColor,size:t.chromTickWidth}}),a=()=>{let u;switch(t.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-t.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:t.chromLabelPadding+t.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-t.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-t.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:{type:"text",size:t.chromLabelFontSize,font:t.chromLabelFont,fontWeight:t.chromLabelFontWeight,fontStyle:t.chromLabelFontStyle,color:t.chromLabelColor,align:n.chromLabelAlign,baseline:"alphabetic",clip:!1,...u},encoding:{[r+"2"]:{field:"continuousEnd",type:e},text:{field:"name"}}}};let l;switch(t.orient){case"bottom":case"top":l={};break;case"left":l={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":l={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:l={}}const c=g1({...n,...l},e);if(n.chromTicks||n.chromLabels){const u={name:yR,data:{lazy:{type:"axisGenome",channel:On(t.orient)}},encoding:{[r]:{field:"continuousStart",type:e,band:0}},layer:[]};if(n.chromTicks&&u.layer.push(o()),n.chromLabels){u.layer.push(a());let f;c.layer.filter(h=>h.name=="ticks_and_labels").forEach(h=>h.layer.filter(A=>A.name=="labels").forEach(A=>{f=A.mark})),f&&(t.orient=="top"||t.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}c.layer.push(u)}return c}class BR{#e;#t=0;#n=0;constructor(e){this.#e=new Array(e)}push(e){this.#e[this.#t]=e,this.#t=(this.#t+1)%this.size,this.#n=Math.min(this.#n+1,this.size)}get(){const e=this.#e;return this.#n<this.size?e.slice(0,this.#n):e.slice(this.#t,this.size).concat(e.slice(0,this.#t))}get size(){return this.#e.length}get length(){return this.#n}}class ct{static fromMouseEvent(e){return new ct(e.clientX,e.clientY)}constructor(e,t){this.x=e,this.y=t}subtract(e){return new ct(this.x-e.x,this.y-e.y)}add(e){return new ct(this.x-e.x,this.y-e.y)}multiply(e){return new ct(this.x*e,this.y*e)}get length(){return Math.sqrt(this.x**2+this.y**2)}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}}let Ws,p1=0;function m1(){return performance.now()-p1<50}function vR(n){return function(...e){p1=performance.now(),n(...e)}}function SR(n,e,t,r,i){if(t=vR(t),n.type=="wheel"){n.uiEvent.preventDefault();const s=n.uiEvent,o=s.deltaMode?120:1;if(!s.deltaX&&!s.deltaY)return;Ws?.stop();let{x:a,y:l}=n.point;if(r){const c=r.mark.encoders;c.x&&!c.x2&&!c.x.constant&&(a=+c.x(r.datum)*e.width+e.x),c.y&&!c.y2&&!c.y.constant&&(l=(1-+c.y(r.datum))*e.height+e.y)}Math.abs(s.deltaX)<Math.abs(s.deltaY)?t({x:a,y:l,xDelta:0,yDelta:0,zDelta:s.deltaY*o/300}):t({x:a,y:l,xDelta:-s.deltaX*o,yDelta:0,zDelta:0})}else if(n.type=="mousedown"&&n.mouseEvent.button===0){Ws&&Ws.stop();const s=new BR(30),o=n.mouseEvent;o.preventDefault();let a=ct.fromMouseEvent(o);const l=f=>{const h=ct.fromMouseEvent(f);s.push({point:h,timestamp:performance.now()});const A=h.subtract(a);t({x:a.x,y:a.y,xDelta:A.x,yDelta:A.y,zDelta:0}),a=h},c=()=>{const h=performance.now(),A=s.get().filter(y=>h-y.timestamp<160);if(A.length<5||!i||QR(A))return;const d=A.at(-1),g=A[0],p=d.point.subtract(g.point).multiply(1/(d.timestamp-g.timestamp));let m=a.x,C=a.y;Ws=xf(i,y=>{t({x:y.x,y:y.y,xDelta:m-y.x,yDelta:C-y.y,zDelta:0}),m=y.x,C=y.y},150,.5,{x:m,y:C}),Ws({x:a.x-p.x*250,y:a.y-p.y*250})},u=()=>{document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",u),c()};document.addEventListener("mouseup",u,!1),document.addEventListener("mousemove",l,!1)}}function QR(n){const e=n[Math.floor(n.length/2)],t=e.point.subtract(n[0].point).multiply(e.timestamp-n[0].timestamp),r=n.at(-1).point.subtract(e.point).multiply(n.at(-1).timestamp-e.timestamp),i=t.length;return r.length/i<.4}class DR extends Cr{constructor(e,t,r,i,s,o){const l={...t=="locus"?kR:w1,...e};super(NR(l,t),r,i,s,`axisGrid_${e.orient}`,{blockEncodingInheritance:!0,...o}),this.axisProps=l,cn(this,{skipSubtree:!0})}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}}const w1={values:null,grid:!1,gridCap:"butt",gridColor:"lightgray",gridDash:null,gridOpacity:1,gridWidth:1,tickCount:null,tickMinStep:null},kR={...w1,chromGrid:!1,chromGridCap:"butt",chromGridColor:"gray",chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1};function FR(n,e){const t=n,r=On(t.orient);return{name:"grid_lines",data:{lazy:{type:"axisTicks",channel:r,axis:n}},mark:{type:"rule",strokeDash:t.gridDash,strokeCap:t.gridCap,color:t.gridColor,size:t.gridWidth,opacity:t.gridOpacity,minBufferSize:300},encoding:{[r]:{field:"value",type:e}}}}function RR(n,e){const t=n,r=On(t.orient);return{name:"chromosome_lines",data:{lazy:{type:"axisGenome",channel:r}},mark:{type:"rule",strokeDash:t.chromGridDash,strokeCap:t.chromGridCap,color:t.chromGridColor,size:t.chromGridWidth,opacity:t.chromGridOpacity},encoding:{[r]:{field:"continuousStart",type:e,band:0}}}}function MR(n,e){const t=n,r=On(t.orient);return{name:"chromosome_fill",data:{lazy:{type:"axisGenome",channel:r}},mark:{type:"rect"},encoding:{[r]:{field:"continuousStart",type:e,band:0},[r+"2"]:{field:"continuousEnd",band:0},fill:{field:"odd",type:"nominal",scale:{domain:[!1,!0],range:[t.chromGridFillEven??"white",t.chromGridFillOdd??"white"]}},opacity:{field:"odd",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[t.chromGridFillEven?1:0,t.chromGridFillOdd?1:0]}}}}}function NR(n,e){const t={...n},r=[];return t.chromGrid&&(t.chromGridFillOdd||t.chromGridFillEven)&&r.push(MR(t,e)),t.chromGrid&&t.chromGridOpacity>0&&r.push(RR(t,e)),t.grid&&t.gridOpacity>0&&r.push(FR(t,e)),{name:"grid_layers",configurableVisibility:!1,resolve:{scale:{[On(n.orient)]:"forced",fill:"independent",opacity:"independent"}},domainInert:!0,layer:r}}const C1={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"},TR={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},PR={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},LR={start:0,middle:.5,end:1},OR={start:"left",middle:"center",end:"right"};function UR(n){if(!n)return;const e=le(n)?{text:n}:n;if(!e.text||e.orient=="none")return;const t={"track-title":TR,overlay:PR}[e.style]??{},r={...C1,...t,...e};let i={},s={x:0,y:0};const o=LR[r.anchor??"middle"];switch(r.orient){case"top":s={x:o,y:1},i={baseline:"alphabetic",angle:0};break;case"right":s={x:1,y:1-o},i={baseline:"alphabetic",angle:90};break;case"bottom":s={x:o,y:0},i={baseline:"top",angle:0};break;case"left":s={x:0,y:o},i={baseline:"alphabetic",angle:-90};break}const a={...C1,...i,...t,...e},l={xOffset:0,yOffset:0};switch(r.orient){case"top":l.yOffset=-a.offset;break;case"right":l.xOffset=a.offset;break;case"bottom":l.yOffset=a.offset;break;case"left":l.xOffset=-a.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...s,...l,text:a.text,align:a.align??OR[a.anchor],angle:a.angle,baseline:a.baseline,dx:a.dx,dy:a.dy,color:a.color,font:a.font,size:a.fontSize,fontStyle:a.fontStyle,fontWeight:a.fontWeight}}}class y1 extends tt{#e;#t=ve.ZERO;#n=ve.ZERO;#r=ve.ZERO;viewportOffset=0;#s;constructor(e,t,r={}){const i={scrollbarSize:8,scrollbarPadding:2,scrollbarMinLength:20};super({params:[{name:"scrollbarOpacity",value:1}],opacity:{expr:"scrollbarOpacity"},data:{values:[{}]},mark:{type:"rect",fill:"#b0b0b0",fillOpacity:.6,stroke:"white",strokeWidth:1,strokeOpacity:1,cornerRadius:5,clip:!1},configurableVisibility:!1},e.layoutParent.context,e.layoutParent,e.view,"scrollbar-"+t,{blockEncodingInheritance:!0}),cn(this,{skipSubtree:!0}),this.config=i,this.#e=t,this.#s=r.onViewportOffsetChange;const s=this.config.scrollbarPadding,o=this.config.scrollbarSize;this.#t=this.#e=="vertical"?new ve(()=>this.#n.x+this.#n.width-o-s,()=>this.#n.y+s+this.scrollOffset,()=>o,()=>this.#c()):new ve(()=>this.#n.x+s+this.scrollOffset,()=>this.#n.y+this.#n.height-o-s,()=>this.#c(),()=>o),this.#A(this.viewportOffset),this.addInteractionEventListener("mousedown",(a,l)=>{if(l.stopPropagation(),this.#a()<=0)return;const c=d=>t=="vertical"?d.clientY:d.clientX;l.mouseEvent.preventDefault();const u=this.scrollOffset,f=c(l.mouseEvent),h=d=>{const g=this.#a();if(g<=0)return;const p=Xr(c(d)-f+u,0,g);this.interpolateViewportOffset({x:this.#u(p)})},A=()=>{document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",A)};document.addEventListener("mouseup",A,!1),document.addEventListener("mousemove",h,!1)})}get scrollOffset(){return this.#l(this.viewportOffset)}setViewportOffset(e,{notify:t=!0,syncSmoother:r=!1}={}){this.viewportOffset=Xr(e,0,this.#f()),r&&this.#A(this.viewportOffset),t&&this.#s&&this.#s(this.viewportOffset)}#o(){const e=this.#e=="horizontal"?"width":"height",t=this.#n[e],r=this.#r[e];return r>0?Math.min(1,t/r):1}#i(){const e=this.#e=="horizontal"?"width":"height";return Math.max(0,this.#n[e]-2*this.config.scrollbarPadding)}#c(){const e=this.#i(),t=this.#o()*e,r=this.config.scrollbarMinLength;return Math.min(e,Math.max(r,t))}#a(){return Math.max(0,this.#i()-this.#c())}#l(e){const t=this.#f(),r=this.#a();return t<=0||r<=0?0:e/t*r}#u(e){const t=this.#f(),r=this.#a();return t<=0||r<=0?0:e/r*t}#f(){const e=this.#e=="horizontal"?"width":"height";return Math.max(0,this.#r[e]-this.#n[e])}render(e,t,r){super.render(e,this.#t,r)}updateScrollbar(e,t){this.#n=e.flatten(),this.#r=t,this.setViewportOffset(this.viewportOffset,{notify:!1,syncSmoother:!0})}#A(e){this.interpolateViewportOffset=xf(this.context.animator,t=>{this.setViewportOffset(t.x,{notify:!0,syncSmoother:!1})},35,.4,{x:e})}}class GR extends Cr{constructor(e,t,r={}){const i=t(),s=Object.keys(i.intervals);if(tr.every(u=>!s.includes(u)))throw new Error("SelectionRect requires at least one of the channels 'x' or 'y' to be present in the selection.");const o={name:"selectionRect",configurableVisibility:!1,domainInert:!0,resolve:{scale:{x:"forced",y:"forced"}},data:{values:I1(t())},encoding:{},layer:[]};s.includes("x")&&(o.encoding.x={field:"_x",type:null,title:null},o.encoding.x2={field:"_x2"}),s.includes("y")&&(o.encoding.y={field:"_y",type:null,title:null},o.encoding.y2={field:"_y2"}),o.layer.push({name:"selectionRectRect",mark:{type:"rect",clip:!0,fill:"#808080",fillOpacity:.05,stroke:"black",strokeWidth:1,strokeOpacity:.2,...r}});const a=u=>{const f=e.view.getScaleResolution(u);return`format(datum._${u}2 - datum._${u}, '.3s')`+(f.type==="locus"?" + 'b'":"")},l=r.measure=="inside"?9:r.measure=="outside"?-9:0;s.includes("x")&&l!=0&&o.layer.push({name:"selectionRectTextX",mark:{type:"text",align:"center",paddingX:5,dy:l,tooltip:null},encoding:{text:{expr:a("x")},y:s.includes("y")?{field:"_y2",type:null,title:null}:{value:1},y2:null}}),s.includes("y")&&l!=0&&o.layer.push({name:"selectionRectTextY",mark:{type:"text",align:"center",paddingY:5,dy:l,tooltip:null,angle:-90},encoding:{text:{expr:a("y")},x2:null}}),super(o,e.layoutParent.context,e.layoutParent,e.view,"selectionRect",{blockEncodingInheritance:!0}),cn(this,{skipSubtree:!0});const c=()=>{const u=t(),f=this.flowHandle?.dataSource;if(!f)throw new Error("Cannot find selection rect data source handle!");f.updateDynamicData(I1(u))};this.registerDisposer(t.subscribe(c))}}function I1(n){const e=n.intervals.x,t=n.intervals.y;return!e&&!t?[]:[{_x:e?.[0],_x2:e?.[1],_y:t?.[0],_y2:t?.[1]}]}class zR{constructor(e,t,r){if(this.layoutParent=t,this.view=e,this.serial=r,this.background=void 0,this.backgroundStroke=void 0,this.axes={},this.gridLines={},this.scrollbars={},this.selectionRect=void 0,this.title=void 0,this.coords=ve.ZERO,e.needsAxes.x||e.needsAxes.y){const i=e.spec,s="view"in i?i?.view:void 0,o=HR(s);o&&(this.background=new tt(o,t.context,t,e,"background"+r,{blockEncodingInheritance:!0}),cn(this.background,{skipSubtree:!0}));const a=VR(s);a&&(this.backgroundStroke=new tt(a,t.context,t,e,"backgroundStroke"+r,{blockEncodingInheritance:!0}),cn(this.backgroundStroke,{skipSubtree:!0}));const l=UR(e.spec.title);if(l){const c=new tt(l,t.context,t,e,"title"+r,{blockEncodingInheritance:!0});this.title=c,cn(this.title,{skipSubtree:!0})}}e.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new y1(this,"horizontal")),e.spec.viewportHeight!=null&&(this.scrollbars.vertical=new y1(this,"vertical")),this.#e()}#e(){const e=this.view,t=r=>{this.view.context.glHelper.canvas.style.cursor=r};for(const[r,i]of e.paramRuntime.paramConfigs){if(!("select"in i))continue;const s=Ko(i.select);if(!Cd(s))continue;const o=s.encodings,a=Object.fromEntries(o.map(y=>{const w=this.view.getScaleResolution(y),E=w?.getScale();if(!E||!Pe(E.type))throw new Error(`No continuous scale found for interval selection param "${r}" on channel "${y}"! Scale type is "${E?.type??"none"}".`);return[y,w]}));if(this.selectionRect)throw new Error("Only one interval selection per container is currently allowed!");let l=!1,c=!1,u=!1,f=null;const h=(y,w)=>Object.fromEntries(o.map(E=>[E,[Math.min(y[E],w[E]),Math.max(y[E],w[E])]])),A=e.paramRuntime.createExpression(r),d=y=>{e.paramRuntime.setValue(r,y)};i.value&&d({type:"interval",intervals:i.value});const g=()=>{d(pd(o)),t(null)};this.selectionRect=new GR(this,A,s.mark),this.selectionRect.initializeChildren();const p=y=>{const w={x:0,y:0},E=e.coords.normalizePoint(y.x,y.y,!0);for(const x of o){const b=a[x].getScale(),S=b.invert(x=="x"?E.x:E.y);w[x]=S+(["index","locus"].includes(b.type)?.5:0)}return w},m=y=>{const{intervals:w}=y,E=(S,Q,v)=>{const F=(O,H)=>H==null?null:a[O].getScale()(H),R=F("x",S)??v,N=F("y",Q)??v;return e.coords.denormalizePoint(R,N,!0)},x=E(w.x?.[0],w.y?.[0],0),b=E(w.x?.[1],w.y?.[1],1);return ve.create(x.x,x.y,b.x-x.x,b.y-x.y)};e.addInteractionEventListener("mousedown",(y,w)=>{if(w.mouseEvent.button!=0)return;if(f=l?m(A()):null,f)t("grabbing"),c=!0;else{const Q=w.point;if(yd(A())&&(c=!0),w.mouseEvent.shiftKey)g(),u=!0;else if(yd(A())){const F=(R,N)=>{e.removeInteractionEventListener("mouseup",F);const O=N.point;Q.subtract(O).length<2&&g()};e.addInteractionEventListener("mouseup",F);return}else return}w.stopPropagation();const E=w.point,x=ct.fromMouseEvent(w.mouseEvent).subtract(E),b=Q=>{const v=ct.fromMouseEvent(Q).subtract(x);let F;if(f){const R=v.subtract(E),N=f.translate(R.x,R.y);F=h(p(new ct(N.x,N.y)),p(new ct(N.x2,N.y2)))}else F=h(p(E),p(v));for(const R of o){const N=a[R],{zoomExtent:O,scale:H}=N,G=F[R];if(["index","locus"].includes(H.type)&&(G[0]=Math.ceil(G[0]),G[1]=Math.ceil(G[1])),f){const _=G[1]-G[0],te=O[0],oe=O[1];G[0]<te&&(G[0]=te,G[1]=te+_),G[1]>oe&&(G[1]=oe,G[0]=oe-_)}else G[0]=Math.max(O[0],G[0]),G[1]=Math.min(O[1],G[1]);G[1]=Math.min(O[1],G[1])}d({type:"interval",intervals:F})},S=()=>{document.removeEventListener("mousemove",b),document.removeEventListener("mouseup",S),u=!1,f&&(t("move"),f=null)};document.addEventListener("mousemove",b),document.addEventListener("mouseup",S)}),e.addInteractionEventListener("click",(y,w)=>{w.mouseEvent.button==0&&c&&(w.stopPropagation(),c=!1)},!0);const C=y=>PE(A(),p(y));e.addInteractionEventListener("dblclick",(y,w)=>{C(w.point)&&(g(),w.stopPropagation())},!0),e.addInteractionEventListener("mousemove",(y,w)=>{C(w.point)?u||(l=!0,f||t("move")):(l=!1,f||t(null))})}}*getChildren(){this.background&&(yield this.background),this.backgroundStroke&&(yield this.backgroundStroke),this.title&&(yield this.title),yield*Object.values(this.axes),yield*Object.values(this.gridLines),yield this.view,yield*Object.values(this.scrollbars),this.selectionRect&&(yield this.selectionRect)}async createAxes(){this.disposeAxisViews();const{view:e,axes:t,gridLines:r}=this,i=(a,l)=>{const c=a.getAxisProps();if(c===null)return;const u=c?{...c}:{};if(!u.orient){for(const f of ec[l])if(!t[f]){u.orient=f;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(u.title??=a.getTitle(),!ec[l].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${l}"!`);return u},s=async(a,l,c)=>{const u=i(a,l);if(u){if(t[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);const f=new h1(u,a.scaleResolution.type,this.layoutParent.context,this.layoutParent,c);t[u.orient]=f,await f.initializeChildren()}},o=async(a,l,c)=>{const u=i(a,l);if(u&&(u.grid||u.chromGrid)){const f=new DR(u,a.scaleResolution.type,this.layoutParent.context,this.layoutParent,c);r[u.orient]=f,await f.initializeChildren()}};for(const a of["x","y"])if(e.needsAxes[a]){const l=e.resolutions.axis[a];if(!l)continue;await s(l,a,e)}for(const a of["x","y"])if(e.needsAxes[a]&&e.getConfiguredOrDefaultResolution(a,"axis")!="excluded"){const l=e.getAxisResolution(a);if(!l)continue;await o(l,a,e)}if(e instanceof Cr){for(const a of e)for(const[l,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&u.orient&&await s(c,l,a)}for(const a of e)for(const[l,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&!u.orient&&await s(c,l,a)}}[...Object.values(t),...Object.values(r)].forEach(a=>a.visit(l=>{l instanceof tt&&l.resolve("scale")}))}disposeAxisViews(){for(const e of Object.values(this.axes))e.disposeSubtree();for(const e of Object.values(this.gridLines))e.disposeSubtree();this.axes={},this.gridLines={}}getOverhang(){const e=t=>{const r=this.axes[t];return r?Math.max(r.getPerpendicularSize()+(r.axisProps.offset??0),0):0};return new qe(e("top"),e("right"),e("bottom"),e("left")).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}}function HR(n){if(n?.fill||n?.fillOpacity||n?.shadowOpacity)return{configurableVisibility:!1,data:{values:[{}]},mark:{color:n.fill,opacity:n.fillOpacity??(n.fill?1:0),type:"rect",clip:!1,tooltip:null,minHeight:1,minOpacity:0,shadowBlur:n.shadowBlur,shadowColor:n.shadowColor,shadowOffsetX:n.shadowOffsetX,shadowOffsetY:n.shadowOffsetY,shadowOpacity:n.shadowOpacity}}}function VR(n){if(!(!n||!n.stroke||n.strokeWidth===0||n.strokeOpacity===0))return{configurableVisibility:!1,resolve:{scale:{x:"excluded",y:"excluded"},axis:{x:"excluded",y:"excluded"}},data:{values:[{x:0,y:0,x2:1,y2:0},{x:1,y:0,x2:1,y2:1},{x:1,y:1,x2:0,y2:1},{x:0,y:1,x2:0,y2:0}]},mark:{size:n.strokeWidth??1,color:n.stroke??"lightgray",strokeCap:"square",opacity:n.strokeOpacity??1,type:"rule",clip:!1,tooltip:null},encoding:{x:{field:"x",type:"quantitative",scale:null},y:{field:"y",type:"quantitative",scale:null},x2:{field:"x2"},y2:{field:"y2"}}}}const tc=Object.freeze({size:1,color:"#ccc",opacity:1,strokeDash:[4,4],strokeCap:"butt"});class _R{#e;#t;#n;#r=[];#s=[];#o={x:[0,0],y:[0,0]};constructor({direction:e,props:t,context:r,layoutParent:i,dataParent:s,getName:o}){this.#e=e,this.#t=t.includePlotMargin??!0;const a={...t};delete a.includePlotMargin,this.#n=this.#a(a,r,i,s,o)}get view(){return this.#n}update(e,t,r,i,s,o){this.#i(e,t,i,s),this.#c(r,o)}render(e,t,r){this.#n.render(e,t,r)}#i(e,t,r,i){if(this.#s.length=0,t<2)return;const s=this.#e==="vertical"?"column":"row",o=i?3:2;for(let a=1;a<t;a++){const c=r(s,a)-o,u=e[c],f=u?u.location:0,h=u?u.size:0;this.#s.push(f+h/2)}}#c(e,t){const r=this.#t?0:t.left,i=this.#t?e.width:e.width-t.right,s=this.#t?0:t.bottom,o=this.#t?e.height:e.height-t.top;this.#r.length=this.#s.length;for(let u=0;u<this.#s.length;u++){const f=this.#s[u],h=this.#r[u]??{};if(this.#e==="vertical")h.x=f,h.x2=f,h.y=s,h.y2=o;else{const A=e.height-f;h.x=r,h.x2=i,h.y=A,h.y2=A}this.#r[u]=h}const a=this.#n.flowHandle?.dataSource;if(!a)return;a.updateDynamicData(this.#r),this.#o.x[1]=e.width,this.#o.y[1]=e.height;const l=this.#n.getScaleResolution("x")?.getScale();l&&l.domain(this.#o.x);const c=this.#n.getScaleResolution("y")?.getScale();c&&c.domain(this.#o.y)}#a(e,t,r,i,s){const o=JR(e),a=this.#e==="horizontal"?s("separatorHorizontal"):s("separatorVertical"),l=new tt(o,t,r,i,a,{blockEncodingInheritance:!0});return cn(l,{skipSubtree:!0}),l}}function YR(n){if(!n)return null;const e=n===!0?{...tc}:{...tc,...n};return e.strokeDash===tc.strokeDash&&(e.strokeDash=tc.strokeDash.slice()),e}function JR(n){return{configurableVisibility:!1,domainInert:!0,data:{values:[]},resolve:{scale:{x:"excluded",y:"excluded"},axis:{x:"excluded",y:"excluded"}},mark:{...n,type:"rule",clip:n.clip??!1,tooltip:null},encoding:{x:{field:"x",type:"quantitative",scale:{nice:!1,zero:!1}},y:{field:"y",type:"quantitative",scale:{nice:!1,zero:!1}},x2:{field:"x2"},y2:{field:"y2"}}}}class qR extends js{#e=1/0;#t=10;#n=[];#r={};#s=0;#o={};constructor(e,t,r,i,s,o,a){super(e,t,r,i,s,a),this.spec=e,this.#t=e.spacing??10,this.#e=o,this.#n=[],this.wrappingFacet=!1;const l=YR(e.separator);if(l)for(const c of WR(e))this.#o[c]=new _R({direction:c,props:l,context:this.context,layoutParent:this,dataParent:this,getName:u=>this.getNextAutoName(u)})}appendChild(e){this.appendChildView(e)}appendChildView(e){return this.insertChildViewAt(e,this.#n.length)}insertChildViewAt(e,t){e.layoutParent??=this;const r=new zR(e,this,this.#s);return this.#s++,this.#n.splice(t,0,r),this.invalidateSizeCache(),r}removeChildView(e){const t=this.#n.findIndex(r=>r.view===e);if(t<0)throw new Error("Not my child view!");this.removeChildAt(t)}removeChildAt(e){const t=this.#n[e];if(!t)throw new Error("Child index out of range!");this.#a(t),this.#n.splice(e,1),this.invalidateSizeCache()}get#i(){return this.#n.filter(e=>e.view.isConfiguredVisible())}get#c(){return new l1(this.#i.length,this.#e??1/0)}setChildren(e){for(const t of this.#n)this.#a(t);this.#n=[];for(const t of e)this.appendChild(t);this.invalidateSizeCache()}#a(e){e.disposeAxisViews();for(const t of e.getChildren())t.disposeSubtree()}get children(){return this.#n.map(e=>e.view)}get childCount(){return this.#n.length}async createAxes(){await this.syncSharedAxes(),await Promise.all(this.#n.map(e=>e.createAxes()))}async syncSharedAxes(){for(const t of Object.values(this.#r))t.disposeSubtree();this.#r={};const e=[];for(const t of tr){const r=this.resolutions.axis[t];if(!r)continue;const i=r.getAxisProps();if(!i)continue;const s={title:r.getTitle(),orient:ec[t][0],...i},o=new h1(s,r.scaleResolution.type,this.context,this,this);e.push(o.initializeChildren()),this.#r[t]=o}await Promise.all(e)}*[Symbol.iterator](){for(const e of this.#n)yield*e.getChildren();for(const e of Object.values(this.#o))yield e.view;for(const e of Object.values(this.#r))yield e}#l(e){const t=e=="column"?"width":"height",r=(i,s)=>i.map(o=>{const l=this.#i[o].getOverhangAndPadding();return e=="column"?s?l.right:l.left:s?l.bottom:l.top}).reduce((o,a)=>Math.max(o,a),0);return this._cache(`size/directionSizes/${e}`,()=>this.#c[e=="column"?"colIndices":"rowIndices"].map(i=>({axisBefore:r(i,0),axisAfter:r(i,1),view:bk(i.map(s=>this.#i[s].view.getViewportSize()[t]))})))}#u(e){const t=this.#l(e),r=[];r.push(Us);for(const[i,s]of t.entries())i>0&&r.push({px:this.#t,grow:0}),(i==0||this.wrappingFacet)&&r.push(Us),r.push({px:s.axisBefore,grow:0}),r.push(s.view),r.push({px:s.axisAfter,grow:0}),(i==t.length-1||this.wrappingFacet)&&r.push(Us);return r}#f(e){let t=0,r=0;const i=e=="row"?this.spec.height:this.spec.width;if(i||i===0)return jp(i);const s=this.#l(e);for(const[o,a]of s.entries())o>0&&(r+=this.#t),(o==0||this.wrappingFacet)&&(r+=0),r+=a.axisBefore,r+=a.view.px??0,t+=a.view.grow??0,r+=a.axisAfter,(o==s.length-1||this.wrappingFacet)&&(r+=0);return{px:r,grow:t}}#A(e,t){return e=="row"&&this.wrappingFacet?1+6*t+2:2+4*t+1}getOverhang(){return this.#h().union(this.#d())}#h(){const e=this.#l("column"),t=this.#l("row");return!e.length||!t.length?qe.zero():new qe(t.at(0).axisBefore,e.at(-1).axisAfter,t.at(-1).axisAfter,e.at(0).axisBefore)}#d(){const e=t=>{const r=Qf[t],i=this.#r[r];return i?.axisProps.orient!==t?0:Math.max(i.getPerpendicularSize()+(i.axisProps.offset??0),0)};return new qe(e("top"),e("right"),e("bottom"),e("left"))}getSize(){return this._cache("size",()=>new Tn(this.#f("column"),this.#f("row")).addPadding(this.#d()))}render(e,t,r={}){if(super.render(e,t,r),!this.isConfiguredVisible())return;this.layoutParent||(t=t.shrink(this.getPadding())),t=t.shrink(this.#d()),e.pushView(this,t);const i=e.getDevicePixelRatio(),s={devicePixelRatio:i},o=qp(this.#u("column"),t.width,s),a=qp(this.#u("row"),t.height,s),l=new l1(this.#i.length,this.#e??1/0),c=d=>Math.round(d*i)/i,u=[];for(const[d,g]of this.#i.entries()){const{view:p,axes:m,gridLines:C,background:y,backgroundStroke:w,title:E,selectionRect:x}=g,[b,S]=l.getCellCoords(d),Q=o[this.#A("column",b)],v=a[this.#A("row",S)],F=p.getViewportSize(),R=p.getSize(),N=p.getOverhang(),O=Q.location-N.left,H=v.location-N.top,G=(U,K)=>(U[K].grow?(K=="width"?Q:v).size:U[K].px)+N[K],_=G(F,"width"),te=G(F,"height"),oe=G(R,"width"),ne=G(R,"height"),Ge=g.scrollbars.horizontal,qt=g.scrollbars.vertical,ho=Ge?()=>c(Ge.viewportOffset):()=>0,Ri=qt?()=>c(qt.viewportOffset):()=>0,An=new ve(()=>t.x+O,()=>t.y+H,()=>_,()=>te),Dr=p.isScrollable(),go=Dr?new ve(()=>t.x+O-ho(),()=>t.y+H-Ri(),()=>oe,()=>ne):An;g.coords=An;const Mi=r.clipRect?An.intersect(r.clipRect):An;u.push({col:b,row:S,view:p,axes:m,gridLines:C,background:y,backgroundStroke:w,title:E,selectionRect:x,viewportCoords:An,viewCoords:go,clippedChildCoords:Mi,viewWidth:oe,viewHeight:ne,scrollable:Dr,gridChild:g})}for(const d of u)d.background?.render(e,d.clippedChildCoords,{...r,clipRect:void 0});const f=this.#h(),h=this.#o.vertical;h&&(h.update(o,l.nCols,t,(d,g)=>this.#A(d,g),this.wrappingFacet,f),h.render(e,t,r));const A=this.#o.horizontal;A&&(A.update(a,l.nRows,t,(d,g)=>this.#A(d,g),this.wrappingFacet,f),A.render(e,t,r));for(const d of u){const{view:g,axes:p,gridLines:m,backgroundStroke:C,title:y,selectionRect:w,viewportCoords:E,viewCoords:x,clippedChildCoords:b,viewWidth:S,viewHeight:Q,scrollable:v,gridChild:F,col:R,row:N}=d;for(const H of Object.values(m))H.render(e,E,r);const O=jR(g)||v;O&&g.render(e,x,{...r,clipRect:b}),C?.render(e,b,{...r,clipRect:void 0});for(const[H,G]of Object.entries(p)){const _=H=="left"||H=="right"?"vertical":"horizontal",te=F.scrollbars[_],oe=te?E.modify(_=="vertical"?{y:()=>x.y,height:Q}:{x:()=>x.x,width:S}):E,ne=b1(oe,H,G);let Ge=r.clipRect;te&&(Ge=ne.intersect(Ge).intersect(te?E.modify(_=="vertical"?{x:-1e5,width:2e5}:{y:-1e5,height:2e5}):void 0)),G.render(e,ne,{...r,clipRect:Ge})}for(const H of Object.values(this.#r)){const _=H.axisProps.orient;(_=="left"&&R==0||_=="right"&&R==l.nCols-1||_=="top"&&N==0||_=="bottom"&&N==l.nRows-1)&&H.render(e,b1(E.shrink(F.view.getOverhang()),_,H),r)}O||g.render(e,x,r),w?.render(e,x,r);for(const H of Object.values(F.scrollbars))H.updateScrollbar(E,x),H.render(e,t,r);y?.render(e,E,r)}e.popView(this)}propagateInteractionEvent(e){if(this.handleInteractionEvent(void 0,e,!0),e.stopped)return;const t=this.#i.find(i=>i.coords.containsPoint(e.point.x,e.point.y));for(const i of Object.values(t?.scrollbars??{}))if(i.coords.containsPoint(e.point.x,e.point.y)&&(i.propagateInteractionEvent(e),e.stopped))return;const r=t?.view;if(r){if(r.propagateInteractionEvent(e),e.stopped)return;(r instanceof tt||r instanceof Cr)&&SR(e,t.coords,i=>this.#g(t.coords,t.view,i),this.context.getCurrentHover(),this.context.animator)}e.stopped||this.handleInteractionEvent(void 0,e,!1)}#g(e,t,r){for(const[i,s]of Object.entries(KR(t))){if(s.size<=0)continue;const o=e.normalizePoint(r.x,r.y),a=e.normalizePoint(r.x+r.xDelta,r.y+r.yDelta),l={x:a.x-o.x,y:a.y-o.y};for(const c of s)c.zoom(2**r.zDelta,i=="y"?1-o[i]:o[i],i=="x"?l.x:-l.y)}this.context.animator.requestRender()}getDefaultResolution(e,t){return"independent"}}function KR(n){const e={x:new Set,y:new Set};return n.visit(t=>{for(const[r,i]of Object.entries(e)){const s=t.getScaleResolution(r);s&&s.isZoomable()&&i.add(s)}}),e}function jR(n){let e=!0;return n.visit(t=>{t instanceof tt&&(e&&=t.mark.properties.clip===!0)}),e}function WR(n){return"vconcat"in n?["horizontal"]:"hconcat"in n?["vertical"]:["horizontal","vertical"]}function b1(n,e,t){const r=t.axisProps,i=t.getPerpendicularSize();if(e=="bottom")return n.translate(0,n.height+r.offset).modify({height:i});if(e=="top")return n.translate(0,-i-r.offset).modify({height:i});if(e=="left")return n.translate(-i-r.offset,0).modify({width:i});if(e=="right")return n.translate(n.width+r.offset,0).modify({width:i})}class kf extends qR{constructor(e,t,r,i,s){super(e,t,r,i,s,nc(e)?e.columns:Xs(e)?1:1/0),this.spec=e}async initializeChildren(){const e=this.spec,t=nc(e)?e.concat:Xs(e)?e.vconcat:e.hconcat;this.setChildren(await Promise.all(t.map(r=>this.context.createOrImportView(r,this,this,this.getNextAutoName("grid"))))),await this.createAxes()}async addChildSpec(e,t){return this.#t().addChildSpec(e,t)}async removeChildAt(e){await this.#t().removeChildAt(e)}getDefaultResolution(e,t){return t=="axis"?"independent":Xs(this.spec)&&e==="x"||v1(this.spec)&&e==="y"?"shared":"independent"}#e(){const e=this.spec;let t;return nc(e)?t=e.concat:Xs(e)?t=e.vconcat:t=e.hconcat,{specs:t,insertAt:(r,i)=>{t.splice(r,0,i)},removeAt:r=>{t.splice(r,1)}}}#t(){return new s1(this,{getChildSpecs:this.#e.bind(this),insertView:(e,t)=>this.insertChildViewAt(e,t),removeView:e=>super.removeChildAt(e),prepareView:async(e,t,r)=>{await r.createAxes(),await this.syncSharedAxes()},afterRemove:async()=>{await this.syncSharedAxes()},defaultName:()=>this.getNextAutoName("grid")})}}const E1="viewRoot";class XR{#e=new Map;constructor(e={}){this.options={allowImport:!0,wrapRoot:!0,...e};const t=r=>(i,s,o,a,l)=>new r(i,s,o,a,l);this.addViewType(Rf,t(Cr)),this.addViewType(vf,((r,i,s,o,a)=>new Cr(aR(r),i,s,o,a))),this.addViewType(Ff,t(tt)),this.addViewType(Xs,t(kf)),this.addViewType(v1,t(kf)),this.addViewType(nc,t(kf))}addViewType(e,t){this.#e.set(e,t)}createView(e,t,r,i,s){for(const[o,a]of this.#e)if(o(e))return a(e,t,r,i,s);throw $R(e)?new Error("SampleView is not supported by the @genome-spy/core package. Use @genome-spy/app instead!"):new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const t=[...this.#e.keys()].filter(r=>r(e));if(t.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return t.length==1}async createOrImportView(e,t,r,i,s,o){let a;const l=B1(e)?e.name??null:void 0;if(B1(e)){let h;if("url"in e.import)if(this.options.allowImport)h=await t8(e,i.getBaseUrl(),t);else throw new Ve("Importing views is not allowed!",r);else if("template"in e.import)h=x1(e.import.template,i);else throw new Error("Invalid import: "+JSON.stringify(e));o?.(h),ZR(h,e),a=h}else a=e;const c=h=>h?.params?.some(A=>Bl(A)&&Ko(A.select).type=="interval");let u=!1;!i&&this.options.wrapRoot&&(Ff(a)||Rf(a)||vf(a)||c(a))&&s===E1&&(a={name:"implicitRoot",vconcat:[a]},u=!0);const f=this.createView(a,t,r,i,s);return l!==void 0&&uR(f,l),u&&cn(f),f instanceof js&&await f.initializeChildren(),f.registerStepSizeInvalidation(),f}}function x1(n,e){const t=e.spec?.templates?.[n];if(t)return structuredClone(t);if(e.dataParent)return x1(n,e.dataParent);throw new Error(`Cannot find template "${n}" in current view or its ancestors!`)}function ZR(n,e){e.name!=null&&(n.name=e.name),e.visible!=null&&(n.visible=e.visible);const t=ye(e.params)?e.params:ze(e.params)?Object.entries(e.params).map(([r,i])=>({name:r,value:i})):[];if(t.length){n.params??=[];for(const r of t){const i=n.params.findIndex(s=>s.name==r.name);i>=0&&(n.params[i]=r)}for(const r of t)n.params.some(i=>i.name==r.name)||n.params.push(r)}}function Ff(n){return"mark"in n&&(le(n.mark)||ze(n.mark))}function Rf(n){return"layer"in n&&ze(n.layer)}function B1(n){return"import"in n}function Xs(n){return"vconcat"in n&&ye(n.vconcat)}function v1(n){return"hconcat"in n&&ye(n.hconcat)}function nc(n){return"concat"in n&&ye(n.concat)}function $R(n){return"samples"in n&&ze(n.samples)&&"spec"in n&&ze(n.spec)}class e6{#e;constructor(e,t){this.point=e,this.uiEvent=t,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}get proxiedMouseEvent(){return this.#e||(this.#e=t6(this.mouseEvent)),this.#e}get mouseEvent(){if(this.uiEvent instanceof MouseEvent)return this.uiEvent;throw new Error("Not a MouseEvent!")}}function t6(n){const e=r=>r===null||typeof r!="object"&&typeof r!="function",t={get(r,i,s){const o=Reflect.get(r,i,r);if(!e(o))throw new Error(`Access to non-primitive property "${String(i)}" is not allowed.`);return o},getPrototypeOf(){return null},ownKeys(r){return Reflect.ownKeys(r).filter(s=>e(r[s])).map(s=>typeof s=="symbol"?s:String(s))},getOwnPropertyDescriptor(r,i){const s=Reflect.getOwnPropertyDescriptor(r,i);if(s&&!("get"in s||"set"in s)&&e(s.value))return{value:s.value,writable:!!s.writable,enumerable:!!s.enumerable,configurable:!!s.configurable}},has(r,i){return i in r?e(r[i]):!1}};return new Proxy(n,t)}class n6{constructor(e,t){this.animator=e,this.disabled=!!t,this.maxDistance=500,this.callback=null,this.targetValue=0,this.lastValue=0,this.smoother=xf(e,r=>{const i=r.x-this.lastValue;this.lastValue=r.x,this.callback?.(i)},40,.1,{x:0})}cancel(){this.lastValue!==this.targetValue&&(this.targetValue=GA([this.lastValue,this.targetValue],.3),this.smoother({x:this.targetValue}))}setMomentum(e,t){if(this.disabled){t(e);return}this.callback=t;const r=Xr(this.targetValue+e-this.lastValue,-this.maxDistance,this.maxDistance);this.targetValue=this.lastValue+r,this.smoother({x:this.targetValue})}}function r6(n){const e={},t=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in n){const s=i;!r.includes(i)&&t.includes(typeof n[s])&&(e[s]=n[s])}return e}class i6{#e;#t;#n;#r;#s;#o;#i;#c;#a;#l;#u;#f;constructor({viewRoot:e,glHelper:t,tooltip:r,animator:i,emitEvent:s,tooltipHandlers:o,renderPickingFramebuffer:a,getDevicePixelRatio:l}){this.#e=e,this.#t=t,this.#n=r,this.#r=i,this.#s=s,this.#o=o,this.#i=a,this.#c=l,this.#a=void 0,this.#l=new n6(this.#r),this.#u=void 0,this.#f=!1}getCurrentHover(){return this.#a}registerMouseEvents(){const e=this.#t.canvas;let t=performance.now(),r=!1;const i=s=>{const o=performance.now(),a=o-t<200;if(s instanceof MouseEvent){const l=e.getBoundingClientRect(),c=new ct(s.clientX-l.left-e.clientLeft,s.clientY-l.top-e.clientTop);s.type=="mousemove"&&!a&&(this.#n.handleMouseMove(s),this.#f=!1,s.buttons==0&&!m1()&&(this.#i(),this.#A(c.x,c.y)));const u=f=>{this.#e.propagateInteractionEvent(new e6(c,f)),this.#f||this.#n.clear()};if(s.type!="wheel"&&this.#l.cancel(),(s.type=="mousedown"||s.type=="mouseup")&&!m1())this.#i();else if(s.type=="wheel"){t=o,this.#f=!1;const f=s;if(Math.abs(f.deltaX)>Math.abs(f.deltaY))this.#a=null,this.#l.cancel();else{const h=r6(f);this.#l.setMomentum(f.deltaY*(f.deltaMode?80:1),A=>{const d=new WheelEvent("wheel",{...h,deltaMode:0,deltaX:0,deltaY:A});u(d)}),f.preventDefault();return}}if(s.type=="click"){if(r)return;const f=this.#a?{type:s.type,viewPath:this.#a.mark.unitView.getLayoutAncestors().map(h=>h.name).reverse(),datum:this.#a.datum}:{type:s.type,viewPath:null,datum:null};this.#s("click",f)}(s.type!="click"||this.#u?.subtract(ct.fromMouseEvent(s)).length<3)&&u(s)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu","dblclick"].forEach(s=>e.addEventListener(s,i)),e.addEventListener("mousedown",s=>{this.#u=ct.fromMouseEvent(s),this.#n.sticky?(this.#n.sticky=!1,this.#n.clear(),r=!0):r=!1;const o=()=>{document.addEventListener("mouseup",()=>this.#n.popEnabledState(),{once:!0}),this.#n.pushEnabledState(!1)};if(s.button==2||s.shiftKey||s.ctrlKey||s.metaKey)o();else if(this.#n.visible){const a=setTimeout(()=>{r=!0,this.#n.sticky=!0},400),l=()=>clearTimeout(a);document.addEventListener("mouseup",l,{once:!0}),document.addEventListener("mousemove",l,{once:!0})}}),e.addEventListener("dragstart",s=>s.stopPropagation()),e.addEventListener("mouseout",()=>{this.#n.clear(),this.#a=null})}#A(e,t){const r=this.#c(),i=uQ(this.#t.gl,this.#t._pickingBufferInfo,e*r,t*r),s=i[0]|i[1]<<8|i[2]<<16|i[3]<<24;if(s==0){this.#a=null;return}if(s!==this.#a?.uniqueId&&(this.#a=null),this.#a||this.#e.visit(o=>{if(o instanceof tt){if(o.mark.isPickingParticipant()&&[...o.facetCoords.values()].some(a=>a.containsPoint(e,t))){const a=o.getCollector().findDatumByUniqueId(s);a&&(this.#a={mark:o.mark,datum:a,uniqueId:s})}if(this.#a)return Ln}}),this.#a){const o=this.#a.mark;this.updateTooltip(this.#a.datum,async a=>{if(!o.isPickingParticipant())return;const l=o.properties.tooltip;if(l!==null){const c=l?.handler??"default",u=this.#o[c];if(!u)throw new Error("No such tooltip handler: "+c);const f=Wm(a,o,l?.params);return u(a,o,l?.params,f)}})}}updateTooltip(e,t){if(!this.#f||!e)this.#n.updateWithDatum(e,t),this.#f=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}}class S1{constructor(e){this.globalOptions=e}pushView(e,t){}popView(e){}renderMark(e,t){}getDevicePixelRatio(){return 1}}class Mf extends S1{#e=[0,0,0,0];#t;#n=[];#r;#s;#o=new Set;#i=void 0;#c=1;#a={width:0,height:0};constructor(e,t){if(super(e),this.#s=t.webGLHelper,this.#r=t.framebufferInfo,this.#c=t.devicePixelRatio,this.#a=t.canvasSize,t.clearColor){const r=Fn(t.clearColor).rgb();this.#e=[r.r/255,r.g/255,r.b/255,r.opacity]}}getDevicePixelRatio(){return this.#c}pushView(e,t){this.#o.add(e),this.#i=t}renderMark(e,t){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(t);r&&this.#n.push({mark:e,callback:r,coords:this.#i,clipRect:t.clipRect})}render(){if(this.#t||this.#l(),this.#t.length==0)return;const e=this.#s.gl,t=this.#r;t?(e.bindFramebuffer(e.FRAMEBUFFER,t.framebuffer),e.viewport(0,0,t.width,t.height)):e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight),e.disable(e.SCISSOR_TEST),e.clearColor(...this.#e),e.clear(e.COLOR_BUFFER_BIT);for(const r of this.#o)r.onBeforeRender();for(const r of this.#t)r();this.#r&&e.bindFramebuffer(e.FRAMEBUFFER,null)}#l(){this.#t=[];let e=!0,t=!0;const r=o=>()=>{e&&o()},i=o=>()=>{e&&t&&o()},s=Qo(this.#n.reverse(),o=>o.mark);for(const[o,a]of[...s.entries()].reverse()){if(!o.isReady())continue;this.#t.push(()=>{e=o.unitView.getEffectiveOpacity()>0}),this.#t.push(...o.prepareRender(this.globalOptions).map(c=>r(c)));let l;for(const c of a){const u=c.coords;u.equals(l)||this.#t.push(r(()=>{t=o.setViewport(this.#a,this.#c,u,c.clipRect)})),this.#t.push(i(c.callback)),l=c.coords}}}}class s6 extends S1{constructor(...e){super({}),this.contexts=e}pushView(e,t){for(const r of this.contexts)r.pushView(e,t)}popView(e){for(const t of this.contexts)t.popView(e)}renderMark(e,t){for(const r of this.contexts)r.renderMark(e,t)}}class o6{#e;#t;#n;#r;#s;#o;#i;#c;constructor({viewRoot:e,glHelper:t,getBackground:r,broadcast:i,onLayoutComputed:s}){this.#e=e,this.#t=t,this.#n=r,this.#r=i,this.#s=s,this.#o=void 0,this.#i=void 0,this.#c=!1}computeLayout(){const e=this.#e;if(!e)return;this.#r("layout");const t=this.#t.getLogicalCanvasSize();if(isNaN(t.width)||isNaN(t.height)){console.log(`NaN in canvas size: ${t.width}x${t.height}. Skipping computeLayout().`);return}const r={webGLHelper:this.#t,canvasSize:t,devicePixelRatio:window.devicePixelRatio??1};this.#o=new Mf({picking:!1},{...r,clearColor:this.#n()}),this.#i=new Mf({picking:!0},{...r,framebufferInfo:this.#t._pickingBufferInfo}),e.render(new s6(this.#o,this.#i),ve.create(0,0,t.width,t.height)),this.#s(),this.#r("layoutComputed")}renderAll(){this.#o?.render(),this.#c=!0}renderPickingFramebuffer(){this.#c&&(this.#i.render(),this.#c=!1)}}function a6(n){const e=o=>{throw new Error("ViewContext."+o+" is not configured.")},t={dataFlow:n.dataFlow??e("dataFlow"),glHelper:n.glHelper??e("glHelper"),animator:n.animator??e("animator"),genomeStore:n.genomeStore,fontManager:n.fontManager??e("fontManager"),createOrImportView:async function(o,a,l,c,u){const f=n.createOrImportViewWithContext;return f?f(t,o,a,l,c,u):Promise.reject(new Error("ViewContext.createOrImportView is not configured."))}},r=["requestLayoutReflow","updateTooltip","getNamedDataFromProvider","getCurrentHover","addKeyboardListener","addBroadcastListener","removeBroadcastListener","highlightView","isViewConfiguredVisible","isViewSpec"],i=n,s=t;for(const o of r)s[o]=i[o]??(()=>e(o));return t}function c6({glHelper:n,viewRoot:e,logicalWidth:t,logicalHeight:r,devicePixelRatio:i,clearColor:s="white"}){t??=n.getLogicalCanvasSize().width,r??=n.getLogicalCanvasSize().height,i??=window.devicePixelRatio??1;const o=n.gl,a=Math.floor(t*i),l=Math.floor(r*i),c=P0(o,[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],a,l),u=new Mf({picking:!1},{webGLHelper:n,canvasSize:{width:t,height:r},devicePixelRatio:i,clearColor:s,framebufferInfo:c});return e.render(u,ve.create(0,0,t,r)),u.render(),fQ(o,c,"image/png")}Al("fasta",zF);class Q1{#e=[];#t;#n;#r;#s;#o;#i;#c=new IE;#a=new ed;#l=new ed;constructor(e,t,r={}){this.container=e,this.options=r,r.inputBindingContainer??="default",this.spec=t,this.viewFactory=new XR,this.namedDataProviders=[],this.animator=new NF(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=i=>i.isVisibleInSpec(),this.tooltipHandlers={default:sR,refseqgene:VF,...r.tooltipHandlers??{}},this.viewRoot=void 0,this.#s=new OE(e,r),this.dpr=window.devicePixelRatio}get#u(){return this.container.querySelector(".canvas-wrapper")}#f(){this.#s.initialize(this.viewRoot)}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(const t of this.namedDataProviders){const r=t(e);if(r)return r}}updateNamedData(e,t){const r=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!r)throw new Error("No such named data source: "+e);r.dataSource.updateDynamicData(t),this.animator.requestRender()}addEventListener(e,t){this.#a.add(e,t)}removeEventListener(e,t){this.#a.remove(e,t)}broadcast(e,t){const r={type:e,payload:t};this.viewRoot.visit(i=>i.handleBroadcast(r)),this.#l.emit(e,r)}#A(){const e=this.viewRoot.paramRuntime.allocateSetter("devicePixelRatio",this.dpr),t=()=>{this.#i.invalidateSize(),this.dpr=window.devicePixelRatio,e(this.dpr),this.computeLayout(),this.renderAll()};if(this.viewRoot.getSize().isGrowing()){const s=new ResizeObserver(t);s.observe(this.container),this.#e.push(()=>s.disconnect())}let r=null;const i=()=>{r!=null&&(r(),t());const s=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);s.addEventListener("change",i),r=()=>{s.removeEventListener("change",i)}};i(),r&&this.#e.push(r)}#h(){const{canvasWrapper:e,loadingIndicatorsElement:t,tooltip:r}=hE(this.container);this.#i=new aQ(e,()=>this.viewRoot?n8(this.viewRoot):{width:void 0,height:void 0},{powerPreference:this.options.powerPreference??"default"}),this.tooltip=r,this.#r=new $h,this.#n=new CE(t,this.#r)}destroy(){const e=this.#u;for(this.container.classList.remove("genome-spy"),e.classList.remove("loading"),this.#c.removeAll(),this.#e.forEach(t=>t()),this.#i.finalize(),this.#s.remove(),this.#n.destroy();this.container.firstChild;)this.container.firstChild.remove()}async#d(){await this.#g();const e=this.#p();await this.#w(e),await DF(this.viewRoot,e.dataFlow,e.fontManager,t=>this.broadcast("dataFlowBuilt",t)),this.#m(e)}async#g(){this.spec.genome&&(this.genomeStore=new TF(this.spec.baseUrl),await this.genomeStore.initialize(this.spec.genome))}#p(){const e=new Um;return e.loadingStatusRegistry=this.#r,a6({dataFlow:e,glHelper:this.#i,animator:this.animator,genomeStore:this.genomeStore,fontManager:new OF(this.#i),updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this.#o.getCurrentHover(),addKeyboardListener:(t,r)=>{this.#c.add(t,r)},addBroadcastListener:(t,r)=>this.#l.add(t,r),removeBroadcastListener:(t,r)=>this.#l.remove(t,r),isViewConfiguredVisible:this.viewVisibilityPredicate,isViewSpec:t=>this.viewFactory.isViewSpec(t),createOrImportViewWithContext:(t,r,i,s,o,a)=>this.viewFactory.createOrImportView(r,t,i,s,o,a),highlightView:yE(this.container)})}async#w(e){const t=this.spec;t.datasets&&this.registerNamedDataProvider(r=>t.datasets[r]),this.viewRoot=await e.createOrImportView(t,null,null,E1),this.#r.set(this.viewRoot,"loading"),this.#u.style.flexGrow=this.viewRoot.getSize().height.grow>0?"1":"0",this.#f(),oR(this.viewRoot),i1(this.viewRoot),this.#C(),this.#i.invalidateSize(),this.#t=new o6({viewRoot:this.viewRoot,glHelper:this.#i,getBackground:()=>this.spec.background,broadcast:this.broadcast.bind(this),onLayoutComputed:()=>this.#n.updateLayout()}),e.requestLayoutReflow=this.computeLayout.bind(this),this.#A()}#C(){const e=AR(this.viewRoot);if(e.length)for(const t of e)console.warn("Selector constraints warning:",t.message)}#m(e){e.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(t=>Ms(t,"size")),this.#i.invalidateSize(),this.#o=new i6({viewRoot:this.viewRoot,glHelper:this.#i,tooltip:this.tooltip,animator:this.animator,emitEvent:this.#a.emit.bind(this.#a),tooltipHandlers:this.tooltipHandlers,renderPickingFramebuffer:this.renderPickingFramebuffer.bind(this),getDevicePixelRatio:()=>this.dpr})}async launch(){let e=!1;try{return this.#h(),await this.#d(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),e=!0,!0}catch(t){const r=`${t.view?`At "${t.view.getPathString()}": `:""}${t.toString()}`;return console.error(t.stack),this.options.onError?.(t,this.container)||dE(this.container,r),this.viewRoot&&this.#r.set(this.viewRoot,"error",r),!1}finally{this.#u.classList.remove("loading"),e&&this.viewRoot&&this.#r.set(this.viewRoot,"complete")}}async initializeVisibleViewData(){this.viewRoot&&(await kF(this.viewRoot,this.viewRoot.context.dataFlow,this.viewRoot.context.fontManager),this.viewRoot._invalidateCacheByPrefix("size","progeny"),this.#i.invalidateSize(),this.computeLayout(),this.animator.requestRender())}registerMouseEvents(){this.#o.registerMouseEvents()}updateTooltip(e,t){this.#o.updateTooltip(e,t)}exportCanvas(e,t,r,i="white"){const s=c6({glHelper:this.#i,viewRoot:this.viewRoot,logicalWidth:e,logicalHeight:t,devicePixelRatio:r,clearColor:i});return this.computeLayout(),this.renderAll(),s}getLogicalCanvasSize(){return this.#i.getLogicalCanvasSize()}computeLayout(){this.#t.computeLayout()}renderAll(){this.#t.renderAll()}renderPickingFramebuffer(){this.#t.renderPickingFramebuffer()}getSearchableViews(){const e=[];return this.viewRoot.visit(t=>{t instanceof tt&&t.getSearchAccessors().length>0&&e.push(t)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(t=>{for(const r of Object.values(t.resolutions.scale))r.name&&e.set(r.name,r)}),e}}const l6="data:image/svg+xml,%3csvg%20viewBox='0%200%2032%2032'%20xmlns='http://www.w3.org/2000/svg'%20fill-rule='evenodd'%20clip-rule='evenodd'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='1.5'%3e%3cpath%20d='M4.7%2021.2s.4%202.3%201.3%203.6C7%2026%209.8%2028%209.8%2028s3.4-2.6%206.4-8.5c0%200%201%20.1%201.9-.4.9-.6.8-.4%201-1.2%200%200%202.9.5%206.6%200%202.1-.3%204.3-1%206.2-2.5%200%200-1.1-1.7-2.5-5.1-.5-1.3-2-1.8-4.6-4.6l-8.2%208.6-11.9%206.9z'%20fill-opacity='.1'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='%237fbbdd'/%3e%3cpath%20d='M12.4%2015.5c-.7-.5-2.4-.8-4.4-.4-2%20.4-4%201.3-4.8%201.8-.5.3-1.2%201-1.2%201.4%200%20.7.3%201.8.8%202.4.3.3.7.5%201.4.6.8%200%202.5-1.4%203.5-2%201-.6%201.6-.8%202.7-1.2l-2.9%202.4c-1.3%201.2-2.2%201.5-2.4%202.3%200%20.5%200%201.4.5%201.8.4.5.6.8%201.6.8.6%200%201%200%202.6-1.5.9-.9%202.3-3%202.7-3.7.6-1.1%201-2.2.7-3-.2-1-.4-1.4-.8-1.7zM17.4%2014.2c-.3-.5-.9-1.2-.2-2.5l1.9-3c.5-.8%202-2.3%202.6-2.6.6-.4%201.5-.6%202-.2.6.4%201%201%201.3%201.5.4.6.7%201.3.2%202-.7%201-1.6.9-2.8%201.7-1.2.8-1.9%201.2-2.5%201.9l3.8-1.8c1.3-.6%202.7-1.1%203.4-.7.8.5.8.7%201%201.4.3%201-.2%201.9-.8%202.4-.5.6-1.5.9-2.6%201.2-1.4.4-4.5%201-5.8.5-1.3-.5-1.3-1.4-1.5-1.8z'%20fill='%23fff'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='%237fbbdd'/%3e%3cpath%20d='M13.8%2015.3c.9.8.6%202%201.4%201.8%201-.2%201.4-.8%201.3-1.5%200-.7%200-.8-.4-1.6-.3-.7-1-1.1-2-.5-.7.5-1.4%201.3-1.4%201.3s.2-.3%201.1.5z'%20fill='%23fff'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3c/svg%3e",u6="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5'%20viewBox='0%200%2064%2064'%3e%3cpath%20d='M208.6%20548.2s11.2%2046.2%2031.2%2071c20%2024.9%2079.3%2061.6%2079.3%2061.6S385.6%20623%20438%20498.3c0%200%2018.1%201%2036-11.9%2017.7-12.7%2016.3-7.9%2021-24.8%200%200%2057%206.3%20131-9.7%2041.7-9.1%2084.3-26.3%20121.5-58.8%200%200-25.4-32.9-58-101.7-12.4-26.1-41.9-34.3-98.7-88L438.1%20391.2%20208.6%20548.2Z'%20style='fill-opacity:.11'%20transform='matrix(.10221%20.00684%20-.00671%20.10035%20-8%20-13.2)'/%3e%3cg%20transform='rotate(-35.4%2034.2%2080.8)%20scale(.10057)'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='a'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20d='M386.9%20397.2c-15.6-13.6-51.8-22.4-96.3-16.7-44.5%205.8-93.8%2021.8-111.8%2031.6-10.6%205.7-27.3%2017.3-28.1%2027.2-1.2%2014.2%202.9%2037.8%2015%2052%206%207.2%2014.2%2012.1%2028.1%2014.1%2017.9%202.6%2059-24.8%2081.6-36.2%2024-12%2038.6-14.6%2063-22.2%200%200-47%2031.6-68.2%2047.4-30.6%2022.9-51.6%2028-57.3%2045.5-3.1%209.4-.7%2027.9%207.5%2037.6%209%2011%2012.8%2017.6%2034.2%2020.1%2012.7%201.5%2022%201.2%2059.8-28.6%2021.7-17.2%2055.9-59.2%2067-74.4%2016.2-22%2023.8-43.1%2021.3-59.6-3.7-23.6-8.4-31.3-15.8-37.8Z'%20style='fill:%23fff'%20transform='scale(.88664)%20rotate(31.2%20485%20792.2)'/%3e%3cpath%20d='M484.7%20379c-5.4-11.1-17.6-28.5-.8-53.8a739%20739%200%200%201%2044.2-60.6c13.2-16.3%2046.7-46.2%2059.6-52%2013-6%2033.3-8.7%2044.2.2%2011%209.1%2016.5%2020.6%2023%2032.7%207.4%2013.8%2012.4%2029.3%201.6%2042.8-15.4%2019.2-34.3%2017-61.6%2031.5-27.7%2014.8-42.3%2023.1-55.7%2035.9%200%200%2052.2-21.6%2082-31.2%2029.8-9.7%2059.8-20%2074.8-8.5s14.6%2015.5%2018.4%2031.2c4.7%2019.4-7.2%2038-20.1%2048.6-13%2010.7-34.3%2016-57.4%2021-30.5%206.8-96.6%2015.1-124%202.6-27.5-12.6-24.4-32.8-28.2-40.5Z'%20style='fill:%23fff'%20transform='scale(.87906)%20rotate(31.2%20487.2%20893.5)'/%3e%3c/g%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3cg%20transform='rotate(-4.2%20-78%20211)%20scale(.10057)'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='b'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23b)'%3e%3cpath%20d='M413.3%20402.7c17.5%2018.9%2010%2045.7%2028.4%2043.4%2021.7-2.7%2030.9-15.7%2031.6-32.7.7-17-1-19.5-7.1-38-6.1-18.7-18.2-23.2-43.4-18.2-20.8%204.1-17.8%203-24%2010-6.4%207-14.5%2026-14.5%2026s8.4-12.7%2029%209.5Z'%20style='fill:%23fff'%20transform='matrix(.90907%200%200%20.85852%2037%2052.2)'/%3e%3c/g%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3c/svg%3e";async function f6(n,e,t={}){let r;if(le(n)){if(r=document.querySelector(n),!r)throw new Error(`No such element: ${n}`)}else if(n instanceof HTMLElement)r=n;else throw new Error(`Invalid element: ${n}`);let i;try{const s=ze(e)?e:await D1(e);if(s.baseUrl??="",s.width??="container",s.padding??=10,r==document.body){const o=document.createElement("div");o.style.position="fixed",o.style.inset="0",o.style.overflow="hidden",r.appendChild(o),r=o}i=new Q1(r,s,t),A6(i,t),await i.launch()}catch(s){r.innerText=s.toString(),console.error(s)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(s,o){i.addEventListener(s,o)},removeEventListener(s,o){i.removeEventListener(s,o)},getScaleResolutionByName(s){return i.getNamedScaleResolutions().get(s)},updateNamedData:i.updateNamedData.bind(i),exportCanvas:i.exportCanvas.bind(i)}}function A6(n,e){e.namedDataProvider&&n.registerNamedDataProvider(e.namedDataProvider)}async function D1(n){let e;try{e=await xm(n)}catch(t){throw new Error(`Could not load or parse configuration: ${n}, reason: ${t.message}`)}if(!e.baseUrl){const t=n.match(/^[^?#]*\//);e.baseUrl=t&&t[0]||"./"}return e}class h6{constructor(e){this.blob=e}async read(e,t=0){if(!e)return new Uint8Array(0);const r=t,i=r+e,s=this.blob.slice(r,i);return s.bytes?s.bytes():new Uint8Array(await s.arrayBuffer())}async readFile(e){const t=typeof e=="string"?e:e?.encoding;if(t==="utf8")return this.blob.text();if(t)throw new Error(`unsupported encoding: ${t}`);return this.blob.bytes?this.blob.bytes():new Uint8Array(await this.blob.arrayBuffer())}async stat(){return{size:this.blob.size}}async close(){}}function d6(n){return(typeof n=="object"&&n!==null&&"message"in n?n.message:`${n}`).replace(/\.$/,"")}class _t{constructor(e,t={}){this.baseOverrides={},this.url=e;const r=t.fetch||globalThis.fetch.bind(globalThis);t.overrides&&(this.baseOverrides=t.overrides),this.fetchImplementation=r}async fetch(e,t){const r=s=>new Error(`${d6(s)} fetching ${e}`,{cause:s});let i;try{i=await this.fetchImplementation(e,t)}catch(s){if(`${s}`.includes("Failed to fetch")){console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{i=await this.fetchImplementation(e,{...t,cache:"reload"})}catch(o){throw r(o)}}else throw r(s)}return i}async read(e,t,r={}){if(e===0)return new Uint8Array(0);const{headers:i={},signal:s,overrides:o={}}=r;e<1/0?i.range=`bytes=${t}-${t+e-1}`:e===1/0&&t!==0&&(i.range=`bytes=${t}-`);const a=await this.fetch(this.url,{...this.baseOverrides,...o,headers:{...this.baseOverrides.headers,...o.headers,...i},method:"GET",redirect:"follow",mode:"cors",signal:s});if(!a.ok)throw new Error(`HTTP ${a.status} fetching ${this.url}`);if(a.status===200&&t===0||a.status===206){const l=a.headers.get("content-range"),c=/\/(\d+)$/.exec(l||"");c?.[1]&&(this._stat={size:parseInt(c[1],10)});const u=a.bytes?await a.bytes():new Uint8Array(await a.arrayBuffer());return u.byteLength<=e?u:u.subarray(0,e)}throw new Error(a.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${a.status} fetching ${this.url}`)}async readFile(e={}){let t,r;if(typeof e=="string")t=e,r={};else{t=e.encoding;const{encoding:l,...c}=e;r=c}const{headers:i={},signal:s,overrides:o={}}=r,a=await this.fetch(this.url,{...this.baseOverrides,...o,headers:{...this.baseOverrides.headers,...o.headers,...i},method:"GET",redirect:"follow",mode:"cors",signal:s});if(!a.ok)throw new Error(`HTTP ${a.status} fetching ${this.url}`);if(t==="utf8")return a.text();if(t)throw new Error(`unsupported encoding: ${t}`);return a.bytes?a.bytes():new Uint8Array(await a.arrayBuffer())}async stat(){if(!this._stat&&(await this.read(10,0),!this._stat))throw new Error(`unable to determine size of file at ${this.url}`);return this._stat}async close(){}}class We{readFile(){throw new Error("unimplemented")}read(){throw new Error("unimplemented")}close(){throw new Error("unimplemented")}}const Zs=Object.freeze(Object.defineProperty({__proto__:null,BlobFile:h6,LocalFile:We,RemoteFile:_t},Symbol.toStringTag,{value:"Module"})),k1=65536,g6=k1*k1;function Nf(n,e=0){const t=n[e]|n[e+1]<<8|n[e+2]<<16|n[e+3]<<24;return((n[e+4]|n[e+5]<<8|n[e+6]<<16|n[e+7]<<24)>>>0)*g6+(t>>>0)}const rc=1;function F1(n,e,t){const r=e[rc],i=t?t[rc]:1/0;return r<=n&&i>n?0:r<n?-1:1}class p6{filehandle;index;constructor({filehandle:e}){this.filehandle=e}_getIndex(){return this.index||(this.index=this._readIndex().catch(e=>{throw this.index=void 0,e})),this.index}async _readIndex(){const e=await this.filehandle.read(8,0),t=Nf(e);if(!t)return[[0,0]];const r=new Array(t+1);r[0]=[0,0];const i=16*t;if(i>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");const s=await this.filehandle.read(i,8);for(let o=0;o<t;o+=1){const a=Nf(s,o*16),l=Nf(s,o*16+8);r[o+1]=[a,l]}return r}async getLastBlock(){return(await this._getIndex()).at(-1)}async getRelevantBlocksForRead(e,t){const r=t+e;if(e===0)return[];const i=await this._getIndex(),s=[];let o=0,a=i.length-1,l=Math.floor(i.length/2),c=F1(t,i[l],i[l+1]);for(;c!==0;)c>0?a=l-1:c<0&&(o=l+1),l=Math.ceil((a-o)/2)+o,c=F1(t,i[l],i[l+1]);s.push(i[l]);let u=l+1;for(;u<i.length&&(s.push(i[u]),!(i[u][rc]>=r));u+=1);return s[s.length-1][rc]<r&&s.push([]),s}}var R1=0,Tf=2,ic=4,Ir=0,sc=1,m6=2,w6=-5;function C6(n,e){return Object.prototype.hasOwnProperty.call(n,e)}function y6(n){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var t=e.shift();if(t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(var r in t)C6(t,r)&&(n[r]=t[r])}}return n}function M1(n,e){return n.length===e?n:n.subarray?n.subarray(0,e):(n.length=e,n)}var $s={arraySet:function(n,e,t,r,i){if(e.subarray&&n.subarray){n.set(e.subarray(t,t+r),i);return}for(var s=0;s<r;s++)n[i+s]=e[t+s]},flattenChunks:function(n){var e,t,r,i,s,o;for(r=0,e=0,t=n.length;e<t;e++)r+=n[e].length;for(o=new Uint8Array(r),i=0,e=0,t=n.length;e<t;e++)s=n[e],o.set(s,i),i+=s.length;return o},Buf8:function(n){return new Uint8Array(n)},Buf16:function(n){return new Uint16Array(n)},Buf32:function(n){return new Int32Array(n)}},eo={arraySet:function(n,e,t,r,i){for(var s=0;s<r;s++)n[i+s]=e[t+s]},flattenChunks:function(n){return[].concat.apply([],n)},Buf8:function(n){return new Array(n)},Buf16:function(n){return new Array(n)},Buf32:function(n){return new Array(n)}};let ci=()=>{const n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return ci=()=>n,n},Un=(n,e,t,r,i)=>(Un=ci()?$s.arraySet:eo.arraySet,Un(n,e,t,r,i)),Pf=n=>(Pf=ci()?$s.flattenChunks:eo.flattenChunks,Pf(n)),li=n=>(li=ci()?$s.Buf8:eo.Buf8,li(n)),ui=n=>(ui=ci()?$s.Buf16:eo.Buf16,ui(n)),fi=n=>(fi=ci()?$s.Buf32:eo.Buf32,fi(n)),N1=function(){let n=!0;try{String.fromCharCode.apply(null,[0])}catch{n=!1}return N1=()=>n,n},T1=function(){let n=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{n=!1}return T1=()=>n,n},Lf=function(n){for(var e=li(256),t=0;t<256;t++)e[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;return e[254]=e[254]=1,Lf=r=>e[r],e[n]};function P1(n){var e,t,r,i,s,o=n.length,a=0;for(i=0;i<o;i++)t=n.charCodeAt(i),(t&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(t=65536+(t-55296<<10)+(r-56320),i++)),a+=t<128?1:t<2048?2:t<65536?3:4;for(e=new Uint8Array(a),s=0,i=0;s<a;i++)t=n.charCodeAt(i),(t&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(t=65536+(t-55296<<10)+(r-56320),i++)),t<128?e[s++]=t:t<2048?(e[s++]=192|t>>>6,e[s++]=128|t&63):t<65536?(e[s++]=224|t>>>12,e[s++]=128|t>>>6&63,e[s++]=128|t&63):(e[s++]=240|t>>>18,e[s++]=128|t>>>12&63,e[s++]=128|t>>>6&63,e[s++]=128|t&63);return e}function I6(n,e){if(e<65534&&(n.subarray&&T1()||!n.subarray&&N1()))return String.fromCharCode.apply(null,M1(n,e));for(var t="",r=0;r<e;r++)t+=String.fromCharCode(n[r]);return t}function b6(n){for(var e=new Uint8Array(n.length),t=0,r=e.length;t<r;t++)e[t]=n.charCodeAt(t);return e}function E6(n,e){var t,r,i,s,o=e||n.length,a=new Array(o*2);for(r=0,t=0;t<o;){if(i=n[t++],i<128){a[r++]=i;continue}if(s=Lf(i),s>4){a[r++]=65533,t+=s-1;continue}for(i&=s===2?31:s===3?15:7;s>1&&t<o;)i=i<<6|n[t++]&63,s--;if(s>1){a[r++]=65533;continue}i<65536?a[r++]=i:(i-=65536,a[r++]=55296|i>>10&1023,a[r++]=56320|i&1023)}return I6(a,r)}function x6(n,e){var t;for(e=e||n.length,e>n.length&&(e=n.length),t=e-1;t>=0&&(n[t]&192)===128;)t--;return t<0||t===0?e:t+Lf(n[t])>e?t:e}function B6(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function Of(n,e,t,r){for(var i=n&65535|0,s=n>>>16&65535|0,o=0;t!==0;){o=t>2e3?2e3:t,t-=o;do i=i+e[r++]|0,s=s+i|0;while(--o);i%=65521,s%=65521}return i|s<<16|0}function v6(){for(var n,e=[],t=0;t<256;t++){n=t;for(var r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;e[t]=n}return e}let L1=function(){const n=v6();return L1=()=>n,n};function Yt(n,e,t,r){var i=L1(),s=r+t;n^=-1;for(var o=r;o<s;o++)n=n>>>8^i[(n^e[o])&255];return n^-1}var oc=30,S6=12;function Q6(n,e){var t,r,i,s,o,a,l,c,u,f,h,A,d,g,p,m,C,y,w,E,x,b,S,Q,v;t=n.state,r=n.next_in,Q=n.input,i=r+(n.avail_in-5),s=n.next_out,v=n.output,o=s-(e-n.avail_out),a=s+(n.avail_out-257),l=t.dmax,c=t.wsize,u=t.whave,f=t.wnext,h=t.window,A=t.hold,d=t.bits,g=t.lencode,p=t.distcode,m=(1<<t.lenbits)-1,C=(1<<t.distbits)-1;e:do{d<15&&(A+=Q[r++]<<d,d+=8,A+=Q[r++]<<d,d+=8),y=g[A&m];t:for(;;){if(w=y>>>24,A>>>=w,d-=w,w=y>>>16&255,w===0)v[s++]=y&65535;else if(w&16){E=y&65535,w&=15,w&&(d<w&&(A+=Q[r++]<<d,d+=8),E+=A&(1<<w)-1,A>>>=w,d-=w),d<15&&(A+=Q[r++]<<d,d+=8,A+=Q[r++]<<d,d+=8),y=p[A&C];n:for(;;){if(w=y>>>24,A>>>=w,d-=w,w=y>>>16&255,w&16){if(x=y&65535,w&=15,d<w&&(A+=Q[r++]<<d,d+=8,d<w&&(A+=Q[r++]<<d,d+=8)),x+=A&(1<<w)-1,x>l){n.msg="invalid distance too far back",t.mode=oc;break e}if(A>>>=w,d-=w,w=s-o,x>w){if(w=x-w,w>u&&t.sane){n.msg="invalid distance too far back",t.mode=oc;break e}if(b=0,S=h,f===0){if(b+=c-w,w<E){E-=w;do v[s++]=h[b++];while(--w);b=s-x,S=v}}else if(f<w){if(b+=c+f-w,w-=f,w<E){E-=w;do v[s++]=h[b++];while(--w);if(b=0,f<E){w=f,E-=w;do v[s++]=h[b++];while(--w);b=s-x,S=v}}}else if(b+=f-w,w<E){E-=w;do v[s++]=h[b++];while(--w);b=s-x,S=v}for(;E>2;)v[s++]=S[b++],v[s++]=S[b++],v[s++]=S[b++],E-=3;E&&(v[s++]=S[b++],E>1&&(v[s++]=S[b++]))}else{b=s-x;do v[s++]=v[b++],v[s++]=v[b++],v[s++]=v[b++],E-=3;while(E>2);E&&(v[s++]=v[b++],E>1&&(v[s++]=v[b++]))}}else if((w&64)===0){y=p[(y&65535)+(A&(1<<w)-1)];continue n}else{n.msg="invalid distance code",t.mode=oc;break e}break}}else if((w&64)===0){y=g[(y&65535)+(A&(1<<w)-1)];continue t}else if(w&32){t.mode=S6;break e}else{n.msg="invalid literal/length code",t.mode=oc;break e}break}}while(r<i&&s<a);E=d>>3,r-=E,d-=E<<3,A&=(1<<d)-1,n.next_in=r,n.next_out=s,n.avail_in=r<i?5+(i-r):5-(r-i),n.avail_out=s<a?257+(a-s):257-(s-a),t.hold=A,t.bits=d}var Ai=15,O1=852,U1=592,G1=0,Uf=1,z1=2,D6=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k6=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],F6=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],R6=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function to(n,e,t,r,i,s,o,a){var l=a.bits,c=0,u=0,f=0,h=0,A=0,d=0,g=0,p=0,m=0,C=0,y,w,E,x,b,S=null,Q=0,v,F=ui(Ai+1),R=ui(Ai+1),N=null,O=0,H,G,_;for(c=0;c<=Ai;c++)F[c]=0;for(u=0;u<r;u++)F[e[t+u]]++;for(A=l,h=Ai;h>=1&&F[h]===0;h--);if(A>h&&(A=h),h===0)return i[s++]=1<<24|64<<16|0,i[s++]=1<<24|64<<16|0,a.bits=1,0;for(f=1;f<h&&F[f]===0;f++);for(A<f&&(A=f),p=1,c=1;c<=Ai;c++)if(p<<=1,p-=F[c],p<0)return-1;if(p>0&&(n===G1||h!==1))return-1;for(R[1]=0,c=1;c<Ai;c++)R[c+1]=R[c]+F[c];for(u=0;u<r;u++)e[t+u]!==0&&(o[R[e[t+u]]++]=u);if(n===G1?(S=N=o,v=19):n===Uf?(S=D6,Q-=257,N=k6,O-=257,v=256):(S=F6,N=R6,v=-1),C=0,u=0,c=f,b=s,d=A,g=0,E=-1,m=1<<A,x=m-1,n===Uf&&m>O1||n===z1&&m>U1)return 1;for(;;){H=c-g,o[u]<v?(G=0,_=o[u]):o[u]>v?(G=N[O+o[u]],_=S[Q+o[u]]):(G=96,_=0),y=1<<c-g,w=1<<d,f=w;do w-=y,i[b+(C>>g)+w]=H<<24|G<<16|_|0;while(w!==0);for(y=1<<c-1;C&y;)y>>=1;if(y!==0?(C&=y-1,C+=y):C=0,u++,--F[c]===0){if(c===h)break;c=e[t+o[u]]}if(c>A&&(C&x)!==E){for(g===0&&(g=A),b+=f,d=c-g,p=1<<d;d+g<h&&(p-=F[d+g],!(p<=0));)d++,p<<=1;if(m+=1<<d,n===Uf&&m>O1||n===z1&&m>U1)return 1;E=C&x,i[E]=A<<24|d<<16|b-s|0}}return C!==0&&(i[b+C]=c-g<<24|64<<16|0),a.bits=A,0}var M6=0,H1=1,V1=2,_1=4,br=0,N6=1,T6=2,mt=-2,Y1=-3,J1=-4,P6=-5,q1=8,K1=1,j1=2,W1=3,X1=4,Z1=5,$1=6,ew=7,tw=8,nw=9,rw=10,ac=11,ln=12,Gf=13,iw=14,zf=15,sw=16,ow=17,aw=18,cw=19,cc=20,lc=21,lw=22,uw=23,fw=24,Aw=25,hw=26,Hf=27,dw=28,gw=29,pe=30,pw=31,L6=32,O6=852,U6=592;function mw(n){return(n>>>24&255)+(n>>>8&65280)+((n&65280)<<8)+((n&255)<<24)}function G6(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=ui(320),this.work=ui(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function z6(n){var e;return!n||!n.state?mt:(e=n.state,n.total_in=n.total_out=e.total=0,n.msg="",e.wrap&&(n.adler=e.wrap&1),e.mode=K1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=fi(O6),e.distcode=e.distdyn=fi(U6),e.sane=1,e.back=-1,br)}function H6(n){var e;return!n||!n.state?mt:(e=n.state,e.wsize=0,e.whave=0,e.wnext=0,z6(n))}function V6(n,e){var t,r;return!n||!n.state||(r=n.state,e<0?(t=0,e=-e):(t=(e>>4)+1,e<48&&(e&=15)),e&&(e<8||e>15))?mt:(r.window!==null&&r.wbits!==e&&(r.window=null),r.wrap=t,r.wbits=e,H6(n))}function _6(n,e){var t,r;return n?(r=new G6,n.state=r,r.window=null,t=V6(n,e),t!==br&&(n.state=null),t):mt}var ww=!0,Vf,_f;function Y6(n){if(ww){var e;for(Vf=fi(512),_f=fi(32),e=0;e<144;)n.lens[e++]=8;for(;e<256;)n.lens[e++]=9;for(;e<280;)n.lens[e++]=7;for(;e<288;)n.lens[e++]=8;for(to(H1,n.lens,0,288,Vf,0,n.work,{bits:9}),e=0;e<32;)n.lens[e++]=5;to(V1,n.lens,0,32,_f,0,n.work,{bits:5}),ww=!1}n.lencode=Vf,n.lenbits=9,n.distcode=_f,n.distbits=5}function Cw(n,e,t,r){var i,s=n.state;return s.window===null&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=li(s.wsize)),r>=s.wsize?(Un(s.window,e,t-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),Un(s.window,e,t-r,i,s.wnext),r-=i,r?(Un(s.window,e,t-r,r,0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}function J6(n,e){var t,r,i,s,o,a,l,c,u,f,h,A,d,g,p=0,m,C,y,w,E,x,b,S,Q=li(4),v,F,R=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!n||!n.state||!n.output||!n.input&&n.avail_in!==0)return mt;t=n.state,t.mode===ln&&(t.mode=Gf),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=t.hold,u=t.bits,f=a,h=l,S=br;e:for(;;)switch(t.mode){case K1:if(t.wrap===0){t.mode=Gf;break}for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(t.wrap&2&&c===35615){t.check=0,Q[0]=c&255,Q[1]=c>>>8&255,t.check=Yt(t.check,Q,2,0),c=0,u=0,t.mode=j1;break}if(t.flags=0,t.head&&(t.head.done=!1),!(t.wrap&1)||(((c&255)<<8)+(c>>8))%31){n.msg="incorrect header check",t.mode=pe;break}if((c&15)!==q1){n.msg="unknown compression method",t.mode=pe;break}if(c>>>=4,u-=4,b=(c&15)+8,t.wbits===0)t.wbits=b;else if(b>t.wbits){n.msg="invalid window size",t.mode=pe;break}t.dmax=1<<b,n.adler=t.check=1,t.mode=c&512?rw:ln,c=0,u=0;break;case j1:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(t.flags=c,(t.flags&255)!==q1){n.msg="unknown compression method",t.mode=pe;break}if(t.flags&57344){n.msg="unknown header flags set",t.mode=pe;break}t.head&&(t.head.text=c>>8&1),t.flags&512&&(Q[0]=c&255,Q[1]=c>>>8&255,t.check=Yt(t.check,Q,2,0)),c=0,u=0,t.mode=W1;case W1:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}t.head&&(t.head.time=c),t.flags&512&&(Q[0]=c&255,Q[1]=c>>>8&255,Q[2]=c>>>16&255,Q[3]=c>>>24&255,t.check=Yt(t.check,Q,4,0)),c=0,u=0,t.mode=X1;case X1:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}t.head&&(t.head.xflags=c&255,t.head.os=c>>8),t.flags&512&&(Q[0]=c&255,Q[1]=c>>>8&255,t.check=Yt(t.check,Q,2,0)),c=0,u=0,t.mode=Z1;case Z1:if(t.flags&1024){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}t.length=c,t.head&&(t.head.extra_len=c),t.flags&512&&(Q[0]=c&255,Q[1]=c>>>8&255,t.check=Yt(t.check,Q,2,0)),c=0,u=0}else t.head&&(t.head.extra=null);t.mode=$1;case $1:if(t.flags&1024&&(A=t.length,A>a&&(A=a),A&&(t.head&&(b=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Array(t.head.extra_len)),Un(t.head.extra,r,s,A,b)),t.flags&512&&(t.check=Yt(t.check,r,A,s)),a-=A,s+=A,t.length-=A),t.length))break e;t.length=0,t.mode=ew;case ew:if(t.flags&2048){if(a===0)break e;A=0;do b=r[s+A++],t.head&&b&&t.length<65536&&(t.head.name+=String.fromCharCode(b));while(b&&A<a);if(t.flags&512&&(t.check=Yt(t.check,r,A,s)),a-=A,s+=A,b)break e}else t.head&&(t.head.name=null);t.length=0,t.mode=tw;case tw:if(t.flags&4096){if(a===0)break e;A=0;do b=r[s+A++],t.head&&b&&t.length<65536&&(t.head.comment+=String.fromCharCode(b));while(b&&A<a);if(t.flags&512&&(t.check=Yt(t.check,r,A,s)),a-=A,s+=A,b)break e}else t.head&&(t.head.comment=null);t.mode=nw;case nw:if(t.flags&512){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(t.check&65535)){n.msg="header crc mismatch",t.mode=pe;break}c=0,u=0}t.head&&(t.head.hcrc=t.flags>>9&1,t.head.done=!0),n.adler=t.check=0,t.mode=ln;break;case rw:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}n.adler=t.check=mw(c),c=0,u=0,t.mode=ac;case ac:if(t.havedict===0)return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,t.hold=c,t.bits=u,T6;n.adler=t.check=1,t.mode=ln;case ln:case Gf:if(t.last){c>>>=u&7,u-=u&7,t.mode=Hf;break}for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}switch(t.last=c&1,c>>>=1,u-=1,c&3){case 0:t.mode=iw;break;case 1:Y6(t),t.mode=cc;break;case 2:t.mode=ow;break;case 3:n.msg="invalid block type",t.mode=pe}c>>>=2,u-=2;break;case iw:for(c>>>=u&7,u-=u&7;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){n.msg="invalid stored block lengths",t.mode=pe;break}t.length=c&65535,c=0,u=0,t.mode=zf;case zf:t.mode=sw;case sw:if(A=t.length,A){if(A>a&&(A=a),A>l&&(A=l),A===0)break e;Un(i,r,s,A,o),a-=A,s+=A,l-=A,o+=A,t.length-=A;break}t.mode=ln;break;case ow:for(;u<14;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(t.nlen=(c&31)+257,c>>>=5,u-=5,t.ndist=(c&31)+1,c>>>=5,u-=5,t.ncode=(c&15)+4,c>>>=4,u-=4,t.nlen>286||t.ndist>30){n.msg="too many length or distance symbols",t.mode=pe;break}t.have=0,t.mode=aw;case aw:for(;t.have<t.ncode;){for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}t.lens[R[t.have++]]=c&7,c>>>=3,u-=3}for(;t.have<19;)t.lens[R[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,v={bits:t.lenbits},S=to(M6,t.lens,0,19,t.lencode,0,t.work,v),t.lenbits=v.bits,S){n.msg="invalid code lengths set",t.mode=pe;break}t.have=0,t.mode=cw;case cw:for(;t.have<t.nlen+t.ndist;){for(;p=t.lencode[c&(1<<t.lenbits)-1],m=p>>>24,C=p>>>16&255,y=p&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(y<16)c>>>=m,u-=m,t.lens[t.have++]=y;else{if(y===16){for(F=m+2;u<F;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c>>>=m,u-=m,t.have===0){n.msg="invalid bit length repeat",t.mode=pe;break}b=t.lens[t.have-1],A=3+(c&3),c>>>=2,u-=2}else if(y===17){for(F=m+3;u<F;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=m,u-=m,b=0,A=3+(c&7),c>>>=3,u-=3}else{for(F=m+7;u<F;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=m,u-=m,b=0,A=11+(c&127),c>>>=7,u-=7}if(t.have+A>t.nlen+t.ndist){n.msg="invalid bit length repeat",t.mode=pe;break}for(;A--;)t.lens[t.have++]=b}}if(t.mode===pe)break;if(t.lens[256]===0){n.msg="invalid code -- missing end-of-block",t.mode=pe;break}if(t.lenbits=9,v={bits:t.lenbits},S=to(H1,t.lens,0,t.nlen,t.lencode,0,t.work,v),t.lenbits=v.bits,S){n.msg="invalid literal/lengths set",t.mode=pe;break}if(t.distbits=6,t.distcode=t.distdyn,v={bits:t.distbits},S=to(V1,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,v),t.distbits=v.bits,S){n.msg="invalid distances set",t.mode=pe;break}t.mode=cc;case cc:t.mode=lc;case lc:if(a>=6&&l>=258){n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,t.hold=c,t.bits=u,Q6(n,h),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=t.hold,u=t.bits,t.mode===ln&&(t.back=-1);break}for(t.back=0;p=t.lencode[c&(1<<t.lenbits)-1],m=p>>>24,C=p>>>16&255,y=p&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(C&&(C&240)===0){for(w=m,E=C,x=y;p=t.lencode[x+((c&(1<<w+E)-1)>>w)],m=p>>>24,C=p>>>16&255,y=p&65535,!(w+m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=w,u-=w,t.back+=w}if(c>>>=m,u-=m,t.back+=m,t.length=y,C===0){t.mode=hw;break}if(C&32){t.back=-1,t.mode=ln;break}if(C&64){n.msg="invalid literal/length code",t.mode=pe;break}t.extra=C&15,t.mode=lw;case lw:if(t.extra){for(F=t.extra;u<F;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}t.length+=c&(1<<t.extra)-1,c>>>=t.extra,u-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=uw;case uw:for(;p=t.distcode[c&(1<<t.distbits)-1],m=p>>>24,C=p>>>16&255,y=p&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((C&240)===0){for(w=m,E=C,x=y;p=t.distcode[x+((c&(1<<w+E)-1)>>w)],m=p>>>24,C=p>>>16&255,y=p&65535,!(w+m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=w,u-=w,t.back+=w}if(c>>>=m,u-=m,t.back+=m,C&64){n.msg="invalid distance code",t.mode=pe;break}t.offset=y,t.extra=C&15,t.mode=fw;case fw:if(t.extra){for(F=t.extra;u<F;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}t.offset+=c&(1<<t.extra)-1,c>>>=t.extra,u-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){n.msg="invalid distance too far back",t.mode=pe;break}t.mode=Aw;case Aw:if(l===0)break e;if(A=h-l,t.offset>A){if(A=t.offset-A,A>t.whave&&t.sane){n.msg="invalid distance too far back",t.mode=pe;break}A>t.wnext?(A-=t.wnext,d=t.wsize-A):d=t.wnext-A,A>t.length&&(A=t.length),g=t.window}else g=i,d=o-t.offset,A=t.length;A>l&&(A=l),l-=A,t.length-=A;do i[o++]=g[d++];while(--A);t.length===0&&(t.mode=lc);break;case hw:if(l===0)break e;i[o++]=t.length,l--,t.mode=lc;break;case Hf:if(t.wrap){for(;u<32;){if(a===0)break e;a--,c|=r[s++]<<u,u+=8}if(h-=l,n.total_out+=h,t.total+=h,h&&(n.adler=t.check=t.flags?Yt(t.check,i,h,o-h):Of(t.check,i,h,o-h)),h=l,(t.flags?c:mw(c))!==t.check){n.msg="incorrect data check",t.mode=pe;break}c=0,u=0}t.mode=dw;case dw:if(t.wrap&&t.flags){for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(t.total&4294967295)){n.msg="incorrect length check",t.mode=pe;break}c=0,u=0}t.mode=gw;case gw:S=N6;break e;case pe:S=Y1;break e;case pw:return J1;case L6:default:return mt}return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,t.hold=c,t.bits=u,(t.wsize||h!==n.avail_out&&t.mode<pe&&(t.mode<Hf||e!==_1))&&Cw(n,n.output,n.next_out,h-n.avail_out),f-=n.avail_in,h-=n.avail_out,n.total_in+=f,n.total_out+=h,t.total+=h,t.wrap&&h&&(n.adler=t.check=t.flags?Yt(t.check,i,h,n.next_out-h):Of(t.check,i,h,n.next_out-h)),n.data_type=t.bits+(t.last?64:0)+(t.mode===ln?128:0)+(t.mode===cc||t.mode===zf?256:0),(f===0&&h===0||e===_1)&&S===br&&(S=P6),S}function q6(n){if(!n||!n.state)return mt;var e=n.state;return e.window&&(e.window=null),n.state=null,br}function K6(n,e){var t;return!n||!n.state||(t=n.state,(t.wrap&2)===0)?mt:(t.head=e,e.done=!1,br)}function yw(n,e){var t=e.length,r,i,s;return!n||!n.state||(r=n.state,r.wrap!==0&&r.mode!==ac)?mt:r.mode===ac&&(i=1,i=Of(i,e,t,0),i!==r.check)?Y1:(s=Cw(n,e,t,t),s?(r.mode=pw,J1):(r.havedict=1,br))}const Yf={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function j6(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var Jf=Object.prototype.toString;let Iw=class MA{constructor(e){if(!(this instanceof MA))return new MA(e);this.options=y6({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new j6,this.strm.avail_out=0;var r=_6(this.strm,t.windowBits);if(r!==Ir)throw new Error(Yf[r]);if(this.header=new B6,K6(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=P1(t.dictionary):Jf.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=yw(this.strm,t.dictionary),r!==Ir)))throw new Error(Yf[r])}push(e,t){var r=this.strm,i=this.options.chunkSize,s=this.options.dictionary,o,a,l,c,u,f,h=!1;if(this.ended)return!1;a=t===~~t?t:t===!0?ic:R1,typeof e=="string"?r.input=b6(e):Jf.call(e)==="[object ArrayBuffer]"?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=li(i),r.next_out=0,r.avail_out=i),o=J6(r,R1),o===m6&&s&&(typeof s=="string"?f=P1(s):Jf.call(s)==="[object ArrayBuffer]"?f=new Uint8Array(s):f=s,o=yw(this.strm,f)),o===w6&&h===!0&&(o=Ir,h=!1),o!==sc&&o!==Ir)return this.onEnd(o),this.ended=!0,!1;r.next_out&&(r.avail_out===0||o===sc||r.avail_in===0&&(a===ic||a===Tf))&&(this.options.to==="string"?(l=x6(r.output,r.next_out),c=r.next_out-l,u=E6(r.output,l),r.next_out=c,r.avail_out=i-c,c&&Un(r.output,r.output,l,c,0),this.onData(u)):this.onData(M1(r.output,r.next_out))),r.avail_in===0&&r.avail_out===0&&(h=!0)}while((r.avail_in>0||r.avail_out===0)&&o!==sc);return o===sc&&(a=ic),a===ic?(o=q6(this.strm),this.onEnd(o),this.ended=!0,o===Ir):(a===Tf&&(this.onEnd(Ir),r.avail_out=0),!0)}onData(e){this.chunks.push(e)}onEnd(e){e===Ir&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Pf(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}};function W6(n,e){var t=new Iw(e);if(t.push(n,!0),t.err)throw t.msg||Yf[t.err];return t.result}function X6(n,e){return e=e||{},e.raw=!0,W6(n,e)}function Z6(n){let e=0;for(const t of n)e+=t.length;return e}function bw(n,e){const t=new Uint8Array(e??Z6(n));let r=0;for(const i of n)t.set(i,r),r+=i.length;return t}async function $6(n){try{let e,t=0,r;const i=[];let s=0;do{const o=n.subarray(t);if(r=new Iw(void 0),{strm:e}=r,r.push(o,Tf),r.err)throw new Error(r.msg);t+=e.next_in;const a=r.result;i.push(a),s+=a.length}while(e.avail_in);return bw(i,s)}catch(e){throw/incorrect header check/.exec(`${e}`)?new Error("problem decompressing block: incorrect gzip header check"):e}}class Ew{filehandle;gzi;constructor({filehandle:e,gziFilehandle:t}){this.filehandle=e,this.gzi=new p6({filehandle:t})}async _readAndUncompressBlock(e,t){let r=t;r||(r=(await this.filehandle.stat()).size);const i=r-e,s=await this.filehandle.read(i,e);return $6(s)}async read(e,t){const r=await this.gzi.getRelevantBlocksForRead(e,t),i=[];for(let s=0;s<r.length-1;s+=1){const o=await this._readAndUncompressBlock(r[s][0],r[s+1][0]),[,a]=r[s],l=a>=t?0:t-a,c=Math.min(t+e,a+o.length)-a;l>=0&&l<o.length&&i.push(o.subarray(l,c))}return bw(i)}}function xw(n,e){return n.offset+n.lineBytes*Math.floor(e/n.lineLength)+e%n.lineLength}async function eM(n,e={}){const t=new TextDecoder("utf8");return Object.fromEntries(t.decode(await n.readFile(e)).split(/\r?\n/).map(r=>r.trim()).filter(r=>!!r).map(r=>r.split(" ")).map(r=>{if(r[0]?.startsWith(">"))throw new Error("found > in sequence name, might have supplied FASTA file for the FASTA index");return[r[0],{name:r[0],length:+r[1],start:0,end:+r[1],offset:+r[2],lineLength:+r[3],lineBytes:+r[4]}]}))}class Bw{constructor({fasta:e,fai:t,path:r,faiPath:i}){if(e)this.fasta=e;else if(r)this.fasta=new We(r);else throw new Error("Need to pass filehandle for fasta or path to localfile");if(t)this.fai=t;else if(i)this.fai=new We(i);else if(r)this.fai=new We(`${r}.fai`);else throw new Error("Need to pass filehandle for or path to localfile")}async _getIndexes(e){return this.indexes||(this.indexes=eM(this.fai,e).catch(t=>{throw this.indexes=void 0,t})),this.indexes}async getSequenceNames(e){return Object.keys(await this._getIndexes(e))}async getSequenceSizes(e){const t={},r=await this._getIndexes(e);for(const i of Object.values(r))t[i.name]=i.length;return t}async getSequenceSize(e,t){return(await this._getIndexes(t))[e]?.length}async hasReferenceSequence(e,t){return!!(await this._getIndexes(t))[e]}async getResiduesByName(e,t,r,i){const s=(await this._getIndexes(i))[e];return s?this._fetchFromIndexEntry(s,t,r,i):void 0}async getSequence(e,t,r,i){return this.getResiduesByName(e,t,r,i)}async _fetchFromIndexEntry(e,t=0,r,i){let s=r;if(t<0)throw new TypeError("regionStart cannot be less than 0");if((s===void 0||s>e.length)&&(s=e.length),t>=s)return"";const o=xw(e,t),a=xw(e,s)-o,c=new TextDecoder("utf8").decode(await this.fasta.read(a,o,i)).replace(/\s+/g,"");if(/[^\x20-\x7e]/.test(c.slice(0,1e3)))throw new Error("Non-ASCII characters detected in sequence. The file may be gzip compressed. Use BgzipIndexedFasta for bgzip files, or decompress the file.");return c}}class tM extends Bw{constructor({fasta:e,path:t,fai:r,faiPath:i,gzi:s,gziPath:o}){super({fasta:e,path:t,fai:r,faiPath:i}),e&&s?this.fasta=new Ew({filehandle:e,gziFilehandle:s}):t&&o&&(this.fasta=new Ew({filehandle:new We(t),gziFilehandle:new We(o)}))}}function vw(n){return n.split(">").filter(e=>/\S/.test(e)).map(e=>{const[t,...r]=e.split(`
658
+ `),[i,...s]=t.split(" "),o=r.join("").replace(/\s/g,"");return{id:i,description:s.join(" "),sequence:o}})}class nM{constructor({fasta:e,path:t}){if(e)this.fasta=e;else if(t)this.fasta=new We(t);else throw new Error("Need to pass fasta or path");this.data=this.fasta.readFile().then(r=>{const s=new TextDecoder("utf8").decode(r);return vw(s)})}async fetch(e,t,r){const s=(await this.data).find(a=>a.id===e),o=r-t;if(!s)throw new Error(`no sequence with id ${e} exists`);return s.sequence.slice(t,o)}async getSequenceNames(){return(await this.data).map(t=>t.id)}}const rM=Object.freeze(Object.defineProperty({__proto__:null,BgzipIndexedFasta:tM,FetchableSmallFasta:nM,IndexedFasta:Bw,parseSmallFasta:vw},Symbol.toStringTag,{value:"Module"})),Sw=BigInt(32);function iM(n,e,t){const r=+!!t,i=+!t;return BigInt(n.getInt32(e,t)*i+n.getInt32(e+4,t)*r)<<Sw|BigInt(n.getUint32(e,t)*r+n.getUint32(e+4,t)*i)}function sM(n,e,t){const r=n.getUint32(e,t),i=n.getUint32(e+4,t),s=+!!t,o=+!t;return BigInt(r*o+i*s)<<Sw|BigInt(r*s+i*o)}"getBigInt64"in DataView||(DataView.prototype.getBigInt64=function(n,e){return iM(this,n,e)}),"getBigUint64"in DataView||(DataView.prototype.getBigUint64=function(n,e){return sM(this,n,e)});var qf=function(n,e){return qf=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(t[i]=r[i])},qf(n,e)};function Kf(n,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");qf(n,e);function t(){this.constructor=n}n.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}function oM(n,e,t,r){function i(s){return s instanceof t?s:new t(function(o){o(s)})}return new(t||(t=Promise))(function(s,o){function a(u){try{c(r.next(u))}catch(f){o(f)}}function l(u){try{c(r.throw(u))}catch(f){o(f)}}function c(u){u.done?s(u.value):i(u.value).then(a,l)}c((r=r.apply(n,e||[])).next())})}function Qw(n,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},r,i,s,o=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(c){return function(u){return l([c,u])}}function l(c){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(t=0)),t;)try{if(r=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,i=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]<s[3])){t.label=c[1];break}if(c[0]===6&&t.label<s[1]){t.label=s[1],s=c;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(c);break}s[2]&&t.ops.pop(),t.trys.pop();continue}c=e.call(n,t)}catch(u){c=[6,u],i=0}finally{r=s=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}function no(n){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&n[e],r=0;if(t)return t.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&r>=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function jf(n,e){var t=typeof Symbol=="function"&&n[Symbol.iterator];if(!t)return n;var r=t.call(n),i,s=[],o;try{for(;(e===void 0||e-- >0)&&!(i=r.next()).done;)s.push(i.value)}catch(a){o={error:a}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(o)throw o.error}}return s}function Wf(n,e,t){if(t||arguments.length===2)for(var r=0,i=e.length,s;r<i;r++)(s||!(r in e))&&(s||(s=Array.prototype.slice.call(e,0,r)),s[r]=e[r]);return n.concat(s||Array.prototype.slice.call(e))}function hi(n){return this instanceof hi?(this.v=n,this):new hi(n)}function aM(n,e,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=t.apply(n,e||[]),i,s=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(A){return function(d){return Promise.resolve(d).then(A,f)}}function a(A,d){r[A]&&(i[A]=function(g){return new Promise(function(p,m){s.push([A,g,p,m])>1||l(A,g)})},d&&(i[A]=d(i[A])))}function l(A,d){try{c(r[A](d))}catch(g){h(s[0][3],g)}}function c(A){A.value instanceof hi?Promise.resolve(A.value.v).then(u,f):h(s[0][2],A)}function u(A){l("next",A)}function f(A){l("throw",A)}function h(A,d){A(d),s.shift(),s.length&&l(s[0][0],s[0][1])}}function cM(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=n[Symbol.asyncIterator],t;return e?e.call(n):(n=typeof no=="function"?no(n):n[Symbol.iterator](),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(s){t[s]=n[s]&&function(o){return new Promise(function(a,l){o=n[s](o),i(a,l,o.done,o.value)})}}function i(s,o,a,l){Promise.resolve(l).then(function(c){s({value:c,done:a})},o)}}typeof SuppressedError=="function"&&SuppressedError;function ke(n){return typeof n=="function"}function Dw(n){var e=function(r){Error.call(r),r.stack=new Error().stack},t=n(e);return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var Xf=Dw(function(n){return function(t){n(this),this.message=t?t.length+` errors occurred during unsubscription:
659
+ `+t.map(function(r,i){return i+1+") "+r.toString()}).join(`
660
+ `):"",this.name="UnsubscriptionError",this.errors=t}});function kw(n,e){if(n){var t=n.indexOf(e);0<=t&&n.splice(t,1)}}var Zf=(function(){function n(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return n.prototype.unsubscribe=function(){var e,t,r,i,s;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var a=no(o),l=a.next();!l.done;l=a.next()){var c=l.value;c.remove(this)}}catch(g){e={error:g}}finally{try{l&&!l.done&&(t=a.return)&&t.call(a)}finally{if(e)throw e.error}}else o.remove(this);var u=this.initialTeardown;if(ke(u))try{u()}catch(g){s=g instanceof Xf?g.errors:[g]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var h=no(f),A=h.next();!A.done;A=h.next()){var d=A.value;try{Rw(d)}catch(g){s=s??[],g instanceof Xf?s=Wf(Wf([],jf(s)),jf(g.errors)):s.push(g)}}}catch(g){r={error:g}}finally{try{A&&!A.done&&(i=h.return)&&i.call(h)}finally{if(r)throw r.error}}}if(s)throw new Xf(s)}},n.prototype.add=function(e){var t;if(e&&e!==this)if(this.closed)Rw(e);else{if(e instanceof n){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=(t=this._finalizers)!==null&&t!==void 0?t:[]).push(e)}},n.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},n.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},n.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&kw(t,e)},n.prototype.remove=function(e){var t=this._finalizers;t&&kw(t,e),e instanceof n&&e._removeParent(this)},n.EMPTY=(function(){var e=new n;return e.closed=!0,e})(),n})();Zf.EMPTY;function Fw(n){return n instanceof Zf||n&&"closed"in n&&ke(n.remove)&&ke(n.add)&&ke(n.unsubscribe)}function Rw(n){ke(n)?n():n.unsubscribe()}var lM={Promise:void 0},uM={setTimeout:function(n,e){for(var t=[],r=2;r<arguments.length;r++)t[r-2]=arguments[r];return setTimeout.apply(void 0,Wf([n,e],jf(t)))},clearTimeout:function(n){return clearTimeout(n)},delegate:void 0};function Mw(n){uM.setTimeout(function(){throw n})}function Nw(){}function fM(n){n()}var $f=(function(n){Kf(e,n);function e(t){var r=n.call(this)||this;return r.isStopped=!1,t?(r.destination=t,Fw(t)&&t.add(r)):r.destination=dM,r}return e.create=function(t,r,i){return new uc(t,r,i)},e.prototype.next=function(t){this.isStopped||this._next(t)},e.prototype.error=function(t){this.isStopped||(this.isStopped=!0,this._error(t))},e.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},e.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,n.prototype.unsubscribe.call(this),this.destination=null)},e.prototype._next=function(t){this.destination.next(t)},e.prototype._error=function(t){try{this.destination.error(t)}finally{this.unsubscribe()}},e.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},e})(Zf),AM=(function(){function n(e){this.partialObserver=e}return n.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(r){fc(r)}},n.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(r){fc(r)}else fc(e)},n.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(t){fc(t)}},n})(),uc=(function(n){Kf(e,n);function e(t,r,i){var s=n.call(this)||this,o;return ke(t)||!t?o={next:t??void 0,error:r??void 0,complete:i??void 0}:o=t,s.destination=new AM(o),s}return e})($f);function fc(n){Mw(n)}function hM(n){throw n}var dM={closed:!0,next:Nw,error:hM,complete:Nw},eA=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})();function Tw(n){return n}function gM(n){return n.length===0?Tw:n.length===1?n[0]:function(t){return n.reduce(function(r,i){return i(r)},t)}}var wt=(function(){function n(e){e&&(this._subscribe=e)}return n.prototype.lift=function(e){var t=new n;return t.source=this,t.operator=e,t},n.prototype.subscribe=function(e,t,r){var i=this,s=mM(e)?e:new uc(e,t,r);return fM(function(){var o=i,a=o.operator,l=o.source;s.add(a?a.call(s,l):l?i._subscribe(s):i._trySubscribe(s))}),s},n.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},n.prototype.forEach=function(e,t){var r=this;return t=Pw(t),new t(function(i,s){var o=new uc({next:function(a){try{e(a)}catch(l){s(l),o.unsubscribe()}},error:s,complete:i});r.subscribe(o)})},n.prototype._subscribe=function(e){var t;return(t=this.source)===null||t===void 0?void 0:t.subscribe(e)},n.prototype[eA]=function(){return this},n.prototype.pipe=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return gM(e)(this)},n.prototype.toPromise=function(e){var t=this;return e=Pw(e),new e(function(r,i){var s;t.subscribe(function(o){return s=o},function(o){return i(o)},function(){return r(s)})})},n.create=function(e){return new n(e)},n})();function Pw(n){var e;return(e=n??lM.Promise)!==null&&e!==void 0?e:Promise}function pM(n){return n&&ke(n.next)&&ke(n.error)&&ke(n.complete)}function mM(n){return n&&n instanceof $f||pM(n)&&Fw(n)}function wM(n){return ke(n?.lift)}function di(n){return function(e){if(wM(e))return e.lift(function(t){try{return n(t,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function ro(n,e,t,r,i){return new CM(n,e,t,r,i)}var CM=(function(n){Kf(e,n);function e(t,r,i,s,o,a){var l=n.call(this,t)||this;return l.onFinalize=o,l.shouldUnsubscribe=a,l._next=r?function(c){try{r(c)}catch(u){t.error(u)}}:n.prototype._next,l._error=s?function(c){try{s(c)}catch(u){t.error(u)}finally{this.unsubscribe()}}:n.prototype._error,l._complete=i?function(){try{i()}catch(c){t.error(c)}finally{this.unsubscribe()}}:n.prototype._complete,l}return e.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var r=this.closed;n.prototype.unsubscribe.call(this),!r&&((t=this.onFinalize)===null||t===void 0||t.call(this))}},e})($f),yM=new wt(function(n){return n.complete()});function IM(n){return n&&ke(n.schedule)}function Lw(n){return n[n.length-1]}function bM(n){return IM(Lw(n))?n.pop():void 0}function EM(n,e){return typeof Lw(n)=="number"?n.pop():e}var Ow=(function(n){return n&&typeof n.length=="number"&&typeof n!="function"});function Uw(n){return ke(n?.then)}function Gw(n){return ke(n[eA])}function zw(n){return Symbol.asyncIterator&&ke(n?.[Symbol.asyncIterator])}function Hw(n){return new TypeError("You provided "+(n!==null&&typeof n=="object"?"an invalid object":"'"+n+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function xM(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Vw=xM();function _w(n){return ke(n?.[Vw])}function Yw(n){return aM(this,arguments,function(){var t,r,i,s;return Qw(this,function(o){switch(o.label){case 0:t=n.getReader(),o.label=1;case 1:o.trys.push([1,,9,10]),o.label=2;case 2:return[4,hi(t.read())];case 3:return r=o.sent(),i=r.value,s=r.done,s?[4,hi(void 0)]:[3,5];case 4:return[2,o.sent()];case 5:return[4,hi(i)];case 6:return[4,o.sent()];case 7:return o.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})}function Jw(n){return ke(n?.getReader)}function gi(n){if(n instanceof wt)return n;if(n!=null){if(Gw(n))return BM(n);if(Ow(n))return vM(n);if(Uw(n))return SM(n);if(zw(n))return qw(n);if(_w(n))return QM(n);if(Jw(n))return DM(n)}throw Hw(n)}function BM(n){return new wt(function(e){var t=n[eA]();if(ke(t.subscribe))return t.subscribe(e);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function vM(n){return new wt(function(e){for(var t=0;t<n.length&&!e.closed;t++)e.next(n[t]);e.complete()})}function SM(n){return new wt(function(e){n.then(function(t){e.closed||(e.next(t),e.complete())},function(t){return e.error(t)}).then(null,Mw)})}function QM(n){return new wt(function(e){var t,r;try{for(var i=no(n),s=i.next();!s.done;s=i.next()){var o=s.value;if(e.next(o),e.closed)return}}catch(a){t={error:a}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}e.complete()})}function qw(n){return new wt(function(e){kM(n,e).catch(function(t){return e.error(t)})})}function DM(n){return qw(Yw(n))}function kM(n,e){var t,r,i,s;return oM(this,void 0,void 0,function(){var o,a;return Qw(this,function(l){switch(l.label){case 0:l.trys.push([0,5,6,11]),t=cM(n),l.label=1;case 1:return[4,t.next()];case 2:if(r=l.sent(),!!r.done)return[3,4];if(o=r.value,e.next(o),e.closed)return[2];l.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=l.sent(),i={error:a},[3,11];case 6:return l.trys.push([6,,9,10]),r&&!r.done&&(s=t.return)?[4,s.call(t)]:[3,8];case 7:l.sent(),l.label=8;case 8:return[3,10];case 9:if(i)throw i.error;return[7];case 10:return[7];case 11:return e.complete(),[2]}})})}function Er(n,e,t,r,i){r===void 0&&(r=0),i===void 0&&(i=!1);var s=e.schedule(function(){t(),i?n.add(this.schedule(null,r)):this.unsubscribe()},r);if(n.add(s),!i)return s}function Kw(n,e){return e===void 0&&(e=0),di(function(t,r){t.subscribe(ro(r,function(i){return Er(r,n,function(){return r.next(i)},e)},function(){return Er(r,n,function(){return r.complete()},e)},function(i){return Er(r,n,function(){return r.error(i)},e)}))})}function jw(n,e){return e===void 0&&(e=0),di(function(t,r){r.add(n.schedule(function(){return t.subscribe(r)},e))})}function FM(n,e){return gi(n).pipe(jw(e),Kw(e))}function RM(n,e){return gi(n).pipe(jw(e),Kw(e))}function MM(n,e){return new wt(function(t){var r=0;return e.schedule(function(){r===n.length?t.complete():(t.next(n[r++]),t.closed||this.schedule())})})}function NM(n,e){return new wt(function(t){var r;return Er(t,e,function(){r=n[Vw](),Er(t,e,function(){var i,s,o;try{i=r.next(),s=i.value,o=i.done}catch(a){t.error(a);return}o?t.complete():t.next(s)},0,!0)}),function(){return ke(r?.return)&&r.return()}})}function Ww(n,e){if(!n)throw new Error("Iterable cannot be null");return new wt(function(t){Er(t,e,function(){var r=n[Symbol.asyncIterator]();Er(t,e,function(){r.next().then(function(i){i.done?t.complete():t.next(i.value)})},0,!0)})})}function TM(n,e){return Ww(Yw(n),e)}function PM(n,e){if(n!=null){if(Gw(n))return FM(n,e);if(Ow(n))return MM(n,e);if(Uw(n))return RM(n,e);if(zw(n))return Ww(n,e);if(_w(n))return NM(n,e);if(Jw(n))return TM(n,e)}throw Hw(n)}function LM(n,e){return e?PM(n,e):gi(n)}var OM=Dw(function(n){return function(){n(this),this.name="EmptyError",this.message="no elements in sequence"}});function Xw(n,e){return new Promise(function(t,r){var i=new uc({next:function(s){t(s),i.unsubscribe()},error:r,complete:function(){r(new OM)}});n.subscribe(i)})}function Zw(n,e){return di(function(t,r){var i=0;t.subscribe(ro(r,function(s){r.next(n.call(e,s,i++))}))})}function UM(n,e,t,r,i,s,o,a){var l=[],c=0,u=0,f=!1,h=function(){f&&!l.length&&!c&&e.complete()},A=function(g){return c<r?d(g):l.push(g)},d=function(g){c++;var p=!1;gi(t(g,u++)).subscribe(ro(e,function(m){e.next(m)},function(){p=!0},void 0,function(){if(p)try{c--;for(var m=function(){var C=l.shift();o||d(C)};l.length&&c<r;)m();h()}catch(C){e.error(C)}}))};return n.subscribe(ro(e,A,function(){f=!0,h()})),function(){}}function $w(n,e,t){return t===void 0&&(t=1/0),ke(e)?$w(function(r,i){return Zw(function(s,o){return e(r,s,i,o)})(gi(n(r,i)))},t):(typeof e=="number"&&(t=e),di(function(r,i){return UM(r,i,n,t)}))}function GM(n){return n===void 0&&(n=1/0),$w(Tw,n)}function zM(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var t=bM(n),r=EM(n,1/0),i=n;return i.length?i.length===1?gi(i[0]):GM(r)(LM(i,t)):yM}function HM(n,e,t,r,i){return function(s,o){var a=t,l=e,c=0;s.subscribe(ro(o,function(u){var f=c++;l=a?n(l,u,f):(a=!0,u)},(function(){a&&o.next(l),o.complete()})))}}function eC(n,e){return di(HM(n,e,arguments.length>=2,!1,!0))}var VM=function(n,e){return n.push(e),n};function _M(){return di(function(n,e){eC(VM,[])(n).subscribe(e)})}class YM{}class JM{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(e=new YM){if(this.signal.aborted)throw new Error("cannot add a signal, already aborted!");this.signals.add(e),e.aborted?this.handleAborted(e):typeof e.addEventListener=="function"&&e.addEventListener("abort",()=>{this.handleAborted(e)})}handleAborted(e){this.signals.delete(e),this.signals.size===0&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}class qM{constructor(){this.callbacks=new Set}addCallback(e=()=>{}){this.callbacks.add(e),this.currentMessage&&e(this.currentMessage)}callback(e){this.currentMessage=e;for(const t of this.callbacks)t(e)}}class pi{constructor({fill:e,cache:t}){if(typeof e!="function")throw new TypeError("must pass a fill function");if(typeof t!="object")throw new TypeError("must pass a cache object");if(typeof t.get!="function"||typeof t.set!="function"||typeof t.delete!="function")throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=t,this.fillCallback=e}static isAbortException(e){return e.name==="AbortError"||e.code==="ERR_ABORTED"||e.message==="AbortError: aborted"||e.message==="Error: aborted"}evict(e,t){this.cache.get(e)===t&&this.cache.delete(e)}fill(e,t,r,i){const s=new JM,o=new qM;o.addCallback(i);const a={aborter:s,promise:this.fillCallback(t,s.signal,l=>{o.callback(l)}),settled:!1,statusReporter:o,get aborted(){return this.aborter.signal.aborted}};a.aborter.addSignal(r),a.aborter.signal.addEventListener("abort",()=>{a.settled||this.evict(e,a)}),a.promise.then(()=>{a.settled=!0},()=>{a.settled=!0,this.evict(e,a)}).catch(l=>{throw console.error(l),l}),this.cache.set(e,a)}static checkSinglePromise(e,t){function r(){if(t?.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return e.then(i=>(r(),i),i=>{throw r(),i})}has(e){return this.cache.has(e)}get(e,t,r,i){if(!r&&t instanceof AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const s=this.cache.get(e);return s?s.aborted&&!s.settled?(this.evict(e,s),this.get(e,t,r,i)):s.settled?s.promise:(s.aborter.addSignal(r),s.statusReporter.addCallback(i),pi.checkSinglePromise(s.promise,r)):(this.fill(e,t,r,i),pi.checkSinglePromise(this.cache.get(e).promise,r))}delete(e){const t=this.cache.get(e);t&&(t.settled||t.aborter.abort(),this.cache.delete(e))}clear(){const e=this.cache.keys();let t=0;for(let r=e.next();!r.done;r=e.next())this.delete(r.value),t+=1;return t}}function KM(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var tA,tC;function jM(){if(tC)return tA;tC=1;class n{constructor(t={}){if(!(t.maxSize&&t.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=t.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(t,r){this.cache.set(t,r),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t)){const r=this.oldCache.get(t);return this.oldCache.delete(t),this._set(t,r),r}}set(t,r){return this.cache.has(t)?this.cache.set(t,r):this._set(t,r),this}has(t){return this.cache.has(t)||this.oldCache.has(t)}peek(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t))return this.oldCache.get(t)}delete(t){const r=this.cache.delete(t);return r&&this._size--,this.oldCache.delete(t)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(const[t]of this)yield t}*values(){for(const[,t]of this)yield t}*[Symbol.iterator](){for(const t of this.cache)yield t;for(const t of this.oldCache){const[r]=t;this.cache.has(r)||(yield t)}}get size(){let t=0;for(const r of this.oldCache.keys())this.cache.has(r)||t++;return this._size+t}}return tA=n,tA}var WM=jM();const nC=KM(WM);class mi{ranges;constructor(e){this.ranges=e}get min(){return this.ranges[0].min}get max(){return this.ranges.at(-1).max}contains(e){for(const t of this.ranges)if(t.min<=e&&t.max>=e)return!0;return!1}isContiguous(){return this.ranges.length>1}getRanges(){return this.ranges.map(e=>new mi([{min:e.min,max:e.max}]))}toString(){return this.ranges.map(e=>`[${e.min}-${e.max}]`).join(",")}union(e){const t=[...this.getRanges(),...e.getRanges()].sort((s,o)=>s.min<o.min?-1:s.min>o.min?1:s.max<o.max?-1:o.max>s.max?1:0),r=[];let i=t[0];for(const s of t)s.min>i.max+1?(r.push(i),i=s):s.max>i.max&&(i=new mi([{min:i.min,max:s.max}]));return r.push(i),r.length===1?r[0]:new mi(r)}}function XM(n){return X6(n.subarray(2),void 0)}class ZM extends Error{code;constructor(e){super(e),this.code="ERR_ABORTED"}}function $M(n){n.sort((i,s)=>i.offset-s.offset);const e=[];let t,r;for(const i of n)t&&r&&i.offset-r<=2e3?(t.length=t.length+i.length-r+i.offset,t.blocks.push(i)):e.push(t={blocks:[i],length:i.length,offset:i.offset}),r=t.offset+t.length;return e}function Ac(n){if(n&&n.aborted)if(typeof DOMException>"u"){const e=new ZM("aborted");throw e.code="ERR_ABORTED",e}else throw new DOMException("aborted","AbortError")}const e5=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function nA(n,e,t,r){return n<r&&e>=t}class rC{bbi;refsByName;cirTreeOffset;isCompressed;blockType;cirTreePromise;featureCache=new pi({cache:new nC({maxSize:1e3}),fill:async({length:e,offset:t},r)=>this.bbi.read(e,t,{signal:r})});constructor(e,t,r,i,s){if(this.bbi=e,this.refsByName=t,this.cirTreeOffset=r,this.isCompressed=i,this.blockType=s,!(r>=0))throw new Error("invalid cirTreeOffset!")}async readWigData(e,t,r,i,s){try{const o=this.refsByName[e];o===void 0&&i.complete();const a={chrId:o,start:t,end:r};this.cirTreePromise||(this.cirTreePromise=this.bbi.read(48,this.cirTreeOffset,s));const l=await this.cirTreePromise,u=new DataView(l.buffer).getUint32(4,!0);let f=[],h=0;const A=(m,C,y)=>{try{const E=m.subarray(C),x=new DataView(E.buffer,E.byteOffset,E.length);let b=0;const S=x.getUint8(b);b+=2;const Q=x.getUint16(b,!0);if(b+=2,S===1){const v=[];for(let F=0;F<Q;F++){const R=x.getUint32(b,!0);b+=4;const N=x.getUint32(b,!0);b+=4;const O=x.getUint32(b,!0);b+=4;const H=x.getUint32(b,!0);b+=4;const G=Number(x.getBigUint64(b,!0));b+=8;const _=Number(x.getBigUint64(b,!0));b+=8,v.push({startChrom:R,startBase:N,endBase:H,endChrom:O,blockOffset:G,blockSize:_,offset:b})}f=f.concat(v.filter(F=>d(F)).map(F=>({offset:F.blockOffset,length:F.blockSize})))}else if(S===0){const v=[];for(let R=0;R<Q;R++){const N=x.getUint32(b,!0);b+=4;const O=x.getUint32(b,!0);b+=4;const H=x.getUint32(b,!0);b+=4;const G=x.getUint32(b,!0);b+=4;const _=Number(x.getBigUint64(b,!0));b+=8,v.push({startChrom:N,startBase:O,endChrom:H,endBase:G,blockOffset:_,offset:b})}const F=v.filter(R=>d(R)).map(R=>R.blockOffset);F.length>0&&p(F,y+1)}}catch(w){i.error(w)}},d=m=>{const{startChrom:C,startBase:y,endChrom:w,endBase:E}=m;return(C<o||C===o&&y<=r)&&(w>o||w===o&&E>=t)},g=async(m,C,y)=>{try{const w=C.max-C.min,E=C.min,x=await this.featureCache.get(`${w}_${E}`,{length:w,offset:E},s?.signal);for(const b of m)C.contains(b)&&(A(x,b-E,y),h-=1,h===0&&this.readFeatures(i,f,{...s,request:a}).catch(S=>{i.error(S)}))}catch(w){i.error(w)}},p=(m,C)=>{try{h+=m.length;const y=4+u*32;let w=new mi([{min:m[0],max:m[0]+y}]);for(let E=1;E<m.length;E+=1){const x=new mi([{min:m[E],max:m[E]+y}]);w=w.union(x)}w.getRanges().map(E=>g(m,E,C))}catch(y){i.error(y)}};p([this.cirTreeOffset+48],1);return}catch(o){i.error(o)}}parseSummaryBlock(e,t,r){const i=[];let s=t;const o=new DataView(e.buffer,e.byteOffset,e.length);for(;s<e.byteLength;){const a=o.getUint32(s,!0);s+=4;const l=o.getUint32(s,!0);s+=4;const c=o.getUint32(s,!0);s+=4;const u=o.getUint32(s,!0);s+=4;const f=o.getFloat32(s,!0);s+=4;const h=o.getFloat32(s,!0);s+=4;const A=o.getFloat32(s,!0);s+=4,s+=4,(!r||a===r.chrId&&nA(l,c,r.start,r.end))&&i.push({start:l,end:c,maxScore:h,minScore:f,summary:!0,score:A/(u||1)})}return i}parseBigBedBlock(e,t,r,i){const s=[];let o=t;const a=e,l=new DataView(a.buffer,a.byteOffset,a.length);for(;o<e.byteLength;){const c=o,u=l.getUint32(o,!0);o+=4;const f=l.getInt32(o,!0);o+=4;const h=l.getInt32(o,!0);o+=4;let A=o;for(;A<e.length&&e[A]!==0;A++);const d=e.subarray(o,A),g=e5?.decode(d)??d.toString();o=A+1,s.push({chromId:u,start:f,end:h,rest:g,uniqueId:`bb-${r+c}`})}return i?s.filter(c=>nA(c.start,c.end,i.start,i.end)):s}parseBigWigBlock(e,t,r){const i=e.subarray(t),s=new DataView(i.buffer,i.byteOffset,i.length);let o=0;o+=4;const a=s.getInt32(o,!0);o+=8;const l=s.getUint32(o,!0);o+=4;const c=s.getUint32(o,!0);o+=4;const u=s.getUint8(o);o+=2;const f=s.getUint16(o,!0);o+=2;const h=new Array(f);switch(u){case 1:{for(let A=0;A<f;A++){const d=s.getInt32(o,!0);o+=4;const g=s.getInt32(o,!0);o+=4;const p=s.getFloat32(o,!0);o+=4,h[A]={start:d,end:g,score:p}}break}case 2:{for(let A=0;A<f;A++){const d=s.getInt32(o,!0);o+=4;const g=s.getFloat32(o,!0);o+=4,h[A]={score:g,start:d,end:d+c}}break}case 3:{for(let A=0;A<f;A++){const d=s.getFloat32(o,!0);o+=4;const g=a+A*l;h[A]={score:d,start:g,end:g+c}}break}}return r?h.filter(A=>nA(A.start,A.end,r.start,r.end)):h}async readFeatures(e,t,r={}){try{const{blockType:i,isCompressed:s}=this,{signal:o,request:a}=r,l=$M(t);Ac(o),await Promise.all(l.map(async c=>{Ac(o);const{length:u,offset:f}=c,h=await this.featureCache.get(`${u}_${f}`,c,o);for(const A of c.blocks){Ac(o);let d=h.subarray(A.offset-c.offset);switch(s&&(d=XM(d)),Ac(o),i){case"summary":{e.next(this.parseSummaryBlock(d,0,a));break}case"bigwig":{e.next(this.parseBigWigBlock(d,0,a));break}case"bigbed":{e.next(this.parseBigBedBlock(d,0,A.offset*256,a));break}default:console.warn(`Don't know what to do with ${i}`)}}})),e.complete()}catch(i){e.error(i)}}}const t5=-2003829722,iC=-2021002517;function wi(n){return new DataView(n.buffer,n.byteOffset,n.length)}class sC{bbi;headerP;renameRefSeqs;getHeader(e){return this.headerP||(this.headerP=this._getHeader(e).catch(t=>{throw this.headerP=void 0,t})),this.headerP}constructor(e){const{filehandle:t,renameRefSeqs:r=o=>o,path:i,url:s}=e;if(this.renameRefSeqs=r,t)this.bbi=t;else if(s)this.bbi=new _t(s);else if(i)this.bbi=new We(i);else throw new Error("no file given")}async _getHeader(e){const t=await this._getMainHeader(e),r=await this._readChromTree(t,e);return{...t,...r}}async _getMainHeader(e,t=2e3){const r=await this.bbi.read(t,0,e),i=wi(r),s=i.getInt32(0,!0);if(s!==t5&&s!==iC)throw new Error("not a BigWig/BigBed file");let o=0;const a=i.getInt32(o,!0);o+=4;const l=i.getUint16(o,!0);o+=2;const c=i.getUint16(o,!0);o+=2;const u=Number(i.getBigUint64(o,!0));o+=8;const f=Number(i.getBigUint64(o,!0));o+=8;const h=Number(i.getBigUint64(o,!0));o+=8;const A=i.getUint16(o,!0);o+=2;const d=i.getUint16(o,!0);o+=2;const g=Number(i.getBigUint64(o,!0));o+=8;const p=Number(i.getBigUint64(o,!0));o+=8;const m=i.getUint32(o,!0);o+=4;const C=Number(i.getBigUint64(o,!0));o+=8;const y=[];for(let b=0;b<c;b++){const S=i.getUint32(o,!0);o+=4;const Q=i.getUint32(o,!0);o+=4;const v=Number(i.getBigUint64(o,!0));o+=8;const F=Number(i.getBigUint64(o,!0));o+=8,y.push({reductionLevel:S,reserved:Q,dataOffset:v,indexOffset:F})}const w=a===iC?"bigbed":"bigwig";if(g>t||p>t-40)return this._getMainHeader(e,t*2);let E;if(p){const b=r.subarray(p);let S=0;const Q=wi(b),v=Number(Q.getBigUint64(S,!0));S+=8;const F=Q.getFloat64(S,!0);S+=8;const R=Q.getFloat64(S,!0);S+=8;const N=Q.getFloat64(S,!0);S+=8;const O=Q.getFloat64(S,!0);S+=8,E={scoreMin:F,scoreMax:R,scoreSum:N,scoreSumSquares:O,basesCovered:v}}else throw new Error("no stats");const x=new TextDecoder("utf8");return{zoomLevels:y,magic:a,extHeaderOffset:C,numZoomLevels:c,fieldCount:A,totalSummary:E,definedFieldCount:d,uncompressBufSize:m,asOffset:g,chromTreeOffset:u,totalSummaryOffset:p,unzoomedDataOffset:f,unzoomedIndexOffset:h,fileType:w,version:l,autoSql:g?x.decode(r.subarray(g,r.indexOf(0,g))):""}}async _readChromTree(e,t){const r=[],i={},s=e.chromTreeOffset,o=wi(await this.bbi.read(32,s,t));let a=0;a+=4,a+=4;const l=o.getUint32(a,!0);a+=4;const c=o.getUint32(a,!0);a+=4,a+=8;const u=new TextDecoder("utf8"),f=async h=>{const A=await this.bbi.read(4,h),d=wi(A);let g=0;const p=d.getUint8(g);g+=1,g+=1;const m=d.getUint16(g,!0);if(g+=2,p){const C=await this.bbi.read(m*(l+c),h+g),y=wi(C);g=0;for(let w=0;w<m;w++){const E=u.decode(C.subarray(g,g+l)).replaceAll("\0","");g+=l;const x=y.getUint32(g,!0);g+=4;const b=y.getUint32(g,!0);g+=4,i[this.renameRefSeqs(E)]=x,r[x]={name:E,id:x,length:b}}}else{const C=[],y=wi(await this.bbi.read(m*(l+8),h+g));g=0;for(let w=0;w<m;w++){g+=l;const E=Number(y.getBigUint64(g,!0));g+=8,C.push(f(E))}await Promise.all(C)}};return await f(s+32),{refsByName:i,refsByNumber:r}}async getUnzoomedView(e){const{unzoomedIndexOffset:t,refsByName:r,uncompressBufSize:i,fileType:s}=await this.getHeader(e);return new rC(this.bbi,r,t,i>0,s)}async getFeatureStream(e,t,r,i){await this.getHeader(i);const s=this.renameRefSeqs(e);let o;const{basesPerSpan:a,scale:l}=i||{};return a?o=await this.getView(1/a,i):l?o=await this.getView(l,i):o=await this.getView(1,i),new wt(c=>{o.readWigData(s,t,r,c,i).catch(u=>{c.error(u)})})}async getFeatures(e,t,r,i){const s=await this.getFeatureStream(e,t,r,i);return(await Xw(s.pipe(_M()))).flat()}}class n5 extends sC{async getView(e,t){const{zoomLevels:r,refsByName:i,uncompressBufSize:s}=await this.getHeader(t),o=1/e,a=r.length-1;for(let l=a;l>=0;l-=1){const c=r[l];if(c&&c.reductionLevel<=2*o)return new rC(this.bbi,i,c.indexOffset,s>0,"summary")}return this.getUnzoomedView(t)}}function r5(n){return n.filter(e=>!!e)}class i5 extends sC{readIndicesCache=new pi({cache:new nC({maxSize:1}),fill:(e,t)=>this._readIndices({...e,signal:t})});readIndices(e={}){const{signal:t,...r}=e;return this.readIndicesCache.get(JSON.stringify(r),e,t)}async getView(e,t){return this.getUnzoomedView(t)}async _readIndices(e){const{extHeaderOffset:t}=await this.getHeader(e),r=await this.bbi.read(64,t),i=new DataView(r.buffer,r.byteOffset,r.length);let s=0;s+=2;const o=i.getUint16(s,!0);s+=2;const a=Number(i.getBigUint64(s,!0));if(s+=8,o===0)return[];const l=20,c=l*o,u=await this.bbi.read(c,a),f=[];for(let h=0;h<o;h+=1){const A=u.subarray(h*l),d=new DataView(A.buffer,A.byteOffset,A.length);let g=0;const p=d.getInt16(g,!0);g+=2;const m=d.getInt16(g,!0);g+=2;const C=Number(d.getBigUint64(g,!0));g+=12;const y=d.getInt16(g,!0);f.push({type:p,fieldcount:m,offset:C,field:y})}return f}async searchExtraIndexBlocks(e,t={}){const r=await this.readIndices(t);if(r.length===0)return[];const i=new TextDecoder("utf8"),s=r.map(async o=>{const{offset:a,field:l}=o,c=await this.bbi.read(32,a,t),u=new DataView(c.buffer,c.byteOffset,c.length);let f=0;f+=4;const h=u.getInt32(f,!0);f+=4;const A=u.getInt32(f,!0);f+=4;const d=u.getInt32(f,!0);f+=4,f+=8;const g=async p=>{const m=p,C=4+h*(A+d),w=await this.bbi.read(C,m,t),E=new DataView(w.buffer,w.byteOffset,w.length);let x=0;const b=E.getInt8(x);x+=2;const S=E.getInt16(x,!0);x+=2;const Q=[];if(b===0){const v=[];for(let R=0;R<S;R++){const N=i.decode(w.subarray(x,x+A)).replaceAll("\0","");x+=A;const O=Number(E.getBigUint64(x,!0));x+=8,v.push({key:N,offset:O})}let F=0;for(const{key:R,offset:N}of v){if(e.localeCompare(R)<0&&F)return g(F);F=N}return g(F)}else if(b===1){for(let v=0;v<S;v++){const F=i.decode(w.subarray(x,x+A)).replaceAll("\0","");x+=A;const R=Number(E.getBigUint64(x,!0));x+=8;const N=E.getUint32(x,!0);x+=4;const O=E.getUint32(x,!0);x+=4,Q.push({key:F,offset:R,length:N,reserved:O})}for(const v of Q)if(v.key===e)return{...v,field:l};return}};return g(a+32)});return r5(await Promise.all(s))}async searchExtraIndex(e,t={}){const r=await this.searchExtraIndexBlocks(e,t);if(r.length===0)return[];const i=await this.getUnzoomedView(t),s=r.map(a=>new wt(l=>{i.readFeatures(l,[a],t).catch(c=>{l.error(c)})}).pipe(eC((l,c)=>l.concat(c)),Zw(l=>{for(const c of l)c.field=a.field;return l})));return(await Xw(zM(...s))).filter(a=>a.rest?.split(" ")[(a.field||0)-3]===e)}}const oC=Object.freeze(Object.defineProperty({__proto__:null,BigBed:i5,BigWig:n5},Symbol.toStringTag,{value:"Module"}));function s5(n,e){function t(){this.constructor=n}t.prototype=e.prototype,n.prototype=new t}function Ci(n,e,t,r){this.message=n,this.expected=e,this.found=t,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ci)}s5(Ci,Error),Ci.buildMessage=function(n,e){var t={literal:function(c){return'"'+i(c.text)+'"'},class:function(c){var u="",f;for(f=0;f<c.parts.length;f++)u+=c.parts[f]instanceof Array?s(c.parts[f][0])+"-"+s(c.parts[f][1]):s(c.parts[f]);return"["+(c.inverted?"^":"")+u+"]"},any:function(c){return"any character"},end:function(c){return"end of input"},other:function(c){return c.description}};function r(c){return c.charCodeAt(0).toString(16).toUpperCase()}function i(c){return c.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function s(c){return c.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function o(c){return t[c.type](c)}function a(c){var u=new Array(c.length),f,h;for(f=0;f<c.length;f++)u[f]=o(c[f]);if(u.sort(),u.length>0){for(f=1,h=1;f<u.length;f++)u[f-1]!==u[f]&&(u[h]=u[f],h++);u.length=h}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}function l(c){return c?'"'+i(c)+'"':"end of input"}return"Expected "+a(n)+" but "+l(e)+" found."};function o5(n,e){e=e!==void 0?e:{};var t={},r={declaration:qy},i=qy,s="(",o=ae("(",!1),a=")",l=ae(")",!1),c=function(I,D,T,L){return{type:I,name:D,comment:T,fields:L}},u="simple",f=ae("simple",!1),h="object",A=ae("object",!1),d="table",g=ae("table",!1),p="auto",m=ae("auto",!1),C="primary",y=ae("primary",!1),w="index",E=ae("index",!1),x="unique",b=ae("unique",!1),S=function(I,D){return D},Q=function(I,D){return I.name&&D.unshift(I),D},v="#",F=ae("#",!1),R=";",N=ae(";",!1),O=function(I,D,T){return{type:I,name:D,comment:T}},H="[",G=ae("[",!1),_="]",te=ae("]",!1),oe=function(I,D,T,L){return{type:I,size:D,name:T,comment:L}},ne=function(I,D,T,L){return{type:I,vals:D,name:T,comment:L}},Ge=",",qt=ae(",",!1),ho=function(I,D){return D.unshift(I),D},Ri="int",An=ae("int",!1),Dr="uint",go=ae("uint",!1),Mi="short",U=ae("short",!1),K="ushort",W=ae("ushort",!1),M="byte",Xe=ae("byte",!1),se="ubyte",nt=ae("ubyte",!1),Ze="float",hn=ae("float",!1),po="char",u9=ae("char",!1),Dy="string",f9=ae("string",!1),ky="lstring",A9=ae("lstring",!1),Fy="enum",h9=ae("enum",!1),Ry="double",d9=ae("double",!1),My="bigint",g9=ae("bigint",!1),Ny="set",p9=ae("set",!1),m9=function(I,D){return I+" "+D},w9=/^[a-zA-Z_]/,C9=mo([["a","z"],["A","Z"],"_"],!1,!1),Ty=/^[a-zA-Z0-9_]/,Py=mo([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),y9=function(I){return Vy()},Ly=/^[^\n\r]/,Oy=mo([`
661
+ `,"\r"],!0,!1),I9=function(I){return I.join("").replace(/^"/,"").replace(/"$/,"")},b9=_y("integer"),Uy=/^[0-9]/,Gy=mo([["0","9"]],!1,!1),E9=function(){return parseInt(Vy(),10)},x9=_y("whitespace"),zy=/^[ \t\n\r]/,Hy=mo([" "," ",`
662
+ `,"\r"],!1,!1),B=0,rt=0,Rc=[{line:1,column:1}],Kt=0,kA=[],Y=0,Mc;if("startRule"in e){if(!(e.startRule in r))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');i=r[e.startRule]}function Vy(){return n.substring(rt,B)}function ae(I,D){return{type:"literal",text:I,ignoreCase:D}}function mo(I,D,T){return{type:"class",parts:I,inverted:D,ignoreCase:T}}function B9(){return{type:"end"}}function _y(I){return{type:"other",description:I}}function Yy(I){var D=Rc[I],T;if(D)return D;for(T=I-1;!Rc[T];)T--;for(D=Rc[T],D={line:D.line,column:D.column};T<I;)n.charCodeAt(T)===10?(D.line++,D.column=1):D.column++,T++;return Rc[I]=D,D}function Jy(I,D){var T=Yy(I),L=Yy(D);return{start:{offset:I,line:T.line,column:T.column},end:{offset:D,line:L.line,column:L.column}}}function J(I){B<Kt||(B>Kt&&(Kt=B,kA=[]),kA.push(I))}function v9(I,D,T){return new Ci(Ci.buildMessage(I,D),I,D,T)}function qy(){var I,D,T,L,V,Ae,we,It,Hn,dn,Vn,gn,_n,pn;return I=B,D=X(),D!==t?(T=Ky(),T!==t?(L=X(),L!==t?(V=jy(),V!==t?(Ae=X(),Ae!==t?(we=Nc(),we!==t?(It=X(),It!==t?(n.charCodeAt(B)===40?(Hn=s,B++):(Hn=t,Y===0&&J(o)),Hn!==t?(dn=X(),dn!==t?(Vn=S9(),Vn!==t?(gn=X(),gn!==t?(n.charCodeAt(B)===41?(_n=a,B++):(_n=t,Y===0&&J(l)),_n!==t?(pn=X(),pn!==t?(rt=I,D=c(T,V,we,Vn),I=D):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t),I}function Ky(){var I;return n.substr(B,6)===u?(I=u,B+=6):(I=t,Y===0&&J(f)),I===t&&(n.substr(B,6)===h?(I=h,B+=6):(I=t,Y===0&&J(A)),I===t&&(n.substr(B,5)===d?(I=d,B+=5):(I=t,Y===0&&J(g)))),I}function jy(){var I,D,T,L;return I=Ft(),I===t&&(I=B,D=Ft(),D!==t?(T=Wy(),T!==t?(D=[D,T],I=D):(B=I,I=t)):(B=I,I=t),I===t&&(I=B,D=Ft(),D!==t?(n.substr(B,4)===p?(T=p,B+=4):(T=t,Y===0&&J(m)),T!==t?(D=[D,T],I=D):(B=I,I=t)):(B=I,I=t),I===t&&(I=B,D=Ft(),D!==t?(T=Wy(),T!==t?(n.substr(B,4)===p?(L=p,B+=4):(L=t,Y===0&&J(m)),L!==t?(D=[D,T,L],I=D):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)))),I}function Wy(){var I;return n.substr(B,7)===C?(I=C,B+=7):(I=t,Y===0&&J(y)),I===t&&(n.substr(B,5)===w?(I=w,B+=5):(I=t,Y===0&&J(E)),I===t&&(n.substr(B,6)===x?(I=x,B+=6):(I=t,Y===0&&J(b)))),I}function Nc(){var I;return I=Xy(),I===t&&(I=X()),I}function S9(){var I,D,T,L,V,Ae,we;if(I=B,D=FA(),D!==t)if(T=X(),T!==t){for(L=[],V=B,Ae=X(),Ae!==t?(we=FA(),we!==t?(rt=V,Ae=S(D,we),V=Ae):(B=V,V=t)):(B=V,V=t);V!==t;)L.push(V),V=B,Ae=X(),Ae!==t?(we=FA(),we!==t?(rt=V,Ae=S(D,we),V=Ae):(B=V,V=t)):(B=V,V=t);L!==t?(V=X(),V!==t?(rt=I,D=Q(D,L),I=D):(B=I,I=t)):(B=I,I=t)}else B=I,I=t;else B=I,I=t;return I}function Q9(){var I;return n.charCodeAt(B)===35?(I=v,B++):(I=t,Y===0&&J(F)),I}function D9(){var I,D,T,L,V;return I=B,D=X(),D!==t?(T=Q9(),T!==t?(L=Xy(),L!==t?(V=X(),V!==t?(D=[D,T,L,V],I=D):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t),I}function FA(){var I,D,T,L,V,Ae,we,It,Hn,dn,Vn,gn,_n,pn;return I=B,D=RA(),D!==t?(T=X(),T!==t?(L=Ft(),L!==t?(V=X(),V!==t?(n.charCodeAt(B)===59?(Ae=R,B++):(Ae=t,Y===0&&J(N)),Ae!==t?(we=X(),we!==t?(It=Nc(),It!==t?(rt=I,D=O(D,L,It),I=D):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t),I===t&&(I=B,D=RA(),D!==t?(T=X(),T!==t?(n.charCodeAt(B)===91?(L=H,B++):(L=t,Y===0&&J(G)),L!==t?(V=X(),V!==t?(Ae=F9(),Ae!==t?(we=X(),we!==t?(n.charCodeAt(B)===93?(It=_,B++):(It=t,Y===0&&J(te)),It!==t?(Hn=X(),Hn!==t?(dn=Ft(),dn!==t?(Vn=X(),Vn!==t?(n.charCodeAt(B)===59?(gn=R,B++):(gn=t,Y===0&&J(N)),gn!==t?(_n=X(),_n!==t?(pn=Nc(),pn!==t?(rt=I,D=oe(D,Ae,dn,pn),I=D):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t),I===t&&(I=B,D=RA(),D!==t?(T=X(),T!==t?(n.charCodeAt(B)===40?(L=s,B++):(L=t,Y===0&&J(o)),L!==t?(V=X(),V!==t?(Ae=k9(),Ae!==t?(we=X(),we!==t?(n.charCodeAt(B)===41?(It=a,B++):(It=t,Y===0&&J(l)),It!==t?(Hn=X(),Hn!==t?(dn=Ft(),dn!==t?(Vn=X(),Vn!==t?(n.charCodeAt(B)===59?(gn=R,B++):(gn=t,Y===0&&J(N)),gn!==t?(_n=X(),_n!==t?(pn=Nc(),pn!==t?(rt=I,D=ne(D,Ae,dn,pn),I=D):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t)):(B=I,I=t),I===t&&(I=D9()))),I}function k9(){var I,D,T,L,V,Ae,we;if(I=B,D=Ft(),D!==t){for(T=[],L=B,n.charCodeAt(B)===44?(V=Ge,B++):(V=t,Y===0&&J(qt)),V!==t?(Ae=X(),Ae!==t?(we=Ft(),we!==t?(rt=L,V=S(D,we),L=V):(B=L,L=t)):(B=L,L=t)):(B=L,L=t);L!==t;)T.push(L),L=B,n.charCodeAt(B)===44?(V=Ge,B++):(V=t,Y===0&&J(qt)),V!==t?(Ae=X(),Ae!==t?(we=Ft(),we!==t?(rt=L,V=S(D,we),L=V):(B=L,L=t)):(B=L,L=t)):(B=L,L=t);T!==t?(rt=I,D=ho(D,T),I=D):(B=I,I=t)}else B=I,I=t;return I}function RA(){var I,D,T,L;return n.substr(B,3)===Ri?(I=Ri,B+=3):(I=t,Y===0&&J(An)),I===t&&(n.substr(B,4)===Dr?(I=Dr,B+=4):(I=t,Y===0&&J(go)),I===t&&(n.substr(B,5)===Mi?(I=Mi,B+=5):(I=t,Y===0&&J(U)),I===t&&(n.substr(B,6)===K?(I=K,B+=6):(I=t,Y===0&&J(W)),I===t&&(n.substr(B,4)===M?(I=M,B+=4):(I=t,Y===0&&J(Xe)),I===t&&(n.substr(B,5)===se?(I=se,B+=5):(I=t,Y===0&&J(nt)),I===t&&(n.substr(B,5)===Ze?(I=Ze,B+=5):(I=t,Y===0&&J(hn)),I===t&&(n.substr(B,4)===po?(I=po,B+=4):(I=t,Y===0&&J(u9)),I===t&&(n.substr(B,6)===Dy?(I=Dy,B+=6):(I=t,Y===0&&J(f9)),I===t&&(n.substr(B,7)===ky?(I=ky,B+=7):(I=t,Y===0&&J(A9)),I===t&&(n.substr(B,4)===Fy?(I=Fy,B+=4):(I=t,Y===0&&J(h9)),I===t&&(n.substr(B,6)===Ry?(I=Ry,B+=6):(I=t,Y===0&&J(d9)),I===t&&(n.substr(B,6)===My?(I=My,B+=6):(I=t,Y===0&&J(g9)),I===t&&(n.substr(B,3)===Ny?(I=Ny,B+=3):(I=t,Y===0&&J(p9)),I===t&&(I=B,D=Ky(),D!==t?(T=X(),T!==t?(L=jy(),L!==t?(rt=I,D=m9(D,L),I=D):(B=I,I=t)):(B=I,I=t)):(B=I,I=t))))))))))))))),I}function F9(){var I;return I=R9(),I===t&&(I=Ft()),I}function Ft(){var I,D,T,L,V;if(I=B,D=B,w9.test(n.charAt(B))?(T=n.charAt(B),B++):(T=t,Y===0&&J(C9)),T!==t){for(L=[],Ty.test(n.charAt(B))?(V=n.charAt(B),B++):(V=t,Y===0&&J(Py));V!==t;)L.push(V),Ty.test(n.charAt(B))?(V=n.charAt(B),B++):(V=t,Y===0&&J(Py));L!==t?(T=[T,L],D=T):(B=D,D=t)}else B=D,D=t;return D!==t&&(rt=I,D=y9()),I=D,I}function Xy(){var I,D,T;for(I=B,D=[],Ly.test(n.charAt(B))?(T=n.charAt(B),B++):(T=t,Y===0&&J(Oy));T!==t;)D.push(T),Ly.test(n.charAt(B))?(T=n.charAt(B),B++):(T=t,Y===0&&J(Oy));return D!==t&&(rt=I,D=I9(D)),I=D,I}function R9(){var I,D,T,L;if(Y++,I=B,D=X(),D!==t){if(T=[],Uy.test(n.charAt(B))?(L=n.charAt(B),B++):(L=t,Y===0&&J(Gy)),L!==t)for(;L!==t;)T.push(L),Uy.test(n.charAt(B))?(L=n.charAt(B),B++):(L=t,Y===0&&J(Gy));else T=t;T!==t?(rt=I,D=E9(),I=D):(B=I,I=t)}else B=I,I=t;return Y--,I===t&&(D=t,Y===0&&J(b9)),I}function X(){var I,D;for(Y++,I=[],zy.test(n.charAt(B))?(D=n.charAt(B),B++):(D=t,Y===0&&J(Hy));D!==t;)I.push(D),zy.test(n.charAt(B))?(D=n.charAt(B),B++):(D=t,Y===0&&J(Hy));return Y--,I===t&&(D=t,Y===0&&J(x9)),I}if(Mc=i(),Mc!==t&&B===n.length)return Mc;throw Mc!==t&&B<n.length&&J(B9()),v9(kA,Kt<n.length?n.charAt(Kt):null,Kt<n.length?Jy(Kt,Kt+1):Jy(Kt,Kt))}const aC={SyntaxError:Ci,parse:o5},rA=Object.fromEntries(Object.entries(Object.freeze(Object.defineProperty({__proto__:null,bigChain:`table bigChain
705
663
  "bigChain pairwise alignment"
706
664
  (
707
665
  string chrom; "Reference sequence chromosome or scaffold"
@@ -860,12 +818,12 @@ chrM 16299`};function d6(n){if(!(n in zy))throw new Error(`Unknown assembly: ${n
860
818
  float score; "Floating point score."
861
819
  char[1] leftStatus; "Gap/break annotation for preceding block"
862
820
  char[1] rightStatus; "Gap/break annotation for following block"
863
- )`},Symbol.toStringTag,{value:"Module"}))).map(([n,t])=>[n,Cb.parse(t.trim())]));function Rg(n){const t=new Set(["uint","int","float","long"]);return{...n,fields:n.fields.map(e=>({...e,isArray:e.size&&e.type!=="char",arrayIsNumeric:e.size&&t.has(e.type),isNumeric:!e.size&&t.has(e.type)})).filter(e=>!!e.name)}}const nL={".":0,"-":-1,"+":1};function rL(n){var t;return n.length>=12&&!Number.isNaN(Number.parseInt(n[9],10))&&((t=n[10])==null?void 0:t.split(",").filter(e=>!!e).length)===Number.parseInt(n[9],10)}class iL{constructor(t={}){if(t.autoSql)this.autoSql=Rg(Cb.parse(t.autoSql));else if(t.type){if(!Fg[t.type])throw new Error("Type not found");this.autoSql=Rg(Fg[t.type])}else this.autoSql=Rg(Fg.defaultBedSchema),this.attemptDefaultBed=!0}parseLine(t,e={}){const{autoSql:r}=this,{uniqueId:i}=e,s=Array.isArray(t)?t:t.split(" ");let o={};if(!this.attemptDefaultBed||this.attemptDefaultBed&&rL(s))for(let a=0;a<r.fields.length;a++){const l=r.fields[a];let c=s[a];const{isNumeric:u,isArray:f,arrayIsNumeric:h,name:A}=l;if(c==null)break;if(c!=="."){if(u){const d=Number(c);c=Number.isNaN(d)?c:d}else f&&(c=c.split(","),c.at(-1)===""&&c.pop(),h&&(c=c.map(Number)));o[A]=c}}else{const a=["chrom","chromStart","chromEnd","name"];o=Object.fromEntries(s.map((l,c)=>[a[c]||"field"+c,l])),o.chromStart=+o.chromStart,o.chromEnd=+o.chromEnd,Number.isNaN(Number.parseFloat(o.field4))||(o.score=+o.field4,delete o.field4),(o.field5==="+"||o.field5==="-")&&(o.strand=o.field5,delete o.field5)}return i&&(o.uniqueId=i),o.strand=nL[o.strand]||0,o.chrom=decodeURIComponent(o.chrom),o}}const sL=Object.freeze(Object.defineProperty({__proto__:null,default:iL},Symbol.toStringTag,{value:"Module"}));var _e=function(n,t,e,r,i){if(r==="m")throw new TypeError("Private method is not writable");if(r==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?n!==t||!i:!t.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?i.call(n,e):i?i.value=e:t.set(n,e),e},G=function(n,t,e,r){if(e==="a"&&!r)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?n!==t||!r:!t.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?r:e==="a"?r.call(n):r?r.value:t.get(n)},ye,kt,Ie,Fe,Ji,ll,qi,BA,an,wb,Mg,Ng,Tg,yb,vA;class ul extends Map{constructor(t={}){if(super(),ye.add(this),kt.set(this,0),Ie.set(this,new Map),Fe.set(this,new Map),Ji.set(this,void 0),ll.set(this,void 0),qi.set(this,void 0),!(t.maxSize&&t.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof t.maxAge=="number"&&t.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");_e(this,Ji,t.maxSize,"f"),_e(this,ll,t.maxAge||Number.POSITIVE_INFINITY,"f"),_e(this,qi,t.onEviction,"f")}get __oldCache(){return G(this,Fe,"f")}get(t){if(G(this,Ie,"f").has(t)){const e=G(this,Ie,"f").get(t);return G(this,ye,"m",Mg).call(this,t,e)}if(G(this,Fe,"f").has(t)){const e=G(this,Fe,"f").get(t);if(!G(this,ye,"m",an).call(this,t,e))return G(this,ye,"m",yb).call(this,t,e),e.value}}set(t,e,{maxAge:r=G(this,ll,"f")}={}){const i=typeof r=="number"&&r!==Number.POSITIVE_INFINITY?Date.now()+r:void 0;return G(this,Ie,"f").has(t)?G(this,Ie,"f").set(t,{value:e,expiry:i}):G(this,ye,"m",Tg).call(this,t,{value:e,expiry:i}),this}has(t){return G(this,Ie,"f").has(t)?!G(this,ye,"m",an).call(this,t,G(this,Ie,"f").get(t)):G(this,Fe,"f").has(t)?!G(this,ye,"m",an).call(this,t,G(this,Fe,"f").get(t)):!1}peek(t){if(G(this,Ie,"f").has(t))return G(this,ye,"m",Ng).call(this,t,G(this,Ie,"f"));if(G(this,Fe,"f").has(t))return G(this,ye,"m",Ng).call(this,t,G(this,Fe,"f"))}expiresIn(t){const e=G(this,Ie,"f").get(t)??G(this,Fe,"f").get(t);if(e)return e.expiry?e.expiry-Date.now():Number.POSITIVE_INFINITY}delete(t){var e;const r=G(this,Ie,"f").delete(t);return r&&_e(this,kt,(e=G(this,kt,"f"),e--,e),"f"),G(this,Fe,"f").delete(t)||r}clear(){G(this,Ie,"f").clear(),G(this,Fe,"f").clear(),_e(this,kt,0,"f")}resize(t){if(!(t&&t>0))throw new TypeError("`maxSize` must be a number greater than 0");const e=[...G(this,ye,"m",vA).call(this)],r=e.length-t;r<0?(_e(this,Ie,new Map(e),"f"),_e(this,Fe,new Map,"f"),_e(this,kt,e.length,"f")):(r>0&&G(this,ye,"m",BA).call(this,e.slice(0,r)),_e(this,Fe,new Map(e.slice(r)),"f"),_e(this,Ie,new Map,"f"),_e(this,kt,0,"f")),_e(this,Ji,t,"f")}evict(t=1){const e=t;if(!e||e<=0)return;const r=[...G(this,ye,"m",vA).call(this)],i=Math.trunc(Math.min(e,Math.max(r.length-1,0)));i<=0||(G(this,ye,"m",BA).call(this,r.slice(0,i)),_e(this,Fe,new Map(r.slice(i)),"f"),_e(this,Ie,new Map,"f"),_e(this,kt,0,"f"))}*keys(){for(const[t]of this)yield t}*values(){for(const[,t]of this)yield t}*[(kt=new WeakMap,Ie=new WeakMap,Fe=new WeakMap,Ji=new WeakMap,ll=new WeakMap,qi=new WeakMap,ye=new WeakSet,BA=function(e){if(typeof G(this,qi,"f")=="function")for(const[r,i]of e)G(this,qi,"f").call(this,r,i.value)},an=function(e,r){return typeof r.expiry=="number"&&r.expiry<=Date.now()?(typeof G(this,qi,"f")=="function"&&G(this,qi,"f").call(this,e,r.value),this.delete(e)):!1},wb=function(e,r){if(!G(this,ye,"m",an).call(this,e,r))return r.value},Mg=function(e,r){return r.expiry?G(this,ye,"m",wb).call(this,e,r):r.value},Ng=function(e,r){const i=r.get(e);return G(this,ye,"m",Mg).call(this,e,i)},Tg=function(e,r){var i;G(this,Ie,"f").set(e,r),_e(this,kt,(i=G(this,kt,"f"),i++,i),"f"),G(this,kt,"f")>=G(this,Ji,"f")&&(_e(this,kt,0,"f"),G(this,ye,"m",BA).call(this,G(this,Fe,"f")),_e(this,Fe,G(this,Ie,"f"),"f"),_e(this,Ie,new Map,"f"))},yb=function(e,r){G(this,Fe,"f").delete(e),G(this,ye,"m",Tg).call(this,e,r)},vA=function*(){for(const e of G(this,Fe,"f")){const[r,i]=e;G(this,Ie,"f").has(r)||G(this,ye,"m",an).call(this,r,i)||(yield e)}for(const e of G(this,Ie,"f")){const[r,i]=e;G(this,ye,"m",an).call(this,r,i)||(yield e)}},Symbol.iterator)](){for(const t of G(this,Ie,"f")){const[e,r]=t;G(this,ye,"m",an).call(this,e,r)||(yield[e,r.value])}for(const t of G(this,Fe,"f")){const[e,r]=t;G(this,Ie,"f").has(e)||G(this,ye,"m",an).call(this,e,r)||(yield[e,r.value])}}*entriesDescending(){let t=[...G(this,Ie,"f")];for(let e=t.length-1;e>=0;--e){const r=t[e],[i,s]=r;G(this,ye,"m",an).call(this,i,s)||(yield[i,s.value])}t=[...G(this,Fe,"f")];for(let e=t.length-1;e>=0;--e){const r=t[e],[i,s]=r;G(this,Ie,"f").has(i)||G(this,ye,"m",an).call(this,i,s)||(yield[i,s.value])}}*entriesAscending(){for(const[t,e]of G(this,ye,"m",vA).call(this))yield[t,e.value]}get size(){if(!G(this,kt,"f"))return G(this,Fe,"f").size;let t=0;for(const e of G(this,Fe,"f").keys())G(this,Ie,"f").has(e)||t++;return Math.min(G(this,kt,"f")+t,G(this,Ji,"f"))}get maxSize(){return G(this,Ji,"f")}get maxAge(){return G(this,ll,"f")}entries(){return this.entriesAscending()}forEach(t,e=this){for(const[r,i]of this.entriesAscending())t.call(e,i,r,this)}get[Symbol.toStringTag](){return"QuickLRU"}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}}let Ib=class{constructor(t,e,r,i){this.minv=t,this.maxv=e,this.bin=r,this._fetchedSize=i}toUniqueString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(t){return this.minv.compareTo(t.minv)||this.maxv.compareTo(t.maxv)||this.bin-t.bin}fetchedSize(){return this._fetchedSize!==void 0?this._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}};const Eb=65536,oL=Eb*Eb;function aL(n,t=0){const e=n[t]|n[t+1]<<8|n[t+2]<<16|n[t+3]<<24;return((n[t+4]|n[t+5]<<8|n[t+6]<<16|n[t+7]<<24)>>>0)*oL+(e>>>0)}function cL(n={}){return"aborted"in n?{signal:n}:n}function Pg(n,t){const e=n.length;if(e===0)return n;let r;if(t){const l=t.blockPosition,c=t.dataPosition;r=[];for(let u=0;u<e;u++){const f=n[u],h=f.maxv;(h.blockPosition-l||h.dataPosition-c)>0&&r.push(f)}if(r.length===0)return r}else r=n;r.sort((l,c)=>{const u=l.minv.blockPosition-c.minv.blockPosition;return u!==0?u:l.minv.dataPosition-c.minv.dataPosition});const i=[];let s=r[0];i.push(s);let o=s.minv.blockPosition,a=s.maxv.blockPosition;for(let l=1;l<r.length;l++){const c=r[l],u=c.minv.blockPosition,f=c.maxv.blockPosition;if(u-a<65e3&&f-o<5e6){const h=c.maxv,A=s.maxv;(f-a||h.dataPosition-A.dataPosition)>0&&(s.maxv=h,a=f)}else i.push(c),s=c,o=u,a=f}return i}function bb(n,t){return{lineCount:aL(n,t)}}function fl(n,t){return n?n.compareTo(t)>0?t:n:t}function lL(n,t=e=>e){let e=0,r=0;const i=[],s={};for(let o=0;o<n.length;o+=1)if(!n[o]){if(r<o){let a="";for(let l=r;l<o;l++)a+=String.fromCharCode(n[l]);a=t(a),i[e]=a,s[a]=e}r=o+1,e+=1}return{refNameToId:s,refIdToName:i}}function uL(n){let t=0;for(const i of n)t+=i.length;const e=new Uint8Array(t);let r=0;for(const i of n)e.set(i,r),r+=i.length;return e}function fL(n,t,e){return!!((n&t)!==t||n&e)}function AL(n,t){return t==="*"?n===void 0:`${n}`!=`${t}`}function hL(n){if(!n)return"";const{flagInclude:t=0,flagExclude:e=0,tagFilter:r}=n,i=r?`:${r.tag}=${r.value??"*"}`:"";return`:f${t}x${e}${i}`}let xb=class{constructor({filehandle:t,renameRefSeq:e=r=>r}){this.filehandle=t,this.renameRefSeq=e}async estimatedBytesForRegions(t,e){const r=await Promise.all(t.map(o=>this.blocksForRange(o.refId,o.start,o.end,e))),i=Pg(r.flat());let s=0;for(const o of i)s+=o.fetchedSize();return s}},Bb=class{constructor(t,e){this.blockPosition=t,this.dataPosition=e}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(t){return this.blockPosition-t.blockPosition||this.dataPosition-t.dataPosition}};function Or(n,t=0,e=!1){if(e)throw new Error("big-endian virtual file offsets not implemented");return new Bb(n[t+7]*1099511627776+n[t+6]*4294967296+n[t+5]*16777216+n[t+4]*65536+n[t+3]*256+n[t+2],n[t+1]<<8|n[t])}const dL=21578050;function gL(n,t){return n-n%t}function pL(n,t){return n-n%t+t}function mL(n,t){return t-=1,[[0,0],[1+(n>>26),1+(t>>26)],[9+(n>>23),9+(t>>23)],[73+(n>>20),73+(t>>20)],[585+(n>>17),585+(t>>17)],[4681+(n>>14),4681+(t>>14)]]}class Qo extends xb{async lineCount(t,e){var i,s;return((s=(i=(await this.parse(e)).indices(t))==null?void 0:i.stats)==null?void 0:s.lineCount)||0}async _parse(t){const e=await this.filehandle.readFile(),r=new DataView(e.buffer);if(r.getUint32(0,!0)!==dL)throw new Error("Not a BAI file");const i=r.getInt32(4,!0),o=((1<<(5+1)*3)-1)/7;let a=8,l;const c=[];for(let h=0;h<i;h++){c.push(a);const A=r.getInt32(a,!0);a+=4;for(let C=0;C<A;C+=1){const m=r.getUint32(a,!0);if(a+=4,m===o+1)a+=4,a+=32;else{if(m>o+1)throw new Error("bai index contains too many bins, please use CSI");{const y=r.getInt32(a,!0);a+=4;for(let I=0;I<y;I++)a+=8,a+=8}}}const d=r.getInt32(a,!0);a+=4;const p=new Array(d);for(let C=0;C<d;C++){const m=Or(e,a);a+=8,l=fl(l,m),p[C]=m}}const u=new ul({maxSize:5});function f(h){let A=c[h];if(A===void 0)return;const d=r.getInt32(A,!0);let p;A+=4;const C={};for(let I=0;I<d;I+=1){const w=r.getUint32(A,!0);if(A+=4,w===o+1)A+=4,p=bb(e,A+16),A+=32;else{if(w>o+1)throw new Error("bai index contains too many bins, please use CSI");{const x=r.getInt32(A,!0);A+=4;const B=new Array(x);for(let E=0;E<x;E++){const D=Or(e,A);A+=8;const R=Or(e,A);A+=8,l=fl(l,D),B[E]=new Ib(D,R,w)}C[w]=B}}}const m=r.getInt32(A,!0);A+=4;const y=new Array(m);for(let I=0;I<m;I++){const w=Or(e,A);A+=8,l=fl(l,w),y[I]=w}return{binIndex:C,linearIndex:y,stats:p}}return{bai:!0,firstDataLine:l,maxBlockSize:65536,indices:h=>{if(!u.has(h)){const A=f(h);return A&&u.set(h,A),A}return u.get(h)},refCount:i}}async indexCov(t,e,r,i){const o=e!==void 0,l=(await this.parse(i)).indices(t);if(!l)return[];const{linearIndex:c,stats:u}=l;if(c.length===0)return[];const f=r===void 0?(c.length-1)*16384:pL(r,16384),h=e===void 0?0:gL(e,16384),A=o?new Array((f-h)/16384):new Array(c.length-1),d=c[c.length-1].blockPosition;if(f>(c.length-1)*16384)throw new Error("query outside of range of linear index");let p=c[h/16384].blockPosition;for(let C=h/16384,m=0;C<f/16384;C++,m++)A[m]={score:c[C+1].blockPosition-p,start:C*16384,end:C*16384+16384},p=c[C+1].blockPosition;return A.map(C=>({...C,score:C.score*((u==null?void 0:u.lineCount)||0)/d}))}async blocksForRange(t,e,r,i={}){e<0&&(e=0);const s=await this.parse(i);if(!s)return[];const o=s.indices(t);if(!o)return[];const a=mL(e,r),l=[],{binIndex:c}=o;for(const[d,p]of a)for(let C=d;C<=p;C++){const m=c[C];if(m)for(let y=0,I=m.length;y<I;y++)l.push(m[y])}const{linearIndex:u}=o,f=u.length,h=Math.min(e>>14,f-1),A=u[h];return Pg(l,A)}async parse(t={}){return this.setupP||(this.setupP=this._parse(t).catch(e=>{throw this.setupP=void 0,e})),this.setupP}async hasRefSeq(t,e={}){var i;return!!((i=(await this.parse(e)).indices(t))!=null&&i.binIndex)}}var vb=0,Sb=2,SA=4,Ki=0,QA=1,CL=2,wL=-5;function yL(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function IL(n){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var e=t.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(var r in e)yL(e,r)&&(n[r]=e[r])}}return n}function Qb(n,t){return n.length===t?n:n.subarray?n.subarray(0,t):(n.length=t,n)}var Al={arraySet:function(n,t,e,r,i){if(t.subarray&&n.subarray){n.set(t.subarray(e,e+r),i);return}for(var s=0;s<r;s++)n[i+s]=t[e+s]},flattenChunks:function(n){var t,e,r,i,s,o;for(r=0,t=0,e=n.length;t<e;t++)r+=n[t].length;for(o=new Uint8Array(r),i=0,t=0,e=n.length;t<e;t++)s=n[t],o.set(s,i),i+=s.length;return o},Buf8:function(n){return new Uint8Array(n)},Buf16:function(n){return new Uint16Array(n)},Buf32:function(n){return new Int32Array(n)}},hl={arraySet:function(n,t,e,r,i){for(var s=0;s<r;s++)n[i+s]=t[e+s]},flattenChunks:function(n){return[].concat.apply([],n)},Buf8:function(n){return new Array(n)},Buf16:function(n){return new Array(n)},Buf32:function(n){return new Array(n)}};let Do=()=>{const n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return Do=()=>n,n},Ur=(n,t,e,r,i)=>(Ur=Do()?Al.arraySet:hl.arraySet,Ur(n,t,e,r,i)),Lg=n=>(Lg=Do()?Al.flattenChunks:hl.flattenChunks,Lg(n)),ko=n=>(ko=Do()?Al.Buf8:hl.Buf8,ko(n)),Fo=n=>(Fo=Do()?Al.Buf16:hl.Buf16,Fo(n)),Ro=n=>(Ro=Do()?Al.Buf32:hl.Buf32,Ro(n)),Db=function(){let n=!0;try{String.fromCharCode.apply(null,[0])}catch{n=!1}return Db=()=>n,n},kb=function(){let n=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{n=!1}return kb=()=>n,n},Og=function(n){for(var t=ko(256),e=0;e<256;e++)t[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;return t[254]=t[254]=1,Og=r=>t[r],t[n]};function Fb(n){var t,e,r,i,s,o=n.length,a=0;for(i=0;i<o;i++)e=n.charCodeAt(i),(e&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),i++)),a+=e<128?1:e<2048?2:e<65536?3:4;for(t=new Uint8Array(a),s=0,i=0;s<a;i++)e=n.charCodeAt(i),(e&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),i++)),e<128?t[s++]=e:e<2048?(t[s++]=192|e>>>6,t[s++]=128|e&63):e<65536?(t[s++]=224|e>>>12,t[s++]=128|e>>>6&63,t[s++]=128|e&63):(t[s++]=240|e>>>18,t[s++]=128|e>>>12&63,t[s++]=128|e>>>6&63,t[s++]=128|e&63);return t}function EL(n,t){if(t<65534&&(n.subarray&&kb()||!n.subarray&&Db()))return String.fromCharCode.apply(null,Qb(n,t));for(var e="",r=0;r<t;r++)e+=String.fromCharCode(n[r]);return e}function bL(n){for(var t=new Uint8Array(n.length),e=0,r=t.length;e<r;e++)t[e]=n.charCodeAt(e);return t}function xL(n,t){var e,r,i,s,o=t||n.length,a=new Array(o*2);for(r=0,e=0;e<o;){if(i=n[e++],i<128){a[r++]=i;continue}if(s=Og(i),s>4){a[r++]=65533,e+=s-1;continue}for(i&=s===2?31:s===3?15:7;s>1&&e<o;)i=i<<6|n[e++]&63,s--;if(s>1){a[r++]=65533;continue}i<65536?a[r++]=i:(i-=65536,a[r++]=55296|i>>10&1023,a[r++]=56320|i&1023)}return EL(a,r)}function BL(n,t){var e;for(t=t||n.length,t>n.length&&(t=n.length),e=t-1;e>=0&&(n[e]&192)===128;)e--;return e<0||e===0?t:e+Og(n[e])>t?e:t}function vL(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function Ug(n,t,e,r){for(var i=n&65535|0,s=n>>>16&65535|0,o=0;e!==0;){o=e>2e3?2e3:e,e-=o;do i=i+t[r++]|0,s=s+i|0;while(--o);i%=65521,s%=65521}return i|s<<16|0}function SL(){for(var n,t=[],e=0;e<256;e++){n=e;for(var r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;t[e]=n}return t}let Rb=function(){const n=SL();return Rb=()=>n,n};function Qn(n,t,e,r){var i=Rb(),s=r+e;n^=-1;for(var o=r;o<s;o++)n=n>>>8^i[(n^t[o])&255];return n^-1}var DA=30,QL=12;function DL(n,t){var e,r,i,s,o,a,l,c,u,f,h,A,d,p,C,m,y,I,w,x,B,E,D,R,k;e=n.state,r=n.next_in,R=n.input,i=r+(n.avail_in-5),s=n.next_out,k=n.output,o=s-(t-n.avail_out),a=s+(n.avail_out-257),l=e.dmax,c=e.wsize,u=e.whave,f=e.wnext,h=e.window,A=e.hold,d=e.bits,p=e.lencode,C=e.distcode,m=(1<<e.lenbits)-1,y=(1<<e.distbits)-1;e:do{d<15&&(A+=R[r++]<<d,d+=8,A+=R[r++]<<d,d+=8),I=p[A&m];t:for(;;){if(w=I>>>24,A>>>=w,d-=w,w=I>>>16&255,w===0)k[s++]=I&65535;else if(w&16){x=I&65535,w&=15,w&&(d<w&&(A+=R[r++]<<d,d+=8),x+=A&(1<<w)-1,A>>>=w,d-=w),d<15&&(A+=R[r++]<<d,d+=8,A+=R[r++]<<d,d+=8),I=C[A&y];n:for(;;){if(w=I>>>24,A>>>=w,d-=w,w=I>>>16&255,w&16){if(B=I&65535,w&=15,d<w&&(A+=R[r++]<<d,d+=8,d<w&&(A+=R[r++]<<d,d+=8)),B+=A&(1<<w)-1,B>l){n.msg="invalid distance too far back",e.mode=DA;break e}if(A>>>=w,d-=w,w=s-o,B>w){if(w=B-w,w>u&&e.sane){n.msg="invalid distance too far back",e.mode=DA;break e}if(E=0,D=h,f===0){if(E+=c-w,w<x){x-=w;do k[s++]=h[E++];while(--w);E=s-B,D=k}}else if(f<w){if(E+=c+f-w,w-=f,w<x){x-=w;do k[s++]=h[E++];while(--w);if(E=0,f<x){w=f,x-=w;do k[s++]=h[E++];while(--w);E=s-B,D=k}}}else if(E+=f-w,w<x){x-=w;do k[s++]=h[E++];while(--w);E=s-B,D=k}for(;x>2;)k[s++]=D[E++],k[s++]=D[E++],k[s++]=D[E++],x-=3;x&&(k[s++]=D[E++],x>1&&(k[s++]=D[E++]))}else{E=s-B;do k[s++]=k[E++],k[s++]=k[E++],k[s++]=k[E++],x-=3;while(x>2);x&&(k[s++]=k[E++],x>1&&(k[s++]=k[E++]))}}else if((w&64)===0){I=C[(I&65535)+(A&(1<<w)-1)];continue n}else{n.msg="invalid distance code",e.mode=DA;break e}break}}else if((w&64)===0){I=p[(I&65535)+(A&(1<<w)-1)];continue t}else if(w&32){e.mode=QL;break e}else{n.msg="invalid literal/length code",e.mode=DA;break e}break}}while(r<i&&s<a);x=d>>3,r-=x,d-=x<<3,A&=(1<<d)-1,n.next_in=r,n.next_out=s,n.avail_in=r<i?5+(i-r):5-(r-i),n.avail_out=s<a?257+(a-s):257-(s-a),e.hold=A,e.bits=d}var Mo=15,Mb=852,Nb=592,Tb=0,Gg=1,Pb=2,kL=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],FL=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],RL=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],ML=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function dl(n,t,e,r,i,s,o,a){var l=a.bits,c=0,u=0,f=0,h=0,A=0,d=0,p=0,C=0,m=0,y=0,I,w,x,B,E,D=null,R=0,k,P=Fo(Mo+1),T=Fo(Mo+1),O=null,z=0,J,V,q;for(c=0;c<=Mo;c++)P[c]=0;for(u=0;u<r;u++)P[t[e+u]]++;for(A=l,h=Mo;h>=1&&P[h]===0;h--);if(A>h&&(A=h),h===0)return i[s++]=1<<24|64<<16|0,i[s++]=1<<24|64<<16|0,a.bits=1,0;for(f=1;f<h&&P[f]===0;f++);for(A<f&&(A=f),C=1,c=1;c<=Mo;c++)if(C<<=1,C-=P[c],C<0)return-1;if(C>0&&(n===Tb||h!==1))return-1;for(T[1]=0,c=1;c<Mo;c++)T[c+1]=T[c]+P[c];for(u=0;u<r;u++)t[e+u]!==0&&(o[T[t[e+u]]++]=u);if(n===Tb?(D=O=o,k=19):n===Gg?(D=kL,R-=257,O=FL,z-=257,k=256):(D=RL,O=ML,k=-1),y=0,u=0,c=f,E=s,d=A,p=0,x=-1,m=1<<A,B=m-1,n===Gg&&m>Mb||n===Pb&&m>Nb)return 1;for(;;){J=c-p,o[u]<k?(V=0,q=o[u]):o[u]>k?(V=O[z+o[u]],q=D[R+o[u]]):(V=96,q=0),I=1<<c-p,w=1<<d,f=w;do w-=I,i[E+(y>>p)+w]=J<<24|V<<16|q|0;while(w!==0);for(I=1<<c-1;y&I;)I>>=1;if(I!==0?(y&=I-1,y+=I):y=0,u++,--P[c]===0){if(c===h)break;c=t[e+o[u]]}if(c>A&&(y&B)!==x){for(p===0&&(p=A),E+=f,d=c-p,C=1<<d;d+p<h&&(C-=P[d+p],!(C<=0));)d++,C<<=1;if(m+=1<<d,n===Gg&&m>Mb||n===Pb&&m>Nb)return 1;x=y&B,i[x]=A<<24|d<<16|E-s|0}}return y!==0&&(i[E+y]=c-p<<24|64<<16|0),a.bits=A,0}var NL=0,Lb=1,Ob=2,Ub=4,ji=0,TL=1,PL=2,Yt=-2,Gb=-3,zb=-4,LL=-5,Hb=8,Vb=1,_b=2,Yb=3,Jb=4,qb=5,Kb=6,jb=7,Wb=8,Xb=9,Zb=10,kA=11,jn=12,zg=13,$b=14,Hg=15,ex=16,tx=17,nx=18,rx=19,FA=20,RA=21,ix=22,sx=23,ox=24,ax=25,cx=26,Vg=27,lx=28,ux=29,Se=30,fx=31,OL=32,UL=852,GL=592;function Ax(n){return(n>>>24&255)+(n>>>8&65280)+((n&65280)<<8)+((n&255)<<24)}function zL(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=Fo(320),this.work=Fo(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function HL(n){var t;return!n||!n.state?Yt:(t=n.state,n.total_in=n.total_out=t.total=0,n.msg="",t.wrap&&(n.adler=t.wrap&1),t.mode=Vb,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=Ro(UL),t.distcode=t.distdyn=Ro(GL),t.sane=1,t.back=-1,ji)}function VL(n){var t;return!n||!n.state?Yt:(t=n.state,t.wsize=0,t.whave=0,t.wnext=0,HL(n))}function _L(n,t){var e,r;return!n||!n.state||(r=n.state,t<0?(e=0,t=-t):(e=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?Yt:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=e,r.wbits=t,VL(n))}function YL(n,t){var e,r;return n?(r=new zL,n.state=r,r.window=null,e=_L(n,t),e!==ji&&(n.state=null),e):Yt}var hx=!0,_g,Yg;function JL(n){if(hx){var t;for(_g=Ro(512),Yg=Ro(32),t=0;t<144;)n.lens[t++]=8;for(;t<256;)n.lens[t++]=9;for(;t<280;)n.lens[t++]=7;for(;t<288;)n.lens[t++]=8;for(dl(Lb,n.lens,0,288,_g,0,n.work,{bits:9}),t=0;t<32;)n.lens[t++]=5;dl(Ob,n.lens,0,32,Yg,0,n.work,{bits:5}),hx=!1}n.lencode=_g,n.lenbits=9,n.distcode=Yg,n.distbits=5}function dx(n,t,e,r){var i,s=n.state;return s.window===null&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=ko(s.wsize)),r>=s.wsize?(Ur(s.window,t,e-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),Ur(s.window,t,e-r,i,s.wnext),r-=i,r?(Ur(s.window,t,e-r,r,0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}function qL(n,t){var e,r,i,s,o,a,l,c,u,f,h,A,d,p,C=0,m,y,I,w,x,B,E,D,R=ko(4),k,P,T=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!n||!n.state||!n.output||!n.input&&n.avail_in!==0)return Yt;e=n.state,e.mode===jn&&(e.mode=zg),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=e.hold,u=e.bits,f=a,h=l,D=ji;e:for(;;)switch(e.mode){case Vb:if(e.wrap===0){e.mode=zg;break}for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.wrap&2&&c===35615){e.check=0,R[0]=c&255,R[1]=c>>>8&255,e.check=Qn(e.check,R,2,0),c=0,u=0,e.mode=_b;break}if(e.flags=0,e.head&&(e.head.done=!1),!(e.wrap&1)||(((c&255)<<8)+(c>>8))%31){n.msg="incorrect header check",e.mode=Se;break}if((c&15)!==Hb){n.msg="unknown compression method",e.mode=Se;break}if(c>>>=4,u-=4,E=(c&15)+8,e.wbits===0)e.wbits=E;else if(E>e.wbits){n.msg="invalid window size",e.mode=Se;break}e.dmax=1<<E,n.adler=e.check=1,e.mode=c&512?Zb:jn,c=0,u=0;break;case _b:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.flags=c,(e.flags&255)!==Hb){n.msg="unknown compression method",e.mode=Se;break}if(e.flags&57344){n.msg="unknown header flags set",e.mode=Se;break}e.head&&(e.head.text=c>>8&1),e.flags&512&&(R[0]=c&255,R[1]=c>>>8&255,e.check=Qn(e.check,R,2,0)),c=0,u=0,e.mode=Yb;case Yb:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.head&&(e.head.time=c),e.flags&512&&(R[0]=c&255,R[1]=c>>>8&255,R[2]=c>>>16&255,R[3]=c>>>24&255,e.check=Qn(e.check,R,4,0)),c=0,u=0,e.mode=Jb;case Jb:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.head&&(e.head.xflags=c&255,e.head.os=c>>8),e.flags&512&&(R[0]=c&255,R[1]=c>>>8&255,e.check=Qn(e.check,R,2,0)),c=0,u=0,e.mode=qb;case qb:if(e.flags&1024){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.length=c,e.head&&(e.head.extra_len=c),e.flags&512&&(R[0]=c&255,R[1]=c>>>8&255,e.check=Qn(e.check,R,2,0)),c=0,u=0}else e.head&&(e.head.extra=null);e.mode=Kb;case Kb:if(e.flags&1024&&(A=e.length,A>a&&(A=a),A&&(e.head&&(E=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),Ur(e.head.extra,r,s,A,E)),e.flags&512&&(e.check=Qn(e.check,r,A,s)),a-=A,s+=A,e.length-=A),e.length))break e;e.length=0,e.mode=jb;case jb:if(e.flags&2048){if(a===0)break e;A=0;do E=r[s+A++],e.head&&E&&e.length<65536&&(e.head.name+=String.fromCharCode(E));while(E&&A<a);if(e.flags&512&&(e.check=Qn(e.check,r,A,s)),a-=A,s+=A,E)break e}else e.head&&(e.head.name=null);e.length=0,e.mode=Wb;case Wb:if(e.flags&4096){if(a===0)break e;A=0;do E=r[s+A++],e.head&&E&&e.length<65536&&(e.head.comment+=String.fromCharCode(E));while(E&&A<a);if(e.flags&512&&(e.check=Qn(e.check,r,A,s)),a-=A,s+=A,E)break e}else e.head&&(e.head.comment=null);e.mode=Xb;case Xb:if(e.flags&512){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(e.check&65535)){n.msg="header crc mismatch",e.mode=Se;break}c=0,u=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),n.adler=e.check=0,e.mode=jn;break;case Zb:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}n.adler=e.check=Ax(c),c=0,u=0,e.mode=kA;case kA:if(e.havedict===0)return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,PL;n.adler=e.check=1,e.mode=jn;case jn:case zg:if(e.last){c>>>=u&7,u-=u&7,e.mode=Vg;break}for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}switch(e.last=c&1,c>>>=1,u-=1,c&3){case 0:e.mode=$b;break;case 1:JL(e),e.mode=FA;break;case 2:e.mode=tx;break;case 3:n.msg="invalid block type",e.mode=Se}c>>>=2,u-=2;break;case $b:for(c>>>=u&7,u-=u&7;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){n.msg="invalid stored block lengths",e.mode=Se;break}e.length=c&65535,c=0,u=0,e.mode=Hg;case Hg:e.mode=ex;case ex:if(A=e.length,A){if(A>a&&(A=a),A>l&&(A=l),A===0)break e;Ur(i,r,s,A,o),a-=A,s+=A,l-=A,o+=A,e.length-=A;break}e.mode=jn;break;case tx:for(;u<14;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.nlen=(c&31)+257,c>>>=5,u-=5,e.ndist=(c&31)+1,c>>>=5,u-=5,e.ncode=(c&15)+4,c>>>=4,u-=4,e.nlen>286||e.ndist>30){n.msg="too many length or distance symbols",e.mode=Se;break}e.have=0,e.mode=nx;case nx:for(;e.have<e.ncode;){for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.lens[T[e.have++]]=c&7,c>>>=3,u-=3}for(;e.have<19;)e.lens[T[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,k={bits:e.lenbits},D=dl(NL,e.lens,0,19,e.lencode,0,e.work,k),e.lenbits=k.bits,D){n.msg="invalid code lengths set",e.mode=Se;break}e.have=0,e.mode=rx;case rx:for(;e.have<e.nlen+e.ndist;){for(;C=e.lencode[c&(1<<e.lenbits)-1],m=C>>>24,y=C>>>16&255,I=C&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(I<16)c>>>=m,u-=m,e.lens[e.have++]=I;else{if(I===16){for(P=m+2;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c>>>=m,u-=m,e.have===0){n.msg="invalid bit length repeat",e.mode=Se;break}E=e.lens[e.have-1],A=3+(c&3),c>>>=2,u-=2}else if(I===17){for(P=m+3;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=m,u-=m,E=0,A=3+(c&7),c>>>=3,u-=3}else{for(P=m+7;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=m,u-=m,E=0,A=11+(c&127),c>>>=7,u-=7}if(e.have+A>e.nlen+e.ndist){n.msg="invalid bit length repeat",e.mode=Se;break}for(;A--;)e.lens[e.have++]=E}}if(e.mode===Se)break;if(e.lens[256]===0){n.msg="invalid code -- missing end-of-block",e.mode=Se;break}if(e.lenbits=9,k={bits:e.lenbits},D=dl(Lb,e.lens,0,e.nlen,e.lencode,0,e.work,k),e.lenbits=k.bits,D){n.msg="invalid literal/lengths set",e.mode=Se;break}if(e.distbits=6,e.distcode=e.distdyn,k={bits:e.distbits},D=dl(Ob,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,k),e.distbits=k.bits,D){n.msg="invalid distances set",e.mode=Se;break}e.mode=FA;case FA:e.mode=RA;case RA:if(a>=6&&l>=258){n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,DL(n,h),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=e.hold,u=e.bits,e.mode===jn&&(e.back=-1);break}for(e.back=0;C=e.lencode[c&(1<<e.lenbits)-1],m=C>>>24,y=C>>>16&255,I=C&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(y&&(y&240)===0){for(w=m,x=y,B=I;C=e.lencode[B+((c&(1<<w+x)-1)>>w)],m=C>>>24,y=C>>>16&255,I=C&65535,!(w+m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=w,u-=w,e.back+=w}if(c>>>=m,u-=m,e.back+=m,e.length=I,y===0){e.mode=cx;break}if(y&32){e.back=-1,e.mode=jn;break}if(y&64){n.msg="invalid literal/length code",e.mode=Se;break}e.extra=y&15,e.mode=ix;case ix:if(e.extra){for(P=e.extra;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.length+=c&(1<<e.extra)-1,c>>>=e.extra,u-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=sx;case sx:for(;C=e.distcode[c&(1<<e.distbits)-1],m=C>>>24,y=C>>>16&255,I=C&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((y&240)===0){for(w=m,x=y,B=I;C=e.distcode[B+((c&(1<<w+x)-1)>>w)],m=C>>>24,y=C>>>16&255,I=C&65535,!(w+m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=w,u-=w,e.back+=w}if(c>>>=m,u-=m,e.back+=m,y&64){n.msg="invalid distance code",e.mode=Se;break}e.offset=I,e.extra=y&15,e.mode=ox;case ox:if(e.extra){for(P=e.extra;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.offset+=c&(1<<e.extra)-1,c>>>=e.extra,u-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){n.msg="invalid distance too far back",e.mode=Se;break}e.mode=ax;case ax:if(l===0)break e;if(A=h-l,e.offset>A){if(A=e.offset-A,A>e.whave&&e.sane){n.msg="invalid distance too far back",e.mode=Se;break}A>e.wnext?(A-=e.wnext,d=e.wsize-A):d=e.wnext-A,A>e.length&&(A=e.length),p=e.window}else p=i,d=o-e.offset,A=e.length;A>l&&(A=l),l-=A,e.length-=A;do i[o++]=p[d++];while(--A);e.length===0&&(e.mode=RA);break;case cx:if(l===0)break e;i[o++]=e.length,l--,e.mode=RA;break;case Vg:if(e.wrap){for(;u<32;){if(a===0)break e;a--,c|=r[s++]<<u,u+=8}if(h-=l,n.total_out+=h,e.total+=h,h&&(n.adler=e.check=e.flags?Qn(e.check,i,h,o-h):Ug(e.check,i,h,o-h)),h=l,(e.flags?c:Ax(c))!==e.check){n.msg="incorrect data check",e.mode=Se;break}c=0,u=0}e.mode=lx;case lx:if(e.wrap&&e.flags){for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(e.total&4294967295)){n.msg="incorrect length check",e.mode=Se;break}c=0,u=0}e.mode=ux;case ux:D=TL;break e;case Se:D=Gb;break e;case fx:return zb;case OL:default:return Yt}return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,(e.wsize||h!==n.avail_out&&e.mode<Se&&(e.mode<Vg||t!==Ub))&&dx(n,n.output,n.next_out,h-n.avail_out),f-=n.avail_in,h-=n.avail_out,n.total_in+=f,n.total_out+=h,e.total+=h,e.wrap&&h&&(n.adler=e.check=e.flags?Qn(e.check,i,h,n.next_out-h):Ug(e.check,i,h,n.next_out-h)),n.data_type=e.bits+(e.last?64:0)+(e.mode===jn?128:0)+(e.mode===FA||e.mode===Hg?256:0),(f===0&&h===0||t===Ub)&&D===ji&&(D=LL),D}function KL(n){if(!n||!n.state)return Yt;var t=n.state;return t.window&&(t.window=null),n.state=null,ji}function jL(n,t){var e;return!n||!n.state||(e=n.state,(e.wrap&2)===0)?Yt:(e.head=t,t.done=!1,ji)}function gx(n,t){var e=t.length,r,i,s;return!n||!n.state||(r=n.state,r.wrap!==0&&r.mode!==kA)?Yt:r.mode===kA&&(i=1,i=Ug(i,t,e,0),i!==r.check)?Gb:(s=dx(n,t,e,e),s?(r.mode=fx,zb):(r.havedict=1,ji))}const Jg={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function WL(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var qg=Object.prototype.toString;class MA{constructor(t){if(!(this instanceof MA))return new MA(t);this.options=IL({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new WL,this.strm.avail_out=0;var r=YL(this.strm,e.windowBits);if(r!==Ki)throw new Error(Jg[r]);if(this.header=new vL,jL(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=Fb(e.dictionary):qg.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=gx(this.strm,e.dictionary),r!==Ki)))throw new Error(Jg[r])}push(t,e){var r=this.strm,i=this.options.chunkSize,s=this.options.dictionary,o,a,l,c,u,f,h=!1;if(this.ended)return!1;a=e===~~e?e:e===!0?SA:vb,typeof t=="string"?r.input=bL(t):qg.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=ko(i),r.next_out=0,r.avail_out=i),o=qL(r,vb),o===CL&&s&&(typeof s=="string"?f=Fb(s):qg.call(s)==="[object ArrayBuffer]"?f=new Uint8Array(s):f=s,o=gx(this.strm,f)),o===wL&&h===!0&&(o=Ki,h=!1),o!==QA&&o!==Ki)return this.onEnd(o),this.ended=!0,!1;r.next_out&&(r.avail_out===0||o===QA||r.avail_in===0&&(a===SA||a===Sb))&&(this.options.to==="string"?(l=BL(r.output,r.next_out),c=r.next_out-l,u=xL(r.output,l),r.next_out=c,r.avail_out=i-c,c&&Ur(r.output,r.output,l,c,0),this.onData(u)):this.onData(Qb(r.output,r.next_out))),r.avail_in===0&&r.avail_out===0&&(h=!0)}while((r.avail_in>0||r.avail_out===0)&&o!==QA);return o===QA&&(a=SA),a===SA?(o=KL(this.strm),this.onEnd(o),this.ended=!0,o===Ki):(a===Sb&&(this.onEnd(Ki),r.avail_out=0),!0)}onData(t){this.chunks.push(t)}onEnd(t){t===Ki&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Lg(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg}}function XL(n,t){var e=new MA(t);if(e.push(n,!0),e.err)throw e.msg||Jg[e.err];return e.result}var ZL=XL,Wi={};Wi.d=(n,t)=>{for(var e in t)Wi.o(t,e)&&!Wi.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},Wi.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t),Wi.r=n=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var Kg={};Wi.r(Kg),Wi.d(Kg,{ChunkSliceResult:()=>To,DecompressResult:()=>Po,__wbg_Error_52673b7de5a0ca89:()=>aO,__wbg___wbindgen_throw_dd24417ed36fc46e:()=>cO,__wbg_set_wasm:()=>px,decompress_all:()=>Ix,decompress_block:()=>oO,decompress_chunk_slice:()=>Ex});const $L="data:application/wasm;base64,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fGooAgAiAkF4cSIAaiEDAkACQCACQQFxDQAgAkECcUUNASABKAIAIgIgAGohAAJAIAEgAmsiAUEAKALAoEBHDQAgAygCBEEDcUEDRw0BQQAgADYCuKBAIAMgAygCBEF+cTYCBCABIABBAXI2AgQgAyAANgIADwsgASACEBALAkACQAJAAkACQAJAIAMoAgQiAkECcQ0AIANBACgCxKBARg0CIANBACgCwKBARg0DIAMgAkF4cSICEBAgASACIABqIgBBAXI2AgQgASAAaiAANgIAIAFBACgCwKBARw0BQQAgADYCuKBADwsgAyACQX5xNgIEIAEgAEEBcjYCBCABIABqIAA2AgALIABBgAJJDQIgASAAEBFBACEBQQBBACgC2KBAQX9qIgA2AtigQCAADQQCQEEAKAKgnkAiAEUNAEEAIQEDQCABQQFqIQEgACgCCCIADQALC0EAIAFB/x8gAUH/H0sbNgLYoEAPC0EAIAE2AsSgQEEAQQAoArygQCAAaiIANgK8oEAgASAAQQFyNgIEAkAgAUEAKALAoEBHDQBBAEEANgK4oEBBAEEANgLAoEALIABBACgC0KBAIgRNDQNBACgCxKBAIgBFDQNBACECQQAoArygQCIFQSlJDQJBmJ7AACEBA0ACQCABKAIAIgMgAEsNACAAIAMgASgCBGpJDQQLIAEoAgghAQwACwtBACABNgLAoEBBAEEAKAK4oEAgAGoiADYCuKBAIAEgAEEBcjYCBCABIABqIAA2AgAPCwJAAkBBACgCsKBAIgNBASAAQQN2dCICcQ0AQQAgAyACcjYCsKBAIABB+AFxQaiewABqIgAhAwwBCyAAQfgBcSIDQaiewABqIQAgA0GwnsAAaigCACEDCyAAIAE2AgggAyABNgIMIAEgADYCDCABIAM2AggPCwJAQQAoAqCeQCIBRQ0AQQAhAgNAIAJBAWohAiABKAIIIgENAAsLQQAgAkH/HyACQf8fSxs2AtigQCAFIARNDQBBAEF/NgLQoEALC44FAQd/AkACQCAAKAIIIgNBgICAwAFxRQ0AAkACQAJAAkACQCADQYCAgIABcUUNACAALwEOIgQNAUEAIQIMAgsCQCACQRBJDQAgASACEAYhBQwECwJAIAINAEEAIQJBACEFDAQLIAJBA3EhBgJAAkAgAkEETw0AQQAhBUEAIQcMAQsg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IgJBAWoiAzYCACADRQ0BIAAoAgBBf0YNAiAAKAIQIQAgASACNgIAIAAPCxBdCwALEF8AC1ABAX8CQCACIAAoAgAgACgCCCIDa00NACAAIAMgAkEBQQEQFyAAKAIIIQMLAkAgAkUNACAAKAIEIANqIAEgAvwKAAALIAAgAyACajYCCEEAC0wBAX8CQCAAKAIAIgBBDGooAgAiAUUNACAAQRBqKAIAIAFBARBXCwJAIABBf0YNACAAIAAoAgRBf2oiATYCBCABDQAgAEEcQQQQVwsLRQACQAJAIAFBCUkNACABIAAQDyEBDAELIAAQAiEBCwJAIAFFDQAgAUF8ai0AAEEDcUUNACAARQ0AIAFBACAA/AsACyABC1IBAn9BACEBQQBBACgC6KBAIgJBAWo2AuigQAJAIAJBAEgNAEEBIQFBAC0A5KBADQBBACAAOgDkoEBBAEEAKALgoEBBAWo2AuCgQEECIQELIAELRwECfyABKAIEIQIgASgCACEDEGsCQEEIQQQQWiIBDQBBBEEIEGEACyABIAI2AgQgASADNgIAIABB8JfAADYCBCAAIAE2AgALOAACQAJAIAAgAksNACABIAJLDQEgACABTQ0BIAAgASADECsACyAAIAIgAxAsAAsgASACIAMQLQALQQEBfyMAQSBrIgMkACADQQA2AhAgA0EBNgIEIANCBDcCCCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQQQALOQACQCACQYCAxABGDQAgACACIAEoAhARBQBFDQBBAQ8LAkAgAw0AQQAPCyAAIAMgBCABKAIMEQcACzYBAX8jAEEgayIBJAAgAUEANgIYIAFBATYCDCABQaSZwAA2AgggAUIENwIQIAFBCGogABBBAAsnAAJAIAAgARBPRQ0AAkAgAEUNABBrIAAgARBaIgFFDQELIAEPCwALLAIBfwF+IwBBEGsiASQAIAApAgAhAiABIAA2AgwgASACNwIEIAFBBGoQZgALLQEBfyMAQRBrIgEkACABIAApAgA3AgggAUEIakH0lsAAIAAoAghBAUEAECEACyoBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADIAA2AgQgA0EEahBnAAsqAQF/IwBBEGsiAiQAIAJBATsBDCACIAE2AgggAiAANgIEIAJBBGoQPgALKQEBfwJAIAAoAgAiAUGAgICAeHJBgICAgHhGDQAgACgCBCABQQEQVwsLHgEBfwJAIAAoAgAiAkUNACABIAIgACgCBBBTDwsACyAAAkAgASgCAEUNACAAQfCXwAA2AgQgACABNgIADwsACxsBAX8QayAAQQRqQQQQWiIBIAA2AgAgAUEEagsjAQF/AkBBjIvAABAwIgANAEHAisAAQTpB/IrAABBAAAsgAAsXAAJAIAFBCUkNACABIAAQDw8LIAAQAgsfAAJAIABBgICAgHhyQYCAgIB4Rg0AIAEgAEEBEFcLCxwBAX8CQCAAKAIAIgFFDQAgACgCBCABQQEQVwsLFgACQCAARQ0AIAAgARBhAAsgAhA8AAsVACAAQXxqIgAgACgCAEEEakEEEFcLGgEBfyABIABBACgC3KBAIgJBAyACGxEEAAALHQAgAEEIakEAKQKYlkA3AgAgAEEAKQKQlkA3AgALHQAgAEEIakEAKQKolkA3AgAgAEEAKQKglkA3AgALFQAgAWlBAUYgAEGAgICAeCABa01xCxIAAkAgAUUNACAAIAEgAhBXCwsSACAAIAEgAiADIARBACAFEAMLFQACQCAARQ0AIAAgACgCqFoRAgALCxYAIAAoAgAgASACIAAoAgQoAgwRBwALDQAgACABIAIgAxAHDwsQACABIAAoAgAgACgCBBBTCxMAIABB8JfAADYCBCAAIAE2AgALCwAgACABIAIQLw8LCgAgACABEGoaAAsLACAAIwBqJAAjAAsJACAAIAEQRw8LCQAgACABEDYPCwkAIAAgARBMDwsMAEG4iMAAQRsQXgALCQAgACABEGMACw0AQdOIwABBzwAQXgALDAAgACABKQIANwMACwkAIAEgABBcAAsNACABQdicwABBGBAKCwgAIAAgARAACwgAIAAgARABCwkAIAAoAgAQUgsHACAAECMACwcAIAAQPwALCQAgAEEANgIACwUAQQAPCwUAEGwACwMADwsDAAALC4YdAgBBgIDAAAvwHC9ob21lL2NkaWVzaC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTA2L3NyYy9jb252ZXJ0L3NsaWNlcy5ycwAvaG9tZS9jZGllc2gvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjEwNi9zcmMvZXh0ZXJucmVmLnJzAC9ob21lL2NkaWVzaC8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLXg4Nl82NC11bmtub3duLWxpbnV4LWdudS9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAvaG9tZS9jZGllc2gvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2VkNjFlN2Q3ZTI0MjQ5NGZiNzA1N2YyNjU3MzAwZDllNzdiYjRmY2IvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTAvc3JjL2RsbWFsbG9jLnJzAGxpYnJhcnkvc3RkL3NyYy9hbGxvYy5ycwAvaG9tZS9jZGllc2gvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9saWJkZWZsYXRlci0xLjI1LjAvc3JjL2xpYi5ycwBFARAAdQAAACoCAAARAAAA1QAQAG8AAAC9AQAAHQAAAGF0dGVtcHRlZCB0byB0YWtlIG93bmVyc2hpcCBvZiBSdXN0IHZhbHVlIHdoaWxlIGl0IHdhcyBib3Jyb3dlZAClAhAACgAAAF0AAAAWAAAAaW52YWxpZCBiZ3pmIGhlYWRlcgClAhAACgAAACkAAAAJAAAApQIQAAoAAAAqAAAACQAAAKUCEAAKAAAAKwAAAAkAAAClAhAACgAAACwAAAAJAAAApQIQAAoAAAAwAAAAFgAAAGRlY29tcHJlc3Npb24gZmFpbGVkpQIQAAoAAAAvAAAAHgAAAKUCEAAKAAAApQAAACQAAAClAhAACgAAAKYAAAAkAAAApQIQAAoAAACnAAAAFgAAAKUCEAAKAAAAxQAAABQAAAClAhAACgAAAMYAAAAUAAAApQIQAAoAAADbAAAAGAAAAKUCEAAKAAAA3AAAABgAAAClAhAACgAAANMAAAAxAAAAAAAQAGwAAAAjAQAADgAAAG51bGwgcG9pbnRlciBwYXNzZWQgdG8gcnVzdHJlY3Vyc2l2ZSB1c2Ugb2YgYW4gb2JqZWN0IGRldGVjdGVkIHdoaWNoIHdvdWxkIGxlYWQgdG8gdW5zYWZlIGFsaWFzaW5nIGluIHJ1c3QAAG0AEABnAAAAfwAAABEAAABtABAAZwAAAIwAAAARAAAAbGliZGVmbGF0ZV9kZWZsYXRlX2RlY29tcHJlc3MgcmV0dXJuZWQgYW4gdW5rbm93biBlcnJvciB0eXBlOiB0aGlzIGlzIGFuIGludGVybmFsIGJ1ZyB0aGF0ICoqbXVzdCoqIGJlIGZpeGVkUAIQAF8AAAAMAQAAFQAAAGxpYmRlZmxhdGVfYWxsb2NfZGVjb21wcmVzc29yIHJldHVybmVkIE5VTEw6IG91dCBvZiBtZW1vcnkAAFACEABfAAAAnAAAABEAAAAMAAAAAQAAAAIAAAAAAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAAAAAAAEAAAACAAAAAwAAAAQAAQAFAAEABwACAAkAAgANAAMAEQADABkABAAhAAQAMQAFAEEABQBhAAYAgQAGAMEABwABAQcAgQEIAAECCAABAwkAAQQJAAEGCgABCAoAAQwLAAEQCwABGAwAASAMAAEwDQABQA0AAWANAAFgDQABYAAAAIAAAAGAAAACgAAAA4AAAASAAAAFgAAABoAAAAeAAAAIgAAACYAAAAqAAAALgAAADIAAAA2AAAAOgAAAD4AAABCAAAARgAAAEoAAABOAAAAUgAAAFYAAABaAAAAXgAAAGIAAABmAAAAagAAAG4AAAByAAAAdgAAAHoAAAB+AAAAggAAAIYAAACKAAAAjgAAAJIAAACWAAAAmgAAAJ4AAACiAAAApgAAAKoAAACuAAAAsgAAALYAAAC6AAAAvgAAAMIAAADGAAAAygAAAM4AAADSAAAA1gAAANoAAADeAAAA4gAAAOYAAADqAAAA7gAAAPIAAAD2AAAA+gAAAP4AAAECAAABBgAAAQoAAAEOAAABEgAAARYAAAEaAAABHgAAASIAAAEmAAABKgAAAS4AAAEyAAABNgAAAToAAAE+AAABQgAAAUYAAAFKAAABTgAAAVIAAAFWAAABWgAAAV4AAAFiAAABZgAAAWoAAAFuAAABcgAAAXYAAAF6AAABfgAAAYIAAAGGAAABigAAAY4AAAGSAAABlgAAAZoAAAGeAAABogAAAaYAAAGqAAABrgAAAbIAAAG2AAABugAAAb4AAAHCAAABxgAAAcoAAAHOAAAB0gAAAdYAAAHaAAAB3gAAAeIAAAHmAAAB6gAAAe4AAAHyAAAB9gAAAfoAAAH+AAACAgAAAgYAAAIKAAACDgAAAhIAAAIWAAACGgAAAh4AAAIiAAACJgAAAioAAAIuAAACMgAAAjYAAAI6AAACPgAAAkIAAAJGAAACSgAAAk4AAAJSAAACVgAAAloAAAJeAAACYgAAAmYAAAJqAAACbgAAAnIAAAJ2AAACegAAAn4AAAKCAAAChgAAAooAAAKOAAACkgAAApYAAAKaAAACngAAAqIAAAKmAAACqgAAAq4AAAKyAAACtgAAAroAAAK+AAACwgAAAsYAAALKAAACzgAAAtIAAALWAAAC2gAAAt4AAALiAAAC5gAAAuoAAALuAAAC8gAAAvYAAAL6AAAC/gAAAwIAAAMGAAADCgAAAw4AAAMSAAADFgAAAxoAAAMeAAADIgAAAyYAAAMqAAADLgAAAzIAAAM2AAADOgAAAz4AAANCAAADRgAAA0oAAANOAAADUgAAA1YAAANaAAADXgAAA2IAAANmAAADagAAA24AAANyAAADdgAAA3oAAAN+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAAAO6AAADvgAAA8IAAAPGAAADygAAA84AAAPSAAAD1gAAA9oAAAPeAAAD4gAAA+YAAAPqAAAD7gAAA/IAAAP2AAAD+gAAA/4AAoAAAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgABAAsAAQANAAEADwABABEAAgATAAIAFwACABsAAgAfAAMAIwADACsAAwAzAAMAOwAEAEMABABTAAQAYwAEAHMABQCDAAUAowAFAMMABQDjAAAAAgEAAAIBAAACAW1dy9YsUOtjeEGmV3Ebi7nyfVy2Bv6hO/Xnf5Lkw1AabWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAAAMAsQABUAAABFCxAADQAAADcCEAAYAAAAZAEAAAkAAAAAAAAACAAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAwAAAAEAAAACgAAAAsAAAAMAAAAAAAAAAgAAAAEAAAADQAAAA4AAAAPAAAAEAAAABEAAAAQAAAABAAAABIAAAATAAAAFAAAAAgAAAC7ARAAUAAAACoCAAARAAAAAAAAAAgAAAAEAAAAFQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAAAwCEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAMAhAAKgAAALcEAAANAAAACQAAAAwAAAAEAAAAFgAAAGNhcGFjaXR5IG92ZXJmbG93AAAAkAwQABEAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQEAAAAAAAAAcmFuZ2Ugc3RhcnQgaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIHwNEAASAAAAjg0QACIAAAByYW5nZSBlbmQgaW5kZXggwA0QABAAAACODRAAIgAAAHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgAOANEAAWAAAA9g0QAA0AAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAFA4QACAAAAA0DhAAEgAAAFJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZABB8JzAAAsEBAAAAAApBG5hbWUBIgFZH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIAPAlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMjQuNAx3YXNtLWJpbmRnZW4HMC4yLjEwNg==";let re;function px(n){re=n}function eO(n){gl===Wn.length&&Wn.push(Wn.length+1);const t=gl;return gl=Wn[t],Wn[t]=n,t}function tO(n){n<132||(Wn[n]=gl,gl=n)}function mx(n,t){return n=n>>>0,nO().subarray(n/4,n/4+t)}function jg(n,t){return n=n>>>0,Wg().subarray(n/1,n/1+t)}let No=null;function $e(){return(No===null||No.buffer.detached===!0||No.buffer.detached===void 0&&No.buffer!==re.memory.buffer)&&(No=new DataView(re.memory.buffer)),No}function Cx(n,t){return n=n>>>0,sO(n,t)}let NA=null;function nO(){return(NA===null||NA.byteLength===0)&&(NA=new Uint32Array(re.memory.buffer)),NA}let TA=null;function Wg(){return(TA===null||TA.byteLength===0)&&(TA=new Uint8Array(re.memory.buffer)),TA}function rO(n){return Wn[n]}let Wn=new Array(128).fill(void 0);Wn.push(void 0,null,!0,!1);let gl=Wn.length;function Xg(n,t){const e=t(n.length*1,1)>>>0;return Wg().set(n,e/1),LA=n.length,e}function Zg(n){const t=rO(n);return tO(n),t}let PA=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});PA.decode();const iO=2146435072;let $g=0;function sO(n,t){return $g+=t,$g>=iO&&(PA=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),PA.decode(),$g=t),PA.decode(Wg().subarray(n,n+t))}let LA=0;const wx=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>re.__wbg_chunksliceresult_free(n>>>0,1)),yx=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>re.__wbg_decompressresult_free(n>>>0,1));class To{static __wrap(t){t=t>>>0;const e=Object.create(To.prototype);return e.__wbg_ptr=t,wx.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,wx.unregister(this),t}free(){const t=this.__destroy_into_raw();re.__wbg_chunksliceresult_free(t,0)}get cpositions(){try{const i=re.__wbindgen_add_to_stack_pointer(-16);re.chunksliceresult_cpositions(i,this.__wbg_ptr);var t=$e().getInt32(i+0,!0),e=$e().getInt32(i+4,!0),r=mx(t,e).slice();return re.__wbindgen_export(t,e*4,4),r}finally{re.__wbindgen_add_to_stack_pointer(16)}}get dpositions(){try{const i=re.__wbindgen_add_to_stack_pointer(-16);re.chunksliceresult_dpositions(i,this.__wbg_ptr);var t=$e().getInt32(i+0,!0),e=$e().getInt32(i+4,!0),r=mx(t,e).slice();return re.__wbindgen_export(t,e*4,4),r}finally{re.__wbindgen_add_to_stack_pointer(16)}}get buffer(){try{const i=re.__wbindgen_add_to_stack_pointer(-16);re.chunksliceresult_buffer(i,this.__wbg_ptr);var t=$e().getInt32(i+0,!0),e=$e().getInt32(i+4,!0),r=jg(t,e).slice();return re.__wbindgen_export(t,e*1,1),r}finally{re.__wbindgen_add_to_stack_pointer(16)}}}Symbol.dispose&&(To.prototype[Symbol.dispose]=To.prototype.free);class Po{static __wrap(t){t=t>>>0;const e=Object.create(Po.prototype);return e.__wbg_ptr=t,yx.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,yx.unregister(this),t}free(){const t=this.__destroy_into_raw();re.__wbg_decompressresult_free(t,0)}get bytes_read(){return re.decompressresult_bytes_read(this.__wbg_ptr)>>>0}get data(){try{const i=re.__wbindgen_add_to_stack_pointer(-16);re.decompressresult_data(i,this.__wbg_ptr);var t=$e().getInt32(i+0,!0),e=$e().getInt32(i+4,!0),r=jg(t,e).slice();return re.__wbindgen_export(t,e*1,1),r}finally{re.__wbindgen_add_to_stack_pointer(16)}}}Symbol.dispose&&(Po.prototype[Symbol.dispose]=Po.prototype.free);function Ix(n){try{const o=re.__wbindgen_add_to_stack_pointer(-16),a=Xg(n,re.__wbindgen_export2),l=LA;re.decompress_all(o,a,l);var t=$e().getInt32(o+0,!0),e=$e().getInt32(o+4,!0),r=$e().getInt32(o+8,!0),i=$e().getInt32(o+12,!0);if(i)throw Zg(r);var s=jg(t,e).slice();return re.__wbindgen_export(t,e*1,1),s}finally{re.__wbindgen_add_to_stack_pointer(16)}}function oO(n){try{const i=re.__wbindgen_add_to_stack_pointer(-16),s=Xg(n,re.__wbindgen_export2),o=LA;re.decompress_block(i,s,o);var t=$e().getInt32(i+0,!0),e=$e().getInt32(i+4,!0),r=$e().getInt32(i+8,!0);if(r)throw Zg(e);return Po.__wrap(t)}finally{re.__wbindgen_add_to_stack_pointer(16)}}function Ex(n,t,e,r,i){try{const l=re.__wbindgen_add_to_stack_pointer(-16),c=Xg(n,re.__wbindgen_export2),u=LA;re.decompress_chunk_slice(l,c,u,t,e,r,i);var s=$e().getInt32(l+0,!0),o=$e().getInt32(l+4,!0),a=$e().getInt32(l+8,!0);if(a)throw Zg(o);return To.__wrap(s)}finally{re.__wbindgen_add_to_stack_pointer(16)}}function aO(n,t){const e=Error(Cx(n,t));return eO(e)}function cO(n,t){throw new Error(Cx(n,t))}let pl=null,ep=null;async function bx(){return pl||(ep||(ep=(async()=>{const t=await(await fetch($L)).arrayBuffer(),{instance:e}=await WebAssembly.instantiate(t,{"./bgzf_wasm_bg.js":Kg});return pl=e.exports,px(pl),pl})()),ep)}async function lO(n){return await bx(),Ix(n)}async function uO(n,t,e,r,i){await bx();const s=Ex(n,t,e,r,i),o=s.buffer,a=[...s.cpositions],l=[...s.dpositions];return s.free(),{buffer:o,cpositions:a,dpositions:l}}function fO(n){return n.length>=2&&n[0]===31&&n[1]===139}async function AO(n){if(typeof DecompressionStream<"u"){const t=new DecompressionStream("gzip"),e=t.writable.getWriter(),r=e.write(n).then(()=>e.close()),i=[],s=t.readable.getReader();for(;;){const{done:c,value:u}=await s.read();if(c)break;i.push(u)}await r;const o=i.reduce((c,u)=>c+u.length,0),a=new Uint8Array(o);let l=0;for(const c of i)a.set(c,l),l+=c.length;return a}else return ZL(n,void 0)}async function Lo(n){try{return await lO(n)}catch(t){if(/invalid bgzf header/.exec(`${t}`)){if(fO(n))return AO(n);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}throw/invalid gzip header/.exec(`${t}`)?new Error("problem decompressing block: incorrect gzip header check"):t}}async function xx(n,t,e){try{const{minv:r,maxv:i}=t,s=await uO(n,r.blockPosition,r.dataPosition,i.blockPosition,i.dataPosition);return{buffer:s.buffer,cpositions:s.cpositions,dpositions:s.dpositions}}catch(r){throw/invalid gzip header/.exec(`${r}`)?new Error("problem decompressing block: incorrect gzip header check"):r}}let tp=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array<"u"&&(tp=new Int32Array(tp));const hO=(n,t)=>{let e=-1;for(let r=0;r<n.length;r++)e=tp[(e^n[r])&255]^e>>>8;return e^-1},dO=21582659,gO=38359875;function pO(n,t){return n*2**t}function Bx(n,t){return Math.floor(n/2**t)}let OA=class extends xb{constructor(){super(...arguments),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(t,e){var i,s;return((s=(i=(await this.parse(e)).indices(t))==null?void 0:i.stats)==null?void 0:s.lineCount)||0}async indexCov(){return[]}parseAuxData(t,e){const r=new DataView(t.buffer),i=r.getUint32(e,!0),s=i&65536?"zero-based-half-open":"1-based-closed",o={0:"generic",1:"SAM",2:"VCF"}[i&15];if(!o)throw new Error(`invalid Tabix preset format flags ${i}`);const a={ref:r.getInt32(e+4,!0),start:r.getInt32(e+8,!0),end:r.getInt32(e+12,!0)},l=r.getInt32(e+16,!0),c=l?String.fromCharCode(l):"",u=r.getInt32(e+20,!0),f=r.getInt32(e+24,!0);return{columnNumbers:a,coordinateType:s,metaValue:l,metaChar:c,skipLines:u,format:o,formatFlags:i,...lL(t.subarray(e+28,e+28+f),this.renameRefSeq)}}async _parse(t){const e=await this.filehandle.readFile(t),r=await Lo(e),i=new DataView(r.buffer);let s;const o=i.getUint32(0,!0);if(o===dO)s=1;else if(o===gO)s=2;else throw new Error(`Not a CSI file ${o}`);this.minShift=i.getInt32(4,!0),this.depth=i.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;const a=this.maxBinNumber,l=i.getInt32(12,!0),c=l>=30?this.parseAuxData(r,16):void 0,u=i.getInt32(16+l,!0);let f=16+l+4,h;const A=[];for(let C=0;C<u;C++){A.push(f);const m=i.getInt32(f,!0);f+=4;for(let y=0;y<m;y++){const I=i.getUint32(f,!0);if(f+=4,I>this.maxBinNumber)f+=44;else{f+=8;const w=i.getInt32(f,!0);f+=4;for(let x=0;x<w;x+=1){const B=Or(r,f);f+=8,f+=8,h=fl(h,B)}}}}const d=new ul({maxSize:5});function p(C){let m=A[C];if(m===void 0)return;const y=i.getInt32(m,!0);m+=4;const I={};let w;for(let x=0;x<y;x++){const B=i.getUint32(m,!0);if(m+=4,B>a)w=bb(r,m+28),m+=44;else{h=fl(h,Or(r,m)),m+=8;const E=i.getInt32(m,!0);m+=4;const D=new Array(E);for(let R=0;R<E;R+=1){const k=Or(r,m);m+=8;const P=Or(r,m);m+=8,D[R]=new Ib(k,P,B)}I[B]=D}}return{binIndex:I,stats:w}}return{csiVersion:s,firstDataLine:h,indices:C=>{if(!d.has(C)){const m=p(C);return m&&d.set(C,m),m}return d.get(C)},refCount:u,csi:!0,maxBlockSize:65536,...c}}async blocksForRange(t,e,r,i={}){e<0&&(e=0);const o=(await this.parse(i)).indices(t);if(!o)return[];const a=this.reg2bins(e,r);if(a.length===0)return[];const l=[],{binIndex:c}=o;for(const[u,f]of a)for(let h=u;h<=f;h++){const A=c[h];if(A)for(let d=0,p=A.length;d<p;d++)l.push(A[d])}return Pg(l,new Bb(0,0))}reg2bins(t,e){t-=1,t<1&&(t=1),e>2**50&&(e=2**34),e-=1;let r=0,i=0,s=this.minShift+this.depth*3;const o=[];for(;r<=this.depth;s-=3,i+=pO(1,r*3),r+=1){const a=i+Bx(t,s),l=i+Bx(e,s);if(l-a+o.length>this.maxBinNumber)throw new Error(`query ${t}-${e} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);o.push([a,l])}return o}async parse(t={}){return this.setupP||(this.setupP=this._parse(t).catch(e=>{throw this.setupP=void 0,e})),this.setupP}async hasRefSeq(t,e={}){var i;return!!((i=(await this.parse(e)).indices(t))!=null&&i.binIndex)}};class mO{read(){throw new Error("never called")}stat(){throw new Error("never called")}readFile(){throw new Error("never called")}close(){throw new Error("never called")}}const CO=3,wO=4,Jt={BAM_FPAIRED:1,BAM_FPROPER_PAIR:2,BAM_FUNMAP:4,BAM_FMUNMAP:8,BAM_FREVERSE:16,BAM_FMREVERSE:32,BAM_FREAD1:64,BAM_FREAD2:128,BAM_FSECONDARY:256,BAM_FQCFAIL:512,BAM_FDUP:1024,BAM_FSUPPLEMENTARY:2048},ml="=ACMGRSVTWYHKDBN".split(""),yO=[77,73,68,78,83,72,80,61,88,63,63,63,63,63,63,63],vx=461;class Sx{constructor(t){this.bytes=t.bytes,this.fileOffset=t.fileOffset,this._dataView=new DataView(this.bytes.byteArray.buffer)}get byteArray(){return this.bytes.byteArray}get flags(){return this._cachedFlags===void 0&&(this._cachedFlags=(this._dataView.getInt32(this.bytes.start+16,!0)&4294901760)>>16),this._cachedFlags}get ref_id(){return this._cachedRefId===void 0&&(this._cachedRefId=this._dataView.getInt32(this.bytes.start+4,!0)),this._cachedRefId}get start(){return this._cachedStart===void 0&&(this._cachedStart=this._dataView.getInt32(this.bytes.start+8,!0)),this._cachedStart}get end(){return this._cachedEnd===void 0&&(this._cachedEnd=this.start+this.length_on_ref),this._cachedEnd}get mq(){const t=(this.bin_mq_nl&65280)>>8;return t===255?void 0:t}get score(){return this.mq}get qual(){if(this.isSegmentUnmapped())return null;{const t=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes;return this.byteArray.subarray(t,t+this.seq_length)}}get strand(){return this.isReverseComplemented()?-1:1}get b0(){return this.bytes.start+36}get tagsStart(){return this._cachedTagsStart===void 0&&(this._cachedTagsStart=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes+this.seq_length),this._cachedTagsStart}get name(){const t=this.read_name_length-1,e=this.b0,r=this.byteArray,i=new Array(t);for(let s=0;s<t;s++)i[s]=r[e+s];return String.fromCharCode(...i)}get NUMERIC_MD(){if(this._cachedNUMERIC_MD===void 0){const t=this.getTagRaw("MD");this._cachedNUMERIC_MD=t instanceof Uint8Array?t:null}return this._cachedNUMERIC_MD===null?void 0:this._cachedNUMERIC_MD}get tags(){return this._cachedTags===void 0&&(this._cachedTags=this._computeTags()),this._cachedTags}getTag(t){return this._cachedTags!==void 0?this._cachedTags[t]:this._findTag(t,!1)}getTagRaw(t){return this._findTag(t,!0)}_findTag(t,e){const r=t.charCodeAt(0),i=t.charCodeAt(1);let s=this.tagsStart;const o=this.bytes.end,a=this.byteArray;for(;s<o;){const l=a[s],c=a[s+1],u=a[s+2];s+=3;const f=l===r&&c===i;switch(u){case 65:if(f)return String.fromCharCode(a[s]);s+=1;break;case 105:if(f)return this._dataView.getInt32(s,!0);s+=4;break;case 73:if(f)return this._dataView.getUint32(s,!0);s+=4;break;case 99:if(f)return this._dataView.getInt8(s);s+=1;break;case 67:if(f)return this._dataView.getUint8(s);s+=1;break;case 115:if(f)return this._dataView.getInt16(s,!0);s+=2;break;case 83:if(f)return this._dataView.getUint16(s,!0);s+=2;break;case 102:if(f)return this._dataView.getFloat32(s,!0);s+=4;break;case 90:case 72:{if(f){const h=s;for(;s<o&&a[s]!==0;)s++;if(e)return a.subarray(h,s);const A=[];for(let d=h;d<s;d++)A.push(String.fromCharCode(a[d]));return A.join("")}for(;s<=o&&a[s++]!==0;);break}case 66:{const h=a[s++],A=this._dataView.getInt32(s,!0);s+=4;const d=a.byteOffset+s;if(f)if(h===105){if(d%4===0)return new Int32Array(a.buffer,d,A);const p=new Array(A);for(let C=0;C<A;C++)p[C]=this._dataView.getInt32(s+C*4,!0);return p}else if(h===73){if(d%4===0)return new Uint32Array(a.buffer,d,A);const p=new Array(A);for(let C=0;C<A;C++)p[C]=this._dataView.getUint32(s+C*4,!0);return p}else if(h===115){if(d%2===0)return new Int16Array(a.buffer,d,A);const p=new Array(A);for(let C=0;C<A;C++)p[C]=this._dataView.getInt16(s+C*2,!0);return p}else if(h===83){if(d%2===0)return new Uint16Array(a.buffer,d,A);const p=new Array(A);for(let C=0;C<A;C++)p[C]=this._dataView.getUint16(s+C*2,!0);return p}else{if(h===99)return new Int8Array(a.buffer,d,A);if(h===67)return new Uint8Array(a.buffer,d,A);if(h===102){if(d%4===0)return new Float32Array(a.buffer,d,A);const p=new Array(A);for(let C=0;C<A;C++)p[C]=this._dataView.getFloat32(s+C*4,!0);return p}}h===105||h===73||h===102?s+=A<<2:h===115||h===83?s+=A<<1:(h===99||h===67)&&(s+=A);break}}}}_computeTags(){let t=this.tagsStart;const e=this.bytes.end,r=this.byteArray,i={};for(;t<e;){const s=String.fromCharCode(r[t],r[t+1]),o=r[t+2];switch(t+=3,o){case 65:i[s]=String.fromCharCode(r[t]),t+=1;break;case 105:i[s]=this._dataView.getInt32(t,!0),t+=4;break;case 73:i[s]=this._dataView.getUint32(t,!0),t+=4;break;case 99:i[s]=this._dataView.getInt8(t),t+=1;break;case 67:i[s]=this._dataView.getUint8(t),t+=1;break;case 115:i[s]=this._dataView.getInt16(t,!0),t+=2;break;case 83:i[s]=this._dataView.getUint16(t,!0),t+=2;break;case 102:i[s]=this._dataView.getFloat32(t,!0),t+=4;break;case 90:case 72:{const a=[];for(;t<=e;){const l=r[t++];if(l!==0)a.push(String.fromCharCode(l));else break}i[s]=a.join("");break}case 66:{const a=r[t++],l=this._dataView.getInt32(t,!0);t+=4;const c=r.byteOffset+t;if(a===105){if(c%4===0)i[s]=new Int32Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getInt32(t+f*4,!0);i[s]=u}t+=l<<2}else if(a===73){if(c%4===0)i[s]=new Uint32Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getUint32(t+f*4,!0);i[s]=u}t+=l<<2}else if(a===115){if(c%2===0)i[s]=new Int16Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getInt16(t+f*2,!0);i[s]=u}t+=l<<1}else if(a===83){if(c%2===0)i[s]=new Uint16Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getUint16(t+f*2,!0);i[s]=u}t+=l<<1}else if(a===99)i[s]=new Int8Array(r.buffer,c,l),t+=l;else if(a===67)i[s]=new Uint8Array(r.buffer,c,l),t+=l;else if(a===102){if(c%4===0)i[s]=new Float32Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getFloat32(t+f*4,!0);i[s]=u}t+=l<<2}break}default:console.error("Unknown BAM tag type",o);break}}return i}isPaired(){return!!(this.flags&Jt.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&Jt.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&Jt.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&Jt.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&Jt.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&Jt.BAM_FMREVERSE)}isRead1(){return!!(this.flags&Jt.BAM_FREAD1)}isRead2(){return!!(this.flags&Jt.BAM_FREAD2)}isSecondary(){return!!(this.flags&Jt.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&Jt.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&Jt.BAM_FDUP)}isSupplementary(){return!!(this.flags&Jt.BAM_FSUPPLEMENTARY)}get cigarAndLength(){return this._cachedCigarAndLength===void 0&&(this._cachedCigarAndLength=this._computeCigarAndLength()),this._cachedCigarAndLength}_computeCigarAndLength(){if(this.isSegmentUnmapped())return{length_on_ref:0,NUMERIC_CIGAR:new Uint32Array(0)};const t=this.num_cigar_ops;let e=this.b0+this.read_name_length;const r=this._dataView.getInt32(e,!0),i=r>>4;if((r&15)===wO&&i===this.seq_length){e+=4;const u=this._dataView.getInt32(e,!0),f=u>>4;return(u&15)!==CO&&console.warn("CG tag with no N tag"),{NUMERIC_CIGAR:this.tags.CG,length_on_ref:f}}const o=this.byteArray.byteOffset+e;if(o%4===0&&t>50){const u=new Uint32Array(this.byteArray.buffer,o,t);let f=0;for(let h=0;h<t;++h){const A=u[h];f+=(A>>4)*(vx>>(A&15)&1)}return{NUMERIC_CIGAR:u,length_on_ref:f}}const l=new Array(t);let c=0;for(let u=0;u<t;++u){const f=this._dataView.getInt32(e+u*4,!0)|0;l[u]=f,c+=(f>>4)*(vx>>(f&15)&1)}return{NUMERIC_CIGAR:l,length_on_ref:c}}get length_on_ref(){return this.cigarAndLength.length_on_ref}get NUMERIC_CIGAR(){return this.cigarAndLength.NUMERIC_CIGAR}get CIGAR(){const t=this.NUMERIC_CIGAR;let e="";for(let r=0,i=t.length;r<i;r++){const s=t[r],o=s>>4,a=yO[s&15];e+=o+String.fromCharCode(a)}return e}get num_cigar_ops(){return this.flag_nc&65535}get num_cigar_bytes(){return this.num_cigar_ops<<2}get read_name_length(){return this.bin_mq_nl&255}get num_seq_bytes(){return this.seq_length+1>>1}get NUMERIC_SEQ(){const t=this.b0+this.read_name_length+this.num_cigar_bytes;return this.byteArray.subarray(t,t+this.num_seq_bytes)}get seq(){const t=this.NUMERIC_SEQ,e=this.seq_length,r=new Array(e);let i=0;const s=e>>1;for(let o=0;o<s;++o){const a=t[o];r[i++]=ml[(a&240)>>4],r[i++]=ml[a&15]}if(i<e){const o=t[s];r[i]=ml[(o&240)>>4]}return r.join("")}get pair_orientation(){if(!this.isSegmentUnmapped()&&!this.isMateUnmapped()&&this.ref_id===this.next_refid){const t=this.isReverseComplemented()?"R":"F",e=this.isMateReverseComplemented()?"R":"F";let r=" ",i=" ";return this.isRead1()?(r="1",i="2"):this.isRead2()&&(r="2",i="1"),this.template_length>0?`${t}${r}${e}${i}`:`${e}${i}${t}${r}`}}get bin_mq_nl(){return this._dataView.getInt32(this.bytes.start+12,!0)}get flag_nc(){return this._dataView.getInt32(this.bytes.start+16,!0)}get seq_length(){return this._dataView.getInt32(this.bytes.start+20,!0)}get next_refid(){return this._dataView.getInt32(this.bytes.start+24,!0)}get next_pos(){return this._dataView.getInt32(this.bytes.start+28,!0)}get template_length(){return this._dataView.getInt32(this.bytes.start+32,!0)}seqAt(t){if(t<this.seq_length){const e=t>>1,r=this.byteArray[this.b0+this.read_name_length+this.num_cigar_bytes+e];return t%2===0?ml[(r&240)>>4]:ml[r&15]}else return}toJSON(){const t={};for(const e of Object.keys(this))e.startsWith("_")||e==="bytes"||(t[e]=this[e]);return t}}function Qx(n){const t=n.split(/\r?\n/),e=[];for(const r of t){const[i,...s]=r.split(/\t/);i&&e.push({tag:i.slice(1),data:s.map(o=>{const a=o.indexOf(":"),l=o.slice(0,a),c=o.slice(a+1);return{tag:l,value:c}})})}return e}const Dx=21840194,IO=65536;class kx{constructor({bamFilehandle:t,bamPath:e,bamUrl:r,baiPath:i,baiFilehandle:s,baiUrl:o,csiPath:a,csiFilehandle:l,csiUrl:c,htsget:u,renameRefSeqs:f=A=>A,recordClass:h}){if(this.htsget=!1,this.chunkFeatureCache=new ul({maxSize:100}),this.renameRefSeq=f,this.RecordClass=h??Sx,t)this.bam=t;else if(e)this.bam=new ft(e);else if(r)this.bam=new vn(r);else if(u)this.htsget=!0,this.bam=new mO;else throw new Error("unable to initialize bam");if(l)this.index=new OA({filehandle:l});else if(a)this.index=new OA({filehandle:new ft(a)});else if(c)this.index=new OA({filehandle:new vn(c)});else if(s)this.index=new Qo({filehandle:s});else if(i)this.index=new Qo({filehandle:new ft(i)});else if(o)this.index=new Qo({filehandle:new vn(o)});else if(e)this.index=new Qo({filehandle:new ft(`${e}.bai`)});else if(r)this.index=new Qo({filehandle:new vn(`${r}.bai`)});else if(u)this.htsget=!0;else throw new Error("unable to infer index format")}async getHeaderPre(t){const e=cL(t);if(!this.index)return;const r=await this.index.parse(e),i=r.firstDataLine===void 0?await this.bam.readFile():await this.bam.read(r.firstDataLine.blockPosition+IO,0),s=await Lo(i),o=new DataView(s.buffer);if(o.getInt32(0,!0)!==Dx)throw new Error("Not a BAM file");const a=o.getInt32(4,!0),l=new TextDecoder("utf8");this.header=l.decode(s.subarray(8,8+a));const{chrToIndex:c,indexToChr:u}=this._parseRefSeqs(s,a+8);return this.chrToIndex=c,this.indexToChr=u,Qx(this.header)}getHeader(t){return this.headerP||(this.headerP=this.getHeaderPre(t).catch(e=>{throw this.headerP=void 0,e})),this.headerP}async getHeaderText(t={}){return await this.getHeader(t),this.header}_parseRefSeqs(t,e){const r=new DataView(t.buffer),i=r.getInt32(e,!0);let s=e+4;const o={},a=[],l=new TextDecoder("utf8");for(let c=0;c<i;c+=1){if(s+8>t.length)throw new Error(`Insufficient data for reference sequences: need more than ${t.length} bytes`);const u=r.getInt32(s,!0),f=this.renameRefSeq(l.decode(t.subarray(s+4,s+4+u-1))),h=r.getInt32(s+u+4,!0);o[f]=c,a.push({refName:f,length:h}),s=s+8+u}return{chrToIndex:o,indexToChr:a}}async getRecordsForRange(t,e,r,i){var a;await this.getHeader(i);const s=(a=this.chrToIndex)==null?void 0:a[t];if(s===void 0||!this.index)return[];const o=await this.index.blocksForRange(s,e-1,r,i);return this._fetchChunkFeaturesDirect(o,s,e,r,i)}chunkCacheKey(t,e){const{minv:r,maxv:i}=t;return`${r.blockPosition}:${r.dataPosition}-${i.blockPosition}:${i.dataPosition}${hL(e)}`}blocksOverlap(t,e,r,i){return t<=i&&e>=r}evictOverlappingChunks(t,e){for(const[r,i]of this.chunkFeatureCache)this.blocksOverlap(t,e,i.minBlock,i.maxBlock)&&this.chunkFeatureCache.delete(r)}async _fetchChunkFeaturesDirect(t,e,r,i,s={}){const{viewAsPairs:o,filterBy:a}=s,{flagInclude:l=0,flagExclude:c=0,tagFilter:u}=a||{},f=[];for(let h=0,A=t.length;h<A;h++){const d=t[h],p=this.chunkCacheKey(d,a),C=d.minv.blockPosition,m=d.maxv.blockPosition;let y;const I=this.chunkFeatureCache.get(p);if(I)y=I.features;else{this.evictOverlappingChunks(C,m);const{data:x,cpositions:B,dpositions:E}=await this._readChunk({chunk:d,opts:s}),D=await this.readBamFeatures(x,B,E,d);if(a){y=[];for(let R=0,k=D.length;R<k;R++){const P=D[R];fL(P.flags,l,c)||u&&AL(P.tags[u.tag],u.value)||y.push(P)}}else y=D;this.chunkFeatureCache.set(p,{minBlock:C,maxBlock:m,features:y})}let w=!1;for(let x=0,B=y.length;x<B;x++){const E=y[x];if(E.ref_id===e)if(E.start>=i){w=!0;break}else E.end>=r&&f.push(E)}if(w)break}if(o){const h=await this.fetchPairs(e,f,s);for(let A=0,d=h.length;A<d;A++)f.push(h[A])}return f}async fetchPairs(t,e,r){const{pairAcrossChr:i,maxInsertSize:s=2e5}=r,o={},a={};for(let h=0,A=e.length;h<A;h++){const d=e[h],p=d.name;o[p]=(o[p]||0)+1,a[d.fileOffset]=1}const l=[];for(let h=0,A=e.length;h<A;h++){const d=e[h],p=d.name;this.index&&o[p]===1&&(i||d.next_refid===t&&Math.abs(d.start-d.next_pos)<s)&&l.push(this.index.blocksForRange(d.next_refid,d.next_pos,d.next_pos+1,r))}const c=new Map,u=await Promise.all(l);for(let h=0,A=u.length;h<A;h++){const d=u[h];for(let p=0,C=d.length;p<C;p++){const m=d[p],y=m.toString();c.has(y)||c.set(y,m)}}return(await Promise.all([...c.values()].map(async h=>{const{data:A,cpositions:d,dpositions:p,chunk:C}=await this._readChunk({chunk:h,opts:r}),m=[],y=await this.readBamFeatures(A,d,p,C);for(let I=0,w=y.length;I<w;I++){const x=y[I];o[x.name]===1&&!a[x.fileOffset]&&m.push(x)}return m}))).flat()}async _readChunk({chunk:t,opts:e}){const r=await this.bam.read(t.fetchedSize(),t.minv.blockPosition,e),{buffer:i,cpositions:s,dpositions:o}=await xx(r,t);return{data:i,cpositions:s,dpositions:o,chunk:t}}async readBamFeatures(t,e,r,i){let s=0;const o=[];let a=0;const l=new DataView(t.buffer),c=r.length>0,u=e.length>0;for(;s+4<t.length;){const f=l.getInt32(s,!0),h=s+4+f-1;if(c){for(;s+i.minv.dataPosition>=r[a++];);a--}if(h<t.length){const A=new this.RecordClass({bytes:{byteArray:t,start:s,end:h},fileOffset:u?e[a]*256+(s-r[a])+i.minv.dataPosition+1:hO(t.subarray(s,h))>>>0});o.push(A)}s=h+1}return o}async hasRefSeq(t){var r,i;const e=(r=this.chrToIndex)==null?void 0:r[t];return e===void 0?!1:(i=this.index)==null?void 0:i.hasRefSeq(e)}async lineCount(t){var r;const e=(r=this.chrToIndex)==null?void 0:r[t];return e===void 0||!this.index?0:this.index.lineCount(e)}async indexCov(t,e,r){var s;if(!this.index)return[];await this.index.parse();const i=(s=this.chrToIndex)==null?void 0:s[t];return i===void 0?[]:this.index.indexCov(i,e,r)}async blocksForRange(t,e,r,i){var o;if(!this.index)return[];await this.index.parse();const s=(o=this.chrToIndex)==null?void 0:o[t];return s===void 0?[]:this.index.blocksForRange(s,e,r,i)}clearFeatureCache(){this.chunkFeatureCache.clear()}async estimatedBytesForRegions(t,e){if(!this.index)return 0;if(await this.getHeader(e),!this.chrToIndex)throw new Error("Header not yet parsed");return this.index.estimatedBytesForRegions(t.map(r=>{const i=this.chrToIndex[r.refName];if(i===void 0)throw new Error(`Unknown reference name: ${r.refName}`);return{refId:i,start:r.start,end:r.end}}),e)}}async function Fx(n,t){const e=await Promise.all(n.map(async r=>{const{url:i,headers:s}=r;if(i.startsWith("data:")){const o=await fetch(i);if(!o.ok)throw new Error("failed to decode base64");const a=await o.arrayBuffer();return new Uint8Array(a)}else{const{referer:o,...a}=s,l=await fetch(i,{...t,headers:{...t==null?void 0:t.headers,...a}});if(!l.ok)throw new Error(`HTTP ${l.status} fetching ${i}: ${await l.text()}`);return new Uint8Array(await l.arrayBuffer())}}));return uL(await Promise.all(e.map(r=>Lo(r))))}class EO extends kx{constructor(t){super({htsget:!0,recordClass:t.recordClass}),this.baseUrl=t.baseUrl,this.trackId=t.trackId}async getRecordsForRange(t,e,r,i){var A;const o=`${`${this.baseUrl}/${this.trackId}`}?referenceName=${t}&start=${e}&end=${r}&format=BAM`,a=(A=this.chrToIndex)==null?void 0:A[t];if(a===void 0)return[];const l=await fetch(o,{...i});if(!l.ok)throw new Error(`HTTP ${l.status} fetching ${o}: ${await l.text()}`);const c=await l.json(),u=await Fx(c.htsget.urls.slice(1),i),f=await this.readBamFeatures(u,[],[],{minv:{dataPosition:0,blockPosition:0},maxv:{dataPosition:0,blockPosition:0}}),h=[];for(let d=0,p=f.length;d<p;d++){const C=f[d];if(C.ref_id===a){if(C.start>=r)break;C.end>=e&&h.push(C)}}return h}async getHeader(t={}){const e=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,r=await fetch(e,t);if(!r.ok)throw new Error(`HTTP ${r.status} fetching ${e}: ${await r.text()}`);const i=await r.json(),s=await Fx(i.htsget.urls,t),o=new DataView(s.buffer);if(o.getInt32(0,!0)!==Dx)throw new Error("Not a BAM file");const a=o.getInt32(4,!0),c=new TextDecoder("utf8").decode(s.subarray(8,8+a)),u=Qx(c),f=[],h={},A=u.filter(d=>d.tag==="SQ");for(const[d,p]of A.entries()){let C="",m=0;for(const y of p.data)y.tag==="SN"?C=y.value:y.tag==="LN"&&(m=+y.value);h[C]=d,f[d]={refName:C,length:m}}return this.chrToIndex=h,this.indexToChr=f,u}}const bO=Object.freeze(Object.defineProperty({__proto__:null,BAI:Qo,BamFile:kx,BamRecord:Sx,CSI:OA,HtsgetFile:EO},Symbol.toStringTag,{value:"Module"}));class UA{constructor(t,e,r,i){this.minv=t,this.maxv=e,this.bin=r,this._fetchedSize=i}toUniqueString(){return`${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(t){return this.minv.compareTo(t.minv)||this.maxv.compareTo(t.maxv)||this.bin-t.bin}fetchedSize(){return this._fetchedSize!==void 0?this._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}}class Rx{constructor({filehandle:t,renameRefSeqs:e=r=>r}){this.filehandle=t,this.renameRefSeq=e}async getMetadata(t={}){const{indices:e,...r}=await this.parse(t);return r}_findFirstData(t,e){return t?t.compareTo(e)>0?e:t:e}async parse(t={}){return this.parseP||(this.parseP=this._parse(t).catch(e=>{throw this.parseP=void 0,e})),this.parseP}async hasRefSeq(t,e={}){var i;return!!((i=(await this.parse(e)).indices[t])!=null&&i.binIndex)}_parseNameBytes(t){let e=0,r=0;const i=[],s={},o=new TextDecoder("utf8");for(let a=0;a<t.length;a+=1)if(!t[a]){if(r<a){const l=this.renameRefSeq(o.decode(t.subarray(r,a)));i[e]=l,s[l]=e}r=a+1,e+=1}return{refNameToId:s,refIdToName:i}}}const Mx=65536,xO=Mx*Mx;function Nx(n,t=0){const e=n[t]|n[t+1]<<8|n[t+2]<<16|n[t+3]<<24;return((n[t+4]|n[t+5]<<8|n[t+6]<<16|n[t+7]<<24)>>>0)*xO+(e>>>0)}function BO(n,t){return t.minv.blockPosition-n.maxv.blockPosition<65e3&&t.maxv.blockPosition-n.minv.blockPosition<5e6}function Tx(n,t){const e=[];let r;if(n.length===0)return n;n.sort(function(i,s){const o=i.minv.blockPosition-s.minv.blockPosition;return o===0?i.minv.dataPosition-s.minv.dataPosition:o});for(const i of n)(!t||i.maxv.compareTo(t)>0)&&(r===void 0?(e.push(i),r=i):BO(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(e.push(i),r=i));return e}class np{constructor(t,e){this.blockPosition=t,this.dataPosition=e}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(t){return this.blockPosition-t.blockPosition||this.dataPosition-t.dataPosition}}function Oo(n,t=0){return new np(n[t+7]*1099511627776+n[t+6]*4294967296+n[t+5]*16777216+n[t+4]*65536+n[t+3]*256+n[t+2],n[t+1]<<8|n[t])}const vO=21582659,SO=38359875,QO={0:"generic",1:"SAM",2:"VCF"};function DO(n,t){return n*2**t}function Px(n,t){return Math.floor(n/2**t)}class GA extends Rx{constructor(t){super(t),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(t,e={}){const r=await this.parse(e),i=r.refNameToId[t];if(i===void 0||!r.indices[i])return-1;const{stats:o}=r.indices[i];return o?o.lineCount:-1}indexCov(){throw new Error("CSI indexes do not support indexcov")}parseAuxData(t,e){const r=new DataView(t.buffer),i=r.getInt32(e,!0),s=i&65536?"zero-based-half-open":"1-based-closed",o=QO[i&15];if(!o)throw new Error(`invalid Tabix preset format flags ${i}`);const a={ref:r.getInt32(e+4,!0),start:r.getInt32(e+8,!0),end:r.getInt32(e+12,!0)},l=r.getInt32(e+16,!0),c=l?String.fromCharCode(l):void 0,u=r.getInt32(e+20,!0),f=r.getInt32(e+24,!0),{refIdToName:h,refNameToId:A}=this._parseNameBytes(t.subarray(e+28,e+28+f));return{refIdToName:h,refNameToId:A,skipLines:u,metaChar:c,columnNumbers:a,format:o,coordinateType:s}}async _parse(t={}){const e=await Lo(await this.filehandle.readFile(t)),r=new DataView(e.buffer);let i;if(r.getUint32(0,!0)===vO)i=1;else if(r.getUint32(0,!0)===SO)i=2;else throw new Error("Not a CSI file");this.minShift=r.getInt32(4,!0),this.depth=r.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;const s=2**(this.minShift+this.depth*3),o=r.getInt32(12,!0),a=o&&o>=30?this.parseAuxData(e,16):{refIdToName:[],refNameToId:{},metaChar:void 0,columnNumbers:{ref:0,start:1,end:2},coordinateType:"zero-based-half-open",format:"generic"},l=r.getInt32(16+o,!0);let c,u=16+o+4;const f=new Array(l).fill(0).map(()=>{const h=r.getInt32(u,!0);u+=4;const A={};let d;for(let p=0;p<h;p+=1){const C=r.getUint32(u,!0);if(C>this.maxBinNumber)d=this.parsePseudoBin(e,u+4),u+=48;else{const m=Oo(e,u+4);c=this._findFirstData(c,m);const y=r.getInt32(u+12,!0);u+=16;const I=new Array(y);for(let w=0;w<y;w+=1){const x=Oo(e,u),B=Oo(e,u+8);u+=16,I[w]=new UA(x,B,C)}A[C]=I}}return{binIndex:A,stats:d}});return{...a,csi:!0,refCount:l,maxBlockSize:65536,firstDataLine:c,csiVersion:i,indices:f,depth:this.depth,maxBinNumber:this.maxBinNumber,maxRefLength:s}}parsePseudoBin(t,e){return{lineCount:Nx(t,e+28)}}async blocksForRange(t,e,r,i={}){e<0&&(e=0);const s=await this.parse(i),o=s.refNameToId[t];if(o===void 0)return[];const a=s.indices[o];if(!a)return[];const l=this.reg2bins(e,r),c=[];for(const[u,f]of l)for(let h=u;h<=f;h++)if(a.binIndex[h])for(const A of a.binIndex[h])c.push(new UA(A.minv,A.maxv,h));return Tx(c,new np(0,0))}reg2bins(t,e){t-=1,t<1&&(t=1),e>2**50&&(e=2**34),e-=1;let r=0,i=0,s=this.minShift+this.depth*3;const o=[];for(;r<=this.depth;s-=3,i+=DO(1,r*3),r+=1){const a=i+Px(t,s),l=i+Px(e,s);if(l-a+o.length>this.maxBinNumber)throw new Error(`query ${t}-${e} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);o.push([a,l])}return o}}const kO=21578324,Lx=14;function FO(n,t){return n+=1,t-=1,[[0,0],[1+(n>>26),1+(t>>26)],[9+(n>>23),9+(t>>23)],[73+(n>>20),73+(t>>20)],[585+(n>>17),585+(t>>17)],[4681+(n>>14),4681+(t>>14)]]}class Uo extends Rx{async lineCount(t,e={}){var o;const r=await this.parse(e),i=r.refNameToId[t];return i===void 0||!r.indices[i]?-1:((o=r.indices[i].stats)==null?void 0:o.lineCount)??-1}async _parse(t={}){const e=await this.filehandle.readFile(t),r=await Lo(e),i=new DataView(r.buffer);if(i.getUint32(0,!0)!==kO)throw new Error("Not a TBI file");const o=i.getUint32(4,!0),a=i.getUint32(8,!0),l=a&65536?"zero-based-half-open":"1-based-closed",u={0:"generic",1:"SAM",2:"VCF"}[a&15];if(!u)throw new Error(`invalid Tabix preset format flags ${a}`);const f={ref:i.getInt32(12,!0),start:i.getInt32(16,!0),end:i.getInt32(20,!0)},h=i.getInt32(24,!0),A=5,d=((1<<(A+1)*3)-1)/7,p=2**(14+A*3),C=h?String.fromCharCode(h):void 0,m=i.getInt32(28,!0),y=i.getInt32(32,!0),{refNameToId:I,refIdToName:w}=this._parseNameBytes(r.slice(36,36+y));let x=36+y,B;return{indices:new Array(o).fill(0).map(()=>{const D=i.getInt32(x,!0);x+=4;const R={};let k;for(let O=0;O<D;O+=1){const z=i.getUint32(x,!0);if(x+=4,z>d+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(z===d+1){const J=i.getInt32(x,!0);x+=4,J===2&&(k=this.parsePseudoBin(r,x)),x+=16*J}else{const J=i.getInt32(x,!0);x+=4;const V=new Array(J);for(let q=0;q<J;q+=1){const oe=Oo(r,x),se=Oo(r,x+8);x+=16,B=this._findFirstData(B,oe),V[q]=new UA(oe,se,z)}R[z]=V}}const P=i.getInt32(x,!0);x+=4;const T=new Array(P);for(let O=0;O<P;O+=1)T[O]=Oo(r,x),x+=8,B=this._findFirstData(B,T[O]);return{binIndex:R,linearIndex:T,stats:k}}),metaChar:C,maxBinNumber:d,maxRefLength:p,skipLines:m,firstDataLine:B,columnNumbers:f,coordinateType:l,format:u,refIdToName:w,refNameToId:I,maxBlockSize:65536}}parsePseudoBin(t,e){return{lineCount:Nx(t,e+16)}}async blocksForRange(t,e,r,i={}){e<0&&(e=0);const s=await this.parse(i),o=s.refNameToId[t];if(o===void 0)return[];const a=s.indices[o];if(!a)return[];(a.linearIndex.length>0?a.linearIndex[e>>Lx>=a.linearIndex.length?a.linearIndex.length-1:e>>Lx]:new np(0,0))||console.warn("querying outside of possible tabix range");const c=FO(e,r),u=[];for(const[p,C]of c)for(let m=p;m<=C;m++)if(a.binIndex[m])for(const y of a.binIndex[m])u.push(new UA(y.minv,y.maxv,m));const f=a.linearIndex.length;let h;const A=Math.min(e>>14,f-1),d=Math.min(r>>14,f-1);for(let p=A;p<=d;++p){const C=a.linearIndex[p];C&&(!h||C.compareTo(h)<0)&&(h=C)}return Tx(u,h)}}class RO{constructor({path:t,filehandle:e,url:r,tbiPath:i,tbiUrl:s,tbiFilehandle:o,csiPath:a,csiUrl:l,csiFilehandle:c,renameRefSeqs:u,chunkCacheSize:f=5*2**20}){this.cache=new ul({maxSize:1e3});const h=u??(A=>A);if(e)this.filehandle=e;else if(t)this.filehandle=new ft(t);else if(r)this.filehandle=new vn(r);else throw new TypeError("must provide either filehandle or path");if(o)this.index=new Uo({filehandle:o,renameRefSeqs:h});else if(c)this.index=new GA({filehandle:c,renameRefSeqs:h});else if(i)this.index=new Uo({filehandle:new ft(i),renameRefSeqs:h});else if(a)this.index=new GA({filehandle:new ft(a),renameRefSeqs:h});else if(t)this.index=new Uo({filehandle:new ft(`${t}.tbi`),renameRefSeqs:h});else if(l)this.index=new GA({filehandle:new vn(l)});else if(s)this.index=new Uo({filehandle:new vn(s)});else if(r)this.index=new Uo({filehandle:new vn(`${r}.tbi`)});else throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl");this.renameRefSeq=h,this.hasCustomRenameRefSeq=u!==void 0,this.chunkCache=new xo({cache:new ul({maxSize:Math.floor(f/65536)}),fill:(A,d)=>this.readChunk(A,{signal:d})})}calculateFileOffset(t,e,r,i,s){return t[r]*256+(i-e[r])+s+1}async getLines(t,e,r,i){var I;let s,o={},a;typeof i=="function"?a=i:(o=i,a=i.lineCallback,s=i.signal);const l=await this.index.getMetadata(o),c=e??0,u=r??l.maxRefLength;if(!(c<=u))throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(c===u)return;const f=await this.index.blocksForRange(t,c,u,o),h=new TextDecoder("utf8"),A=l.format==="VCF",d={ref:l.columnNumbers.ref||0,start:l.columnNumbers.start||0,end:A?8:l.columnNumbers.end||0},p=Math.max(d.ref,d.start,d.end),C=(I=l.metaChar)==null?void 0:I.charCodeAt(0),m=l.coordinateType==="1-based-closed"?-1:0,y=!this.hasCustomRenameRefSeq;for(const w of f){const{buffer:x,cpositions:B,dpositions:E}=await this.chunkCache.get(w.toString(),w,s);let D=0,R=0;const k=h.decode(x);if(x.length==k.length)for(;D<k.length;){const T=k.indexOf(`
864
- `,D);if(T===-1)break;const O=k.slice(D,T);if(E){const J=D+w.minv.dataPosition;for(;R<E.length&&J>=E[R];)R++}const z=this.checkLine(t,c,u,O,d.ref,d.start,d.end,p,C,m,A,y);if(z===null)return;z!==void 0&&a(O,this.calculateFileOffset(B,E,R,D,w.minv.dataPosition),z.start,z.end),D=T+1}else for(;D<x.length;){const T=x.indexOf(10,D);if(T===-1)break;const O=x.slice(D,T),z=h.decode(O);if(E){const V=D+w.minv.dataPosition;for(;R<E.length&&V>=E[R];)R++}const J=this.checkLine(t,c,u,z,d.ref,d.start,d.end,p,C,m,A,y);if(J===null)return;J!==void 0&&a(z,this.calculateFileOffset(B,E,R,D,w.minv.dataPosition),J.start,J.end),D=T+1}}}async getMetadata(t={}){return this.index.getMetadata(t)}async getHeaderBuffer(t={}){const{firstDataLine:e,metaChar:r,maxBlockSize:i}=await this.getMetadata(t),s=((e==null?void 0:e.blockPosition)||0)+i,o=await this.filehandle.read(s,0,t),a=await Lo(o);if(r){let l=-1;const c=10,u=r.charCodeAt(0);for(let f=0,h=a.length;f<h;f++){const A=a[f];if(f===l+1&&A!==u)break;A===c&&(l=f)}return a.subarray(0,l+1)}return a}async getHeader(t={}){const e=new TextDecoder("utf8"),r=await this.getHeaderBuffer(t);return e.decode(r)}async getReferenceSequenceNames(t={}){return(await this.getMetadata(t)).refIdToName}checkLine(t,e,r,i,s,o,a,l,c,u,f,h){if(c!==void 0&&i.charCodeAt(0)===c)return;if(i.length<500){const I=i.split(" "),w=I[s-1];if(!(h?w===t:this.renameRefSeq(w)===t))return;const B=+I[o-1]+u;if(B>=r)return null;let E;return a===0||a===o?E=B+1:f?E=this._getVcfEnd(B,I[3],I[a-1]):E=+I[a-1],E<=e?void 0:{start:B,end:E}}let A=-1;const d=[-1];for(let I=0;I<l;I++){const w=i.indexOf(" ",A+1);if(w===-1){d.push(i.length);break}d.push(w),A=w}const p=i.slice(d[s-1]+1,d[s]);if(!(h?p===t:this.renameRefSeq(p)===t))return;const m=+i.slice(d[o-1]+1,d[o])+u;if(m>=r)return null;let y;if(a===0||a===o?y=m+1:f?y=this._getVcfEnd(m,i.slice(d[3]+1,d[4]),i.slice(d[a-1]+1,d[a])):y=+i.slice(d[a-1]+1,d[a]),!(y<=e))return{start:m,end:y}}_getVcfEnd(t,e,r){let i=t+e.length;if(r.includes("SVTYPE=TRA"))return t+1;if(r[0]!=="."){const o=r.indexOf("END=");if(o!==-1&&(o===0||r[o-1]===";")){const a=o+4;let l=r.indexOf(";",a);l===-1&&(l=r.length),i=Number.parseInt(r.slice(a,l),10)}}return i}async lineCount(t,e={}){return this.index.lineCount(t,e)}async readChunk(t,e={}){const r=await this.filehandle.read(t.fetchedSize(),t.minv.blockPosition,e);return xx(r,t,this.cache)}}const MO=Object.freeze(Object.defineProperty({__proto__:null,CSI:GA,TBI:Uo,TabixIndexedFile:RO},Symbol.toStringTag,{value:"Module"})),NO=/%([0-9A-Fa-f]{2})/g,TO=/^\s*##\s*(\S+)\s*(.*)/,PO=/\r?\n$/,Ox=/\s+/,Ux=/\D/g;function zA(n){return n.includes("%")?n.replaceAll(NO,(t,e)=>String.fromCharCode(parseInt(e,16))):n}function LO(n){if(!n.length||n===".")return{};const t={};let e=n;e.endsWith(`
865
- `)&&(e=e.slice(0,e.endsWith(`\r
866
- `)?-2:-1));for(const r of e.split(";")){const i=r.indexOf("=");if(i===-1)continue;const s=r.slice(i+1);if(!s.length)continue;const o=r.slice(0,i).trim();let a=t[o];a||(a=[],t[o]=a);for(const l of s.split(","))a.push(zA(l.trim()))}return t}function OO(n){if(!n.length||n===".")return{};const t={};let e=n;e.endsWith(`
867
- `)&&(e=e.slice(0,e.endsWith(`\r
868
- `)?-2:-1));for(const r of e.split(";")){const i=r.indexOf("=");if(i===-1)continue;const s=r.slice(i+1);if(!s.length)continue;const o=r.slice(0,i).trim();let a=t[o];a||(a=[],t[o]=a);for(const l of s.split(","))a.push(l.trim())}return t}function UO(n){return rp(n.split(" "))}function et(n){return n==="."||n===""||n===void 0?null:n}function rp(n){const t=et(n[0]),e=et(n[1]),r=et(n[2]),i=et(n[3]),s=et(n[4]),o=et(n[5]),a=et(n[6]),l=et(n[7]),c=et(n[8]);return{seq_id:t?zA(t):null,source:e?zA(e):null,type:r?zA(r):null,start:i===null?null:parseInt(i,10),end:s===null?null:parseInt(s,10),score:o===null?null:parseFloat(o),strand:a,phase:l,attributes:c===null?null:LO(c)}}function GO(n){const t=et(n[0]),e=et(n[1]),r=et(n[2]),i=et(n[3]),s=et(n[4]),o=et(n[5]),a=et(n[6]),l=et(n[7]),c=et(n[8]);return{seq_id:t,source:e,type:r,start:i===null?null:parseInt(i,10),end:s===null?null:parseInt(s,10),score:o===null?null:parseFloat(o),strand:a,phase:l,attributes:c===null?null:OO(c)}}function zO(n){var s,o;const t=TO.exec(n);if(!t)return null;const[,e]=t;let[,,r]=t;const i={directive:e};if(r.length&&(r=r.replace(PO,""),i.value=r),e==="sequence-region"){const a=r.split(Ox,3);return{...i,seq_id:a[0],start:(s=a[1])==null?void 0:s.replaceAll(Ux,""),end:(o=a[2])==null?void 0:o.replaceAll(Ux,"")}}else if(e==="genome-build"){const[a,l]=r.split(Ox,2);return{...i,source:a,buildName:l}}return i}const HO=/^\s*[^#\s>]/,VO=/^\s*(#+)(.*)/,_O=/^\s*$/,YO=/^\s*>/,JO=/\r?\n?$/g;class HA{constructor(t){X(this,"featureCallback");X(this,"endCallback");X(this,"commentCallback");X(this,"errorCallback");X(this,"disableDerivesFromReferences");X(this,"directiveCallback");X(this,"bufferSize");X(this,"eof",!1);X(this,"lineNumber",0);X(this,"_underConstructionTopLevel",[]);X(this,"_underConstructionById",{});X(this,"_completedReferences",{});X(this,"_underConstructionOrphans",{});const e=()=>{};this.featureCallback=t.featureCallback||e,this.endCallback=t.endCallback||e,this.commentCallback=t.commentCallback||e,this.errorCallback=t.errorCallback||e,this.directiveCallback=t.directiveCallback||e,this.disableDerivesFromReferences=t.disableDerivesFromReferences||!1,this.bufferSize=t.bufferSize===void 0?1/0:t.bufferSize}addLine(t){if(this.eof)return;if(this.lineNumber+=1,HO.test(t)){this._bufferLine(t);return}const e=VO.exec(t);if(e){const[,r]=e;let[,,i]=e;if(r.length===3)this._emitAllUnderConstructionFeatures();else if(r.length===2){const s=zO(t);s&&(s.directive==="FASTA"?(this._emitAllUnderConstructionFeatures(),this.eof=!0):this._emitItem(s))}else this._emitItem({comment:i.trimStart()})}else if(!_O.test(t))if(YO.test(t))this._emitAllUnderConstructionFeatures(),this.eof=!0;else{const r=t.replaceAll(JO,"");throw new Error(`GFF3 parse error. Cannot parse '${r}'.`)}}addParsedFeatureLine(t){this.eof||(this.lineNumber+=1,this._bufferParsedLine(t))}finish(){this._emitAllUnderConstructionFeatures(),this.endCallback()}_emitItem(t){Array.isArray(t)?this.featureCallback(t):"directive"in t?this.directiveCallback(t):"comment"in t&&this.commentCallback(t)}_enforceBufferSizeLimit(t=0){const e=r=>{var i,s;r&&Array.isArray(r)&&((s=(i=r[0].attributes)==null?void 0:i.ID)!=null&&s[0])&&(r[0].attributes.ID.forEach(a=>{delete this._underConstructionById[a],delete this._completedReferences[a]}),r.forEach(a=>{a.child_features&&a.child_features.forEach(l=>{e(l)}),a.derived_features&&a.derived_features.forEach(l=>{e(l)})}))};for(;this._underConstructionTopLevel.length+t>this.bufferSize;){const r=this._underConstructionTopLevel.shift();r&&(this._emitItem(r),e(r))}}_emitAllUnderConstructionFeatures(){this._underConstructionTopLevel.forEach(this._emitItem.bind(this)),this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={};const t=Object.keys(this._underConstructionOrphans);if(t.length)throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${t.join(",")}`)}_bufferLine(t){this._bufferParsedLine(UO(t))}_bufferParsedLine(t){var a,l,c;const e=t;e.child_features=[],e.derived_features=[];const r=((a=e.attributes)==null?void 0:a.ID)||[],i=((l=e.attributes)==null?void 0:l.Parent)||[],s=this.disableDerivesFromReferences?[]:((c=e.attributes)==null?void 0:c.Derives_from)||[];if(!r.length&&!i.length&&!s.length){this._emitItem([e]);return}let o;r.forEach(u=>{const f=this._underConstructionById[u];f?(f[f.length-1].type!==e.type&&this._parseError(`multi-line feature "${u}" has inconsistent types: "${e.type}", "${f[f.length-1].type}"`),f.push(e),o=f):(o=[e],this._enforceBufferSizeLimit(1),!i.length&&!s.length&&this._underConstructionTopLevel.push(o),this._underConstructionById[u]=o,this._resolveReferencesTo(o,u))}),this._resolveReferencesFrom(o||[e],{Parent:i,Derives_from:s},r)}_resolveReferencesTo(t,e){const r=this._underConstructionOrphans[e];if(r){for(const i of t)i.child_features.push(...r.Parent),i.derived_features.push(...r.Derives_from);delete this._underConstructionOrphans[e]}}_parseError(t){this.eof=!0,this.errorCallback(`${this.lineNumber}: ${t}`)}_resolveReferencesFrom(t,e,r){for(const i of e.Parent){const s=this._underConstructionById[i];if(s){let o=!1;for(const a of r){const l=`Parent,${i}`,c=this._completedReferences[a]||(this._completedReferences[a]={});c[l]&&(o=!0),c[l]=!0}if(!o)for(const a of s)a.child_features.push(t)}else{let o=this._underConstructionOrphans[i];o||(o={Parent:[],Derives_from:[]},this._underConstructionOrphans[i]=o),o.Parent.push(t)}}for(const i of e.Derives_from){const s=this._underConstructionById[i];if(s){let o=!1;for(const a of r){const l=`Derives_from,${i}`,c=this._completedReferences[a]||(this._completedReferences[a]={});c[l]&&(o=!0),c[l]=!0}if(!o)for(const a of s)a.derived_features.push(t)}else{let o=this._underConstructionOrphans[i];o||(o={Parent:[],Derives_from:[]},this._underConstructionOrphans[i]=o),o.Derives_from.push(t)}}}}function qO(n){const t=[],e=new HA({featureCallback:r=>t.push(r),disableDerivesFromReferences:!0,errorCallback:r=>{throw new Error(r)}});for(const r of n.split(/\r?\n/))e.addLine(r);return e.finish(),t}function KO(n){const t=[],e=new HA({featureCallback:r=>t.push(r),disableDerivesFromReferences:!0,errorCallback:r=>{throw new Error(r)}});for(const r of n)e.addLine(r);return e.finish(),t}function jO(n){const t=[],e=new HA({featureCallback:r=>t.push(r),disableDerivesFromReferences:!0,errorCallback:r=>{throw new Error(r)}});for(const r of n){const i=rp(r.fields);r.lineHash!==void 0&&(i.attributes||(i.attributes={}),i.attributes._lineHash=[String(r.lineHash)]),e.addParsedFeatureLine(i)}return e.finish(),t}function WO(n,t){const e=[],r=new HA({featureCallback:s=>e.push(s),disableDerivesFromReferences:!0,errorCallback:s=>{throw new Error(s)}}),i=t?rp:GO;for(const s of n){const o=i(s.fields);s.lineHash!==void 0&&(o.attributes||(o.attributes={}),o.attributes._lineHash=[String(s.lineHash)]),r.addParsedFeatureLine(o)}return r.finish(),e}const XO=Object.freeze(Object.defineProperty({__proto__:null,parseArraySync:KO,parseRecordsSync:jO,parseRecordsSyncFast:WO,parseStringSync:qO},Symbol.toStringTag,{value:"Module"}));function ZO(n,t,e){const r=Object.create(null),i=e.length,s=t.length,o=9,a=58;let l=0;if(n==="GT"){for(let f=0;f<i;f++){const h=l;for(;l<s&&t.charCodeAt(l)!==o;)l++;r[e[f]]=t.slice(h,l),l++}return r}const c=n.indexOf("GT");if(c===-1)return r;if(c===0){for(let f=0;f<i;f++){const h=l;for(;l<s&&t.charCodeAt(l)!==a&&t.charCodeAt(l)!==o;)l++;for(r[e[f]]=t.slice(h,l);l<s&&t.charCodeAt(l)!==o;)l++;l++}return r}let u=0;for(let f=0;f<c;f++)n.charCodeAt(f)===a&&u++;for(let f=0;f<i;f++){const h=l;let A=l;for(;A<s&&t.charCodeAt(A)!==o;)A++;let d=0,p=h;for(let C=h;C<=A;C++)if(C===A||t.charCodeAt(C)===a){if(d===u){r[e[f]]=t.slice(p,C);break}d++,p=C+1}l=A+1}return r}function $O(n){const t=[],e=[];let r=!1,i=!1;const s=n.length;for(let o=0;o<s;o++){const a=n[o];a==='"'?(r=!r,e.push(a)):a==="["?(i=!0,e.push(a)):a==="]"?(i=!1,e.push(a)):a===","&&!r&&!i?(t.push(e.join("").trim()),e.length=0):e.push(a)}return e.length>0&&t.push(e.join("").trim()),t}function eU(n,t){const e=n.indexOf(t);return[n.slice(0,e),n.slice(e+1)]}function tU(n){const t=n.slice(1,-1),e=$O(t),r=[];for(let i=0;i<e.length;i++){const s=e[i],[o,a]=eU(s,"=");if(a&&a.startsWith("[")&&a.endsWith("]")){const l=a.slice(1,-1).split(",");for(let c=0;c<l.length;c++)l[c]=l[c].trim();r.push([o,l])}else a&&a.startsWith('"')&&a.endsWith('"')?r.push([o,a.slice(1,-1)]):r.push([o,a])}return Object.fromEntries(r)}const VA={InfoFields:{AA:{Number:1,Type:"String",Description:"Ancestral allele"},AC:{Number:"A",Type:"Integer",Description:"Allele count in genotypes, for each ALT allele, in the same order as listed"},AD:{Number:"R",Type:"Integer",Description:"Total read depth for each allele"},ADF:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the forward strand"},ADR:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the reverse strand"},AF:{Number:"A",Type:"Float",Description:"Allele frequency for each ALT allele in the same order as listed (estimated from primary data, not called genotypes)"},AN:{Number:1,Type:"Integer",Description:"Total number of alleles in called genotypes"},BQ:{Number:1,Type:"Float",Description:"RMS base quality"},CIGAR:{Number:1,Type:"Float",Description:"Cigar string describing how to align an alternate allele to the reference allele"},DB:{Number:0,Type:"Flag",Description:"dbSNP membership"},DP:{Number:1,Type:"Integer",Description:"combined depth across samples"},END:{Number:1,Type:"Integer",Description:"End position (for use with symbolic alleles)"},H2:{Number:0,Type:"Flag",Description:"HapMap2 membership"},H3:{Number:0,Type:"Flag",Description:"HapMap3 membership"},MQ:{Number:1,Type:null,Description:"RMS mapping quality"},MQ0:{Number:1,Type:"Integer",Description:"Number of MAPQ == 0 reads"},NS:{Number:1,Type:"Integer",Description:"Number of samples with data"},SB:{Number:4,Type:"Integer",Description:"Strand bias"},SOMATIC:{Number:0,Type:"Flag",Description:"Somatic mutation (for cancer genomics)"},VALIDATED:{Number:0,Type:"Flag",Description:"Validated by follow-up experiment"},"1000G":{Number:0,Type:"Flag",Description:"1000 Genomes membership"},IMPRECISE:{Number:0,Type:"Flag",Description:"Imprecise structural variation"},NOVEL:{Number:0,Type:"Flag",Description:"Indicates a novel structural variation"},SVTYPE:{Number:1,Type:"String",Description:"Type of structural variant"},SVLEN:{Number:null,Type:"Integer",Description:"Difference in length between REF and ALT alleles"},CIPOS:{Number:2,Type:"Integer",Description:"Confidence interval around POS for imprecise variants"},CIEND:{Number:2,Type:"Integer",Description:"Confidence interval around END for imprecise variants"},HOMLEN:{Type:"Integer",Description:"Length of base pair identical micro-homology at event breakpoints"},HOMSEQ:{Type:"String",Description:"Sequence of base pair identical micro-homology at event breakpoints"},BKPTID:{Type:"String",Description:"ID of the assembled alternate allele in the assembly file"},MEINFO:{Number:4,Type:"String",Description:"Mobile element info of the form NAME,START,END,POLARITY"},METRANS:{Number:4,Type:"String",Description:"Mobile element transduction info of the form CHR,START,END,POLARITY"},DGVID:{Number:1,Type:"String",Description:"ID of this element in Database of Genomic Variation"},DBVARID:{Number:1,Type:"String",Description:"ID of this element in DBVAR"},DBRIPID:{Number:1,Type:"String",Description:"ID of this element in DBRIP"},MATEID:{Number:null,Type:"String",Description:"ID of mate breakends"},PARID:{Number:1,Type:"String",Description:"ID of partner breakend"},EVENT:{Number:1,Type:"String",Description:"ID of event associated to breakend"},CILEN:{Number:2,Type:"Integer",Description:"Confidence interval around the inserted material between breakend"},DPADJ:{Type:"Integer",Description:"Read Depth of adjacency"},CN:{Number:1,Type:"Integer",Description:"Copy number of segment containing breakend"},CNADJ:{Number:null,Type:"Integer",Description:"Copy number of adjacency"},CICN:{Number:2,Type:"Integer",Description:"Confidence interval around copy number for the segment"},CICNADJ:{Number:null,Type:"Integer",Description:"Confidence interval around copy number for the adjacency"}},GenotypeFields:{AD:{Number:"R",Type:"Integer",Description:"Read depth for each allele"},ADF:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the forward strand"},ADR:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the reverse strand"},DP:{Number:1,Type:"Integer",Description:"Read depth"},EC:{Number:"A",Type:"Integer",Description:"Expected alternate allele counts"},FT:{Number:1,Type:"String",Description:'Filter indicating if this genotype was "called"'},GL:{Number:"G",Type:"Float",Description:"Genotype likelihoods"},GP:{Number:"G",Type:"Float",Description:"Genotype posterior probabilities"},GQ:{Number:1,Type:"Integer",Description:"Conditional genotype quality"},GT:{Number:1,Type:"String",Description:"Genotype"},HQ:{Number:2,Type:"Integer",Description:"Haplotype quality"},MQ:{Number:1,Type:"Integer",Description:"RMS mapping quality"},PL:{Number:"G",Type:"Integer",Description:"Phred-scaled genotype likelihoods rounded to the closest integer"},PQ:{Number:1,Type:"Integer",Description:"Phasing quality"},PS:{Number:1,Type:"Integer",Description:"Phase set"}},AltTypes:{DEL:{Description:"Deletion relative to the reference"},INS:{Description:"Insertion of novel sequence relative to the reference"},DUP:{Description:"Region of elevated copy number relative to the reference"},INV:{Description:"Inversion of reference sequence"},CNV:{Description:"Copy number variable region (may be both deletion and duplication)"},"DUP:TANDEM":{Description:"Tandem duplication"},"DEL:ME":{Description:"Deletion of mobile element relative to the reference"},"INS:ME":{Description:"Insertion of a mobile element relative to the reference"},NON_REF:{Description:"Represents any possible alternative allele at this location"},"*":{Description:"Represents any possible alternative allele at this location"}},FilterTypes:{PASS:{Description:"Passed all filters"}}};function nU(n){try{return decodeURIComponent(n)}catch{return n}}class rU{constructor({header:t="",strict:e=!0}){if(!t.length)throw new Error("empty header received");const r=t.split(/[\r\n]+/).filter(Boolean);if(!r.length)throw new Error("no non-empty header lines specified");this.strict=e,this.metadata={INFO:{...VA.InfoFields},FORMAT:{...VA.GenotypeFields},ALT:{...VA.AltTypes},FILTER:{...VA.FilterTypes}};let i;for(let l=0;l<r.length;l++){const c=r[l];if(c.startsWith("#"))c.startsWith("##")?this.parseMetadata(c):i=c;else throw new Error(`Bad line in header:
821
+ )`},Symbol.toStringTag,{value:"Module"}))).map(([n,e])=>[n,aC.parse(e.trim())]));function iA(n){const e=new Set(["uint","int","float","long"]);return{...n,fields:n.fields.map(t=>({...t,isArray:t.size&&t.type!=="char",arrayIsNumeric:t.size&&e.has(t.type),isNumeric:!t.size&&e.has(t.type)})).filter(t=>!!t.name)}}const a5={".":0,"-":-1,"+":1};function c5(n){return n.length>=12&&!Number.isNaN(Number.parseInt(n[9],10))&&n[10]?.split(",").filter(e=>!!e).length===Number.parseInt(n[9],10)}class l5{constructor(e={}){if(e.autoSql)this.autoSql=iA(aC.parse(e.autoSql));else if(e.type){if(!rA[e.type])throw new Error("Type not found");this.autoSql=iA(rA[e.type])}else this.autoSql=iA(rA.defaultBedSchema),this.attemptDefaultBed=!0}parseLine(e,t={}){const{autoSql:r}=this,{uniqueId:i}=t,s=Array.isArray(e)?e:e.split(" ");let o={};if(!this.attemptDefaultBed||this.attemptDefaultBed&&c5(s))for(let a=0;a<r.fields.length;a++){const l=r.fields[a];let c=s[a];const{isNumeric:u,isArray:f,arrayIsNumeric:h,name:A}=l;if(c==null)break;if(c!=="."){if(u){const d=Number(c);c=Number.isNaN(d)?c:d}else f&&(c=c.split(","),c.at(-1)===""&&c.pop(),h&&(c=c.map(Number)));o[A]=c}}else{const a=["chrom","chromStart","chromEnd","name"];o=Object.fromEntries(s.map((l,c)=>[a[c]||"field"+c,l])),o.chromStart=+o.chromStart,o.chromEnd=+o.chromEnd,Number.isNaN(Number.parseFloat(o.field4))||(o.score=+o.field4,delete o.field4),(o.field5==="+"||o.field5==="-")&&(o.strand=o.field5,delete o.field5)}return i&&(o.uniqueId=i),o.strand=a5[o.strand]||0,o.chrom=decodeURIComponent(o.chrom),o}}const u5=Object.freeze(Object.defineProperty({__proto__:null,default:l5},Symbol.toStringTag,{value:"Module"}));var Fe=function(n,e,t,r,i){if(r==="m")throw new TypeError("Private method is not writable");if(r==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?n!==e||!i:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?i.call(n,t):i?i.value=t:e.set(n,t),t},P=function(n,e,t,r){if(t==="a"&&!r)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?n!==e||!r:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?r:t==="a"?r.call(n):r?r.value:e.get(n)},ue,lt,fe,Ce,xr,io,Br,hc,kt,cC,sA,oA,aA,lC,dc;class so extends Map{constructor(e={}){if(super(),ue.add(this),lt.set(this,0),fe.set(this,new Map),Ce.set(this,new Map),xr.set(this,void 0),io.set(this,void 0),Br.set(this,void 0),!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof e.maxAge=="number"&&e.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");Fe(this,xr,e.maxSize,"f"),Fe(this,io,e.maxAge||Number.POSITIVE_INFINITY,"f"),Fe(this,Br,e.onEviction,"f")}get __oldCache(){return P(this,Ce,"f")}get(e){if(P(this,fe,"f").has(e)){const t=P(this,fe,"f").get(e);return P(this,ue,"m",sA).call(this,e,t)}if(P(this,Ce,"f").has(e)){const t=P(this,Ce,"f").get(e);if(!P(this,ue,"m",kt).call(this,e,t))return P(this,ue,"m",lC).call(this,e,t),t.value}}set(e,t,{maxAge:r=P(this,io,"f")}={}){const i=typeof r=="number"&&r!==Number.POSITIVE_INFINITY?Date.now()+r:void 0;return P(this,fe,"f").has(e)?P(this,fe,"f").set(e,{value:t,expiry:i}):P(this,ue,"m",aA).call(this,e,{value:t,expiry:i}),this}has(e){return P(this,fe,"f").has(e)?!P(this,ue,"m",kt).call(this,e,P(this,fe,"f").get(e)):P(this,Ce,"f").has(e)?!P(this,ue,"m",kt).call(this,e,P(this,Ce,"f").get(e)):!1}peek(e){if(P(this,fe,"f").has(e))return P(this,ue,"m",oA).call(this,e,P(this,fe,"f"));if(P(this,Ce,"f").has(e))return P(this,ue,"m",oA).call(this,e,P(this,Ce,"f"))}expiresIn(e){const t=P(this,fe,"f").get(e)??P(this,Ce,"f").get(e);if(t)return t.expiry?t.expiry-Date.now():Number.POSITIVE_INFINITY}delete(e){var t;const r=P(this,fe,"f").delete(e);return r&&Fe(this,lt,(t=P(this,lt,"f"),t--,t),"f"),P(this,Ce,"f").delete(e)||r}clear(){P(this,fe,"f").clear(),P(this,Ce,"f").clear(),Fe(this,lt,0,"f")}resize(e){if(!(e&&e>0))throw new TypeError("`maxSize` must be a number greater than 0");const t=[...P(this,ue,"m",dc).call(this)],r=t.length-e;r<0?(Fe(this,fe,new Map(t),"f"),Fe(this,Ce,new Map,"f"),Fe(this,lt,t.length,"f")):(r>0&&P(this,ue,"m",hc).call(this,t.slice(0,r)),Fe(this,Ce,new Map(t.slice(r)),"f"),Fe(this,fe,new Map,"f"),Fe(this,lt,0,"f")),Fe(this,xr,e,"f")}evict(e=1){const t=e;if(!t||t<=0)return;const r=[...P(this,ue,"m",dc).call(this)],i=Math.trunc(Math.min(t,Math.max(r.length-1,0)));i<=0||(P(this,ue,"m",hc).call(this,r.slice(0,i)),Fe(this,Ce,new Map(r.slice(i)),"f"),Fe(this,fe,new Map,"f"),Fe(this,lt,0,"f"))}*keys(){for(const[e]of this)yield e}*values(){for(const[,e]of this)yield e}*[(lt=new WeakMap,fe=new WeakMap,Ce=new WeakMap,xr=new WeakMap,io=new WeakMap,Br=new WeakMap,ue=new WeakSet,hc=function(t){if(typeof P(this,Br,"f")=="function")for(const[r,i]of t)P(this,Br,"f").call(this,r,i.value)},kt=function(t,r){return typeof r.expiry=="number"&&r.expiry<=Date.now()?(typeof P(this,Br,"f")=="function"&&P(this,Br,"f").call(this,t,r.value),this.delete(t)):!1},cC=function(t,r){if(!P(this,ue,"m",kt).call(this,t,r))return r.value},sA=function(t,r){return r.expiry?P(this,ue,"m",cC).call(this,t,r):r.value},oA=function(t,r){const i=r.get(t);return P(this,ue,"m",sA).call(this,t,i)},aA=function(t,r){var i;P(this,fe,"f").set(t,r),Fe(this,lt,(i=P(this,lt,"f"),i++,i),"f"),P(this,lt,"f")>=P(this,xr,"f")&&(Fe(this,lt,0,"f"),P(this,ue,"m",hc).call(this,P(this,Ce,"f")),Fe(this,Ce,P(this,fe,"f"),"f"),Fe(this,fe,new Map,"f"))},lC=function(t,r){P(this,Ce,"f").delete(t),P(this,ue,"m",aA).call(this,t,r)},dc=function*(){for(const t of P(this,Ce,"f")){const[r,i]=t;P(this,fe,"f").has(r)||P(this,ue,"m",kt).call(this,r,i)||(yield t)}for(const t of P(this,fe,"f")){const[r,i]=t;P(this,ue,"m",kt).call(this,r,i)||(yield t)}},Symbol.iterator)](){for(const e of P(this,fe,"f")){const[t,r]=e;P(this,ue,"m",kt).call(this,t,r)||(yield[t,r.value])}for(const e of P(this,Ce,"f")){const[t,r]=e;P(this,fe,"f").has(t)||P(this,ue,"m",kt).call(this,t,r)||(yield[t,r.value])}}*entriesDescending(){let e=[...P(this,fe,"f")];for(let t=e.length-1;t>=0;--t){const r=e[t],[i,s]=r;P(this,ue,"m",kt).call(this,i,s)||(yield[i,s.value])}e=[...P(this,Ce,"f")];for(let t=e.length-1;t>=0;--t){const r=e[t],[i,s]=r;P(this,fe,"f").has(i)||P(this,ue,"m",kt).call(this,i,s)||(yield[i,s.value])}}*entriesAscending(){for(const[e,t]of P(this,ue,"m",dc).call(this))yield[e,t.value]}get size(){if(!P(this,lt,"f"))return P(this,Ce,"f").size;let e=0;for(const t of P(this,Ce,"f").keys())P(this,fe,"f").has(t)||e++;return Math.min(P(this,lt,"f")+e,P(this,xr,"f"))}get maxSize(){return P(this,xr,"f")}get maxAge(){return P(this,io,"f")}entries(){return this.entriesAscending()}forEach(e,t=this){for(const[r,i]of this.entriesAscending())e.call(t,i,r,this)}get[Symbol.toStringTag](){return"QuickLRU"}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}}let uC=class{constructor(e,t,r,i){this.minv=e,this.maxv=t,this.bin=r,this._fetchedSize=i}toUniqueString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(e){return this.minv.compareTo(e.minv)||this.maxv.compareTo(e.maxv)||this.bin-e.bin}fetchedSize(){return this._fetchedSize!==void 0?this._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}};const fC=65536,f5=fC*fC;function A5(n,e=0){const t=n[e]|n[e+1]<<8|n[e+2]<<16|n[e+3]<<24;return((n[e+4]|n[e+5]<<8|n[e+6]<<16|n[e+7]<<24)>>>0)*f5+(t>>>0)}function h5(n={}){return"aborted"in n?{signal:n}:n}function cA(n,e){const t=n.length;if(t===0)return n;let r;if(e){const l=e.blockPosition,c=e.dataPosition;r=[];for(let u=0;u<t;u++){const f=n[u],h=f.maxv;(h.blockPosition-l||h.dataPosition-c)>0&&r.push(f)}if(r.length===0)return r}else r=n;r.sort((l,c)=>{const u=l.minv.blockPosition-c.minv.blockPosition;return u!==0?u:l.minv.dataPosition-c.minv.dataPosition});const i=[];let s=r[0];i.push(s);let o=s.minv.blockPosition,a=s.maxv.blockPosition;for(let l=1;l<r.length;l++){const c=r[l],u=c.minv.blockPosition,f=c.maxv.blockPosition;if(u-a<65e3&&f-o<5e6){const h=c.maxv,A=s.maxv;(f-a||h.dataPosition-A.dataPosition)>0&&(s.maxv=h,a=f)}else i.push(c),s=c,o=u,a=f}return i}function AC(n,e){return{lineCount:A5(n,e)}}function oo(n,e){return n?n.compareTo(e)>0?e:n:e}function d5(n,e=t=>t){let t=0,r=0;const i=[],s={};for(let o=0;o<n.length;o+=1)if(!n[o]){if(r<o){let a="";for(let l=r;l<o;l++)a+=String.fromCharCode(n[l]);a=e(a),i[t]=a,s[a]=t}r=o+1,t+=1}return{refNameToId:s,refIdToName:i}}function g5(n){let e=0;for(const i of n)e+=i.length;const t=new Uint8Array(e);let r=0;for(const i of n)t.set(i,r),r+=i.length;return t}function p5(n,e,t){return!!((n&e)!==e||n&t)}function m5(n,e){return e==="*"?n===void 0:`${n}`!=`${e}`}function w5(n){if(!n)return"";const{flagInclude:e=0,flagExclude:t=0,tagFilter:r}=n,i=r?`:${r.tag}=${r.value??"*"}`:"";return`:f${e}x${t}${i}`}let hC=class{constructor({filehandle:e,renameRefSeq:t=r=>r}){this.filehandle=e,this.renameRefSeq=t}async estimatedBytesForRegions(e,t){const r=await Promise.all(e.map(o=>this.blocksForRange(o.refId,o.start,o.end,t))),i=cA(r.flat());let s=0;for(const o of i)s+=o.fetchedSize();return s}},dC=class{constructor(e,t){this.blockPosition=e,this.dataPosition=t}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}};function Gn(n,e=0,t=!1){if(t)throw new Error("big-endian virtual file offsets not implemented");return new dC(n[e+7]*1099511627776+n[e+6]*4294967296+n[e+5]*16777216+n[e+4]*65536+n[e+3]*256+n[e+2],n[e+1]<<8|n[e])}const C5=21578050;function y5(n,e){return n-n%e}function I5(n,e){return n-n%e+e}function b5(n,e){return e-=1,[[0,0],[1+(n>>26),1+(e>>26)],[9+(n>>23),9+(e>>23)],[73+(n>>20),73+(e>>20)],[585+(n>>17),585+(e>>17)],[4681+(n>>14),4681+(e>>14)]]}class yi extends hC{async lineCount(e,t){return(await this.parse(t)).indices(e)?.stats?.lineCount||0}async _parse(e){const t=await this.filehandle.readFile(),r=new DataView(t.buffer);if(r.getUint32(0,!0)!==C5)throw new Error("Not a BAI file");const i=r.getInt32(4,!0),o=((1<<(5+1)*3)-1)/7;let a=8,l;const c=[];for(let h=0;h<i;h++){c.push(a);const A=r.getInt32(a,!0);a+=4;for(let p=0;p<A;p+=1){const m=r.getUint32(a,!0);if(a+=4,m===o+1)a+=4,a+=32;else{if(m>o+1)throw new Error("bai index contains too many bins, please use CSI");{const C=r.getInt32(a,!0);a+=4;for(let y=0;y<C;y++)a+=8,a+=8}}}const d=r.getInt32(a,!0);a+=4;const g=new Array(d);for(let p=0;p<d;p++){const m=Gn(t,a);a+=8,l=oo(l,m),g[p]=m}}const u=new so({maxSize:5});function f(h){let A=c[h];if(A===void 0)return;const d=r.getInt32(A,!0);let g;A+=4;const p={};for(let y=0;y<d;y+=1){const w=r.getUint32(A,!0);if(A+=4,w===o+1)A+=4,g=AC(t,A+16),A+=32;else{if(w>o+1)throw new Error("bai index contains too many bins, please use CSI");{const E=r.getInt32(A,!0);A+=4;const x=new Array(E);for(let b=0;b<E;b++){const S=Gn(t,A);A+=8;const Q=Gn(t,A);A+=8,l=oo(l,S),x[b]=new uC(S,Q,w)}p[w]=x}}}const m=r.getInt32(A,!0);A+=4;const C=new Array(m);for(let y=0;y<m;y++){const w=Gn(t,A);A+=8,l=oo(l,w),C[y]=w}return{binIndex:p,linearIndex:C,stats:g}}return{bai:!0,firstDataLine:l,maxBlockSize:65536,indices:h=>{if(!u.has(h)){const A=f(h);return A&&u.set(h,A),A}return u.get(h)},refCount:i}}async indexCov(e,t,r,i){const o=t!==void 0,l=(await this.parse(i)).indices(e);if(!l)return[];const{linearIndex:c,stats:u}=l;if(c.length===0)return[];const f=r===void 0?(c.length-1)*16384:I5(r,16384),h=t===void 0?0:y5(t,16384),A=o?new Array((f-h)/16384):new Array(c.length-1),d=c[c.length-1].blockPosition;if(f>(c.length-1)*16384)throw new Error("query outside of range of linear index");let g=c[h/16384].blockPosition;for(let p=h/16384,m=0;p<f/16384;p++,m++)A[m]={score:c[p+1].blockPosition-g,start:p*16384,end:p*16384+16384},g=c[p+1].blockPosition;return A.map(p=>({...p,score:p.score*(u?.lineCount||0)/d}))}async blocksForRange(e,t,r,i={}){t<0&&(t=0);const s=await this.parse(i);if(!s)return[];const o=s.indices(e);if(!o)return[];const a=b5(t,r),l=[],{binIndex:c}=o;for(const[d,g]of a)for(let p=d;p<=g;p++){const m=c[p];if(m)for(let C=0,y=m.length;C<y;C++)l.push(m[C])}const{linearIndex:u}=o,f=u.length,h=Math.min(t>>14,f-1),A=u[h];return cA(l,A)}async parse(e={}){return this.setupP||(this.setupP=this._parse(e).catch(t=>{throw this.setupP=void 0,t})),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}var gC=0,pC=2,gc=4,vr=0,pc=1,E5=2,x5=-5;function B5(n,e){return Object.prototype.hasOwnProperty.call(n,e)}function v5(n){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var t=e.shift();if(t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(var r in t)B5(t,r)&&(n[r]=t[r])}}return n}function mC(n,e){return n.length===e?n:n.subarray?n.subarray(0,e):(n.length=e,n)}var ao={arraySet:function(n,e,t,r,i){if(e.subarray&&n.subarray){n.set(e.subarray(t,t+r),i);return}for(var s=0;s<r;s++)n[i+s]=e[t+s]},flattenChunks:function(n){var e,t,r,i,s,o;for(r=0,e=0,t=n.length;e<t;e++)r+=n[e].length;for(o=new Uint8Array(r),i=0,e=0,t=n.length;e<t;e++)s=n[e],o.set(s,i),i+=s.length;return o},Buf8:function(n){return new Uint8Array(n)},Buf16:function(n){return new Uint16Array(n)},Buf32:function(n){return new Int32Array(n)}},co={arraySet:function(n,e,t,r,i){for(var s=0;s<r;s++)n[i+s]=e[t+s]},flattenChunks:function(n){return[].concat.apply([],n)},Buf8:function(n){return new Array(n)},Buf16:function(n){return new Array(n)},Buf32:function(n){return new Array(n)}};let Ii=()=>{const n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return Ii=()=>n,n},zn=(n,e,t,r,i)=>(zn=Ii()?ao.arraySet:co.arraySet,zn(n,e,t,r,i)),lA=n=>(lA=Ii()?ao.flattenChunks:co.flattenChunks,lA(n)),bi=n=>(bi=Ii()?ao.Buf8:co.Buf8,bi(n)),Ei=n=>(Ei=Ii()?ao.Buf16:co.Buf16,Ei(n)),xi=n=>(xi=Ii()?ao.Buf32:co.Buf32,xi(n)),wC=function(){let n=!0;try{String.fromCharCode.apply(null,[0])}catch{n=!1}return wC=()=>n,n},CC=function(){let n=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{n=!1}return CC=()=>n,n},uA=function(n){for(var e=bi(256),t=0;t<256;t++)e[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;return e[254]=e[254]=1,uA=r=>e[r],e[n]};function yC(n){var e,t,r,i,s,o=n.length,a=0;for(i=0;i<o;i++)t=n.charCodeAt(i),(t&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(t=65536+(t-55296<<10)+(r-56320),i++)),a+=t<128?1:t<2048?2:t<65536?3:4;for(e=new Uint8Array(a),s=0,i=0;s<a;i++)t=n.charCodeAt(i),(t&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(t=65536+(t-55296<<10)+(r-56320),i++)),t<128?e[s++]=t:t<2048?(e[s++]=192|t>>>6,e[s++]=128|t&63):t<65536?(e[s++]=224|t>>>12,e[s++]=128|t>>>6&63,e[s++]=128|t&63):(e[s++]=240|t>>>18,e[s++]=128|t>>>12&63,e[s++]=128|t>>>6&63,e[s++]=128|t&63);return e}function S5(n,e){if(e<65534&&(n.subarray&&CC()||!n.subarray&&wC()))return String.fromCharCode.apply(null,mC(n,e));for(var t="",r=0;r<e;r++)t+=String.fromCharCode(n[r]);return t}function Q5(n){for(var e=new Uint8Array(n.length),t=0,r=e.length;t<r;t++)e[t]=n.charCodeAt(t);return e}function D5(n,e){var t,r,i,s,o=e||n.length,a=new Array(o*2);for(r=0,t=0;t<o;){if(i=n[t++],i<128){a[r++]=i;continue}if(s=uA(i),s>4){a[r++]=65533,t+=s-1;continue}for(i&=s===2?31:s===3?15:7;s>1&&t<o;)i=i<<6|n[t++]&63,s--;if(s>1){a[r++]=65533;continue}i<65536?a[r++]=i:(i-=65536,a[r++]=55296|i>>10&1023,a[r++]=56320|i&1023)}return S5(a,r)}function k5(n,e){var t;for(e=e||n.length,e>n.length&&(e=n.length),t=e-1;t>=0&&(n[t]&192)===128;)t--;return t<0||t===0?e:t+uA(n[t])>e?t:e}function F5(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function fA(n,e,t,r){for(var i=n&65535|0,s=n>>>16&65535|0,o=0;t!==0;){o=t>2e3?2e3:t,t-=o;do i=i+e[r++]|0,s=s+i|0;while(--o);i%=65521,s%=65521}return i|s<<16|0}function R5(){for(var n,e=[],t=0;t<256;t++){n=t;for(var r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;e[t]=n}return e}let IC=function(){const n=R5();return IC=()=>n,n};function Jt(n,e,t,r){var i=IC(),s=r+t;n^=-1;for(var o=r;o<s;o++)n=n>>>8^i[(n^e[o])&255];return n^-1}var mc=30,M5=12;function N5(n,e){var t,r,i,s,o,a,l,c,u,f,h,A,d,g,p,m,C,y,w,E,x,b,S,Q,v;t=n.state,r=n.next_in,Q=n.input,i=r+(n.avail_in-5),s=n.next_out,v=n.output,o=s-(e-n.avail_out),a=s+(n.avail_out-257),l=t.dmax,c=t.wsize,u=t.whave,f=t.wnext,h=t.window,A=t.hold,d=t.bits,g=t.lencode,p=t.distcode,m=(1<<t.lenbits)-1,C=(1<<t.distbits)-1;e:do{d<15&&(A+=Q[r++]<<d,d+=8,A+=Q[r++]<<d,d+=8),y=g[A&m];t:for(;;){if(w=y>>>24,A>>>=w,d-=w,w=y>>>16&255,w===0)v[s++]=y&65535;else if(w&16){E=y&65535,w&=15,w&&(d<w&&(A+=Q[r++]<<d,d+=8),E+=A&(1<<w)-1,A>>>=w,d-=w),d<15&&(A+=Q[r++]<<d,d+=8,A+=Q[r++]<<d,d+=8),y=p[A&C];n:for(;;){if(w=y>>>24,A>>>=w,d-=w,w=y>>>16&255,w&16){if(x=y&65535,w&=15,d<w&&(A+=Q[r++]<<d,d+=8,d<w&&(A+=Q[r++]<<d,d+=8)),x+=A&(1<<w)-1,x>l){n.msg="invalid distance too far back",t.mode=mc;break e}if(A>>>=w,d-=w,w=s-o,x>w){if(w=x-w,w>u&&t.sane){n.msg="invalid distance too far back",t.mode=mc;break e}if(b=0,S=h,f===0){if(b+=c-w,w<E){E-=w;do v[s++]=h[b++];while(--w);b=s-x,S=v}}else if(f<w){if(b+=c+f-w,w-=f,w<E){E-=w;do v[s++]=h[b++];while(--w);if(b=0,f<E){w=f,E-=w;do v[s++]=h[b++];while(--w);b=s-x,S=v}}}else if(b+=f-w,w<E){E-=w;do v[s++]=h[b++];while(--w);b=s-x,S=v}for(;E>2;)v[s++]=S[b++],v[s++]=S[b++],v[s++]=S[b++],E-=3;E&&(v[s++]=S[b++],E>1&&(v[s++]=S[b++]))}else{b=s-x;do v[s++]=v[b++],v[s++]=v[b++],v[s++]=v[b++],E-=3;while(E>2);E&&(v[s++]=v[b++],E>1&&(v[s++]=v[b++]))}}else if((w&64)===0){y=p[(y&65535)+(A&(1<<w)-1)];continue n}else{n.msg="invalid distance code",t.mode=mc;break e}break}}else if((w&64)===0){y=g[(y&65535)+(A&(1<<w)-1)];continue t}else if(w&32){t.mode=M5;break e}else{n.msg="invalid literal/length code",t.mode=mc;break e}break}}while(r<i&&s<a);E=d>>3,r-=E,d-=E<<3,A&=(1<<d)-1,n.next_in=r,n.next_out=s,n.avail_in=r<i?5+(i-r):5-(r-i),n.avail_out=s<a?257+(a-s):257-(s-a),t.hold=A,t.bits=d}var Bi=15,bC=852,EC=592,xC=0,AA=1,BC=2,T5=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],P5=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],L5=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],O5=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function lo(n,e,t,r,i,s,o,a){var l=a.bits,c=0,u=0,f=0,h=0,A=0,d=0,g=0,p=0,m=0,C=0,y,w,E,x,b,S=null,Q=0,v,F=Ei(Bi+1),R=Ei(Bi+1),N=null,O=0,H,G,_;for(c=0;c<=Bi;c++)F[c]=0;for(u=0;u<r;u++)F[e[t+u]]++;for(A=l,h=Bi;h>=1&&F[h]===0;h--);if(A>h&&(A=h),h===0)return i[s++]=1<<24|64<<16|0,i[s++]=1<<24|64<<16|0,a.bits=1,0;for(f=1;f<h&&F[f]===0;f++);for(A<f&&(A=f),p=1,c=1;c<=Bi;c++)if(p<<=1,p-=F[c],p<0)return-1;if(p>0&&(n===xC||h!==1))return-1;for(R[1]=0,c=1;c<Bi;c++)R[c+1]=R[c]+F[c];for(u=0;u<r;u++)e[t+u]!==0&&(o[R[e[t+u]]++]=u);if(n===xC?(S=N=o,v=19):n===AA?(S=T5,Q-=257,N=P5,O-=257,v=256):(S=L5,N=O5,v=-1),C=0,u=0,c=f,b=s,d=A,g=0,E=-1,m=1<<A,x=m-1,n===AA&&m>bC||n===BC&&m>EC)return 1;for(;;){H=c-g,o[u]<v?(G=0,_=o[u]):o[u]>v?(G=N[O+o[u]],_=S[Q+o[u]]):(G=96,_=0),y=1<<c-g,w=1<<d,f=w;do w-=y,i[b+(C>>g)+w]=H<<24|G<<16|_|0;while(w!==0);for(y=1<<c-1;C&y;)y>>=1;if(y!==0?(C&=y-1,C+=y):C=0,u++,--F[c]===0){if(c===h)break;c=e[t+o[u]]}if(c>A&&(C&x)!==E){for(g===0&&(g=A),b+=f,d=c-g,p=1<<d;d+g<h&&(p-=F[d+g],!(p<=0));)d++,p<<=1;if(m+=1<<d,n===AA&&m>bC||n===BC&&m>EC)return 1;E=C&x,i[E]=A<<24|d<<16|b-s|0}}return C!==0&&(i[b+C]=c-g<<24|64<<16|0),a.bits=A,0}var U5=0,vC=1,SC=2,QC=4,Sr=0,G5=1,z5=2,Ct=-2,DC=-3,kC=-4,H5=-5,FC=8,RC=1,MC=2,NC=3,TC=4,PC=5,LC=6,OC=7,UC=8,GC=9,zC=10,wc=11,un=12,hA=13,HC=14,dA=15,VC=16,_C=17,YC=18,JC=19,Cc=20,yc=21,qC=22,KC=23,jC=24,WC=25,XC=26,gA=27,ZC=28,$C=29,me=30,ey=31,V5=32,_5=852,Y5=592;function ty(n){return(n>>>24&255)+(n>>>8&65280)+((n&65280)<<8)+((n&255)<<24)}function J5(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=Ei(320),this.work=Ei(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function q5(n){var e;return!n||!n.state?Ct:(e=n.state,n.total_in=n.total_out=e.total=0,n.msg="",e.wrap&&(n.adler=e.wrap&1),e.mode=RC,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=xi(_5),e.distcode=e.distdyn=xi(Y5),e.sane=1,e.back=-1,Sr)}function K5(n){var e;return!n||!n.state?Ct:(e=n.state,e.wsize=0,e.whave=0,e.wnext=0,q5(n))}function j5(n,e){var t,r;return!n||!n.state||(r=n.state,e<0?(t=0,e=-e):(t=(e>>4)+1,e<48&&(e&=15)),e&&(e<8||e>15))?Ct:(r.window!==null&&r.wbits!==e&&(r.window=null),r.wrap=t,r.wbits=e,K5(n))}function W5(n,e){var t,r;return n?(r=new J5,n.state=r,r.window=null,t=j5(n,e),t!==Sr&&(n.state=null),t):Ct}var ny=!0,pA,mA;function X5(n){if(ny){var e;for(pA=xi(512),mA=xi(32),e=0;e<144;)n.lens[e++]=8;for(;e<256;)n.lens[e++]=9;for(;e<280;)n.lens[e++]=7;for(;e<288;)n.lens[e++]=8;for(lo(vC,n.lens,0,288,pA,0,n.work,{bits:9}),e=0;e<32;)n.lens[e++]=5;lo(SC,n.lens,0,32,mA,0,n.work,{bits:5}),ny=!1}n.lencode=pA,n.lenbits=9,n.distcode=mA,n.distbits=5}function ry(n,e,t,r){var i,s=n.state;return s.window===null&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=bi(s.wsize)),r>=s.wsize?(zn(s.window,e,t-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),zn(s.window,e,t-r,i,s.wnext),r-=i,r?(zn(s.window,e,t-r,r,0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}function Z5(n,e){var t,r,i,s,o,a,l,c,u,f,h,A,d,g,p=0,m,C,y,w,E,x,b,S,Q=bi(4),v,F,R=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!n||!n.state||!n.output||!n.input&&n.avail_in!==0)return Ct;t=n.state,t.mode===un&&(t.mode=hA),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=t.hold,u=t.bits,f=a,h=l,S=Sr;e:for(;;)switch(t.mode){case RC:if(t.wrap===0){t.mode=hA;break}for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(t.wrap&2&&c===35615){t.check=0,Q[0]=c&255,Q[1]=c>>>8&255,t.check=Jt(t.check,Q,2,0),c=0,u=0,t.mode=MC;break}if(t.flags=0,t.head&&(t.head.done=!1),!(t.wrap&1)||(((c&255)<<8)+(c>>8))%31){n.msg="incorrect header check",t.mode=me;break}if((c&15)!==FC){n.msg="unknown compression method",t.mode=me;break}if(c>>>=4,u-=4,b=(c&15)+8,t.wbits===0)t.wbits=b;else if(b>t.wbits){n.msg="invalid window size",t.mode=me;break}t.dmax=1<<b,n.adler=t.check=1,t.mode=c&512?zC:un,c=0,u=0;break;case MC:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(t.flags=c,(t.flags&255)!==FC){n.msg="unknown compression method",t.mode=me;break}if(t.flags&57344){n.msg="unknown header flags set",t.mode=me;break}t.head&&(t.head.text=c>>8&1),t.flags&512&&(Q[0]=c&255,Q[1]=c>>>8&255,t.check=Jt(t.check,Q,2,0)),c=0,u=0,t.mode=NC;case NC:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}t.head&&(t.head.time=c),t.flags&512&&(Q[0]=c&255,Q[1]=c>>>8&255,Q[2]=c>>>16&255,Q[3]=c>>>24&255,t.check=Jt(t.check,Q,4,0)),c=0,u=0,t.mode=TC;case TC:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}t.head&&(t.head.xflags=c&255,t.head.os=c>>8),t.flags&512&&(Q[0]=c&255,Q[1]=c>>>8&255,t.check=Jt(t.check,Q,2,0)),c=0,u=0,t.mode=PC;case PC:if(t.flags&1024){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}t.length=c,t.head&&(t.head.extra_len=c),t.flags&512&&(Q[0]=c&255,Q[1]=c>>>8&255,t.check=Jt(t.check,Q,2,0)),c=0,u=0}else t.head&&(t.head.extra=null);t.mode=LC;case LC:if(t.flags&1024&&(A=t.length,A>a&&(A=a),A&&(t.head&&(b=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Array(t.head.extra_len)),zn(t.head.extra,r,s,A,b)),t.flags&512&&(t.check=Jt(t.check,r,A,s)),a-=A,s+=A,t.length-=A),t.length))break e;t.length=0,t.mode=OC;case OC:if(t.flags&2048){if(a===0)break e;A=0;do b=r[s+A++],t.head&&b&&t.length<65536&&(t.head.name+=String.fromCharCode(b));while(b&&A<a);if(t.flags&512&&(t.check=Jt(t.check,r,A,s)),a-=A,s+=A,b)break e}else t.head&&(t.head.name=null);t.length=0,t.mode=UC;case UC:if(t.flags&4096){if(a===0)break e;A=0;do b=r[s+A++],t.head&&b&&t.length<65536&&(t.head.comment+=String.fromCharCode(b));while(b&&A<a);if(t.flags&512&&(t.check=Jt(t.check,r,A,s)),a-=A,s+=A,b)break e}else t.head&&(t.head.comment=null);t.mode=GC;case GC:if(t.flags&512){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(t.check&65535)){n.msg="header crc mismatch",t.mode=me;break}c=0,u=0}t.head&&(t.head.hcrc=t.flags>>9&1,t.head.done=!0),n.adler=t.check=0,t.mode=un;break;case zC:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}n.adler=t.check=ty(c),c=0,u=0,t.mode=wc;case wc:if(t.havedict===0)return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,t.hold=c,t.bits=u,z5;n.adler=t.check=1,t.mode=un;case un:case hA:if(t.last){c>>>=u&7,u-=u&7,t.mode=gA;break}for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}switch(t.last=c&1,c>>>=1,u-=1,c&3){case 0:t.mode=HC;break;case 1:X5(t),t.mode=Cc;break;case 2:t.mode=_C;break;case 3:n.msg="invalid block type",t.mode=me}c>>>=2,u-=2;break;case HC:for(c>>>=u&7,u-=u&7;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){n.msg="invalid stored block lengths",t.mode=me;break}t.length=c&65535,c=0,u=0,t.mode=dA;case dA:t.mode=VC;case VC:if(A=t.length,A){if(A>a&&(A=a),A>l&&(A=l),A===0)break e;zn(i,r,s,A,o),a-=A,s+=A,l-=A,o+=A,t.length-=A;break}t.mode=un;break;case _C:for(;u<14;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(t.nlen=(c&31)+257,c>>>=5,u-=5,t.ndist=(c&31)+1,c>>>=5,u-=5,t.ncode=(c&15)+4,c>>>=4,u-=4,t.nlen>286||t.ndist>30){n.msg="too many length or distance symbols",t.mode=me;break}t.have=0,t.mode=YC;case YC:for(;t.have<t.ncode;){for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}t.lens[R[t.have++]]=c&7,c>>>=3,u-=3}for(;t.have<19;)t.lens[R[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,v={bits:t.lenbits},S=lo(U5,t.lens,0,19,t.lencode,0,t.work,v),t.lenbits=v.bits,S){n.msg="invalid code lengths set",t.mode=me;break}t.have=0,t.mode=JC;case JC:for(;t.have<t.nlen+t.ndist;){for(;p=t.lencode[c&(1<<t.lenbits)-1],m=p>>>24,C=p>>>16&255,y=p&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(y<16)c>>>=m,u-=m,t.lens[t.have++]=y;else{if(y===16){for(F=m+2;u<F;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c>>>=m,u-=m,t.have===0){n.msg="invalid bit length repeat",t.mode=me;break}b=t.lens[t.have-1],A=3+(c&3),c>>>=2,u-=2}else if(y===17){for(F=m+3;u<F;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=m,u-=m,b=0,A=3+(c&7),c>>>=3,u-=3}else{for(F=m+7;u<F;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=m,u-=m,b=0,A=11+(c&127),c>>>=7,u-=7}if(t.have+A>t.nlen+t.ndist){n.msg="invalid bit length repeat",t.mode=me;break}for(;A--;)t.lens[t.have++]=b}}if(t.mode===me)break;if(t.lens[256]===0){n.msg="invalid code -- missing end-of-block",t.mode=me;break}if(t.lenbits=9,v={bits:t.lenbits},S=lo(vC,t.lens,0,t.nlen,t.lencode,0,t.work,v),t.lenbits=v.bits,S){n.msg="invalid literal/lengths set",t.mode=me;break}if(t.distbits=6,t.distcode=t.distdyn,v={bits:t.distbits},S=lo(SC,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,v),t.distbits=v.bits,S){n.msg="invalid distances set",t.mode=me;break}t.mode=Cc;case Cc:t.mode=yc;case yc:if(a>=6&&l>=258){n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,t.hold=c,t.bits=u,N5(n,h),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=t.hold,u=t.bits,t.mode===un&&(t.back=-1);break}for(t.back=0;p=t.lencode[c&(1<<t.lenbits)-1],m=p>>>24,C=p>>>16&255,y=p&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(C&&(C&240)===0){for(w=m,E=C,x=y;p=t.lencode[x+((c&(1<<w+E)-1)>>w)],m=p>>>24,C=p>>>16&255,y=p&65535,!(w+m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=w,u-=w,t.back+=w}if(c>>>=m,u-=m,t.back+=m,t.length=y,C===0){t.mode=XC;break}if(C&32){t.back=-1,t.mode=un;break}if(C&64){n.msg="invalid literal/length code",t.mode=me;break}t.extra=C&15,t.mode=qC;case qC:if(t.extra){for(F=t.extra;u<F;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}t.length+=c&(1<<t.extra)-1,c>>>=t.extra,u-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=KC;case KC:for(;p=t.distcode[c&(1<<t.distbits)-1],m=p>>>24,C=p>>>16&255,y=p&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((C&240)===0){for(w=m,E=C,x=y;p=t.distcode[x+((c&(1<<w+E)-1)>>w)],m=p>>>24,C=p>>>16&255,y=p&65535,!(w+m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=w,u-=w,t.back+=w}if(c>>>=m,u-=m,t.back+=m,C&64){n.msg="invalid distance code",t.mode=me;break}t.offset=y,t.extra=C&15,t.mode=jC;case jC:if(t.extra){for(F=t.extra;u<F;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}t.offset+=c&(1<<t.extra)-1,c>>>=t.extra,u-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){n.msg="invalid distance too far back",t.mode=me;break}t.mode=WC;case WC:if(l===0)break e;if(A=h-l,t.offset>A){if(A=t.offset-A,A>t.whave&&t.sane){n.msg="invalid distance too far back",t.mode=me;break}A>t.wnext?(A-=t.wnext,d=t.wsize-A):d=t.wnext-A,A>t.length&&(A=t.length),g=t.window}else g=i,d=o-t.offset,A=t.length;A>l&&(A=l),l-=A,t.length-=A;do i[o++]=g[d++];while(--A);t.length===0&&(t.mode=yc);break;case XC:if(l===0)break e;i[o++]=t.length,l--,t.mode=yc;break;case gA:if(t.wrap){for(;u<32;){if(a===0)break e;a--,c|=r[s++]<<u,u+=8}if(h-=l,n.total_out+=h,t.total+=h,h&&(n.adler=t.check=t.flags?Jt(t.check,i,h,o-h):fA(t.check,i,h,o-h)),h=l,(t.flags?c:ty(c))!==t.check){n.msg="incorrect data check",t.mode=me;break}c=0,u=0}t.mode=ZC;case ZC:if(t.wrap&&t.flags){for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(t.total&4294967295)){n.msg="incorrect length check",t.mode=me;break}c=0,u=0}t.mode=$C;case $C:S=G5;break e;case me:S=DC;break e;case ey:return kC;case V5:default:return Ct}return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,t.hold=c,t.bits=u,(t.wsize||h!==n.avail_out&&t.mode<me&&(t.mode<gA||e!==QC))&&ry(n,n.output,n.next_out,h-n.avail_out),f-=n.avail_in,h-=n.avail_out,n.total_in+=f,n.total_out+=h,t.total+=h,t.wrap&&h&&(n.adler=t.check=t.flags?Jt(t.check,i,h,n.next_out-h):fA(t.check,i,h,n.next_out-h)),n.data_type=t.bits+(t.last?64:0)+(t.mode===un?128:0)+(t.mode===Cc||t.mode===dA?256:0),(f===0&&h===0||e===QC)&&S===Sr&&(S=H5),S}function $5(n){if(!n||!n.state)return Ct;var e=n.state;return e.window&&(e.window=null),n.state=null,Sr}function eN(n,e){var t;return!n||!n.state||(t=n.state,(t.wrap&2)===0)?Ct:(t.head=e,e.done=!1,Sr)}function iy(n,e){var t=e.length,r,i,s;return!n||!n.state||(r=n.state,r.wrap!==0&&r.mode!==wc)?Ct:r.mode===wc&&(i=1,i=fA(i,e,t,0),i!==r.check)?DC:(s=ry(n,e,t,t),s?(r.mode=ey,kC):(r.havedict=1,Sr))}const wA={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function tN(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var CA=Object.prototype.toString;class Ic{constructor(e){if(!(this instanceof Ic))return new Ic(e);this.options=v5({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new tN,this.strm.avail_out=0;var r=W5(this.strm,t.windowBits);if(r!==vr)throw new Error(wA[r]);if(this.header=new F5,eN(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=yC(t.dictionary):CA.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=iy(this.strm,t.dictionary),r!==vr)))throw new Error(wA[r])}push(e,t){var r=this.strm,i=this.options.chunkSize,s=this.options.dictionary,o,a,l,c,u,f,h=!1;if(this.ended)return!1;a=t===~~t?t:t===!0?gc:gC,typeof e=="string"?r.input=Q5(e):CA.call(e)==="[object ArrayBuffer]"?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=bi(i),r.next_out=0,r.avail_out=i),o=Z5(r,gC),o===E5&&s&&(typeof s=="string"?f=yC(s):CA.call(s)==="[object ArrayBuffer]"?f=new Uint8Array(s):f=s,o=iy(this.strm,f)),o===x5&&h===!0&&(o=vr,h=!1),o!==pc&&o!==vr)return this.onEnd(o),this.ended=!0,!1;r.next_out&&(r.avail_out===0||o===pc||r.avail_in===0&&(a===gc||a===pC))&&(this.options.to==="string"?(l=k5(r.output,r.next_out),c=r.next_out-l,u=D5(r.output,l),r.next_out=c,r.avail_out=i-c,c&&zn(r.output,r.output,l,c,0),this.onData(u)):this.onData(mC(r.output,r.next_out))),r.avail_in===0&&r.avail_out===0&&(h=!0)}while((r.avail_in>0||r.avail_out===0)&&o!==pc);return o===pc&&(a=gc),a===gc?(o=$5(this.strm),this.onEnd(o),this.ended=!0,o===vr):(a===pC&&(this.onEnd(vr),r.avail_out=0),!0)}onData(e){this.chunks.push(e)}onEnd(e){e===vr&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=lA(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}}function nN(n,e){var t=new Ic(e);if(t.push(n,!0),t.err)throw t.msg||wA[t.err];return t.result}var rN=nN,Qr={};Qr.d=(n,e)=>{for(var t in e)Qr.o(e,t)&&!Qr.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},Qr.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),Qr.r=n=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var yA={};Qr.r(yA),Qr.d(yA,{ChunkSliceResult:()=>Si,DecompressResult:()=>Qi,__wbg_Error_52673b7de5a0ca89:()=>AN,__wbg___wbindgen_throw_dd24417ed36fc46e:()=>hN,__wbg_set_wasm:()=>sy,decompress_all:()=>uy,decompress_block:()=>fN,decompress_chunk_slice:()=>fy});const iN="data:application/wasm;base64,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fGooAgAiAkF4cSIAaiEDAkACQCACQQFxDQAgAkECcUUNASABKAIAIgIgAGohAAJAIAEgAmsiAUEAKALAoEBHDQAgAygCBEEDcUEDRw0BQQAgADYCuKBAIAMgAygCBEF+cTYCBCABIABBAXI2AgQgAyAANgIADwsgASACEBALAkACQAJAAkACQAJAIAMoAgQiAkECcQ0AIANBACgCxKBARg0CIANBACgCwKBARg0DIAMgAkF4cSICEBAgASACIABqIgBBAXI2AgQgASAAaiAANgIAIAFBACgCwKBARw0BQQAgADYCuKBADwsgAyACQX5xNgIEIAEgAEEBcjYCBCABIABqIAA2AgALIABBgAJJDQIgASAAEBFBACEBQQBBACgC2KBAQX9qIgA2AtigQCAADQQCQEEAKAKgnkAiAEUNAEEAIQEDQCABQQFqIQEgACgCCCIADQALC0EAIAFB/x8gAUH/H0sbNgLYoEAPC0EAIAE2AsSgQEEAQQAoArygQCAAaiIANgK8oEAgASAAQQFyNgIEAkAgAUEAKALAoEBHDQBBAEEANgK4oEBBAEEANgLAoEALIABBACgC0KBAIgRNDQNBACgCxKBAIgBFDQNBACECQQAoArygQCIFQSlJDQJBmJ7AACEBA0ACQCABKAIAIgMgAEsNACAAIAMgASgCBGpJDQQLIAEoAgghAQwACwtBACABNgLAoEBBAEEAKAK4oEAgAGoiADYCuKBAIAEgAEEBcjYCBCABIABqIAA2AgAPCwJAAkBBACgCsKBAIgNBASAAQQN2dCICcQ0AQQAgAyACcjYCsKBAIABB+AFxQaiewABqIgAhAwwBCyAAQfgBcSIDQaiewABqIQAgA0GwnsAAaigCACEDCyAAIAE2AgggAyABNgIMIAEgADYCDCABIAM2AggPCwJAQQAoAqCeQCIBRQ0AQQAhAgNAIAJBAWohAiABKAIIIgENAAsLQQAgAkH/HyACQf8fSxs2AtigQCAFIARNDQBBAEF/NgLQoEALC44FAQd/AkACQCAAKAIIIgNBgICAwAFxRQ0AAkACQAJAAkACQCADQYCAgIABcUUNACAALwEOIgQNAUEAIQIMAgsCQCACQRBJDQAgASACEAYhBQwECwJAIAINAEEAIQJBACEFDAQLIAJBA3EhBgJAAkAgAkEETw0AQQAhBUEAIQcMAQsg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IgJBAWoiAzYCACADRQ0BIAAoAgBBf0YNAiAAKAIQIQAgASACNgIAIAAPCxBdCwALEF8AC1ABAX8CQCACIAAoAgAgACgCCCIDa00NACAAIAMgAkEBQQEQFyAAKAIIIQMLAkAgAkUNACAAKAIEIANqIAEgAvwKAAALIAAgAyACajYCCEEAC0wBAX8CQCAAKAIAIgBBDGooAgAiAUUNACAAQRBqKAIAIAFBARBXCwJAIABBf0YNACAAIAAoAgRBf2oiATYCBCABDQAgAEEcQQQQVwsLRQACQAJAIAFBCUkNACABIAAQDyEBDAELIAAQAiEBCwJAIAFFDQAgAUF8ai0AAEEDcUUNACAARQ0AIAFBACAA/AsACyABC1IBAn9BACEBQQBBACgC6KBAIgJBAWo2AuigQAJAIAJBAEgNAEEBIQFBAC0A5KBADQBBACAAOgDkoEBBAEEAKALgoEBBAWo2AuCgQEECIQELIAELRwECfyABKAIEIQIgASgCACEDEGsCQEEIQQQQWiIBDQBBBEEIEGEACyABIAI2AgQgASADNgIAIABB8JfAADYCBCAAIAE2AgALOAACQAJAIAAgAksNACABIAJLDQEgACABTQ0BIAAgASADECsACyAAIAIgAxAsAAsgASACIAMQLQALQQEBfyMAQSBrIgMkACADQQA2AhAgA0EBNgIEIANCBDcCCCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQQQALOQACQCACQYCAxABGDQAgACACIAEoAhARBQBFDQBBAQ8LAkAgAw0AQQAPCyAAIAMgBCABKAIMEQcACzYBAX8jAEEgayIBJAAgAUEANgIYIAFBATYCDCABQaSZwAA2AgggAUIENwIQIAFBCGogABBBAAsnAAJAIAAgARBPRQ0AAkAgAEUNABBrIAAgARBaIgFFDQELIAEPCwALLAIBfwF+IwBBEGsiASQAIAApAgAhAiABIAA2AgwgASACNwIEIAFBBGoQZgALLQEBfyMAQRBrIgEkACABIAApAgA3AgggAUEIakH0lsAAIAAoAghBAUEAECEACyoBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADIAA2AgQgA0EEahBnAAsqAQF/IwBBEGsiAiQAIAJBATsBDCACIAE2AgggAiAANgIEIAJBBGoQPgALKQEBfwJAIAAoAgAiAUGAgICAeHJBgICAgHhGDQAgACgCBCABQQEQVwsLHgEBfwJAIAAoAgAiAkUNACABIAIgACgCBBBTDwsACyAAAkAgASgCAEUNACAAQfCXwAA2AgQgACABNgIADwsACxsBAX8QayAAQQRqQQQQWiIBIAA2AgAgAUEEagsjAQF/AkBBjIvAABAwIgANAEHAisAAQTpB/IrAABBAAAsgAAsXAAJAIAFBCUkNACABIAAQDw8LIAAQAgsfAAJAIABBgICAgHhyQYCAgIB4Rg0AIAEgAEEBEFcLCxwBAX8CQCAAKAIAIgFFDQAgACgCBCABQQEQVwsLFgACQCAARQ0AIAAgARBhAAsgAhA8AAsVACAAQXxqIgAgACgCAEEEakEEEFcLGgEBfyABIABBACgC3KBAIgJBAyACGxEEAAALHQAgAEEIakEAKQKYlkA3AgAgAEEAKQKQlkA3AgALHQAgAEEIakEAKQKolkA3AgAgAEEAKQKglkA3AgALFQAgAWlBAUYgAEGAgICAeCABa01xCxIAAkAgAUUNACAAIAEgAhBXCwsSACAAIAEgAiADIARBACAFEAMLFQACQCAARQ0AIAAgACgCqFoRAgALCxYAIAAoAgAgASACIAAoAgQoAgwRBwALDQAgACABIAIgAxAHDwsQACABIAAoAgAgACgCBBBTCxMAIABB8JfAADYCBCAAIAE2AgALCwAgACABIAIQLw8LCgAgACABEGoaAAsLACAAIwBqJAAjAAsJACAAIAEQRw8LCQAgACABEDYPCwkAIAAgARBMDwsMAEG4iMAAQRsQXgALCQAgACABEGMACw0AQdOIwABBzwAQXgALDAAgACABKQIANwMACwkAIAEgABBcAAsNACABQdicwABBGBAKCwgAIAAgARAACwgAIAAgARABCwkAIAAoAgAQUgsHACAAECMACwcAIAAQPwALCQAgAEEANgIACwUAQQAPCwUAEGwACwMADwsDAAALC4YdAgBBgIDAAAvwHC9ob21lL2NkaWVzaC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTA2L3NyYy9jb252ZXJ0L3NsaWNlcy5ycwAvaG9tZS9jZGllc2gvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjEwNi9zcmMvZXh0ZXJucmVmLnJzAC9ob21lL2NkaWVzaC8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLXg4Nl82NC11bmtub3duLWxpbnV4LWdudS9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAvaG9tZS9jZGllc2gvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2VkNjFlN2Q3ZTI0MjQ5NGZiNzA1N2YyNjU3MzAwZDllNzdiYjRmY2IvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTAvc3JjL2RsbWFsbG9jLnJzAGxpYnJhcnkvc3RkL3NyYy9hbGxvYy5ycwAvaG9tZS9jZGllc2gvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9saWJkZWZsYXRlci0xLjI1LjAvc3JjL2xpYi5ycwBFARAAdQAAACoCAAARAAAA1QAQAG8AAAC9AQAAHQAAAGF0dGVtcHRlZCB0byB0YWtlIG93bmVyc2hpcCBvZiBSdXN0IHZhbHVlIHdoaWxlIGl0IHdhcyBib3Jyb3dlZAClAhAACgAAAF0AAAAWAAAAaW52YWxpZCBiZ3pmIGhlYWRlcgClAhAACgAAACkAAAAJAAAApQIQAAoAAAAqAAAACQAAAKUCEAAKAAAAKwAAAAkAAAClAhAACgAAACwAAAAJAAAApQIQAAoAAAAwAAAAFgAAAGRlY29tcHJlc3Npb24gZmFpbGVkpQIQAAoAAAAvAAAAHgAAAKUCEAAKAAAApQAAACQAAAClAhAACgAAAKYAAAAkAAAApQIQAAoAAACnAAAAFgAAAKUCEAAKAAAAxQAAABQAAAClAhAACgAAAMYAAAAUAAAApQIQAAoAAADbAAAAGAAAAKUCEAAKAAAA3AAAABgAAAClAhAACgAAANMAAAAxAAAAAAAQAGwAAAAjAQAADgAAAG51bGwgcG9pbnRlciBwYXNzZWQgdG8gcnVzdHJlY3Vyc2l2ZSB1c2Ugb2YgYW4gb2JqZWN0IGRldGVjdGVkIHdoaWNoIHdvdWxkIGxlYWQgdG8gdW5zYWZlIGFsaWFzaW5nIGluIHJ1c3QAAG0AEABnAAAAfwAAABEAAABtABAAZwAAAIwAAAARAAAAbGliZGVmbGF0ZV9kZWZsYXRlX2RlY29tcHJlc3MgcmV0dXJuZWQgYW4gdW5rbm93biBlcnJvciB0eXBlOiB0aGlzIGlzIGFuIGludGVybmFsIGJ1ZyB0aGF0ICoqbXVzdCoqIGJlIGZpeGVkUAIQAF8AAAAMAQAAFQAAAGxpYmRlZmxhdGVfYWxsb2NfZGVjb21wcmVzc29yIHJldHVybmVkIE5VTEw6IG91dCBvZiBtZW1vcnkAAFACEABfAAAAnAAAABEAAAAMAAAAAQAAAAIAAAAAAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAAAAAAAEAAAACAAAAAwAAAAQAAQAFAAEABwACAAkAAgANAAMAEQADABkABAAhAAQAMQAFAEEABQBhAAYAgQAGAMEABwABAQcAgQEIAAECCAABAwkAAQQJAAEGCgABCAoAAQwLAAEQCwABGAwAASAMAAEwDQABQA0AAWANAAFgDQABYAAAAIAAAAGAAAACgAAAA4AAAASAAAAFgAAABoAAAAeAAAAIgAAACYAAAAqAAAALgAAADIAAAA2AAAAOgAAAD4AAABCAAAARgAAAEoAAABOAAAAUgAAAFYAAABaAAAAXgAAAGIAAABmAAAAagAAAG4AAAByAAAAdgAAAHoAAAB+AAAAggAAAIYAAACKAAAAjgAAAJIAAACWAAAAmgAAAJ4AAACiAAAApgAAAKoAAACuAAAAsgAAALYAAAC6AAAAvgAAAMIAAADGAAAAygAAAM4AAADSAAAA1gAAANoAAADeAAAA4gAAAOYAAADqAAAA7gAAAPIAAAD2AAAA+gAAAP4AAAECAAABBgAAAQoAAAEOAAABEgAAARYAAAEaAAABHgAAASIAAAEmAAABKgAAAS4AAAEyAAABNgAAAToAAAE+AAABQgAAAUYAAAFKAAABTgAAAVIAAAFWAAABWgAAAV4AAAFiAAABZgAAAWoAAAFuAAABcgAAAXYAAAF6AAABfgAAAYIAAAGGAAABigAAAY4AAAGSAAABlgAAAZoAAAGeAAABogAAAaYAAAGqAAABrgAAAbIAAAG2AAABugAAAb4AAAHCAAABxgAAAcoAAAHOAAAB0gAAAdYAAAHaAAAB3gAAAeIAAAHmAAAB6gAAAe4AAAHyAAAB9gAAAfoAAAH+AAACAgAAAgYAAAIKAAACDgAAAhIAAAIWAAACGgAAAh4AAAIiAAACJgAAAioAAAIuAAACMgAAAjYAAAI6AAACPgAAAkIAAAJGAAACSgAAAk4AAAJSAAACVgAAAloAAAJeAAACYgAAAmYAAAJqAAACbgAAAnIAAAJ2AAACegAAAn4AAAKCAAAChgAAAooAAAKOAAACkgAAApYAAAKaAAACngAAAqIAAAKmAAACqgAAAq4AAAKyAAACtgAAAroAAAK+AAACwgAAAsYAAALKAAACzgAAAtIAAALWAAAC2gAAAt4AAALiAAAC5gAAAuoAAALuAAAC8gAAAvYAAAL6AAAC/gAAAwIAAAMGAAADCgAAAw4AAAMSAAADFgAAAxoAAAMeAAADIgAAAyYAAAMqAAADLgAAAzIAAAM2AAADOgAAAz4AAANCAAADRgAAA0oAAANOAAADUgAAA1YAAANaAAADXgAAA2IAAANmAAADagAAA24AAANyAAADdgAAA3oAAAN+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAAAO6AAADvgAAA8IAAAPGAAADygAAA84AAAPSAAAD1gAAA9oAAAPeAAAD4gAAA+YAAAPqAAAD7gAAA/IAAAP2AAAD+gAAA/4AAoAAAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgABAAsAAQANAAEADwABABEAAgATAAIAFwACABsAAgAfAAMAIwADACsAAwAzAAMAOwAEAEMABABTAAQAYwAEAHMABQCDAAUAowAFAMMABQDjAAAAAgEAAAIBAAACAW1dy9YsUOtjeEGmV3Ebi7nyfVy2Bv6hO/Xnf5Lkw1AabWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAAAMAsQABUAAABFCxAADQAAADcCEAAYAAAAZAEAAAkAAAAAAAAACAAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAwAAAAEAAAACgAAAAsAAAAMAAAAAAAAAAgAAAAEAAAADQAAAA4AAAAPAAAAEAAAABEAAAAQAAAABAAAABIAAAATAAAAFAAAAAgAAAC7ARAAUAAAACoCAAARAAAAAAAAAAgAAAAEAAAAFQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAAAwCEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAMAhAAKgAAALcEAAANAAAACQAAAAwAAAAEAAAAFgAAAGNhcGFjaXR5IG92ZXJmbG93AAAAkAwQABEAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQEAAAAAAAAAcmFuZ2Ugc3RhcnQgaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIHwNEAASAAAAjg0QACIAAAByYW5nZSBlbmQgaW5kZXggwA0QABAAAACODRAAIgAAAHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgAOANEAAWAAAA9g0QAA0AAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAFA4QACAAAAA0DhAAEgAAAFJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZABB8JzAAAsEBAAAAAApBG5hbWUBIgFZH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIAPAlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMjQuNAx3YXNtLWJpbmRnZW4HMC4yLjEwNg==";let j;function sy(n){j=n}function sN(n){uo===fn.length&&fn.push(fn.length+1);const e=uo;return uo=fn[e],fn[e]=n,e}function oN(n){n<132||(fn[n]=uo,uo=n)}function oy(n,e){return n=n>>>0,aN().subarray(n/4,n/4+e)}function IA(n,e){return n=n>>>0,bA().subarray(n/1,n/1+e)}let vi=null;function Oe(){return(vi===null||vi.buffer.detached===!0||vi.buffer.detached===void 0&&vi.buffer!==j.memory.buffer)&&(vi=new DataView(j.memory.buffer)),vi}function ay(n,e){return n=n>>>0,uN(n,e)}let bc=null;function aN(){return(bc===null||bc.byteLength===0)&&(bc=new Uint32Array(j.memory.buffer)),bc}let Ec=null;function bA(){return(Ec===null||Ec.byteLength===0)&&(Ec=new Uint8Array(j.memory.buffer)),Ec}function cN(n){return fn[n]}let fn=new Array(128).fill(void 0);fn.push(void 0,null,!0,!1);let uo=fn.length;function EA(n,e){const t=e(n.length*1,1)>>>0;return bA().set(n,t/1),Bc=n.length,t}function xA(n){const e=cN(n);return oN(n),e}let xc=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});xc.decode();const lN=2146435072;let BA=0;function uN(n,e){return BA+=e,BA>=lN&&(xc=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),xc.decode(),BA=e),xc.decode(bA().subarray(n,n+e))}let Bc=0;const cy=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>j.__wbg_chunksliceresult_free(n>>>0,1)),ly=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>j.__wbg_decompressresult_free(n>>>0,1));class Si{static __wrap(e){e=e>>>0;const t=Object.create(Si.prototype);return t.__wbg_ptr=e,cy.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,cy.unregister(this),e}free(){const e=this.__destroy_into_raw();j.__wbg_chunksliceresult_free(e,0)}get cpositions(){try{const i=j.__wbindgen_add_to_stack_pointer(-16);j.chunksliceresult_cpositions(i,this.__wbg_ptr);var e=Oe().getInt32(i+0,!0),t=Oe().getInt32(i+4,!0),r=oy(e,t).slice();return j.__wbindgen_export(e,t*4,4),r}finally{j.__wbindgen_add_to_stack_pointer(16)}}get dpositions(){try{const i=j.__wbindgen_add_to_stack_pointer(-16);j.chunksliceresult_dpositions(i,this.__wbg_ptr);var e=Oe().getInt32(i+0,!0),t=Oe().getInt32(i+4,!0),r=oy(e,t).slice();return j.__wbindgen_export(e,t*4,4),r}finally{j.__wbindgen_add_to_stack_pointer(16)}}get buffer(){try{const i=j.__wbindgen_add_to_stack_pointer(-16);j.chunksliceresult_buffer(i,this.__wbg_ptr);var e=Oe().getInt32(i+0,!0),t=Oe().getInt32(i+4,!0),r=IA(e,t).slice();return j.__wbindgen_export(e,t*1,1),r}finally{j.__wbindgen_add_to_stack_pointer(16)}}}Symbol.dispose&&(Si.prototype[Symbol.dispose]=Si.prototype.free);class Qi{static __wrap(e){e=e>>>0;const t=Object.create(Qi.prototype);return t.__wbg_ptr=e,ly.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,ly.unregister(this),e}free(){const e=this.__destroy_into_raw();j.__wbg_decompressresult_free(e,0)}get bytes_read(){return j.decompressresult_bytes_read(this.__wbg_ptr)>>>0}get data(){try{const i=j.__wbindgen_add_to_stack_pointer(-16);j.decompressresult_data(i,this.__wbg_ptr);var e=Oe().getInt32(i+0,!0),t=Oe().getInt32(i+4,!0),r=IA(e,t).slice();return j.__wbindgen_export(e,t*1,1),r}finally{j.__wbindgen_add_to_stack_pointer(16)}}}Symbol.dispose&&(Qi.prototype[Symbol.dispose]=Qi.prototype.free);function uy(n){try{const o=j.__wbindgen_add_to_stack_pointer(-16),a=EA(n,j.__wbindgen_export2),l=Bc;j.decompress_all(o,a,l);var e=Oe().getInt32(o+0,!0),t=Oe().getInt32(o+4,!0),r=Oe().getInt32(o+8,!0),i=Oe().getInt32(o+12,!0);if(i)throw xA(r);var s=IA(e,t).slice();return j.__wbindgen_export(e,t*1,1),s}finally{j.__wbindgen_add_to_stack_pointer(16)}}function fN(n){try{const i=j.__wbindgen_add_to_stack_pointer(-16),s=EA(n,j.__wbindgen_export2),o=Bc;j.decompress_block(i,s,o);var e=Oe().getInt32(i+0,!0),t=Oe().getInt32(i+4,!0),r=Oe().getInt32(i+8,!0);if(r)throw xA(t);return Qi.__wrap(e)}finally{j.__wbindgen_add_to_stack_pointer(16)}}function fy(n,e,t,r,i){try{const l=j.__wbindgen_add_to_stack_pointer(-16),c=EA(n,j.__wbindgen_export2),u=Bc;j.decompress_chunk_slice(l,c,u,e,t,r,i);var s=Oe().getInt32(l+0,!0),o=Oe().getInt32(l+4,!0),a=Oe().getInt32(l+8,!0);if(a)throw xA(o);return Si.__wrap(s)}finally{j.__wbindgen_add_to_stack_pointer(16)}}function AN(n,e){const t=Error(ay(n,e));return sN(t)}function hN(n,e){throw new Error(ay(n,e))}let fo=null,vA=null;async function Ay(){return fo||(vA||(vA=(async()=>{const e=await(await fetch(iN)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":yA});return fo=t.exports,sy(fo),fo})()),vA)}async function dN(n){return await Ay(),uy(n)}async function gN(n,e,t,r,i){await Ay();const s=fy(n,e,t,r,i),o=s.buffer,a=[...s.cpositions],l=[...s.dpositions];return s.free(),{buffer:o,cpositions:a,dpositions:l}}function pN(n){return n.length>=2&&n[0]===31&&n[1]===139}async function mN(n){if(typeof DecompressionStream<"u"){const e=new DecompressionStream("gzip"),t=e.writable.getWriter(),r=t.write(n).then(()=>t.close()),i=[],s=e.readable.getReader();for(;;){const{done:c,value:u}=await s.read();if(c)break;i.push(u)}await r;const o=i.reduce((c,u)=>c+u.length,0),a=new Uint8Array(o);let l=0;for(const c of i)a.set(c,l),l+=c.length;return a}else return rN(n,void 0)}async function Di(n){try{return await dN(n)}catch(e){if(/invalid bgzf header/.exec(`${e}`)){if(pN(n))return mN(n);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}throw/invalid gzip header/.exec(`${e}`)?new Error("problem decompressing block: incorrect gzip header check"):e}}async function hy(n,e,t){try{const{minv:r,maxv:i}=e,s=await gN(n,r.blockPosition,r.dataPosition,i.blockPosition,i.dataPosition);return{buffer:s.buffer,cpositions:s.cpositions,dpositions:s.dpositions}}catch(r){throw/invalid gzip header/.exec(`${r}`)?new Error("problem decompressing block: incorrect gzip header check"):r}}let SA=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array<"u"&&(SA=new Int32Array(SA));const wN=(n,e)=>{let t=-1;for(let r=0;r<n.length;r++)t=SA[(t^n[r])&255]^t>>>8;return t^-1},CN=21582659,yN=38359875;function IN(n,e){return n*2**e}function dy(n,e){return Math.floor(n/2**e)}let vc=class extends hC{constructor(){super(...arguments),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t){return(await this.parse(t)).indices(e)?.stats?.lineCount||0}async indexCov(){return[]}parseAuxData(e,t){const r=new DataView(e.buffer),i=r.getUint32(t,!0),s=i&65536?"zero-based-half-open":"1-based-closed",o={0:"generic",1:"SAM",2:"VCF"}[i&15];if(!o)throw new Error(`invalid Tabix preset format flags ${i}`);const a={ref:r.getInt32(t+4,!0),start:r.getInt32(t+8,!0),end:r.getInt32(t+12,!0)},l=r.getInt32(t+16,!0),c=l?String.fromCharCode(l):"",u=r.getInt32(t+20,!0),f=r.getInt32(t+24,!0);return{columnNumbers:a,coordinateType:s,metaValue:l,metaChar:c,skipLines:u,format:o,formatFlags:i,...d5(e.subarray(t+28,t+28+f),this.renameRefSeq)}}async _parse(e){const t=await this.filehandle.readFile(e),r=await Di(t),i=new DataView(r.buffer);let s;const o=i.getUint32(0,!0);if(o===CN)s=1;else if(o===yN)s=2;else throw new Error(`Not a CSI file ${o}`);this.minShift=i.getInt32(4,!0),this.depth=i.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;const a=this.maxBinNumber,l=i.getInt32(12,!0),c=l>=30?this.parseAuxData(r,16):void 0,u=i.getInt32(16+l,!0);let f=16+l+4,h;const A=[];for(let p=0;p<u;p++){A.push(f);const m=i.getInt32(f,!0);f+=4;for(let C=0;C<m;C++){const y=i.getUint32(f,!0);if(f+=4,y>this.maxBinNumber)f+=44;else{f+=8;const w=i.getInt32(f,!0);f+=4;for(let E=0;E<w;E+=1){const x=Gn(r,f);f+=8,f+=8,h=oo(h,x)}}}}const d=new so({maxSize:5});function g(p){let m=A[p];if(m===void 0)return;const C=i.getInt32(m,!0);m+=4;const y={};let w;for(let E=0;E<C;E++){const x=i.getUint32(m,!0);if(m+=4,x>a)w=AC(r,m+28),m+=44;else{h=oo(h,Gn(r,m)),m+=8;const b=i.getInt32(m,!0);m+=4;const S=new Array(b);for(let Q=0;Q<b;Q+=1){const v=Gn(r,m);m+=8;const F=Gn(r,m);m+=8,S[Q]=new uC(v,F,x)}y[x]=S}}return{binIndex:y,stats:w}}return{csiVersion:s,firstDataLine:h,indices:p=>{if(!d.has(p)){const m=g(p);return m&&d.set(p,m),m}return d.get(p)},refCount:u,csi:!0,maxBlockSize:65536,...c}}async blocksForRange(e,t,r,i={}){t<0&&(t=0);const o=(await this.parse(i)).indices(e);if(!o)return[];const a=this.reg2bins(t,r);if(a.length===0)return[];const l=[],{binIndex:c}=o;for(const[u,f]of a)for(let h=u;h<=f;h++){const A=c[h];if(A)for(let d=0,g=A.length;d<g;d++)l.push(A[d])}return cA(l,new dC(0,0))}reg2bins(e,t){e-=1,e<1&&(e=1),t>2**50&&(t=2**34),t-=1;let r=0,i=0,s=this.minShift+this.depth*3;const o=[];for(;r<=this.depth;s-=3,i+=IN(1,r*3),r+=1){const a=i+dy(e,s),l=i+dy(t,s);if(l-a+o.length>this.maxBinNumber)throw new Error(`query ${e}-${t} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);o.push([a,l])}return o}async parse(e={}){return this.setupP||(this.setupP=this._parse(e).catch(t=>{throw this.setupP=void 0,t})),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}};class bN{read(){throw new Error("never called")}stat(){throw new Error("never called")}readFile(){throw new Error("never called")}close(){throw new Error("never called")}}const EN=3,xN=4,yt={BAM_FPAIRED:1,BAM_FPROPER_PAIR:2,BAM_FUNMAP:4,BAM_FMUNMAP:8,BAM_FREVERSE:16,BAM_FMREVERSE:32,BAM_FREAD1:64,BAM_FREAD2:128,BAM_FSECONDARY:256,BAM_FQCFAIL:512,BAM_FDUP:1024,BAM_FSUPPLEMENTARY:2048},Ao="=ACMGRSVTWYHKDBN".split(""),BN=[77,73,68,78,83,72,80,61,88,63,63,63,63,63,63,63],gy=461;class py{constructor(e){this.bytes=e.bytes,this.fileOffset=e.fileOffset,this._dataView=new DataView(this.bytes.byteArray.buffer)}get byteArray(){return this.bytes.byteArray}get flags(){return this._cachedFlags===void 0&&(this._cachedFlags=(this._dataView.getInt32(this.bytes.start+16,!0)&4294901760)>>16),this._cachedFlags}get ref_id(){return this._cachedRefId===void 0&&(this._cachedRefId=this._dataView.getInt32(this.bytes.start+4,!0)),this._cachedRefId}get start(){return this._cachedStart===void 0&&(this._cachedStart=this._dataView.getInt32(this.bytes.start+8,!0)),this._cachedStart}get end(){return this._cachedEnd===void 0&&(this._cachedEnd=this.start+this.length_on_ref),this._cachedEnd}get mq(){const e=(this.bin_mq_nl&65280)>>8;return e===255?void 0:e}get score(){return this.mq}get qual(){if(this.isSegmentUnmapped())return null;{const e=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes;return this.byteArray.subarray(e,e+this.seq_length)}}get strand(){return this.isReverseComplemented()?-1:1}get b0(){return this.bytes.start+36}get tagsStart(){return this._cachedTagsStart===void 0&&(this._cachedTagsStart=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes+this.seq_length),this._cachedTagsStart}get name(){const e=this.read_name_length-1,t=this.b0,r=this.byteArray,i=new Array(e);for(let s=0;s<e;s++)i[s]=r[t+s];return String.fromCharCode(...i)}get NUMERIC_MD(){if(this._cachedNUMERIC_MD===void 0){const e=this.getTagRaw("MD");this._cachedNUMERIC_MD=e instanceof Uint8Array?e:null}return this._cachedNUMERIC_MD===null?void 0:this._cachedNUMERIC_MD}get tags(){return this._cachedTags===void 0&&(this._cachedTags=this._computeTags()),this._cachedTags}getTag(e){return this._cachedTags!==void 0?this._cachedTags[e]:this._findTag(e,!1)}getTagRaw(e){return this._findTag(e,!0)}_findTag(e,t){const r=e.charCodeAt(0),i=e.charCodeAt(1);let s=this.tagsStart;const o=this.bytes.end,a=this.byteArray;for(;s<o;){const l=a[s],c=a[s+1],u=a[s+2];s+=3;const f=l===r&&c===i;switch(u){case 65:if(f)return String.fromCharCode(a[s]);s+=1;break;case 105:if(f)return this._dataView.getInt32(s,!0);s+=4;break;case 73:if(f)return this._dataView.getUint32(s,!0);s+=4;break;case 99:if(f)return this._dataView.getInt8(s);s+=1;break;case 67:if(f)return this._dataView.getUint8(s);s+=1;break;case 115:if(f)return this._dataView.getInt16(s,!0);s+=2;break;case 83:if(f)return this._dataView.getUint16(s,!0);s+=2;break;case 102:if(f)return this._dataView.getFloat32(s,!0);s+=4;break;case 90:case 72:{if(f){const h=s;for(;s<o&&a[s]!==0;)s++;if(t)return a.subarray(h,s);const A=[];for(let d=h;d<s;d++)A.push(String.fromCharCode(a[d]));return A.join("")}for(;s<=o&&a[s++]!==0;);break}case 66:{const h=a[s++],A=this._dataView.getInt32(s,!0);s+=4;const d=a.byteOffset+s;if(f)if(h===105){if(d%4===0)return new Int32Array(a.buffer,d,A);const g=new Array(A);for(let p=0;p<A;p++)g[p]=this._dataView.getInt32(s+p*4,!0);return g}else if(h===73){if(d%4===0)return new Uint32Array(a.buffer,d,A);const g=new Array(A);for(let p=0;p<A;p++)g[p]=this._dataView.getUint32(s+p*4,!0);return g}else if(h===115){if(d%2===0)return new Int16Array(a.buffer,d,A);const g=new Array(A);for(let p=0;p<A;p++)g[p]=this._dataView.getInt16(s+p*2,!0);return g}else if(h===83){if(d%2===0)return new Uint16Array(a.buffer,d,A);const g=new Array(A);for(let p=0;p<A;p++)g[p]=this._dataView.getUint16(s+p*2,!0);return g}else{if(h===99)return new Int8Array(a.buffer,d,A);if(h===67)return new Uint8Array(a.buffer,d,A);if(h===102){if(d%4===0)return new Float32Array(a.buffer,d,A);const g=new Array(A);for(let p=0;p<A;p++)g[p]=this._dataView.getFloat32(s+p*4,!0);return g}}h===105||h===73||h===102?s+=A<<2:h===115||h===83?s+=A<<1:(h===99||h===67)&&(s+=A);break}}}}_computeTags(){let e=this.tagsStart;const t=this.bytes.end,r=this.byteArray,i={};for(;e<t;){const s=String.fromCharCode(r[e],r[e+1]),o=r[e+2];switch(e+=3,o){case 65:i[s]=String.fromCharCode(r[e]),e+=1;break;case 105:i[s]=this._dataView.getInt32(e,!0),e+=4;break;case 73:i[s]=this._dataView.getUint32(e,!0),e+=4;break;case 99:i[s]=this._dataView.getInt8(e),e+=1;break;case 67:i[s]=this._dataView.getUint8(e),e+=1;break;case 115:i[s]=this._dataView.getInt16(e,!0),e+=2;break;case 83:i[s]=this._dataView.getUint16(e,!0),e+=2;break;case 102:i[s]=this._dataView.getFloat32(e,!0),e+=4;break;case 90:case 72:{const a=[];for(;e<=t;){const l=r[e++];if(l!==0)a.push(String.fromCharCode(l));else break}i[s]=a.join("");break}case 66:{const a=r[e++],l=this._dataView.getInt32(e,!0);e+=4;const c=r.byteOffset+e;if(a===105){if(c%4===0)i[s]=new Int32Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getInt32(e+f*4,!0);i[s]=u}e+=l<<2}else if(a===73){if(c%4===0)i[s]=new Uint32Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getUint32(e+f*4,!0);i[s]=u}e+=l<<2}else if(a===115){if(c%2===0)i[s]=new Int16Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getInt16(e+f*2,!0);i[s]=u}e+=l<<1}else if(a===83){if(c%2===0)i[s]=new Uint16Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getUint16(e+f*2,!0);i[s]=u}e+=l<<1}else if(a===99)i[s]=new Int8Array(r.buffer,c,l),e+=l;else if(a===67)i[s]=new Uint8Array(r.buffer,c,l),e+=l;else if(a===102){if(c%4===0)i[s]=new Float32Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getFloat32(e+f*4,!0);i[s]=u}e+=l<<2}break}default:console.error("Unknown BAM tag type",o);break}}return i}isPaired(){return!!(this.flags&yt.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&yt.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&yt.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&yt.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&yt.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&yt.BAM_FMREVERSE)}isRead1(){return!!(this.flags&yt.BAM_FREAD1)}isRead2(){return!!(this.flags&yt.BAM_FREAD2)}isSecondary(){return!!(this.flags&yt.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&yt.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&yt.BAM_FDUP)}isSupplementary(){return!!(this.flags&yt.BAM_FSUPPLEMENTARY)}get cigarAndLength(){return this._cachedCigarAndLength===void 0&&(this._cachedCigarAndLength=this._computeCigarAndLength()),this._cachedCigarAndLength}_computeCigarAndLength(){if(this.isSegmentUnmapped())return{length_on_ref:0,NUMERIC_CIGAR:new Uint32Array(0)};const e=this.num_cigar_ops;let t=this.b0+this.read_name_length;const r=this._dataView.getInt32(t,!0),i=r>>4;if((r&15)===xN&&i===this.seq_length){t+=4;const u=this._dataView.getInt32(t,!0),f=u>>4;return(u&15)!==EN&&console.warn("CG tag with no N tag"),{NUMERIC_CIGAR:this.tags.CG,length_on_ref:f}}const o=this.byteArray.byteOffset+t;if(o%4===0&&e>50){const u=new Uint32Array(this.byteArray.buffer,o,e);let f=0;for(let h=0;h<e;++h){const A=u[h];f+=(A>>4)*(gy>>(A&15)&1)}return{NUMERIC_CIGAR:u,length_on_ref:f}}const l=new Array(e);let c=0;for(let u=0;u<e;++u){const f=this._dataView.getInt32(t+u*4,!0)|0;l[u]=f,c+=(f>>4)*(gy>>(f&15)&1)}return{NUMERIC_CIGAR:l,length_on_ref:c}}get length_on_ref(){return this.cigarAndLength.length_on_ref}get NUMERIC_CIGAR(){return this.cigarAndLength.NUMERIC_CIGAR}get CIGAR(){const e=this.NUMERIC_CIGAR;let t="";for(let r=0,i=e.length;r<i;r++){const s=e[r],o=s>>4,a=BN[s&15];t+=o+String.fromCharCode(a)}return t}get num_cigar_ops(){return this.flag_nc&65535}get num_cigar_bytes(){return this.num_cigar_ops<<2}get read_name_length(){return this.bin_mq_nl&255}get num_seq_bytes(){return this.seq_length+1>>1}get NUMERIC_SEQ(){const e=this.b0+this.read_name_length+this.num_cigar_bytes;return this.byteArray.subarray(e,e+this.num_seq_bytes)}get seq(){const e=this.NUMERIC_SEQ,t=this.seq_length,r=new Array(t);let i=0;const s=t>>1;for(let o=0;o<s;++o){const a=e[o];r[i++]=Ao[(a&240)>>4],r[i++]=Ao[a&15]}if(i<t){const o=e[s];r[i]=Ao[(o&240)>>4]}return r.join("")}get pair_orientation(){if(!this.isSegmentUnmapped()&&!this.isMateUnmapped()&&this.ref_id===this.next_refid){const e=this.isReverseComplemented()?"R":"F",t=this.isMateReverseComplemented()?"R":"F";let r=" ",i=" ";return this.isRead1()?(r="1",i="2"):this.isRead2()&&(r="2",i="1"),this.template_length>0?`${e}${r}${t}${i}`:`${t}${i}${e}${r}`}}get bin_mq_nl(){return this._dataView.getInt32(this.bytes.start+12,!0)}get flag_nc(){return this._dataView.getInt32(this.bytes.start+16,!0)}get seq_length(){return this._dataView.getInt32(this.bytes.start+20,!0)}get next_refid(){return this._dataView.getInt32(this.bytes.start+24,!0)}get next_pos(){return this._dataView.getInt32(this.bytes.start+28,!0)}get template_length(){return this._dataView.getInt32(this.bytes.start+32,!0)}seqAt(e){if(e<this.seq_length){const t=e>>1,r=this.byteArray[this.b0+this.read_name_length+this.num_cigar_bytes+t];return e%2===0?Ao[(r&240)>>4]:Ao[r&15]}else return}toJSON(){const e={};for(const t of Object.keys(this))t.startsWith("_")||t==="bytes"||(e[t]=this[t]);return e}}function my(n){const e=n.split(/\r?\n/),t=[];for(const r of e){const[i,...s]=r.split(/\t/);i&&t.push({tag:i.slice(1),data:s.map(o=>{const a=o.indexOf(":"),l=o.slice(0,a),c=o.slice(a+1);return{tag:l,value:c}})})}return t}const wy=21840194,vN=65536;class Cy{constructor({bamFilehandle:e,bamPath:t,bamUrl:r,baiPath:i,baiFilehandle:s,baiUrl:o,csiPath:a,csiFilehandle:l,csiUrl:c,htsget:u,renameRefSeqs:f=A=>A,recordClass:h}){if(this.htsget=!1,this.chunkFeatureCache=new so({maxSize:100}),this.renameRefSeq=f,this.RecordClass=h??py,e)this.bam=e;else if(t)this.bam=new We(t);else if(r)this.bam=new _t(r);else if(u)this.htsget=!0,this.bam=new bN;else throw new Error("unable to initialize bam");if(l)this.index=new vc({filehandle:l});else if(a)this.index=new vc({filehandle:new We(a)});else if(c)this.index=new vc({filehandle:new _t(c)});else if(s)this.index=new yi({filehandle:s});else if(i)this.index=new yi({filehandle:new We(i)});else if(o)this.index=new yi({filehandle:new _t(o)});else if(t)this.index=new yi({filehandle:new We(`${t}.bai`)});else if(r)this.index=new yi({filehandle:new _t(`${r}.bai`)});else if(u)this.htsget=!0;else throw new Error("unable to infer index format")}async getHeaderPre(e){const t=h5(e);if(!this.index)return;const r=await this.index.parse(t),i=r.firstDataLine===void 0?await this.bam.readFile():await this.bam.read(r.firstDataLine.blockPosition+vN,0),s=await Di(i),o=new DataView(s.buffer);if(o.getInt32(0,!0)!==wy)throw new Error("Not a BAM file");const a=o.getInt32(4,!0),l=new TextDecoder("utf8");this.header=l.decode(s.subarray(8,8+a));const{chrToIndex:c,indexToChr:u}=this._parseRefSeqs(s,a+8);return this.chrToIndex=c,this.indexToChr=u,my(this.header)}getHeader(e){return this.headerP||(this.headerP=this.getHeaderPre(e).catch(t=>{throw this.headerP=void 0,t})),this.headerP}async getHeaderText(e={}){return await this.getHeader(e),this.header}_parseRefSeqs(e,t){const r=new DataView(e.buffer),i=r.getInt32(t,!0);let s=t+4;const o={},a=[],l=new TextDecoder("utf8");for(let c=0;c<i;c+=1){if(s+8>e.length)throw new Error(`Insufficient data for reference sequences: need more than ${e.length} bytes`);const u=r.getInt32(s,!0),f=this.renameRefSeq(l.decode(e.subarray(s+4,s+4+u-1))),h=r.getInt32(s+u+4,!0);o[f]=c,a.push({refName:f,length:h}),s=s+8+u}return{chrToIndex:o,indexToChr:a}}async getRecordsForRange(e,t,r,i){await this.getHeader(i);const s=this.chrToIndex?.[e];if(s===void 0||!this.index)return[];const o=await this.index.blocksForRange(s,t-1,r,i);return this._fetchChunkFeaturesDirect(o,s,t,r,i)}chunkCacheKey(e,t){const{minv:r,maxv:i}=e;return`${r.blockPosition}:${r.dataPosition}-${i.blockPosition}:${i.dataPosition}${w5(t)}`}blocksOverlap(e,t,r,i){return e<=i&&t>=r}evictOverlappingChunks(e,t){for(const[r,i]of this.chunkFeatureCache)this.blocksOverlap(e,t,i.minBlock,i.maxBlock)&&this.chunkFeatureCache.delete(r)}async _fetchChunkFeaturesDirect(e,t,r,i,s={}){const{viewAsPairs:o,filterBy:a}=s,{flagInclude:l=0,flagExclude:c=0,tagFilter:u}=a||{},f=[];for(let h=0,A=e.length;h<A;h++){const d=e[h],g=this.chunkCacheKey(d,a),p=d.minv.blockPosition,m=d.maxv.blockPosition;let C;const y=this.chunkFeatureCache.get(g);if(y)C=y.features;else{this.evictOverlappingChunks(p,m);const{data:E,cpositions:x,dpositions:b}=await this._readChunk({chunk:d,opts:s}),S=await this.readBamFeatures(E,x,b,d);if(a){C=[];for(let Q=0,v=S.length;Q<v;Q++){const F=S[Q];p5(F.flags,l,c)||u&&m5(F.tags[u.tag],u.value)||C.push(F)}}else C=S;this.chunkFeatureCache.set(g,{minBlock:p,maxBlock:m,features:C})}let w=!1;for(let E=0,x=C.length;E<x;E++){const b=C[E];if(b.ref_id===t)if(b.start>=i){w=!0;break}else b.end>=r&&f.push(b)}if(w)break}if(o){const h=await this.fetchPairs(t,f,s);for(let A=0,d=h.length;A<d;A++)f.push(h[A])}return f}async fetchPairs(e,t,r){const{pairAcrossChr:i,maxInsertSize:s=2e5}=r,o={},a={};for(let h=0,A=t.length;h<A;h++){const d=t[h],g=d.name;o[g]=(o[g]||0)+1,a[d.fileOffset]=1}const l=[];for(let h=0,A=t.length;h<A;h++){const d=t[h],g=d.name;this.index&&o[g]===1&&(i||d.next_refid===e&&Math.abs(d.start-d.next_pos)<s)&&l.push(this.index.blocksForRange(d.next_refid,d.next_pos,d.next_pos+1,r))}const c=new Map,u=await Promise.all(l);for(let h=0,A=u.length;h<A;h++){const d=u[h];for(let g=0,p=d.length;g<p;g++){const m=d[g],C=m.toString();c.has(C)||c.set(C,m)}}return(await Promise.all([...c.values()].map(async h=>{const{data:A,cpositions:d,dpositions:g,chunk:p}=await this._readChunk({chunk:h,opts:r}),m=[],C=await this.readBamFeatures(A,d,g,p);for(let y=0,w=C.length;y<w;y++){const E=C[y];o[E.name]===1&&!a[E.fileOffset]&&m.push(E)}return m}))).flat()}async _readChunk({chunk:e,opts:t}){const r=await this.bam.read(e.fetchedSize(),e.minv.blockPosition,t),{buffer:i,cpositions:s,dpositions:o}=await hy(r,e);return{data:i,cpositions:s,dpositions:o,chunk:e}}async readBamFeatures(e,t,r,i){let s=0;const o=[];let a=0;const l=new DataView(e.buffer),c=r.length>0,u=t.length>0;for(;s+4<e.length;){const f=l.getInt32(s,!0),h=s+4+f-1;if(c){for(;s+i.minv.dataPosition>=r[a++];);a--}if(h<e.length){const A=new this.RecordClass({bytes:{byteArray:e,start:s,end:h},fileOffset:u?t[a]*256+(s-r[a])+i.minv.dataPosition+1:wN(e.subarray(s,h))>>>0});o.push(A)}s=h+1}return o}async hasRefSeq(e){const t=this.chrToIndex?.[e];return t===void 0?!1:this.index?.hasRefSeq(t)}async lineCount(e){const t=this.chrToIndex?.[e];return t===void 0||!this.index?0:this.index.lineCount(t)}async indexCov(e,t,r){if(!this.index)return[];await this.index.parse();const i=this.chrToIndex?.[e];return i===void 0?[]:this.index.indexCov(i,t,r)}async blocksForRange(e,t,r,i){if(!this.index)return[];await this.index.parse();const s=this.chrToIndex?.[e];return s===void 0?[]:this.index.blocksForRange(s,t,r,i)}clearFeatureCache(){this.chunkFeatureCache.clear()}async estimatedBytesForRegions(e,t){if(!this.index)return 0;if(await this.getHeader(t),!this.chrToIndex)throw new Error("Header not yet parsed");return this.index.estimatedBytesForRegions(e.map(r=>{const i=this.chrToIndex[r.refName];if(i===void 0)throw new Error(`Unknown reference name: ${r.refName}`);return{refId:i,start:r.start,end:r.end}}),t)}}async function yy(n,e){const t=await Promise.all(n.map(async r=>{const{url:i,headers:s}=r;if(i.startsWith("data:")){const o=await fetch(i);if(!o.ok)throw new Error("failed to decode base64");const a=await o.arrayBuffer();return new Uint8Array(a)}else{const{referer:o,...a}=s,l=await fetch(i,{...e,headers:{...e?.headers,...a}});if(!l.ok)throw new Error(`HTTP ${l.status} fetching ${i}: ${await l.text()}`);return new Uint8Array(await l.arrayBuffer())}}));return g5(await Promise.all(t.map(r=>Di(r))))}class SN extends Cy{constructor(e){super({htsget:!0,recordClass:e.recordClass}),this.baseUrl=e.baseUrl,this.trackId=e.trackId}async getRecordsForRange(e,t,r,i){const o=`${`${this.baseUrl}/${this.trackId}`}?referenceName=${e}&start=${t}&end=${r}&format=BAM`,a=this.chrToIndex?.[e];if(a===void 0)return[];const l=await fetch(o,{...i});if(!l.ok)throw new Error(`HTTP ${l.status} fetching ${o}: ${await l.text()}`);const c=await l.json(),u=await yy(c.htsget.urls.slice(1),i),f=await this.readBamFeatures(u,[],[],{minv:{dataPosition:0,blockPosition:0},maxv:{dataPosition:0,blockPosition:0}}),h=[];for(let A=0,d=f.length;A<d;A++){const g=f[A];if(g.ref_id===a){if(g.start>=r)break;g.end>=t&&h.push(g)}}return h}async getHeader(e={}){const t=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,r=await fetch(t,e);if(!r.ok)throw new Error(`HTTP ${r.status} fetching ${t}: ${await r.text()}`);const i=await r.json(),s=await yy(i.htsget.urls,e),o=new DataView(s.buffer);if(o.getInt32(0,!0)!==wy)throw new Error("Not a BAM file");const a=o.getInt32(4,!0),c=new TextDecoder("utf8").decode(s.subarray(8,8+a)),u=my(c),f=[],h={},A=u.filter(d=>d.tag==="SQ");for(const[d,g]of A.entries()){let p="",m=0;for(const C of g.data)C.tag==="SN"?p=C.value:C.tag==="LN"&&(m=+C.value);h[p]=d,f[d]={refName:p,length:m}}return this.chrToIndex=h,this.indexToChr=f,u}}const QN=Object.freeze(Object.defineProperty({__proto__:null,BAI:yi,BamFile:Cy,BamRecord:py,CSI:vc,HtsgetFile:SN},Symbol.toStringTag,{value:"Module"}));class Sc{constructor(e,t,r,i){this.minv=e,this.maxv=t,this.bin=r,this._fetchedSize=i}toUniqueString(){return`${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(e){return this.minv.compareTo(e.minv)||this.maxv.compareTo(e.maxv)||this.bin-e.bin}fetchedSize(){return this._fetchedSize!==void 0?this._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}}class Iy{constructor({filehandle:e,renameRefSeqs:t=r=>r}){this.filehandle=e,this.renameRefSeq=t}async getMetadata(e={}){const{indices:t,...r}=await this.parse(e);return r}_findFirstData(e,t){return e?e.compareTo(t)>0?t:e:t}async parse(e={}){return this.parseP||(this.parseP=this._parse(e).catch(t=>{throw this.parseP=void 0,t})),this.parseP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices[e]?.binIndex}_parseNameBytes(e){let t=0,r=0;const i=[],s={},o=new TextDecoder("utf8");for(let a=0;a<e.length;a+=1)if(!e[a]){if(r<a){const l=this.renameRefSeq(o.decode(e.subarray(r,a)));i[t]=l,s[l]=t}r=a+1,t+=1}return{refNameToId:s,refIdToName:i}}}const by=65536,DN=by*by;function Ey(n,e=0){const t=n[e]|n[e+1]<<8|n[e+2]<<16|n[e+3]<<24;return((n[e+4]|n[e+5]<<8|n[e+6]<<16|n[e+7]<<24)>>>0)*DN+(t>>>0)}function kN(n,e){return e.minv.blockPosition-n.maxv.blockPosition<65e3&&e.maxv.blockPosition-n.minv.blockPosition<5e6}function xy(n,e){const t=[];let r;if(n.length===0)return n;n.sort(function(i,s){const o=i.minv.blockPosition-s.minv.blockPosition;return o===0?i.minv.dataPosition-s.minv.dataPosition:o});for(const i of n)(!e||i.maxv.compareTo(e)>0)&&(r===void 0?(t.push(i),r=i):kN(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(t.push(i),r=i));return t}class QA{constructor(e,t){this.blockPosition=e,this.dataPosition=t}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}}function ki(n,e=0){return new QA(n[e+7]*1099511627776+n[e+6]*4294967296+n[e+5]*16777216+n[e+4]*65536+n[e+3]*256+n[e+2],n[e+1]<<8|n[e])}const FN=21582659,RN=38359875,MN={0:"generic",1:"SAM",2:"VCF"};function NN(n,e){return n*2**e}function By(n,e){return Math.floor(n/2**e)}class Qc extends Iy{constructor(e){super(e),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t={}){const r=await this.parse(t),i=r.refNameToId[e];if(i===void 0||!r.indices[i])return-1;const{stats:o}=r.indices[i];return o?o.lineCount:-1}indexCov(){throw new Error("CSI indexes do not support indexcov")}parseAuxData(e,t){const r=new DataView(e.buffer),i=r.getInt32(t,!0),s=i&65536?"zero-based-half-open":"1-based-closed",o=MN[i&15];if(!o)throw new Error(`invalid Tabix preset format flags ${i}`);const a={ref:r.getInt32(t+4,!0),start:r.getInt32(t+8,!0),end:r.getInt32(t+12,!0)},l=r.getInt32(t+16,!0),c=l?String.fromCharCode(l):void 0,u=r.getInt32(t+20,!0),f=r.getInt32(t+24,!0),{refIdToName:h,refNameToId:A}=this._parseNameBytes(e.subarray(t+28,t+28+f));return{refIdToName:h,refNameToId:A,skipLines:u,metaChar:c,columnNumbers:a,format:o,coordinateType:s}}async _parse(e={}){const t=await Di(await this.filehandle.readFile(e)),r=new DataView(t.buffer);let i;if(r.getUint32(0,!0)===FN)i=1;else if(r.getUint32(0,!0)===RN)i=2;else throw new Error("Not a CSI file");this.minShift=r.getInt32(4,!0),this.depth=r.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;const s=2**(this.minShift+this.depth*3),o=r.getInt32(12,!0),a=o&&o>=30?this.parseAuxData(t,16):{refIdToName:[],refNameToId:{},metaChar:void 0,columnNumbers:{ref:0,start:1,end:2},coordinateType:"zero-based-half-open",format:"generic"},l=r.getInt32(16+o,!0);let c,u=16+o+4;const f=new Array(l).fill(0).map(()=>{const h=r.getInt32(u,!0);u+=4;const A={};let d;for(let g=0;g<h;g+=1){const p=r.getUint32(u,!0);if(p>this.maxBinNumber)d=this.parsePseudoBin(t,u+4),u+=48;else{const m=ki(t,u+4);c=this._findFirstData(c,m);const C=r.getInt32(u+12,!0);u+=16;const y=new Array(C);for(let w=0;w<C;w+=1){const E=ki(t,u),x=ki(t,u+8);u+=16,y[w]=new Sc(E,x,p)}A[p]=y}}return{binIndex:A,stats:d}});return{...a,csi:!0,refCount:l,maxBlockSize:65536,firstDataLine:c,csiVersion:i,indices:f,depth:this.depth,maxBinNumber:this.maxBinNumber,maxRefLength:s}}parsePseudoBin(e,t){return{lineCount:Ey(e,t+28)}}async blocksForRange(e,t,r,i={}){t<0&&(t=0);const s=await this.parse(i),o=s.refNameToId[e];if(o===void 0)return[];const a=s.indices[o];if(!a)return[];const l=this.reg2bins(t,r),c=[];for(const[u,f]of l)for(let h=u;h<=f;h++)if(a.binIndex[h])for(const A of a.binIndex[h])c.push(new Sc(A.minv,A.maxv,h));return xy(c,new QA(0,0))}reg2bins(e,t){e-=1,e<1&&(e=1),t>2**50&&(t=2**34),t-=1;let r=0,i=0,s=this.minShift+this.depth*3;const o=[];for(;r<=this.depth;s-=3,i+=NN(1,r*3),r+=1){const a=i+By(e,s),l=i+By(t,s);if(l-a+o.length>this.maxBinNumber)throw new Error(`query ${e}-${t} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);o.push([a,l])}return o}}const TN=21578324,vy=14;function PN(n,e){return n+=1,e-=1,[[0,0],[1+(n>>26),1+(e>>26)],[9+(n>>23),9+(e>>23)],[73+(n>>20),73+(e>>20)],[585+(n>>17),585+(e>>17)],[4681+(n>>14),4681+(e>>14)]]}class Fi extends Iy{async lineCount(e,t={}){const r=await this.parse(t),i=r.refNameToId[e];return i===void 0||!r.indices[i]?-1:r.indices[i].stats?.lineCount??-1}async _parse(e={}){const t=await this.filehandle.readFile(e),r=await Di(t),i=new DataView(r.buffer);if(i.getUint32(0,!0)!==TN)throw new Error("Not a TBI file");const o=i.getUint32(4,!0),a=i.getUint32(8,!0),l=a&65536?"zero-based-half-open":"1-based-closed",u={0:"generic",1:"SAM",2:"VCF"}[a&15];if(!u)throw new Error(`invalid Tabix preset format flags ${a}`);const f={ref:i.getInt32(12,!0),start:i.getInt32(16,!0),end:i.getInt32(20,!0)},h=i.getInt32(24,!0),A=5,d=((1<<(A+1)*3)-1)/7,g=2**(14+A*3),p=h?String.fromCharCode(h):void 0,m=i.getInt32(28,!0),C=i.getInt32(32,!0),{refNameToId:y,refIdToName:w}=this._parseNameBytes(r.slice(36,36+C));let E=36+C,x;return{indices:new Array(o).fill(0).map(()=>{const S=i.getInt32(E,!0);E+=4;const Q={};let v;for(let N=0;N<S;N+=1){const O=i.getUint32(E,!0);if(E+=4,O>d+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(O===d+1){const H=i.getInt32(E,!0);E+=4,H===2&&(v=this.parsePseudoBin(r,E)),E+=16*H}else{const H=i.getInt32(E,!0);E+=4;const G=new Array(H);for(let _=0;_<H;_+=1){const te=ki(r,E),oe=ki(r,E+8);E+=16,x=this._findFirstData(x,te),G[_]=new Sc(te,oe,O)}Q[O]=G}}const F=i.getInt32(E,!0);E+=4;const R=new Array(F);for(let N=0;N<F;N+=1)R[N]=ki(r,E),E+=8,x=this._findFirstData(x,R[N]);return{binIndex:Q,linearIndex:R,stats:v}}),metaChar:p,maxBinNumber:d,maxRefLength:g,skipLines:m,firstDataLine:x,columnNumbers:f,coordinateType:l,format:u,refIdToName:w,refNameToId:y,maxBlockSize:65536}}parsePseudoBin(e,t){return{lineCount:Ey(e,t+16)}}async blocksForRange(e,t,r,i={}){t<0&&(t=0);const s=await this.parse(i),o=s.refNameToId[e];if(o===void 0)return[];const a=s.indices[o];if(!a)return[];(a.linearIndex.length>0?a.linearIndex[t>>vy>=a.linearIndex.length?a.linearIndex.length-1:t>>vy]:new QA(0,0))||console.warn("querying outside of possible tabix range");const c=PN(t,r),u=[];for(const[g,p]of c)for(let m=g;m<=p;m++)if(a.binIndex[m])for(const C of a.binIndex[m])u.push(new Sc(C.minv,C.maxv,m));const f=a.linearIndex.length;let h;const A=Math.min(t>>14,f-1),d=Math.min(r>>14,f-1);for(let g=A;g<=d;++g){const p=a.linearIndex[g];p&&(!h||p.compareTo(h)<0)&&(h=p)}return xy(u,h)}}class LN{constructor({path:e,filehandle:t,url:r,tbiPath:i,tbiUrl:s,tbiFilehandle:o,csiPath:a,csiUrl:l,csiFilehandle:c,renameRefSeqs:u,chunkCacheSize:f=5*2**20}){this.cache=new so({maxSize:1e3});const h=u??(A=>A);if(t)this.filehandle=t;else if(e)this.filehandle=new We(e);else if(r)this.filehandle=new _t(r);else throw new TypeError("must provide either filehandle or path");if(o)this.index=new Fi({filehandle:o,renameRefSeqs:h});else if(c)this.index=new Qc({filehandle:c,renameRefSeqs:h});else if(i)this.index=new Fi({filehandle:new We(i),renameRefSeqs:h});else if(a)this.index=new Qc({filehandle:new We(a),renameRefSeqs:h});else if(e)this.index=new Fi({filehandle:new We(`${e}.tbi`),renameRefSeqs:h});else if(l)this.index=new Qc({filehandle:new _t(l)});else if(s)this.index=new Fi({filehandle:new _t(s)});else if(r)this.index=new Fi({filehandle:new _t(`${r}.tbi`)});else throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl");this.renameRefSeq=h,this.hasCustomRenameRefSeq=u!==void 0,this.chunkCache=new pi({cache:new so({maxSize:Math.floor(f/65536)}),fill:(A,d)=>this.readChunk(A,{signal:d})})}calculateFileOffset(e,t,r,i,s){return e[r]*256+(i-t[r])+s+1}async getLines(e,t,r,i){let s,o={},a;typeof i=="function"?a=i:(o=i,a=i.lineCallback,s=i.signal);const l=await this.index.getMetadata(o),c=t??0,u=r??l.maxRefLength;if(!(c<=u))throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(c===u)return;const f=await this.index.blocksForRange(e,c,u,o),h=new TextDecoder("utf8"),A=l.format==="VCF",d={ref:l.columnNumbers.ref||0,start:l.columnNumbers.start||0,end:A?8:l.columnNumbers.end||0},g=Math.max(d.ref,d.start,d.end),p=l.metaChar?.charCodeAt(0),m=l.coordinateType==="1-based-closed"?-1:0,C=!this.hasCustomRenameRefSeq;for(const y of f){const{buffer:w,cpositions:E,dpositions:x}=await this.chunkCache.get(y.toString(),y,s);let b=0,S=0;const Q=h.decode(w);if(w.length==Q.length)for(;b<Q.length;){const F=Q.indexOf(`
822
+ `,b);if(F===-1)break;const R=Q.slice(b,F);if(x){const O=b+y.minv.dataPosition;for(;S<x.length&&O>=x[S];)S++}const N=this.checkLine(e,c,u,R,d.ref,d.start,d.end,g,p,m,A,C);if(N===null)return;N!==void 0&&a(R,this.calculateFileOffset(E,x,S,b,y.minv.dataPosition),N.start,N.end),b=F+1}else for(;b<w.length;){const F=w.indexOf(10,b);if(F===-1)break;const R=w.slice(b,F),N=h.decode(R);if(x){const H=b+y.minv.dataPosition;for(;S<x.length&&H>=x[S];)S++}const O=this.checkLine(e,c,u,N,d.ref,d.start,d.end,g,p,m,A,C);if(O===null)return;O!==void 0&&a(N,this.calculateFileOffset(E,x,S,b,y.minv.dataPosition),O.start,O.end),b=F+1}}}async getMetadata(e={}){return this.index.getMetadata(e)}async getHeaderBuffer(e={}){const{firstDataLine:t,metaChar:r,maxBlockSize:i}=await this.getMetadata(e),s=(t?.blockPosition||0)+i,o=await this.filehandle.read(s,0,e),a=await Di(o);if(r){let l=-1;const c=10,u=r.charCodeAt(0);for(let f=0,h=a.length;f<h;f++){const A=a[f];if(f===l+1&&A!==u)break;A===c&&(l=f)}return a.subarray(0,l+1)}return a}async getHeader(e={}){const t=new TextDecoder("utf8"),r=await this.getHeaderBuffer(e);return t.decode(r)}async getReferenceSequenceNames(e={}){return(await this.getMetadata(e)).refIdToName}checkLine(e,t,r,i,s,o,a,l,c,u,f,h){if(c!==void 0&&i.charCodeAt(0)===c)return;if(i.length<500){const y=i.split(" "),w=y[s-1];if(!(h?w===e:this.renameRefSeq(w)===e))return;const x=+y[o-1]+u;if(x>=r)return null;let b;return a===0||a===o?b=x+1:f?b=this._getVcfEnd(x,y[3],y[a-1]):b=+y[a-1],b<=t?void 0:{start:x,end:b}}let A=-1;const d=[-1];for(let y=0;y<l;y++){const w=i.indexOf(" ",A+1);if(w===-1){d.push(i.length);break}d.push(w),A=w}const g=i.slice(d[s-1]+1,d[s]);if(!(h?g===e:this.renameRefSeq(g)===e))return;const m=+i.slice(d[o-1]+1,d[o])+u;if(m>=r)return null;let C;if(a===0||a===o?C=m+1:f?C=this._getVcfEnd(m,i.slice(d[3]+1,d[4]),i.slice(d[a-1]+1,d[a])):C=+i.slice(d[a-1]+1,d[a]),!(C<=t))return{start:m,end:C}}_getVcfEnd(e,t,r){let i=e+t.length;if(r.includes("SVTYPE=TRA"))return e+1;if(r[0]!=="."){const o=r.indexOf("END=");if(o!==-1&&(o===0||r[o-1]===";")){const a=o+4;let l=r.indexOf(";",a);l===-1&&(l=r.length),i=Number.parseInt(r.slice(a,l),10)}}return i}async lineCount(e,t={}){return this.index.lineCount(e,t)}async readChunk(e,t={}){const r=await this.filehandle.read(e.fetchedSize(),e.minv.blockPosition,t);return hy(r,e,this.cache)}}const ON=Object.freeze(Object.defineProperty({__proto__:null,CSI:Qc,TBI:Fi,TabixIndexedFile:LN},Symbol.toStringTag,{value:"Module"})),UN=/%([0-9A-Fa-f]{2})/g,GN=/^\s*##\s*(\S+)\s*(.*)/,zN=/\r?\n$/,Sy=/\s+/,Qy=/\D/g;function Dc(n){return n.includes("%")?n.replaceAll(UN,(e,t)=>String.fromCharCode(parseInt(t,16))):n}function HN(n){if(!n.length||n===".")return{};const e={};let t=n;t.endsWith(`
823
+ `)&&(t=t.slice(0,t.endsWith(`\r
824
+ `)?-2:-1));for(const r of t.split(";")){const i=r.indexOf("=");if(i===-1)continue;const s=r.slice(i+1);if(!s.length)continue;const o=r.slice(0,i).trim();let a=e[o];a||(a=[],e[o]=a);for(const l of s.split(","))a.push(Dc(l.trim()))}return e}function VN(n){if(!n.length||n===".")return{};const e={};let t=n;t.endsWith(`
825
+ `)&&(t=t.slice(0,t.endsWith(`\r
826
+ `)?-2:-1));for(const r of t.split(";")){const i=r.indexOf("=");if(i===-1)continue;const s=r.slice(i+1);if(!s.length)continue;const o=r.slice(0,i).trim();let a=e[o];a||(a=[],e[o]=a);for(const l of s.split(","))a.push(l.trim())}return e}function _N(n){return DA(n.split(" "))}function Ue(n){return n==="."||n===""||n===void 0?null:n}function DA(n){const e=Ue(n[0]),t=Ue(n[1]),r=Ue(n[2]),i=Ue(n[3]),s=Ue(n[4]),o=Ue(n[5]),a=Ue(n[6]),l=Ue(n[7]),c=Ue(n[8]);return{seq_id:e?Dc(e):null,source:t?Dc(t):null,type:r?Dc(r):null,start:i===null?null:parseInt(i,10),end:s===null?null:parseInt(s,10),score:o===null?null:parseFloat(o),strand:a,phase:l,attributes:c===null?null:HN(c)}}function YN(n){const e=Ue(n[0]),t=Ue(n[1]),r=Ue(n[2]),i=Ue(n[3]),s=Ue(n[4]),o=Ue(n[5]),a=Ue(n[6]),l=Ue(n[7]),c=Ue(n[8]);return{seq_id:e,source:t,type:r,start:i===null?null:parseInt(i,10),end:s===null?null:parseInt(s,10),score:o===null?null:parseFloat(o),strand:a,phase:l,attributes:c===null?null:VN(c)}}function JN(n){const e=GN.exec(n);if(!e)return null;const[,t]=e;let[,,r]=e;const i={directive:t};if(r.length&&(r=r.replace(zN,""),i.value=r),t==="sequence-region"){const s=r.split(Sy,3);return{...i,seq_id:s[0],start:s[1]?.replaceAll(Qy,""),end:s[2]?.replaceAll(Qy,"")}}else if(t==="genome-build"){const[s,o]=r.split(Sy,2);return{...i,source:s,buildName:o}}return i}const qN=/^\s*[^#\s>]/,KN=/^\s*(#+)(.*)/,jN=/^\s*$/,WN=/^\s*>/,XN=/\r?\n?$/g;class kc{featureCallback;endCallback;commentCallback;errorCallback;disableDerivesFromReferences;directiveCallback;bufferSize;eof=!1;lineNumber=0;_underConstructionTopLevel=[];_underConstructionById={};_completedReferences={};_underConstructionOrphans={};constructor(e){const t=()=>{};this.featureCallback=e.featureCallback||t,this.endCallback=e.endCallback||t,this.commentCallback=e.commentCallback||t,this.errorCallback=e.errorCallback||t,this.directiveCallback=e.directiveCallback||t,this.disableDerivesFromReferences=e.disableDerivesFromReferences||!1,this.bufferSize=e.bufferSize===void 0?1/0:e.bufferSize}addLine(e){if(this.eof)return;if(this.lineNumber+=1,qN.test(e)){this._bufferLine(e);return}const t=KN.exec(e);if(t){const[,r]=t;let[,,i]=t;if(r.length===3)this._emitAllUnderConstructionFeatures();else if(r.length===2){const s=JN(e);s&&(s.directive==="FASTA"?(this._emitAllUnderConstructionFeatures(),this.eof=!0):this._emitItem(s))}else this._emitItem({comment:i.trimStart()})}else if(!jN.test(e))if(WN.test(e))this._emitAllUnderConstructionFeatures(),this.eof=!0;else{const r=e.replaceAll(XN,"");throw new Error(`GFF3 parse error. Cannot parse '${r}'.`)}}addParsedFeatureLine(e){this.eof||(this.lineNumber+=1,this._bufferParsedLine(e))}finish(){this._emitAllUnderConstructionFeatures(),this.endCallback()}_emitItem(e){Array.isArray(e)?this.featureCallback(e):"directive"in e?this.directiveCallback(e):"comment"in e&&this.commentCallback(e)}_enforceBufferSizeLimit(e=0){const t=r=>{r&&Array.isArray(r)&&r[0].attributes?.ID?.[0]&&(r[0].attributes.ID.forEach(s=>{delete this._underConstructionById[s],delete this._completedReferences[s]}),r.forEach(s=>{s.child_features&&s.child_features.forEach(o=>{t(o)}),s.derived_features&&s.derived_features.forEach(o=>{t(o)})}))};for(;this._underConstructionTopLevel.length+e>this.bufferSize;){const r=this._underConstructionTopLevel.shift();r&&(this._emitItem(r),t(r))}}_emitAllUnderConstructionFeatures(){this._underConstructionTopLevel.forEach(this._emitItem.bind(this)),this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={};const e=Object.keys(this._underConstructionOrphans);if(e.length)throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${e.join(",")}`)}_bufferLine(e){this._bufferParsedLine(_N(e))}_bufferParsedLine(e){const t=e;t.child_features=[],t.derived_features=[];const r=t.attributes?.ID||[],i=t.attributes?.Parent||[],s=this.disableDerivesFromReferences?[]:t.attributes?.Derives_from||[];if(!r.length&&!i.length&&!s.length){this._emitItem([t]);return}let o;r.forEach(a=>{const l=this._underConstructionById[a];l?(l[l.length-1].type!==t.type&&this._parseError(`multi-line feature "${a}" has inconsistent types: "${t.type}", "${l[l.length-1].type}"`),l.push(t),o=l):(o=[t],this._enforceBufferSizeLimit(1),!i.length&&!s.length&&this._underConstructionTopLevel.push(o),this._underConstructionById[a]=o,this._resolveReferencesTo(o,a))}),this._resolveReferencesFrom(o||[t],{Parent:i,Derives_from:s},r)}_resolveReferencesTo(e,t){const r=this._underConstructionOrphans[t];if(r){for(const i of e)i.child_features.push(...r.Parent),i.derived_features.push(...r.Derives_from);delete this._underConstructionOrphans[t]}}_parseError(e){this.eof=!0,this.errorCallback(`${this.lineNumber}: ${e}`)}_resolveReferencesFrom(e,t,r){for(const i of t.Parent){const s=this._underConstructionById[i];if(s){let o=!1;for(const a of r){const l=`Parent,${i}`,c=this._completedReferences[a]||(this._completedReferences[a]={});c[l]&&(o=!0),c[l]=!0}if(!o)for(const a of s)a.child_features.push(e)}else{let o=this._underConstructionOrphans[i];o||(o={Parent:[],Derives_from:[]},this._underConstructionOrphans[i]=o),o.Parent.push(e)}}for(const i of t.Derives_from){const s=this._underConstructionById[i];if(s){let o=!1;for(const a of r){const l=`Derives_from,${i}`,c=this._completedReferences[a]||(this._completedReferences[a]={});c[l]&&(o=!0),c[l]=!0}if(!o)for(const a of s)a.derived_features.push(e)}else{let o=this._underConstructionOrphans[i];o||(o={Parent:[],Derives_from:[]},this._underConstructionOrphans[i]=o),o.Derives_from.push(e)}}}}function ZN(n){const e=[],t=new kc({featureCallback:r=>e.push(r),disableDerivesFromReferences:!0,errorCallback:r=>{throw new Error(r)}});for(const r of n.split(/\r?\n/))t.addLine(r);return t.finish(),e}function $N(n){const e=[],t=new kc({featureCallback:r=>e.push(r),disableDerivesFromReferences:!0,errorCallback:r=>{throw new Error(r)}});for(const r of n)t.addLine(r);return t.finish(),e}function e9(n){const e=[],t=new kc({featureCallback:r=>e.push(r),disableDerivesFromReferences:!0,errorCallback:r=>{throw new Error(r)}});for(const r of n){const i=DA(r.fields);r.lineHash!==void 0&&(i.attributes||(i.attributes={}),i.attributes._lineHash=[String(r.lineHash)]),t.addParsedFeatureLine(i)}return t.finish(),e}function t9(n,e){const t=[],r=new kc({featureCallback:s=>t.push(s),disableDerivesFromReferences:!0,errorCallback:s=>{throw new Error(s)}}),i=e?DA:YN;for(const s of n){const o=i(s.fields);s.lineHash!==void 0&&(o.attributes||(o.attributes={}),o.attributes._lineHash=[String(s.lineHash)]),r.addParsedFeatureLine(o)}return r.finish(),t}const n9=Object.freeze(Object.defineProperty({__proto__:null,parseArraySync:$N,parseRecordsSync:e9,parseRecordsSyncFast:t9,parseStringSync:ZN},Symbol.toStringTag,{value:"Module"}));function r9(n,e,t){const r=Object.create(null),i=t.length,s=e.length,o=9,a=58;let l=0;if(n==="GT"){for(let f=0;f<i;f++){const h=l;for(;l<s&&e.charCodeAt(l)!==o;)l++;r[t[f]]=e.slice(h,l),l++}return r}const c=n.indexOf("GT");if(c===-1)return r;if(c===0){for(let f=0;f<i;f++){const h=l;for(;l<s&&e.charCodeAt(l)!==a&&e.charCodeAt(l)!==o;)l++;for(r[t[f]]=e.slice(h,l);l<s&&e.charCodeAt(l)!==o;)l++;l++}return r}let u=0;for(let f=0;f<c;f++)n.charCodeAt(f)===a&&u++;for(let f=0;f<i;f++){const h=l;let A=l;for(;A<s&&e.charCodeAt(A)!==o;)A++;let d=0,g=h;for(let p=h;p<=A;p++)if(p===A||e.charCodeAt(p)===a){if(d===u){r[t[f]]=e.slice(g,p);break}d++,g=p+1}l=A+1}return r}function i9(n){const e=[],t=[];let r=!1,i=!1;const s=n.length;for(let o=0;o<s;o++){const a=n[o];a==='"'?(r=!r,t.push(a)):a==="["?(i=!0,t.push(a)):a==="]"?(i=!1,t.push(a)):a===","&&!r&&!i?(e.push(t.join("").trim()),t.length=0):t.push(a)}return t.length>0&&e.push(t.join("").trim()),e}function s9(n,e){const t=n.indexOf(e);return[n.slice(0,t),n.slice(t+1)]}function o9(n){const e=n.slice(1,-1),t=i9(e),r=[];for(let i=0;i<t.length;i++){const s=t[i],[o,a]=s9(s,"=");if(a&&a.startsWith("[")&&a.endsWith("]")){const l=a.slice(1,-1).split(",");for(let c=0;c<l.length;c++)l[c]=l[c].trim();r.push([o,l])}else a&&a.startsWith('"')&&a.endsWith('"')?r.push([o,a.slice(1,-1)]):r.push([o,a])}return Object.fromEntries(r)}const Fc={InfoFields:{AA:{Number:1,Type:"String",Description:"Ancestral allele"},AC:{Number:"A",Type:"Integer",Description:"Allele count in genotypes, for each ALT allele, in the same order as listed"},AD:{Number:"R",Type:"Integer",Description:"Total read depth for each allele"},ADF:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the forward strand"},ADR:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the reverse strand"},AF:{Number:"A",Type:"Float",Description:"Allele frequency for each ALT allele in the same order as listed (estimated from primary data, not called genotypes)"},AN:{Number:1,Type:"Integer",Description:"Total number of alleles in called genotypes"},BQ:{Number:1,Type:"Float",Description:"RMS base quality"},CIGAR:{Number:1,Type:"Float",Description:"Cigar string describing how to align an alternate allele to the reference allele"},DB:{Number:0,Type:"Flag",Description:"dbSNP membership"},DP:{Number:1,Type:"Integer",Description:"combined depth across samples"},END:{Number:1,Type:"Integer",Description:"End position (for use with symbolic alleles)"},H2:{Number:0,Type:"Flag",Description:"HapMap2 membership"},H3:{Number:0,Type:"Flag",Description:"HapMap3 membership"},MQ:{Number:1,Type:null,Description:"RMS mapping quality"},MQ0:{Number:1,Type:"Integer",Description:"Number of MAPQ == 0 reads"},NS:{Number:1,Type:"Integer",Description:"Number of samples with data"},SB:{Number:4,Type:"Integer",Description:"Strand bias"},SOMATIC:{Number:0,Type:"Flag",Description:"Somatic mutation (for cancer genomics)"},VALIDATED:{Number:0,Type:"Flag",Description:"Validated by follow-up experiment"},"1000G":{Number:0,Type:"Flag",Description:"1000 Genomes membership"},IMPRECISE:{Number:0,Type:"Flag",Description:"Imprecise structural variation"},NOVEL:{Number:0,Type:"Flag",Description:"Indicates a novel structural variation"},SVTYPE:{Number:1,Type:"String",Description:"Type of structural variant"},SVLEN:{Number:null,Type:"Integer",Description:"Difference in length between REF and ALT alleles"},CIPOS:{Number:2,Type:"Integer",Description:"Confidence interval around POS for imprecise variants"},CIEND:{Number:2,Type:"Integer",Description:"Confidence interval around END for imprecise variants"},HOMLEN:{Type:"Integer",Description:"Length of base pair identical micro-homology at event breakpoints"},HOMSEQ:{Type:"String",Description:"Sequence of base pair identical micro-homology at event breakpoints"},BKPTID:{Type:"String",Description:"ID of the assembled alternate allele in the assembly file"},MEINFO:{Number:4,Type:"String",Description:"Mobile element info of the form NAME,START,END,POLARITY"},METRANS:{Number:4,Type:"String",Description:"Mobile element transduction info of the form CHR,START,END,POLARITY"},DGVID:{Number:1,Type:"String",Description:"ID of this element in Database of Genomic Variation"},DBVARID:{Number:1,Type:"String",Description:"ID of this element in DBVAR"},DBRIPID:{Number:1,Type:"String",Description:"ID of this element in DBRIP"},MATEID:{Number:null,Type:"String",Description:"ID of mate breakends"},PARID:{Number:1,Type:"String",Description:"ID of partner breakend"},EVENT:{Number:1,Type:"String",Description:"ID of event associated to breakend"},CILEN:{Number:2,Type:"Integer",Description:"Confidence interval around the inserted material between breakend"},DPADJ:{Type:"Integer",Description:"Read Depth of adjacency"},CN:{Number:1,Type:"Integer",Description:"Copy number of segment containing breakend"},CNADJ:{Number:null,Type:"Integer",Description:"Copy number of adjacency"},CICN:{Number:2,Type:"Integer",Description:"Confidence interval around copy number for the segment"},CICNADJ:{Number:null,Type:"Integer",Description:"Confidence interval around copy number for the adjacency"}},GenotypeFields:{AD:{Number:"R",Type:"Integer",Description:"Read depth for each allele"},ADF:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the forward strand"},ADR:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the reverse strand"},DP:{Number:1,Type:"Integer",Description:"Read depth"},EC:{Number:"A",Type:"Integer",Description:"Expected alternate allele counts"},FT:{Number:1,Type:"String",Description:'Filter indicating if this genotype was "called"'},GL:{Number:"G",Type:"Float",Description:"Genotype likelihoods"},GP:{Number:"G",Type:"Float",Description:"Genotype posterior probabilities"},GQ:{Number:1,Type:"Integer",Description:"Conditional genotype quality"},GT:{Number:1,Type:"String",Description:"Genotype"},HQ:{Number:2,Type:"Integer",Description:"Haplotype quality"},MQ:{Number:1,Type:"Integer",Description:"RMS mapping quality"},PL:{Number:"G",Type:"Integer",Description:"Phred-scaled genotype likelihoods rounded to the closest integer"},PQ:{Number:1,Type:"Integer",Description:"Phasing quality"},PS:{Number:1,Type:"Integer",Description:"Phase set"}},AltTypes:{DEL:{Description:"Deletion relative to the reference"},INS:{Description:"Insertion of novel sequence relative to the reference"},DUP:{Description:"Region of elevated copy number relative to the reference"},INV:{Description:"Inversion of reference sequence"},CNV:{Description:"Copy number variable region (may be both deletion and duplication)"},"DUP:TANDEM":{Description:"Tandem duplication"},"DEL:ME":{Description:"Deletion of mobile element relative to the reference"},"INS:ME":{Description:"Insertion of a mobile element relative to the reference"},NON_REF:{Description:"Represents any possible alternative allele at this location"},"*":{Description:"Represents any possible alternative allele at this location"}},FilterTypes:{PASS:{Description:"Passed all filters"}}};function a9(n){try{return decodeURIComponent(n)}catch{return n}}class c9{constructor({header:e="",strict:t=!0}){if(!e.length)throw new Error("empty header received");const r=e.split(/[\r\n]+/).filter(Boolean);if(!r.length)throw new Error("no non-empty header lines specified");this.strict=t,this.metadata={INFO:{...Fc.InfoFields},FORMAT:{...Fc.GenotypeFields},ALT:{...Fc.AltTypes},FILTER:{...Fc.FilterTypes}};let i;for(let l=0;l<r.length;l++){const c=r[l];if(c.startsWith("#"))c.startsWith("##")?this.parseMetadata(c):i=c;else throw new Error(`Bad line in header:
869
827
  ${c}`)}if(!i)throw new Error("No format line found in header");const s=i.trim().split(" "),o=s.slice(0,8),a=["#CHROM","POS","ID","REF","ALT","QUAL","FILTER","INFO"];if(s.length<8)throw new Error(`VCF header missing columns:
870
828
  ${i}`);if(o.length!==a.length||!o.every((l,c)=>l===a[c]))throw new Error(`VCF column headers not correct:
871
- ${i}`);this.samples=s.slice(9)}parseInfo(t){var a;const e={},r=t.includes("%"),i=t.split(";"),s=this.metadata.INFO,o=i.length;for(let l=0;l<o;l++){const c=i[l],u=c.indexOf("="),f=u===-1?c:c.slice(0,u),h=u===-1?void 0:c.slice(u+1),A=(a=s[f])==null?void 0:a.Type;if(A==="Flag")e[f]=!0;else if(!h)e[f]=!0;else{const d=A==="Integer"||A==="Float",p=h.split(","),C=p.length;if(r){const m=[];for(let y=0;y<C;y++){const I=p[y];if(I===".")m.push(void 0);else{const w=nU(I);m.push(d?Number(w):w)}}e[f]=m}else{const m=[];for(let y=0;y<C;y++){const I=p[y];I==="."?m.push(void 0):m.push(d?Number(I):I)}e[f]=m}}}return e}parseSamples(t,e){var i;const r={};if(t){const s=e.split(" "),o=t.split(":"),a=this.metadata.FORMAT,l=[];for(let f=0;f<o.length;f++){const h=(i=a[o[f]])==null?void 0:i.Type;l.push(h==="Integer"||h==="Float")}const c=o.length,u=this.samples.length;for(let f=0;f<u;f++){const h=this.samples[f],A={},d=s[f],p=d.length;let C=0,m=0;for(let y=0;y<=p;y++)if(y===p||d[y]===":"){const I=d.slice(C,y);if(I===""||I===".")A[o[m]]=void 0;else{const w=I.split(","),x=[];if(l[m])for(let B=0;B<w.length;B++){const E=w[B];x.push(E==="."?void 0:+E)}else for(let B=0;B<w.length;B++){const E=w[B];x.push(E==="."?void 0:E)}A[o[m]]=x}if(C=y+1,m+=1,m>=c)break}r[h]=A}}return r}parseMetadata(t){const e=/^##(.+?)=(.*)/.exec(t.trim());if(!e)throw new Error(`Line is not a valid metadata line: ${t}`);const[r,i]=e.slice(1,3),s=r;if(i!=null&&i.startsWith("<")){s in this.metadata||(this.metadata[s]={});const[o,a]=this.parseStructuredMetaVal(i);o?this.metadata[s][o]=a:this.metadata[s]=a}else this.metadata[s]=i}parseStructuredMetaVal(t){const e=tU(t),r=e.ID;return delete e.ID,"Number"in e&&(Number.isNaN(Number(e.Number))||(e.Number=Number(e.Number))),[r,e]}getMetadata(...t){let e=this.metadata;const r=t.length;for(let i=0;i<r;i++)if(e=e[t[i]],!e)return e;return e}parseLine(t){let e=0,r=0;for(;e<t.length&&r<9;)t[e]===" "&&(r+=1),e+=1;const i=r===9?e-1:e,s=t.slice(0,i).split(" "),o=t.slice(i+1),[a,l,c,u,f,h,A]=s,d=a,p=+l,C=c==="."?void 0:c.split(";"),m=u,y=f==="."?void 0:f.split(","),I=h==="."?void 0:+h,w=A==="."?void 0:A.split(";"),x=s[8];if(this.strict&&!s[7])throw new Error("no INFO field specified, must contain at least a '.' (turn off strict mode to allow)");const B=s[7]===void 0||s[7]==="."?{}:this.parseInfo(s[7]);return{CHROM:d,POS:p,ALT:y,INFO:B,REF:m,FILTER:(w==null?void 0:w.length)===1&&w[0]==="PASS"?"PASS":w,ID:C,QUAL:I,FORMAT:x,SAMPLES:()=>this.parseSamples(s[8]??"",o),GENOTYPES:()=>ZO(s[8]??"",o,this.samples)}}}const iU=Object.freeze(Object.defineProperty({__proto__:null,default:rU},Symbol.toStringTag,{value:"Module"}));te.GenomeSpy=UI,te.embed=aP,te.favIcon=oP,te.html=me,te.icon=sP,te.loadSpec=GI,Object.defineProperty(te,Symbol.toStringTag,{value:"Module"})}));
829
+ ${i}`);this.samples=s.slice(9)}parseInfo(e){const t={},r=e.includes("%"),i=e.split(";"),s=this.metadata.INFO,o=i.length;for(let a=0;a<o;a++){const l=i[a],c=l.indexOf("="),u=c===-1?l:l.slice(0,c),f=c===-1?void 0:l.slice(c+1),h=s[u]?.Type;if(h==="Flag")t[u]=!0;else if(!f)t[u]=!0;else{const A=h==="Integer"||h==="Float",d=f.split(","),g=d.length;if(r){const p=[];for(let m=0;m<g;m++){const C=d[m];if(C===".")p.push(void 0);else{const y=a9(C);p.push(A?Number(y):y)}}t[u]=p}else{const p=[];for(let m=0;m<g;m++){const C=d[m];C==="."?p.push(void 0):p.push(A?Number(C):C)}t[u]=p}}}return t}parseSamples(e,t){const r={};if(e){const i=t.split(" "),s=e.split(":"),o=this.metadata.FORMAT,a=[];for(let u=0;u<s.length;u++){const f=o[s[u]]?.Type;a.push(f==="Integer"||f==="Float")}const l=s.length,c=this.samples.length;for(let u=0;u<c;u++){const f=this.samples[u],h={},A=i[u],d=A.length;let g=0,p=0;for(let m=0;m<=d;m++)if(m===d||A[m]===":"){const C=A.slice(g,m);if(C===""||C===".")h[s[p]]=void 0;else{const y=C.split(","),w=[];if(a[p])for(let E=0;E<y.length;E++){const x=y[E];w.push(x==="."?void 0:+x)}else for(let E=0;E<y.length;E++){const x=y[E];w.push(x==="."?void 0:x)}h[s[p]]=w}if(g=m+1,p+=1,p>=l)break}r[f]=h}}return r}parseMetadata(e){const t=/^##(.+?)=(.*)/.exec(e.trim());if(!t)throw new Error(`Line is not a valid metadata line: ${e}`);const[r,i]=t.slice(1,3),s=r;if(i?.startsWith("<")){s in this.metadata||(this.metadata[s]={});const[o,a]=this.parseStructuredMetaVal(i);o?this.metadata[s][o]=a:this.metadata[s]=a}else this.metadata[s]=i}parseStructuredMetaVal(e){const t=o9(e),r=t.ID;return delete t.ID,"Number"in t&&(Number.isNaN(Number(t.Number))||(t.Number=Number(t.Number))),[r,t]}getMetadata(...e){let t=this.metadata;const r=e.length;for(let i=0;i<r;i++)if(t=t[e[i]],!t)return t;return t}parseLine(e){let t=0,r=0;for(;t<e.length&&r<9;)e[t]===" "&&(r+=1),t+=1;const i=r===9?t-1:t,s=e.slice(0,i).split(" "),o=e.slice(i+1),[a,l,c,u,f,h,A]=s,d=a,g=+l,p=c==="."?void 0:c.split(";"),m=u,C=f==="."?void 0:f.split(","),y=h==="."?void 0:+h,w=A==="."?void 0:A.split(";"),E=s[8];if(this.strict&&!s[7])throw new Error("no INFO field specified, must contain at least a '.' (turn off strict mode to allow)");const x=s[7]===void 0||s[7]==="."?{}:this.parseInfo(s[7]);return{CHROM:d,POS:g,ALT:C,INFO:x,REF:m,FILTER:w?.length===1&&w[0]==="PASS"?"PASS":w,ID:p,QUAL:y,FORMAT:E,SAMPLES:()=>this.parseSamples(s[8]??"",o),GENOTYPES:()=>r9(s[8]??"",o,this.samples)}}}const l9=Object.freeze(Object.defineProperty({__proto__:null,default:c9},Symbol.toStringTag,{value:"Module"}));bt.GenomeSpy=Q1,bt.embed=f6,bt.favIcon=u6,bt.html=ce,bt.icon=l6,bt.loadSpec=D1,Object.defineProperty(bt,Symbol.toStringTag,{value:"Module"})}));