@genome-spy/core 0.77.0 → 0.78.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle/{esm-CscjKVDc.js → esm-DAnOffpD.js} +1 -1
- package/dist/bundle/{esm-0dYHNV_D.js → esm-DNtC3H80.js} +1 -1
- package/dist/bundle/{esm-CRMf_I9V.js → esm-DVOHLB1e.js} +1 -1
- package/dist/bundle/esm-NIYEaYkc.js +1221 -0
- package/dist/bundle/index.es.js +2816 -2703
- package/dist/bundle/index.js +57 -54
- package/dist/schema.json +825 -112
- package/dist/src/genomeSpy/headlessBootstrap.d.ts.map +1 -1
- package/dist/src/genomeSpy/headlessBootstrap.js +2 -0
- package/dist/src/genomeSpy/interactionController.d.ts +4 -1
- package/dist/src/genomeSpy/interactionController.d.ts.map +1 -1
- package/dist/src/genomeSpy/interactionController.js +57 -13
- package/dist/src/genomeSpyBase.d.ts.map +1 -1
- package/dist/src/genomeSpyBase.js +5 -1
- package/dist/src/scales/domainExpressions.d.ts +21 -0
- package/dist/src/scales/domainExpressions.d.ts.map +1 -0
- package/dist/src/scales/domainExpressions.js +43 -0
- package/dist/src/scales/domainPlanner.d.ts +12 -1
- package/dist/src/scales/domainPlanner.d.ts.map +1 -1
- package/dist/src/scales/domainPlanner.js +55 -36
- package/dist/src/scales/scaleInstanceManager.d.ts +1 -0
- package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -1
- package/dist/src/scales/scaleInstanceManager.js +5 -0
- package/dist/src/scales/scalePropsResolver.d.ts +6 -1
- package/dist/src/scales/scalePropsResolver.d.ts.map +1 -1
- package/dist/src/scales/scalePropsResolver.js +35 -10
- package/dist/src/scales/scaleResolution.d.ts +16 -0
- package/dist/src/scales/scaleResolution.d.ts.map +1 -1
- package/dist/src/scales/scaleResolution.js +136 -16
- package/dist/src/scales/scaleRules.d.ts +10 -0
- package/dist/src/scales/scaleRules.d.ts.map +1 -1
- package/dist/src/scales/scaleRules.js +38 -1
- package/dist/src/scales/viewLevelScaleConfig.d.ts +45 -0
- package/dist/src/scales/viewLevelScaleConfig.d.ts.map +1 -0
- package/dist/src/scales/viewLevelScaleConfig.js +138 -0
- package/dist/src/spec/scale.d.ts +19 -6
- package/dist/src/spec/view.d.ts +11 -0
- package/dist/src/styles/genome-spy.css +4 -1
- package/dist/src/styles/genome-spy.css.d.ts +1 -1
- package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
- package/dist/src/styles/genome-spy.css.js +4 -1
- package/dist/src/utils/ui/tooltip.d.ts +4 -0
- package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
- package/dist/src/utils/ui/tooltip.js +35 -10
- package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
- package/dist/src/view/containerMutationHelper.js +11 -3
- package/package.json +2 -2
- package/dist/bundle/esm-C49STiCR.js +0 -1248
package/dist/bundle/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.genomeSpyEmbed={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,t)=>()=>(e&&(t=e(e=0)),t),r=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},i=globalThis,a=i.ShadowRoot&&(i.ShadyCSS===void 0||i.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,o=Symbol(),s=new WeakMap,c=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==o)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(a&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=s.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&s.set(t,e))}return e}toString(){return this.cssText}},l=e=>new c(typeof e==`string`?e:e+``,void 0,o),u=(e,t)=>{if(a)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=i.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},d=a?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return l(t)})(e):e,{is:f,defineProperty:p,getOwnPropertyDescriptor:m,getOwnPropertyNames:h,getOwnPropertySymbols:g,getPrototypeOf:_}=Object,v=globalThis,y=v.trustedTypes,b=y?y.emptyScript:``,x=v.reactiveElementPolyfillSupport,S=(e,t)=>e,C={toAttribute(e,t){switch(t){case Boolean:e=e?b:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},w=(e,t)=>!f(e,t),T={attribute:!0,type:String,converter:C,reflect:!1,useDefault:!1,hasChanged:w};Symbol.metadata??=Symbol(`metadata`),v.litPropertyMetadata??=new WeakMap;var E=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=T){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){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&p(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=m(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??T}static _$Ei(){if(this.hasOwnProperty(S(`elementProperties`)))return;let e=_(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(S(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(S(`properties`))){let e=this.properties,t=[...h(e),...g(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(d(e))}else e!==void 0&&t.push(d(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n: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_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return u(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,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?C:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?C:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??w)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let 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(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.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(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};E.elementStyles=[],E.shadowRootOptions={mode:`open`},E[S(`elementProperties`)]=new Map,E[S(`finalized`)]=new Map,x?.({ReactiveElement:E}),(v.reactiveElementVersions??=[]).push(`2.1.2`);var
|
|
2
|
-
\f\r]`,pe=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,me=/-->/g,he=/>/g,ge=RegExp(`>|${fe}(?:([^\\s"'>=/]+)(${fe}*=${fe}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),_e=/'/g,ve=/"/g,ye=/^(?:script|style|textarea|title)$/i,O=(e=>(t,...n)=>({_$litType$:e,strings:t,values:n}))(1),be=Symbol.for(`lit-noChange`),xe=Symbol.for(`lit-nothing`),Se=new WeakMap,Ce=se.createTreeWalker(se,129);function we(e,t){if(!ue(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return ne===void 0?t:ne.createHTML(t)}var Te=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=pe;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===pe?c[1]===`!--`?o=me:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=ge):(ye.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=ge):o=he:o===ge?c[0]===`>`?(o=i??pe,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?ge:c[3]===`"`?ve:_e):o===ve||o===_e?o=ge:o===me||o===he?o=pe:(o=ge,i=void 0);let d=o===ge&&e[t+1].startsWith(`/>`)?` `:``;a+=o===pe?n+oe:l>=0?(r.push(s),n.slice(0,l)+re+n.slice(l)+ie+d):n+ie+(l===-2?t:d)}return[we(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},Ee=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=Te(t,n);if(this.el=e.createElement(l,r),Ce.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=Ce.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(re)){let t=u[o++],n=i.getAttribute(e).split(ie),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?je:r[1]===`?`?Me:r[1]===`@`?Ne:Ae}),i.removeAttribute(e)}else e.startsWith(ie)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(ye.test(i.tagName)){let e=i.textContent.split(ie),t=e.length-1;if(t>0){i.textContent=te?te.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],ce()),Ce.nextNode(),c.push({type:2,index:++a});i.append(e[t],ce())}}}else if(i.nodeType===8)if(i.data===ae)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(ie,e+1))!==-1;)c.push({type:7,index:a}),e+=ie.length-1}a++}}static createElement(e,t){let n=se.createElement(`template`);return n.innerHTML=e,n}};function De(e,t,n=e,r){if(t===be)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=le(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=De(e,i._$AS(e,t.values),i,r)),t}var Oe=class{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){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??se).importNode(t,!0);Ce.currentNode=r;let i=Ce.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new ke(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new Pe(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=Ce.nextNode(),a++)}return Ce.currentNode=se,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},ke=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=xe,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,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=De(this,e,t),le(e)?e===xe||e==null||e===``?(this._$AH!==xe&&this._$AR(),this._$AH=xe):e!==this._$AH&&e!==be&&this._(e):e._$litType$===void 0?e.nodeType===void 0?de(e)?this.k(e):this._(e):this.T(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!==xe&&le(this._$AH)?this._$AA.nextSibling.data=e:this.T(se.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=Ee.createElement(we(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new Oe(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=Se.get(e.strings);return t===void 0&&Se.set(e.strings,t=new Ee(e)),t}k(t){ue(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(ce()),this.O(ce()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=ee(e).nextSibling;ee(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},Ae=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=xe,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=xe}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=De(this,e,t,0),a=!le(e)||e!==this._$AH&&e!==be,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=De(this,r[n+o],t,o),s===be&&(s=this._$AH[o]),a||=!le(s)||s!==this._$AH[o],s===xe?e=xe:e!==xe&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===xe?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},je=class extends Ae{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===xe?void 0:e}},Me=class extends Ae{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==xe)}},Ne=class extends Ae{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=De(this,e,t,0)??xe)===be)return;let n=this._$AH,r=e===xe&&n!==xe||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==xe&&(n===xe||r);r&&this.element.removeEventListener(this.name,this,n),i&&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)}},Pe=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){De(this,e)}},Fe=D.litHtmlPolyfillSupport;Fe?.(Ee,ke),(D.litHtmlVersions??=[]).push(`3.3.2`);var Ie=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new ke(t.insertBefore(ce(),e),e,void 0,n??{})}return i._$AI(e),i},Le=globalThis,Re=class extends E{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Ie(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return be}};Re._$litElement$=!0,Re.finalized=!0,Le.litElementHydrateSupport?.({LitElement:Re});var ze=Le.litElementPolyfillSupport;ze?.({LitElement:Re}),(Le.litElementVersions??=[]).push(`4.2.2`);function Be(e,t,n){return e.fields=t||[],e.fname=n,e}function Ve(e){return e==null?null:e.fname}function He(e){return e==null?null:e.fields}function Ue(e){return e.length===1?We(e[0]):Ge(e)}var We=e=>function(t){return t[e]},Ge=e=>{let t=e.length;return function(n){for(let r=0;r<t;++r)n=n[e[r]];return n}};function Ke(e){throw Error(e)}function qe(e){let t=[],n=e.length,r=null,i=0,a=``,o,s,c;e+=``;function l(){t.push(a+e.substring(o,s)),a=``,o=s+1}for(o=s=0;s<n;++s)if(c=e[s],c===`\\`)a+=e.substring(o,s++),o=s;else if(c===r)l(),r=null,i=-1;else if(r)continue;else o===i&&c===`"`||o===i&&c===`'`?(o=s+1,r=c):c===`.`&&!i?s>o?l():o=s+1:c===`[`?(s>o&&l(),i=o=s+1):c===`]`&&(i||Ke(`Access path missing open bracket: `+e),i>0&&l(),i=0,o=s+1);return i&&Ke(`Access path missing closing bracket: `+e),r&&Ke(`Access path missing closing quote: `+e),s>o&&(s++,l()),t}function Je(e,t,n){let r=qe(e);return e=r.length===1?r[0]:e,Be((n&&n.get||Ue)(r),[e],t||e)}Je(`id`);var Ye=Be(e=>e,[],`identity`);Be(()=>0,[],`zero`),Be(()=>1,[],`one`),Be(()=>!0,[],`true`),Be(()=>!1,[],`false`);var Xe=new Set([...Object.getOwnPropertyNames(Object.prototype).filter(e=>typeof Object.prototype[e]==`function`),`__proto__`]),Ze=Array.isArray;function Qe(e){return e===Object(e)}function $e(e){return e[e.length-1]}function et(e){return e==null||e===``?null:+e}var k=e=>t=>e*Math.exp(t),tt=e=>t=>Math.log(e*t),nt=e=>t=>Math.sign(t)*Math.log1p(Math.abs(t/e)),rt=e=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*e,it=e=>t=>t<0?-((-t)**+e):t**+e;function A(e,t,n,r){let i=n(e[0]),a=n($e(e)),o=(a-i)*t;return[r(i-o),r(a-o)]}function at(e,t){return A(e,t,et,Ye)}function ot(e,t){var n=Math.sign(e[0]);return A(e,t,tt(n),k(n))}function j(e,t,n){return A(e,t,it(n),it(1/n))}function st(e,t,n,r,i){let a=r(e[0]),o=r($e(e)),s=t==null?(a+o)/2:r(t);return[i(s+(a-s)*n),i(s+(o-s)*n)]}function ct(e,t,n){return st(e,t,n,et,Ye)}function lt(e,t,n){let r=Math.sign(e[0]);return st(e,t,n,tt(r),k(r))}function ut(e,t,n,r){return st(e,t,n,it(r),it(1/r))}function dt(e,t,n,r){return st(e,t,n,nt(r),rt(r))}function M(e){return e==null?[]:Ze(e)?e:[e]}function ft(e,t,n){let r=e[0],i=e[1],a;return i<r&&(a=i,i=r,r=a),a=i-r,a>=n-t?[t,n]:[r=Math.min(Math.max(r,t),n-a),r+a]}function pt(e){return typeof e==`function`}var mt=`descending`;function ht(e,t,n){n||={},t=M(t)||[];let r=[],i=[],a={},o=n.comparator||_t;return M(e).forEach((e,o)=>{e!=null&&(r.push(t[o]===mt?-1:1),i.push(e=pt(e)?e:Je(e,null,n)),(He(e)||[]).forEach(e=>a[e]=1))}),i.length===0?null:Be(o(i,r),Object.keys(a))}var gt=(e,t)=>(e<t||e==null)&&t!=null?-1:(e>t||t==null)&&e!=null?1:(t=t instanceof Date?+t:t,e=e instanceof Date?+e:e)!==e&&t===t?-1:t!==t&&e===e?1:0,_t=(e,t)=>e.length===1?vt(e[0],t[0]):yt(e,t,e.length),vt=(e,t)=>function(n,r){return gt(e(n),e(r))*t},yt=(e,t,n)=>(t.push(0),function(r,i){let a,o=0,s=-1;for(;o===0&&++s<n;)a=e[s],o=gt(a(r),a(i));return o*t[s]});function bt(e){for(let t,n,r=1,i=arguments.length;r<i;++r)for(n in t=arguments[r],t)e[n]=t[n];return e}function xt(e,t){return Object.hasOwn(e,t)}function St(e){return typeof e==`boolean`}function Ct(e){return Object.prototype.toString.call(e)===`[object Date]`}function wt(e){return e&&pt(e[Symbol.iterator])}function N(e){return typeof e==`number`}function Tt(e){return Object.prototype.toString.call(e)===`[object RegExp]`}function P(e){return typeof e==`string`}function F(e,t){let n=e[0],r=$e(e),i=+t;return i?i===1?r:n+i*(r-n):n}function Et(e){return e&&$e(e)-e[0]||0}function Dt(e){return Ze(e)?`[${e.map(e=>e===null?`null`:Dt(e))}]`:Qe(e)||P(e)?JSON.stringify(e).replaceAll(`\u2028`,`\\u2028`).replaceAll(`\u2029`,`\\u2029`):e}function Ot(e){return e==null||e===``?null:!e||e===`false`||e===`0`?!1:!!e}var kt=e=>N(e)||Ct(e)?e:Date.parse(e);function At(e,t){return t||=kt,e==null||e===``?null:t(e)}function jt(e){return e==null||e===``?null:e+``}function Mt(e){let t={},n=e.length;for(let r=0;r<n;++r)t[e[r]]=!0;return t}var Nt={},Pt={},Ft=34,It=10,Lt=13;function Rt(e){return Function(`d`,`return {`+e.map(function(e,t){return JSON.stringify(e)+`: d[`+t+`] || ""`}).join(`,`)+`}`)}function zt(e,t){var n=Rt(e);return function(r,i){return t(n(r),i,e)}}function Bt(e){var t=Object.create(null),n=[];return e.forEach(function(e){for(var r in e)r in t||n.push(t[r]=r)}),n}function Vt(e,t){var n=e+``,r=n.length;return r<t?Array(t-r+1).join(0)+n:n}function Ht(e){return e<0?`-`+Vt(-e,6):e>9999?`+`+Vt(e,6):Vt(e,4)}function Ut(e){var t=e.getUTCHours(),n=e.getUTCMinutes(),r=e.getUTCSeconds(),i=e.getUTCMilliseconds();return isNaN(e)?`Invalid Date`:Ht(e.getUTCFullYear(),4)+`-`+Vt(e.getUTCMonth()+1,2)+`-`+Vt(e.getUTCDate(),2)+(i?`T`+Vt(t,2)+`:`+Vt(n,2)+`:`+Vt(r,2)+`.`+Vt(i,3)+`Z`:r?`T`+Vt(t,2)+`:`+Vt(n,2)+`:`+Vt(r,2)+`Z`:n||t?`T`+Vt(t,2)+`:`+Vt(n,2)+`Z`:``)}function Wt(e){var t=RegExp(`["`+e+`
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.genomeSpyEmbed={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,t)=>()=>(e&&(t=e(e=0)),t),r=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},i=globalThis,a=i.ShadowRoot&&(i.ShadyCSS===void 0||i.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,o=Symbol(),s=new WeakMap,c=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==o)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(a&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=s.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&s.set(t,e))}return e}toString(){return this.cssText}},l=e=>new c(typeof e==`string`?e:e+``,void 0,o),u=(e,t)=>{if(a)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=i.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},d=a?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return l(t)})(e):e,{is:f,defineProperty:p,getOwnPropertyDescriptor:m,getOwnPropertyNames:h,getOwnPropertySymbols:g,getPrototypeOf:_}=Object,v=globalThis,y=v.trustedTypes,b=y?y.emptyScript:``,x=v.reactiveElementPolyfillSupport,S=(e,t)=>e,C={toAttribute(e,t){switch(t){case Boolean:e=e?b:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},w=(e,t)=>!f(e,t),T={attribute:!0,type:String,converter:C,reflect:!1,useDefault:!1,hasChanged:w};Symbol.metadata??=Symbol(`metadata`),v.litPropertyMetadata??=new WeakMap;var E=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=T){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){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&p(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=m(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??T}static _$Ei(){if(this.hasOwnProperty(S(`elementProperties`)))return;let e=_(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(S(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(S(`properties`))){let e=this.properties,t=[...h(e),...g(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(d(e))}else e!==void 0&&t.push(d(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n: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_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return u(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,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?C:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?C:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??w)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let 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(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.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(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};E.elementStyles=[],E.shadowRootOptions={mode:`open`},E[S(`elementProperties`)]=new Map,E[S(`finalized`)]=new Map,x?.({ReactiveElement:E}),(v.reactiveElementVersions??=[]).push(`2.1.2`);var ee=globalThis,te=e=>e,ne=ee.trustedTypes,re=ne?ne.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,ie=`$lit$`,ae=`lit$${Math.random().toFixed(9).slice(2)}$`,oe=`?`+ae,se=`<${oe}>`,ce=document,le=()=>ce.createComment(``),ue=e=>e===null||typeof e!=`object`&&typeof e!=`function`,de=Array.isArray,fe=e=>de(e)||typeof e?.[Symbol.iterator]==`function`,pe=`[
|
|
2
|
+
\f\r]`,me=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,he=/-->/g,ge=/>/g,_e=RegExp(`>|${pe}(?:([^\\s"'>=/]+)(${pe}*=${pe}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),ve=/'/g,ye=/"/g,be=/^(?:script|style|textarea|title)$/i,D=(e=>(t,...n)=>({_$litType$:e,strings:t,values:n}))(1),xe=Symbol.for(`lit-noChange`),Se=Symbol.for(`lit-nothing`),Ce=new WeakMap,we=ce.createTreeWalker(ce,129);function Te(e,t){if(!de(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return re===void 0?t:re.createHTML(t)}var Ee=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=me;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===me?c[1]===`!--`?o=he:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=_e):(be.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=_e):o=ge:o===_e?c[0]===`>`?(o=i??me,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?_e:c[3]===`"`?ye:ve):o===ye||o===ve?o=_e:o===he||o===ge?o=me:(o=_e,i=void 0);let d=o===_e&&e[t+1].startsWith(`/>`)?` `:``;a+=o===me?n+se:l>=0?(r.push(s),n.slice(0,l)+ie+n.slice(l)+ae+d):n+ae+(l===-2?t:d)}return[Te(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},De=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=Ee(t,n);if(this.el=e.createElement(l,r),we.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=we.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(ie)){let t=u[o++],n=i.getAttribute(e).split(ae),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?Me:r[1]===`?`?Ne:r[1]===`@`?Pe:je}),i.removeAttribute(e)}else e.startsWith(ae)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(be.test(i.tagName)){let e=i.textContent.split(ae),t=e.length-1;if(t>0){i.textContent=ne?ne.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],le()),we.nextNode(),c.push({type:2,index:++a});i.append(e[t],le())}}}else if(i.nodeType===8)if(i.data===oe)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(ae,e+1))!==-1;)c.push({type:7,index:a}),e+=ae.length-1}a++}}static createElement(e,t){let n=ce.createElement(`template`);return n.innerHTML=e,n}};function Oe(e,t,n=e,r){if(t===xe)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=ue(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=Oe(e,i._$AS(e,t.values),i,r)),t}var ke=class{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){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??ce).importNode(t,!0);we.currentNode=r;let i=we.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new Ae(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new Fe(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=we.nextNode(),a++)}return we.currentNode=ce,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},Ae=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=Se,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,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=Oe(this,e,t),ue(e)?e===Se||e==null||e===``?(this._$AH!==Se&&this._$AR(),this._$AH=Se):e!==this._$AH&&e!==xe&&this._(e):e._$litType$===void 0?e.nodeType===void 0?fe(e)?this.k(e):this._(e):this.T(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!==Se&&ue(this._$AH)?this._$AA.nextSibling.data=e:this.T(ce.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=De.createElement(Te(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new ke(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=Ce.get(e.strings);return t===void 0&&Ce.set(e.strings,t=new De(e)),t}k(t){de(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(le()),this.O(le()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=te(e).nextSibling;te(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},je=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=Se,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=Se}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=Oe(this,e,t,0),a=!ue(e)||e!==this._$AH&&e!==xe,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=Oe(this,r[n+o],t,o),s===xe&&(s=this._$AH[o]),a||=!ue(s)||s!==this._$AH[o],s===Se?e=Se:e!==Se&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===Se?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},Me=class extends je{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===Se?void 0:e}},Ne=class extends je{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==Se)}},Pe=class extends je{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=Oe(this,e,t,0)??Se)===xe)return;let n=this._$AH,r=e===Se&&n!==Se||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==Se&&(n===Se||r);r&&this.element.removeEventListener(this.name,this,n),i&&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)}},Fe=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){Oe(this,e)}},Ie=ee.litHtmlPolyfillSupport;Ie?.(De,Ae),(ee.litHtmlVersions??=[]).push(`3.3.2`);var Le=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new Ae(t.insertBefore(le(),e),e,void 0,n??{})}return i._$AI(e),i},Re=globalThis,ze=class extends E{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Le(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return xe}};ze._$litElement$=!0,ze.finalized=!0,Re.litElementHydrateSupport?.({LitElement:ze});var Be=Re.litElementPolyfillSupport;Be?.({LitElement:ze}),(Re.litElementVersions??=[]).push(`4.2.2`);function Ve(e,t,n){return e.fields=t||[],e.fname=n,e}function He(e){return e==null?null:e.fname}function Ue(e){return e==null?null:e.fields}function We(e){return e.length===1?Ge(e[0]):Ke(e)}var Ge=e=>function(t){return t[e]},Ke=e=>{let t=e.length;return function(n){for(let r=0;r<t;++r)n=n[e[r]];return n}};function qe(e){throw Error(e)}function Je(e){let t=[],n=e.length,r=null,i=0,a=``,o,s,c;e+=``;function l(){t.push(a+e.substring(o,s)),a=``,o=s+1}for(o=s=0;s<n;++s)if(c=e[s],c===`\\`)a+=e.substring(o,s++),o=s;else if(c===r)l(),r=null,i=-1;else if(r)continue;else o===i&&c===`"`||o===i&&c===`'`?(o=s+1,r=c):c===`.`&&!i?s>o?l():o=s+1:c===`[`?(s>o&&l(),i=o=s+1):c===`]`&&(i||qe(`Access path missing open bracket: `+e),i>0&&l(),i=0,o=s+1);return i&&qe(`Access path missing closing bracket: `+e),r&&qe(`Access path missing closing quote: `+e),s>o&&(s++,l()),t}function Ye(e,t,n){let r=Je(e);return e=r.length===1?r[0]:e,Ve((n&&n.get||We)(r),[e],t||e)}Ye(`id`);var Xe=Ve(e=>e,[],`identity`);Ve(()=>0,[],`zero`),Ve(()=>1,[],`one`),Ve(()=>!0,[],`true`),Ve(()=>!1,[],`false`);var Ze=new Set([...Object.getOwnPropertyNames(Object.prototype).filter(e=>typeof Object.prototype[e]==`function`),`__proto__`]),O=Array.isArray;function Qe(e){return e===Object(e)}function $e(e){return e[e.length-1]}function et(e){return e==null||e===``?null:+e}var k=e=>t=>e*Math.exp(t),tt=e=>t=>Math.log(e*t),nt=e=>t=>Math.sign(t)*Math.log1p(Math.abs(t/e)),rt=e=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*e,it=e=>t=>t<0?-((-t)**+e):t**+e;function A(e,t,n,r){let i=n(e[0]),a=n($e(e)),o=(a-i)*t;return[r(i-o),r(a-o)]}function at(e,t){return A(e,t,et,Xe)}function ot(e,t){var n=Math.sign(e[0]);return A(e,t,tt(n),k(n))}function j(e,t,n){return A(e,t,it(n),it(1/n))}function st(e,t,n,r,i){let a=r(e[0]),o=r($e(e)),s=t==null?(a+o)/2:r(t);return[i(s+(a-s)*n),i(s+(o-s)*n)]}function ct(e,t,n){return st(e,t,n,et,Xe)}function lt(e,t,n){let r=Math.sign(e[0]);return st(e,t,n,tt(r),k(r))}function ut(e,t,n,r){return st(e,t,n,it(r),it(1/r))}function dt(e,t,n,r){return st(e,t,n,nt(r),rt(r))}function M(e){return e==null?[]:O(e)?e:[e]}function ft(e,t,n){let r=e[0],i=e[1],a;return i<r&&(a=i,i=r,r=a),a=i-r,a>=n-t?[t,n]:[r=Math.min(Math.max(r,t),n-a),r+a]}function pt(e){return typeof e==`function`}var mt=`descending`;function ht(e,t,n){n||={},t=M(t)||[];let r=[],i=[],a={},o=n.comparator||_t;return M(e).forEach((e,o)=>{e!=null&&(r.push(t[o]===mt?-1:1),i.push(e=pt(e)?e:Ye(e,null,n)),(Ue(e)||[]).forEach(e=>a[e]=1))}),i.length===0?null:Ve(o(i,r),Object.keys(a))}var gt=(e,t)=>(e<t||e==null)&&t!=null?-1:(e>t||t==null)&&e!=null?1:(t=t instanceof Date?+t:t,e=e instanceof Date?+e:e)!==e&&t===t?-1:t!==t&&e===e?1:0,_t=(e,t)=>e.length===1?vt(e[0],t[0]):yt(e,t,e.length),vt=(e,t)=>function(n,r){return gt(e(n),e(r))*t},yt=(e,t,n)=>(t.push(0),function(r,i){let a,o=0,s=-1;for(;o===0&&++s<n;)a=e[s],o=gt(a(r),a(i));return o*t[s]});function bt(e){for(let t,n,r=1,i=arguments.length;r<i;++r)for(n in t=arguments[r],t)e[n]=t[n];return e}function xt(e,t){return Object.hasOwn(e,t)}function St(e){return typeof e==`boolean`}function Ct(e){return Object.prototype.toString.call(e)===`[object Date]`}function wt(e){return e&&pt(e[Symbol.iterator])}function N(e){return typeof e==`number`}function Tt(e){return Object.prototype.toString.call(e)===`[object RegExp]`}function P(e){return typeof e==`string`}function F(e,t){let n=e[0],r=$e(e),i=+t;return i?i===1?r:n+i*(r-n):n}function Et(e){return e&&$e(e)-e[0]||0}function Dt(e){return O(e)?`[${e.map(e=>e===null?`null`:Dt(e))}]`:Qe(e)||P(e)?JSON.stringify(e).replaceAll(`\u2028`,`\\u2028`).replaceAll(`\u2029`,`\\u2029`):e}function Ot(e){return e==null||e===``?null:!e||e===`false`||e===`0`?!1:!!e}var kt=e=>N(e)||Ct(e)?e:Date.parse(e);function At(e,t){return t||=kt,e==null||e===``?null:t(e)}function jt(e){return e==null||e===``?null:e+``}function Mt(e){let t={},n=e.length;for(let r=0;r<n;++r)t[e[r]]=!0;return t}var Nt={},Pt={},Ft=34,It=10,Lt=13;function Rt(e){return Function(`d`,`return {`+e.map(function(e,t){return JSON.stringify(e)+`: d[`+t+`] || ""`}).join(`,`)+`}`)}function zt(e,t){var n=Rt(e);return function(r,i){return t(n(r),i,e)}}function Bt(e){var t=Object.create(null),n=[];return e.forEach(function(e){for(var r in e)r in t||n.push(t[r]=r)}),n}function Vt(e,t){var n=e+``,r=n.length;return r<t?Array(t-r+1).join(0)+n:n}function Ht(e){return e<0?`-`+Vt(-e,6):e>9999?`+`+Vt(e,6):Vt(e,4)}function Ut(e){var t=e.getUTCHours(),n=e.getUTCMinutes(),r=e.getUTCSeconds(),i=e.getUTCMilliseconds();return isNaN(e)?`Invalid Date`:Ht(e.getUTCFullYear(),4)+`-`+Vt(e.getUTCMonth()+1,2)+`-`+Vt(e.getUTCDate(),2)+(i?`T`+Vt(t,2)+`:`+Vt(n,2)+`:`+Vt(r,2)+`.`+Vt(i,3)+`Z`:r?`T`+Vt(t,2)+`:`+Vt(n,2)+`:`+Vt(r,2)+`Z`:n||t?`T`+Vt(t,2)+`:`+Vt(n,2)+`Z`:``)}function Wt(e){var t=RegExp(`["`+e+`
|
|
3
3
|
\r]`),n=e.charCodeAt(0);function r(e,t){var n,r,a=i(e,function(e,i){if(n)return n(e,i-1);r=e,n=t?zt(e,t):Rt(e)});return a.columns=r||[],a}function i(e,t){var r=[],i=e.length,a=0,o=0,s,c=i<=0,l=!1;e.charCodeAt(i-1)===It&&--i,e.charCodeAt(i-1)===Lt&&--i;function u(){if(c)return Pt;if(l)return l=!1,Nt;var t,r=a,o;if(e.charCodeAt(r)===Ft){for(;a++<i&&e.charCodeAt(a)!==Ft||e.charCodeAt(++a)===Ft;);return(t=a)>=i?c=!0:(o=e.charCodeAt(a++))===It?l=!0:o===Lt&&(l=!0,e.charCodeAt(a)===It&&++a),e.slice(r+1,t-1).replace(/""/g,`"`)}for(;a<i;){if((o=e.charCodeAt(t=a++))===It)l=!0;else if(o===Lt)l=!0,e.charCodeAt(a)===It&&++a;else if(o!==n)continue;return e.slice(r,t)}return c=!0,e.slice(r,i)}for(;(s=u())!==Pt;){for(var d=[];s!==Nt&&s!==Pt;)d.push(s),s=u();t&&(d=t(d,o++))==null||r.push(d)}return r}function a(t,n){return t.map(function(t){return n.map(function(e){return u(t[e])}).join(e)})}function o(t,n){return n??=Bt(t),[n.map(u).join(e)].concat(a(t,n)).join(`
|
|
4
4
|
`)}function s(e,t){return t??=Bt(e),a(e,t).join(`
|
|
5
5
|
`)}function c(e){return e.map(l).join(`
|
|
6
|
-
`)}function l(t){return t.map(u).join(e)}function u(e){return e==null?``:e instanceof Date?Ut(e):t.test(e+=``)?`"`+e.replace(/"/g,`""`)+`"`:e}return{parse:r,parseRows:i,format:o,formatBody:s,formatRows:c,formatRow:l,formatValue:u}}var Gt=Wt(` `);Gt.parse;var Kt=Gt.parseRows;Gt.format,Gt.formatBody,Gt.formatRows,Gt.formatRow,Gt.formatValue;function qt(e){return e}function Jt(e){if(e==null)return qt;var t,n,r=e.scale[0],i=e.scale[1],a=e.translate[0],o=e.translate[1];return function(e,s){s||(t=n=0);var c=2,l=e.length,u=Array(l);for(u[0]=(t+=e[0])*r+a,u[1]=(n+=e[1])*i+o;c<l;)u[c]=e[c],++c;return u}}function Yt(e,t){for(var n,r=e.length,i=r-t;i<--r;)n=e[i],e[i++]=e[r],e[r]=n}function Xt(e,t){return typeof t==`string`&&(t=e.objects[t]),t.type===`GeometryCollection`?{type:`FeatureCollection`,features:t.geometries.map(function(t){return Zt(e,t)})}:Zt(e,t)}function Zt(e,t){var n=t.id,r=t.bbox,i=t.properties==null?{}:t.properties,a=Qt(e,t);return n==null&&r==null?{type:`Feature`,properties:i,geometry:a}:r==null?{type:`Feature`,id:n,properties:i,geometry:a}:{type:`Feature`,id:n,bbox:r,properties:i,geometry:a}}function Qt(e,t){var n=Jt(e.transform),r=e.arcs;function i(e,t){t.length&&t.pop();for(var i=r[e<0?~e:e],a=0,o=i.length;a<o;++a)t.push(n(i[a],a));e<0&&Yt(t,o)}function a(e){return n(e)}function o(e){for(var t=[],n=0,r=e.length;n<r;++n)i(e[n],t);return t.length<2&&t.push(t[0]),t}function s(e){for(var t=o(e);t.length<4;)t.push(t[0]);return t}function c(e){return e.map(s)}function l(e){var t=e.type,n;switch(t){case`GeometryCollection`:return{type:t,geometries:e.geometries.map(l)};case`Point`:n=a(e.coordinates);break;case`MultiPoint`:n=e.coordinates.map(a);break;case`LineString`:n=o(e.arcs);break;case`MultiLineString`:n=e.arcs.map(o);break;case`Polygon`:n=c(e.arcs);break;case`MultiPolygon`:n=e.arcs.map(c);break;default:return null}return{type:t,coordinates:n}}return l(t)}function $t(e,t){var n={},r={},i={},a=[],o=-1;t.forEach(function(n,r){var i=e.arcs[n<0?~n:n],a;i.length<3&&!i[1][0]&&!i[1][1]&&(a=t[++o],t[o]=n,t[r]=a)}),t.forEach(function(e){var t=s(e),n=t[0],a=t[1],o,c;if(o=i[n])if(delete i[o.end],o.push(e),o.end=a,c=r[a]){delete r[c.start];var l=c===o?o:o.concat(c);r[l.start=o.start]=i[l.end=c.end]=l}else r[o.start]=i[o.end]=o;else if(o=r[a])if(delete r[o.start],o.unshift(e),o.start=n,c=i[n]){delete i[c.end];var u=c===o?o:c.concat(o);r[u.start=c.start]=i[u.end=o.end]=u}else r[o.start]=i[o.end]=o;else o=[e],r[o.start=n]=i[o.end=a]=o});function s(t){var n=e.arcs[t<0?~t:t],r=n[0],i;return e.transform?(i=[0,0],n.forEach(function(e){i[0]+=e[0],i[1]+=e[1]})):i=n[n.length-1],t<0?[i,r]:[r,i]}function c(e,t){for(var r in e){var i=e[r];delete t[i.start],delete i.start,delete i.end,i.forEach(function(e){n[e<0?~e:e]=1}),a.push(i)}}return c(i,r),c(r,i),t.forEach(function(e){n[e<0?~e:e]||a.push([e])}),a}function en(e){return Qt(e,tn.apply(this,arguments))}function tn(e,t,n){var r,i,a;if(arguments.length>1)r=nn(e,t,n);else for(i=0,r=Array(a=e.arcs.length);i<a;++i)r[i]=i;return{type:`MultiLineString`,arcs:$t(e,r)}}function nn(e,t,n){var r=[],i=[],a;function o(e){var t=e<0?~e:e;(i[t]||(i[t]=[])).push({i:e,g:a})}function s(e){e.forEach(o)}function c(e){e.forEach(s)}function l(e){e.forEach(c)}function u(e){switch(a=e,e.type){case`GeometryCollection`:e.geometries.forEach(u);break;case`LineString`:s(e.arcs);break;case`MultiLineString`:case`Polygon`:c(e.arcs);break;case`MultiPolygon`:l(e.arcs);break}}return u(t),i.forEach(n==null?function(e){r.push(e[0].i)}:function(e){n(e[0].g,e[e.length-1].g)&&r.push(e[0].i)}),r}function rn(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function an(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function on(e){let t,n,r;e.length===2?(t=e===rn||e===an?e:sn,n=e,r=e):(t=rn,n=(t,n)=>rn(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<0?i=t+1:a=t}while(i<a)}return i}function a(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<=0?i=t+1:a=t}while(i<a)}return i}function o(e,t,n=0,a=e.length){let o=i(e,t,n,a-1);return o>n&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function sn(){return 0}function cn(e){return e===null?NaN:+e}function*ln(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var un=on(rn),dn=un.right;un.left,on(cn).center;function fn(e,t){let n=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&++n;else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(i=+i)>=i&&++n}return n}function pn(e,t){let n=0,r,i=0,a=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(r=t-i,i+=r/++n,a+=r*(t-i));else{let o=-1;for(let s of e)(s=t(s,++o,e))!=null&&(s=+s)>=s&&(r=s-i,i+=r/++n,a+=r*(s-i))}if(n>1)return a/(n-1)}function mn(e,t){let n,r;if(t===void 0)for(let t of e)t!=null&&(n===void 0?t>=t&&(n=r=t):(n>t&&(n=t),r<t&&(r=t)));else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(n===void 0?a>=a&&(n=r=a):(n>a&&(n=a),r<a&&(r=a)))}return[n,r]}var hn=class extends Map{constructor(e,t=yn){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(gn(this,e))}has(e){return super.has(gn(this,e))}set(e,t){return super.set(_n(this,e),t)}delete(e){return super.delete(vn(this,e))}};function gn({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function _n({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function vn({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function yn(e){return typeof e==`object`&&e?e.valueOf():e}function bn(e){return e}function xn(e,...t){return Cn(e,bn,bn,t)}function Sn(e,...t){return Cn(e,Array.from,bn,t)}function Cn(e,t,n,r){return(function e(i,a){if(a>=r.length)return n(i);let o=new hn,s=r[a++],c=-1;for(let e of i){let t=s(e,++c,i),n=o.get(t);n?n.push(e):o.set(t,[e])}for(let[t,n]of o)o.set(t,e(n,a));return t(o)})(e,0)}function wn(e=rn){if(e===rn)return Tn;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function Tn(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}var En=Math.sqrt(50),Dn=Math.sqrt(10),On=Math.sqrt(2);function kn(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=En?10:a>=Dn?5:a>=On?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/l<e&&++s,c/l>t&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*l<e&&++s,c*l>t&&--c),c<s&&.5<=n&&n<2?kn(e,t,n*2):[s,c,l]}function An(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];let r=t<e,[i,a,o]=r?kn(t,e,n):kn(e,t,n);if(!(a>=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e<s;++e)c[e]=(a-e)/-o;else for(let e=0;e<s;++e)c[e]=(a-e)*o;else if(o<0)for(let e=0;e<s;++e)c[e]=(i+e)/-o;else for(let e=0;e<s;++e)c[e]=(i+e)*o;return c}function jn(e,t,n){return t=+t,e=+e,n=+n,kn(e,t,n)[2]}function Mn(e,t,n){t=+t,e=+e,n=+n;let r=t<e,i=r?jn(t,e,n):jn(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}function Nn(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n<t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n<i||n===void 0&&i>=i)&&(n=i)}return n}function Pn(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Fn(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?Tn:wn(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));Fn(e,t,u,d,i)}let a=e[t],o=n,s=r;for(In(e,n,t),i(e[r],a)>0&&In(e,n,r);o<s;){for(In(e,o,s),++o,--s;i(e[o],a)<0;)++o;for(;i(e[s],a)>0;)--s}i(e[n],a)===0?In(e,n,s):(++s,In(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function In(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function Ln(e,t,n){if(e=Float64Array.from(ln(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return Pn(e);if(t>=1)return Nn(e);var r,i=(r-1)*t,a=Math.floor(i),o=Nn(Fn(e,a).subarray(0,a+1));return o+(Pn(e.subarray(a+1))-o)*(i-a)}}function Rn(e,t,n=cn){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function zn(e,t){let n=0,r=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(++n,r+=t);else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(a=+a)>=a&&(++n,r+=a)}if(n)return r/n}function Bn(e,t){return Ln(e,.5,t)}function Vn(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r<i;)a[r]=e+r*n;return a}function Hn(e,t){let n=0;if(t===void 0)for(let t of e)(t=+t)&&(n+=t);else{let r=-1;for(let i of e)(i=+t(i,++r,e))&&(n+=i)}return n}function Un(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function Wn(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Gn(e){return e=Wn(Math.abs(e)),e?e[1]:NaN}function Kn(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function qn(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var Jn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Yn(e){if(!(t=Jn.exec(e)))throw Error(`invalid format: `+e);var t;return new Xn({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]})}Yn.prototype=Xn.prototype;function Xn(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}Xn.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 Zn(e){out:for(var t=e.length,n=1,r=-1,i;n<t;++n)switch(e[n]){case`.`:r=i=n;break;case`0`:r===0&&(r=n),i=n;break;default:if(!+e[n])break out;r>0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var Qn;function $n(e,t){var n=Wn(e,t);if(!n)return Qn=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(Qn=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+Wn(e,Math.max(0,t+a-1))[0]}function er(e,t){var n=Wn(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var tr={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:Un,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>er(e*100,t),r:er,s:$n,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function nr(e){return e}var rr=Array.prototype.map,ir=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function ar(e){var t=e.grouping===void 0||e.thousands===void 0?nr:Kn(rr.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?nr:qn(rr.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=Yn(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):tr[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=tr[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=Zn(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&Qn!==void 0?ir[8+Qn/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++o<l;)if(p=e.charCodeAt(o),48>p||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T<h?Array(h-T+1).join(u):``;switch(g&&m&&(e=t(E+e,E.length?h-r.length:1/0),E=``),d){case`<`:e=n+e+r+E;break;case`=`:e=n+E+e+r;break;case`^`:e=E.slice(0,T=E.length>>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(Gn(t)/3)))*3,r=10**-n,i=l((e=Yn(e),e.type=`f`,e),{suffix:ir[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var or,sr,cr;lr({thousands:`,`,grouping:[3],currency:[`$`,``]});function lr(e){return or=ar(e),sr=or.format,cr=or.formatPrefix,or}function ur(e){return Math.max(0,-Gn(Math.abs(e)))}function dr(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Gn(t)/3)))*3-Gn(Math.abs(e)))}function fr(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Gn(t)-Gn(e))+1}var pr=new Date,mr=new Date;function hr(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t<n-e?t:n},i.offset=(e,n)=>(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n<r)||!(a>0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(s<n&&n<r);return o},i.filter=n=>hr(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(pr.setTime(+t),mr.setTime(+r),e(pr),e(mr),Math.floor(n(pr,mr))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var gr=hr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);gr.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?hr(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):gr),gr.range;var _r=1e3,vr=_r*60,yr=vr*60,br=yr*24,xr=br*7,Sr=br*30,Cr=br*365,wr=hr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*_r)},(e,t)=>(t-e)/_r,e=>e.getUTCSeconds());wr.range;var Tr=hr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*_r)},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getMinutes());Tr.range;var Er=hr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getUTCMinutes());Er.range;var Dr=hr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*_r-e.getMinutes()*vr)},(e,t)=>{e.setTime(+e+t*yr)},(e,t)=>(t-e)/yr,e=>e.getHours());Dr.range;var Or=hr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*yr)},(e,t)=>(t-e)/yr,e=>e.getUTCHours());Or.range;var kr=hr(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*vr)/br,e=>e.getDate()-1);kr.range;var Ar=hr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/br,e=>e.getUTCDate()-1);Ar.range;var jr=hr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/br,e=>Math.floor(e/br));jr.range;function Mr(e){return hr(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*vr)/xr)}var Nr=Mr(0),Pr=Mr(1),Fr=Mr(2),Ir=Mr(3),Lr=Mr(4),Rr=Mr(5),zr=Mr(6);Nr.range,Pr.range,Fr.range,Ir.range,Lr.range,Rr.range,zr.range;function Br(e){return hr(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/xr)}var Vr=Br(0),Hr=Br(1),Ur=Br(2),Wr=Br(3),Gr=Br(4),Kr=Br(5),qr=Br(6);Vr.range,Hr.range,Ur.range,Wr.range,Gr.range,Kr.range,qr.range;var Jr=hr(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Jr.range;var Yr=hr(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());Yr.range;var Xr=hr(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Xr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:hr(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),Xr.range;var Zr=hr(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Zr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:hr(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),Zr.range;function Qr(e,t,n,r,i,a){let o=[[wr,1,_r],[wr,5,5*_r],[wr,15,15*_r],[wr,30,30*_r],[a,1,vr],[a,5,5*vr],[a,15,15*vr],[a,30,30*vr],[i,1,yr],[i,3,3*yr],[i,6,6*yr],[i,12,12*yr],[r,1,br],[r,2,2*br],[n,1,xr],[t,1,Sr],[t,3,3*Sr],[e,1,Cr]];function s(e,t,n){let r=t<e;r&&([e,t]=[t,e]);let i=n&&typeof n.range==`function`?n:c(e,t,n),a=i?i.range(e,+t+1):[];return r?a.reverse():a}function c(t,n,r){let i=Math.abs(n-t)/r,a=on(([,,e])=>e).right(o,i);if(a===o.length)return e.every(Mn(t/Cr,n/Cr,r));if(a===0)return gr.every(Math.max(Mn(t,n,r),1));let[s,c]=o[i/o[a-1][2]<o[a][2]/i?a-1:a];return s.every(c)}return[s,c]}var[$r,ei]=Qr(Zr,Yr,Vr,jr,Or,Er),[ti,ni]=Qr(Xr,Jr,Nr,kr,Dr,Tr),ri=`year`,ii=`quarter`,ai=`month`,oi=`week`,si=`date`,ci=`dayofyear`,li=`hours`,ui=`minutes`,di=`seconds`,fi=`milliseconds`;[ri,ii,ai,oi,si,`day`,ci,li,ui,di,fi].reduce((e,t,n)=>(e[t]=1+n,e),{}),`${ri}${ai}`,`${ri}${ai}${si}`,`${li}${ui}`,oi+``,oi+``;var pi={[ri]:Xr,[ii]:Jr.every(3),[ai]:Jr,[oi]:Nr,[si]:kr,day:kr,[ci]:kr,[li]:Dr,[ui]:Tr,[di]:wr,[fi]:gr},mi={[ri]:Zr,[ii]:Yr.every(3),[ai]:Yr,[oi]:Vr,[si]:Ar,day:Ar,[ci]:Ar,[li]:Or,[ui]:Er,[di]:wr,[fi]:gr};function hi(e){return pi[e]}function gi(e){return mi[e]}var _i=1e3,vi=_i*60,yi=vi*60,bi=yi*24;bi*7;var xi=bi*30;bi*365,[ri,ai,si,li,ui,di,fi].slice(0,-1).slice(0,-1).slice(0,-1).slice(0,-1),5*_i,15*_i,30*_i,5*vi,15*vi,30*vi,3*yi,6*yi,12*yi,3*xi;function Si(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Ci(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function wi(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function Ti(e){var t=e.dateTime,n=e.date,r=e.time,i=e.periods,a=e.days,o=e.shortDays,s=e.months,c=e.shortMonths,l=ji(i),u=Mi(i),d=ji(a),f=Mi(a),p=ji(o),m=Mi(o),h=ji(s),g=Mi(s),_=ji(c),v=Mi(c),y={a:ae,A:oe,b:se,B:ce,c:null,d:$i,e:$i,f:ia,g:ha,G:_a,H:ea,I:ta,j:na,L:ra,m:aa,M:oa,p:le,q:ue,Q:Ba,s:Va,S:sa,u:ca,U:la,V:da,w:fa,W:pa,x:null,X:null,y:ma,Y:ga,Z:va,"%":za},b={a:de,A:fe,b:pe,B:me,c:null,d:ya,e:ya,f:wa,g:Fa,G:La,H:ba,I:xa,j:Sa,L:Ca,m:Ta,M:Ea,p:he,q:ge,Q:Ba,s:Va,S:Da,u:Oa,U:ka,V:ja,w:Ma,W:Na,x:null,X:null,y:Pa,Y:Ia,Z:Ra,"%":za},x={a:E,A:D,b:ee,B:te,c:ne,d:Ui,e:Ui,f:Yi,g:zi,G:Ri,H:Gi,I:Gi,j:Wi,L:Ji,m:Hi,M:Ki,p:T,q:Vi,Q:Zi,s:Qi,S:qi,u:Pi,U:Fi,V:Ii,w:Ni,W:Li,x:re,X:ie,y:zi,Y:Ri,Z:Bi,"%":Xi};y.x=S(n,y),y.X=S(r,y),y.c=S(t,y),b.x=S(n,b),b.X=S(r,b),b.c=S(t,b);function S(e,t){return function(n){var r=[],i=-1,a=0,o=e.length,s,c,l;for(n instanceof Date||(n=new Date(+n));++i<o;)e.charCodeAt(i)===37&&(r.push(e.slice(a,i)),(c=Ei[s=e.charAt(++i)])==null?c=s===`e`?` `:`0`:s=e.charAt(++i),(l=t[s])&&(s=l(n,c)),r.push(s),a=i+1);return r.push(e.slice(a,i)),r.join(``)}}function C(e,t){return function(n){var r=wi(1900,void 0,1),i=w(r,e,n+=``,0),a,o;if(i!=n.length)return null;if(`Q`in r)return new Date(r.Q);if(`s`in r)return new Date(r.s*1e3+(`L`in r?r.L:0));if(t&&!(`Z`in r)&&(r.Z=0),`p`in r&&(r.H=r.H%12+r.p*12),r.m===void 0&&(r.m=`q`in r?r.q:0),`V`in r){if(r.V<1||r.V>53)return null;`w`in r||(r.w=1),`Z`in r?(a=Ci(wi(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?Hr.ceil(a):Hr(a),a=Ar.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=Si(wi(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Pr.ceil(a):Pr(a),a=kr.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:`W`in r?1:0),o=`Z`in r?Ci(wi(r.y,0,1)).getUTCDay():Si(wi(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,Ci(r)):Si(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i<a;){if(r>=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in Ei?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function ee(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function te(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function ne(e,n,r){return w(e,t,n,r)}function re(e,t,r){return w(e,n,t,r)}function ie(e,t,n){return w(e,r,t,n)}function ae(e){return o[e.getDay()]}function oe(e){return a[e.getDay()]}function se(e){return c[e.getMonth()]}function ce(e){return s[e.getMonth()]}function le(e){return i[+(e.getHours()>=12)]}function ue(e){return 1+~~(e.getMonth()/3)}function de(e){return o[e.getUTCDay()]}function fe(e){return a[e.getUTCDay()]}function pe(e){return c[e.getUTCMonth()]}function me(e){return s[e.getUTCMonth()]}function he(e){return i[+(e.getUTCHours()>=12)]}function ge(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var Ei={"-":``,_:` `,0:`0`},Di=/^\s*\d+/,Oi=/^%/,ki=/[\\^$*+?|[\]().{}]/g;function I(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a<n?Array(n-a+1).join(t)+i:i)}function Ai(e){return e.replace(ki,`\\$&`)}function ji(e){return RegExp(`^(?:`+e.map(Ai).join(`|`)+`)`,`i`)}function Mi(e){return new Map(e.map((e,t)=>[e.toLowerCase(),t]))}function Ni(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Pi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Fi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Ii(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Li(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function Ri(e,t,n){var r=Di.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function zi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Bi(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Vi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Hi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Ui(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Wi(e,t,n){var r=Di.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Gi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Ki(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function qi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Ji(e,t,n){var r=Di.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Yi(e,t,n){var r=Di.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Xi(e,t,n){var r=Oi.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Zi(e,t,n){var r=Di.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Qi(e,t,n){var r=Di.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function $i(e,t){return I(e.getDate(),t,2)}function ea(e,t){return I(e.getHours(),t,2)}function ta(e,t){return I(e.getHours()%12||12,t,2)}function na(e,t){return I(1+kr.count(Xr(e),e),t,3)}function ra(e,t){return I(e.getMilliseconds(),t,3)}function ia(e,t){return ra(e,t)+`000`}function aa(e,t){return I(e.getMonth()+1,t,2)}function oa(e,t){return I(e.getMinutes(),t,2)}function sa(e,t){return I(e.getSeconds(),t,2)}function ca(e){var t=e.getDay();return t===0?7:t}function la(e,t){return I(Nr.count(Xr(e)-1,e),t,2)}function ua(e){var t=e.getDay();return t>=4||t===0?Lr(e):Lr.ceil(e)}function da(e,t){return e=ua(e),I(Lr.count(Xr(e),e)+(Xr(e).getDay()===4),t,2)}function fa(e){return e.getDay()}function pa(e,t){return I(Pr.count(Xr(e)-1,e),t,2)}function ma(e,t){return I(e.getFullYear()%100,t,2)}function ha(e,t){return e=ua(e),I(e.getFullYear()%100,t,2)}function ga(e,t){return I(e.getFullYear()%1e4,t,4)}function _a(e,t){var n=e.getDay();return e=n>=4||n===0?Lr(e):Lr.ceil(e),I(e.getFullYear()%1e4,t,4)}function va(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+I(t/60|0,`0`,2)+I(t%60,`0`,2)}function ya(e,t){return I(e.getUTCDate(),t,2)}function ba(e,t){return I(e.getUTCHours(),t,2)}function xa(e,t){return I(e.getUTCHours()%12||12,t,2)}function Sa(e,t){return I(1+Ar.count(Zr(e),e),t,3)}function Ca(e,t){return I(e.getUTCMilliseconds(),t,3)}function wa(e,t){return Ca(e,t)+`000`}function Ta(e,t){return I(e.getUTCMonth()+1,t,2)}function Ea(e,t){return I(e.getUTCMinutes(),t,2)}function Da(e,t){return I(e.getUTCSeconds(),t,2)}function Oa(e){var t=e.getUTCDay();return t===0?7:t}function ka(e,t){return I(Vr.count(Zr(e)-1,e),t,2)}function Aa(e){var t=e.getUTCDay();return t>=4||t===0?Gr(e):Gr.ceil(e)}function ja(e,t){return e=Aa(e),I(Gr.count(Zr(e),e)+(Zr(e).getUTCDay()===4),t,2)}function Ma(e){return e.getUTCDay()}function Na(e,t){return I(Hr.count(Zr(e)-1,e),t,2)}function Pa(e,t){return I(e.getUTCFullYear()%100,t,2)}function Fa(e,t){return e=Aa(e),I(e.getUTCFullYear()%100,t,2)}function Ia(e,t){return I(e.getUTCFullYear()%1e4,t,4)}function La(e,t){var n=e.getUTCDay();return e=n>=4||n===0?Gr(e):Gr.ceil(e),I(e.getUTCFullYear()%1e4,t,4)}function Ra(){return`+0000`}function za(){return`%`}function Ba(e){return+e}function Va(e){return Math.floor(e/1e3)}var Ha,Ua,Wa,Ga,Ka;qa({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 qa(e){return Ha=Ti(e),Ua=Ha.format,Wa=Ha.parse,Ga=Ha.utcFormat,Ka=Ha.utcParse,Ha}function Ja(e){let t={};return n=>t[n]||(t[n]=e(n))}function Ya(e,t){return n=>{let r=e(n),i=r.indexOf(t);if(i<0)return r;let a=Xa(r,i),o=a<r.length?r.slice(a):``;for(;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Xa(e,t){let n=e.lastIndexOf(`e`),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}function Za(e){let t=Ja(e.format),n=e.formatPrefix;return{format:t,formatPrefix:n,formatFloat(e){let n=Yn(e||`,`);if(n.precision==null){switch(n.precision=12,n.type){case`%`:n.precision-=2;break;case`e`:--n.precision;break}return Ya(t(n),t(`.1f`)(1)[1])}else return t(n)},formatSpan(e,r,i,a){a=Yn(a??`,f`);let o=Mn(e,r,i),s=Math.max(Math.abs(e),Math.abs(r)),c;if(a.precision==null)switch(a.type){case`s`:return isNaN(c=dr(o,s))||(a.precision=c),n(a,s);case``:case`e`:case`g`:case`p`:case`r`:isNaN(c=fr(o,s))||(a.precision=c-(a.type===`e`));break;case`f`:case`%`:isNaN(c=ur(o))||(a.precision=c-(a.type===`%`)*2);break}return t(a)}}}Qa();function Qa(){return Za({format:sr,formatPrefix:cr})}function $a(e,t,n){n||={},Qe(n)||Ke(`Invalid time multi-format specifier: ${n}`);let r=t(di),i=t(ui),a=t(li),o=t(si),s=t(oi),c=t(ai),l=t(ii),u=t(ri),d=e(n.milliseconds||`.%L`),f=e(n.seconds||`:%S`),p=e(n.minutes||`%I:%M`),m=e(n.hours||`%I %p`),h=e(n.date||n.day||`%a %d`),g=e(n.week||`%b %d`),_=e(n.month||`%B`),v=e(n.quarter||`%B`),y=e(n.year||`%Y`);return e=>(r(e)<e?d:i(e)<e?f:a(e)<e?p:o(e)<e?m:c(e)<e?s(e)<e?h:g:u(e)<e?l(e)<e?_:v:y)(e)}function eo(e){let t=Ja(e.format),n=Ja(e.utcFormat);return{timeFormat:e=>P(e)?t(e):$a(t,hi,e),utcFormat:e=>P(e)?n(e):$a(n,gi,e),timeParse:Ja(e.parse),utcParse:Ja(e.utcParse)}}var to;no();function no(){return to=eo({format:Ua,parse:Wa,utcFormat:Ga,utcParse:Ka})}function ro(e){return eo(Ti(e))}function io(e){return arguments.length?to=ro(e):to}var ao=e=>e!=null&&e===e,oo=e=>e===`true`||e===`false`||e===!0||e===!1,so=e=>!Number.isNaN(Date.parse(e)),co=e=>!Number.isNaN(+e)&&!(e instanceof Date),lo=e=>co(e)&&Number.isInteger(+e),uo={boolean:Ot,integer:et,number:et,date:At,string:jt,unknown:Ye},fo=[oo,lo,co,so],po=[`boolean`,`integer`,`number`,`date`];function mo(e,t){if(!e||!e.length)return`unknown`;let n=e.length,r=fo.length,i=fo.map((e,t)=>t+1);for(let a=0,o=0,s,c;a<n;++a)for(c=t?e[a][t]:e[a],s=0;s<r;++s)if(i[s]&&ao(c)&&!fo[s](c)&&(i[s]=0,++o,o===fo.length))return`string`;return po[i.reduce((e,t)=>e===0?t:e,0)-1]}function ho(e,t){return t.reduce((t,n)=>(t[n]=mo(e,n),t),{})}function go(e){let t=function(t,n){let r={delimiter:e};return _o(t,n?bt(n,r):r)};return t.responseType=`text`,t}function _o(e,t){return t.header&&(e=t.header.map(Dt).join(t.delimiter)+`
|
|
7
|
-
`+e),Wt(t.delimiter).parse(e+``)}_o.responseType=`text`;function vo(e){return typeof Buffer==`function`&&pt(Buffer.isBuffer)?Buffer.isBuffer(e):!1}function yo(e,t){let n=t&&t.property?Je(t.property):Ye;return Qe(e)&&!vo(e)?bo(n(e),t):n(JSON.parse(e))}yo.responseType=`json`;function bo(e,t){return!Ze(e)&&wt(e)&&(e=[...e]),t&&t.copy?JSON.parse(JSON.stringify(e)):e}var xo={interior:(e,t)=>e!==t,exterior:(e,t)=>e===t};function So(e,t){let n,r,i,a;return e=yo(e,t),t&&t.feature?(n=Xt,i=t.feature):t&&t.mesh?(n=en,i=t.mesh,a=xo[t.filter]):Ke(`Missing TopoJSON feature or mesh parameter.`),r=(r=e.objects[i])?n(e,r,a):Ke(`Invalid TopoJSON object: `+i),r&&r.features||[r]}So.responseType=`json`;var Co={dsv:_o,csv:go(`,`),tsv:go(` `),json:yo,topojson:So};function wo(e,t){return arguments.length>1?(Co[e]=t,this):xt(Co,e)?Co[e]:null}function To(e,t,n,r){t||={};let i=wo(t.type||`json`);return i||Ke(`Unknown data format type: `+t.type),e=i(e,t),t.parse&&Eo(e,t.parse,n,r),xt(e,`columns`)&&delete e.columns,e}function Eo(e,t,n,r){if(!e.length)return;let i=io();n||=i.timeParse,r||=i.utcParse;let a=e.columns||Object.keys(e[0]),o,s,c,l,u,d;t===`auto`&&(t=ho(e,a)),a=Object.keys(t);let f=a.map(e=>{let i=t[e],a,o;if(i&&(i.startsWith(`date:`)||i.startsWith(`utc:`)))return a=i.split(/:(.+)?/,2),o=a[1],(o[0]===`'`&&o[o.length-1]===`'`||o[0]===`"`&&o[o.length-1]===`"`)&&(o=o.slice(1,-1)),(a[0]===`utc`?r:n)(o);if(!uo[i])throw Error(`Illegal format pattern: `+e+`:`+i);return uo[i]});for(c=0,u=e.length,d=a.length;c<u;++c)for(o=e[c],l=0;l<d;++l)s=a[l],o[s]=f[l](o[s])}var Do,Oo,ko,Ao,jo,Mo,No,Po=n((()=>{Do=[`BOOLEAN`,`INT32`,`INT64`,`INT96`,`FLOAT`,`DOUBLE`,`BYTE_ARRAY`,`FIXED_LEN_BYTE_ARRAY`],Oo=[`PLAIN`,`GROUP_VAR_INT`,`PLAIN_DICTIONARY`,`RLE`,`BIT_PACKED`,`DELTA_BINARY_PACKED`,`DELTA_LENGTH_BYTE_ARRAY`,`DELTA_BYTE_ARRAY`,`RLE_DICTIONARY`,`BYTE_STREAM_SPLIT`],ko=[`REQUIRED`,`OPTIONAL`,`REPEATED`],Ao=[`UTF8`,`MAP`,`MAP_KEY_VALUE`,`LIST`,`ENUM`,`DECIMAL`,`DATE`,`TIME_MILLIS`,`TIME_MICROS`,`TIMESTAMP_MILLIS`,`TIMESTAMP_MICROS`,`UINT_8`,`UINT_16`,`UINT_32`,`UINT_64`,`INT_8`,`INT_16`,`INT_32`,`INT_64`,`JSON`,`BSON`,`INTERVAL`],jo=[`UNCOMPRESSED`,`SNAPPY`,`GZIP`,`LZO`,`BROTLI`,`LZ4`,`ZSTD`,`LZ4_RAW`],Mo=[`DATA_PAGE`,`INDEX_PAGE`,`DICTIONARY_PAGE`,`DATA_PAGE_V2`],No=[`SPHERICAL`,`VINCENTY`,`THOMAS`,`ANDOYER`,`KARNEY`]}));function Fo(e){let t=Io(e);if(t.type===1)return{type:`Point`,coordinates:Lo(e,t)};if(t.type===2)return{type:`LineString`,coordinates:Ro(e,t)};if(t.type===3)return{type:`Polygon`,coordinates:zo(e,t)};if(t.type===4){let n=[];for(let r=0;r<t.count;r++)n.push(Lo(e,Io(e)));return{type:`MultiPoint`,coordinates:n}}else if(t.type===5){let n=[];for(let r=0;r<t.count;r++)n.push(Ro(e,Io(e)));return{type:`MultiLineString`,coordinates:n}}else if(t.type===6){let n=[];for(let r=0;r<t.count;r++)n.push(zo(e,Io(e)));return{type:`MultiPolygon`,coordinates:n}}else if(t.type===7){let n=[];for(let r=0;r<t.count;r++)n.push(Fo(e));return{type:`GeometryCollection`,geometries:n}}else throw Error(`Unsupported geometry type: ${t.type}`)}function Io(e){let{view:t}=e,n=t.getUint8(e.offset++)===1,r=t.getUint32(e.offset,n);e.offset+=4;let i=r%1e3,a=Math.floor(r/1e3),o=0;i>1&&i<=7&&(o=t.getUint32(e.offset,n),e.offset+=4);let s=2;return a&&s++,a===3&&s++,{littleEndian:n,type:i,dim:s,count:o}}function Lo(e,t){let n=[];for(let r=0;r<t.dim;r++){let r=e.view.getFloat64(e.offset,t.littleEndian);e.offset+=8,n.push(r)}return n}function Ro(e,t){let n=[];for(let r=0;r<t.count;r++)n.push(Lo(e,t));return n}function zo(e,t){let{view:n}=e,r=[];for(let i=0;i<t.count;i++){let i=n.getUint32(e.offset,t.littleEndian);e.offset+=4,r.push(Ro(e,{...t,count:i}))}return r}var Bo=n((()=>{}));function Vo(e,t,n,r){if(t&&n.endsWith(`_DICTIONARY`)){let n=e;e instanceof Uint8Array&&!(t instanceof Uint8Array)&&(n=new t.constructor(e.length));for(let r=0;r<e.length;r++)n[r]=t[e[r]];return n}else return Ho(e,r)}function Ho(e,t){let{element:n,parsers:r,utf8:i=!0,schemaPath:a}=t,{type:o,converted_type:s,logical_type:c}=n;if(a?.some(e=>e.element.logical_type?.type===`VARIANT`)&&o===`BYTE_ARRAY`&&s!==`UTF8`&&c?.type!==`STRING`)return e;if(s===`DECIMAL`){let t=10**-(n.scale||0),r=Array(e.length);for(let n=0;n<r.length;n++)e[n]instanceof Uint8Array?r[n]=Uo(e[n])*t:r[n]=Number(e[n])*t;return r}if(!s&&o===`INT96`)return Array.from(e).map(e=>r.timestampFromNanoseconds(Wo(e)));if(s===`DATE`)return Array.from(e).map(e=>r.dateFromDays(e));if(s===`TIMESTAMP_MILLIS`)return Array.from(e).map(e=>r.timestampFromMilliseconds(e));if(s===`TIMESTAMP_MICROS`)return Array.from(e).map(e=>r.timestampFromMicroseconds(e));if(s===`JSON`)return e.map(e=>JSON.parse(Ko.decode(e)));if(s===`BSON`)throw Error(`parquet bson not supported`);if(s===`INTERVAL`)throw Error(`parquet interval not supported`);if(c?.type===`GEOMETRY`)return e.map(e=>r.geometryFromBytes(e));if(c?.type===`GEOGRAPHY`)return e.map(e=>r.geographyFromBytes(e));if(s===`UTF8`||c?.type===`STRING`||i&&o===`BYTE_ARRAY`)return e.map(e=>r.stringFromBytes(e));if(s===`UINT_64`||c?.type===`INTEGER`&&c.bitWidth===64&&!c.isSigned){if(e instanceof BigInt64Array)return new BigUint64Array(e.buffer,e.byteOffset,e.length);let t=new BigUint64Array(e.length);for(let n=0;n<t.length;n++)t[n]=BigInt(e[n]);return t}if(s===`UINT_32`||c?.type===`INTEGER`&&c.bitWidth===32&&!c.isSigned){if(e instanceof Int32Array)return new Uint32Array(e.buffer,e.byteOffset,e.length);let t=new Uint32Array(e.length);for(let n=0;n<t.length;n++)t[n]=e[n];return t}if(c?.type===`FLOAT16`)return Array.from(e).map(Go);if(c?.type===`TIMESTAMP`){let{unit:t}=c,n=r.timestampFromMilliseconds;t===`MICROS`&&(n=r.timestampFromMicroseconds),t===`NANOS`&&(n=r.timestampFromNanoseconds);let i=Array(e.length);for(let t=0;t<i.length;t++)i[t]=n(e[t]);return i}return e}function Uo(e){if(!e.length)return 0;let t=0n;for(let n of e)t=t*256n+BigInt(n);let n=e.length*8;return t>=2n**BigInt(n-1)&&(t-=2n**BigInt(n)),Number(t)}function Wo(e){let t=(e>>64n)-2440588n,n=e&18446744073709551615n;return t*86400000000000n+n}function Go(e){if(!e)return;let t=e[1]<<8|e[0],n=t>>15?-1:1,r=t>>10&31,i=t&1023;return r===0?n*2**-14*(i/1024):r===31?i?NaN:n*(1/0):n*2**(r-15)*(1+i/1024)}var Ko,qo,Jo=n((()=>{Bo(),Ko=new TextDecoder,qo={timestampFromMilliseconds(e){return new Date(Number(e))},timestampFromMicroseconds(e){return new Date(Number(e/1000n))},timestampFromNanoseconds(e){return new Date(Number(e/1000000n))},dateFromDays(e){return new Date(e*864e5)},stringFromBytes(e){return e&&Ko.decode(e)},geometryFromBytes(e){return e&&Fo({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})},geographyFromBytes(e){return e&&Fo({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})}}}));function Yo(e,t,n){let r=e[t],i=[],a=1;if(r.num_children)for(;i.length<r.num_children;){let r=e[t+a],o=Yo(e,t+a,[...n,r.name]);a+=o.count,i.push(o)}return{count:a,element:r,children:i,path:n}}function Xo(e,t){let n=Yo(e,0,[]),r=[n];for(let e of t){let i=n.children.find(t=>t.element.name===e);if(!i)throw Error(`parquet schema element not found: ${t}`);r.push(i),n=i}return r}function Zo(e){let t=[];function n(e){if(e.children.length)for(let t of e.children)n(t);else t.push(e.path.join(`.`))}return n(e),t}function Qo(e){let t=0;for(let{element:n}of e)n.repetition_type===`REPEATED`&&t++;return t}function $o(e){let t=0;for(let{element:n}of e.slice(1))n.repetition_type!==`REQUIRED`&&t++;return t}function es(e){if(!e||e.element.converted_type!==`LIST`||e.children.length>1)return!1;let t=e.children[0];return!(t.children.length>1||t.element.repetition_type!==`REPEATED`)}function ts(e){if(!e||e.element.converted_type!==`MAP`||e.children.length>1)return!1;let t=e.children[0];return!(t.children.length!==2||t.element.repetition_type!==`REPEATED`||t.children.find(e=>e.element.name===`key`)?.element.repetition_type===`REPEATED`||t.children.find(e=>e.element.name===`value`)?.element.repetition_type===`REPEATED`)}function ns(e){if(e.length!==2)return!1;let[,t]=e;return!(t.element.repetition_type===`REPEATED`||t.children.length)}var rs=n((()=>{}));function is(e){let t=0,n={};for(;e.offset<e.view.byteLength;){let[r,i,a]=us(e,t);if(t=a,r===ds.STOP)break;n[`field_${i}`]=as(e,r)}return n}function as(e,t){switch(t){case ds.TRUE:return!0;case ds.FALSE:return!1;case ds.BYTE:return e.view.getInt8(e.offset++);case ds.I16:case ds.I32:return cs(e);case ds.I64:return ls(e);case ds.DOUBLE:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case ds.BINARY:{let t=os(e),n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}case ds.LIST:{let t=e.view.getUint8(e.offset++),n=t&15,r=t>>4;r===15&&(r=os(e));let i=n===ds.TRUE||n===ds.FALSE,a=Array(r);for(let t=0;t<r;t++)a[t]=i?as(e,ds.BYTE)===1:as(e,n);return a}case ds.STRUCT:{let t={},n=0;for(;;){let[r,i,a]=us(e,n);if(n=a,r===ds.STOP)break;t[`field_${i}`]=as(e,r)}return t}default:throw Error(`thrift unhandled type: ${t}`)}}function os(e){let t=0,n=0;for(;;){let r=e.view.getUint8(e.offset++);if(t|=(r&127)<<n,!(r&128))return t;n+=7}}function ss(e){let t=0n,n=0n;for(;;){let r=e.view.getUint8(e.offset++);if(t|=BigInt(r&127)<<n,!(r&128))return t;n+=7n}}function cs(e){let t=os(e);return t>>>1^-(t&1)}function ls(e){let t=ss(e);return t>>1n^-(t&1n)}function us(e,t){let n=e.view.getUint8(e.offset++),r=n&15;if(r===ds.STOP)return[0,0,t];let i=n>>4,a=i?t+i:cs(e);return[r,a,a]}var ds,fs=n((()=>{ds={STOP:0,TRUE:1,FALSE:2,BYTE:3,I16:4,I32:5,I64:6,DOUBLE:7,BINARY:8,LIST:9,SET:10,MAP:11,STRUCT:12,UUID:13}}));function ps(e,t){let n=new Map,r=t?.find(({key:e})=>e===`geo`)?.value,i=(r&&JSON.parse(r)?.columns)??{};for(let[e,t]of Object.entries(i)){if(t.encoding!==`WKB`)continue;let r=t.edges===`spherical`?`GEOGRAPHY`:`GEOMETRY`,i=t.crs?.id??t.crs?.ids?.[0],a=i?`${i.authority}:${i.code.toString()}`:void 0;n.set(e,{type:r,crs:a})}for(let t=1;t<e.length;t++){let r=e[t],{logical_type:i,name:a,num_children:o,repetition_type:s,type:c}=r;if(o){t+=o;continue}c===`BYTE_ARRAY`&&i===void 0&&s!==`REPEATED`&&(r.logical_type=n.get(a))}}var ms=n((()=>{}));function hs(e){return e&&ws.decode(e)}async function gs(e,{parsers:t,initialFetchSize:n=Cs,geoparquet:r=!0}={}){if(!e||!(e.byteLength>=0))throw Error(`parquet expected AsyncBuffer`);let i=Math.max(0,e.byteLength-n),a=await e.slice(i,e.byteLength),o=new DataView(a);if(o.getUint32(a.byteLength-4,!0)!==827474256)throw Error(`parquet file invalid (footer != PAR1)`);let s=o.getUint32(a.byteLength-8,!0);if(s>e.byteLength-8)throw Error(`parquet metadata length ${s} exceeds available buffer ${e.byteLength-8}`);if(s+8>n){let n=e.byteLength-s-8,o=await e.slice(n,i),c=new ArrayBuffer(s+8),l=new Uint8Array(c);return l.set(new Uint8Array(o)),l.set(new Uint8Array(a),i-n),_s(c,{parsers:t,geoparquet:r})}else return _s(a,{parsers:t,geoparquet:r})}function _s(e,{parsers:t,geoparquet:n=!0}={}){if(!(e instanceof ArrayBuffer))throw Error(`parquet expected ArrayBuffer`);let r=new DataView(e);if(t={...qo,...t},r.byteLength<8)throw Error(`parquet file is too short`);if(r.getUint32(r.byteLength-4,!0)!==827474256)throw Error(`parquet file invalid (footer != PAR1)`);let i=r.byteLength-8,a=r.getUint32(i,!0);if(a>r.byteLength-8)throw Error(`parquet metadata length ${a} exceeds available buffer ${r.byteLength-8}`);let o=is({view:r,offset:i-a}),s=o.field_1,c=o.field_2.map(e=>({type:Do[e.field_1],type_length:e.field_2,repetition_type:ko[e.field_3],name:hs(e.field_4),num_children:e.field_5,converted_type:Ao[e.field_6],scale:e.field_7,precision:e.field_8,field_id:e.field_9,logical_type:ys(e.field_10)})),l=c.filter(e=>e.type),u=o.field_3,d=o.field_4.map(e=>({columns:e.field_1.map((e,n)=>({file_path:hs(e.field_1),file_offset:e.field_2,meta_data:e.field_3&&{type:Do[e.field_3.field_1],encodings:e.field_3.field_2?.map(e=>Oo[e]),path_in_schema:e.field_3.field_3.map(hs),codec:jo[e.field_3.field_4],num_values:e.field_3.field_5,total_uncompressed_size:e.field_3.field_6,total_compressed_size:e.field_3.field_7,key_value_metadata:e.field_3.field_8?.map(e=>({key:hs(e.field_1),value:hs(e.field_2)})),data_page_offset:e.field_3.field_9,index_page_offset:e.field_3.field_10,dictionary_page_offset:e.field_3.field_11,statistics:xs(e.field_3.field_12,l[n],t),encoding_stats:e.field_3.field_13?.map(e=>({page_type:Mo[e.field_1],encoding:Oo[e.field_2],count:e.field_3})),bloom_filter_offset:e.field_3.field_14,bloom_filter_length:e.field_3.field_15,size_statistics:e.field_3.field_16&&{unencoded_byte_array_data_bytes:e.field_3.field_16.field_1,repetition_level_histogram:e.field_3.field_16.field_2,definition_level_histogram:e.field_3.field_16.field_3},geospatial_statistics:e.field_3.field_17&&{bbox:e.field_3.field_17.field_1&&{xmin:e.field_3.field_17.field_1.field_1,xmax:e.field_3.field_17.field_1.field_2,ymin:e.field_3.field_17.field_1.field_3,ymax:e.field_3.field_17.field_1.field_4,zmin:e.field_3.field_17.field_1.field_5,zmax:e.field_3.field_17.field_1.field_6,mmin:e.field_3.field_17.field_1.field_7,mmax:e.field_3.field_17.field_1.field_8},geospatial_types:e.field_3.field_17.field_2}},offset_index_offset:e.field_4,offset_index_length:e.field_5,column_index_offset:e.field_6,column_index_length:e.field_7,crypto_metadata:e.field_8,encrypted_column_metadata:e.field_9})),total_byte_size:e.field_2,num_rows:e.field_3,sorting_columns:e.field_4?.map(e=>({column_idx:e.field_1,descending:e.field_2,nulls_first:e.field_3})),file_offset:e.field_5,total_compressed_size:e.field_6,ordinal:e.field_7})),f=o.field_5?.map(e=>({key:hs(e.field_1),value:hs(e.field_2)})),p=hs(o.field_6);return n&&ps(c,f),{version:s,schema:c,num_rows:u,row_groups:d,key_value_metadata:f,created_by:p,metadata_length:a}}function vs({schema:e}){return Xo(e,[])[0]}function ys(e){return e?.field_1?{type:`STRING`}:e?.field_2?{type:`MAP`}:e?.field_3?{type:`LIST`}:e?.field_4?{type:`ENUM`}:e?.field_5?{type:`DECIMAL`,scale:e.field_5.field_1,precision:e.field_5.field_2}:e?.field_6?{type:`DATE`}:e?.field_7?{type:`TIME`,isAdjustedToUTC:e.field_7.field_1,unit:bs(e.field_7.field_2)}:e?.field_8?{type:`TIMESTAMP`,isAdjustedToUTC:e.field_8.field_1,unit:bs(e.field_8.field_2)}:e?.field_10?{type:`INTEGER`,bitWidth:e.field_10.field_1,isSigned:e.field_10.field_2}:e?.field_11?{type:`NULL`}:e?.field_12?{type:`JSON`}:e?.field_13?{type:`BSON`}:e?.field_14?{type:`UUID`}:e?.field_15?{type:`FLOAT16`}:e?.field_16?{type:`VARIANT`,specification_version:e.field_16.field_1}:e?.field_17?{type:`GEOMETRY`,crs:hs(e.field_17.field_1)}:e?.field_18?{type:`GEOGRAPHY`,crs:hs(e.field_18.field_1),algorithm:No[e.field_18.field_2]}:e}function bs(e){if(e.field_1)return`MILLIS`;if(e.field_2)return`MICROS`;if(e.field_3)return`NANOS`;throw Error(`parquet time unit required`)}function xs(e,t,n){return e&&{max:Ss(e.field_1,t,n),min:Ss(e.field_2,t,n),null_count:e.field_3,distinct_count:e.field_4,max_value:Ss(e.field_5,t,n),min_value:Ss(e.field_6,t,n),is_max_value_exact:e.field_7,is_min_value_exact:e.field_8}}function Ss(e,t,n){let{type:r,converted_type:i,logical_type:a}=t;if(e===void 0)return e;if(r===`BOOLEAN`)return e[0]===1;if(r===`BYTE_ARRAY`)return n.stringFromBytes(e);let o=new DataView(e.buffer,e.byteOffset,e.byteLength);return r===`FLOAT`&&o.byteLength===4?o.getFloat32(0,!0):r===`DOUBLE`&&o.byteLength===8?o.getFloat64(0,!0):r===`INT32`&&i===`DATE`?n.dateFromDays(o.getInt32(0,!0)):r===`INT64`&&i===`TIMESTAMP_MILLIS`?n.timestampFromMilliseconds(o.getBigInt64(0,!0)):r===`INT64`&&i===`TIMESTAMP_MICROS`?n.timestampFromMicroseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`&&a?.unit===`NANOS`?n.timestampFromNanoseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`&&a?.unit===`MICROS`?n.timestampFromMicroseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`?n.timestampFromMilliseconds(o.getBigInt64(0,!0)):r===`INT32`&&o.byteLength===4?o.getInt32(0,!0):r===`INT64`&&o.byteLength===8?o.getBigInt64(0,!0):i===`DECIMAL`?Uo(e)*10**-(t.scale||0):a?.type===`FLOAT16`?Go(e):e}var Cs,ws,Ts=n((()=>{Po(),Jo(),rs(),fs(),ms(),Cs=1<<19,ws=new TextDecoder}));function Es(e,t){let n=1e4;for(let r=0;r<t.length;r+=n)e.push(...t.slice(r,r+n))}function Ds(e,t,n=!0){if(n?e===t:e==t)return!0;if(e instanceof Uint8Array&&t instanceof Uint8Array)return Ds(Array.from(e),Array.from(t),n);if(!e||!t||typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!Ds(e[r],t[r],n))return!1;return!0}if(typeof e!=`object`)return!1;let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let i of r)if(!Ds(e[i],t[i],n))return!1;return!0}function Os(e){if(!e)return[];if(e.length===1)return e[0];let t=[];for(let n of e)Es(t,n);return t}var ks=n((()=>{}));function As({rowGroup:e,physicalColumns:t,filter:n,strict:r=!0}){if(!n)return!1;if(`$and`in n&&Array.isArray(n.$and))return n.$and.some(n=>As({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$or`in n&&Array.isArray(n.$or))return n.$or.every(n=>As({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$nor`in n&&Array.isArray(n.$nor))return!1;for(let[i,a]of Object.entries(n)){let n=t.indexOf(i);if(n===-1)continue;let o=e.columns[n].meta_data?.statistics;if(!o)continue;let{min:s,max:c,min_value:l,max_value:u}=o,d=l===void 0?s:l,f=u===void 0?c:u;if(!(d===void 0||f===void 0)){for(let[e,t]of Object.entries(a||{}))if(e===`$gt`&&f<=t||e===`$gte`&&f<t||e===`$lt`&&d>=t||e===`$lte`&&d>t||e===`$eq`&&(t<d||t>f)||e===`$ne`&&Ds(d,f,r)&&Ds(d,t,r)||e===`$in`&&Array.isArray(t)&&t.every(e=>e<d||e>f)||e===`$nin`&&Array.isArray(t)&&Ds(d,f,r)&&t.includes(d))return!0}}return!1}var js=n((()=>{ks()}));function Ms({metadata:e,rowStart:t=0,rowEnd:n=1/0,columns:r,filter:i,filterStrict:a=!0,useOffsetIndex:o=!1}){if(!e)throw Error(`parquetPlan requires metadata`);let s=[],c=[],l=[],u=Zo(vs(e)),d=0;for(let f of e.row_groups){let e=Number(f.num_rows),p=d+e;if(e>0&&p>t&&d<n&&!As({rowGroup:f,physicalColumns:u,filter:i,strict:a})){let i=[],a=1/0,u=-1/0;for(let e of f.columns){let t=e.meta_data;if(e.file_path)throw Error(`parquet file_path not supported`);if(!t)throw Error(`parquet column metadata is undefined`);if(!r||r.includes(t.path_in_schema[0])){let n=t.dictionary_page_offset||t.data_page_offset,r=Number(n),s=Number(n+t.total_compressed_size);if(r<a&&(a=r),s>u&&(u=s),o&&e.offset_index_offset&&e.offset_index_length){let n=Number(e.offset_index_offset);i.push({columnMetadata:t,offsetIndex:{startByte:n,endByte:n+e.offset_index_length},bounds:{startByte:r,endByte:s}})}else i.push({columnMetadata:t,range:{startByte:r,endByte:s}})}}let p=Math.max(t-d,0),m=Math.min(n-d,e);s.push({chunks:i,rowGroup:f,groupStart:d,groupRows:e,selectStart:p,selectEnd:m});let h;for(let e of i)if(`offsetIndex`in e)l.push(e.offsetIndex);else{let{range:t}=e;r?c.push(t):h&&t.endByte-h.startByte<=Ps?h.endByte=t.endByte:(h&&c.push(h),h={...t})}h&&c.push(h)}d=p}return isFinite(n)||(n=d),c.push(...l),{metadata:e,rowStart:t,rowEnd:n,columns:r,fetches:c,groups:s}}function Ns(e,{fetches:t}){let n=t.map(({startByte:t,endByte:n})=>e.slice(t,n));return{byteLength:e.byteLength,slice(r,i=e.byteLength){let a=t.findIndex(({startByte:e,endByte:t})=>e<=r&&i<=t);if(a<0)return e.slice(r,i);if(t[a].startByte!==r||t[a].endByte!==i){let e=r-t[a].startByte,o=i-t[a].startByte;return n[a]instanceof Promise?n[a].then(t=>t.slice(e,o)):n[a].slice(e,o)}else return n[a]}}}var Ps,Fs=n((()=>{js(),Ts(),rs(),Ps=1<<21}));function Is(e,t=qo){if(Array.isArray(e))return e.map(e=>Is(e,t));if(typeof e!=`object`)return e;if(`metadata`in e){let n=zs(e.metadata),r=e.typed_value&&Ls(e.typed_value,n,t),i=e.value&&Vs(Rs(e.value),n,t);return r&&i?{...i,...r}:r??i}return e}function Ls(e,t,n){if(e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof Uint8Array)){if(`typed_value`in e)return Ls(e.typed_value,t,n);if(`value`in e&&e.value instanceof Uint8Array)return Vs(Rs(e.value),t,n);let r={};for(let[i,a]of Object.entries(e))r[i]=Ls(a,t,n);return r}return e instanceof Uint8Array?Vs(Rs(e),t,n):Array.isArray(e)?e.map(e=>Ls(e,t,n)):e}function Rs(e){return{view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0}}function zs(e){let t=Js.get(e.buffer);t||(t=new Map,Js.set(e.buffer,t));let n=`${e.byteOffset}:${e.byteLength}`,r=t.get(n);if(r)return r;let i=Rs(e),a=i.view.getUint8(i.offset++),o=a&15;if(o!==1)throw Error(`parquet unsupported variant metadata version: ${o}`);let s=(a>>4&1)==1,c=(a>>6&3)+1,l=Bs(i,c),u=Array(l+1);for(let e=0;e<u.length;e++)u[e]=Bs(i,c);let d=i.offset,f=Array(l);for(let t=0;t<l;t++){let n=u[t],r=u[t+1],i=new Uint8Array(e.buffer,e.byteOffset+d+n,r-n);f[t]=qs.decode(i)}let p={dictionary:f,sorted:s};return t.set(n,p),p}function Bs(e,t){let n=0;for(let r=0;r<t;r++)n|=e.view.getUint8(e.offset+r)<<r*8;return e.offset+=t,n}function Vs(e,t,n){let r=e.view.getUint8(e.offset++),i=r&3,a=r>>2;if(i===0)return Hs(e,a,n);if(i===2)return Us(e,a,t,n);if(i===3)return Ws(e,a,t,n);let o=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,a);return e.offset+=a,qs.decode(o)}function Hs(e,t,n){switch(t){case 0:return null;case 1:return!0;case 2:return!1;case 3:{let t=e.view.getInt8(e.offset);return e.offset+=1,t}case 4:{let t=e.view.getInt16(e.offset,!0);return e.offset+=2,t}case 5:{let t=e.view.getInt32(e.offset,!0);return e.offset+=4,t}case 6:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,t}case 7:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case 8:return Gs(e,4);case 9:return Gs(e,8);case 10:return Gs(e,16);case 11:{let t=e.view.getInt32(e.offset,!0);return e.offset+=4,n.dateFromDays(t)}case 12:case 13:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromMicroseconds(t)}case 14:{let t=e.view.getFloat32(e.offset,!0);return e.offset+=4,t}case 15:return Ks(e);case 16:{let t=Ks(e);return qs.decode(t)}case 17:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,t}case 18:case 19:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromNanoseconds(t)}case 20:{let t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,16);e.offset+=16;let n=Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``);return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}default:throw Error(`parquet unsupported variant primitive type: ${t}`)}}function Us(e,t,n,r){let i=(t&3)+1,a=(t>>2&3)+1,o=t>>4&1?Bs(e,4):e.view.getUint8(e.offset++),s=Array(o);for(let t=0;t<o;t++)s[t]=Bs(e,a);let c=Array(o+1);for(let t=0;t<c.length;t++)c[t]=Bs(e,i);let l={};for(let t=0;t<o;t++){let i=n.dictionary[s[t]];l[i]=Vs({view:e.view,offset:e.offset+c[t]},n,r)}return e.offset+=c[c.length-1],l}function Ws(e,t,n,r){let i=t&3,a=t>>2&1,o=i+1,s=Bs(e,a?4:1),c=Array(s+1);for(let t=0;t<c.length;t++)c[t]=Bs(e,o);let l=e.offset,u=Array(s);for(let t=0;t<s;t++)u[t]=Vs({view:e.view,offset:l+c[t]},n,r);return e.offset=l+c[c.length-1],u}function Gs(e,t){let n=e.view.getUint8(e.offset);e.offset+=1;let r;if(t===4)r=BigInt(e.view.getInt32(e.offset,!0)),e.offset+=4;else if(t===8)r=e.view.getBigInt64(e.offset,!0),e.offset+=8;else{let t=e.view.getBigUint64(e.offset,!0);r=e.view.getBigInt64(e.offset+8,!0)<<64n|t,e.offset+=16}return Number(r)*10**-n}function Ks(e){let t=e.view.getUint32(e.offset,!0);e.offset+=4;let n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}var qs,Js,Ys=n((()=>{Jo(),qs=new TextDecoder,Js=new WeakMap}));function Xs(e,t,n,r,i){let a=$o(i);if(!t?.length&&!n.length){if(!a||!r.length)return r;t=Array(r.length).fill(a)}let o=t?.length||n.length,s=i.map(({element:e})=>e.repetition_type),c=0,l=[e],u=e,d=0,f=0,p=0;if(n[0])for(;d<s.length-2&&p<n[0];)d++,s[d]!==`REQUIRED`&&(u=u.at(-1),l.push(u),f++),s[d]===`REPEATED`&&p++;for(let e=0;e<o;e++){let i=t?.length?t[e]:a,o=n[e];for(;d&&(o<p||s[d]!==`REPEATED`);)s[d]!==`REQUIRED`&&(l.pop(),f--),s[d]===`REPEATED`&&p--,d--;for(u=l.at(-1);(d<s.length-2||s[d+1]===`REPEATED`)&&(f<i||s[d+1]===`REQUIRED`);){if(d++,s[d]!==`REQUIRED`){let e=[];u.push(e),u=e,l.push(e),f++}s[d]===`REPEATED`&&p++}i===a?u.push(r[c++]):d===s.length-2?u.push(null):u.push([])}if(!e.length)for(let e=0;e<a;e++){let e=[];u.push(e),u=e}return e}function Zs(e,t,n,r=0){let i=t.path.join(`.`),a=t.element.repetition_type===`OPTIONAL`,o=a?r+1:r;if(es(t)){let s=t.children[0],c=o;s.children.length===1&&(s=s.children[0],c++),Zs(e,s,n,c);let l=s.path.join(`.`),u=e.get(l);if(!u)throw Error(`parquet list column missing values`);a&&Qs(u,r),e.set(i,u),e.delete(l);return}if(ts(t)){let s=t.children[0].element.name;Zs(e,t.children[0].children[0],n,o+1),Zs(e,t.children[0].children[1],n,o+1);let c=e.get(`${i}.${s}.key`),l=e.get(`${i}.${s}.value`);if(!c)throw Error(`parquet map column missing keys`);if(!l)throw Error(`parquet map column missing values`);if(c.length!==l.length)throw Error(`parquet map column key/value length mismatch`);let u=$s(c,l,o);a&&Qs(u,r),e.delete(`${i}.${s}.key`),e.delete(`${i}.${s}.value`),e.set(i,u);return}if(t.children.length){let o=t.element.repetition_type===`REQUIRED`?r:r+1,s={};for(let r of t.children){Zs(e,r,n,o);let t=e.get(r.path.join(`.`));if(!t)throw Error(`parquet struct missing child data`);s[r.element.name]=t}for(let n of t.children)e.delete(n.path.join(`.`));let c=ec(s,o);t.element.logical_type?.type===`VARIANT`&&(c=Is(c,n)),a&&Qs(c,r),e.set(i,c)}}function Qs(e,t){for(let n=0;n<e.length;n++)t?Qs(e[n],t-1):e[n]=e[n][0]}function $s(e,t,n){let r=[];for(let i=0;i<e.length;i++)if(n)r.push($s(e[i],t[i],n-1));else if(e[i]){let n={};for(let r=0;r<e[i].length;r++){let a=t[i][r];n[e[i][r]]=a===void 0?null:a}r.push(n)}else r.push(void 0);return r}function ec(e,t){let n=Object.keys(e),r=e[n[0]]?.length,i=[];for(let a=0;a<r;a++){let o={};for(let t of n){if(e[t].length!==r)throw Error(`parquet struct parsing error`);o[t]=e[t][a]}t?i.push(ec(o,t-1)):i.push(o)}return i}var tc=n((()=>{rs(),Ys()}));function nc(e,t,n){let r=n instanceof Int32Array,i=os(e),a=os(e);os(e);let o=ls(e),s=0;n[s++]=r?Number(o):o;let c=i/a;for(;s<t;){let i=ls(e),l=new Uint8Array(a);for(let t=0;t<a;t++)l[t]=e.view.getUint8(e.offset++);for(let u=0;u<a&&s<t;u++){let a=BigInt(l[u]);if(a){let l=0n,u=c,d=(1n<<a)-1n;for(;u&&s<t;){let t=BigInt(e.view.getUint8(e.offset))>>l&d;for(l+=a;l>=8;)l-=8n,e.offset++,l&&(t|=BigInt(e.view.getUint8(e.offset))<<a-l&d);let c=i+t;o+=c,n[s++]=r?Number(o):o,u--}u&&(e.offset+=Math.ceil((u*Number(a)+Number(l))/8))}else for(let e=0;e<c&&s<t;e++)o+=i,n[s++]=r?Number(o):o}}}function rc(e,t,n){let r=new Int32Array(t);nc(e,t,r);for(let i=0;i<t;i++)n[i]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,r[i]),e.offset+=r[i]}function ic(e,t,n){let r=new Int32Array(t);nc(e,t,r);let i=new Int32Array(t);nc(e,t,i);for(let a=0;a<t;a++){let t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,i[a]);r[a]?(n[a]=new Uint8Array(r[a]+i[a]),n[a].set(n[a-1].subarray(0,r[a])),n[a].set(t,r[a])):n[a]=t,e.offset+=i[a]}}var ac=n((()=>{fs()}));function oc(e){return 32-Math.clz32(e)}function sc(e,t,n,r){r===void 0&&(r=e.view.getUint32(e.offset,!0),e.offset+=4);let i=e.offset,a=0;for(;a<n.length;){let r=os(e);if(r&1)a=lc(e,r,t,n,a);else{let i=r>>>1;cc(e,i,t,n,a),a+=i}}e.offset=i+r}function cc(e,t,n,r,i){let a=n+7>>3,o=0;for(let t=0;t<a;t++)o|=e.view.getUint8(e.offset++)<<(t<<3);for(let e=0;e<t;e++)r[i+e]=o}function lc(e,t,n,r,i){let a=t>>1<<3,o=(1<<n)-1,s=0;if(e.offset<e.view.byteLength)s=e.view.getUint8(e.offset++);else if(o)throw Error(`parquet bitpack offset ${e.offset} out of range`);let c=8,l=0;for(;a;)l>8?(l-=8,c-=8,s>>>=8):c-l<n?(s|=e.view.getUint8(e.offset)<<c,e.offset++,c+=8):(i<r.length&&(r[i++]=s>>l&o),a--,l+=n);return i}function uc(e,t,n,r){let i=dc(n,r),a=new Uint8Array(t*i);for(let n=0;n<i;n++)for(let r=0;r<t;r++)a[r*i+n]=e.view.getUint8(e.offset++);if(n===`FLOAT`)return new Float32Array(a.buffer);if(n===`DOUBLE`)return new Float64Array(a.buffer);if(n===`INT32`)return new Int32Array(a.buffer);if(n===`INT64`)return new BigInt64Array(a.buffer);if(n===`FIXED_LEN_BYTE_ARRAY`){let e=Array(t);for(let n=0;n<t;n++)e[n]=a.subarray(n*i,(n+1)*i);return e}throw Error(`parquet byte_stream_split unsupported type: ${n}`)}function dc(e,t){switch(e){case`INT32`:case`FLOAT`:return 4;case`INT64`:case`DOUBLE`:return 8;case`FIXED_LEN_BYTE_ARRAY`:if(!t)throw Error(`parquet byteWidth missing type_length`);return t;default:throw Error(`parquet unsupported type: ${e}`)}}var fc=n((()=>{fs()}));function pc(e,t,n,r){if(n===0)return[];if(t===`BOOLEAN`)return mc(e,n);if(t===`INT32`)return hc(e,n);if(t===`INT64`)return gc(e,n);if(t===`INT96`)return _c(e,n);if(t===`FLOAT`)return vc(e,n);if(t===`DOUBLE`)return yc(e,n);if(t===`BYTE_ARRAY`)return bc(e,n);if(t===`FIXED_LEN_BYTE_ARRAY`){if(!r)throw Error(`parquet missing fixed length`);return xc(e,n,r)}else throw Error(`parquet unhandled type: ${t}`)}function mc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.offset+(r/8|0),i=r%8;n[r]=(e.view.getUint8(t)&1<<i)!=0}return e.offset+=Math.ceil(t/8),n}function hc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Int32Array(Sc(e.view.buffer,e.view.byteOffset+e.offset,t*4)):new Int32Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*4,n}function gc(e,t){let n=(e.view.byteOffset+e.offset)%8?new BigInt64Array(Sc(e.view.buffer,e.view.byteOffset+e.offset,t*8)):new BigInt64Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*8,n}function _c(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.view.getBigInt64(e.offset+r*12,!0),i=e.view.getInt32(e.offset+r*12+8,!0);n[r]=BigInt(i)<<64n|t}return e.offset+=t*12,n}function vc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Float32Array(Sc(e.view.buffer,e.view.byteOffset+e.offset,t*4)):new Float32Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*4,n}function yc(e,t){let n=(e.view.byteOffset+e.offset)%8?new Float64Array(Sc(e.view.buffer,e.view.byteOffset+e.offset,t*8)):new Float64Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*8,n}function bc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.view.getUint32(e.offset,!0);e.offset+=4,n[r]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t),e.offset+=t}return n}function xc(e,t,n){let r=Array(t);for(let i=0;i<t;i++)r[i]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,n),e.offset+=n;return r}function Sc(e,t,n){let r=new ArrayBuffer(n);return new Uint8Array(r).set(new Uint8Array(e,t,n)),r}var Cc=n((()=>{}));function wc(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[t+a]}function Tc(e,t){let n=e.byteLength,r=t.byteLength,i=0,a=0;for(;i<n;){let t=e[i];if(i++,t<128)break}if(r&&i>=n)throw Error(`invalid snappy length header`);for(;i<n;){let r=e[i],o=0;if(i++,i>=n)throw Error(`missing eof marker`);if(r&3){let s=0;switch(r&3){case 1:o=(r>>>2&7)+4,s=e[i]+(r>>>5<<8),i++;break;case 2:if(n<=i+1)throw Error(`snappy error end of input`);o=(r>>>2)+1,s=e[i]+(e[i+1]<<8),i+=2;break;case 3:if(n<=i+3)throw Error(`snappy error end of input`);o=(r>>>2)+1,s=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),i+=4;break;default:break}if(s===0||isNaN(s))throw Error(`invalid offset ${s} pos ${i} inputLength ${n}`);if(s>a)throw Error(`cannot copy from before start of buffer`);wc(t,a-s,t,a,o),a+=o}else{let o=(r>>>2)+1;if(o>60){if(i+3>=n)throw Error(`snappy error literal pos + 3 >= inputLength`);let t=o-60;o=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),o=(o&Ec[t])+1,i+=t}if(i+o>n)throw Error(`snappy error literal exceeds input length`);wc(e,i,t,a,o),i+=o,a+=o}}if(a!==r)throw Error(`premature end of input`)}var Ec,Dc=n((()=>{Ec=[0,255,65535,16777215,4294967295]}));function Oc(e,t,{type:n,element:r,schemaPath:i}){let a=new DataView(e.buffer,e.byteOffset,e.byteLength),o={view:a,offset:0},s,c=kc(o,t,i),{definitionLevels:l,numNulls:u}=Ac(o,t,i),d=t.num_values-u;if(t.encoding===`PLAIN`)s=pc(o,n,d,r.type_length);else if(t.encoding===`PLAIN_DICTIONARY`||t.encoding===`RLE_DICTIONARY`||t.encoding===`RLE`){let e=n===`BOOLEAN`?1:a.getUint8(o.offset++);e?(s=Array(d),n===`BOOLEAN`?(sc(o,e,s),s=s.map(e=>!!e)):sc(o,e,s,a.byteLength-o.offset)):s=new Uint8Array(d)}else if(t.encoding===`BYTE_STREAM_SPLIT`)s=uc(o,d,n,r.type_length);else if(t.encoding===`DELTA_BINARY_PACKED`)s=n===`INT32`?new Int32Array(d):new BigInt64Array(d),nc(o,d,s);else if(t.encoding===`DELTA_LENGTH_BYTE_ARRAY`)s=Array(d),rc(o,d,s);else throw Error(`parquet unsupported encoding: ${t.encoding}`);return{definitionLevels:l,repetitionLevels:c,dataPage:s}}function kc(e,t,n){if(n.length>1){let r=Qo(n);if(r){let n=Array(t.num_values);return sc(e,oc(r),n),n}}return[]}function Ac(e,t,n){let r=$o(n);if(!r)return{definitionLevels:[],numNulls:0};let i=Array(t.num_values);sc(e,oc(r),i);let a=t.num_values;for(let e of i)e===r&&a--;return a===0&&(i.length=0),{definitionLevels:i,numNulls:a}}function jc(e,t,n,r){let i,a=r?.[n];if(n===`UNCOMPRESSED`)i=e;else if(a)i=a(e,t);else if(n===`SNAPPY`)i=new Uint8Array(t),Tc(e,i);else throw Error(`parquet unsupported compression codec: ${n}`);if(i?.length!==t)throw Error(`parquet decompressed page length ${i?.length} does not match header ${t}`);return i}function Mc(e,t,n){let r={view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0},{type:i,element:a,schemaPath:o,codec:s,compressors:c}=n,l=t.data_page_header_v2;if(!l)throw Error(`parquet data page header v2 is undefined`);let u=Nc(r,l,o);r.offset=l.repetition_levels_byte_length;let d=Pc(r,l,o),f=t.uncompressed_page_size-l.definition_levels_byte_length-l.repetition_levels_byte_length,p=e.subarray(r.offset);l.is_compressed!==!1&&(p=jc(p,f,s,c));let m=new DataView(p.buffer,p.byteOffset,p.byteLength),h={view:m,offset:0},g,_=l.num_values-l.num_nulls;if(l.encoding===`PLAIN`)g=pc(h,i,_,a.type_length);else if(l.encoding===`RLE`)g=Array(_),sc(h,1,g),g=g.map(e=>!!e);else if(l.encoding===`PLAIN_DICTIONARY`||l.encoding===`RLE_DICTIONARY`){let e=m.getUint8(h.offset++);g=Array(_),sc(h,e,g,f-1)}else if(l.encoding===`DELTA_BINARY_PACKED`)g=i===`INT32`?new Int32Array(_):new BigInt64Array(_),nc(h,_,g);else if(l.encoding===`DELTA_LENGTH_BYTE_ARRAY`)g=Array(_),rc(h,_,g);else if(l.encoding===`DELTA_BYTE_ARRAY`)g=Array(_),ic(h,_,g);else if(l.encoding===`BYTE_STREAM_SPLIT`)g=uc(h,_,i,a.type_length);else throw Error(`parquet unsupported encoding: ${l.encoding}`);return{definitionLevels:d,repetitionLevels:u,dataPage:g}}function Nc(e,t,n){let r=Qo(n);if(!r)return[];let i=Array(t.num_values);return sc(e,oc(r),i,t.repetition_levels_byte_length),i}function Pc(e,t,n){let r=$o(n);if(r){let n=Array(t.num_values);return sc(e,oc(r),n,t.definition_levels_byte_length),n}}var Fc=n((()=>{ac(),fc(),Cc(),rs(),Dc()}));function Ic(e,{groupStart:t,selectStart:n,selectEnd:r},i,a){let{pathInSchema:o,schemaPath:s}=i,c=ns(s),l=[],u,d,f=0,p=0,m=a&&(()=>{d&&a({pathInSchema:o,columnData:d,rowStart:t+f-d.length,rowEnd:t+f})});for(;(c?f<r:e.offset<e.view.byteLength-1)&&!(e.offset>=e.view.byteLength-1);){let t=Rc(e);if(t.type===`DICTIONARY_PAGE`){let{data:n}=Lc(e,t,i,u,void 0,0);n&&(u=Ho(n,i))}else{let r=d?.length||0,a=Lc(e,t,i,u,d,n-f);a.skipped?(l.length||(p+=a.skipped),f+=a.skipped):a.data&&d===a.data?f+=a.data.length-r:a.data&&a.data.length&&(m?.(),l.push(a.data),f+=a.data.length,d=a.data)}}return m?.(),{data:l,skipped:p}}function Lc(e,t,n,r,i,a){let{type:o,element:s,schemaPath:c,codec:l,compressors:u}=n,d=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t.compressed_page_size);if(e.offset+=t.compressed_page_size,t.type===`DATA_PAGE`){let e=t.data_page_header;if(!e)throw Error(`parquet data page header is undefined`);if(a>e.num_values&&ns(c))return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:f}=Oc(jc(d,Number(t.uncompressed_page_size),l,u),e,n),p=Vo(f,r,e.encoding,n);return{skipped:0,data:Xs(Array.isArray(i)?i:[],o,s,p,c)}}else if(t.type===`DATA_PAGE_V2`){let e=t.data_page_header_v2;if(!e)throw Error(`parquet data page header v2 is undefined`);if(a>e.num_rows)return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:l}=Mc(d,t,n),u=Vo(l,r,e.encoding,n);return{skipped:0,data:Xs(Array.isArray(i)?i:[],o,s,u,c)}}else if(t.type===`DICTIONARY_PAGE`){let e=t.dictionary_page_header;if(!e)throw Error(`parquet dictionary page header is undefined`);let n=jc(d,Number(t.uncompressed_page_size),l,u);return{skipped:0,data:pc({view:new DataView(n.buffer,n.byteOffset,n.byteLength),offset:0},o,e.num_values,s.type_length)}}else throw Error(`parquet unsupported page type: ${t.type}`)}function Rc(e){let t=is(e);return{type:Mo[t.field_1],uncompressed_page_size:t.field_2,compressed_page_size:t.field_3,crc:t.field_4,data_page_header:t.field_5&&{num_values:t.field_5.field_1,encoding:Oo[t.field_5.field_2],definition_level_encoding:Oo[t.field_5.field_3],repetition_level_encoding:Oo[t.field_5.field_4],statistics:t.field_5.field_5&&{max:t.field_5.field_5.field_1,min:t.field_5.field_5.field_2,null_count:t.field_5.field_5.field_3,distinct_count:t.field_5.field_5.field_4,max_value:t.field_5.field_5.field_5,min_value:t.field_5.field_5.field_6}},index_page_header:t.field_6,dictionary_page_header:t.field_7&&{num_values:t.field_7.field_1,encoding:Oo[t.field_7.field_2],is_sorted:t.field_7.field_3},data_page_header_v2:t.field_8&&{num_values:t.field_8.field_1,num_nulls:t.field_8.field_2,num_rows:t.field_8.field_3,encoding:Oo[t.field_8.field_4],definition_levels_byte_length:t.field_8.field_5,repetition_levels_byte_length:t.field_8.field_6,is_compressed:t.field_8.field_7===void 0?!0:t.field_8.field_7,statistics:t.field_8.field_8}}}var zc=n((()=>{tc(),Po(),Jo(),Fc(),Cc(),rs(),fs()}));function Bc(e){let t=is(e);return{page_locations:t.field_1.map(Vc),unencoded_byte_array_data_bytes:t.field_2}}function Vc(e){return{offset:e.field_1,compressed_page_size:e.field_2,first_row_index:e.field_3}}var Hc=n((()=>{fs()}));function Uc(e,{metadata:t},n){let{file:r,compressors:i,utf8:a}=e,o=[],s={...qo,...e.parsers};for(let c of n.chunks){let{columnMetadata:l}=c,u=Xo(t.schema,l.path_in_schema),d={pathInSchema:l.path_in_schema,type:l.type,element:u[u.length-1].element,schemaPath:u,codec:l.codec,parsers:s,compressors:i,utf8:a};if(!(`offsetIndex`in c)){o.push({pathInSchema:l.path_in_schema,data:Promise.resolve(r.slice(c.range.startByte,c.range.endByte)).then(t=>Ic({view:new DataView(t),offset:0},n,d,e.onPage))});continue}o.push({pathInSchema:l.path_in_schema,data:Promise.resolve(r.slice(c.offsetIndex.startByte,c.offsetIndex.endByte)).then(async t=>{let i=Bc({view:new DataView(t),offset:0}),{selectStart:a,selectEnd:o}=n,s=i.page_locations,c=NaN,l=NaN,u=0;for(let e=0;e<s.length;e++){let t=s[e],r=Number(t.first_row_index),i=e+1<s.length?Number(s[e+1].first_row_index):n.groupRows;r<o&&i>a&&(Number.isNaN(c)&&(c=Number(t.offset),u=r),l=Number(t.offset)+t.compressed_page_size)}let f=await r.slice(c,l),{data:p,skipped:m}=Ic({view:new DataView(f),offset:0},u?{...n,groupStart:n.groupStart+u,selectStart:n.selectStart-u,selectEnd:n.selectEnd-u}:n,d,e.onPage);return{data:p,skipped:u+m}})})}return{groupStart:n.groupStart,groupRows:n.groupRows,asyncColumns:o}}function Wc(e,t,n){let{asyncColumns:r}=e;n={...qo,...n};let i=[];for(let e of t.children)if(e.children.length){let t=r.filter(t=>t.pathInSchema[0]===e.element.name);if(!t.length)continue;let a=new Map,o=Promise.all(t.map(e=>e.data.then(({data:t})=>{a.set(e.pathInSchema.join(`.`),Os(t))}))).then(()=>{Zs(a,e,n);let t=a.get(e.path.join(`.`));if(!t)throw Error(`parquet column data not assembled`);return{data:[t],skipped:0}});i.push({pathInSchema:e.path,data:o})}else{let t=r.find(t=>t.pathInSchema[0]===e.element.name);t&&i.push(t)}return{...e,asyncColumns:i}}var Gc=n((()=>{tc(),zc(),Jo(),Hc(),rs(),ks()})),Kc=r({parquetRead:()=>Qc,parquetReadObjects:()=>$c});function qc(e){if(!e.metadata)throw Error(`parquet requires metadata`);let t=Ms(e);return e.file=Ns(e.file,t),t.groups.map(n=>Uc(e,t,n))}function Jc(e){if(!e)return[];if(e.length===1)return e[0];let t=0;for(let n of e)t+=n.length;let n=Array(t),r=0;for(let t of e){for(let e=0;e<t.length;e++)n[r+e]=t[e];r+=t.length}return n}function Yc(e){let t=e.join(``),n=el.get(t);if(n)return n;let r=e.map((e,t)=>JSON.stringify(e)+`: columnData[`+t+`][row - columnSkipped[`+t+`]]`).join(`,
|
|
6
|
+
`)}function l(t){return t.map(u).join(e)}function u(e){return e==null?``:e instanceof Date?Ut(e):t.test(e+=``)?`"`+e.replace(/"/g,`""`)+`"`:e}return{parse:r,parseRows:i,format:o,formatBody:s,formatRows:c,formatRow:l,formatValue:u}}var Gt=Wt(` `);Gt.parse;var Kt=Gt.parseRows;Gt.format,Gt.formatBody,Gt.formatRows,Gt.formatRow,Gt.formatValue;function qt(e){return e}function Jt(e){if(e==null)return qt;var t,n,r=e.scale[0],i=e.scale[1],a=e.translate[0],o=e.translate[1];return function(e,s){s||(t=n=0);var c=2,l=e.length,u=Array(l);for(u[0]=(t+=e[0])*r+a,u[1]=(n+=e[1])*i+o;c<l;)u[c]=e[c],++c;return u}}function Yt(e,t){for(var n,r=e.length,i=r-t;i<--r;)n=e[i],e[i++]=e[r],e[r]=n}function Xt(e,t){return typeof t==`string`&&(t=e.objects[t]),t.type===`GeometryCollection`?{type:`FeatureCollection`,features:t.geometries.map(function(t){return Zt(e,t)})}:Zt(e,t)}function Zt(e,t){var n=t.id,r=t.bbox,i=t.properties==null?{}:t.properties,a=Qt(e,t);return n==null&&r==null?{type:`Feature`,properties:i,geometry:a}:r==null?{type:`Feature`,id:n,properties:i,geometry:a}:{type:`Feature`,id:n,bbox:r,properties:i,geometry:a}}function Qt(e,t){var n=Jt(e.transform),r=e.arcs;function i(e,t){t.length&&t.pop();for(var i=r[e<0?~e:e],a=0,o=i.length;a<o;++a)t.push(n(i[a],a));e<0&&Yt(t,o)}function a(e){return n(e)}function o(e){for(var t=[],n=0,r=e.length;n<r;++n)i(e[n],t);return t.length<2&&t.push(t[0]),t}function s(e){for(var t=o(e);t.length<4;)t.push(t[0]);return t}function c(e){return e.map(s)}function l(e){var t=e.type,n;switch(t){case`GeometryCollection`:return{type:t,geometries:e.geometries.map(l)};case`Point`:n=a(e.coordinates);break;case`MultiPoint`:n=e.coordinates.map(a);break;case`LineString`:n=o(e.arcs);break;case`MultiLineString`:n=e.arcs.map(o);break;case`Polygon`:n=c(e.arcs);break;case`MultiPolygon`:n=e.arcs.map(c);break;default:return null}return{type:t,coordinates:n}}return l(t)}function $t(e,t){var n={},r={},i={},a=[],o=-1;t.forEach(function(n,r){var i=e.arcs[n<0?~n:n],a;i.length<3&&!i[1][0]&&!i[1][1]&&(a=t[++o],t[o]=n,t[r]=a)}),t.forEach(function(e){var t=s(e),n=t[0],a=t[1],o,c;if(o=i[n])if(delete i[o.end],o.push(e),o.end=a,c=r[a]){delete r[c.start];var l=c===o?o:o.concat(c);r[l.start=o.start]=i[l.end=c.end]=l}else r[o.start]=i[o.end]=o;else if(o=r[a])if(delete r[o.start],o.unshift(e),o.start=n,c=i[n]){delete i[c.end];var u=c===o?o:c.concat(o);r[u.start=c.start]=i[u.end=o.end]=u}else r[o.start]=i[o.end]=o;else o=[e],r[o.start=n]=i[o.end=a]=o});function s(t){var n=e.arcs[t<0?~t:t],r=n[0],i;return e.transform?(i=[0,0],n.forEach(function(e){i[0]+=e[0],i[1]+=e[1]})):i=n[n.length-1],t<0?[i,r]:[r,i]}function c(e,t){for(var r in e){var i=e[r];delete t[i.start],delete i.start,delete i.end,i.forEach(function(e){n[e<0?~e:e]=1}),a.push(i)}}return c(i,r),c(r,i),t.forEach(function(e){n[e<0?~e:e]||a.push([e])}),a}function en(e){return Qt(e,tn.apply(this,arguments))}function tn(e,t,n){var r,i,a;if(arguments.length>1)r=nn(e,t,n);else for(i=0,r=Array(a=e.arcs.length);i<a;++i)r[i]=i;return{type:`MultiLineString`,arcs:$t(e,r)}}function nn(e,t,n){var r=[],i=[],a;function o(e){var t=e<0?~e:e;(i[t]||(i[t]=[])).push({i:e,g:a})}function s(e){e.forEach(o)}function c(e){e.forEach(s)}function l(e){e.forEach(c)}function u(e){switch(a=e,e.type){case`GeometryCollection`:e.geometries.forEach(u);break;case`LineString`:s(e.arcs);break;case`MultiLineString`:case`Polygon`:c(e.arcs);break;case`MultiPolygon`:l(e.arcs);break}}return u(t),i.forEach(n==null?function(e){r.push(e[0].i)}:function(e){n(e[0].g,e[e.length-1].g)&&r.push(e[0].i)}),r}function rn(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function an(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function on(e){let t,n,r;e.length===2?(t=e===rn||e===an?e:sn,n=e,r=e):(t=rn,n=(t,n)=>rn(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<0?i=t+1:a=t}while(i<a)}return i}function a(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<=0?i=t+1:a=t}while(i<a)}return i}function o(e,t,n=0,a=e.length){let o=i(e,t,n,a-1);return o>n&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function sn(){return 0}function cn(e){return e===null?NaN:+e}function*ln(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var un=on(rn),dn=un.right;un.left,on(cn).center;function fn(e,t){let n=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&++n;else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(i=+i)>=i&&++n}return n}function pn(e,t){let n=0,r,i=0,a=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(r=t-i,i+=r/++n,a+=r*(t-i));else{let o=-1;for(let s of e)(s=t(s,++o,e))!=null&&(s=+s)>=s&&(r=s-i,i+=r/++n,a+=r*(s-i))}if(n>1)return a/(n-1)}function mn(e,t){let n,r;if(t===void 0)for(let t of e)t!=null&&(n===void 0?t>=t&&(n=r=t):(n>t&&(n=t),r<t&&(r=t)));else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(n===void 0?a>=a&&(n=r=a):(n>a&&(n=a),r<a&&(r=a)))}return[n,r]}var hn=class extends Map{constructor(e,t=yn){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(gn(this,e))}has(e){return super.has(gn(this,e))}set(e,t){return super.set(_n(this,e),t)}delete(e){return super.delete(vn(this,e))}};function gn({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function _n({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function vn({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function yn(e){return typeof e==`object`&&e?e.valueOf():e}function bn(e){return e}function xn(e,...t){return Cn(e,bn,bn,t)}function Sn(e,...t){return Cn(e,Array.from,bn,t)}function Cn(e,t,n,r){return(function e(i,a){if(a>=r.length)return n(i);let o=new hn,s=r[a++],c=-1;for(let e of i){let t=s(e,++c,i),n=o.get(t);n?n.push(e):o.set(t,[e])}for(let[t,n]of o)o.set(t,e(n,a));return t(o)})(e,0)}function wn(e=rn){if(e===rn)return Tn;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function Tn(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}var En=Math.sqrt(50),Dn=Math.sqrt(10),On=Math.sqrt(2);function kn(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=En?10:a>=Dn?5:a>=On?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/l<e&&++s,c/l>t&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*l<e&&++s,c*l>t&&--c),c<s&&.5<=n&&n<2?kn(e,t,n*2):[s,c,l]}function An(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];let r=t<e,[i,a,o]=r?kn(t,e,n):kn(e,t,n);if(!(a>=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e<s;++e)c[e]=(a-e)/-o;else for(let e=0;e<s;++e)c[e]=(a-e)*o;else if(o<0)for(let e=0;e<s;++e)c[e]=(i+e)/-o;else for(let e=0;e<s;++e)c[e]=(i+e)*o;return c}function jn(e,t,n){return t=+t,e=+e,n=+n,kn(e,t,n)[2]}function Mn(e,t,n){t=+t,e=+e,n=+n;let r=t<e,i=r?jn(t,e,n):jn(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}function Nn(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n<t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n<i||n===void 0&&i>=i)&&(n=i)}return n}function Pn(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Fn(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?Tn:wn(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));Fn(e,t,u,d,i)}let a=e[t],o=n,s=r;for(In(e,n,t),i(e[r],a)>0&&In(e,n,r);o<s;){for(In(e,o,s),++o,--s;i(e[o],a)<0;)++o;for(;i(e[s],a)>0;)--s}i(e[n],a)===0?In(e,n,s):(++s,In(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function In(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function Ln(e,t,n){if(e=Float64Array.from(ln(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return Pn(e);if(t>=1)return Nn(e);var r,i=(r-1)*t,a=Math.floor(i),o=Nn(Fn(e,a).subarray(0,a+1));return o+(Pn(e.subarray(a+1))-o)*(i-a)}}function Rn(e,t,n=cn){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function zn(e,t){let n=0,r=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(++n,r+=t);else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(a=+a)>=a&&(++n,r+=a)}if(n)return r/n}function Bn(e,t){return Ln(e,.5,t)}function Vn(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r<i;)a[r]=e+r*n;return a}function Hn(e,t){let n=0;if(t===void 0)for(let t of e)(t=+t)&&(n+=t);else{let r=-1;for(let i of e)(i=+t(i,++r,e))&&(n+=i)}return n}function Un(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function Wn(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Gn(e){return e=Wn(Math.abs(e)),e?e[1]:NaN}function Kn(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function qn(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var Jn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Yn(e){if(!(t=Jn.exec(e)))throw Error(`invalid format: `+e);var t;return new Xn({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]})}Yn.prototype=Xn.prototype;function Xn(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}Xn.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 Zn(e){out:for(var t=e.length,n=1,r=-1,i;n<t;++n)switch(e[n]){case`.`:r=i=n;break;case`0`:r===0&&(r=n),i=n;break;default:if(!+e[n])break out;r>0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var Qn;function $n(e,t){var n=Wn(e,t);if(!n)return Qn=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(Qn=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+Wn(e,Math.max(0,t+a-1))[0]}function er(e,t){var n=Wn(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var tr={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:Un,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>er(e*100,t),r:er,s:$n,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function nr(e){return e}var rr=Array.prototype.map,ir=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function ar(e){var t=e.grouping===void 0||e.thousands===void 0?nr:Kn(rr.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?nr:qn(rr.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=Yn(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):tr[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=tr[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=Zn(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&Qn!==void 0?ir[8+Qn/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++o<l;)if(p=e.charCodeAt(o),48>p||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T<h?Array(h-T+1).join(u):``;switch(g&&m&&(e=t(E+e,E.length?h-r.length:1/0),E=``),d){case`<`:e=n+e+r+E;break;case`=`:e=n+E+e+r;break;case`^`:e=E.slice(0,T=E.length>>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(Gn(t)/3)))*3,r=10**-n,i=l((e=Yn(e),e.type=`f`,e),{suffix:ir[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var or,sr,cr;lr({thousands:`,`,grouping:[3],currency:[`$`,``]});function lr(e){return or=ar(e),sr=or.format,cr=or.formatPrefix,or}function ur(e){return Math.max(0,-Gn(Math.abs(e)))}function dr(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Gn(t)/3)))*3-Gn(Math.abs(e)))}function fr(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Gn(t)-Gn(e))+1}var pr=new Date,mr=new Date;function hr(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t<n-e?t:n},i.offset=(e,n)=>(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n<r)||!(a>0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(s<n&&n<r);return o},i.filter=n=>hr(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(pr.setTime(+t),mr.setTime(+r),e(pr),e(mr),Math.floor(n(pr,mr))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var gr=hr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);gr.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?hr(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):gr),gr.range;var _r=1e3,vr=_r*60,yr=vr*60,br=yr*24,xr=br*7,Sr=br*30,Cr=br*365,wr=hr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*_r)},(e,t)=>(t-e)/_r,e=>e.getUTCSeconds());wr.range;var Tr=hr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*_r)},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getMinutes());Tr.range;var Er=hr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getUTCMinutes());Er.range;var Dr=hr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*_r-e.getMinutes()*vr)},(e,t)=>{e.setTime(+e+t*yr)},(e,t)=>(t-e)/yr,e=>e.getHours());Dr.range;var Or=hr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*yr)},(e,t)=>(t-e)/yr,e=>e.getUTCHours());Or.range;var kr=hr(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*vr)/br,e=>e.getDate()-1);kr.range;var Ar=hr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/br,e=>e.getUTCDate()-1);Ar.range;var jr=hr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/br,e=>Math.floor(e/br));jr.range;function Mr(e){return hr(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*vr)/xr)}var Nr=Mr(0),Pr=Mr(1),Fr=Mr(2),Ir=Mr(3),Lr=Mr(4),Rr=Mr(5),zr=Mr(6);Nr.range,Pr.range,Fr.range,Ir.range,Lr.range,Rr.range,zr.range;function Br(e){return hr(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/xr)}var Vr=Br(0),Hr=Br(1),Ur=Br(2),Wr=Br(3),Gr=Br(4),Kr=Br(5),qr=Br(6);Vr.range,Hr.range,Ur.range,Wr.range,Gr.range,Kr.range,qr.range;var Jr=hr(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Jr.range;var Yr=hr(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());Yr.range;var Xr=hr(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Xr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:hr(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),Xr.range;var Zr=hr(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Zr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:hr(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),Zr.range;function Qr(e,t,n,r,i,a){let o=[[wr,1,_r],[wr,5,5*_r],[wr,15,15*_r],[wr,30,30*_r],[a,1,vr],[a,5,5*vr],[a,15,15*vr],[a,30,30*vr],[i,1,yr],[i,3,3*yr],[i,6,6*yr],[i,12,12*yr],[r,1,br],[r,2,2*br],[n,1,xr],[t,1,Sr],[t,3,3*Sr],[e,1,Cr]];function s(e,t,n){let r=t<e;r&&([e,t]=[t,e]);let i=n&&typeof n.range==`function`?n:c(e,t,n),a=i?i.range(e,+t+1):[];return r?a.reverse():a}function c(t,n,r){let i=Math.abs(n-t)/r,a=on(([,,e])=>e).right(o,i);if(a===o.length)return e.every(Mn(t/Cr,n/Cr,r));if(a===0)return gr.every(Math.max(Mn(t,n,r),1));let[s,c]=o[i/o[a-1][2]<o[a][2]/i?a-1:a];return s.every(c)}return[s,c]}var[$r,ei]=Qr(Zr,Yr,Vr,jr,Or,Er),[ti,ni]=Qr(Xr,Jr,Nr,kr,Dr,Tr),ri=`year`,ii=`quarter`,ai=`month`,oi=`week`,si=`date`,ci=`dayofyear`,li=`hours`,ui=`minutes`,di=`seconds`,fi=`milliseconds`;[ri,ii,ai,oi,si,`day`,ci,li,ui,di,fi].reduce((e,t,n)=>(e[t]=1+n,e),{}),`${ri}${ai}`,`${ri}${ai}${si}`,`${li}${ui}`,oi+``,oi+``;var pi={[ri]:Xr,[ii]:Jr.every(3),[ai]:Jr,[oi]:Nr,[si]:kr,day:kr,[ci]:kr,[li]:Dr,[ui]:Tr,[di]:wr,[fi]:gr},mi={[ri]:Zr,[ii]:Yr.every(3),[ai]:Yr,[oi]:Vr,[si]:Ar,day:Ar,[ci]:Ar,[li]:Or,[ui]:Er,[di]:wr,[fi]:gr};function hi(e){return pi[e]}function gi(e){return mi[e]}var _i=1e3,vi=_i*60,yi=vi*60,bi=yi*24;bi*7;var xi=bi*30;bi*365,[ri,ai,si,li,ui,di,fi].slice(0,-1).slice(0,-1).slice(0,-1).slice(0,-1),5*_i,15*_i,30*_i,5*vi,15*vi,30*vi,3*yi,6*yi,12*yi,3*xi;function Si(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Ci(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function wi(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function Ti(e){var t=e.dateTime,n=e.date,r=e.time,i=e.periods,a=e.days,o=e.shortDays,s=e.months,c=e.shortMonths,l=ji(i),u=Mi(i),d=ji(a),f=Mi(a),p=ji(o),m=Mi(o),h=ji(s),g=Mi(s),_=ji(c),v=Mi(c),y={a:oe,A:se,b:ce,B:le,c:null,d:$i,e:$i,f:ia,g:ha,G:_a,H:ea,I:ta,j:na,L:ra,m:aa,M:oa,p:ue,q:de,Q:Ba,s:Va,S:sa,u:ca,U:la,V:da,w:fa,W:pa,x:null,X:null,y:ma,Y:ga,Z:va,"%":za},b={a:fe,A:pe,b:me,B:he,c:null,d:ya,e:ya,f:wa,g:Fa,G:La,H:ba,I:xa,j:Sa,L:Ca,m:Ta,M:Ea,p:ge,q:_e,Q:Ba,s:Va,S:Da,u:Oa,U:ka,V:ja,w:Ma,W:Na,x:null,X:null,y:Pa,Y:Ia,Z:Ra,"%":za},x={a:E,A:ee,b:te,B:ne,c:re,d:Ui,e:Ui,f:Yi,g:zi,G:Ri,H:Gi,I:Gi,j:Wi,L:Ji,m:Hi,M:Ki,p:T,q:Vi,Q:Zi,s:Qi,S:qi,u:Pi,U:Fi,V:Ii,w:Ni,W:Li,x:ie,X:ae,y:zi,Y:Ri,Z:Bi,"%":Xi};y.x=S(n,y),y.X=S(r,y),y.c=S(t,y),b.x=S(n,b),b.X=S(r,b),b.c=S(t,b);function S(e,t){return function(n){var r=[],i=-1,a=0,o=e.length,s,c,l;for(n instanceof Date||(n=new Date(+n));++i<o;)e.charCodeAt(i)===37&&(r.push(e.slice(a,i)),(c=Ei[s=e.charAt(++i)])==null?c=s===`e`?` `:`0`:s=e.charAt(++i),(l=t[s])&&(s=l(n,c)),r.push(s),a=i+1);return r.push(e.slice(a,i)),r.join(``)}}function C(e,t){return function(n){var r=wi(1900,void 0,1),i=w(r,e,n+=``,0),a,o;if(i!=n.length)return null;if(`Q`in r)return new Date(r.Q);if(`s`in r)return new Date(r.s*1e3+(`L`in r?r.L:0));if(t&&!(`Z`in r)&&(r.Z=0),`p`in r&&(r.H=r.H%12+r.p*12),r.m===void 0&&(r.m=`q`in r?r.q:0),`V`in r){if(r.V<1||r.V>53)return null;`w`in r||(r.w=1),`Z`in r?(a=Ci(wi(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?Hr.ceil(a):Hr(a),a=Ar.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=Si(wi(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Pr.ceil(a):Pr(a),a=kr.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:`W`in r?1:0),o=`Z`in r?Ci(wi(r.y,0,1)).getUTCDay():Si(wi(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,Ci(r)):Si(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i<a;){if(r>=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in Ei?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function ee(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function te(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function ne(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function re(e,n,r){return w(e,t,n,r)}function ie(e,t,r){return w(e,n,t,r)}function ae(e,t,n){return w(e,r,t,n)}function oe(e){return o[e.getDay()]}function se(e){return a[e.getDay()]}function ce(e){return c[e.getMonth()]}function le(e){return s[e.getMonth()]}function ue(e){return i[+(e.getHours()>=12)]}function de(e){return 1+~~(e.getMonth()/3)}function fe(e){return o[e.getUTCDay()]}function pe(e){return a[e.getUTCDay()]}function me(e){return c[e.getUTCMonth()]}function he(e){return s[e.getUTCMonth()]}function ge(e){return i[+(e.getUTCHours()>=12)]}function _e(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var Ei={"-":``,_:` `,0:`0`},Di=/^\s*\d+/,Oi=/^%/,ki=/[\\^$*+?|[\]().{}]/g;function I(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a<n?Array(n-a+1).join(t)+i:i)}function Ai(e){return e.replace(ki,`\\$&`)}function ji(e){return RegExp(`^(?:`+e.map(Ai).join(`|`)+`)`,`i`)}function Mi(e){return new Map(e.map((e,t)=>[e.toLowerCase(),t]))}function Ni(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Pi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Fi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Ii(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Li(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function Ri(e,t,n){var r=Di.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function zi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Bi(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Vi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Hi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Ui(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Wi(e,t,n){var r=Di.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Gi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Ki(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function qi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Ji(e,t,n){var r=Di.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Yi(e,t,n){var r=Di.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Xi(e,t,n){var r=Oi.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Zi(e,t,n){var r=Di.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Qi(e,t,n){var r=Di.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function $i(e,t){return I(e.getDate(),t,2)}function ea(e,t){return I(e.getHours(),t,2)}function ta(e,t){return I(e.getHours()%12||12,t,2)}function na(e,t){return I(1+kr.count(Xr(e),e),t,3)}function ra(e,t){return I(e.getMilliseconds(),t,3)}function ia(e,t){return ra(e,t)+`000`}function aa(e,t){return I(e.getMonth()+1,t,2)}function oa(e,t){return I(e.getMinutes(),t,2)}function sa(e,t){return I(e.getSeconds(),t,2)}function ca(e){var t=e.getDay();return t===0?7:t}function la(e,t){return I(Nr.count(Xr(e)-1,e),t,2)}function ua(e){var t=e.getDay();return t>=4||t===0?Lr(e):Lr.ceil(e)}function da(e,t){return e=ua(e),I(Lr.count(Xr(e),e)+(Xr(e).getDay()===4),t,2)}function fa(e){return e.getDay()}function pa(e,t){return I(Pr.count(Xr(e)-1,e),t,2)}function ma(e,t){return I(e.getFullYear()%100,t,2)}function ha(e,t){return e=ua(e),I(e.getFullYear()%100,t,2)}function ga(e,t){return I(e.getFullYear()%1e4,t,4)}function _a(e,t){var n=e.getDay();return e=n>=4||n===0?Lr(e):Lr.ceil(e),I(e.getFullYear()%1e4,t,4)}function va(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+I(t/60|0,`0`,2)+I(t%60,`0`,2)}function ya(e,t){return I(e.getUTCDate(),t,2)}function ba(e,t){return I(e.getUTCHours(),t,2)}function xa(e,t){return I(e.getUTCHours()%12||12,t,2)}function Sa(e,t){return I(1+Ar.count(Zr(e),e),t,3)}function Ca(e,t){return I(e.getUTCMilliseconds(),t,3)}function wa(e,t){return Ca(e,t)+`000`}function Ta(e,t){return I(e.getUTCMonth()+1,t,2)}function Ea(e,t){return I(e.getUTCMinutes(),t,2)}function Da(e,t){return I(e.getUTCSeconds(),t,2)}function Oa(e){var t=e.getUTCDay();return t===0?7:t}function ka(e,t){return I(Vr.count(Zr(e)-1,e),t,2)}function Aa(e){var t=e.getUTCDay();return t>=4||t===0?Gr(e):Gr.ceil(e)}function ja(e,t){return e=Aa(e),I(Gr.count(Zr(e),e)+(Zr(e).getUTCDay()===4),t,2)}function Ma(e){return e.getUTCDay()}function Na(e,t){return I(Hr.count(Zr(e)-1,e),t,2)}function Pa(e,t){return I(e.getUTCFullYear()%100,t,2)}function Fa(e,t){return e=Aa(e),I(e.getUTCFullYear()%100,t,2)}function Ia(e,t){return I(e.getUTCFullYear()%1e4,t,4)}function La(e,t){var n=e.getUTCDay();return e=n>=4||n===0?Gr(e):Gr.ceil(e),I(e.getUTCFullYear()%1e4,t,4)}function Ra(){return`+0000`}function za(){return`%`}function Ba(e){return+e}function Va(e){return Math.floor(e/1e3)}var Ha,Ua,Wa,Ga,Ka;qa({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 qa(e){return Ha=Ti(e),Ua=Ha.format,Wa=Ha.parse,Ga=Ha.utcFormat,Ka=Ha.utcParse,Ha}function Ja(e){let t={};return n=>t[n]||(t[n]=e(n))}function Ya(e,t){return n=>{let r=e(n),i=r.indexOf(t);if(i<0)return r;let a=Xa(r,i),o=a<r.length?r.slice(a):``;for(;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Xa(e,t){let n=e.lastIndexOf(`e`),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}function Za(e){let t=Ja(e.format),n=e.formatPrefix;return{format:t,formatPrefix:n,formatFloat(e){let n=Yn(e||`,`);if(n.precision==null){switch(n.precision=12,n.type){case`%`:n.precision-=2;break;case`e`:--n.precision;break}return Ya(t(n),t(`.1f`)(1)[1])}else return t(n)},formatSpan(e,r,i,a){a=Yn(a??`,f`);let o=Mn(e,r,i),s=Math.max(Math.abs(e),Math.abs(r)),c;if(a.precision==null)switch(a.type){case`s`:return isNaN(c=dr(o,s))||(a.precision=c),n(a,s);case``:case`e`:case`g`:case`p`:case`r`:isNaN(c=fr(o,s))||(a.precision=c-(a.type===`e`));break;case`f`:case`%`:isNaN(c=ur(o))||(a.precision=c-(a.type===`%`)*2);break}return t(a)}}}Qa();function Qa(){return Za({format:sr,formatPrefix:cr})}function $a(e,t,n){n||={},Qe(n)||qe(`Invalid time multi-format specifier: ${n}`);let r=t(di),i=t(ui),a=t(li),o=t(si),s=t(oi),c=t(ai),l=t(ii),u=t(ri),d=e(n.milliseconds||`.%L`),f=e(n.seconds||`:%S`),p=e(n.minutes||`%I:%M`),m=e(n.hours||`%I %p`),h=e(n.date||n.day||`%a %d`),g=e(n.week||`%b %d`),_=e(n.month||`%B`),v=e(n.quarter||`%B`),y=e(n.year||`%Y`);return e=>(r(e)<e?d:i(e)<e?f:a(e)<e?p:o(e)<e?m:c(e)<e?s(e)<e?h:g:u(e)<e?l(e)<e?_:v:y)(e)}function eo(e){let t=Ja(e.format),n=Ja(e.utcFormat);return{timeFormat:e=>P(e)?t(e):$a(t,hi,e),utcFormat:e=>P(e)?n(e):$a(n,gi,e),timeParse:Ja(e.parse),utcParse:Ja(e.utcParse)}}var to;no();function no(){return to=eo({format:Ua,parse:Wa,utcFormat:Ga,utcParse:Ka})}function ro(e){return eo(Ti(e))}function io(e){return arguments.length?to=ro(e):to}var ao=e=>e!=null&&e===e,oo=e=>e===`true`||e===`false`||e===!0||e===!1,so=e=>!Number.isNaN(Date.parse(e)),co=e=>!Number.isNaN(+e)&&!(e instanceof Date),lo=e=>co(e)&&Number.isInteger(+e),uo={boolean:Ot,integer:et,number:et,date:At,string:jt,unknown:Xe},fo=[oo,lo,co,so],po=[`boolean`,`integer`,`number`,`date`];function mo(e,t){if(!e||!e.length)return`unknown`;let n=e.length,r=fo.length,i=fo.map((e,t)=>t+1);for(let a=0,o=0,s,c;a<n;++a)for(c=t?e[a][t]:e[a],s=0;s<r;++s)if(i[s]&&ao(c)&&!fo[s](c)&&(i[s]=0,++o,o===fo.length))return`string`;return po[i.reduce((e,t)=>e===0?t:e,0)-1]}function ho(e,t){return t.reduce((t,n)=>(t[n]=mo(e,n),t),{})}function go(e){let t=function(t,n){let r={delimiter:e};return _o(t,n?bt(n,r):r)};return t.responseType=`text`,t}function _o(e,t){return t.header&&(e=t.header.map(Dt).join(t.delimiter)+`
|
|
7
|
+
`+e),Wt(t.delimiter).parse(e+``)}_o.responseType=`text`;function vo(e){return typeof Buffer==`function`&&pt(Buffer.isBuffer)?Buffer.isBuffer(e):!1}function yo(e,t){let n=t&&t.property?Ye(t.property):Xe;return Qe(e)&&!vo(e)?bo(n(e),t):n(JSON.parse(e))}yo.responseType=`json`;function bo(e,t){return!O(e)&&wt(e)&&(e=[...e]),t&&t.copy?JSON.parse(JSON.stringify(e)):e}var xo={interior:(e,t)=>e!==t,exterior:(e,t)=>e===t};function So(e,t){let n,r,i,a;return e=yo(e,t),t&&t.feature?(n=Xt,i=t.feature):t&&t.mesh?(n=en,i=t.mesh,a=xo[t.filter]):qe(`Missing TopoJSON feature or mesh parameter.`),r=(r=e.objects[i])?n(e,r,a):qe(`Invalid TopoJSON object: `+i),r&&r.features||[r]}So.responseType=`json`;var Co={dsv:_o,csv:go(`,`),tsv:go(` `),json:yo,topojson:So};function wo(e,t){return arguments.length>1?(Co[e]=t,this):xt(Co,e)?Co[e]:null}function To(e,t,n,r){t||={};let i=wo(t.type||`json`);return i||qe(`Unknown data format type: `+t.type),e=i(e,t),t.parse&&Eo(e,t.parse,n,r),xt(e,`columns`)&&delete e.columns,e}function Eo(e,t,n,r){if(!e.length)return;let i=io();n||=i.timeParse,r||=i.utcParse;let a=e.columns||Object.keys(e[0]),o,s,c,l,u,d;t===`auto`&&(t=ho(e,a)),a=Object.keys(t);let f=a.map(e=>{let i=t[e],a,o;if(i&&(i.startsWith(`date:`)||i.startsWith(`utc:`)))return a=i.split(/:(.+)?/,2),o=a[1],(o[0]===`'`&&o[o.length-1]===`'`||o[0]===`"`&&o[o.length-1]===`"`)&&(o=o.slice(1,-1)),(a[0]===`utc`?r:n)(o);if(!uo[i])throw Error(`Illegal format pattern: `+e+`:`+i);return uo[i]});for(c=0,u=e.length,d=a.length;c<u;++c)for(o=e[c],l=0;l<d;++l)s=a[l],o[s]=f[l](o[s])}var Do,Oo,ko,Ao,jo,Mo,No,Po=n((()=>{Do=[`BOOLEAN`,`INT32`,`INT64`,`INT96`,`FLOAT`,`DOUBLE`,`BYTE_ARRAY`,`FIXED_LEN_BYTE_ARRAY`],Oo=[`PLAIN`,`GROUP_VAR_INT`,`PLAIN_DICTIONARY`,`RLE`,`BIT_PACKED`,`DELTA_BINARY_PACKED`,`DELTA_LENGTH_BYTE_ARRAY`,`DELTA_BYTE_ARRAY`,`RLE_DICTIONARY`,`BYTE_STREAM_SPLIT`],ko=[`REQUIRED`,`OPTIONAL`,`REPEATED`],Ao=[`UTF8`,`MAP`,`MAP_KEY_VALUE`,`LIST`,`ENUM`,`DECIMAL`,`DATE`,`TIME_MILLIS`,`TIME_MICROS`,`TIMESTAMP_MILLIS`,`TIMESTAMP_MICROS`,`UINT_8`,`UINT_16`,`UINT_32`,`UINT_64`,`INT_8`,`INT_16`,`INT_32`,`INT_64`,`JSON`,`BSON`,`INTERVAL`],jo=[`UNCOMPRESSED`,`SNAPPY`,`GZIP`,`LZO`,`BROTLI`,`LZ4`,`ZSTD`,`LZ4_RAW`],Mo=[`DATA_PAGE`,`INDEX_PAGE`,`DICTIONARY_PAGE`,`DATA_PAGE_V2`],No=[`SPHERICAL`,`VINCENTY`,`THOMAS`,`ANDOYER`,`KARNEY`]}));function Fo(e){let t=Io(e);if(t.type===1)return{type:`Point`,coordinates:Lo(e,t)};if(t.type===2)return{type:`LineString`,coordinates:Ro(e,t)};if(t.type===3)return{type:`Polygon`,coordinates:zo(e,t)};if(t.type===4){let n=[];for(let r=0;r<t.count;r++)n.push(Lo(e,Io(e)));return{type:`MultiPoint`,coordinates:n}}else if(t.type===5){let n=[];for(let r=0;r<t.count;r++)n.push(Ro(e,Io(e)));return{type:`MultiLineString`,coordinates:n}}else if(t.type===6){let n=[];for(let r=0;r<t.count;r++)n.push(zo(e,Io(e)));return{type:`MultiPolygon`,coordinates:n}}else if(t.type===7){let n=[];for(let r=0;r<t.count;r++)n.push(Fo(e));return{type:`GeometryCollection`,geometries:n}}else throw Error(`Unsupported geometry type: ${t.type}`)}function Io(e){let{view:t}=e,n=t.getUint8(e.offset++)===1,r=t.getUint32(e.offset,n);e.offset+=4;let i=r%1e3,a=Math.floor(r/1e3),o=0;i>1&&i<=7&&(o=t.getUint32(e.offset,n),e.offset+=4);let s=2;return a&&s++,a===3&&s++,{littleEndian:n,type:i,dim:s,count:o}}function Lo(e,t){let n=[];for(let r=0;r<t.dim;r++){let r=e.view.getFloat64(e.offset,t.littleEndian);e.offset+=8,n.push(r)}return n}function Ro(e,t){let n=[];for(let r=0;r<t.count;r++)n.push(Lo(e,t));return n}function zo(e,t){let{view:n}=e,r=[];for(let i=0;i<t.count;i++){let i=n.getUint32(e.offset,t.littleEndian);e.offset+=4,r.push(Ro(e,{...t,count:i}))}return r}var Bo=n((()=>{}));function Vo(e,t,n,r){if(t&&n.endsWith(`_DICTIONARY`)){let n=e;e instanceof Uint8Array&&!(t instanceof Uint8Array)&&(n=new t.constructor(e.length));for(let r=0;r<e.length;r++)n[r]=t[e[r]];return n}else return Ho(e,r)}function Ho(e,t){let{element:n,parsers:r,utf8:i=!0,schemaPath:a}=t,{type:o,converted_type:s,logical_type:c}=n;if(a?.some(e=>e.element.logical_type?.type===`VARIANT`)&&o===`BYTE_ARRAY`&&s!==`UTF8`&&c?.type!==`STRING`)return e;if(s===`DECIMAL`){let t=10**-(n.scale||0),r=Array(e.length);for(let n=0;n<r.length;n++)e[n]instanceof Uint8Array?r[n]=Uo(e[n])*t:r[n]=Number(e[n])*t;return r}if(!s&&o===`INT96`)return Array.from(e).map(e=>r.timestampFromNanoseconds(Wo(e)));if(s===`DATE`)return Array.from(e).map(e=>r.dateFromDays(e));if(s===`TIMESTAMP_MILLIS`)return Array.from(e).map(e=>r.timestampFromMilliseconds(e));if(s===`TIMESTAMP_MICROS`)return Array.from(e).map(e=>r.timestampFromMicroseconds(e));if(s===`JSON`)return e.map(e=>JSON.parse(Ko.decode(e)));if(s===`BSON`)throw Error(`parquet bson not supported`);if(s===`INTERVAL`)throw Error(`parquet interval not supported`);if(c?.type===`GEOMETRY`)return e.map(e=>r.geometryFromBytes(e));if(c?.type===`GEOGRAPHY`)return e.map(e=>r.geographyFromBytes(e));if(s===`UTF8`||c?.type===`STRING`||i&&o===`BYTE_ARRAY`)return e.map(e=>r.stringFromBytes(e));if(s===`UINT_64`||c?.type===`INTEGER`&&c.bitWidth===64&&!c.isSigned){if(e instanceof BigInt64Array)return new BigUint64Array(e.buffer,e.byteOffset,e.length);let t=new BigUint64Array(e.length);for(let n=0;n<t.length;n++)t[n]=BigInt(e[n]);return t}if(s===`UINT_32`||c?.type===`INTEGER`&&c.bitWidth===32&&!c.isSigned){if(e instanceof Int32Array)return new Uint32Array(e.buffer,e.byteOffset,e.length);let t=new Uint32Array(e.length);for(let n=0;n<t.length;n++)t[n]=e[n];return t}if(c?.type===`FLOAT16`)return Array.from(e).map(Go);if(c?.type===`TIMESTAMP`){let{unit:t}=c,n=r.timestampFromMilliseconds;t===`MICROS`&&(n=r.timestampFromMicroseconds),t===`NANOS`&&(n=r.timestampFromNanoseconds);let i=Array(e.length);for(let t=0;t<i.length;t++)i[t]=n(e[t]);return i}return e}function Uo(e){if(!e.length)return 0;let t=0n;for(let n of e)t=t*256n+BigInt(n);let n=e.length*8;return t>=2n**BigInt(n-1)&&(t-=2n**BigInt(n)),Number(t)}function Wo(e){let t=(e>>64n)-2440588n,n=e&18446744073709551615n;return t*86400000000000n+n}function Go(e){if(!e)return;let t=e[1]<<8|e[0],n=t>>15?-1:1,r=t>>10&31,i=t&1023;return r===0?n*2**-14*(i/1024):r===31?i?NaN:n*(1/0):n*2**(r-15)*(1+i/1024)}var Ko,qo,Jo=n((()=>{Bo(),Ko=new TextDecoder,qo={timestampFromMilliseconds(e){return new Date(Number(e))},timestampFromMicroseconds(e){return new Date(Number(e/1000n))},timestampFromNanoseconds(e){return new Date(Number(e/1000000n))},dateFromDays(e){return new Date(e*864e5)},stringFromBytes(e){return e&&Ko.decode(e)},geometryFromBytes(e){return e&&Fo({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})},geographyFromBytes(e){return e&&Fo({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})}}}));function Yo(e,t,n){let r=e[t],i=[],a=1;if(r.num_children)for(;i.length<r.num_children;){let r=e[t+a],o=Yo(e,t+a,[...n,r.name]);a+=o.count,i.push(o)}return{count:a,element:r,children:i,path:n}}function Xo(e,t){let n=Yo(e,0,[]),r=[n];for(let e of t){let i=n.children.find(t=>t.element.name===e);if(!i)throw Error(`parquet schema element not found: ${t}`);r.push(i),n=i}return r}function Zo(e){let t=[];function n(e){if(e.children.length)for(let t of e.children)n(t);else t.push(e.path.join(`.`))}return n(e),t}function Qo(e){let t=0;for(let{element:n}of e)n.repetition_type===`REPEATED`&&t++;return t}function $o(e){let t=0;for(let{element:n}of e.slice(1))n.repetition_type!==`REQUIRED`&&t++;return t}function es(e){if(!e||e.element.converted_type!==`LIST`||e.children.length>1)return!1;let t=e.children[0];return!(t.children.length>1||t.element.repetition_type!==`REPEATED`)}function ts(e){if(!e||e.element.converted_type!==`MAP`||e.children.length>1)return!1;let t=e.children[0];return!(t.children.length!==2||t.element.repetition_type!==`REPEATED`||t.children.find(e=>e.element.name===`key`)?.element.repetition_type===`REPEATED`||t.children.find(e=>e.element.name===`value`)?.element.repetition_type===`REPEATED`)}function ns(e){if(e.length!==2)return!1;let[,t]=e;return!(t.element.repetition_type===`REPEATED`||t.children.length)}var rs=n((()=>{}));function is(e){let t=0,n={};for(;e.offset<e.view.byteLength;){let[r,i,a]=us(e,t);if(t=a,r===ds.STOP)break;n[`field_${i}`]=as(e,r)}return n}function as(e,t){switch(t){case ds.TRUE:return!0;case ds.FALSE:return!1;case ds.BYTE:return e.view.getInt8(e.offset++);case ds.I16:case ds.I32:return cs(e);case ds.I64:return ls(e);case ds.DOUBLE:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case ds.BINARY:{let t=os(e),n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}case ds.LIST:{let t=e.view.getUint8(e.offset++),n=t&15,r=t>>4;r===15&&(r=os(e));let i=n===ds.TRUE||n===ds.FALSE,a=Array(r);for(let t=0;t<r;t++)a[t]=i?as(e,ds.BYTE)===1:as(e,n);return a}case ds.STRUCT:{let t={},n=0;for(;;){let[r,i,a]=us(e,n);if(n=a,r===ds.STOP)break;t[`field_${i}`]=as(e,r)}return t}default:throw Error(`thrift unhandled type: ${t}`)}}function os(e){let t=0,n=0;for(;;){let r=e.view.getUint8(e.offset++);if(t|=(r&127)<<n,!(r&128))return t;n+=7}}function ss(e){let t=0n,n=0n;for(;;){let r=e.view.getUint8(e.offset++);if(t|=BigInt(r&127)<<n,!(r&128))return t;n+=7n}}function cs(e){let t=os(e);return t>>>1^-(t&1)}function ls(e){let t=ss(e);return t>>1n^-(t&1n)}function us(e,t){let n=e.view.getUint8(e.offset++),r=n&15;if(r===ds.STOP)return[0,0,t];let i=n>>4,a=i?t+i:cs(e);return[r,a,a]}var ds,fs=n((()=>{ds={STOP:0,TRUE:1,FALSE:2,BYTE:3,I16:4,I32:5,I64:6,DOUBLE:7,BINARY:8,LIST:9,SET:10,MAP:11,STRUCT:12,UUID:13}}));function ps(e,t){let n=new Map,r=t?.find(({key:e})=>e===`geo`)?.value,i=(r&&JSON.parse(r)?.columns)??{};for(let[e,t]of Object.entries(i)){if(t.encoding!==`WKB`)continue;let r=t.edges===`spherical`?`GEOGRAPHY`:`GEOMETRY`,i=t.crs?.id??t.crs?.ids?.[0],a=i?`${i.authority}:${i.code.toString()}`:void 0;n.set(e,{type:r,crs:a})}for(let t=1;t<e.length;t++){let r=e[t],{logical_type:i,name:a,num_children:o,repetition_type:s,type:c}=r;if(o){t+=o;continue}c===`BYTE_ARRAY`&&i===void 0&&s!==`REPEATED`&&(r.logical_type=n.get(a))}}var ms=n((()=>{}));function hs(e){return e&&ws.decode(e)}async function gs(e,{parsers:t,initialFetchSize:n=Cs,geoparquet:r=!0}={}){if(!e||!(e.byteLength>=0))throw Error(`parquet expected AsyncBuffer`);let i=Math.max(0,e.byteLength-n),a=await e.slice(i,e.byteLength),o=new DataView(a);if(o.getUint32(a.byteLength-4,!0)!==827474256)throw Error(`parquet file invalid (footer != PAR1)`);let s=o.getUint32(a.byteLength-8,!0);if(s>e.byteLength-8)throw Error(`parquet metadata length ${s} exceeds available buffer ${e.byteLength-8}`);if(s+8>n){let n=e.byteLength-s-8,o=await e.slice(n,i),c=new ArrayBuffer(s+8),l=new Uint8Array(c);return l.set(new Uint8Array(o)),l.set(new Uint8Array(a),i-n),_s(c,{parsers:t,geoparquet:r})}else return _s(a,{parsers:t,geoparquet:r})}function _s(e,{parsers:t,geoparquet:n=!0}={}){if(!(e instanceof ArrayBuffer))throw Error(`parquet expected ArrayBuffer`);let r=new DataView(e);if(t={...qo,...t},r.byteLength<8)throw Error(`parquet file is too short`);if(r.getUint32(r.byteLength-4,!0)!==827474256)throw Error(`parquet file invalid (footer != PAR1)`);let i=r.byteLength-8,a=r.getUint32(i,!0);if(a>r.byteLength-8)throw Error(`parquet metadata length ${a} exceeds available buffer ${r.byteLength-8}`);let o=is({view:r,offset:i-a}),s=o.field_1,c=o.field_2.map(e=>({type:Do[e.field_1],type_length:e.field_2,repetition_type:ko[e.field_3],name:hs(e.field_4),num_children:e.field_5,converted_type:Ao[e.field_6],scale:e.field_7,precision:e.field_8,field_id:e.field_9,logical_type:ys(e.field_10)})),l=c.filter(e=>e.type),u=o.field_3,d=o.field_4.map(e=>({columns:e.field_1.map((e,n)=>({file_path:hs(e.field_1),file_offset:e.field_2,meta_data:e.field_3&&{type:Do[e.field_3.field_1],encodings:e.field_3.field_2?.map(e=>Oo[e]),path_in_schema:e.field_3.field_3.map(hs),codec:jo[e.field_3.field_4],num_values:e.field_3.field_5,total_uncompressed_size:e.field_3.field_6,total_compressed_size:e.field_3.field_7,key_value_metadata:e.field_3.field_8?.map(e=>({key:hs(e.field_1),value:hs(e.field_2)})),data_page_offset:e.field_3.field_9,index_page_offset:e.field_3.field_10,dictionary_page_offset:e.field_3.field_11,statistics:xs(e.field_3.field_12,l[n],t),encoding_stats:e.field_3.field_13?.map(e=>({page_type:Mo[e.field_1],encoding:Oo[e.field_2],count:e.field_3})),bloom_filter_offset:e.field_3.field_14,bloom_filter_length:e.field_3.field_15,size_statistics:e.field_3.field_16&&{unencoded_byte_array_data_bytes:e.field_3.field_16.field_1,repetition_level_histogram:e.field_3.field_16.field_2,definition_level_histogram:e.field_3.field_16.field_3},geospatial_statistics:e.field_3.field_17&&{bbox:e.field_3.field_17.field_1&&{xmin:e.field_3.field_17.field_1.field_1,xmax:e.field_3.field_17.field_1.field_2,ymin:e.field_3.field_17.field_1.field_3,ymax:e.field_3.field_17.field_1.field_4,zmin:e.field_3.field_17.field_1.field_5,zmax:e.field_3.field_17.field_1.field_6,mmin:e.field_3.field_17.field_1.field_7,mmax:e.field_3.field_17.field_1.field_8},geospatial_types:e.field_3.field_17.field_2}},offset_index_offset:e.field_4,offset_index_length:e.field_5,column_index_offset:e.field_6,column_index_length:e.field_7,crypto_metadata:e.field_8,encrypted_column_metadata:e.field_9})),total_byte_size:e.field_2,num_rows:e.field_3,sorting_columns:e.field_4?.map(e=>({column_idx:e.field_1,descending:e.field_2,nulls_first:e.field_3})),file_offset:e.field_5,total_compressed_size:e.field_6,ordinal:e.field_7})),f=o.field_5?.map(e=>({key:hs(e.field_1),value:hs(e.field_2)})),p=hs(o.field_6);return n&&ps(c,f),{version:s,schema:c,num_rows:u,row_groups:d,key_value_metadata:f,created_by:p,metadata_length:a}}function vs({schema:e}){return Xo(e,[])[0]}function ys(e){return e?.field_1?{type:`STRING`}:e?.field_2?{type:`MAP`}:e?.field_3?{type:`LIST`}:e?.field_4?{type:`ENUM`}:e?.field_5?{type:`DECIMAL`,scale:e.field_5.field_1,precision:e.field_5.field_2}:e?.field_6?{type:`DATE`}:e?.field_7?{type:`TIME`,isAdjustedToUTC:e.field_7.field_1,unit:bs(e.field_7.field_2)}:e?.field_8?{type:`TIMESTAMP`,isAdjustedToUTC:e.field_8.field_1,unit:bs(e.field_8.field_2)}:e?.field_10?{type:`INTEGER`,bitWidth:e.field_10.field_1,isSigned:e.field_10.field_2}:e?.field_11?{type:`NULL`}:e?.field_12?{type:`JSON`}:e?.field_13?{type:`BSON`}:e?.field_14?{type:`UUID`}:e?.field_15?{type:`FLOAT16`}:e?.field_16?{type:`VARIANT`,specification_version:e.field_16.field_1}:e?.field_17?{type:`GEOMETRY`,crs:hs(e.field_17.field_1)}:e?.field_18?{type:`GEOGRAPHY`,crs:hs(e.field_18.field_1),algorithm:No[e.field_18.field_2]}:e}function bs(e){if(e.field_1)return`MILLIS`;if(e.field_2)return`MICROS`;if(e.field_3)return`NANOS`;throw Error(`parquet time unit required`)}function xs(e,t,n){return e&&{max:Ss(e.field_1,t,n),min:Ss(e.field_2,t,n),null_count:e.field_3,distinct_count:e.field_4,max_value:Ss(e.field_5,t,n),min_value:Ss(e.field_6,t,n),is_max_value_exact:e.field_7,is_min_value_exact:e.field_8}}function Ss(e,t,n){let{type:r,converted_type:i,logical_type:a}=t;if(e===void 0)return e;if(r===`BOOLEAN`)return e[0]===1;if(r===`BYTE_ARRAY`)return n.stringFromBytes(e);let o=new DataView(e.buffer,e.byteOffset,e.byteLength);return r===`FLOAT`&&o.byteLength===4?o.getFloat32(0,!0):r===`DOUBLE`&&o.byteLength===8?o.getFloat64(0,!0):r===`INT32`&&i===`DATE`?n.dateFromDays(o.getInt32(0,!0)):r===`INT64`&&i===`TIMESTAMP_MILLIS`?n.timestampFromMilliseconds(o.getBigInt64(0,!0)):r===`INT64`&&i===`TIMESTAMP_MICROS`?n.timestampFromMicroseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`&&a?.unit===`NANOS`?n.timestampFromNanoseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`&&a?.unit===`MICROS`?n.timestampFromMicroseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`?n.timestampFromMilliseconds(o.getBigInt64(0,!0)):r===`INT32`&&o.byteLength===4?o.getInt32(0,!0):r===`INT64`&&o.byteLength===8?o.getBigInt64(0,!0):i===`DECIMAL`?Uo(e)*10**-(t.scale||0):a?.type===`FLOAT16`?Go(e):e}var Cs,ws,Ts=n((()=>{Po(),Jo(),rs(),fs(),ms(),Cs=1<<19,ws=new TextDecoder}));function Es(e,t){let n=1e4;for(let r=0;r<t.length;r+=n)e.push(...t.slice(r,r+n))}function Ds(e,t,n=!0){if(n?e===t:e==t)return!0;if(e instanceof Uint8Array&&t instanceof Uint8Array)return Ds(Array.from(e),Array.from(t),n);if(!e||!t||typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!Ds(e[r],t[r],n))return!1;return!0}if(typeof e!=`object`)return!1;let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let i of r)if(!Ds(e[i],t[i],n))return!1;return!0}function Os(e){if(!e)return[];if(e.length===1)return e[0];let t=[];for(let n of e)Es(t,n);return t}var ks=n((()=>{}));function As({rowGroup:e,physicalColumns:t,filter:n,strict:r=!0}){if(!n)return!1;if(`$and`in n&&Array.isArray(n.$and))return n.$and.some(n=>As({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$or`in n&&Array.isArray(n.$or))return n.$or.every(n=>As({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$nor`in n&&Array.isArray(n.$nor))return!1;for(let[i,a]of Object.entries(n)){let n=t.indexOf(i);if(n===-1)continue;let o=e.columns[n].meta_data?.statistics;if(!o)continue;let{min:s,max:c,min_value:l,max_value:u}=o,d=l===void 0?s:l,f=u===void 0?c:u;if(!(d===void 0||f===void 0)){for(let[e,t]of Object.entries(a||{}))if(e===`$gt`&&f<=t||e===`$gte`&&f<t||e===`$lt`&&d>=t||e===`$lte`&&d>t||e===`$eq`&&(t<d||t>f)||e===`$ne`&&Ds(d,f,r)&&Ds(d,t,r)||e===`$in`&&Array.isArray(t)&&t.every(e=>e<d||e>f)||e===`$nin`&&Array.isArray(t)&&Ds(d,f,r)&&t.includes(d))return!0}}return!1}var js=n((()=>{ks()}));function Ms({metadata:e,rowStart:t=0,rowEnd:n=1/0,columns:r,filter:i,filterStrict:a=!0,useOffsetIndex:o=!1}){if(!e)throw Error(`parquetPlan requires metadata`);let s=[],c=[],l=[],u=Zo(vs(e)),d=0;for(let f of e.row_groups){let e=Number(f.num_rows),p=d+e;if(e>0&&p>t&&d<n&&!As({rowGroup:f,physicalColumns:u,filter:i,strict:a})){let i=[],a=1/0,u=-1/0;for(let e of f.columns){let t=e.meta_data;if(e.file_path)throw Error(`parquet file_path not supported`);if(!t)throw Error(`parquet column metadata is undefined`);if(!r||r.includes(t.path_in_schema[0])){let n=t.dictionary_page_offset||t.data_page_offset,r=Number(n),s=Number(n+t.total_compressed_size);if(r<a&&(a=r),s>u&&(u=s),o&&e.offset_index_offset&&e.offset_index_length){let n=Number(e.offset_index_offset);i.push({columnMetadata:t,offsetIndex:{startByte:n,endByte:n+e.offset_index_length},bounds:{startByte:r,endByte:s}})}else i.push({columnMetadata:t,range:{startByte:r,endByte:s}})}}let p=Math.max(t-d,0),m=Math.min(n-d,e);s.push({chunks:i,rowGroup:f,groupStart:d,groupRows:e,selectStart:p,selectEnd:m});let h;for(let e of i)if(`offsetIndex`in e)l.push(e.offsetIndex);else{let{range:t}=e;r?c.push(t):h&&t.endByte-h.startByte<=Ps?h.endByte=t.endByte:(h&&c.push(h),h={...t})}h&&c.push(h)}d=p}return isFinite(n)||(n=d),c.push(...l),{metadata:e,rowStart:t,rowEnd:n,columns:r,fetches:c,groups:s}}function Ns(e,{fetches:t}){let n=t.map(({startByte:t,endByte:n})=>e.slice(t,n));return{byteLength:e.byteLength,slice(r,i=e.byteLength){let a=t.findIndex(({startByte:e,endByte:t})=>e<=r&&i<=t);if(a<0)return e.slice(r,i);if(t[a].startByte!==r||t[a].endByte!==i){let e=r-t[a].startByte,o=i-t[a].startByte;return n[a]instanceof Promise?n[a].then(t=>t.slice(e,o)):n[a].slice(e,o)}else return n[a]}}}var Ps,Fs=n((()=>{js(),Ts(),rs(),Ps=1<<21}));function Is(e,t=qo){if(Array.isArray(e))return e.map(e=>Is(e,t));if(typeof e!=`object`)return e;if(`metadata`in e){let n=zs(e.metadata),r=e.typed_value&&Ls(e.typed_value,n,t),i=e.value&&Vs(Rs(e.value),n,t);return r&&i?{...i,...r}:r??i}return e}function Ls(e,t,n){if(e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof Uint8Array)){if(`typed_value`in e)return Ls(e.typed_value,t,n);if(`value`in e&&e.value instanceof Uint8Array)return Vs(Rs(e.value),t,n);let r={};for(let[i,a]of Object.entries(e))r[i]=Ls(a,t,n);return r}return e instanceof Uint8Array?Vs(Rs(e),t,n):Array.isArray(e)?e.map(e=>Ls(e,t,n)):e}function Rs(e){return{view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0}}function zs(e){let t=Js.get(e.buffer);t||(t=new Map,Js.set(e.buffer,t));let n=`${e.byteOffset}:${e.byteLength}`,r=t.get(n);if(r)return r;let i=Rs(e),a=i.view.getUint8(i.offset++),o=a&15;if(o!==1)throw Error(`parquet unsupported variant metadata version: ${o}`);let s=(a>>4&1)==1,c=(a>>6&3)+1,l=Bs(i,c),u=Array(l+1);for(let e=0;e<u.length;e++)u[e]=Bs(i,c);let d=i.offset,f=Array(l);for(let t=0;t<l;t++){let n=u[t],r=u[t+1],i=new Uint8Array(e.buffer,e.byteOffset+d+n,r-n);f[t]=qs.decode(i)}let p={dictionary:f,sorted:s};return t.set(n,p),p}function Bs(e,t){let n=0;for(let r=0;r<t;r++)n|=e.view.getUint8(e.offset+r)<<r*8;return e.offset+=t,n}function Vs(e,t,n){let r=e.view.getUint8(e.offset++),i=r&3,a=r>>2;if(i===0)return Hs(e,a,n);if(i===2)return Us(e,a,t,n);if(i===3)return Ws(e,a,t,n);let o=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,a);return e.offset+=a,qs.decode(o)}function Hs(e,t,n){switch(t){case 0:return null;case 1:return!0;case 2:return!1;case 3:{let t=e.view.getInt8(e.offset);return e.offset+=1,t}case 4:{let t=e.view.getInt16(e.offset,!0);return e.offset+=2,t}case 5:{let t=e.view.getInt32(e.offset,!0);return e.offset+=4,t}case 6:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,t}case 7:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case 8:return Gs(e,4);case 9:return Gs(e,8);case 10:return Gs(e,16);case 11:{let t=e.view.getInt32(e.offset,!0);return e.offset+=4,n.dateFromDays(t)}case 12:case 13:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromMicroseconds(t)}case 14:{let t=e.view.getFloat32(e.offset,!0);return e.offset+=4,t}case 15:return Ks(e);case 16:{let t=Ks(e);return qs.decode(t)}case 17:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,t}case 18:case 19:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromNanoseconds(t)}case 20:{let t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,16);e.offset+=16;let n=Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``);return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}default:throw Error(`parquet unsupported variant primitive type: ${t}`)}}function Us(e,t,n,r){let i=(t&3)+1,a=(t>>2&3)+1,o=t>>4&1?Bs(e,4):e.view.getUint8(e.offset++),s=Array(o);for(let t=0;t<o;t++)s[t]=Bs(e,a);let c=Array(o+1);for(let t=0;t<c.length;t++)c[t]=Bs(e,i);let l={};for(let t=0;t<o;t++){let i=n.dictionary[s[t]];l[i]=Vs({view:e.view,offset:e.offset+c[t]},n,r)}return e.offset+=c[c.length-1],l}function Ws(e,t,n,r){let i=t&3,a=t>>2&1,o=i+1,s=Bs(e,a?4:1),c=Array(s+1);for(let t=0;t<c.length;t++)c[t]=Bs(e,o);let l=e.offset,u=Array(s);for(let t=0;t<s;t++)u[t]=Vs({view:e.view,offset:l+c[t]},n,r);return e.offset=l+c[c.length-1],u}function Gs(e,t){let n=e.view.getUint8(e.offset);e.offset+=1;let r;if(t===4)r=BigInt(e.view.getInt32(e.offset,!0)),e.offset+=4;else if(t===8)r=e.view.getBigInt64(e.offset,!0),e.offset+=8;else{let t=e.view.getBigUint64(e.offset,!0);r=e.view.getBigInt64(e.offset+8,!0)<<64n|t,e.offset+=16}return Number(r)*10**-n}function Ks(e){let t=e.view.getUint32(e.offset,!0);e.offset+=4;let n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}var qs,Js,Ys=n((()=>{Jo(),qs=new TextDecoder,Js=new WeakMap}));function Xs(e,t,n,r,i){let a=$o(i);if(!t?.length&&!n.length){if(!a||!r.length)return r;t=Array(r.length).fill(a)}let o=t?.length||n.length,s=i.map(({element:e})=>e.repetition_type),c=0,l=[e],u=e,d=0,f=0,p=0;if(n[0])for(;d<s.length-2&&p<n[0];)d++,s[d]!==`REQUIRED`&&(u=u.at(-1),l.push(u),f++),s[d]===`REPEATED`&&p++;for(let e=0;e<o;e++){let i=t?.length?t[e]:a,o=n[e];for(;d&&(o<p||s[d]!==`REPEATED`);)s[d]!==`REQUIRED`&&(l.pop(),f--),s[d]===`REPEATED`&&p--,d--;for(u=l.at(-1);(d<s.length-2||s[d+1]===`REPEATED`)&&(f<i||s[d+1]===`REQUIRED`);){if(d++,s[d]!==`REQUIRED`){let e=[];u.push(e),u=e,l.push(e),f++}s[d]===`REPEATED`&&p++}i===a?u.push(r[c++]):d===s.length-2?u.push(null):u.push([])}if(!e.length)for(let e=0;e<a;e++){let e=[];u.push(e),u=e}return e}function Zs(e,t,n,r=0){let i=t.path.join(`.`),a=t.element.repetition_type===`OPTIONAL`,o=a?r+1:r;if(es(t)){let s=t.children[0],c=o;s.children.length===1&&(s=s.children[0],c++),Zs(e,s,n,c);let l=s.path.join(`.`),u=e.get(l);if(!u)throw Error(`parquet list column missing values`);a&&Qs(u,r),e.set(i,u),e.delete(l);return}if(ts(t)){let s=t.children[0].element.name;Zs(e,t.children[0].children[0],n,o+1),Zs(e,t.children[0].children[1],n,o+1);let c=e.get(`${i}.${s}.key`),l=e.get(`${i}.${s}.value`);if(!c)throw Error(`parquet map column missing keys`);if(!l)throw Error(`parquet map column missing values`);if(c.length!==l.length)throw Error(`parquet map column key/value length mismatch`);let u=$s(c,l,o);a&&Qs(u,r),e.delete(`${i}.${s}.key`),e.delete(`${i}.${s}.value`),e.set(i,u);return}if(t.children.length){let o=t.element.repetition_type===`REQUIRED`?r:r+1,s={};for(let r of t.children){Zs(e,r,n,o);let t=e.get(r.path.join(`.`));if(!t)throw Error(`parquet struct missing child data`);s[r.element.name]=t}for(let n of t.children)e.delete(n.path.join(`.`));let c=ec(s,o);t.element.logical_type?.type===`VARIANT`&&(c=Is(c,n)),a&&Qs(c,r),e.set(i,c)}}function Qs(e,t){for(let n=0;n<e.length;n++)t?Qs(e[n],t-1):e[n]=e[n][0]}function $s(e,t,n){let r=[];for(let i=0;i<e.length;i++)if(n)r.push($s(e[i],t[i],n-1));else if(e[i]){let n={};for(let r=0;r<e[i].length;r++){let a=t[i][r];n[e[i][r]]=a===void 0?null:a}r.push(n)}else r.push(void 0);return r}function ec(e,t){let n=Object.keys(e),r=e[n[0]]?.length,i=[];for(let a=0;a<r;a++){let o={};for(let t of n){if(e[t].length!==r)throw Error(`parquet struct parsing error`);o[t]=e[t][a]}t?i.push(ec(o,t-1)):i.push(o)}return i}var tc=n((()=>{rs(),Ys()}));function nc(e,t,n){let r=n instanceof Int32Array,i=os(e),a=os(e);os(e);let o=ls(e),s=0;n[s++]=r?Number(o):o;let c=i/a;for(;s<t;){let i=ls(e),l=new Uint8Array(a);for(let t=0;t<a;t++)l[t]=e.view.getUint8(e.offset++);for(let u=0;u<a&&s<t;u++){let a=BigInt(l[u]);if(a){let l=0n,u=c,d=(1n<<a)-1n;for(;u&&s<t;){let t=BigInt(e.view.getUint8(e.offset))>>l&d;for(l+=a;l>=8;)l-=8n,e.offset++,l&&(t|=BigInt(e.view.getUint8(e.offset))<<a-l&d);let c=i+t;o+=c,n[s++]=r?Number(o):o,u--}u&&(e.offset+=Math.ceil((u*Number(a)+Number(l))/8))}else for(let e=0;e<c&&s<t;e++)o+=i,n[s++]=r?Number(o):o}}}function rc(e,t,n){let r=new Int32Array(t);nc(e,t,r);for(let i=0;i<t;i++)n[i]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,r[i]),e.offset+=r[i]}function ic(e,t,n){let r=new Int32Array(t);nc(e,t,r);let i=new Int32Array(t);nc(e,t,i);for(let a=0;a<t;a++){let t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,i[a]);r[a]?(n[a]=new Uint8Array(r[a]+i[a]),n[a].set(n[a-1].subarray(0,r[a])),n[a].set(t,r[a])):n[a]=t,e.offset+=i[a]}}var ac=n((()=>{fs()}));function oc(e){return 32-Math.clz32(e)}function sc(e,t,n,r){r===void 0&&(r=e.view.getUint32(e.offset,!0),e.offset+=4);let i=e.offset,a=0;for(;a<n.length;){let r=os(e);if(r&1)a=lc(e,r,t,n,a);else{let i=r>>>1;cc(e,i,t,n,a),a+=i}}e.offset=i+r}function cc(e,t,n,r,i){let a=n+7>>3,o=0;for(let t=0;t<a;t++)o|=e.view.getUint8(e.offset++)<<(t<<3);for(let e=0;e<t;e++)r[i+e]=o}function lc(e,t,n,r,i){let a=t>>1<<3,o=(1<<n)-1,s=0;if(e.offset<e.view.byteLength)s=e.view.getUint8(e.offset++);else if(o)throw Error(`parquet bitpack offset ${e.offset} out of range`);let c=8,l=0;for(;a;)l>8?(l-=8,c-=8,s>>>=8):c-l<n?(s|=e.view.getUint8(e.offset)<<c,e.offset++,c+=8):(i<r.length&&(r[i++]=s>>l&o),a--,l+=n);return i}function uc(e,t,n,r){let i=dc(n,r),a=new Uint8Array(t*i);for(let n=0;n<i;n++)for(let r=0;r<t;r++)a[r*i+n]=e.view.getUint8(e.offset++);if(n===`FLOAT`)return new Float32Array(a.buffer);if(n===`DOUBLE`)return new Float64Array(a.buffer);if(n===`INT32`)return new Int32Array(a.buffer);if(n===`INT64`)return new BigInt64Array(a.buffer);if(n===`FIXED_LEN_BYTE_ARRAY`){let e=Array(t);for(let n=0;n<t;n++)e[n]=a.subarray(n*i,(n+1)*i);return e}throw Error(`parquet byte_stream_split unsupported type: ${n}`)}function dc(e,t){switch(e){case`INT32`:case`FLOAT`:return 4;case`INT64`:case`DOUBLE`:return 8;case`FIXED_LEN_BYTE_ARRAY`:if(!t)throw Error(`parquet byteWidth missing type_length`);return t;default:throw Error(`parquet unsupported type: ${e}`)}}var fc=n((()=>{fs()}));function pc(e,t,n,r){if(n===0)return[];if(t===`BOOLEAN`)return mc(e,n);if(t===`INT32`)return hc(e,n);if(t===`INT64`)return gc(e,n);if(t===`INT96`)return _c(e,n);if(t===`FLOAT`)return vc(e,n);if(t===`DOUBLE`)return yc(e,n);if(t===`BYTE_ARRAY`)return bc(e,n);if(t===`FIXED_LEN_BYTE_ARRAY`){if(!r)throw Error(`parquet missing fixed length`);return xc(e,n,r)}else throw Error(`parquet unhandled type: ${t}`)}function mc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.offset+(r/8|0),i=r%8;n[r]=(e.view.getUint8(t)&1<<i)!=0}return e.offset+=Math.ceil(t/8),n}function hc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Int32Array(Sc(e.view.buffer,e.view.byteOffset+e.offset,t*4)):new Int32Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*4,n}function gc(e,t){let n=(e.view.byteOffset+e.offset)%8?new BigInt64Array(Sc(e.view.buffer,e.view.byteOffset+e.offset,t*8)):new BigInt64Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*8,n}function _c(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.view.getBigInt64(e.offset+r*12,!0),i=e.view.getInt32(e.offset+r*12+8,!0);n[r]=BigInt(i)<<64n|t}return e.offset+=t*12,n}function vc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Float32Array(Sc(e.view.buffer,e.view.byteOffset+e.offset,t*4)):new Float32Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*4,n}function yc(e,t){let n=(e.view.byteOffset+e.offset)%8?new Float64Array(Sc(e.view.buffer,e.view.byteOffset+e.offset,t*8)):new Float64Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*8,n}function bc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.view.getUint32(e.offset,!0);e.offset+=4,n[r]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t),e.offset+=t}return n}function xc(e,t,n){let r=Array(t);for(let i=0;i<t;i++)r[i]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,n),e.offset+=n;return r}function Sc(e,t,n){let r=new ArrayBuffer(n);return new Uint8Array(r).set(new Uint8Array(e,t,n)),r}var Cc=n((()=>{}));function wc(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[t+a]}function Tc(e,t){let n=e.byteLength,r=t.byteLength,i=0,a=0;for(;i<n;){let t=e[i];if(i++,t<128)break}if(r&&i>=n)throw Error(`invalid snappy length header`);for(;i<n;){let r=e[i],o=0;if(i++,i>=n)throw Error(`missing eof marker`);if(r&3){let s=0;switch(r&3){case 1:o=(r>>>2&7)+4,s=e[i]+(r>>>5<<8),i++;break;case 2:if(n<=i+1)throw Error(`snappy error end of input`);o=(r>>>2)+1,s=e[i]+(e[i+1]<<8),i+=2;break;case 3:if(n<=i+3)throw Error(`snappy error end of input`);o=(r>>>2)+1,s=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),i+=4;break;default:break}if(s===0||isNaN(s))throw Error(`invalid offset ${s} pos ${i} inputLength ${n}`);if(s>a)throw Error(`cannot copy from before start of buffer`);wc(t,a-s,t,a,o),a+=o}else{let o=(r>>>2)+1;if(o>60){if(i+3>=n)throw Error(`snappy error literal pos + 3 >= inputLength`);let t=o-60;o=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),o=(o&Ec[t])+1,i+=t}if(i+o>n)throw Error(`snappy error literal exceeds input length`);wc(e,i,t,a,o),i+=o,a+=o}}if(a!==r)throw Error(`premature end of input`)}var Ec,Dc=n((()=>{Ec=[0,255,65535,16777215,4294967295]}));function Oc(e,t,{type:n,element:r,schemaPath:i}){let a=new DataView(e.buffer,e.byteOffset,e.byteLength),o={view:a,offset:0},s,c=kc(o,t,i),{definitionLevels:l,numNulls:u}=Ac(o,t,i),d=t.num_values-u;if(t.encoding===`PLAIN`)s=pc(o,n,d,r.type_length);else if(t.encoding===`PLAIN_DICTIONARY`||t.encoding===`RLE_DICTIONARY`||t.encoding===`RLE`){let e=n===`BOOLEAN`?1:a.getUint8(o.offset++);e?(s=Array(d),n===`BOOLEAN`?(sc(o,e,s),s=s.map(e=>!!e)):sc(o,e,s,a.byteLength-o.offset)):s=new Uint8Array(d)}else if(t.encoding===`BYTE_STREAM_SPLIT`)s=uc(o,d,n,r.type_length);else if(t.encoding===`DELTA_BINARY_PACKED`)s=n===`INT32`?new Int32Array(d):new BigInt64Array(d),nc(o,d,s);else if(t.encoding===`DELTA_LENGTH_BYTE_ARRAY`)s=Array(d),rc(o,d,s);else throw Error(`parquet unsupported encoding: ${t.encoding}`);return{definitionLevels:l,repetitionLevels:c,dataPage:s}}function kc(e,t,n){if(n.length>1){let r=Qo(n);if(r){let n=Array(t.num_values);return sc(e,oc(r),n),n}}return[]}function Ac(e,t,n){let r=$o(n);if(!r)return{definitionLevels:[],numNulls:0};let i=Array(t.num_values);sc(e,oc(r),i);let a=t.num_values;for(let e of i)e===r&&a--;return a===0&&(i.length=0),{definitionLevels:i,numNulls:a}}function jc(e,t,n,r){let i,a=r?.[n];if(n===`UNCOMPRESSED`)i=e;else if(a)i=a(e,t);else if(n===`SNAPPY`)i=new Uint8Array(t),Tc(e,i);else throw Error(`parquet unsupported compression codec: ${n}`);if(i?.length!==t)throw Error(`parquet decompressed page length ${i?.length} does not match header ${t}`);return i}function Mc(e,t,n){let r={view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0},{type:i,element:a,schemaPath:o,codec:s,compressors:c}=n,l=t.data_page_header_v2;if(!l)throw Error(`parquet data page header v2 is undefined`);let u=Nc(r,l,o);r.offset=l.repetition_levels_byte_length;let d=Pc(r,l,o),f=t.uncompressed_page_size-l.definition_levels_byte_length-l.repetition_levels_byte_length,p=e.subarray(r.offset);l.is_compressed!==!1&&(p=jc(p,f,s,c));let m=new DataView(p.buffer,p.byteOffset,p.byteLength),h={view:m,offset:0},g,_=l.num_values-l.num_nulls;if(l.encoding===`PLAIN`)g=pc(h,i,_,a.type_length);else if(l.encoding===`RLE`)g=Array(_),sc(h,1,g),g=g.map(e=>!!e);else if(l.encoding===`PLAIN_DICTIONARY`||l.encoding===`RLE_DICTIONARY`){let e=m.getUint8(h.offset++);g=Array(_),sc(h,e,g,f-1)}else if(l.encoding===`DELTA_BINARY_PACKED`)g=i===`INT32`?new Int32Array(_):new BigInt64Array(_),nc(h,_,g);else if(l.encoding===`DELTA_LENGTH_BYTE_ARRAY`)g=Array(_),rc(h,_,g);else if(l.encoding===`DELTA_BYTE_ARRAY`)g=Array(_),ic(h,_,g);else if(l.encoding===`BYTE_STREAM_SPLIT`)g=uc(h,_,i,a.type_length);else throw Error(`parquet unsupported encoding: ${l.encoding}`);return{definitionLevels:d,repetitionLevels:u,dataPage:g}}function Nc(e,t,n){let r=Qo(n);if(!r)return[];let i=Array(t.num_values);return sc(e,oc(r),i,t.repetition_levels_byte_length),i}function Pc(e,t,n){let r=$o(n);if(r){let n=Array(t.num_values);return sc(e,oc(r),n,t.definition_levels_byte_length),n}}var Fc=n((()=>{ac(),fc(),Cc(),rs(),Dc()}));function Ic(e,{groupStart:t,selectStart:n,selectEnd:r},i,a){let{pathInSchema:o,schemaPath:s}=i,c=ns(s),l=[],u,d,f=0,p=0,m=a&&(()=>{d&&a({pathInSchema:o,columnData:d,rowStart:t+f-d.length,rowEnd:t+f})});for(;(c?f<r:e.offset<e.view.byteLength-1)&&!(e.offset>=e.view.byteLength-1);){let t=Rc(e);if(t.type===`DICTIONARY_PAGE`){let{data:n}=Lc(e,t,i,u,void 0,0);n&&(u=Ho(n,i))}else{let r=d?.length||0,a=Lc(e,t,i,u,d,n-f);a.skipped?(l.length||(p+=a.skipped),f+=a.skipped):a.data&&d===a.data?f+=a.data.length-r:a.data&&a.data.length&&(m?.(),l.push(a.data),f+=a.data.length,d=a.data)}}return m?.(),{data:l,skipped:p}}function Lc(e,t,n,r,i,a){let{type:o,element:s,schemaPath:c,codec:l,compressors:u}=n,d=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t.compressed_page_size);if(e.offset+=t.compressed_page_size,t.type===`DATA_PAGE`){let e=t.data_page_header;if(!e)throw Error(`parquet data page header is undefined`);if(a>e.num_values&&ns(c))return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:f}=Oc(jc(d,Number(t.uncompressed_page_size),l,u),e,n),p=Vo(f,r,e.encoding,n);return{skipped:0,data:Xs(Array.isArray(i)?i:[],o,s,p,c)}}else if(t.type===`DATA_PAGE_V2`){let e=t.data_page_header_v2;if(!e)throw Error(`parquet data page header v2 is undefined`);if(a>e.num_rows)return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:l}=Mc(d,t,n),u=Vo(l,r,e.encoding,n);return{skipped:0,data:Xs(Array.isArray(i)?i:[],o,s,u,c)}}else if(t.type===`DICTIONARY_PAGE`){let e=t.dictionary_page_header;if(!e)throw Error(`parquet dictionary page header is undefined`);let n=jc(d,Number(t.uncompressed_page_size),l,u);return{skipped:0,data:pc({view:new DataView(n.buffer,n.byteOffset,n.byteLength),offset:0},o,e.num_values,s.type_length)}}else throw Error(`parquet unsupported page type: ${t.type}`)}function Rc(e){let t=is(e);return{type:Mo[t.field_1],uncompressed_page_size:t.field_2,compressed_page_size:t.field_3,crc:t.field_4,data_page_header:t.field_5&&{num_values:t.field_5.field_1,encoding:Oo[t.field_5.field_2],definition_level_encoding:Oo[t.field_5.field_3],repetition_level_encoding:Oo[t.field_5.field_4],statistics:t.field_5.field_5&&{max:t.field_5.field_5.field_1,min:t.field_5.field_5.field_2,null_count:t.field_5.field_5.field_3,distinct_count:t.field_5.field_5.field_4,max_value:t.field_5.field_5.field_5,min_value:t.field_5.field_5.field_6}},index_page_header:t.field_6,dictionary_page_header:t.field_7&&{num_values:t.field_7.field_1,encoding:Oo[t.field_7.field_2],is_sorted:t.field_7.field_3},data_page_header_v2:t.field_8&&{num_values:t.field_8.field_1,num_nulls:t.field_8.field_2,num_rows:t.field_8.field_3,encoding:Oo[t.field_8.field_4],definition_levels_byte_length:t.field_8.field_5,repetition_levels_byte_length:t.field_8.field_6,is_compressed:t.field_8.field_7===void 0?!0:t.field_8.field_7,statistics:t.field_8.field_8}}}var zc=n((()=>{tc(),Po(),Jo(),Fc(),Cc(),rs(),fs()}));function Bc(e){let t=is(e);return{page_locations:t.field_1.map(Vc),unencoded_byte_array_data_bytes:t.field_2}}function Vc(e){return{offset:e.field_1,compressed_page_size:e.field_2,first_row_index:e.field_3}}var Hc=n((()=>{fs()}));function Uc(e,{metadata:t},n){let{file:r,compressors:i,utf8:a}=e,o=[],s={...qo,...e.parsers};for(let c of n.chunks){let{columnMetadata:l}=c,u=Xo(t.schema,l.path_in_schema),d={pathInSchema:l.path_in_schema,type:l.type,element:u[u.length-1].element,schemaPath:u,codec:l.codec,parsers:s,compressors:i,utf8:a};if(!(`offsetIndex`in c)){o.push({pathInSchema:l.path_in_schema,data:Promise.resolve(r.slice(c.range.startByte,c.range.endByte)).then(t=>Ic({view:new DataView(t),offset:0},n,d,e.onPage))});continue}o.push({pathInSchema:l.path_in_schema,data:Promise.resolve(r.slice(c.offsetIndex.startByte,c.offsetIndex.endByte)).then(async t=>{let i=Bc({view:new DataView(t),offset:0}),{selectStart:a,selectEnd:o}=n,s=i.page_locations,c=NaN,l=NaN,u=0;for(let e=0;e<s.length;e++){let t=s[e],r=Number(t.first_row_index),i=e+1<s.length?Number(s[e+1].first_row_index):n.groupRows;r<o&&i>a&&(Number.isNaN(c)&&(c=Number(t.offset),u=r),l=Number(t.offset)+t.compressed_page_size)}let f=await r.slice(c,l),{data:p,skipped:m}=Ic({view:new DataView(f),offset:0},u?{...n,groupStart:n.groupStart+u,selectStart:n.selectStart-u,selectEnd:n.selectEnd-u}:n,d,e.onPage);return{data:p,skipped:u+m}})})}return{groupStart:n.groupStart,groupRows:n.groupRows,asyncColumns:o}}function Wc(e,t,n){let{asyncColumns:r}=e;n={...qo,...n};let i=[];for(let e of t.children)if(e.children.length){let t=r.filter(t=>t.pathInSchema[0]===e.element.name);if(!t.length)continue;let a=new Map,o=Promise.all(t.map(e=>e.data.then(({data:t})=>{a.set(e.pathInSchema.join(`.`),Os(t))}))).then(()=>{Zs(a,e,n);let t=a.get(e.path.join(`.`));if(!t)throw Error(`parquet column data not assembled`);return{data:[t],skipped:0}});i.push({pathInSchema:e.path,data:o})}else{let t=r.find(t=>t.pathInSchema[0]===e.element.name);t&&i.push(t)}return{...e,asyncColumns:i}}var Gc=n((()=>{tc(),zc(),Jo(),Hc(),rs(),ks()})),Kc=r({parquetRead:()=>Qc,parquetReadObjects:()=>$c});function qc(e){if(!e.metadata)throw Error(`parquet requires metadata`);let t=Ms(e);return e.file=Ns(e.file,t),t.groups.map(n=>Uc(e,t,n))}function Jc(e){if(!e)return[];if(e.length===1)return e[0];let t=0;for(let n of e)t+=n.length;let n=Array(t),r=0;for(let t of e){for(let e=0;e<t.length;e++)n[r+e]=t[e];r+=t.length}return n}function Yc(e){let t=e.join(``),n=el.get(t);if(n)return n;let r=e.map((e,t)=>JSON.stringify(e)+`: columnData[`+t+`][row - columnSkipped[`+t+`]]`).join(`,
|
|
8
8
|
`),i=Function(`groupData`,`selectStart`,`selectCount`,`columnData`,`columnSkipped`,`for (let selectRow = 0; selectRow < selectCount; selectRow++) {
|
|
9
9
|
const row = selectStart + selectRow;
|
|
10
10
|
groupData[selectRow] = {
|
|
11
11
|
`+r+`
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
-
return groupData;`);return el.set(t,i),i}function Xc(e,t,n,r,i,a){for(let o=0;o<n;o++){let n=t+o,s={};for(let e=0;e<r.length;e++)s[r[e]]=i[e][n-a[e]];e[o]=s}return e}async function Zc({asyncColumns:e},t,n){let r=await Promise.all(e.map(e=>e.data)),i=e.length,a=Array(i),o=Array(i),s=Array(i);for(let t=0;t<i;t++)a[t]=e[t].pathInSchema[0],o[t]=Jc(r[t].data),s[t]=r[t].skipped;let c=n-t,l=Array(c);return i>tl?Xc(l,t,c,a,o,s):Yc(a)(l,t,c,o,s)}async function Qc(e){if(`rowFormat`in e)throw Error(`parquetRead supports only object rows; use rowFormat: "object" implicitly`);if(`filter`in e||`filterStrict`in e)throw Error(`parquetRead does not support filtering`);e.metadata??=await gs(e.file,e);let{rowStart:t=0,rowEnd:n,onChunk:r,onComplete:i}=e,a=qc(e);if(!i&&!r){for(let{asyncColumns:e}of a)for(let{data:t}of e)await t;return}let o=vs(e.metadata),s=a.map(t=>Wc(t,o,e.parsers));if(r)for(let e of s)for(let t of e.asyncColumns)t.data.then(n=>{let i=e.groupStart+n.skipped;for(let e of n.data)r({columnName:t.pathInSchema[0],columnData:e,rowStart:i,rowEnd:i+e.length}),i+=e.length});if(i){let e=[];for(let r of s)Es(e,await Zc(r,Math.max(t-r.groupStart,0),Math.min((n??1/0)-r.groupStart,r.groupRows)));i(e)}else for(let{asyncColumns:e}of s)for(let{data:t}of e)await t}function $c(e){return new Promise((t,n)=>{Qc({...e,onComplete:t}).catch(n)})}var el,tl,nl=n((()=>{Ts(),Fs(),Gc(),ks(),el=new Map,tl=200}));async function rl(){let{parquetReadObjects:e}=await Promise.resolve().then(()=>(nl(),Kc));return e}async function il(e){return await(await rl())({file:e instanceof Uint8Array?e.buffer:e})}il.responseType=`arrayBuffer`,wo(`parquet`,il);function al(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}function ol(e,t,n,r){this.message=e,this.expected=t,this.found=n,this.location=r,this.name=`SyntaxError`,typeof Error.captureStackTrace==`function`&&Error.captureStackTrace(this,ol)}function sl(e,t){t=t===void 0?{}:t;var n={},r={declaration:pt},i=pt,a=`(`,o=j(`(`,!1),s=`)`,c=j(`)`,!1),l=function(e,t,n,r){return{type:e,name:t,comment:n,fields:r}},u=`simple`,d=j(`simple`,!1),f=`object`,p=j(`object`,!1),m=`table`,h=j(`table`,!1),g=`auto`,_=j(`auto`,!1),v=`primary`,y=j(`primary`,!1),b=`index`,x=j(`index`,!1),S=`unique`,C=j(`unique`,!1),w=function(e,t){return t},T=function(e,t){return e.name&&t.unshift(e),t},E=`#`,
|
|
15
|
-
`,`\r`],!0,!1),
|
|
16
|
-
`,`\r`],!1,!1),k=0,tt=0,nt=[{line:1,column:1}],rt=0,it=[],A=0,at;if(`startRule`in t){if(!(t.startRule in r))throw Error(`Can't start parsing from rule "`+t.startRule+`".`);i=r[t.startRule]}function ot(){return e.substring(tt,k)}function j(e,t){return{type:`literal`,text:e,ignoreCase:t}}function st(e,t,n){return{type:`class`,parts:e,inverted:t,ignoreCase:n}}function ct(){return{type:`end`}}function lt(e){return{type:`other`,description:e}}function ut(t){var n=nt[t],r;if(n)return n;for(r=t-1;!nt[r];)r--;for(n=nt[r],n={line:n.line,column:n.column};r<t;)e.charCodeAt(r)===10?(n.line++,n.column=1):n.column++,r++;return nt[t]=n,n}function dt(e,t){var n=ut(e),r=ut(t);return{start:{offset:e,line:n.line,column:n.column},end:{offset:t,line:r.line,column:r.column}}}function M(e){k<rt||(k>rt&&(rt=k,it=[]),it.push(e))}function ft(e,t,n){return new ol(ol.buildMessage(e,t),e,t,n)}function pt(){var t=k,r=F(),i,u,d,f,p,m,h,g,_,v,y,b;return r===n?(k=t,t=n):(i=mt(),i===n?(k=t,t=n):(u=F(),u===n?(k=t,t=n):(d=ht(),d===n?(k=t,t=n):(f=F(),f===n?(k=t,t=n):(p=_t(),p===n?(k=t,t=n):(m=F(),m===n?(k=t,t=n):(e.charCodeAt(k)===40?(h=a,k++):(h=n,A===0&&M(o)),h===n?(k=t,t=n):(g=F(),g===n?(k=t,t=n):(_=vt(),_===n?(k=t,t=n):(v=F(),v===n?(k=t,t=n):(e.charCodeAt(k)===41?(y=s,k++):(y=n,A===0&&M(c)),y===n?(k=t,t=n):(b=F(),b===n?(k=t,t=n):(tt=t,r=l(i,d,p,_),t=r))))))))))))),t}function mt(){var t;return e.substr(k,6)===u?(t=u,k+=6):(t=n,A===0&&M(d)),t===n&&(e.substr(k,6)===f?(t=f,k+=6):(t=n,A===0&&M(p)),t===n&&(e.substr(k,5)===m?(t=m,k+=5):(t=n,A===0&&M(h)))),t}function ht(){var t=N(),r,i,a;return t===n&&(t=k,r=N(),r===n?(k=t,t=n):(i=gt(),i===n?(k=t,t=n):(r=[r,i],t=r)),t===n&&(t=k,r=N(),r===n?(k=t,t=n):(e.substr(k,4)===g?(i=g,k+=4):(i=n,A===0&&M(_)),i===n?(k=t,t=n):(r=[r,i],t=r)),t===n&&(t=k,r=N(),r===n?(k=t,t=n):(i=gt(),i===n?(k=t,t=n):(e.substr(k,4)===g?(a=g,k+=4):(a=n,A===0&&M(_)),a===n?(k=t,t=n):(r=[r,i,a],t=r)))))),t}function gt(){var t;return e.substr(k,7)===v?(t=v,k+=7):(t=n,A===0&&M(y)),t===n&&(e.substr(k,5)===b?(t=b,k+=5):(t=n,A===0&&M(x)),t===n&&(e.substr(k,6)===S?(t=S,k+=6):(t=n,A===0&&M(C)))),t}function _t(){var e=Tt();return e===n&&(e=F()),e}function vt(){var e=k,t=xt(),r,i,a,o,s;if(t!==n)if(r=F(),r!==n){for(i=[],a=k,o=F(),o===n?(k=a,a=n):(s=xt(),s===n?(k=a,a=n):(tt=a,o=w(t,s),a=o));a!==n;)i.push(a),a=k,o=F(),o===n?(k=a,a=n):(s=xt(),s===n?(k=a,a=n):(tt=a,o=w(t,s),a=o));i===n?(k=e,e=n):(a=F(),a===n?(k=e,e=n):(tt=e,t=T(t,i),e=t))}else k=e,e=n;else k=e,e=n;return e}function yt(){var t;return e.charCodeAt(k)===35?(t=E,k++):(t=n,A===0&&M(
|
|
14
|
+
return groupData;`);return el.set(t,i),i}function Xc(e,t,n,r,i,a){for(let o=0;o<n;o++){let n=t+o,s={};for(let e=0;e<r.length;e++)s[r[e]]=i[e][n-a[e]];e[o]=s}return e}async function Zc({asyncColumns:e},t,n){let r=await Promise.all(e.map(e=>e.data)),i=e.length,a=Array(i),o=Array(i),s=Array(i);for(let t=0;t<i;t++)a[t]=e[t].pathInSchema[0],o[t]=Jc(r[t].data),s[t]=r[t].skipped;let c=n-t,l=Array(c);return i>tl?Xc(l,t,c,a,o,s):Yc(a)(l,t,c,o,s)}async function Qc(e){if(`rowFormat`in e)throw Error(`parquetRead supports only object rows; use rowFormat: "object" implicitly`);if(`filter`in e||`filterStrict`in e)throw Error(`parquetRead does not support filtering`);e.metadata??=await gs(e.file,e);let{rowStart:t=0,rowEnd:n,onChunk:r,onComplete:i}=e,a=qc(e);if(!i&&!r){for(let{asyncColumns:e}of a)for(let{data:t}of e)await t;return}let o=vs(e.metadata),s=a.map(t=>Wc(t,o,e.parsers));if(r)for(let e of s)for(let t of e.asyncColumns)t.data.then(n=>{let i=e.groupStart+n.skipped;for(let e of n.data)r({columnName:t.pathInSchema[0],columnData:e,rowStart:i,rowEnd:i+e.length}),i+=e.length});if(i){let e=[];for(let r of s)Es(e,await Zc(r,Math.max(t-r.groupStart,0),Math.min((n??1/0)-r.groupStart,r.groupRows)));i(e)}else for(let{asyncColumns:e}of s)for(let{data:t}of e)await t}function $c(e){return new Promise((t,n)=>{Qc({...e,onComplete:t}).catch(n)})}var el,tl,nl=n((()=>{Ts(),Fs(),Gc(),ks(),el=new Map,tl=200}));async function rl(){let{parquetReadObjects:e}=await Promise.resolve().then(()=>(nl(),Kc));return e}async function il(e){return await(await rl())({file:e instanceof Uint8Array?e.buffer:e})}il.responseType=`arrayBuffer`,wo(`parquet`,il);function al(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}function ol(e,t,n,r){this.message=e,this.expected=t,this.found=n,this.location=r,this.name=`SyntaxError`,typeof Error.captureStackTrace==`function`&&Error.captureStackTrace(this,ol)}function sl(e,t){t=t===void 0?{}:t;var n={},r={declaration:pt},i=pt,a=`(`,o=j(`(`,!1),s=`)`,c=j(`)`,!1),l=function(e,t,n,r){return{type:e,name:t,comment:n,fields:r}},u=`simple`,d=j(`simple`,!1),f=`object`,p=j(`object`,!1),m=`table`,h=j(`table`,!1),g=`auto`,_=j(`auto`,!1),v=`primary`,y=j(`primary`,!1),b=`index`,x=j(`index`,!1),S=`unique`,C=j(`unique`,!1),w=function(e,t){return t},T=function(e,t){return e.name&&t.unshift(e),t},E=`#`,ee=j(`#`,!1),te=`;`,ne=j(`;`,!1),re=function(e,t,n){return{type:e,name:t,comment:n}},ie=`[`,ae=j(`[`,!1),oe=`]`,se=j(`]`,!1),ce=function(e,t,n,r){return{type:e,size:t,name:n,comment:r}},le=function(e,t,n,r){return{type:e,vals:t,name:n,comment:r}},ue=`,`,de=j(`,`,!1),fe=function(e,t){return t.unshift(e),t},pe=`int`,me=j(`int`,!1),he=`uint`,ge=j(`uint`,!1),_e=`short`,ve=j(`short`,!1),ye=`ushort`,be=j(`ushort`,!1),D=`byte`,xe=j(`byte`,!1),Se=`ubyte`,Ce=j(`ubyte`,!1),we=`float`,Te=j(`float`,!1),Ee=`char`,De=j(`char`,!1),Oe=`string`,ke=j(`string`,!1),Ae=`lstring`,je=j(`lstring`,!1),Me=`enum`,Ne=j(`enum`,!1),Pe=`double`,Fe=j(`double`,!1),Ie=`bigint`,Le=j(`bigint`,!1),Re=`set`,ze=j(`set`,!1),Be=function(e,t){return e+` `+t},Ve=/^[a-zA-Z_]/,He=st([[`a`,`z`],[`A`,`Z`],`_`],!1,!1),Ue=/^[a-zA-Z0-9_]/,We=st([[`a`,`z`],[`A`,`Z`],[`0`,`9`],`_`],!1,!1),Ge=function(e){return ot()},Ke=/^[^\n\r]/,qe=st([`
|
|
15
|
+
`,`\r`],!0,!1),Je=function(e){return e.join(``).replace(/^"/,``).replace(/"$/,``)},Ye=lt(`integer`),Xe=/^[0-9]/,Ze=st([[`0`,`9`]],!1,!1),O=function(){return parseInt(ot(),10)},Qe=lt(`whitespace`),$e=/^[ \t\n\r]/,et=st([` `,` `,`
|
|
16
|
+
`,`\r`],!1,!1),k=0,tt=0,nt=[{line:1,column:1}],rt=0,it=[],A=0,at;if(`startRule`in t){if(!(t.startRule in r))throw Error(`Can't start parsing from rule "`+t.startRule+`".`);i=r[t.startRule]}function ot(){return e.substring(tt,k)}function j(e,t){return{type:`literal`,text:e,ignoreCase:t}}function st(e,t,n){return{type:`class`,parts:e,inverted:t,ignoreCase:n}}function ct(){return{type:`end`}}function lt(e){return{type:`other`,description:e}}function ut(t){var n=nt[t],r;if(n)return n;for(r=t-1;!nt[r];)r--;for(n=nt[r],n={line:n.line,column:n.column};r<t;)e.charCodeAt(r)===10?(n.line++,n.column=1):n.column++,r++;return nt[t]=n,n}function dt(e,t){var n=ut(e),r=ut(t);return{start:{offset:e,line:n.line,column:n.column},end:{offset:t,line:r.line,column:r.column}}}function M(e){k<rt||(k>rt&&(rt=k,it=[]),it.push(e))}function ft(e,t,n){return new ol(ol.buildMessage(e,t),e,t,n)}function pt(){var t=k,r=F(),i,u,d,f,p,m,h,g,_,v,y,b;return r===n?(k=t,t=n):(i=mt(),i===n?(k=t,t=n):(u=F(),u===n?(k=t,t=n):(d=ht(),d===n?(k=t,t=n):(f=F(),f===n?(k=t,t=n):(p=_t(),p===n?(k=t,t=n):(m=F(),m===n?(k=t,t=n):(e.charCodeAt(k)===40?(h=a,k++):(h=n,A===0&&M(o)),h===n?(k=t,t=n):(g=F(),g===n?(k=t,t=n):(_=vt(),_===n?(k=t,t=n):(v=F(),v===n?(k=t,t=n):(e.charCodeAt(k)===41?(y=s,k++):(y=n,A===0&&M(c)),y===n?(k=t,t=n):(b=F(),b===n?(k=t,t=n):(tt=t,r=l(i,d,p,_),t=r))))))))))))),t}function mt(){var t;return e.substr(k,6)===u?(t=u,k+=6):(t=n,A===0&&M(d)),t===n&&(e.substr(k,6)===f?(t=f,k+=6):(t=n,A===0&&M(p)),t===n&&(e.substr(k,5)===m?(t=m,k+=5):(t=n,A===0&&M(h)))),t}function ht(){var t=N(),r,i,a;return t===n&&(t=k,r=N(),r===n?(k=t,t=n):(i=gt(),i===n?(k=t,t=n):(r=[r,i],t=r)),t===n&&(t=k,r=N(),r===n?(k=t,t=n):(e.substr(k,4)===g?(i=g,k+=4):(i=n,A===0&&M(_)),i===n?(k=t,t=n):(r=[r,i],t=r)),t===n&&(t=k,r=N(),r===n?(k=t,t=n):(i=gt(),i===n?(k=t,t=n):(e.substr(k,4)===g?(a=g,k+=4):(a=n,A===0&&M(_)),a===n?(k=t,t=n):(r=[r,i,a],t=r)))))),t}function gt(){var t;return e.substr(k,7)===v?(t=v,k+=7):(t=n,A===0&&M(y)),t===n&&(e.substr(k,5)===b?(t=b,k+=5):(t=n,A===0&&M(x)),t===n&&(e.substr(k,6)===S?(t=S,k+=6):(t=n,A===0&&M(C)))),t}function _t(){var e=Tt();return e===n&&(e=F()),e}function vt(){var e=k,t=xt(),r,i,a,o,s;if(t!==n)if(r=F(),r!==n){for(i=[],a=k,o=F(),o===n?(k=a,a=n):(s=xt(),s===n?(k=a,a=n):(tt=a,o=w(t,s),a=o));a!==n;)i.push(a),a=k,o=F(),o===n?(k=a,a=n):(s=xt(),s===n?(k=a,a=n):(tt=a,o=w(t,s),a=o));i===n?(k=e,e=n):(a=F(),a===n?(k=e,e=n):(tt=e,t=T(t,i),e=t))}else k=e,e=n;else k=e,e=n;return e}function yt(){var t;return e.charCodeAt(k)===35?(t=E,k++):(t=n,A===0&&M(ee)),t}function bt(){var e=k,t=F(),r,i,a;return t===n?(k=e,e=n):(r=yt(),r===n?(k=e,e=n):(i=Tt(),i===n?(k=e,e=n):(a=F(),a===n?(k=e,e=n):(t=[t,r,i,a],e=t)))),e}function xt(){var t=k,r=Ct(),i,l,u,d,f,p,m,h,g,_,v,y;return r===n?(k=t,t=n):(i=F(),i===n?(k=t,t=n):(l=N(),l===n?(k=t,t=n):(u=F(),u===n?(k=t,t=n):(e.charCodeAt(k)===59?(d=te,k++):(d=n,A===0&&M(ne)),d===n?(k=t,t=n):(f=F(),f===n?(k=t,t=n):(p=_t(),p===n?(k=t,t=n):(tt=t,r=re(r,l,p),t=r))))))),t===n&&(t=k,r=Ct(),r===n?(k=t,t=n):(i=F(),i===n?(k=t,t=n):(e.charCodeAt(k)===91?(l=ie,k++):(l=n,A===0&&M(ae)),l===n?(k=t,t=n):(u=F(),u===n?(k=t,t=n):(d=wt(),d===n?(k=t,t=n):(f=F(),f===n?(k=t,t=n):(e.charCodeAt(k)===93?(p=oe,k++):(p=n,A===0&&M(se)),p===n?(k=t,t=n):(m=F(),m===n?(k=t,t=n):(h=N(),h===n?(k=t,t=n):(g=F(),g===n?(k=t,t=n):(e.charCodeAt(k)===59?(_=te,k++):(_=n,A===0&&M(ne)),_===n?(k=t,t=n):(v=F(),v===n?(k=t,t=n):(y=_t(),y===n?(k=t,t=n):(tt=t,r=ce(r,d,h,y),t=r))))))))))))),t===n&&(t=k,r=Ct(),r===n?(k=t,t=n):(i=F(),i===n?(k=t,t=n):(e.charCodeAt(k)===40?(l=a,k++):(l=n,A===0&&M(o)),l===n?(k=t,t=n):(u=F(),u===n?(k=t,t=n):(d=St(),d===n?(k=t,t=n):(f=F(),f===n?(k=t,t=n):(e.charCodeAt(k)===41?(p=s,k++):(p=n,A===0&&M(c)),p===n?(k=t,t=n):(m=F(),m===n?(k=t,t=n):(h=N(),h===n?(k=t,t=n):(g=F(),g===n?(k=t,t=n):(e.charCodeAt(k)===59?(_=te,k++):(_=n,A===0&&M(ne)),_===n?(k=t,t=n):(v=F(),v===n?(k=t,t=n):(y=_t(),y===n?(k=t,t=n):(tt=t,r=le(r,d,h,y),t=r))))))))))))),t===n&&(t=bt()))),t}function St(){var t=k,r=N(),i,a,o,s,c;if(r!==n){for(i=[],a=k,e.charCodeAt(k)===44?(o=ue,k++):(o=n,A===0&&M(de)),o===n?(k=a,a=n):(s=F(),s===n?(k=a,a=n):(c=N(),c===n?(k=a,a=n):(tt=a,o=w(r,c),a=o)));a!==n;)i.push(a),a=k,e.charCodeAt(k)===44?(o=ue,k++):(o=n,A===0&&M(de)),o===n?(k=a,a=n):(s=F(),s===n?(k=a,a=n):(c=N(),c===n?(k=a,a=n):(tt=a,o=w(r,c),a=o)));i===n?(k=t,t=n):(tt=t,r=fe(r,i),t=r)}else k=t,t=n;return t}function Ct(){var t,r,i,a;return e.substr(k,3)===pe?(t=pe,k+=3):(t=n,A===0&&M(me)),t===n&&(e.substr(k,4)===he?(t=he,k+=4):(t=n,A===0&&M(ge)),t===n&&(e.substr(k,5)===_e?(t=_e,k+=5):(t=n,A===0&&M(ve)),t===n&&(e.substr(k,6)===ye?(t=ye,k+=6):(t=n,A===0&&M(be)),t===n&&(e.substr(k,4)===D?(t=D,k+=4):(t=n,A===0&&M(xe)),t===n&&(e.substr(k,5)===Se?(t=Se,k+=5):(t=n,A===0&&M(Ce)),t===n&&(e.substr(k,5)===we?(t=we,k+=5):(t=n,A===0&&M(Te)),t===n&&(e.substr(k,4)===Ee?(t=Ee,k+=4):(t=n,A===0&&M(De)),t===n&&(e.substr(k,6)===Oe?(t=Oe,k+=6):(t=n,A===0&&M(ke)),t===n&&(e.substr(k,7)===Ae?(t=Ae,k+=7):(t=n,A===0&&M(je)),t===n&&(e.substr(k,4)===Me?(t=Me,k+=4):(t=n,A===0&&M(Ne)),t===n&&(e.substr(k,6)===Pe?(t=Pe,k+=6):(t=n,A===0&&M(Fe)),t===n&&(e.substr(k,6)===Ie?(t=Ie,k+=6):(t=n,A===0&&M(Le)),t===n&&(e.substr(k,3)===Re?(t=Re,k+=3):(t=n,A===0&&M(ze)),t===n&&(t=k,r=mt(),r===n?(k=t,t=n):(i=F(),i===n?(k=t,t=n):(a=ht(),a===n?(k=t,t=n):(tt=t,r=Be(r,a),t=r))))))))))))))))),t}function wt(){var e=P();return e===n&&(e=N()),e}function N(){var t=k,r=k,i,a,o;if(Ve.test(e.charAt(k))?(i=e.charAt(k),k++):(i=n,A===0&&M(He)),i!==n){for(a=[],Ue.test(e.charAt(k))?(o=e.charAt(k),k++):(o=n,A===0&&M(We));o!==n;)a.push(o),Ue.test(e.charAt(k))?(o=e.charAt(k),k++):(o=n,A===0&&M(We));a===n?(k=r,r=n):(i=[i,a],r=i)}else k=r,r=n;return r!==n&&(tt=t,r=Ge(r)),t=r,t}function Tt(){var t=k,r=[],i;for(Ke.test(e.charAt(k))?(i=e.charAt(k),k++):(i=n,A===0&&M(qe));i!==n;)r.push(i),Ke.test(e.charAt(k))?(i=e.charAt(k),k++):(i=n,A===0&&M(qe));return r!==n&&(tt=t,r=Je(r)),t=r,t}function P(){var t,r,i,a;if(A++,t=k,r=F(),r!==n){if(i=[],Xe.test(e.charAt(k))?(a=e.charAt(k),k++):(a=n,A===0&&M(Ze)),a!==n)for(;a!==n;)i.push(a),Xe.test(e.charAt(k))?(a=e.charAt(k),k++):(a=n,A===0&&M(Ze));else i=n;i===n?(k=t,t=n):(tt=t,r=O(),t=r)}else k=t,t=n;return A--,t===n&&(r=n,A===0&&M(Ye)),t}function F(){var t,r;for(A++,t=[],$e.test(e.charAt(k))?(r=e.charAt(k),k++):(r=n,A===0&&M(et));r!==n;)t.push(r),$e.test(e.charAt(k))?(r=e.charAt(k),k++):(r=n,A===0&&M(et));return A--,t===n&&(r=n,A===0&&M(Qe)),t}if(at=i(),at!==n&&k===e.length)return at;throw at!==n&&k<e.length&&M(ct()),ft(it,rt<e.length?e.charAt(rt):null,rt<e.length?dt(rt,rt+1):dt(rt,rt))}var cl,ll=n((()=>{al(ol,Error),ol.buildMessage=function(e,t){var n={literal:function(e){return`"`+i(e.text)+`"`},class:function(e){var t=``,n;for(n=0;n<e.parts.length;n++)t+=e.parts[n]instanceof Array?a(e.parts[n][0])+`-`+a(e.parts[n][1]):a(e.parts[n]);return`[`+(e.inverted?`^`:``)+t+`]`},any:function(e){return`any character`},end:function(e){return`end of input`},other:function(e){return e.description}};function r(e){return e.charCodeAt(0).toString(16).toUpperCase()}function i(e){return e.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(e){return`\\x0`+r(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return`\\x`+r(e)})}function a(e){return e.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(e){return`\\x0`+r(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return`\\x`+r(e)})}function o(e){return n[e.type](e)}function s(e){var t=Array(e.length),n,r;for(n=0;n<e.length;n++)t[n]=o(e[n]);if(t.sort(),t.length>0){for(n=1,r=1;n<t.length;n++)t[n-1]!==t[n]&&(t[r]=t[n],r++);t.length=r}switch(t.length){case 1:return t[0];case 2:return t[0]+` or `+t[1];default:return t.slice(0,-1).join(`, `)+`, or `+t[t.length-1]}}function c(e){return e?`"`+i(e)+`"`:`end of input`}return`Expected `+s(e)+` but `+c(t)+` found.`},cl={SyntaxError:ol,parse:sl}})),ul=r({bigChain:()=>dl,bigGenePred:()=>fl,bigInteract:()=>pl,bigLink:()=>ml,bigMaf:()=>hl,bigNarrowPeak:()=>gl,bigPsl:()=>_l,defaultBedSchema:()=>vl,mafFrames:()=>yl,mafSummary:()=>bl}),dl,fl,pl,ml,hl,gl,_l,vl,yl,bl,xl=n((()=>{dl=`table bigChain
|
|
17
17
|
"bigChain pairwise alignment"
|
|
18
18
|
(
|
|
19
19
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -173,7 +173,7 @@ return groupData;`);return el.set(t,i),i}function Xc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
173
173
|
char[1] leftStatus; "Gap/break annotation for preceding block"
|
|
174
174
|
char[1] rightStatus; "Gap/break annotation for following block"
|
|
175
175
|
)`})),Sl,Cl=n((()=>{xl(),ll(),Sl=Object.fromEntries(Object.entries(ul).map(([e,t])=>[e,cl.parse(t.trim())]))}));function wl(e){let t=new Set([`uint`,`int`,`float`,`long`]);return{...e,fields:e.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)}}var Tl=n((()=>{}));function El(e){return e.length>=12&&!Number.isNaN(Number.parseInt(e[9],10))&&e[10]?.split(`,`).filter(e=>!!e).length===Number.parseInt(e[9],10)}var Dl,Ol,kl=n((()=>{ll(),Cl(),Tl(),Dl={".":0,"-":-1,"+":1},Ol=class{autoSql;attemptDefaultBed;constructor(e={}){if(e.autoSql)this.autoSql=wl(cl.parse(e.autoSql));else if(e.type){if(!Sl[e.type])throw Error(`Type not found`);this.autoSql=wl(Sl[e.type])}else this.autoSql=wl(Sl.defaultBedSchema),this.attemptDefaultBed=!0}parseLine(e,t={}){let{autoSql:n}=this,{uniqueId:r}=t,i=Array.isArray(e)?e:e.split(` `),a={};if(!this.attemptDefaultBed||this.attemptDefaultBed&&El(i))for(let e=0;e<n.fields.length;e++){let t=n.fields[e],r=i[e],{isNumeric:o,isArray:s,arrayIsNumeric:c,name:l}=t;if(r==null)break;if(r!==`.`){if(o){let e=Number(r);r=Number.isNaN(e)?r:e}else s&&(r=r.split(`,`),r.at(-1)===``&&r.pop(),c&&(r=r.map(Number)));a[l]=r}}else{let e=[`chrom`,`chromStart`,`chromEnd`,`name`];a=Object.fromEntries(i.map((t,n)=>[e[n]||`field`+n,t])),a.chromStart=+a.chromStart,a.chromEnd=+a.chromEnd,Number.isNaN(Number.parseFloat(a.field4))||(a.score=+a.field4,delete a.field4),(a.field5===`+`||a.field5===`-`)&&(a.strand=a.field5,delete a.field5)}return r&&(a.uniqueId=r),a.strand=Dl[a.strand]||0,a.chrom=decodeURIComponent(a.chrom),a}}})),Al=r({default:()=>Ol}),jl=n((()=>{kl()})),Ml=/^\s*$/,Nl=/^\s*(?:browser\b|track\b|#)/,Pl;async function Fl(){return Pl??=Promise.resolve().then(()=>(jl(),Al)).then(e=>e.default),Pl}async function Il(e){let t=new(await(Fl())),n=!1,r=[],i=e.split(/\r?\n/);for(let e=0;e<i.length;e++){let a=i[e];if(a.length!=0){if(!n){if(Ml.test(a)||Nl.test(a))continue;n=!0}try{r.push(t.parseLine(a))}catch(t){throw Error(`Cannot parse BED line ${e+1}: ${t.message}`,{cause:t})}}}return r}wo(`bed`,Il);var Ll=/^\s*$/,Rl=/^\s*(?:browser\b|track\b|#)/,zl=[`chrom1`,`start1`,`end1`,`chrom2`,`start2`,`end2`,`name`,`score`,`strand1`,`strand2`],Bl=zl.slice(0,6),Vl=e=>e,Hl=e=>e==`.`?null:e,Ul=e=>e==`+`?1:e==`-`?-1:0,Wl=e=>{if(e==`.`||e==`-1`||e==``)return null;let t=Number(e);return Number.isInteger(t)?t:null},Gl={chrom1:Hl,chrom2:Hl,name:Hl,strand1:Ul,strand2:Ul,start1:Wl,end1:Wl,start2:Wl,end2:Wl,score:e=>{if(e==`.`||e==``)return null;let t=Number(e);return Number.isNaN(t)?e:t}};function Kl(e){if(e.length<Bl.length)return!1;for(let t=0;t<Bl.length;t++)if(e[t]!=Bl[t])return!1;return!0}function ql(e,t={}){let n=e.split(/\r?\n/),r=t.columns,i=!1,a=!1,o=0,s=[],c=[],l=[];for(let e of n){if(o++,e.length==0)continue;if(!i){if(Ll.test(e)||Rl.test(e))continue;i=!0}if(Ll.test(e))continue;let t=e.split(` `);if(!a){let e=r||(Kl(t)?t:zl);for(let t of e)s.push(t),c.push(Gl[t]??Vl);if(a=!0,!r&&e==t)continue}for(;s.length<t.length;)s.push(`field`+(s.length+1)),c.push(Vl);if(t.length<Bl.length)throw Error(`BEDPE line ${o} has ${t.length} columns, expected at least ${Bl.length}.`);let n={};for(let e=0;e<t.length;e++){let r=s[e];n[r]=c[e](t[e])}l.push(n)}return l}wo(`bedpe`,ql);function Jl(e,t){let n=[],r;for(let t of e.split(`
|
|
176
|
-
`))if(t.startsWith(`>`))r={identifier:t.match(/>(\S+)/)[1],sequence:``},n.push(r);else if(r)r.sequence+=t.trim();else throw Error(`Invalid fasta file!`);return n}wo(`fasta`,Jl);function Yl(e,t){return e.length==t.length&&e.every((n,r)=>e[r]===t[r])}function Xl(e){return Array.isArray(e)?e:e===void 0?[]:[e]}function Zl(e){return e[e.length-1]}function Ql(e,t,n){return n=(n-e)/(t-e),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}function $l(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function eu(e,t){switch(arguments.length){case 0:break;case 1:typeof e==`function`?this.interpolator(e):this.range(e);break;default:this.domain(e),typeof t==`function`?this.interpolator(t):this.range(t);break}return this}var tu=Symbol(`implicit`);function nu(){var e=new hn,t=[],n=[],r=tu;function i(i){let a=e.get(i);if(a===void 0){if(r!==tu)return r;e.set(i,a=t.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return t.slice();t=[],e=new hn;for(let r of n)e.has(r)||e.set(r,t.push(r)-1);return i},i.range=function(e){return arguments.length?(n=Array.from(e),i):n.slice()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return nu(t,n).unknown(r)},$l.apply(i,arguments),i}function ru(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function iu(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function au(){}var ou=.7,su=1/ou,cu=`\\s*([+-]?\\d+)\\s*`,lu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,uu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,du=/^#([0-9a-f]{3,8})$/,fu=RegExp(`^rgb\\(${cu},${cu},${cu}\\)$`),pu=RegExp(`^rgb\\(${uu},${uu},${uu}\\)$`),mu=RegExp(`^rgba\\(${cu},${cu},${cu},${lu}\\)$`),hu=RegExp(`^rgba\\(${uu},${uu},${uu},${lu}\\)$`),gu=RegExp(`^hsl\\(${lu},${uu},${uu}\\)$`),_u=RegExp(`^hsla\\(${lu},${uu},${uu},${lu}\\)$`),vu={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};ru(au,Cu,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:yu,formatHex:yu,formatHex8:bu,formatHsl:xu,formatRgb:Su,toString:Su});function yu(){return this.rgb().formatHex()}function bu(){return this.rgb().formatHex8()}function xu(){return Iu(this).formatHsl()}function Su(){return this.rgb().formatRgb()}function Cu(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=du.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?wu(t):n===3?new Ou(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Tu(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Tu(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=fu.exec(e))?new Ou(t[1],t[2],t[3],1):(t=pu.exec(e))?new Ou(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=mu.exec(e))?Tu(t[1],t[2],t[3],t[4]):(t=hu.exec(e))?Tu(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=gu.exec(e))?Fu(t[1],t[2]/100,t[3]/100,1):(t=_u.exec(e))?Fu(t[1],t[2]/100,t[3]/100,t[4]):vu.hasOwnProperty(e)?wu(vu[e]):e===`transparent`?new Ou(NaN,NaN,NaN,0):null}function wu(e){return new Ou(e>>16&255,e>>8&255,e&255,1)}function Tu(e,t,n,r){return r<=0&&(e=t=n=NaN),new Ou(e,t,n,r)}function Eu(e){return e instanceof au||(e=Cu(e)),e?(e=e.rgb(),new Ou(e.r,e.g,e.b,e.opacity)):new Ou}function Du(e,t,n,r){return arguments.length===1?Eu(e):new Ou(e,t,n,r??1)}function Ou(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}ru(Ou,Du,iu(au,{brighter(e){return e=e==null?su:su**+e,new Ou(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ou:ou**+e,new Ou(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ou(Nu(this.r),Nu(this.g),Nu(this.b),Mu(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:ku,formatHex:ku,formatHex8:Au,formatRgb:ju,toString:ju}));function ku(){return`#${Pu(this.r)}${Pu(this.g)}${Pu(this.b)}`}function Au(){return`#${Pu(this.r)}${Pu(this.g)}${Pu(this.b)}${Pu((isNaN(this.opacity)?1:this.opacity)*255)}`}function ju(){let e=Mu(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Nu(this.r)}, ${Nu(this.g)}, ${Nu(this.b)}${e===1?`)`:`, ${e})`}`}function Mu(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Nu(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Pu(e){return e=Nu(e),(e<16?`0`:``)+e.toString(16)}function Fu(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ru(e,t,n,r)}function Iu(e){if(e instanceof Ru)return new Ru(e.h,e.s,e.l,e.opacity);if(e instanceof au||(e=Cu(e)),!e)return new Ru;if(e instanceof Ru)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new Ru(o,s,c,e.opacity)}function Lu(e,t,n,r){return arguments.length===1?Iu(e):new Ru(e,t,n,r??1)}function Ru(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ru(Ru,Lu,iu(au,{brighter(e){return e=e==null?su:su**+e,new Ru(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ou:ou**+e,new Ru(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new Ou(Vu(e>=240?e-240:e+120,i,r),Vu(e,i,r),Vu(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Ru(zu(this.h),Bu(this.s),Bu(this.l),Mu(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(){let e=Mu(this.opacity);return`${e===1?`hsl(`:`hsla(`}${zu(this.h)}, ${Bu(this.s)*100}%, ${Bu(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function zu(e){return e=(e||0)%360,e<0?e+360:e}function Bu(e){return Math.max(0,Math.min(1,e||0))}function Vu(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Hu=Math.PI/180,Uu=180/Math.PI,Wu=18,Gu=.96422,Ku=1,qu=.82521,Ju=4/29,Yu=6/29,Xu=3*Yu*Yu,Zu=Yu*Yu*Yu;function Qu(e){if(e instanceof ed)return new ed(e.l,e.a,e.b,e.opacity);if(e instanceof sd)return cd(e);e instanceof Ou||(e=Eu(e));var t=id(e.r),n=id(e.g),r=id(e.b),i=td((.2225045*t+.7168786*n+.0606169*r)/Ku),a,o;return t===n&&n===r?a=o=i:(a=td((.4360747*t+.3850649*n+.1430804*r)/Gu),o=td((.0139322*t+.0971045*n+.7141733*r)/qu)),new ed(116*i-16,500*(a-i),200*(i-o),e.opacity)}function $u(e,t,n,r){return arguments.length===1?Qu(e):new ed(e,t,n,r??1)}function ed(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}ru(ed,$u,iu(au,{brighter(e){return new ed(this.l+Wu*(e??1),this.a,this.b,this.opacity)},darker(e){return new ed(this.l-Wu*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return t=Gu*nd(t),e=Ku*nd(e),n=qu*nd(n),new Ou(rd(3.1338561*t-1.6168667*e-.4906146*n),rd(-.9787684*t+1.9161415*e+.033454*n),rd(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}}));function td(e){return e>Zu?e**(1/3):e/Xu+Ju}function nd(e){return e>Yu?e*e*e:Xu*(e-Ju)}function rd(e){return 255*(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055)}function id(e){return(e/=255)<=.04045?e/12.92:((e+.055)/1.055)**2.4}function ad(e){if(e instanceof sd)return new sd(e.h,e.c,e.l,e.opacity);if(e instanceof ed||(e=Qu(e)),e.a===0&&e.b===0)return new sd(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*Uu;return new sd(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function od(e,t,n,r){return arguments.length===1?ad(e):new sd(e,t,n,r??1)}function sd(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function cd(e){if(isNaN(e.h))return new ed(e.l,0,0,e.opacity);var t=e.h*Hu;return new ed(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}ru(sd,od,iu(au,{brighter(e){return new sd(this.h,this.c,this.l+Wu*(e??1),this.opacity)},darker(e){return new sd(this.h,this.c,this.l-Wu*(e??1),this.opacity)},rgb(){return cd(this).rgb()}}));var ld=-.14861,ud=1.78277,dd=-.29227,fd=-.90649,pd=1.97294,md=pd*fd,hd=pd*ud,gd=ud*dd-fd*ld;function _d(e){if(e instanceof yd)return new yd(e.h,e.s,e.l,e.opacity);e instanceof Ou||(e=Eu(e));var t=e.r/255,n=e.g/255,r=e.b/255,i=(gd*r+md*t-hd*n)/(gd+md-hd),a=r-i,o=(pd*(n-i)-dd*a)/fd,s=Math.sqrt(o*o+a*a)/(pd*i*(1-i)),c=s?Math.atan2(o,a)*Uu-120:NaN;return new yd(c<0?c+360:c,s,i,e.opacity)}function vd(e,t,n,r){return arguments.length===1?_d(e):new yd(e,t,n,r??1)}function yd(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ru(yd,vd,iu(au,{brighter(e){return e=e==null?su:su**+e,new yd(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ou:ou**+e,new yd(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*Hu,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),i=Math.sin(e);return new Ou(255*(t+n*(ld*r+ud*i)),255*(t+n*(dd*r+fd*i)),255*(t+pd*r*n),this.opacity)}}));function bd(e,t,n,r,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*n+(1+3*e+3*a-3*o)*r+o*i)/6}function xd(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),i=e[r],a=e[r+1],o=r>0?e[r-1]:2*i-a,s=r<t-1?e[r+2]:2*a-i;return bd((n-r/t)*t,o,i,a,s)}}function Sd(e){var t=e.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*t),i=e[(r+t-1)%t],a=e[r%t],o=e[(r+1)%t],s=e[(r+2)%t];return bd((n-r/t)*t,i,a,o,s)}}var Cd=e=>()=>e;function wd(e,t){return function(n){return e+n*t}}function Td(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Ed(e,t){var n=t-e;return n?wd(e,n>180||n<-180?n-360*Math.round(n/360):n):Cd(isNaN(e)?t:e)}function Dd(e){return(e=+e)==1?Od:function(t,n){return n-t?Td(t,n,e):Cd(isNaN(t)?n:t)}}function Od(e,t){var n=t-e;return n?wd(e,n):Cd(isNaN(e)?t:e)}var kd=(function e(t){var n=Dd(t);function r(e,t){var r=n((e=Du(e)).r,(t=Du(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Od(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function Ad(e){return function(t){var n=t.length,r=Array(n),i=Array(n),a=Array(n),o,s;for(o=0;o<n;++o)s=Du(t[o]),r[o]=s.r||0,i[o]=s.g||0,a[o]=s.b||0;return r=e(r),i=e(i),a=e(a),s.opacity=1,function(e){return s.r=r(e),s.g=i(e),s.b=a(e),s+``}}}var jd=Ad(xd),Md=Ad(Sd);function Nd(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function Pd(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Fd(e,t){return(Pd(t)?Nd:Id)(e,t)}function Id(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=Gd(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function Ld(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Rd(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function zd(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=Gd(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var Bd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Vd=new RegExp(Bd.source,`g`);function Hd(e){return function(){return e}}function Ud(e){return function(t){return e(t)+``}}function Wd(e,t){var n=Bd.lastIndex=Vd.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=Bd.exec(e))&&(i=Vd.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Rd(r,i)})),n=Vd.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Ud(c[0].x):Hd(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function Gd(e,t){var n=typeof t,r;return t==null||n===`boolean`?Cd(t):(n===`number`?Rd:n===`string`?(r=Cu(t))?(t=r,kd):Wd:t instanceof Cu?kd:t instanceof Date?Ld:Pd(t)?Nd:Array.isArray(t)?Id:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?zd:Rd)(e,t)}function Kd(e){var t=e.length;return function(n){return e[Math.max(0,Math.min(t-1,Math.floor(n*t)))]}}function qd(e,t){var n=Ed(+e,+t);return function(e){var t=n(e);return t-360*Math.floor(t/360)}}function Jd(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}var Yd=180/Math.PI,Xd={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Zd(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*Yd,skewX:Math.atan(c)*Yd,scaleX:o,scaleY:s}}var Qd;function $d(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?Xd:Zd(t.a,t.b,t.c,t.d,t.e,t.f)}function ef(e){return e==null||(Qd||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Qd.setAttribute(`transform`,e),!(e=Qd.transform.baseVal.consolidate()))?Xd:(e=e.matrix,Zd(e.a,e.b,e.c,e.d,e.e,e.f))}function tf(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:Rd(e,i)},{i:c-2,x:Rd(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:Rd(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:Rd(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:Rd(e,n)},{i:s-2,x:Rd(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var nf=tf($d,`px, `,`px)`,`deg)`),rf=tf(ef,`, `,`)`,`)`),af=1e-12;function of(e){return((e=Math.exp(e))+1/e)/2}function sf(e){return((e=Math.exp(e))-1/e)/2}function cf(e){return((e=Math.exp(2*e))-1)/(e+1)}var lf=(function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<af)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=of(y),c=s/(n*g)*(i*cf(t*r+y)-sf(y));return[a+c*d,o+c*f,s*i/of(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i})(Math.SQRT2,2,4);function uf(e){return function(t,n){var r=e((t=Lu(t)).h,(n=Lu(n)).h),i=Od(t.s,n.s),a=Od(t.l,n.l),o=Od(t.opacity,n.opacity);return function(e){return t.h=r(e),t.s=i(e),t.l=a(e),t.opacity=o(e),t+``}}}var df=uf(Ed),ff=uf(Od);function pf(e,t){var n=Od((e=$u(e)).l,(t=$u(t)).l),r=Od(e.a,t.a),i=Od(e.b,t.b),a=Od(e.opacity,t.opacity);return function(t){return e.l=n(t),e.a=r(t),e.b=i(t),e.opacity=a(t),e+``}}function mf(e){return function(t,n){var r=e((t=od(t)).h,(n=od(n)).h),i=Od(t.c,n.c),a=Od(t.l,n.l),o=Od(t.opacity,n.opacity);return function(e){return t.h=r(e),t.c=i(e),t.l=a(e),t.opacity=o(e),t+``}}}var hf=mf(Ed),gf=mf(Od);function _f(e){return(function t(n){n=+n;function r(t,r){var i=e((t=vd(t)).h,(r=vd(r)).h),a=Od(t.s,r.s),o=Od(t.l,r.l),s=Od(t.opacity,r.opacity);return function(e){return t.h=i(e),t.s=a(e),t.l=o(e**+n),t.opacity=s(e),t+``}}return r.gamma=t,r})(1)}var vf=_f(Ed),yf=_f(Od);function bf(e,t){t===void 0&&(t=e,e=Gd);for(var n=0,r=t.length-1,i=t[0],a=Array(r<0?0:r);n<r;)a[n]=e(i,i=t[++n]);return function(e){var t=Math.max(0,Math.min(r-1,Math.floor(e*=r)));return a[t](e-t)}}function xf(e,t){for(var n=Array(t),r=0;r<t;++r)n[r]=e(r/(t-1));return n}var Sf=r({interpolate:()=>Gd,interpolateArray:()=>Fd,interpolateBasis:()=>xd,interpolateBasisClosed:()=>Sd,interpolateCubehelix:()=>vf,interpolateCubehelixLong:()=>yf,interpolateDate:()=>Ld,interpolateDiscrete:()=>Kd,interpolateHcl:()=>hf,interpolateHclLong:()=>gf,interpolateHsl:()=>df,interpolateHslLong:()=>ff,interpolateHue:()=>qd,interpolateLab:()=>pf,interpolateNumber:()=>Rd,interpolateNumberArray:()=>Nd,interpolateObject:()=>zd,interpolateRgb:()=>kd,interpolateRgbBasis:()=>jd,interpolateRgbBasisClosed:()=>Md,interpolateRound:()=>Jd,interpolateString:()=>Wd,interpolateTransformCss:()=>nf,interpolateTransformSvg:()=>rf,interpolateZoom:()=>lf,piecewise:()=>bf,quantize:()=>xf});function Cf(e){return function(){return e}}function wf(e){return+e}var Tf=[0,1];function Ef(e){return e}function Df(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:Cf(isNaN(t)?NaN:.5)}function Of(e,t){var n;return e>t&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function kf(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i<r?(r=Df(i,r),a=n(o,a)):(r=Df(r,i),a=n(a,o)),function(e){return a(r(e))}}function Af(e,t,n){var r=Math.min(e.length,t.length)-1,i=Array(r),a=Array(r),o=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<r;)i[o]=Df(e[o],e[o+1]),a[o]=n(t[o],t[o+1]);return function(t){var n=dn(e,t,1,r)-1;return a[n](i[n](t))}}function jf(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Mf(){var e=Tf,t=Tf,n=Gd,r,i,a,o=Ef,s,c,l;function u(){var n=Math.min(e.length,t.length);return o!==Ef&&(o=Of(e[0],e[n-1])),s=n>2?Af:kf,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||=s(e.map(r),t,n))(r(o(i)))}return d.invert=function(n){return o(i((l||=s(t,e.map(r),Rd))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,wf),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=Jd,u()},d.clamp=function(e){return arguments.length?(o=e?!0:Ef,u()):o!==Ef},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function Nf(){return Mf()(Ef,Ef)}function Pf(e,t,n,r){var i=Mn(e,t,n),a;switch(r=Yn(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=dr(i,o))&&(r.precision=a),cr(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=fr(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=ur(i))&&(r.precision=a-(r.type===`%`)*2);break}return sr(r)}function Ff(e){var t=e.domain;return e.ticks=function(e){var n=t();return An(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return Pf(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s<o&&(l=o,o=s,s=l,l=i,i=a,a=l);u-- >0;){if(l=jn(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function If(){var e=Nf();return e.copy=function(){return jf(e,If())},$l.apply(e,arguments),Ff(e)}function Lf(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,wf),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return Lf(e).unknown(t)},e=arguments.length?Array.from(e,wf):[0,1],Ff(n)}function Rf(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return a<i&&(o=n,n=r,r=o,o=i,i=a,a=o),e[n]=t.floor(i),e[r]=t.ceil(a),e}function zf(e){return Math.log(e)}function Bf(e){return Math.exp(e)}function Vf(e){return-Math.log(-e)}function Hf(e){return-Math.exp(-e)}function Uf(e){return isFinite(e)?+(`1e`+e):e<0?0:e}function Wf(e){return e===10?Uf:e===Math.E?Math.exp:t=>e**+t}function Gf(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function Kf(e){return(t,n)=>-e(-t,n)}function qf(e){let t=e(zf,Bf),n=t.domain,r=10,i,a;function o(){return i=Gf(r),a=Wf(r),n()[0]<0?(i=Kf(i),a=Kf(a),e(Vf,Hf)):e(zf,Bf),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s<o;c&&([o,s]=[s,o]);let l=i(o),u=i(s),d,f,p=e==null?10:+e,m=[];if(!(r%1)&&u-l<p){if(l=Math.floor(l),u=Math.ceil(u),o>0){for(;l<=u;++l)for(d=1;d<r;++d)if(f=l<0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}m.length*2<p&&(m=An(o,s,p))}else m=An(l,u,Math.min(u-l,p)).map(a);return c?m.reverse():m},t.tickFormat=(e,n)=>{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=Yn(n)).precision==null&&(n.trim=!0),n=sr(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*r<r-.5&&(t*=r),t<=o?n(e):``}},t.nice=()=>n(Rf(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function Jf(){let e=qf(Mf()).domain([1,10]);return e.copy=()=>jf(e,Jf()).base(e.base()),$l.apply(e,arguments),e}function Yf(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Xf(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Zf(e){var t=1,n=e(Yf(t),Xf(t));return n.constant=function(n){return arguments.length?e(Yf(t=+n),Xf(t)):t},Ff(n)}function Qf(){var e=Zf(Mf());return e.copy=function(){return jf(e,Qf()).constant(e.constant())},$l.apply(e,arguments)}function $f(e){return function(t){return t<0?-((-t)**+e):t**+e}}function ep(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function tp(e){return e<0?-e*e:e*e}function np(e){var t=e(Ef,Ef),n=1;function r(){return n===1?e(Ef,Ef):n===.5?e(ep,tp):e($f(n),$f(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},Ff(t)}function rp(){var e=np(Mf());return e.copy=function(){return jf(e,rp()).exponent(e.exponent())},$l.apply(e,arguments),e}function ip(){return rp.apply(null,arguments).exponent(.5)}function ap(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r<i;)n[r-1]=Rn(e,r/i);return a}function a(e){return e==null||isNaN(e=+e)?r:t[dn(n,e)]}return a.invertExtent=function(r){var i=t.indexOf(r);return i<0?[NaN,NaN]:[i>0?n[i-1]:e[0],i<n.length?n[i]:e[e.length-1]]},a.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)n!=null&&!isNaN(n=+n)&&e.push(n);return e.sort(rn),i()},a.range=function(e){return arguments.length?(t=Array.from(e),i()):t.slice()},a.unknown=function(e){return arguments.length?(r=e,a):r},a.quantiles=function(){return n.slice()},a.copy=function(){return ap().domain(e).range(t).unknown(r)},$l.apply(a,arguments)}function op(){var e=0,t=1,n=1,r=[.5],i=[0,1],a;function o(e){return e!=null&&e<=e?i[dn(r,e,0,n)]:a}function s(){var i=-1;for(r=Array(n);++i<n;)r[i]=((i+1)*t-(i-n)*e)/(n+1);return o}return o.domain=function(n){return arguments.length?([e,t]=n,e=+e,t=+t,s()):[e,t]},o.range=function(e){return arguments.length?(n=(i=Array.from(e)).length-1,s()):i.slice()},o.invertExtent=function(a){var o=i.indexOf(a);return o<0?[NaN,NaN]:o<1?[e,r[0]]:o>=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return op().domain([e,t]).range(i).unknown(a)},$l.apply(Ff(o),arguments)}function sp(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[dn(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return sp().domain(e).range(t).unknown(n)},$l.apply(i,arguments)}function cp(e){return new Date(e)}function lp(e){return e instanceof Date?+e:+new Date(+e)}function up(e,t,n,r,i,a,o,s,c,l){var u=Nf(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)<e?p:s(e)<e?m:o(e)<e?h:a(e)<e?g:r(e)<e?i(e)<e?_:v:n(e)<e?y:b)(e)}return u.invert=function(e){return new Date(d(e))},u.domain=function(e){return arguments.length?f(Array.from(e,lp)):f().map(cp)},u.ticks=function(t){var n=f();return e(n[0],n[n.length-1],t??10)},u.tickFormat=function(e,t){return t==null?x:l(t)},u.nice=function(e){var n=f();return(!e||typeof e.range!=`function`)&&(e=t(n[0],n[n.length-1],e??10)),e?f(Rf(n,e)):u},u.copy=function(){return jf(u,up(e,t,n,r,i,a,o,s,c,l))},u}function dp(){return $l.apply(up(ti,ni,Xr,Jr,Nr,kr,Dr,Tr,wr,Ua).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function fp(){return $l.apply(up($r,ei,Zr,Yr,Vr,Ar,Or,Er,wr,Ga).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function pp(){var e=0,t=1,n,r,i,a,o=Ef,s=!1,c;function l(e){return e==null||isNaN(e=+e)?c:o(i===0?.5:(e=(a(e)-n)*i,s?Math.max(0,Math.min(1,e)):e))}l.domain=function(o){return arguments.length?([e,t]=o,n=a(e=+e),r=a(t=+t),i=n===r?0:1/(r-n),l):[e,t]},l.clamp=function(e){return arguments.length?(s=!!e,l):s},l.interpolator=function(e){return arguments.length?(o=e,l):o};function u(e){return function(t){var n,r;return arguments.length?([n,r]=t,o=e(n,r),l):[o(0),o(1)]}}return l.range=u(Gd),l.rangeRound=u(Jd),l.unknown=function(e){return arguments.length?(c=e,l):c},function(o){return a=o,n=o(e),r=o(t),i=n===r?0:1/(r-n),l}}function mp(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function hp(){var e=Ff(pp()(Ef));return e.copy=function(){return mp(e,hp())},eu.apply(e,arguments)}function gp(){var e=qf(pp()).domain([1,10]);return e.copy=function(){return mp(e,gp()).base(e.base())},eu.apply(e,arguments)}function _p(){var e=Zf(pp());return e.copy=function(){return mp(e,_p()).constant(e.constant())},eu.apply(e,arguments)}function vp(){var e=np(pp());return e.copy=function(){return mp(e,vp()).exponent(e.exponent())},eu.apply(e,arguments)}function yp(){return vp.apply(null,arguments).exponent(.5)}function bp(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=Ef,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*e<r*a?s:c),l(d?Math.max(0,Math.min(1,e)):e))}p.domain=function(l){return arguments.length?([e,t,n]=l,i=u(e=+e),a=u(t=+t),o=u(n=+n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p):[e,t,n]},p.clamp=function(e){return arguments.length?(d=!!e,p):d},p.interpolator=function(e){return arguments.length?(l=e,p):l};function m(e){return function(t){var n,r,i;return arguments.length?([n,r,i]=t,l=bf(e,[n,r,i]),p):[l(0),l(.5),l(1)]}}return p.range=m(Gd),p.rangeRound=m(Jd),p.unknown=function(e){return arguments.length?(f=e,p):f},function(l){return u=l,i=l(e),a=l(t),o=l(n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p}}function xp(){var e=Ff(bp()(Ef));return e.copy=function(){return mp(e,xp())},eu.apply(e,arguments)}function Sp(){var e=qf(bp()).domain([.1,1,10]);return e.copy=function(){return mp(e,Sp()).base(e.base())},eu.apply(e,arguments)}function Cp(){var e=Zf(bp());return e.copy=function(){return mp(e,Cp()).constant(e.constant())},eu.apply(e,arguments)}function wp(){var e=np(bp());return e.copy=function(){return mp(e,wp()).exponent(e.exponent())},eu.apply(e,arguments)}function Tp(){return wp.apply(null,arguments).exponent(.5)}function Ep(e){for(var t=e.length/6|0,n=Array(t),r=0;r<t;)n[r]=`#`+e.slice(r*6,++r*6);return n}var Dp=Ep(`1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf`),Op=Ep(`7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666`),kp=Ep(`1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666`),Ap=Ep(`4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0`),jp=Ep(`a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928`),Mp=Ep(`fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2`),Np=Ep(`b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc`),Pp=Ep(`e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999`),Fp=Ep(`66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3`),Ip=Ep(`8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f`);function Lp(e,t,n){let r=e-t+n*2;return e?r>0?r:1:0}var Rp=`identity`,zp=`linear`,Bp=`sqrt`,Vp=`symlog`,Hp=`time`,Up=`sequential`,Wp=`diverging`,Gp=`quantile`,Kp=`quantize`,qp=`threshold`,Jp=`ordinal`,Yp=`point`,Xp=`band`,Zp=`bin-ordinal`,Qp=`continuous`,$p=`discrete`,em=`discretizing`,tm=`interpolating`,nm=`temporal`;function rm(e){return function(t){let n=t[0],r=t[1],i;return r<n&&(i=n,n=r,r=i),[e.invert(n),e.invert(r)]}}function im(e){return function(t){let n=e.range(),r=t[0],i=t[1],a=-1,o,s,c,l;for(i<r&&(s=r,r=i,i=s),c=0,l=n.length;c<l;++c)n[c]>=r&&n[c]<=i&&(a<0&&(a=c),o=c);if(!(a<0))return r=e.invertExtent(n[a]),i=e.invertExtent(n[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function am(){let e=nu().unknown(void 0),t=e.domain,n=e.range,r=[0,1],i,a,o=!1,s=0,c=0,l=.5;delete e.unknown;function u(){let e=t().length,u=r[1]<r[0],d=r[1-u],f=Lp(e,s,c),p=r[u-0];i=(d-p)/(f||1),o&&(i=Math.floor(i)),p+=(d-p-i*(e-s))*l,a=i*(1-s),o&&(p=Math.round(p),a=Math.round(a));let m=Vn(e).map(e=>p+i*e);return n(u?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),u()):t()},e.range=function(e){return arguments.length?(r=[+e[0],+e[1]],u()):r.slice()},e.rangeRound=function(e){return r=[+e[0],+e[1]],o=!0,u()},e.bandwidth=function(){return a},e.step=function(){return i},e.round=function(e){return arguments.length?(o=!!e,u()):o},e.padding=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),s=c,u()):s},e.paddingInner=function(e){return arguments.length?(s=Math.max(0,Math.min(1,e)),u()):s},e.paddingOuter=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),u()):c},e.align=function(e){return arguments.length?(l=Math.max(0,Math.min(1,e)),u()):l},e.invertRange=function(e){if(e[0]==null||e[1]==null)return;let i=r[1]<r[0],o=i?n().reverse():n(),s=o.length-1,c=+e[0],l=+e[1],u,d,f;if(!(c!==c||l!==l)&&(l<c&&(f=c,c=l,l=f),!(l<o[0]||c>r[1-i])))return u=Math.max(0,dn(o,c)-1),d=c===l?u:dn(o,l)-1,c-o[u]>a+1e-10&&++u,i&&(f=u,u=s-d,d=s-f),u>d?void 0:t().slice(u,d+1)},e.invert=function(t){let n=e.invertRange([t,t]);return n&&n[0]},e.copy=function(){return am().domain(t()).range(r).round(o).paddingInner(s).paddingOuter(c).align(l)},u()}function om(e){let t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return om(t())},e}function sm(){return om(am().paddingInner(1))}var cm=Array.prototype.map;function lm(e){return cm.call(e,et)}var um=Array.prototype.slice;function dm(){let e=[],t=[];function n(n){return n==null||n!==n?void 0:t[(dn(e,n)-1)%t.length]}return n.domain=function(t){return arguments.length?(e=lm(t),n):e.slice()},n.range=function(e){return arguments.length?(t=um.call(e),n):t.slice()},n.tickFormat=function(t,n){return Pf(e[0],$e(e),t??10,n)},n.copy=function(){return dm().domain(n.domain()).range(n.range())},n}var fm=new Map,pm=Symbol(`vega_scale`);function mm(e){return e[pm]=!0,e}function hm(e,t,n){let r=function(){let n=t();return n.invertRange||=n.invert?rm(n):n.invertExtent?im(n):void 0,n.type=e,mm(n)};return r.metadata=Mt(M(n)),r}function L(e,t,n){return arguments.length>1?(fm.set(e,hm(e,t,n)),this):gm(e)?fm.get(e):void 0}L(Rp,Lf),L(zp,If,Qp),L(`log`,Jf,[Qp,`log`]),L(`pow`,rp,Qp),L(Bp,ip,Qp),L(Vp,Qf,Qp),L(Hp,dp,[Qp,nm]),L(`utc`,fp,[Qp,nm]),L(Up,hp,[Qp,tm]),L(`${Up}-${zp}`,hp,[Qp,tm]),L(`${Up}-log`,gp,[Qp,tm,`log`]),L(`${Up}-pow`,vp,[Qp,tm]),L(`${Up}-${Bp}`,yp,[Qp,tm]),L(`${Up}-${Vp}`,_p,[Qp,tm]),L(`${Wp}-${zp}`,xp,[Qp,tm]),L(`${Wp}-log`,Sp,[Qp,tm,`log`]),L(`${Wp}-pow`,wp,[Qp,tm]),L(`${Wp}-${Bp}`,Tp,[Qp,tm]),L(`${Wp}-${Vp}`,Cp,[Qp,tm]),L(Gp,ap,[em,Gp]),L(Kp,op,em),L(qp,sp,em),L(Zp,dm,[$p,em]),L(Jp,nu,$p),L(Xp,am,$p),L(Yp,sm,$p);function gm(e){return fm.has(e)}function _m(e,t){let n=fm.get(e);return n&&n.metadata[t]}function vm(e){return _m(e,Qp)}function ym(e){return _m(e,$p)}function bm(e){return _m(e,em)}function xm(e){return _m(e,`log`)}function Sm(e){return _m(e,tm)}function Cm(e,t){let n=t[0],r=$e(t)-n;return function(t){return e(n+t*r)}}function wm(e,t,n){return bf(Em(t||`rgb`,n),e)}function Tm(e,t){let n=Array(t),r=t+1;for(let i=0;i<t;)n[i]=e(++i/r);return n}function Em(e,t){let n=Sf[Dm(e)];return t!=null&&n&&n.gamma?n.gamma(t):n}function Dm(e){return`interpolate`+e.toLowerCase().split(`-`).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}var Om={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`},km={accent:Op,category10:Dp,category20:`1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5`,category20b:`393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6`,category20c:`3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9`,dark2:kp,observable10:Ap,paired:jp,pastel1:Mp,pastel2:Np,set1:Pp,set2:Fp,set3:Ip,tableau10:`4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac`,tableau20:`4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5`};function Am(e){if(Ze(e))return e;let t=e.length/6|0,n=Array(t);for(let r=0;r<t;)n[r]=`#`+e.slice(r*6,++r*6);return n}function jm(e,t){for(let n in e)Nm(n,t(e[n]))}var Mm={};jm(km,Am),jm(Om,e=>wm(Am(e)));function Nm(e,t){return e&&=e.toLowerCase(),arguments.length>1?(Mm[e]=t,this):Mm[e]}function Pm(e,t,n){return N(t)&&n!=null&&(t=Math.min(t,~~(Et(e.domain())/n)||1)),Qe(t)&&(t.step,t=t.interval),t}function Fm(e,t,n){var r=e.range(),i=Math.floor(r[0]),a=Math.ceil($e(r));if(i>a&&(r=a,a=i,i=r),t=t.filter(function(t){return t=e(t),i<=t&&t<=a}),n>0&&t.length>1){for(var o=[t[0],$e(t)];t.length>n&&t.length>=3;)t=t.filter(function(e,t){return!(t%2)});t.length<3&&(t=o)}return t}function Im(e,t){return e.bins?Fm(e,Lm(e.bins,t)):e.ticks?e.ticks(t):e.domain()}function Lm(e,t){var n=e.length,r=~~(n/(t||n));return r<2?e.slice():e.filter(function(e,t){return!(t%r)})}function Rm(e,t,n){var r=e.tickFormat?e.tickFormat(t,n):n?sr(n):String;if(xm(e.type)){var i=Bm(n);r=e.bins?i:zm(r,i)}return r}function zm(e,t){return function(n){return e(n)?t(n):``}}function Bm(e){var t=Yn(e||`,`);if(t.precision==null){switch(t.precision=12,t.type){case`%`:t.precision-=2;break;case`e`:--t.precision;break}return Vm(sr(t),sr(`.1f`)(1)[1])}else return sr(t)}function Vm(e,t){return function(n){var r=e(n),i=r.indexOf(t),a,o;if(i<0)return r;for(a=Hm(r,i),o=a<r.length?r.slice(a):``;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Hm(e,t){var n=e.lastIndexOf(`e`),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}var Um=[],Wm=[];function Gm(e,t){Wm.push({guard:e,Source:t})}function Km(e,t){for(let n of Um)if(n.guard(e))return new n.Source(e,t);for(let n of Wm)if(n.guard(e))return new n.Source(e,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}var qm=class{stats={count:0,first:null};#e=!1;#t=!1;#n=[];paramRuntimeProvider=null;get behavior(){return 0}get domainSensitiveScaleChannels(){return[]}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(let e of this.children)e.reset();this.stats.count=0,this.stats.first=null}initialize(){}initializeOnce(){this.#e||=(this.initialize(),!0)}#r(){this._propagate=Function(`children`,`stats`,Vn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
|
|
176
|
+
`))if(t.startsWith(`>`))r={identifier:t.match(/>(\S+)/)[1],sequence:``},n.push(r);else if(r)r.sequence+=t.trim();else throw Error(`Invalid fasta file!`);return n}wo(`fasta`,Jl);function Yl(e,t){return e.length==t.length&&e.every((n,r)=>e[r]===t[r])}function Xl(e){return Array.isArray(e)?e:e===void 0?[]:[e]}function Zl(e){return e[e.length-1]}function Ql(e,t,n){return n=(n-e)/(t-e),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}function $l(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function eu(e,t){switch(arguments.length){case 0:break;case 1:typeof e==`function`?this.interpolator(e):this.range(e);break;default:this.domain(e),typeof t==`function`?this.interpolator(t):this.range(t);break}return this}var tu=Symbol(`implicit`);function nu(){var e=new hn,t=[],n=[],r=tu;function i(i){let a=e.get(i);if(a===void 0){if(r!==tu)return r;e.set(i,a=t.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return t.slice();t=[],e=new hn;for(let r of n)e.has(r)||e.set(r,t.push(r)-1);return i},i.range=function(e){return arguments.length?(n=Array.from(e),i):n.slice()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return nu(t,n).unknown(r)},$l.apply(i,arguments),i}function ru(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function iu(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function au(){}var ou=.7,su=1/ou,cu=`\\s*([+-]?\\d+)\\s*`,lu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,uu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,du=/^#([0-9a-f]{3,8})$/,fu=RegExp(`^rgb\\(${cu},${cu},${cu}\\)$`),pu=RegExp(`^rgb\\(${uu},${uu},${uu}\\)$`),mu=RegExp(`^rgba\\(${cu},${cu},${cu},${lu}\\)$`),hu=RegExp(`^rgba\\(${uu},${uu},${uu},${lu}\\)$`),gu=RegExp(`^hsl\\(${lu},${uu},${uu}\\)$`),_u=RegExp(`^hsla\\(${lu},${uu},${uu},${lu}\\)$`),vu={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};ru(au,Cu,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:yu,formatHex:yu,formatHex8:bu,formatHsl:xu,formatRgb:Su,toString:Su});function yu(){return this.rgb().formatHex()}function bu(){return this.rgb().formatHex8()}function xu(){return Iu(this).formatHsl()}function Su(){return this.rgb().formatRgb()}function Cu(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=du.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?wu(t):n===3?new Ou(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Tu(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Tu(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=fu.exec(e))?new Ou(t[1],t[2],t[3],1):(t=pu.exec(e))?new Ou(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=mu.exec(e))?Tu(t[1],t[2],t[3],t[4]):(t=hu.exec(e))?Tu(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=gu.exec(e))?Fu(t[1],t[2]/100,t[3]/100,1):(t=_u.exec(e))?Fu(t[1],t[2]/100,t[3]/100,t[4]):vu.hasOwnProperty(e)?wu(vu[e]):e===`transparent`?new Ou(NaN,NaN,NaN,0):null}function wu(e){return new Ou(e>>16&255,e>>8&255,e&255,1)}function Tu(e,t,n,r){return r<=0&&(e=t=n=NaN),new Ou(e,t,n,r)}function Eu(e){return e instanceof au||(e=Cu(e)),e?(e=e.rgb(),new Ou(e.r,e.g,e.b,e.opacity)):new Ou}function Du(e,t,n,r){return arguments.length===1?Eu(e):new Ou(e,t,n,r??1)}function Ou(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}ru(Ou,Du,iu(au,{brighter(e){return e=e==null?su:su**+e,new Ou(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ou:ou**+e,new Ou(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ou(Nu(this.r),Nu(this.g),Nu(this.b),Mu(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:ku,formatHex:ku,formatHex8:Au,formatRgb:ju,toString:ju}));function ku(){return`#${Pu(this.r)}${Pu(this.g)}${Pu(this.b)}`}function Au(){return`#${Pu(this.r)}${Pu(this.g)}${Pu(this.b)}${Pu((isNaN(this.opacity)?1:this.opacity)*255)}`}function ju(){let e=Mu(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Nu(this.r)}, ${Nu(this.g)}, ${Nu(this.b)}${e===1?`)`:`, ${e})`}`}function Mu(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Nu(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Pu(e){return e=Nu(e),(e<16?`0`:``)+e.toString(16)}function Fu(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ru(e,t,n,r)}function Iu(e){if(e instanceof Ru)return new Ru(e.h,e.s,e.l,e.opacity);if(e instanceof au||(e=Cu(e)),!e)return new Ru;if(e instanceof Ru)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new Ru(o,s,c,e.opacity)}function Lu(e,t,n,r){return arguments.length===1?Iu(e):new Ru(e,t,n,r??1)}function Ru(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ru(Ru,Lu,iu(au,{brighter(e){return e=e==null?su:su**+e,new Ru(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ou:ou**+e,new Ru(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new Ou(Vu(e>=240?e-240:e+120,i,r),Vu(e,i,r),Vu(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Ru(zu(this.h),Bu(this.s),Bu(this.l),Mu(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(){let e=Mu(this.opacity);return`${e===1?`hsl(`:`hsla(`}${zu(this.h)}, ${Bu(this.s)*100}%, ${Bu(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function zu(e){return e=(e||0)%360,e<0?e+360:e}function Bu(e){return Math.max(0,Math.min(1,e||0))}function Vu(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Hu=Math.PI/180,Uu=180/Math.PI,Wu=18,Gu=.96422,Ku=1,qu=.82521,Ju=4/29,Yu=6/29,Xu=3*Yu*Yu,Zu=Yu*Yu*Yu;function Qu(e){if(e instanceof ed)return new ed(e.l,e.a,e.b,e.opacity);if(e instanceof sd)return cd(e);e instanceof Ou||(e=Eu(e));var t=id(e.r),n=id(e.g),r=id(e.b),i=td((.2225045*t+.7168786*n+.0606169*r)/Ku),a,o;return t===n&&n===r?a=o=i:(a=td((.4360747*t+.3850649*n+.1430804*r)/Gu),o=td((.0139322*t+.0971045*n+.7141733*r)/qu)),new ed(116*i-16,500*(a-i),200*(i-o),e.opacity)}function $u(e,t,n,r){return arguments.length===1?Qu(e):new ed(e,t,n,r??1)}function ed(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}ru(ed,$u,iu(au,{brighter(e){return new ed(this.l+Wu*(e??1),this.a,this.b,this.opacity)},darker(e){return new ed(this.l-Wu*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return t=Gu*nd(t),e=Ku*nd(e),n=qu*nd(n),new Ou(rd(3.1338561*t-1.6168667*e-.4906146*n),rd(-.9787684*t+1.9161415*e+.033454*n),rd(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}}));function td(e){return e>Zu?e**(1/3):e/Xu+Ju}function nd(e){return e>Yu?e*e*e:Xu*(e-Ju)}function rd(e){return 255*(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055)}function id(e){return(e/=255)<=.04045?e/12.92:((e+.055)/1.055)**2.4}function ad(e){if(e instanceof sd)return new sd(e.h,e.c,e.l,e.opacity);if(e instanceof ed||(e=Qu(e)),e.a===0&&e.b===0)return new sd(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*Uu;return new sd(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function od(e,t,n,r){return arguments.length===1?ad(e):new sd(e,t,n,r??1)}function sd(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function cd(e){if(isNaN(e.h))return new ed(e.l,0,0,e.opacity);var t=e.h*Hu;return new ed(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}ru(sd,od,iu(au,{brighter(e){return new sd(this.h,this.c,this.l+Wu*(e??1),this.opacity)},darker(e){return new sd(this.h,this.c,this.l-Wu*(e??1),this.opacity)},rgb(){return cd(this).rgb()}}));var ld=-.14861,ud=1.78277,dd=-.29227,fd=-.90649,pd=1.97294,md=pd*fd,hd=pd*ud,gd=ud*dd-fd*ld;function _d(e){if(e instanceof yd)return new yd(e.h,e.s,e.l,e.opacity);e instanceof Ou||(e=Eu(e));var t=e.r/255,n=e.g/255,r=e.b/255,i=(gd*r+md*t-hd*n)/(gd+md-hd),a=r-i,o=(pd*(n-i)-dd*a)/fd,s=Math.sqrt(o*o+a*a)/(pd*i*(1-i)),c=s?Math.atan2(o,a)*Uu-120:NaN;return new yd(c<0?c+360:c,s,i,e.opacity)}function vd(e,t,n,r){return arguments.length===1?_d(e):new yd(e,t,n,r??1)}function yd(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ru(yd,vd,iu(au,{brighter(e){return e=e==null?su:su**+e,new yd(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ou:ou**+e,new yd(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*Hu,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),i=Math.sin(e);return new Ou(255*(t+n*(ld*r+ud*i)),255*(t+n*(dd*r+fd*i)),255*(t+pd*r*n),this.opacity)}}));function bd(e,t,n,r,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*n+(1+3*e+3*a-3*o)*r+o*i)/6}function xd(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),i=e[r],a=e[r+1],o=r>0?e[r-1]:2*i-a,s=r<t-1?e[r+2]:2*a-i;return bd((n-r/t)*t,o,i,a,s)}}function Sd(e){var t=e.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*t),i=e[(r+t-1)%t],a=e[r%t],o=e[(r+1)%t],s=e[(r+2)%t];return bd((n-r/t)*t,i,a,o,s)}}var Cd=e=>()=>e;function wd(e,t){return function(n){return e+n*t}}function Td(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Ed(e,t){var n=t-e;return n?wd(e,n>180||n<-180?n-360*Math.round(n/360):n):Cd(isNaN(e)?t:e)}function Dd(e){return(e=+e)==1?Od:function(t,n){return n-t?Td(t,n,e):Cd(isNaN(t)?n:t)}}function Od(e,t){var n=t-e;return n?wd(e,n):Cd(isNaN(e)?t:e)}var kd=(function e(t){var n=Dd(t);function r(e,t){var r=n((e=Du(e)).r,(t=Du(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Od(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function Ad(e){return function(t){var n=t.length,r=Array(n),i=Array(n),a=Array(n),o,s;for(o=0;o<n;++o)s=Du(t[o]),r[o]=s.r||0,i[o]=s.g||0,a[o]=s.b||0;return r=e(r),i=e(i),a=e(a),s.opacity=1,function(e){return s.r=r(e),s.g=i(e),s.b=a(e),s+``}}}var jd=Ad(xd),Md=Ad(Sd);function Nd(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function Pd(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Fd(e,t){return(Pd(t)?Nd:Id)(e,t)}function Id(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=Gd(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function Ld(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Rd(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function zd(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=Gd(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var Bd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Vd=new RegExp(Bd.source,`g`);function Hd(e){return function(){return e}}function Ud(e){return function(t){return e(t)+``}}function Wd(e,t){var n=Bd.lastIndex=Vd.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=Bd.exec(e))&&(i=Vd.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Rd(r,i)})),n=Vd.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Ud(c[0].x):Hd(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function Gd(e,t){var n=typeof t,r;return t==null||n===`boolean`?Cd(t):(n===`number`?Rd:n===`string`?(r=Cu(t))?(t=r,kd):Wd:t instanceof Cu?kd:t instanceof Date?Ld:Pd(t)?Nd:Array.isArray(t)?Id:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?zd:Rd)(e,t)}function Kd(e){var t=e.length;return function(n){return e[Math.max(0,Math.min(t-1,Math.floor(n*t)))]}}function qd(e,t){var n=Ed(+e,+t);return function(e){var t=n(e);return t-360*Math.floor(t/360)}}function Jd(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}var Yd=180/Math.PI,Xd={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Zd(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*Yd,skewX:Math.atan(c)*Yd,scaleX:o,scaleY:s}}var Qd;function $d(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?Xd:Zd(t.a,t.b,t.c,t.d,t.e,t.f)}function ef(e){return e==null||(Qd||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Qd.setAttribute(`transform`,e),!(e=Qd.transform.baseVal.consolidate()))?Xd:(e=e.matrix,Zd(e.a,e.b,e.c,e.d,e.e,e.f))}function tf(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:Rd(e,i)},{i:c-2,x:Rd(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:Rd(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:Rd(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:Rd(e,n)},{i:s-2,x:Rd(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var nf=tf($d,`px, `,`px)`,`deg)`),rf=tf(ef,`, `,`)`,`)`),af=1e-12;function of(e){return((e=Math.exp(e))+1/e)/2}function sf(e){return((e=Math.exp(e))-1/e)/2}function cf(e){return((e=Math.exp(2*e))-1)/(e+1)}var lf=(function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<af)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=of(y),c=s/(n*g)*(i*cf(t*r+y)-sf(y));return[a+c*d,o+c*f,s*i/of(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i})(Math.SQRT2,2,4);function uf(e){return function(t,n){var r=e((t=Lu(t)).h,(n=Lu(n)).h),i=Od(t.s,n.s),a=Od(t.l,n.l),o=Od(t.opacity,n.opacity);return function(e){return t.h=r(e),t.s=i(e),t.l=a(e),t.opacity=o(e),t+``}}}var df=uf(Ed),ff=uf(Od);function pf(e,t){var n=Od((e=$u(e)).l,(t=$u(t)).l),r=Od(e.a,t.a),i=Od(e.b,t.b),a=Od(e.opacity,t.opacity);return function(t){return e.l=n(t),e.a=r(t),e.b=i(t),e.opacity=a(t),e+``}}function mf(e){return function(t,n){var r=e((t=od(t)).h,(n=od(n)).h),i=Od(t.c,n.c),a=Od(t.l,n.l),o=Od(t.opacity,n.opacity);return function(e){return t.h=r(e),t.c=i(e),t.l=a(e),t.opacity=o(e),t+``}}}var hf=mf(Ed),gf=mf(Od);function _f(e){return(function t(n){n=+n;function r(t,r){var i=e((t=vd(t)).h,(r=vd(r)).h),a=Od(t.s,r.s),o=Od(t.l,r.l),s=Od(t.opacity,r.opacity);return function(e){return t.h=i(e),t.s=a(e),t.l=o(e**+n),t.opacity=s(e),t+``}}return r.gamma=t,r})(1)}var vf=_f(Ed),yf=_f(Od);function bf(e,t){t===void 0&&(t=e,e=Gd);for(var n=0,r=t.length-1,i=t[0],a=Array(r<0?0:r);n<r;)a[n]=e(i,i=t[++n]);return function(e){var t=Math.max(0,Math.min(r-1,Math.floor(e*=r)));return a[t](e-t)}}function xf(e,t){for(var n=Array(t),r=0;r<t;++r)n[r]=e(r/(t-1));return n}var Sf=r({interpolate:()=>Gd,interpolateArray:()=>Fd,interpolateBasis:()=>xd,interpolateBasisClosed:()=>Sd,interpolateCubehelix:()=>vf,interpolateCubehelixLong:()=>yf,interpolateDate:()=>Ld,interpolateDiscrete:()=>Kd,interpolateHcl:()=>hf,interpolateHclLong:()=>gf,interpolateHsl:()=>df,interpolateHslLong:()=>ff,interpolateHue:()=>qd,interpolateLab:()=>pf,interpolateNumber:()=>Rd,interpolateNumberArray:()=>Nd,interpolateObject:()=>zd,interpolateRgb:()=>kd,interpolateRgbBasis:()=>jd,interpolateRgbBasisClosed:()=>Md,interpolateRound:()=>Jd,interpolateString:()=>Wd,interpolateTransformCss:()=>nf,interpolateTransformSvg:()=>rf,interpolateZoom:()=>lf,piecewise:()=>bf,quantize:()=>xf});function Cf(e){return function(){return e}}function wf(e){return+e}var Tf=[0,1];function Ef(e){return e}function Df(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:Cf(isNaN(t)?NaN:.5)}function Of(e,t){var n;return e>t&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function kf(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i<r?(r=Df(i,r),a=n(o,a)):(r=Df(r,i),a=n(a,o)),function(e){return a(r(e))}}function Af(e,t,n){var r=Math.min(e.length,t.length)-1,i=Array(r),a=Array(r),o=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<r;)i[o]=Df(e[o],e[o+1]),a[o]=n(t[o],t[o+1]);return function(t){var n=dn(e,t,1,r)-1;return a[n](i[n](t))}}function jf(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Mf(){var e=Tf,t=Tf,n=Gd,r,i,a,o=Ef,s,c,l;function u(){var n=Math.min(e.length,t.length);return o!==Ef&&(o=Of(e[0],e[n-1])),s=n>2?Af:kf,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||=s(e.map(r),t,n))(r(o(i)))}return d.invert=function(n){return o(i((l||=s(t,e.map(r),Rd))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,wf),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=Jd,u()},d.clamp=function(e){return arguments.length?(o=e?!0:Ef,u()):o!==Ef},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function Nf(){return Mf()(Ef,Ef)}function Pf(e,t,n,r){var i=Mn(e,t,n),a;switch(r=Yn(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=dr(i,o))&&(r.precision=a),cr(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=fr(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=ur(i))&&(r.precision=a-(r.type===`%`)*2);break}return sr(r)}function Ff(e){var t=e.domain;return e.ticks=function(e){var n=t();return An(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return Pf(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s<o&&(l=o,o=s,s=l,l=i,i=a,a=l);u-- >0;){if(l=jn(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function If(){var e=Nf();return e.copy=function(){return jf(e,If())},$l.apply(e,arguments),Ff(e)}function Lf(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,wf),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return Lf(e).unknown(t)},e=arguments.length?Array.from(e,wf):[0,1],Ff(n)}function Rf(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return a<i&&(o=n,n=r,r=o,o=i,i=a,a=o),e[n]=t.floor(i),e[r]=t.ceil(a),e}function zf(e){return Math.log(e)}function Bf(e){return Math.exp(e)}function Vf(e){return-Math.log(-e)}function Hf(e){return-Math.exp(-e)}function Uf(e){return isFinite(e)?+(`1e`+e):e<0?0:e}function Wf(e){return e===10?Uf:e===Math.E?Math.exp:t=>e**+t}function Gf(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function Kf(e){return(t,n)=>-e(-t,n)}function qf(e){let t=e(zf,Bf),n=t.domain,r=10,i,a;function o(){return i=Gf(r),a=Wf(r),n()[0]<0?(i=Kf(i),a=Kf(a),e(Vf,Hf)):e(zf,Bf),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s<o;c&&([o,s]=[s,o]);let l=i(o),u=i(s),d,f,p=e==null?10:+e,m=[];if(!(r%1)&&u-l<p){if(l=Math.floor(l),u=Math.ceil(u),o>0){for(;l<=u;++l)for(d=1;d<r;++d)if(f=l<0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}m.length*2<p&&(m=An(o,s,p))}else m=An(l,u,Math.min(u-l,p)).map(a);return c?m.reverse():m},t.tickFormat=(e,n)=>{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=Yn(n)).precision==null&&(n.trim=!0),n=sr(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*r<r-.5&&(t*=r),t<=o?n(e):``}},t.nice=()=>n(Rf(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function Jf(){let e=qf(Mf()).domain([1,10]);return e.copy=()=>jf(e,Jf()).base(e.base()),$l.apply(e,arguments),e}function Yf(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Xf(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Zf(e){var t=1,n=e(Yf(t),Xf(t));return n.constant=function(n){return arguments.length?e(Yf(t=+n),Xf(t)):t},Ff(n)}function Qf(){var e=Zf(Mf());return e.copy=function(){return jf(e,Qf()).constant(e.constant())},$l.apply(e,arguments)}function $f(e){return function(t){return t<0?-((-t)**+e):t**+e}}function ep(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function tp(e){return e<0?-e*e:e*e}function np(e){var t=e(Ef,Ef),n=1;function r(){return n===1?e(Ef,Ef):n===.5?e(ep,tp):e($f(n),$f(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},Ff(t)}function rp(){var e=np(Mf());return e.copy=function(){return jf(e,rp()).exponent(e.exponent())},$l.apply(e,arguments),e}function ip(){return rp.apply(null,arguments).exponent(.5)}function ap(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r<i;)n[r-1]=Rn(e,r/i);return a}function a(e){return e==null||isNaN(e=+e)?r:t[dn(n,e)]}return a.invertExtent=function(r){var i=t.indexOf(r);return i<0?[NaN,NaN]:[i>0?n[i-1]:e[0],i<n.length?n[i]:e[e.length-1]]},a.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)n!=null&&!isNaN(n=+n)&&e.push(n);return e.sort(rn),i()},a.range=function(e){return arguments.length?(t=Array.from(e),i()):t.slice()},a.unknown=function(e){return arguments.length?(r=e,a):r},a.quantiles=function(){return n.slice()},a.copy=function(){return ap().domain(e).range(t).unknown(r)},$l.apply(a,arguments)}function op(){var e=0,t=1,n=1,r=[.5],i=[0,1],a;function o(e){return e!=null&&e<=e?i[dn(r,e,0,n)]:a}function s(){var i=-1;for(r=Array(n);++i<n;)r[i]=((i+1)*t-(i-n)*e)/(n+1);return o}return o.domain=function(n){return arguments.length?([e,t]=n,e=+e,t=+t,s()):[e,t]},o.range=function(e){return arguments.length?(n=(i=Array.from(e)).length-1,s()):i.slice()},o.invertExtent=function(a){var o=i.indexOf(a);return o<0?[NaN,NaN]:o<1?[e,r[0]]:o>=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return op().domain([e,t]).range(i).unknown(a)},$l.apply(Ff(o),arguments)}function sp(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[dn(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return sp().domain(e).range(t).unknown(n)},$l.apply(i,arguments)}function cp(e){return new Date(e)}function lp(e){return e instanceof Date?+e:+new Date(+e)}function up(e,t,n,r,i,a,o,s,c,l){var u=Nf(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)<e?p:s(e)<e?m:o(e)<e?h:a(e)<e?g:r(e)<e?i(e)<e?_:v:n(e)<e?y:b)(e)}return u.invert=function(e){return new Date(d(e))},u.domain=function(e){return arguments.length?f(Array.from(e,lp)):f().map(cp)},u.ticks=function(t){var n=f();return e(n[0],n[n.length-1],t??10)},u.tickFormat=function(e,t){return t==null?x:l(t)},u.nice=function(e){var n=f();return(!e||typeof e.range!=`function`)&&(e=t(n[0],n[n.length-1],e??10)),e?f(Rf(n,e)):u},u.copy=function(){return jf(u,up(e,t,n,r,i,a,o,s,c,l))},u}function dp(){return $l.apply(up(ti,ni,Xr,Jr,Nr,kr,Dr,Tr,wr,Ua).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function fp(){return $l.apply(up($r,ei,Zr,Yr,Vr,Ar,Or,Er,wr,Ga).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function pp(){var e=0,t=1,n,r,i,a,o=Ef,s=!1,c;function l(e){return e==null||isNaN(e=+e)?c:o(i===0?.5:(e=(a(e)-n)*i,s?Math.max(0,Math.min(1,e)):e))}l.domain=function(o){return arguments.length?([e,t]=o,n=a(e=+e),r=a(t=+t),i=n===r?0:1/(r-n),l):[e,t]},l.clamp=function(e){return arguments.length?(s=!!e,l):s},l.interpolator=function(e){return arguments.length?(o=e,l):o};function u(e){return function(t){var n,r;return arguments.length?([n,r]=t,o=e(n,r),l):[o(0),o(1)]}}return l.range=u(Gd),l.rangeRound=u(Jd),l.unknown=function(e){return arguments.length?(c=e,l):c},function(o){return a=o,n=o(e),r=o(t),i=n===r?0:1/(r-n),l}}function mp(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function hp(){var e=Ff(pp()(Ef));return e.copy=function(){return mp(e,hp())},eu.apply(e,arguments)}function gp(){var e=qf(pp()).domain([1,10]);return e.copy=function(){return mp(e,gp()).base(e.base())},eu.apply(e,arguments)}function _p(){var e=Zf(pp());return e.copy=function(){return mp(e,_p()).constant(e.constant())},eu.apply(e,arguments)}function vp(){var e=np(pp());return e.copy=function(){return mp(e,vp()).exponent(e.exponent())},eu.apply(e,arguments)}function yp(){return vp.apply(null,arguments).exponent(.5)}function bp(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=Ef,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*e<r*a?s:c),l(d?Math.max(0,Math.min(1,e)):e))}p.domain=function(l){return arguments.length?([e,t,n]=l,i=u(e=+e),a=u(t=+t),o=u(n=+n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p):[e,t,n]},p.clamp=function(e){return arguments.length?(d=!!e,p):d},p.interpolator=function(e){return arguments.length?(l=e,p):l};function m(e){return function(t){var n,r,i;return arguments.length?([n,r,i]=t,l=bf(e,[n,r,i]),p):[l(0),l(.5),l(1)]}}return p.range=m(Gd),p.rangeRound=m(Jd),p.unknown=function(e){return arguments.length?(f=e,p):f},function(l){return u=l,i=l(e),a=l(t),o=l(n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p}}function xp(){var e=Ff(bp()(Ef));return e.copy=function(){return mp(e,xp())},eu.apply(e,arguments)}function Sp(){var e=qf(bp()).domain([.1,1,10]);return e.copy=function(){return mp(e,Sp()).base(e.base())},eu.apply(e,arguments)}function Cp(){var e=Zf(bp());return e.copy=function(){return mp(e,Cp()).constant(e.constant())},eu.apply(e,arguments)}function wp(){var e=np(bp());return e.copy=function(){return mp(e,wp()).exponent(e.exponent())},eu.apply(e,arguments)}function Tp(){return wp.apply(null,arguments).exponent(.5)}function Ep(e){for(var t=e.length/6|0,n=Array(t),r=0;r<t;)n[r]=`#`+e.slice(r*6,++r*6);return n}var Dp=Ep(`1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf`),Op=Ep(`7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666`),kp=Ep(`1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666`),Ap=Ep(`4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0`),jp=Ep(`a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928`),Mp=Ep(`fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2`),Np=Ep(`b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc`),Pp=Ep(`e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999`),Fp=Ep(`66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3`),Ip=Ep(`8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f`);function Lp(e,t,n){let r=e-t+n*2;return e?r>0?r:1:0}var Rp=`identity`,zp=`linear`,Bp=`sqrt`,Vp=`symlog`,Hp=`time`,Up=`sequential`,Wp=`diverging`,Gp=`quantile`,Kp=`quantize`,qp=`threshold`,Jp=`ordinal`,Yp=`point`,Xp=`band`,Zp=`bin-ordinal`,Qp=`continuous`,$p=`discrete`,em=`discretizing`,tm=`interpolating`,nm=`temporal`;function rm(e){return function(t){let n=t[0],r=t[1],i;return r<n&&(i=n,n=r,r=i),[e.invert(n),e.invert(r)]}}function im(e){return function(t){let n=e.range(),r=t[0],i=t[1],a=-1,o,s,c,l;for(i<r&&(s=r,r=i,i=s),c=0,l=n.length;c<l;++c)n[c]>=r&&n[c]<=i&&(a<0&&(a=c),o=c);if(!(a<0))return r=e.invertExtent(n[a]),i=e.invertExtent(n[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function am(){let e=nu().unknown(void 0),t=e.domain,n=e.range,r=[0,1],i,a,o=!1,s=0,c=0,l=.5;delete e.unknown;function u(){let e=t().length,u=r[1]<r[0],d=r[1-u],f=Lp(e,s,c),p=r[u-0];i=(d-p)/(f||1),o&&(i=Math.floor(i)),p+=(d-p-i*(e-s))*l,a=i*(1-s),o&&(p=Math.round(p),a=Math.round(a));let m=Vn(e).map(e=>p+i*e);return n(u?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),u()):t()},e.range=function(e){return arguments.length?(r=[+e[0],+e[1]],u()):r.slice()},e.rangeRound=function(e){return r=[+e[0],+e[1]],o=!0,u()},e.bandwidth=function(){return a},e.step=function(){return i},e.round=function(e){return arguments.length?(o=!!e,u()):o},e.padding=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),s=c,u()):s},e.paddingInner=function(e){return arguments.length?(s=Math.max(0,Math.min(1,e)),u()):s},e.paddingOuter=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),u()):c},e.align=function(e){return arguments.length?(l=Math.max(0,Math.min(1,e)),u()):l},e.invertRange=function(e){if(e[0]==null||e[1]==null)return;let i=r[1]<r[0],o=i?n().reverse():n(),s=o.length-1,c=+e[0],l=+e[1],u,d,f;if(!(c!==c||l!==l)&&(l<c&&(f=c,c=l,l=f),!(l<o[0]||c>r[1-i])))return u=Math.max(0,dn(o,c)-1),d=c===l?u:dn(o,l)-1,c-o[u]>a+1e-10&&++u,i&&(f=u,u=s-d,d=s-f),u>d?void 0:t().slice(u,d+1)},e.invert=function(t){let n=e.invertRange([t,t]);return n&&n[0]},e.copy=function(){return am().domain(t()).range(r).round(o).paddingInner(s).paddingOuter(c).align(l)},u()}function om(e){let t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return om(t())},e}function sm(){return om(am().paddingInner(1))}var cm=Array.prototype.map;function lm(e){return cm.call(e,et)}var um=Array.prototype.slice;function dm(){let e=[],t=[];function n(n){return n==null||n!==n?void 0:t[(dn(e,n)-1)%t.length]}return n.domain=function(t){return arguments.length?(e=lm(t),n):e.slice()},n.range=function(e){return arguments.length?(t=um.call(e),n):t.slice()},n.tickFormat=function(t,n){return Pf(e[0],$e(e),t??10,n)},n.copy=function(){return dm().domain(n.domain()).range(n.range())},n}var fm=new Map,pm=Symbol(`vega_scale`);function mm(e){return e[pm]=!0,e}function hm(e,t,n){let r=function(){let n=t();return n.invertRange||=n.invert?rm(n):n.invertExtent?im(n):void 0,n.type=e,mm(n)};return r.metadata=Mt(M(n)),r}function L(e,t,n){return arguments.length>1?(fm.set(e,hm(e,t,n)),this):gm(e)?fm.get(e):void 0}L(Rp,Lf),L(zp,If,Qp),L(`log`,Jf,[Qp,`log`]),L(`pow`,rp,Qp),L(Bp,ip,Qp),L(Vp,Qf,Qp),L(Hp,dp,[Qp,nm]),L(`utc`,fp,[Qp,nm]),L(Up,hp,[Qp,tm]),L(`${Up}-${zp}`,hp,[Qp,tm]),L(`${Up}-log`,gp,[Qp,tm,`log`]),L(`${Up}-pow`,vp,[Qp,tm]),L(`${Up}-${Bp}`,yp,[Qp,tm]),L(`${Up}-${Vp}`,_p,[Qp,tm]),L(`${Wp}-${zp}`,xp,[Qp,tm]),L(`${Wp}-log`,Sp,[Qp,tm,`log`]),L(`${Wp}-pow`,wp,[Qp,tm]),L(`${Wp}-${Bp}`,Tp,[Qp,tm]),L(`${Wp}-${Vp}`,Cp,[Qp,tm]),L(Gp,ap,[em,Gp]),L(Kp,op,em),L(qp,sp,em),L(Zp,dm,[$p,em]),L(Jp,nu,$p),L(Xp,am,$p),L(Yp,sm,$p);function gm(e){return fm.has(e)}function _m(e,t){let n=fm.get(e);return n&&n.metadata[t]}function vm(e){return _m(e,Qp)}function ym(e){return _m(e,$p)}function bm(e){return _m(e,em)}function xm(e){return _m(e,`log`)}function Sm(e){return _m(e,tm)}function Cm(e,t){let n=t[0],r=$e(t)-n;return function(t){return e(n+t*r)}}function wm(e,t,n){return bf(Em(t||`rgb`,n),e)}function Tm(e,t){let n=Array(t),r=t+1;for(let i=0;i<t;)n[i]=e(++i/r);return n}function Em(e,t){let n=Sf[Dm(e)];return t!=null&&n&&n.gamma?n.gamma(t):n}function Dm(e){return`interpolate`+e.toLowerCase().split(`-`).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}var Om={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`},km={accent:Op,category10:Dp,category20:`1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5`,category20b:`393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6`,category20c:`3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9`,dark2:kp,observable10:Ap,paired:jp,pastel1:Mp,pastel2:Np,set1:Pp,set2:Fp,set3:Ip,tableau10:`4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac`,tableau20:`4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5`};function Am(e){if(O(e))return e;let t=e.length/6|0,n=Array(t);for(let r=0;r<t;)n[r]=`#`+e.slice(r*6,++r*6);return n}function jm(e,t){for(let n in e)Nm(n,t(e[n]))}var Mm={};jm(km,Am),jm(Om,e=>wm(Am(e)));function Nm(e,t){return e&&=e.toLowerCase(),arguments.length>1?(Mm[e]=t,this):Mm[e]}function Pm(e,t,n){return N(t)&&n!=null&&(t=Math.min(t,~~(Et(e.domain())/n)||1)),Qe(t)&&(t.step,t=t.interval),t}function Fm(e,t,n){var r=e.range(),i=Math.floor(r[0]),a=Math.ceil($e(r));if(i>a&&(r=a,a=i,i=r),t=t.filter(function(t){return t=e(t),i<=t&&t<=a}),n>0&&t.length>1){for(var o=[t[0],$e(t)];t.length>n&&t.length>=3;)t=t.filter(function(e,t){return!(t%2)});t.length<3&&(t=o)}return t}function Im(e,t){return e.bins?Fm(e,Lm(e.bins,t)):e.ticks?e.ticks(t):e.domain()}function Lm(e,t){var n=e.length,r=~~(n/(t||n));return r<2?e.slice():e.filter(function(e,t){return!(t%r)})}function Rm(e,t,n){var r=e.tickFormat?e.tickFormat(t,n):n?sr(n):String;if(xm(e.type)){var i=Bm(n);r=e.bins?i:zm(r,i)}return r}function zm(e,t){return function(n){return e(n)?t(n):``}}function Bm(e){var t=Yn(e||`,`);if(t.precision==null){switch(t.precision=12,t.type){case`%`:t.precision-=2;break;case`e`:--t.precision;break}return Vm(sr(t),sr(`.1f`)(1)[1])}else return sr(t)}function Vm(e,t){return function(n){var r=e(n),i=r.indexOf(t),a,o;if(i<0)return r;for(a=Hm(r,i),o=a<r.length?r.slice(a):``;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Hm(e,t){var n=e.lastIndexOf(`e`),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}var Um=[],Wm=[];function Gm(e,t){Wm.push({guard:e,Source:t})}function Km(e,t){for(let n of Um)if(n.guard(e))return new n.Source(e,t);for(let n of Wm)if(n.guard(e))return new n.Source(e,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}var qm=class{stats={count:0,first:null};#e=!1;#t=!1;#n=[];paramRuntimeProvider=null;get behavior(){return 0}get domainSensitiveScaleChannels(){return[]}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(let e of this.children)e.reset();this.stats.count=0,this.stats.first=null}initialize(){}initializeOnce(){this.#e||=(this.initialize(),!0)}#r(){this._propagate=Function(`children`,`stats`,Vn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
|
|
177
177
|
`)+`return function propagate(datum) {
|
|
178
178
|
if (stats.count === 0) {
|
|
179
179
|
stats.first = structuredClone(datum);
|
|
@@ -181,7 +181,7 @@ return groupData;`);return el.set(t,i),i}function Xc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
181
181
|
stats.count++;
|
|
182
182
|
${Vn(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
|
|
183
183
|
`)}
|
|
184
|
-
};`)(this.children,this.stats)}setParent(e){this.parent=e}addChild(e){if(e.parent)throw 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(let t of e.children)this.adopt(t)}insertAsParent(e){if(this.isRoot())throw 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){let t=this.children.indexOf(e);if(t>-1)this.children.splice(t,1),e.parent=void 0,this.#r();else throw Error(`Trying to remove an unknown child node!`)}excise(){if(this.isRoot())throw Error(`Cannot excise root node!`);if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){let 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 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(let t of this.children)t.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){let t=this.children.map(t=>t.subtreeToString(e+1)).join(``);return`${` `.repeat(e*2)}* ${this.label}${`identifier`in this&&this.identifier?`: `+this.identifier:``} \n${t}`}handle(e){this._propagate(e)}complete(){this.completed=!0;for(let e of this.children)e.complete()}registerDisposer(e){this.#t?e():this.#n.push(e)}dispose(){if(!this.#t){this.#t=!0;for(let e of this.#n)e();this.#n.length=0}}disposeSubtree(){let e=()=>void 0;e.afterChildren=e=>{e.dispose()},this.visit(e)}beginBatch(e){for(let t of this.children)t.beginBatch(e)}get paramRuntime(){if(this.paramRuntimeProvider&&this.paramRuntimeProvider.paramRuntime)return this.paramRuntimeProvider.paramRuntime;if(!this.parent)throw Error(`Cannot find paramRuntime!`);return this.parent.paramRuntime}repropagate(){if(this.parent)this.parent.repropagate();else throw Error(`Cannot repropagate data, no FlowNode with stored data found!`)}_propagate(e){}};function Jm(e){let t=new Set;for(;e;){for(let n of e.domainSensitiveScaleChannels)t.add(n);e=e.parent}return t}function Ym(e){return e.type==`file`}function Xm(e){return e.type==`facet`}var Zm=class extends qm{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 Error(`Source does not handle incoming data!`)}async load(){}repropagate(){this.load()}},Qm=class extends Zm{initializedPromise=Promise.resolve();_lastLoadedDomain;constructor(e,t){if(super(e),!t)throw Error(`No channel has been specified for the lazy data source. Must be either "x" or "y".`);if(t!==`x`&&t!==`y`)throw Error(`Invalid channel specified for the lazy data source: ${t}. Must be either "x" or "y"`);if(this.channel=t,this.scaleResolution=this.view.getScaleResolution(t),!this.scaleResolution){let e=[`The lazy data source cannot find a resolved scale for channel "${t}".`];throw $m(this.view)||e.push(`Make sure the view has a "shared" scale resolution as it is not a unit view.`),Error(e.join(` `))}let n=()=>{this.view.isVisible()&&this.onDomainChanged(this.scaleResolution.getDomain(),this.scaleResolution.getComplexDomain())};this.scaleResolution.addEventListener(`domain`,n),this.view.context.addBroadcastListener(`layoutComputed`,n)}get genome(){let e=this.scaleResolution.getScale();if(`genome`in e){let t=e.genome();if(t)return t}throw 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(let t of e)for(let e of t)this._propagate(e);this.complete()}isDataReadyForDomain(e){let t=e[this.channel];if(!t||!this._lastLoadedDomain)return!1;let[n,r]=t[0]<=t[1]?t:[t[1],t[0]],[i,a]=this._lastLoadedDomain[0]<=this._lastLoadedDomain[1]?this._lastLoadedDomain:[this._lastLoadedDomain[1],this._lastLoadedDomain[0]];return n>=i&&r<=a}};function $m(e){return typeof e.getMarkType==`function`}var eh=class extends Qm{ticks=[];constructor(e,t){let n={axis:{},...e};super(t,n.channel),this.params=e}get label(){return`axisTickSource`}async load(){this.ticks=null,await this.onDomainChanged()}async onDomainChanged(){let e=this.scaleResolution.getScale(),t=this.scaleResolution.getAxisLength(),n=this.params.axis,r=e.type==`locus`?()=>85:e=>30+55*Ql(100,700,e),i=N(n.tickCount)?n.tickCount:Math.round(t/r(t)),a=Pm(e,i,n.tickMinStep),o=n.values?Fm(e,n.values,a):Im(e,a);if(this.ticks==null||!Yl(o,this.ticks)){this.ticks=o;let t=Rm(e,i,n.format);this.publishData([o.map(e=>({value:e,label:t(e)}))])}}};function th(e){return e?.type==`axisTicks`}Gm(th,eh);var nh=class extends Qm{constructor(e,t){super(t,e.channel)}get label(){return`axisGenomeSource`}async load(){this.publishData([this.genome.chromosomes])}};function rh(e){return e?.type==`axisGenome`}Gm(rh,nh);function ih(e,t){return!t||/^(data:|([A-Za-z]+:)?\/\/)/.test(e)||e.startsWith(`/`)?e:(t.endsWith(`/`)||(t+=`/`),t+e)}function ah(e){if(!e)return e;if(/[?#]/.test(e))throw Error(`Invalid base URL: ${e} - cannot contain query or hash.`);return e.endsWith(`/`)?e:e+`/`}var oh=class extends qm{#e;constructor(e,t){super(t),this.#e=e.type}get label(){return this.#e}},sh=`_uniqueId`,ch=1e4,lh=[null],uh=class extends oh{get behavior(){return 2}constructor(e){super(e),this.params=e,this.as=e.as??`_uniqueId`,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%1e4==0&&(this._id=this._getBlock()*ch),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){let e=lh.length;return lh[e]=this,this._blocks.push(e),this._usedBlocks++,e}};function R(e,t=e){return/^[A-Za-z0-9_]+$/.test(e)?
|
|
184
|
+
};`)(this.children,this.stats)}setParent(e){this.parent=e}addChild(e){if(e.parent)throw 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(let t of e.children)this.adopt(t)}insertAsParent(e){if(this.isRoot())throw 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){let t=this.children.indexOf(e);if(t>-1)this.children.splice(t,1),e.parent=void 0,this.#r();else throw Error(`Trying to remove an unknown child node!`)}excise(){if(this.isRoot())throw Error(`Cannot excise root node!`);if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){let 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 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(let t of this.children)t.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){let t=this.children.map(t=>t.subtreeToString(e+1)).join(``);return`${` `.repeat(e*2)}* ${this.label}${`identifier`in this&&this.identifier?`: `+this.identifier:``} \n${t}`}handle(e){this._propagate(e)}complete(){this.completed=!0;for(let e of this.children)e.complete()}registerDisposer(e){this.#t?e():this.#n.push(e)}dispose(){if(!this.#t){this.#t=!0;for(let e of this.#n)e();this.#n.length=0}}disposeSubtree(){let e=()=>void 0;e.afterChildren=e=>{e.dispose()},this.visit(e)}beginBatch(e){for(let t of this.children)t.beginBatch(e)}get paramRuntime(){if(this.paramRuntimeProvider&&this.paramRuntimeProvider.paramRuntime)return this.paramRuntimeProvider.paramRuntime;if(!this.parent)throw Error(`Cannot find paramRuntime!`);return this.parent.paramRuntime}repropagate(){if(this.parent)this.parent.repropagate();else throw Error(`Cannot repropagate data, no FlowNode with stored data found!`)}_propagate(e){}};function Jm(e){let t=new Set;for(;e;){for(let n of e.domainSensitiveScaleChannels)t.add(n);e=e.parent}return t}function Ym(e){return e.type==`file`}function Xm(e){return e.type==`facet`}var Zm=class extends qm{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 Error(`Source does not handle incoming data!`)}async load(){}repropagate(){this.load()}},Qm=class extends Zm{initializedPromise=Promise.resolve();_lastLoadedDomain;constructor(e,t){if(super(e),!t)throw Error(`No channel has been specified for the lazy data source. Must be either "x" or "y".`);if(t!==`x`&&t!==`y`)throw Error(`Invalid channel specified for the lazy data source: ${t}. Must be either "x" or "y"`);if(this.channel=t,this.scaleResolution=this.view.getScaleResolution(t),!this.scaleResolution){let e=[`The lazy data source cannot find a resolved scale for channel "${t}".`];throw $m(this.view)||e.push(`Make sure the view has a "shared" scale resolution as it is not a unit view.`),Error(e.join(` `))}let n=()=>{this.view.isVisible()&&this.onDomainChanged(this.scaleResolution.getDomain(),this.scaleResolution.getComplexDomain())};this.scaleResolution.addEventListener(`domain`,n),this.view.context.addBroadcastListener(`layoutComputed`,n)}get genome(){let e=this.scaleResolution.getScale();if(`genome`in e){let t=e.genome();if(t)return t}throw 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(let t of e)for(let e of t)this._propagate(e);this.complete()}isDataReadyForDomain(e){let t=e[this.channel];if(!t||!this._lastLoadedDomain)return!1;let[n,r]=t[0]<=t[1]?t:[t[1],t[0]],[i,a]=this._lastLoadedDomain[0]<=this._lastLoadedDomain[1]?this._lastLoadedDomain:[this._lastLoadedDomain[1],this._lastLoadedDomain[0]];return n>=i&&r<=a}};function $m(e){return typeof e.getMarkType==`function`}var eh=class extends Qm{ticks=[];constructor(e,t){let n={axis:{},...e};super(t,n.channel),this.params=e}get label(){return`axisTickSource`}async load(){this.ticks=null,await this.onDomainChanged()}async onDomainChanged(){let e=this.scaleResolution.getScale(),t=this.scaleResolution.getAxisLength(),n=this.params.axis,r=e.type==`locus`?()=>85:e=>30+55*Ql(100,700,e),i=N(n.tickCount)?n.tickCount:Math.round(t/r(t)),a=Pm(e,i,n.tickMinStep),o=n.values?Fm(e,n.values,a):Im(e,a);if(this.ticks==null||!Yl(o,this.ticks)){this.ticks=o;let t=Rm(e,i,n.format);this.publishData([o.map(e=>({value:e,label:t(e)}))])}}};function th(e){return e?.type==`axisTicks`}Gm(th,eh);var nh=class extends Qm{constructor(e,t){super(t,e.channel)}get label(){return`axisGenomeSource`}async load(){this.publishData([this.genome.chromosomes])}};function rh(e){return e?.type==`axisGenome`}Gm(rh,nh);function ih(e,t){return!t||/^(data:|([A-Za-z]+:)?\/\/)/.test(e)||e.startsWith(`/`)?e:(t.endsWith(`/`)||(t+=`/`),t+e)}function ah(e){if(!e)return e;if(/[?#]/.test(e))throw Error(`Invalid base URL: ${e} - cannot contain query or hash.`);return e.endsWith(`/`)?e:e+`/`}var oh=class extends qm{#e;constructor(e,t){super(t),this.#e=e.type}get label(){return this.#e}},sh=`_uniqueId`,ch=1e4,lh=[null],uh=class extends oh{get behavior(){return 2}constructor(e){super(e),this.params=e,this.as=e.as??`_uniqueId`,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%1e4==0&&(this._id=this._getBlock()*ch),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){let e=lh.length;return lh[e]=this,this._blocks.push(e),this._usedBlocks++,e}};function R(e,t=e){return/^[A-Za-z0-9_]+$/.test(e)?Ve(Function(`validator`,`
|
|
185
185
|
let validated = !validator;
|
|
186
186
|
return function accessField(datum) {
|
|
187
187
|
if (!validated) {
|
|
@@ -189,9 +189,9 @@ return groupData;`);return el.set(t,i),i}function Xc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
189
189
|
validated = true;
|
|
190
190
|
}
|
|
191
191
|
return datum[${JSON.stringify(e)}];
|
|
192
|
-
}`)(function(t){e in t||dh(t,e)}),[e],t):Je(e)}function dh(e,t){throw Error(`Invalid field "${t}". Available fields or properties: ${Object.keys(e).join(`, `)}`)}function fh(e,t,n){if(!e)throw Error(`Cannot create an accessor without a channel.`);function r(n){let r=n;return r.fields??=[],r.constant=r.fields.length===0,r.channelDef=t,r.channel=e,r.sourceKey=hh(t),r.scaleChannel=((jh(t)&&t.resolutionChannel)??(Xh(e)&&e))||void 0,r.scaleChannel!==void 0&&(r.domainKeyBase=gh({scaleChannel:r.scaleChannel,source:mh(t)}).domainKeyBase),r.equals=e=>e?r===e||r.sourceKey!==void 0&&r.sourceKey===e.sourceKey:!1,r.asNumberAccessor=()=>r,r}function i(e){if(z(e)){let t=r(n.createExpression(e.expr));if(t.fields.length>0)throw Error(`Expression in DatumDef/ValueDef cannot access data fields: `+e.expr);return t}else{let t=e;return r(()=>t)}}if(kh(t))try{return r(R(t.field))}catch(e){throw Error(`Invalid field definition: ${e.message}`,{cause:e})}else if(Fh(t))return r(n.createExpression(t.expr));else if(Ah(t))return i(t.datum);else if(Oh(t))return i(t.value);else throw Error(`Invalid channel definition: "${e}": ${JSON.stringify(t)}! The channel definition must contain one of the following properties: "field", "datum", "value" or "expr".`)}function ph(e){return e.scaleChannel!==void 0}function mh(e){if(kh(e))return{kind:`field`,value:e.field};if(Fh(e))return{kind:`expr`,value:e.expr};if(Ah(e))return{kind:`datum`,value:e.datum};if(Oh(e))return{kind:`value`,value:e.value};throw Error(`Cannot derive a domain key from channel definition: `+JSON.stringify(e))}function hh(e){let t=mh(e);return t.kind===`datum`||t.kind===`value`?`constant|`+yh(t.value):t.kind+`|`+vh(t)}function gh({scaleChannel:e,source:t,type:n}){if(!e)throw Error(`Cannot build a domain key without a scale channel.`);let r=e+`|`+t.kind+`|`+vh(t);return{domainKeyBase:r,domainKey:n?n+`|`+r:void 0}}function _h(e,t){let{domainKey:n,domainKeyBase:r}=gh({scaleChannel:e.scaleChannel,source:mh(e.channelDef),type:t});if(!n)throw Error(`Cannot finalize a domain key without a resolved type.`);return e.domainKeyBase=r,e.domainKey=n,n}function vh(e){switch(e.kind){case`field`:case`expr`:return e.value;case`datum`:case`value`:return yh(e.value);default:throw Error(`Unknown domain key source.`)}}function yh(e){return z(e)?`expr:`+e.expr:e===void 0?`undefined`:JSON.stringify(e)}function bh(e,t,n,r){let i,a=yg(!1),o=()=>{if(i)return i;let o=n.findValue(e);if(!o)return a;let s={};if(ig(o)){let n=Object.keys(o.intervals);for(let r of n){let n=t[r];if(kh(n)){s[r]=n.field;continue}else if(n&&`condition`in n){let e=n.condition;if(kh(e)){s[r]=e.field;continue}}throw Error(`Selection "${e}" has an interval for "${r}" channel, but could not find a fieldDef: ${JSON.stringify(t[r])}`)}}let c=rg({type:`filter`,param:e,fields:s,empty:r},o);return i=n.createExpression(c),i};return Object.assign(e=>o()(e),{param:e,empty:r??!0})}function xh(e,t,n,r){let i=Ih(t)||Lh(t)?Array.isArray(t.condition)?t.condition:[t.condition]:[],a=[...i,t],o=a.map((t,o)=>{let s=i[o];return{accessor:fh(e,t,r),predicate:s?.param?bh(s.param,n,r,s.empty):Object.assign(yg(o===a.length-1),{empty:!1})}});if(o.filter(e=>!e.accessor.constant).length>1)throw Error(`Only one accessor can be non-constant. Channel: `+e);return o}function Sh(e,t){let n={},r=t=>e.getScaleResolution(t)?.getScale();for(let[i,a]of Object.entries(t)){if(!a)continue;let o=i;Ch(o)||(n[o]=Eh(xh(o,a,t,e.paramRuntime),r))}return n}function Ch(e){return e===`key`||e===`search`}function wh(e){return e.branches.map(e=>e.accessor)}function Th(e){return e.branches.find(e=>!e.accessor.constant)?.accessor}function Eh(e,t){if(e.length===1){let n=Dh(e[0].accessor,t);return Object.assign(n,{branches:e})}let n=e.map(e=>e.predicate),r=e.map(e=>Dh(e.accessor,t));return Object.assign(e=>{for(let t=0;t<r.length;t++)if(n[t](e))return r[t](e)},{constant:!1,branches:e,scale:r.map(e=>e.scale).find(e=>e),channelDef:e.at(-1).accessor.channelDef})}function Dh(e,t){let{channel:n,scaleChannel:r,channelDef:i}=e,a=e.scaleChannel?t(r):void 0;if(r&&!a)throw Error(`Missing scale! "${n}": ${JSON.stringify(i)}`);return Object.assign(a?t=>a(e(t)):t=>e(t),{scale:a,constant:e.constant,branches:[{accessor:e,predicate:yg(!0)}],channelDef:i})}function Oh(e){return e&&`value`in e}function kh(e){return e&&`field`in e}function Ah(e){return e&&`datum`in e}function jh(e){return kh(e)||Ah(e)||Fh(e)||Ph(e)}function Mh(e){if(Lh(e)){let t=e.condition;if(!Array.isArray(t)&&jh(t))return t}else if(jh(e))return e}function Nh(e,t){let n=e.mark.encoding[t];if(Array.isArray(n))throw Error(`Not a channel def with scale!`);{let e=Mh(n);if(e)return e}throw Error(`Not a channel def with scale!`)}function Ph(e){return e&&`chrom`in e}function Fh(e){return e&&`expr`in e}function Ih(e){return(kh(e)||Ah(e))&&`condition`in e}function Lh(e){return Oh(e)&&`condition`in e}var Rh=[`x`,`y`],zh=[`x2`,`y2`],Bh=[...Rh,...zh];function Vh(e){return Rh.includes(e)}function Hh(e){return Bh.includes(e)}var Uh={x:`x2`,y:`y2`},Wh=Object.fromEntries(Object.entries(Uh).map(e=>[e[1],e[0]]));function Gh(e){return e in Wh}function Kh(e){let t=Uh[e];if(t)return t;throw Error(`${e} has no secondary channel!`)}function qh(e){return Wh[e]??e}function Jh(e){return[`color`,`fill`,`stroke`].includes(qh(e))}function Yh(e){return[`shape`].includes(e)}function Xh(e){return[`x`,`y`,`x2`,`y2`,`color`,`fill`,`stroke`,`opacity`,`fillOpacity`,`strokeOpacity`,`strokeWidth`,`size`,`shape`,`angle`,`dx`,`dy`,`sample`].includes(e)}function Zh(e){switch(e){case`shape`:return[`circle`,`square`,`cross`,`diamond`,`triangle-up`,`triangle-right`,`triangle-down`,`triangle-left`,`tick-up`,`tick-right`,`tick-down`,`tick-left`];default:}}function Qh(e){if(!Yh(e))throw Error(`Not a discrete channel: `+e);let t=new Map(Zh(e).map((e,t)=>[e,t]));return n=>{let r=t.get(n);if(r!==void 0)return r;throw Error(`Invalid value for "${e}" channel: ${n}`)}}function $h(e){return{type:`single`,datum:e,uniqueId:e?.[sh]}}function eg(e){return e??=[],{type:`multi`,data:new Map(e.map(e=>[e[sh],e]))}}function tg(e){return{type:`interval`,intervals:Object.fromEntries(e.map(e=>[e,null]))}}function ng(e,{add:t,remove:n,toggle:r}){let i=e.data;for(let e of t??[])i.set(e[sh],e);for(let e of n??[])i.delete(e[sh]);for(let e of r??[]){let t=e[sh];i.has(t)?i.delete(t):i.set(t,e)}return{type:`multi`,data:i}}function rg(e,t){let n=!!(e.empty??!0),r=gg(e.param),i=e.fields??{};if(ag(t))return`${r}.uniqueId == null ? ${n} : ${r}.uniqueId === datum[${JSON.stringify(sh)}]`;if(og(t))return`${r}.data.size == 0 ? ${n} : mapHasKey(${r}.data, datum[${JSON.stringify(sh)}])`;if(ig(t)){let a=Object.keys(t.intervals),o=Object.keys(i).filter(Vh);if(o.length===0)throw Error(`Filtering using interval selections requires at least one primary positional channel in the config! `+JSON.stringify(e));if(o.some(e=>!a.includes(e)))throw Error(`Selection channels (${a.join(`, `)}) do not match the fields: ${JSON.stringify(e)}!`);let s=e=>`datum[${JSON.stringify(e)}]`;return a.map(e=>{let t=Kh(e),a=i[e];return`(${r}.intervals.${e} ? (${`${r}.intervals.${e}[0] <= ${s(i[t]??i[e])}`} && ${`${s(a)} <= ${r}.intervals.${e}[1]`}) : ${n})`}).join(` && `)}else throw Error(`Unrecognized selection type : ${JSON.stringify(t)}`)}function ig(e){return e.type===`interval`}function ag(e){return e.type===`single`}function og(e){return e.type===`multi`}function sg(e){let t=typeof e==`string`?{type:e}:{...e};return t.on=t.on?fg(t.on):cg(t)?{type:`click`}:void 0,t.clear=t.clear===!1?void 0:t.clear===!0||t.clear==null?{type:`dblclick`}:fg(t.clear),cg(t)&&t.on.type===`click`&&(t.toggle=!0),t}function cg(e){return e&&e.type==`point`}function lg(e){return e&&e.type==`interval`}function ug(e){return Object.values(e.intervals).some(e=>e&&e.length===2)}function dg(e,t){return Object.entries(e.intervals).every(([e,n])=>(e==`x`||e==`y`)&&n&&n[0]<=t[e]&&n[1]>=t[e])}function fg(e){if(typeof e==`string`){let t=e.match(/^([a-zA-Z]+)(?:\[(.+)\])?$/);if(!t)throw Error(`Invalid event type string: ${e}`);let[,n,r]=t,i={type:n};return r&&(i.filter=r),i}else return e}function z(e){return typeof e==`object`&&!!e&&`expr`in e&&P(e.expr)}function pg(e){if(z(e))throw Error(`ExprRef `+JSON.stringify(e)+` not allowed here. Expected a scalar value.`);return e}function mg(e){return(`expr`in e||`bind`in e)&&!(`select`in e)}function hg(e){return!(`expr`in e||`bind`in e)&&`select`in e}function gg(e){if(!/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e))throw Error(`Invalid parameter name: `+e+`. Must be a valid JavaScript identifier.`);return e}function _g(e,t,n){if(`select`in e){let t=sg(e.select);if(cg(t))return t.toggle?eg():$h(null);if(lg(t)){if(!t.encodings)throw Error(`Interval selection "`+e.name+`" must have encodings defined!`);return tg(t.encodings)}throw Error(`Unknown selection config for parameter "`+e.name+`".`)}if(`expr`in e){let r=n??t?.createExpression(e.expr);if(!r)throw Error(`Cannot evaluate expression for parameter "`+e.name+`".`);return r(null)}return`value`in e?e.value:null}function vg(e,t,n,r,i={}){let a={...t},o=new Set,s=!1,c=!1,l=i.batchMode??`microtask`;r?.(()=>{c=!0,o.clear(),s=!1});let u=()=>{if(c)return;if(!n||o.size===0){s=!1;return}let e=new Set(o);o.clear(),s=!1,n(e)},d=t=>{c||(o.add(t),s||(s=!0,queueMicrotask(()=>{c||(l==`whenPropagated`&&e.whenPropagated?e.whenPropagated().then(u).catch(()=>{u()}):u())})))};for(let[i,o]of Object.entries(t))if(z(o))if(n){let t=()=>d(i),n=e.watchExpression?e.watchExpression(o.expr,t,{scopeOwned:!r,registerDisposer:r}):e.createExpression(o.expr);if(!e.watchExpression){let e=n.subscribe(t);r?.(e)}Object.defineProperty(a,i,{enumerable:!0,get(){return n()}})}else{let t=e.createExpression(o.expr);Object.defineProperty(a,i,{enumerable:!0,get(){return t()}})}else a[i]=o;return a}function yg(e){return Object.assign(()=>e,{subscribe:()=>()=>void 0,invalidate:()=>void 0,identifier:()=>`constant`,fields:[],globals:[],code:JSON.stringify(e)})}function bg(e,t,n=!0){let r,i=e=>void 0;return function(...a){return new Promise((o,s)=>{n&&i(`debounced`),clearTimeout(r),i=s,r=window.setTimeout(()=>{clearTimeout(r),i=e=>void 0,o(e(...a))},typeof t==`function`?t():t)})}}var xg=class extends Qm{#e=new AbortController;#t=[0,0];#n=[0,0];#r=0;params;setupDebouncing(e){let t=()=>pg(e.debounce),n=e.debounceMode;if(n==`domain`)this.onDomainChanged=bg(this.onDomainChanged.bind(this),t,!1);else if(n==`window`)this.loadInterval=bg(this.loadInterval.bind(this),t,!1);else throw Error(`Invalid debounceMode: `+n)}onDomainChanged(e){this.#n=e;let t=pg(this.params?.windowSize)??-1;e[1]-e[0]>t||this.callIfWindowsChanged(e,t,async e=>{await this.initializedPromise,this.loadInterval(e)})}reloadLastDomain(){let e=this.#n;this.#n=[0,0],this.#t=[0,0],this._lastLoadedDomain=void 0,this.onDomainChanged(e)}async loadInterval(e){}publishData(e){let t=this._lastLoadedDomain;super.publishData(e),t&&(this._lastLoadedDomain=t)}async discretizeAndLoad(e,t){this.#e.abort(),this.setLoadingStatus(`loading`),this.#e=new AbortController;let n=this.#e.signal,r=this.genome.continuousToDiscreteChromosomeIntervals(e),i=typeof t==`function`?{load:t}:t;try{let t=i.loadBatch?await i.loadBatch(r,n):await Promise.all(r.map(async e=>i.load(e,n)));if(t.length!==r.length)throw Error(`Batched lazy loader must return one chunk per interval.`);if(!n.aborted)return this.setLoadingStatus(`complete`),this._lastLoadedDomain=Array.from(e),t}catch(e){if(!n.aborted)throw this.setLoadingStatus(`error`,e.message),e}}callIfWindowsChanged(e,t,n){let r=[Math.max(Math.floor(e[0]/t)*t,0),Math.min(Math.ceil(e[1]/t)*t,this.genome.totalSize)],i=this.#t;(t!==this.#r||r[0]<i[0]||r[1]>i[1])&&(this.#t=r,this.#r=t,n(r))}},Sg=n((()=>{}));async function Cg(e){return e.bytes?e.bytes():new Uint8Array(await e.arrayBuffer())}var wg=n((()=>{})),Tg,Eg=n((()=>{wg(),Tg=class{blob;constructor(e){this.blob=e}async read(e,t=0){return e===0?new Uint8Array:Cg(this.blob.slice(t,t+e))}async readFile(e){let t=typeof e==`string`?e:e?.encoding;if(t===`utf8`)return this.blob.text();if(t)throw Error(`unsupported encoding: ${t}`);return Cg(this.blob)}stat(){return Promise.resolve({size:this.blob.size})}close(){return Promise.resolve()}}}));function Dg(e){return(typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:`${e}`).replace(/\.$/,``)}var Og,kg=n((()=>{wg(),Og=class{url;_stat;fetchImplementation;baseHeaders;baseOverrides;constructor(e,t={}){this.url=e,this.baseHeaders=t.headers??{},this.baseOverrides=t.overrides??{},this.fetchImplementation=t.fetch??globalThis.fetch.bind(globalThis)}buildRequest(e,t){return{...this.baseOverrides,...e.overrides,headers:{...this.baseHeaders,...e.headers,...t},method:`GET`,redirect:`follow`,mode:`cors`,signal:e.signal}}async fetch(e,t){let n=t=>Error(`${Dg(t)} fetching ${e}`,{cause:t}),r;try{r=await this.fetchImplementation(e,t)}catch(i){if(`${i}`.includes(`Failed to fetch`)){console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{r=await this.fetchImplementation(e,{...t,cache:`reload`})}catch(e){throw n(e)}}else throw n(i)}return r}async read(e,t,n={}){if(e===0)return new Uint8Array;if(Number.isNaN(e)||Number.isNaN(t))throw TypeError(`read() called with NaN length or position (length=${e}, position=${t}). The index file may be corrupt.`);let r=await this.fetch(this.url,this.buildRequest(n,{range:`bytes=${t}-${t+e-1}`}));if(r.status===416)return new Uint8Array;if(!r.ok)throw Error(`HTTP ${r.status} fetching ${this.url}`);if(r.status===200&&t===0||r.status===206){let t=r.headers.get(`content-range`),n=/\/(\d+)$/.exec(t??``);n?.[1]&&(this._stat={size:parseInt(n[1],10)});let i=await Cg(r);return!this._stat&&r.status===200&&(this._stat={size:i.byteLength}),i.byteLength<=e?i:i.subarray(0,e)}throw Error(r.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${r.status} fetching ${this.url}`)}async readFile(e={}){let t=typeof e==`string`?e:e.encoding,n=typeof e==`string`?{}:e,r=await this.fetch(this.url,this.buildRequest(n));if(!r.ok)throw Error(`HTTP ${r.status} fetching ${this.url}`);if(t===`utf8`)return r.text();if(t)throw Error(`unsupported encoding: ${t}`);return Cg(r)}async stat(){return this._stat||await this.read(10,0),this._stat??{size:0}}close(){return Promise.resolve()}}})),Ag=r({BlobFile:()=>Tg,LocalFile:()=>jg,RemoteFile:()=>Og}),jg,Mg=n((()=>{Sg(),Eg(),kg(),jg=class{readFile(){return Promise.reject(Error(`unimplemented`))}read(){return Promise.reject(Error(`unimplemented`))}stat(){return Promise.reject(Error(`unimplemented`))}close(){return Promise.reject(Error(`unimplemented`))}}}));function Ng(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*Fg+(n>>>0)}var Pg,Fg,Ig=n((()=>{Pg=65536,Fg=Pg*Pg}));function Lg(e,t,n){let r=t[Rg],i=n?n[Rg]:1/0;return r<=e&&i>e?0:r<e?-1:1}var Rg,zg,Bg=n((()=>{Ig(),Rg=1,zg=class{filehandle;index;constructor({filehandle:e}){this.filehandle=e}_getIndex(){return this.index||=this._readIndex().catch(e=>{throw this.index=void 0,e}),this.index}async _readIndex(){let e=Ng(await this.filehandle.read(8,0));if(!e)return[[0,0]];let t=Array(e+1);t[0]=[0,0];let n=16*e;if(n>2**53-1)throw TypeError(`integer overflow`);let r=await this.filehandle.read(n,8);for(let n=0;n<e;n+=1){let e=Ng(r,n*16),i=Ng(r,n*16+8);t[n+1]=[e,i]}return t}async getLastBlock(){return(await this._getIndex()).at(-1)}async getRelevantBlocksForRead(e,t){let n=t+e;if(e===0)return[];let r=await this._getIndex(),i=[],a=0,o=r.length-1,s=Math.floor(r.length/2),c=Lg(t,r[s],r[s+1]);for(;c!==0;)c>0?o=s-1:c<0&&(a=s+1),s=Math.ceil((o-a)/2)+a,c=Lg(t,r[s],r[s+1]);i.push(r[s]);let l=s+1;for(;l<r.length&&(i.push(r[l]),!(r[l][Rg]>=n));l+=1);return i[i.length-1][Rg]<n&&i.push([]),i}}})),Vg=n((()=>{}));function Hg(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Ug(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var n=t.shift();if(n){if(typeof n!=`object`)throw TypeError(n+`must be non-object`);for(var r in n)Hg(n,r)&&(e[r]=n[r])}}return e}function Wg(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)}var Gg,Kg,qg,Jg,Yg,Xg,Zg,Qg,$g=n((()=>{Gg={arraySet:function(e,t,n,r,i){if(t.subarray&&e.subarray){e.set(t.subarray(n,n+r),i);return}for(var a=0;a<r;a++)e[i+a]=t[n+a]},flattenChunks:function(e){var t,n,r=0,i,a,o;for(t=0,n=e.length;t<n;t++)r+=e[t].length;for(o=new Uint8Array(r),i=0,t=0,n=e.length;t<n;t++)a=e[t],o.set(a,i),i+=a.length;return o},Buf8:function(e){return new Uint8Array(e)},Buf16:function(e){return new Uint16Array(e)},Buf32:function(e){return new Int32Array(e)}},Kg={arraySet:function(e,t,n,r,i){for(var a=0;a<r;a++)e[i+a]=t[n+a]},flattenChunks:function(e){return[].concat.apply([],e)},Buf8:function(e){return Array(e)},Buf16:function(e){return Array(e)},Buf32:function(e){return Array(e)}},qg=()=>{let e=typeof Uint8Array<`u`&&typeof Uint16Array<`u`&&typeof Int32Array<`u`;return qg=()=>e,e},Jg=(e,t,n,r,i)=>(Jg=qg()?Gg.arraySet:Kg.arraySet,Jg(e,t,n,r,i)),Yg=e=>(Yg=qg()?Gg.flattenChunks:Kg.flattenChunks,Yg(e)),Xg=e=>(Xg=qg()?Gg.Buf8:Kg.Buf8,Xg(e)),Zg=e=>(Zg=qg()?Gg.Buf16:Kg.Buf16,Zg(e)),Qg=e=>(Qg=qg()?Gg.Buf32:Kg.Buf32,Qg(e))}));function e_(e){var t,n,r,i,a,o=e.length,s=0;for(i=0;i<o;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),s+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(s),a=0,i=0;a<s;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t}function t_(e,t){if(t<65534&&(e.subarray&&o_()||!e.subarray&&a_()))return String.fromCharCode.apply(null,Wg(e,t));for(var n=``,r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n}function n_(e){for(var t=new Uint8Array(e.length),n=0,r=t.length;n<r;n++)t[n]=e.charCodeAt(n);return t}function r_(e,t){var n,r,i,a,o=t||e.length,s=Array(o*2);for(r=0,n=0;n<o;){if(i=e[n++],i<128){s[r++]=i;continue}if(a=s_(i),a>4){s[r++]=65533,n+=a-1;continue}for(i&=a===2?31:a===3?15:7;a>1&&n<o;)i=i<<6|e[n++]&63,a--;if(a>1){s[r++]=65533;continue}i<65536?s[r++]=i:(i-=65536,s[r++]=55296|i>>10&1023,s[r++]=56320|i&1023)}return t_(s,r)}function i_(e,t){var n;for(t||=e.length,t>e.length&&(t=e.length),n=t-1;n>=0&&(e[n]&192)==128;)n--;return n<0||n===0?t:n+s_(e[n])>t?n:t}var a_,o_,s_,c_=n((()=>{$g(),a_=function(){let e=!0;try{String.fromCharCode.apply(null,[0])}catch{e=!1}return a_=()=>e,e},o_=function(){let e=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{e=!1}return o_=()=>e,e},s_=function(e){for(var t=Xg(256),n=0;n<256;n++)t[n]=n>=252?6:n>=248?5:n>=240?4:n>=224?3:n>=192?2:1;return t[254]=t[254]=1,s_=e=>t[e],t[e]}}));function l_(){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}var u_=n((()=>{}));function d_(e,t,n,r){for(var i=e&65535|0,a=e>>>16&65535|0,o=0;n!==0;){o=n>2e3?2e3:n,n-=o;do i=i+t[r++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0}var f_=n((()=>{}));function p_(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t}function m_(e,t,n,r){var i=h_(),a=r+n;e^=-1;for(var o=r;o<a;o++)e=e>>>8^i[(e^t[o])&255];return e^-1}var h_,g_=n((()=>{h_=function(){let e=p_();return h_=()=>e,e}}));function __(e,t){var n=e.state,r=e.next_in,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T=e.input,E;i=r+(e.avail_in-5),a=e.next_out,E=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),c=n.dmax,l=n.wsize,u=n.whave,d=n.wnext,f=n.window,p=n.hold,m=n.bits,h=n.lencode,g=n.distcode,_=(1<<n.lenbits)-1,v=(1<<n.distbits)-1;top:do{m<15&&(p+=T[r++]<<m,m+=8,p+=T[r++]<<m,m+=8),y=h[p&_];dolen:for(;;){if(b=y>>>24,p>>>=b,m-=b,b=y>>>16&255,b===0)E[a++]=y&65535;else if(b&16){x=y&65535,b&=15,b&&(m<b&&(p+=T[r++]<<m,m+=8),x+=p&(1<<b)-1,p>>>=b,m-=b),m<15&&(p+=T[r++]<<m,m+=8,p+=T[r++]<<m,m+=8),y=g[p&v];dodist:for(;;){if(b=y>>>24,p>>>=b,m-=b,b=y>>>16&255,b&16){if(S=y&65535,b&=15,m<b&&(p+=T[r++]<<m,m+=8,m<b&&(p+=T[r++]<<m,m+=8)),S+=p&(1<<b)-1,S>c){e.msg=`invalid distance too far back`,n.mode=v_;break top}if(p>>>=b,m-=b,b=a-o,S>b){if(b=S-b,b>u&&n.sane){e.msg=`invalid distance too far back`,n.mode=v_;break top}if(C=0,w=f,d===0){if(C+=l-b,b<x){x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}}else if(d<b){if(C+=l+d-b,b-=d,b<x){x-=b;do E[a++]=f[C++];while(--b);if(C=0,d<x){b=d,x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}}}else if(C+=d-b,b<x){x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}for(;x>2;)E[a++]=w[C++],E[a++]=w[C++],E[a++]=w[C++],x-=3;x&&(E[a++]=w[C++],x>1&&(E[a++]=w[C++]))}else{C=a-S;do E[a++]=E[C++],E[a++]=E[C++],E[a++]=E[C++],x-=3;while(x>2);x&&(E[a++]=E[C++],x>1&&(E[a++]=E[C++]))}}else if(b&64){e.msg=`invalid distance code`,n.mode=v_;break top}else{y=g[(y&65535)+(p&(1<<b)-1)];continue dodist}break}}else if(!(b&64)){y=h[(y&65535)+(p&(1<<b)-1)];continue dolen}else if(b&32){n.mode=y_;break top}else{e.msg=`invalid literal/length code`,n.mode=v_;break top}break}}while(r<i&&a<s);x=m>>3,r-=x,m-=x<<3,p&=(1<<m)-1,e.next_in=r,e.next_out=a,e.avail_in=r<i?5+(i-r):5-(r-i),e.avail_out=a<s?257+(s-a):257-(a-s),n.hold=p,n.bits=m}var v_,y_,b_=n((()=>{v_=30,y_=12}));function x_(e,t,n,r,i,a,o,s){var c=s.bits,l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=0,v=0,y,b,x,S,C,w=null,T=0,E,D=Zg(S_+1),ee=Zg(S_+1),te=null,ne=0,re,ie,ae;for(l=0;l<=S_;l++)D[l]=0;for(u=0;u<r;u++)D[t[n+u]]++;for(p=c,f=S_;f>=1&&D[f]===0;f--);if(p>f&&(p=f),f===0)return i[a++]=20971520,i[a++]=20971520,s.bits=1,0;for(d=1;d<f&&D[d]===0;d++);for(p<d&&(p=d),g=1,l=1;l<=S_;l++)if(g<<=1,g-=D[l],g<0)return-1;if(g>0&&(e===T_||f!==1))return-1;for(ee[1]=0,l=1;l<S_;l++)ee[l+1]=ee[l]+D[l];for(u=0;u<r;u++)t[n+u]!==0&&(o[ee[t[n+u]]++]=u);if(e===T_?(w=te=o,E=19):e===E_?(w=O_,T-=257,te=k_,ne-=257,E=256):(w=A_,te=j_,E=-1),v=0,u=0,l=d,C=a,m=p,h=0,x=-1,_=1<<p,S=_-1,e===E_&&_>C_||e===D_&&_>w_)return 1;for(;;){re=l-h,o[u]<E?(ie=0,ae=o[u]):o[u]>E?(ie=te[ne+o[u]],ae=w[T+o[u]]):(ie=96,ae=0),y=1<<l-h,b=1<<m,d=b;do b-=y,i[C+(v>>h)+b]=re<<24|ie<<16|ae|0;while(b!==0);for(y=1<<l-1;v&y;)y>>=1;if(y===0?v=0:(v&=y-1,v+=y),u++,--D[l]===0){if(l===f)break;l=t[n+o[u]]}if(l>p&&(v&S)!==x){for(h===0&&(h=p),C+=d,m=l-h,g=1<<m;m+h<f&&(g-=D[m+h],!(g<=0));)m++,g<<=1;if(_+=1<<m,e===E_&&_>C_||e===D_&&_>w_)return 1;x=v&S,i[x]=p<<24|m<<16|C-a|0}}return v!==0&&(i[C+v]=l-h<<24|4194304),s.bits=p,0}var S_,C_,w_,T_,E_,D_,O_,k_,A_,j_,M_=n((()=>{$g(),S_=15,C_=852,w_=592,T_=0,E_=1,D_=2,O_=[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],k_=[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],A_=[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],j_=[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 N_(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function P_(){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=Zg(320),this.work=Zg(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function F_(e){var t;return!e||!e.state?ev:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=``,t.wrap&&(e.adler=t.wrap&1),t.mode=av,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=Qg(Iv),t.distcode=t.distdyn=Qg(Lv),t.sane=1,t.back=-1,Z_)}function I_(e){var t;return!e||!e.state?ev:(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,F_(e))}function L_(e,t){var n,r;return!e||!e.state||(r=e.state,t<0?(n=0,t=-t):(n=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?ev:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,I_(e))}function R_(e,t){var n,r;return e?(r=new P_,e.state=r,r.window=null,n=L_(e,t),n!==Z_&&(e.state=null),n):ev}function z_(e){if(Rv){var t;for(zv=Qg(512),Bv=Qg(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(x_(K_,e.lens,0,288,zv,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;x_(q_,e.lens,0,32,Bv,0,e.work,{bits:5}),Rv=!1}e.lencode=zv,e.lenbits=9,e.distcode=Bv,e.distbits=5}function B_(e,t,n,r){var i,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=Xg(a.wsize)),r>=a.wsize?(Jg(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),Jg(a.window,t,n-r,i,a.wnext),r-=i,r?(Jg(a.window,t,n-r,r,0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0}function V_(e,t){var n,r,i,a,o,s,c,l,u,d,f,p,m,h,g=0,_,v,y,b,x,S,C,w,T=Xg(4),E,D,ee=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return ev;n=e.state,n.mode===gv&&(n.mode=_v),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,d=s,f=c,w=Z_;inf_leave:for(;;)switch(n.mode){case av:if(n.wrap===0){n.mode=_v;break}for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.wrap&2&&l===35615){n.check=0,T[0]=l&255,T[1]=l>>>8&255,n.check=m_(n.check,T,2,0),l=0,u=0,n.mode=ov;break}if(n.flags=0,n.head&&(n.head.done=!1),!(n.wrap&1)||(((l&255)<<8)+(l>>8))%31){e.msg=`incorrect header check`,n.mode=B;break}if((l&15)!==iv){e.msg=`unknown compression method`,n.mode=B;break}if(l>>>=4,u-=4,C=(l&15)+8,n.wbits===0)n.wbits=C;else if(C>n.wbits){e.msg=`invalid window size`,n.mode=B;break}n.dmax=1<<C,e.adler=n.check=1,n.mode=l&512?mv:gv,l=0,u=0;break;case ov:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.flags=l,(n.flags&255)!==iv){e.msg=`unknown compression method`,n.mode=B;break}if(n.flags&57344){e.msg=`unknown header flags set`,n.mode=B;break}n.head&&(n.head.text=l>>8&1),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=m_(n.check,T,2,0)),l=0,u=0,n.mode=sv;case sv:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.time=l),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,T[2]=l>>>16&255,T[3]=l>>>24&255,n.check=m_(n.check,T,4,0)),l=0,u=0,n.mode=cv;case cv:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.xflags=l&255,n.head.os=l>>8),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=m_(n.check,T,2,0)),l=0,u=0,n.mode=lv;case lv:if(n.flags&1024){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length=l,n.head&&(n.head.extra_len=l),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=m_(n.check,T,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=uv;case uv:if(n.flags&1024&&(p=n.length,p>s&&(p=s),p&&(n.head&&(C=n.head.extra_len-n.length,n.head.extra||(n.head.extra=Array(n.head.extra_len)),Jg(n.head.extra,r,a,p,C)),n.flags&512&&(n.check=m_(n.check,r,p,a)),s-=p,a+=p,n.length-=p),n.length))break inf_leave;n.length=0,n.mode=dv;case dv:if(n.flags&2048){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.name+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&(n.check=m_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.name=null);n.length=0,n.mode=fv;case fv:if(n.flags&4096){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.comment+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&(n.check=m_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.comment=null);n.mode=pv;case pv:if(n.flags&512){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l!==(n.check&65535)){e.msg=`header crc mismatch`,n.mode=B;break}l=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=gv;break;case mv:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}e.adler=n.check=N_(l),l=0,u=0,n.mode=hv;case hv:if(n.havedict===0)return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,$_;e.adler=n.check=1,n.mode=gv;case gv:if(t===Y_||t===X_)break inf_leave;case _v:if(n.last){l>>>=u&7,u-=u&7,n.mode=jv;break}for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}switch(n.last=l&1,l>>>=1,--u,l&3){case 0:n.mode=vv;break;case 1:if(z_(n),n.mode=wv,t===X_){l>>>=2,u-=2;break inf_leave}break;case 2:n.mode=xv;break;case 3:e.msg=`invalid block type`,n.mode=B}l>>>=2,u-=2;break;case vv:for(l>>>=u&7,u-=u&7;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if((l&65535)!=(l>>>16^65535)){e.msg=`invalid stored block lengths`,n.mode=B;break}if(n.length=l&65535,l=0,u=0,n.mode=yv,t===X_)break inf_leave;case yv:n.mode=bv;case bv:if(p=n.length,p){if(p>s&&(p=s),p>c&&(p=c),p===0)break inf_leave;Jg(i,r,a,p,o),s-=p,a+=p,c-=p,o+=p,n.length-=p;break}n.mode=gv;break;case xv:for(;u<14;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.nlen=(l&31)+257,l>>>=5,u-=5,n.ndist=(l&31)+1,l>>>=5,u-=5,n.ncode=(l&15)+4,l>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg=`too many length or distance symbols`,n.mode=B;break}n.have=0,n.mode=Sv;case Sv:for(;n.have<n.ncode;){for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.lens[ee[n.have++]]=l&7,l>>>=3,u-=3}for(;n.have<19;)n.lens[ee[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,E={bits:n.lenbits},w=x_(G_,n.lens,0,19,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid code lengths set`,n.mode=B;break}n.have=0,n.mode=Cv;case Cv:for(;n.have<n.nlen+n.ndist;){for(;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(y<16)l>>>=_,u-=_,n.lens[n.have++]=y;else{if(y===16){for(D=_+2;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l>>>=_,u-=_,n.have===0){e.msg=`invalid bit length repeat`,n.mode=B;break}C=n.lens[n.have-1],p=3+(l&3),l>>>=2,u-=2}else if(y===17){for(D=_+3;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=3+(l&7),l>>>=3,u-=3}else{for(D=_+7;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=11+(l&127),l>>>=7,u-=7}if(n.have+p>n.nlen+n.ndist){e.msg=`invalid bit length repeat`,n.mode=B;break}for(;p--;)n.lens[n.have++]=C}}if(n.mode===B)break;if(n.lens[256]===0){e.msg=`invalid code -- missing end-of-block`,n.mode=B;break}if(n.lenbits=9,E={bits:n.lenbits},w=x_(K_,n.lens,0,n.nlen,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid literal/lengths set`,n.mode=B;break}if(n.distbits=6,n.distcode=n.distdyn,E={bits:n.distbits},w=x_(q_,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,E),n.distbits=E.bits,w){e.msg=`invalid distances set`,n.mode=B;break}if(n.mode=wv,t===X_)break inf_leave;case wv:n.mode=Tv;case Tv:if(s>=6&&c>=258){e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,__(e,f),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,n.mode===gv&&(n.back=-1);break}for(n.back=0;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(v&&!(v&240)){for(b=_,x=v,S=y;g=n.lencode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,n.length=y,v===0){n.mode=Av;break}if(v&32){n.back=-1,n.mode=gv;break}if(v&64){e.msg=`invalid literal/length code`,n.mode=B;break}n.extra=v&15,n.mode=Ev;case Ev:if(n.extra){for(D=n.extra;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Dv;case Dv:for(;g=n.distcode[l&(1<<n.distbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(!(v&240)){for(b=_,x=v,S=y;g=n.distcode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,v&64){e.msg=`invalid distance code`,n.mode=B;break}n.offset=y,n.extra=v&15,n.mode=Ov;case Ov:if(n.extra){for(D=n.extra;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.offset+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg=`invalid distance too far back`,n.mode=B;break}n.mode=kv;case kv:if(c===0)break inf_leave;if(p=f-c,n.offset>p){if(p=n.offset-p,p>n.whave&&n.sane){e.msg=`invalid distance too far back`,n.mode=B;break}p>n.wnext?(p-=n.wnext,m=n.wsize-p):m=n.wnext-p,p>n.length&&(p=n.length),h=n.window}else h=i,m=o-n.offset,p=n.length;p>c&&(p=c),c-=p,n.length-=p;do i[o++]=h[m++];while(--p);n.length===0&&(n.mode=Tv);break;case Av:if(c===0)break inf_leave;i[o++]=n.length,c--,n.mode=Tv;break;case jv:if(n.wrap){for(;u<32;){if(s===0)break inf_leave;s--,l|=r[a++]<<u,u+=8}if(f-=c,e.total_out+=f,n.total+=f,f&&(e.adler=n.check=n.flags?m_(n.check,i,f,o-f):d_(n.check,i,f,o-f)),f=c,(n.flags?l:N_(l))!==n.check){e.msg=`incorrect data check`,n.mode=B;break}l=0,u=0}n.mode=Mv;case Mv:if(n.wrap&&n.flags){for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l!==(n.total&4294967295)){e.msg=`incorrect length check`,n.mode=B;break}l=0,u=0}n.mode=Nv;case Nv:w=Q_;break inf_leave;case B:w=tv;break inf_leave;case Pv:return nv;case Fv:default:return ev}return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,(n.wsize||f!==e.avail_out&&n.mode<B&&(n.mode<jv||t!==J_))&&B_(e,e.output,e.next_out,f-e.avail_out)?(n.mode=Pv,nv):(d-=e.avail_in,f-=e.avail_out,e.total_in+=d,e.total_out+=f,n.total+=f,n.wrap&&f&&(e.adler=n.check=n.flags?m_(n.check,i,f,e.next_out-f):d_(n.check,i,f,e.next_out-f)),e.data_type=n.bits+(n.last?64:0)+(n.mode===gv?128:0)+(n.mode===wv||n.mode===yv?256:0),(d===0&&f===0||t===J_)&&w===Z_&&(w=rv),w)}function H_(e){if(!e||!e.state)return ev;var t=e.state;return t.window&&=null,e.state=null,Z_}function U_(e,t){var n;return!e||!e.state||(n=e.state,!(n.wrap&2))?ev:(n.head=t,t.done=!1,Z_)}function W_(e,t){var n=t.length,r,i,a;return!e||!e.state||(r=e.state,r.wrap!==0&&r.mode!==hv)?ev:r.mode===hv&&(i=1,i=d_(i,t,n,0),i!==r.check)?tv:(a=B_(e,t,n,n),a?(r.mode=Pv,nv):(r.havedict=1,Z_))}var G_,K_,q_,J_,Y_,X_,Z_,Q_,$_,ev,tv,nv,rv,iv,av,ov,sv,cv,lv,uv,dv,fv,pv,mv,hv,gv,_v,vv,yv,bv,xv,Sv,Cv,wv,Tv,Ev,Dv,Ov,kv,Av,jv,Mv,Nv,B,Pv,Fv,Iv,Lv,Rv,zv,Bv,Vv=n((()=>{f_(),g_(),b_(),M_(),$g(),G_=0,K_=1,q_=2,J_=4,Y_=5,X_=6,Z_=0,Q_=1,$_=2,ev=-2,tv=-3,nv=-4,rv=-5,iv=8,av=1,ov=2,sv=3,cv=4,lv=5,uv=6,dv=7,fv=8,pv=9,mv=10,hv=11,gv=12,_v=13,vv=14,yv=15,bv=16,xv=17,Sv=18,Cv=19,wv=20,Tv=21,Ev=22,Dv=23,Ov=24,kv=25,Av=26,jv=27,Mv=28,Nv=29,B=30,Pv=31,Fv=32,Iv=852,Lv=592,Rv=!0})),Hv,Uv=n((()=>{Hv={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 Wv(){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 Gv=n((()=>{}));function Kv(e,t){var n=new Jv(t);if(n.push(e,!0),n.err)throw n.msg||Hv[n.err];return n.result}var qv,Jv,Yv,Xv=n((()=>{$g(),c_(),Vg(),u_(),Vv(),Uv(),Gv(),qv=Object.prototype.toString,Jv=class e{constructor(t){if(!(this instanceof e))return new e(t);this.options=Ug({chunkSize:16384,windowBits:0,to:``},t||{});var n=this.options;n.raw&&n.windowBits>=0&&n.windowBits<16&&(n.windowBits=-n.windowBits,n.windowBits===0&&(n.windowBits=-15)),n.windowBits>=0&&n.windowBits<16&&!(t&&t.windowBits)&&(n.windowBits+=32),n.windowBits>15&&n.windowBits<48&&(n.windowBits&15||(n.windowBits|=15)),this.err=0,this.msg=``,this.ended=!1,this.chunks=[],this.strm=new Wv,this.strm.avail_out=0;var r=R_(this.strm,n.windowBits);if(r!==0||(this.header=new l_,U_(this.strm,this.header),n.dictionary&&(typeof n.dictionary==`string`?n.dictionary=e_(n.dictionary):qv.call(n.dictionary)===`[object ArrayBuffer]`&&(n.dictionary=new Uint8Array(n.dictionary)),n.raw&&(r=W_(this.strm,n.dictionary),r!==0))))throw Error(Hv[r])}push(e,t){var n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,o,s,c,l,u,d=!1;if(this.ended)return!1;o=t===~~t?t:t===!0?4:0,typeof e==`string`?n.input=n_(e):qv.call(e)===`[object ArrayBuffer]`?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=Xg(r),n.next_out=0,n.avail_out=r),a=V_(n,0),a===2&&i&&(u=typeof i==`string`?e_(i):qv.call(i)===`[object ArrayBuffer]`?new Uint8Array(i):i,a=W_(this.strm,u)),a===-5&&d===!0&&(a=0,d=!1),a!==1&&a!==0)return this.onEnd(a),this.ended=!0,!1;n.next_out&&(n.avail_out===0||a===1||n.avail_in===0&&(o===4||o===2))&&(this.options.to===`string`?(s=i_(n.output,n.next_out),c=n.next_out-s,l=r_(n.output,s),n.next_out=c,n.avail_out=r-c,c&&Jg(n.output,n.output,s,c,0),this.onData(l)):this.onData(Wg(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(d=!0)}while((n.avail_in>0||n.avail_out===0)&&a!==1);return a===1&&(o=4),o===4?(a=H_(this.strm),this.onEnd(a),this.ended=!0,a===0):o===2?(this.onEnd(0),n.avail_out=0,!0):!0}onData(e){this.chunks.push(e)}onEnd(e){e===0&&(this.options.to===`string`?this.result=this.chunks.join(``):this.result=Yg(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}},Yv=Kv})),Zv=n((()=>{})),Qv=n((()=>{Vg(),Xv(),Zv()}));function $v(e){try{let a=V.__wbindgen_add_to_stack_pointer(-16),o=py(e,V.__wbindgen_export2),s=Fy;V.decompress_all(a,o,s);var t=cy().getInt32(a+0,!0),n=cy().getInt32(a+4,!0),r=cy().getInt32(a+8,!0);if(cy().getInt32(a+12,!0))throw my(r);var i=sy(t,n).slice();return V.__wbindgen_export(t,n*1,1),i}finally{V.__wbindgen_add_to_stack_pointer(16)}}function ey(e){try{let r=V.__wbindgen_add_to_stack_pointer(-16),i=py(e,V.__wbindgen_export2),a=Fy;V.decompress_block(r,i,a);var t=cy().getInt32(r+0,!0),n=cy().getInt32(r+4,!0);if(cy().getInt32(r+8,!0))throw my(n);return wy.__wrap(t)}finally{V.__wbindgen_add_to_stack_pointer(16)}}function ty(e,t,n,r,i){try{let s=V.__wbindgen_add_to_stack_pointer(-16),c=py(e,V.__wbindgen_export2),l=Fy;V.decompress_chunk_slice(s,c,l,t,n,r,i);var a=cy().getInt32(s+0,!0),o=cy().getInt32(s+4,!0);if(cy().getInt32(s+8,!0))throw my(o);return Cy.__wrap(a)}finally{V.__wbindgen_add_to_stack_pointer(16)}}function ny(e,t){return iy(Error(uy(e,t)))}function ry(e,t){throw Error(uy(e,t))}function iy(e){jy===Ay.length&&Ay.push(Ay.length+1);let t=jy;return jy=Ay[t],Ay[t]=e,t}function ay(e){e<132||(Ay[e]=jy,jy=e)}function oy(e,t){return e>>>=0,ly().subarray(e/8,e/8+t)}function sy(e,t){return e>>>=0,dy().subarray(e/1,e/1+t)}function cy(){return(Dy===null||Dy.buffer.detached===!0||Dy.buffer.detached===void 0&&Dy.buffer!==V.memory.buffer)&&(Dy=new DataView(V.memory.buffer)),Dy}function ly(){return(Oy===null||Oy.byteLength===0)&&(Oy=new Float64Array(V.memory.buffer)),Oy}function uy(e,t){return e>>>=0,hy(e,t)}function dy(){return(ky===null||ky.byteLength===0)&&(ky=new Uint8Array(V.memory.buffer)),ky}function fy(e){return Ay[e]}function py(e,t){let n=t(e.length*1,1)>>>0;return dy().set(e,n/1),Fy=e.length,n}function my(e){let t=fy(e);return ay(e),t}function hy(e,t){return Py+=t,Py>=Ny&&(My=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),My.decode(),Py=t),My.decode(dy().subarray(e,e+t))}function gy(e){V=e}async function _y(){return Iy||(Ly||=(async()=>{let e=await(await fetch(Sy)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":xy});return Iy=t.exports,gy(Iy),Iy})(),Ly)}async function vy(e){return await _y(),$v(e)}async function yy(e,t,n,r,i){await _y();let a=ty(e,t,n,r,i),o=a.buffer,s=[...a.cpositions],c=[...a.dpositions];return a.free(),{buffer:o,cpositions:s,dpositions:c}}var by,xy,Sy,Cy,wy,Ty,Ey,Dy,Oy,ky,Ay,jy,My,Ny,Py,Fy,V,Iy,Ly,Ry=n((()=>{by={},by.d=(e,t)=>{for(var n in t)by.o(t,n)&&!by.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},by.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),by.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},xy={},by.r(xy),by.d(xy,{ChunkSliceResult:()=>Cy,DecompressResult:()=>wy,__wbg_Error_8c4e43fe74559d73:()=>ny,__wbg___wbindgen_throw_be289d5034ed271b:()=>ry,__wbg_set_wasm:()=>gy,decompress_all:()=>$v,decompress_block:()=>ey,decompress_chunk_slice:()=>ty}),Sy=`data:application/wasm;base64,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AAsgASADNgIEIAEgAjYCACABQfiSwAAgACgCBCAAKAIIIgAtAAggAC0ACRAeAAuLAQEBfyMAQRBrIgMkAAJAIAIgAWoiASACTw0AQQBBABBNAAsgA0EEaiAAKAIAIgIgACgCBCABIAJBAXQiAiABIAJLGyICQQggAkEISxsiAkEBQQEQIAJAIAMoAgRBAUcNACADKAIIIAMoAgwQTQALIAMoAgghASAAIAI2AgAgACABNgIEIANBEGokAAuHAQEBfyMAQSBrIgIkAAJAAkAgACgCAEGAgICAeEYNACABIAAoAgQgACgCCBBSIQAMAQsgAkEIakEIaiAAKAIMKAIAIgBBCGopAgA3AwAgAkEIakEQaiAAQRBqKQIANwMAIAIgACkCADcDCCABKAIAIAEoAgQgAkEIahALIQALIAJBIGokACAAC3wBAX8CQCAAKAIAIgAoAgwiAUUNACAAKAIQIAFBARBWCwJAIAAoAhgiAUUNACAAKAIcIAFBA3RBCBBWCwJAIAAoAiQiAUUNACAAKAIoIAFBA3RBCBBWCwJAIABBf0YNACAAIAAoAgRBf2oiATYCBCABDQAgAEEwQQQQVgsLhAEBAn8jAEEQayIGJABBACEHIAZBADYCDAJAAkACQAJAAkAgASgCACACIAMgBCAFIAZBDGoQUA4EAQIAAwALQZCFwABB7ABB/IXAABA/AAsgACAGKAIMNgIEDAILIABBADoAAUEBIQcMAQtBASEHIABBAToAAQsgACAHOgAAIAZBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgQgAkEBdCICQQQgAkEESxsiAkEIQQgQIAJAIAEoAgRBAUcNACABKAIIIAEoAgwQTQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtoAQF/IwBBMGsiAiQAAkAQaEH/AXENACACQTBqJAAPCyACIAE2AiQgAkECNgIQIAJBpJLAADYCDCACQgE3AhggAkEErUIghiACQSRqrYQ3AyggAiACQShqNgIUIAJBDGpBtJLAABBAAAtoAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0GcmMAANgIIIANCAjcCFCADQQStQiCGIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhBA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ABWAAAAWgAAAF4AAABiAAAAZgAAAGoAAABuAAAAcgAAAHYAAAB6AAAAfgAAAIIAAACGAAAAigAAAI4AAACSAAAAlgAAAJoAAACeAAAAogAAAKYAAACqAAAArgAAALIAAAC2AAAAugAAAL4AAADCAAAAxgAAAMoAAADOAAAA0gAAANYAAADaAAAA3gAAAOIAAADmAAAA6gAAAO4AAADyAAAA9gAAAPoAAAD+AAABAgAAAQYAAAEKAAABDgAAARIAAAEWAAABGgAAAR4AAAEiAAABJgAAASoAAAEuAAABMgAAATYAAAE6AAABPgAAAUIAAAFGAAABSgAAAU4AAAFSAAABVgAAAVoAAAFeAAABYgAAAWYAAAFqAAABbgAAAXIAAAF2AAABegAAAX4AAAGCAAABhgAAAYoAAAGOAAABkgAAAZYAAAGaAAABngAAAaIAAAGmAAABqgAAAa4AAAGyAAABtgAAAboAAAG+AAABwgAAAcYAAAHKAAABzgAAAdIAAAHWAAAB2gAAAd4AAAHiAAAB5gAAAeoAAAHuAAAB8gAAAfYAAAH6AAAB/gAAAgIAAAIGAAACCgAAAg4AAAISAAACFgAAAhoAAAIeAAACIgAAAiYAAAIqAAACLgAAAjIAAAI2AAACOgAAAj4AAAJCAAACRgAAAkoAAAJOAAACUgAAAlYAAAJaAAACXgAAAmIAAAJmAAACagAAAm4AAAJyAAACdgAAAnoAAAJ+AAACggAAAoYAAAKKAAACjgAAApIAAAKWAAACmgAAAp4AAAKiAAACpgAAAqoAAAKuAAACsgAAArYAAAK6AAACvgAAAsIAAALGAAACygAAAs4AAALSAAAC1gAAAtoAAALeAAAC4gAAAuYAAALqAAAC7gAAAvIAAAL2AAAC+gAAAv4AAAMCAAADBgAAAwoAAAMOAAADEgAAAxYAAAMaAAADHgAAAyIAAAMmAAADKgAAAy4AAAMyAAADNgAAAzoAAAM+AAADQgAAA0YAAANKAAADTgAAA1IAAANWAAADWgAAA14AAANiAAADZgAAA2oAAANuAAADcgAAA3YAAAN6AAADfgAAA4IAAAOGAAADigAAA44AAAOSAAADlgAAA5oAAAOeAAADogAAA6YAAAOqAAADrgAAA7IAAAO2AAADugAAA74AAAPCAAADxgAAA8oAAAPOAAAD0gAAA9YAAAPaAAAD3gAAA+IAAAPmAAAD6gAAA+4AAAPyAAAD9gAAA/oAAAP+AAKAAAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAQALAAEADQABAA8AAQARAAIAEwACABcAAgAbAAIAHwADACMAAwArAAMAMwADADsABABDAAQAUwAEAGMABABzAAUAgwAFAKMABQDDAAUA4wAAAAIBAAACAQAAAgF8/YsyV+ZX+QLfRL/jSOevbV3L1ixQ62N4QaZXcRuLuW1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQAAAAJEAAVAAAAFQkQAA0AAAAGARAAGAAAAGQBAAAJAAAAAAAAAAgAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAMAAAABAAAAAoAAAALAAAADAAAAAAAAAAIAAAABAAAAA0AAAAOAAAADwAAABAAAAARAAAAEAAAAAQAAAASAAAAEwAAABQAAAAIAAAAAAAAAAgAAAAEAAAAFQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAANsAEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADbABAAKgAAALcEAAANAAAACQAAAAwAAAAEAAAAFgAAAGNhcGFjaXR5IG92ZXJmbG93AAAAUAoQABEAAAC6ABAAIAAAABwAAAAFAAAAAQAAAAAAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OXJhbmdlIGVuZCBpbmRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAABMCxAAEAAAAFwLEAAiAAAAc2xpY2UgaW5kZXggc3RhcnRzIGF0ICBidXQgZW5kcyBhdCAAkAsQABYAAACmCxAADQAAAHJhbmdlIHN0YXJ0IGluZGV4IAAAxAsQABIAAABcCxAAIgAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAADoCxAAIAAAAAgMEAASAAAAUmVmQ2VsbCBhbHJlYWR5IGJvcnJvd2VkAEHEmMAACwQEAAAAACkEbmFtZQEiAVgfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgA8CXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yNC40DHdhc20tYmluZGdlbgcwLjIuMTA4`,Cy=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ty.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ty.unregister(this),e}free(){let e=this.__destroy_into_raw();V.__wbg_chunksliceresult_free(e,0)}get buffer(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.chunksliceresult_buffer(r,this.__wbg_ptr);var e=cy().getInt32(r+0,!0),t=cy().getInt32(r+4,!0),n=sy(e,t).slice();return V.__wbindgen_export(e,t*1,1),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}get cpositions(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.chunksliceresult_cpositions(r,this.__wbg_ptr);var e=cy().getInt32(r+0,!0),t=cy().getInt32(r+4,!0),n=oy(e,t).slice();return V.__wbindgen_export(e,t*8,8),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}get dpositions(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.chunksliceresult_dpositions(r,this.__wbg_ptr);var e=cy().getInt32(r+0,!0),t=cy().getInt32(r+4,!0),n=oy(e,t).slice();return V.__wbindgen_export(e,t*8,8),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(Cy.prototype[Symbol.dispose]=Cy.prototype.free),wy=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ey.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ey.unregister(this),e}free(){let e=this.__destroy_into_raw();V.__wbg_decompressresult_free(e,0)}get bytes_read(){return V.decompressresult_bytes_read(this.__wbg_ptr)>>>0}get data(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.decompressresult_data(r,this.__wbg_ptr);var e=cy().getInt32(r+0,!0),t=cy().getInt32(r+4,!0),n=sy(e,t).slice();return V.__wbindgen_export(e,t*1,1),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(wy.prototype[Symbol.dispose]=wy.prototype.free),Ty=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>V.__wbg_chunksliceresult_free(e>>>0,1)),Ey=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>V.__wbg_decompressresult_free(e>>>0,1)),Dy=null,Oy=null,ky=null,Ay=Array(128).fill(void 0),Ay.push(void 0,null,!0,!1),jy=Ay.length,My=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),My.decode(),Ny=2146435072,Py=0,Fy=0,Iy=null,Ly=null}));function zy(e){return e.length>=2&&e[0]===31&&e[1]===139}async function By(e){if(typeof DecompressionStream<`u`){let t=new DecompressionStream(`gzip`),n=t.writable.getWriter(),r=n.write(e).then(()=>n.close()),i=[],a=t.readable.getReader();for(;;){let{done:e,value:t}=await a.read();if(e)break;i.push(t)}await r;let o=i.reduce((e,t)=>e+t.length,0),s=new Uint8Array(o),c=0;for(let e of i)s.set(e,c),c+=e.length;return s}else return Yv(e,void 0)}async function Vy(e){try{return await vy(e)}catch(t){if(/invalid bgzf header/.exec(`${t}`)){if(zy(e))return By(e);throw Error(`problem decompressing block: not a valid bgzf or gzip block`)}throw/invalid gzip header/.exec(`${t}`)?Error(`problem decompressing block: incorrect gzip header check`):t}}async function Hy(e,t,n){try{let{minv:n,maxv:r}=t,i=await yy(e,n.blockPosition,n.dataPosition,r.blockPosition,r.dataPosition);return{buffer:i.buffer,cpositions:i.cpositions,dpositions:i.dpositions}}catch(e){throw/invalid gzip header/.exec(`${e}`)?Error(`problem decompressing block: incorrect gzip header check`):e}}var Uy=n((()=>{Qv(),Ry()}));function Wy(e){let t=0;for(let n of e)t+=n.length;return t}function Gy(e,t){let n=new Uint8Array(t??Wy(e)),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Ky=n((()=>{})),qy,Jy=n((()=>{Bg(),Uy(),Ky(),qy=class{filehandle;gzi;constructor({filehandle:e,gziFilehandle:t}){this.filehandle=e,this.gzi=new zg({filehandle:t})}async _readAndUncompressBlock(e,t){let n=t;n||=(await this.filehandle.stat()).size;let r=n-e;return Vy(await this.filehandle.read(r,e))}async read(e,t){let n=await this.gzi.getRelevantBlocksForRead(e,t),r=[];for(let i=0;i<n.length-1;i+=1){let a=await this._readAndUncompressBlock(n[i][0],n[i+1][0]),[,o]=n[i],s=o>=t?0:t-o,c=Math.min(t+e,o+a.length)-o;s>=0&&s<a.length&&r.push(a.subarray(s,c))}return Gy(r)}}})),Yy=n((()=>{Jy(),Uy()}));function Xy(e,t,n,r){return e+t*Math.floor(r/n)+r%n}async function Zy(e,t={}){let n=new TextDecoder(`utf8`).decode(await e.readFile(t)),r=[],i=[],a=[],o=[],s=[],c={},l=0,u=n.length,d=0;for(;l<u;){let e=n.indexOf(`
|
|
193
|
-
`,l);e===-1&&(e=u);let t=n.slice(l,e);if(t.endsWith(`\r`)&&(t=t.slice(0,-1)),t=t.trim(),l=e+1,t.length===0)continue;let f=t.indexOf(` `),p=t.indexOf(` `,f+1),m=t.indexOf(` `,p+1),h=t.indexOf(` `,m+1),g=t.slice(0,f);if(g.startsWith(`>`))throw Error(`found > in sequence name, might have supplied FASTA file for the FASTA index`);r.push(g),a.push(+t.slice(f+1,p)),i.push(+t.slice(p+1,m)),o.push(+t.slice(m+1,h)),s.push(+t.slice(h+1)),c[g]=d,d++}return{names:r,nameToIndex:c,offsets:i,lengths:a,lineLengths:o,lineBytes:s}}var
|
|
194
|
-
`),[r,...i]=t.split(` `),a=n.join(``).replace(/\s/g,``);return{id:r,description:i.join(` `),sequence:a}})}var ib,ab=n((()=>{Mg(),tb(),$y(),ib=class{constructor({fasta:e,path:t}){if(e)this.fasta=e;else if(t)this.fasta=new jg(t);else throw Error(`Need to pass fasta or path`);this.data=this.fasta.readFile().then(e=>rb(new TextDecoder(`utf8`).decode(e)))}async fetch(e,t,n){let r=(await this.data).find(t=>t.id===e),i=n-t;if(!r)throw Error(`no sequence with id ${e} exists`);return r.sequence.slice(t,i)}async getSequenceNames(){return(await this.data).map(e=>e.id)}}})),ob=class extends xg{constructor(e,t){let n={channel:`x`,windowSize:7e3,debounce:200,debounceMode:`window`,...e};if(super(t,n.channel),this.params=n,!this.params.url)throw Error(`No URL provided for IndexedFastaSource`);this.setupDebouncing(this.params),this.initializedPromise=new Promise(e=>{Promise.all([Promise.resolve().then(()=>(ab(),nb)),Promise.resolve().then(()=>(Mg(),Ag))]).then(([{IndexedFasta:t},{RemoteFile:n}])=>{let r=e=>new n(ih(e,this.view.getBaseUrl()));this.fasta=new t({fasta:r(this.params.url),fai:r(this.params.indexUrl??this.params.url+`.fai`)}),e()})})}get label(){return`bigWigSource`}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.fasta.getSequence(e.chrom,e.startPos,e.endPos,{signal:t}).then(t=>{if(t!=null)return{chrom:e.chrom,start:e.startPos,sequence:t};console.log(`No sequence found for interval ${e.chrom}:${e.startPos}-${e.endPos}`)}));this.publishData([t.filter(e=>e!==void 0)])}};function sb(e){return e?.type==`indexedFasta`}Gm(sb,ob);function cb(e,t,n){let r=Number(!!n),i=Number(!n);return BigInt(e.getInt32(t,n)*i+e.getInt32(t+4,n)*r)<<ub|BigInt(e.getUint32(t,n)*r+e.getUint32(t+4,n)*i)}function lb(e,t,n){let r=e.getUint32(t,n),i=e.getUint32(t+4,n),a=Number(!!n),o=Number(!n);return BigInt(r*o+i*a)<<ub|BigInt(r*a+i*o)}var ub,db=n((()=>{ub=BigInt(32)})),fb,pb=n((()=>{db(),fb=(e,t)=>t in e,fb(DataView.prototype,`getBigInt64`)||(DataView.prototype.getBigInt64=function(e,t){return cb(this,e,t)}),fb(DataView.prototype,`getBigUint64`)||(DataView.prototype.getBigUint64=function(e,t){return lb(this,e,t)})})),mb,hb,gb=n((()=>{mb=class{},hb=class{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(e=new mb){if(this.signal.aborted)throw 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()}}})),_b,vb=n((()=>{_b=class{constructor(){this.callbacks=new Set}addCallback(e=()=>{}){this.callbacks.add(e),this.currentMessage&&e(this.currentMessage)}callback(e){this.currentMessage=e;for(let t of this.callbacks)t(e)}}})),yb,bb=n((()=>{gb(),vb(),yb=class e{constructor({fill:e,cache:t}){if(typeof e!=`function`)throw TypeError(`must pass a fill function`);if(typeof t!=`object`)throw TypeError(`must pass a cache object`);if(typeof t.get!=`function`||typeof t.set!=`function`||typeof t.delete!=`function`)throw 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,n,r){let i=new hb,a=new _b;a.addCallback(r);let o={aborter:i,promise:this.fillCallback(t,i.signal,e=>{a.callback(e)}),settled:!1,statusReporter:a,get aborted(){return this.aborter.signal.aborted}};o.aborter.addSignal(n),o.aborter.signal.addEventListener(`abort`,()=>{o.settled||this.evict(e,o)}),o.promise.then(()=>{o.settled=!0},()=>{o.settled=!0,this.evict(e,o)}).catch(e=>{throw console.error(e),e}),this.cache.set(e,o)}static checkSinglePromise(e,t){function n(){if(t?.aborted)throw Object.assign(Error(`aborted`),{code:`ERR_ABORTED`})}return e.then(e=>(n(),e),e=>{throw n(),e})}has(e){return this.cache.has(e)}get(t,n,r,i){if(!r&&n instanceof AbortSignal)throw TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");let a=this.cache.get(t);return a?a.aborted&&!a.settled?(this.evict(t,a),this.get(t,n,r,i)):a.settled?a.promise:(a.aborter.addSignal(r),a.statusReporter.addCallback(i),e.checkSinglePromise(a.promise,r)):(this.fill(t,n,r,i),e.checkSinglePromise(this.cache.get(t).promise,r))}delete(e){let t=this.cache.get(e);t&&(t.settled||t.aborter.abort(),this.cache.delete(e))}clear(){let e=this.cache.keys(),t=0;for(let n=e.next();!n.done;n=e.next())this.delete(n.value),t+=1;return t}}})),xb=n((()=>{bb()})),Sb,H,U,Cb,W,wb,Tb,Eb,Db,Ob,kb,Ab,jb,Mb,Nb,Pb,Fb,Ib,Lb=n((()=>{Sb=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},H=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Ib=class extends Map{constructor(e={}){if(super(),U.add(this),Cb.set(this,0),W.set(this,new Map),wb.set(this,new Map),Tb.set(this,void 0),Eb.set(this,void 0),Db.set(this,void 0),!(e.maxSize&&e.maxSize>0))throw TypeError("`maxSize` must be a number greater than 0");if(typeof e.maxAge==`number`&&e.maxAge===0)throw TypeError("`maxAge` must be a number greater than 0");Sb(this,Tb,e.maxSize,`f`),Sb(this,Eb,e.maxAge||1/0,`f`),Sb(this,Db,e.onEviction,`f`)}get __oldCache(){return H(this,wb,`f`)}get(e){if(H(this,W,`f`).has(e)){let t=H(this,W,`f`).get(e);return H(this,U,`m`,jb).call(this,e,t)}if(H(this,wb,`f`).has(e)){let t=H(this,wb,`f`).get(e);if(!H(this,U,`m`,kb).call(this,e,t))return H(this,U,`m`,Pb).call(this,e,t),t.value}}set(e,t,{maxAge:n=H(this,Eb,`f`)}={}){let r=typeof n==`number`&&n!==1/0?Date.now()+n:void 0;return H(this,W,`f`).has(e)?H(this,W,`f`).set(e,{value:t,expiry:r}):H(this,U,`m`,Nb).call(this,e,{value:t,expiry:r}),this}has(e){return H(this,W,`f`).has(e)?!H(this,U,`m`,kb).call(this,e,H(this,W,`f`).get(e)):H(this,wb,`f`).has(e)?!H(this,U,`m`,kb).call(this,e,H(this,wb,`f`).get(e)):!1}peek(e){if(H(this,W,`f`).has(e))return H(this,U,`m`,Mb).call(this,e,H(this,W,`f`));if(H(this,wb,`f`).has(e))return H(this,U,`m`,Mb).call(this,e,H(this,wb,`f`))}expiresIn(e){let t=H(this,W,`f`).get(e)??H(this,wb,`f`).get(e);if(t)return t.expiry?t.expiry-Date.now():1/0}delete(e){var t;let n=H(this,W,`f`).delete(e);return n&&Sb(this,Cb,(t=H(this,Cb,`f`),t--,t),`f`),H(this,wb,`f`).delete(e)||n}clear(){H(this,W,`f`).clear(),H(this,wb,`f`).clear(),Sb(this,Cb,0,`f`)}resize(e){if(!(e&&e>0))throw TypeError("`maxSize` must be a number greater than 0");let t=[...H(this,U,`m`,Fb).call(this)],n=t.length-e;n<0?(Sb(this,W,new Map(t),`f`),Sb(this,wb,new Map,`f`),Sb(this,Cb,t.length,`f`)):(n>0&&H(this,U,`m`,Ob).call(this,t.slice(0,n)),Sb(this,wb,new Map(t.slice(n)),`f`),Sb(this,W,new Map,`f`),Sb(this,Cb,0,`f`)),Sb(this,Tb,e,`f`)}evict(e=1){let t=e;if(!t||t<=0)return;let n=[...H(this,U,`m`,Fb).call(this)],r=Math.trunc(Math.min(t,Math.max(n.length-1,0)));r<=0||(H(this,U,`m`,Ob).call(this,n.slice(0,r)),Sb(this,wb,new Map(n.slice(r)),`f`),Sb(this,W,new Map,`f`),Sb(this,Cb,0,`f`))}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[(Cb=new WeakMap,W=new WeakMap,wb=new WeakMap,Tb=new WeakMap,Eb=new WeakMap,Db=new WeakMap,U=new WeakSet,Ob=function(e){if(typeof H(this,Db,`f`)==`function`)for(let[t,n]of e)H(this,Db,`f`).call(this,t,n.value)},kb=function(e,t){return typeof t.expiry==`number`&&t.expiry<=Date.now()?(typeof H(this,Db,`f`)==`function`&&H(this,Db,`f`).call(this,e,t.value),this.delete(e)):!1},Ab=function(e,t){if(!H(this,U,`m`,kb).call(this,e,t))return t.value},jb=function(e,t){return t.expiry?H(this,U,`m`,Ab).call(this,e,t):t.value},Mb=function(e,t){let n=t.get(e);return H(this,U,`m`,jb).call(this,e,n)},Nb=function(e,t){var n;H(this,W,`f`).set(e,t),Sb(this,Cb,(n=H(this,Cb,`f`),n++,n),`f`),H(this,Cb,`f`)>=H(this,Tb,`f`)&&(Sb(this,Cb,0,`f`),H(this,U,`m`,Ob).call(this,H(this,wb,`f`)),Sb(this,wb,H(this,W,`f`),`f`),Sb(this,W,new Map,`f`))},Pb=function(e,t){H(this,wb,`f`).delete(e),H(this,U,`m`,Nb).call(this,e,t)},Fb=function*(){for(let e of H(this,wb,`f`)){let[t,n]=e;H(this,W,`f`).has(t)||H(this,U,`m`,kb).call(this,t,n)||(yield e)}for(let e of H(this,W,`f`)){let[t,n]=e;H(this,U,`m`,kb).call(this,t,n)||(yield e)}},Symbol.iterator)](){for(let e of H(this,W,`f`)){let[t,n]=e;H(this,U,`m`,kb).call(this,t,n)||(yield[t,n.value])}for(let e of H(this,wb,`f`)){let[t,n]=e;H(this,W,`f`).has(t)||H(this,U,`m`,kb).call(this,t,n)||(yield[t,n.value])}}*entriesDescending(){let e=[...H(this,W,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];H(this,U,`m`,kb).call(this,n,r)||(yield[n,r.value])}e=[...H(this,wb,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];H(this,W,`f`).has(n)||H(this,U,`m`,kb).call(this,n,r)||(yield[n,r.value])}}*entriesAscending(){for(let[e,t]of H(this,U,`m`,Fb).call(this))yield[e,t.value]}get size(){if(!H(this,Cb,`f`))return H(this,wb,`f`).size;let e=0;for(let t of H(this,wb,`f`).keys())H(this,W,`f`).has(t)||e++;return Math.min(H(this,Cb,`f`)+e,H(this,Tb,`f`))}get maxSize(){return H(this,Tb,`f`)}get maxAge(){return H(this,Eb,`f`)}entries(){return this.entriesAscending()}forEach(e,t=this){for(let[n,r]of this.entriesAscending())e.call(t,r,n,this)}get[Symbol.toStringTag](){return`QuickLRU`}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.toString()}}}));function Rb(e){if(e.length===0)return[];let t=e.toSorted((e,t)=>e.min-t.min),n=[],r=t[0];for(let e=1;e<t.length;e++){let i=t[e];i.min>r.max+1?(n.push(r),r=i):i.max>r.max&&(r={min:r.min,max:i.max})}return n.push(r),n}var zb=n((()=>{}));function Bb(e){var t=px[e];if(t!==void 0)return t.exports;var n=px[e]={exports:{}};return fx[e](n,n.exports,Bb),n.exports}function Vb(e,t,n,r,i,a){try{let u=G.__wbindgen_add_to_stack_pointer(-16),d=nx(e,G.__wbindgen_export),f=Tx,p=tx(t,G.__wbindgen_export),m=Tx,h=tx(n,G.__wbindgen_export),g=Tx;G.decompress_and_parse_bigwig(u,d,f,p,m,h,g,r,i,a);var o=Xb().getInt32(u+0,!0),s=Xb().getInt32(u+4,!0),c=Xb().getInt32(u+8,!0);if(Xb().getInt32(u+12,!0))throw rx(c);var l=Yb(o,s).slice();return G.__wbindgen_export2(o,s*1,1),l}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Hb(e,t,n,r,i,a,o){try{let d=G.__wbindgen_add_to_stack_pointer(-16),f=nx(e,G.__wbindgen_export),p=Tx,m=tx(t,G.__wbindgen_export),h=Tx,g=tx(n,G.__wbindgen_export),_=Tx;G.decompress_and_parse_summary(d,f,p,m,h,g,_,r,i,a,o);var s=Xb().getInt32(d+0,!0),c=Xb().getInt32(d+4,!0),l=Xb().getInt32(d+8,!0);if(Xb().getInt32(d+12,!0))throw rx(l);var u=Yb(s,c).slice();return G.__wbindgen_export2(s,c*1,1),u}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Ub(e,t){try{let o=G.__wbindgen_add_to_stack_pointer(-16),s=nx(e,G.__wbindgen_export),c=Tx;G.inflate_raw(o,s,c,t);var n=Xb().getInt32(o+0,!0),r=Xb().getInt32(o+4,!0),i=Xb().getInt32(o+8,!0);if(Xb().getInt32(o+12,!0))throw rx(i);var a=Yb(n,r).slice();return G.__wbindgen_export2(n,r*1,1),a}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Wb(e,t,n,r){try{let c=G.__wbindgen_add_to_stack_pointer(-16),l=nx(e,G.__wbindgen_export),u=Tx,d=tx(t,G.__wbindgen_export),f=Tx,p=tx(n,G.__wbindgen_export),m=Tx;G.inflate_raw_batch(c,l,u,d,f,p,m,r);var i=Xb().getInt32(c+0,!0),a=Xb().getInt32(c+4,!0),o=Xb().getInt32(c+8,!0);if(Xb().getInt32(c+12,!0))throw rx(o);var s=Yb(i,a).slice();return G.__wbindgen_export2(i,a*1,1),s}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Gb(e){try{let a=G.__wbindgen_add_to_stack_pointer(-16),o=nx(e,G.__wbindgen_export),s=Tx;G.inflate_raw_unknown_size(a,o,s);var t=Xb().getInt32(a+0,!0),n=Xb().getInt32(a+4,!0),r=Xb().getInt32(a+8,!0);if(Xb().getInt32(a+12,!0))throw rx(r);var i=Yb(t,n).slice();return G.__wbindgen_export2(t,n*1,1),i}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Kb(e,t){return qb(Error(Zb(e,t)))}function qb(e){xx===bx.length&&bx.push(bx.length+1);let t=xx;return xx=bx[t],bx[t]=e,t}function Jb(e){e<1028||(bx[e]=xx,xx=e)}function Yb(e,t){return e>>>=0,$b().subarray(e/1,e/1+t)}function Xb(){return(_x===null||_x.buffer.detached===!0||_x.buffer.detached===void 0&&_x.buffer!==G.memory.buffer)&&(_x=new DataView(G.memory.buffer)),_x}function Zb(e,t){return ix(e>>>0,t)}function Qb(){return(vx===null||vx.byteLength===0)&&(vx=new Uint32Array(G.memory.buffer)),vx}function $b(){return(yx===null||yx.byteLength===0)&&(yx=new Uint8Array(G.memory.buffer)),yx}function ex(e){return bx[e]}function tx(e,t){let n=t(e.length*4,4)>>>0;return Qb().set(e,n/4),Tx=e.length,n}function nx(e,t){let n=t(e.length*1,1)>>>0;return $b().set(e,n/1),Tx=e.length,n}function rx(e){let t=ex(e);return Jb(e),t}function ix(e,t){return wx+=t,wx>=Cx&&(Sx=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),Sx.decode(),wx=t),Sx.decode($b().subarray(e,e+t))}function ax(e){G=e}async function ox(){return Ex||(Dx||=(async()=>{let e=await(await fetch(hx)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./inflate_wasm_bg.js":mx});return ax(t.exports),Ex=t.exports,Ex})(),Dx)}async function sx(e,t,n,r){await ox();let i=Wb(e,t,n,r),a=new DataView(i.buffer,i.byteOffset,i.byteLength),o=a.getUint32(0,!0),s=4+(o+1)*4,c=Array(o+1);for(let e=0;e<=o;e++)c[e]=a.getUint32(4+e*4,!0);return{data:i.subarray(s),offsets:c}}function cx(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(t===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array};let n=4+t*4,r=n+t*4;return{starts:new Int32Array(e.buffer,e.byteOffset+4,t),ends:new Int32Array(e.buffer,e.byteOffset+n,t),scores:new Float32Array(e.buffer,e.byteOffset+r,t)}}function lx(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(t===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array};let n=4+t*4,r=n+t*4,i=r+t*4,a=i+t*4;return{starts:new Int32Array(e.buffer,e.byteOffset+4,t),ends:new Int32Array(e.buffer,e.byteOffset+n,t),scores:new Float32Array(e.buffer,e.byteOffset+r,t),minScores:new Float32Array(e.buffer,e.byteOffset+i,t),maxScores:new Float32Array(e.buffer,e.byteOffset+a,t)}}async function ux(e,t,n,r,i,a){return await ox(),cx(Vb(e,t,n,r,i,a))}async function dx(e,t,n,r,i,a,o){return await ox(),lx(Hb(e,t,n,r,i,a,o))}var fx,px,mx,hx,gx,_x,vx,yx,bx,xx,Sx,Cx,wx,Tx,G,Ex,Dx,Ox=n((()=>{fx={},px={},(()=>{var e=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,t;Bb.t=function(n,r){if(r&1&&(n=this(n)),r&8||typeof n==`object`&&n&&(r&4&&n.__esModule||r&16&&typeof n.then==`function`))return n;var i=Object.create(null);Bb.r(i);var a={};t||=[null,e({}),e([]),e(e)];for(var o=r&2&&n;(typeof o==`object`||typeof o==`function`)&&!~t.indexOf(o);o=e(o))Object.getOwnPropertyNames(o).forEach(e=>a[e]=()=>n[e]);return a.default=()=>n,Bb.d(i,a),i}})(),Bb.d=(e,t)=>{for(var n in t)Bb.o(t,n)&&!Bb.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},Bb.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Bb.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},mx={},Bb.r(mx),Bb.d(mx,{__wbg_Error_ef53bc310eb298a0:()=>Kb,__wbg_set_wasm:()=>ax,decompress_and_parse_bigwig:()=>Vb,decompress_and_parse_summary:()=>Hb,inflate_raw:()=>Ub,inflate_raw_batch:()=>Wb,inflate_raw_unknown_size:()=>Gb}),hx=`data:application/wasm;base64,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AkH4AXEiAkHQnMAAaiEGIAJB2JzAAGooAgAhAgsgBiAANgIIIAIgADYCDCAAIAY2AgwgACACNgIIDAELIAggAiADaiIAQQNyNgIEIAggAGoiACAAKAIEQQFyNgIECyAIQQhqIgANAQsCQAJAAkACQAJAAkBBACgC4J5AIgAgA08NAAJAQQAoAuSeQCIAIANLDQAgAUEEakGEn8AAIANBr4AEakGAgHxxECsCQCABKAIEIgYNAEEAIQAMCAsgASgCDCEFQQBBACgC8J5AIAEoAggiCWoiADYC8J5AQQAgAEEAKAL0nkAiAiAAIAJLGzYC9J5AAkACQAJAQQAoAuyeQCICRQ0AQcCcwAAhAANAIAYgACgCACIIIAAoAgQiB2pGDQIgACgCCCIADQAMAwsLAkACQEEAKAL8nkAiAEUNACAGIABPDQELQQAgBjYC/J5AC0EAQf8fNgKAn0BBACAFNgLMnEBBACAJNgLEnEBBACAGNgLAnEBBAEHQnMAANgLcnEBBAEHYnMAANgLknEBBAEHQnMAANgLYnEBBAEHgnMAANgLsnEBBAEHYnMAANgLgnEBBAEHonMAANgL0nEBBAEHgnMAANgLonEBBAEHwnMAANgL8nEBBAEHonMAANgLwnEBBAEH4nMAANgKEnUBBAEHwnMAANgL4nEBBAEGAncAANgKMnUBBAEH4nMAANgKAnUBBAEGIncAANgKUnUBBAEGAncAANgKInUBBAEGQncAANgKcnUBBAEGIncAANgKQnUBBAEGQncAANgKYnUBBAEGYncAANgKknUBBAEGYncAANgKgnUBBAEGgncAANgKsnUBBAEGgncAANgKonUBBAEGoncAANgK0nUBBAEGoncAANgKwnUBBAEGwncAANgK8nUBBAEGwncAANgK4nUBBAEG4ncAANgLEnUBBAEG4ncAANgLAnUBBAEHAncAANgLMnUBBAEHAncAANgLInUBBAEHIncAANgLUnUBBAEHIncAANgLQnUBBAEHQncAANgLcnUBBAEHYncAANgLknUBBAEHQncAANgLYnUBBAEHgncAANgLsnUBBAEHYncAANgLgnUBBAEHoncAANgL0nUBBAEHgncAANgLonUBBAEHwncAANgL8nUBBAEHoncAANgLwnUBBAEH4ncAANgKEnkBBAEHwncAANgL4nUBBAEGAnsAANgKM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EGsiASQAIAEgACkCADcCCCABQQhqQdCUwAAgACgCCEEBQQAQGAALLAIBfwF+IwBBEGsiASQAIAApAgAhAiABIAA2AgwgASACNwIEIAFBBGoQawALIwEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJBCGoQagALIAACQCABKAIARQ0AIABBiJfAADYCBCAAIAE2AgAPCwALHgEBfwJAIAAoAgAiAkUNACABIAIgACgCBBBTDwsACx8AIAFB04fAAEHMh8AAIAAtAAAiABtBEUEHIAAbEFMLGwEBfxBvIABBBGpBBBBgIgEgADYCACABQQRqCx4BAX8CQCAAKAIAIgFBAUgNACAAKAIEIAFBARBaCwseACAAKAIAIAAoAgRBACgCrJtAIgBBBCAAGxEEAAALIwEBfwJAQcyJwAAQMSIADQBBgInAAEE6QbyJwAAQPAALIAALHwACQCAAQYCAgIB4ckGAgICAeEYNACABIABBARBaCwscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEFoLCxcAAkAgAUEJSQ0AIAEgABAODwsgABABCxwBAX8CQCAAKAIAIgFFDQAgACgCBCABQQEQWgsLFQAgAEF8aiIAIAAoAgBBBGpBBBBaCxQAAkAgAEUNACAAIAEQZAALEF0ACxEAIAAgAUEBdEEBciACEDYACxIAAkAgAUUNACAAIAEgAhBaCwsSACAAIAEgAiADIARBACAFEAILFQACQCAARQ0AIAAgACgCqFoRAgALCxoAIABBACkC1JVANwIIIABBACkCzJVANwIACxoAIABBACkCxJVANwIIIABBACkCvJVANwIACxYAIAAoAgAgASACIAAoAgQoAgwRBwALFAAgACgCACABIAAoAgQoAgwRBQALDQAgACABIAIgAxAIDwsUAEEAIAA2AoSbQEEAQQE2AoCbQAsTACAAQYiXwAA2AgQgACABNgIACxAAIAEgACgCACAAKAIEEFMLEAAgASAAKAIAIAAoAgQQCwsLACAAIAEgAhAsDwsKACAAIAEQbhoACw8AIABB7JTAACABIAIQDAsRAEHgl8AAQSNB9JfAABA2AAsPACAAQYSYwAAgASACEAwLCwAgACMAaiQAIwALCQAgACABEEkPCwkAIAAgARAzDwsJACABIAAQPwALDAAgACABKQIANwMACwkAIAEgABBiAAsNACABQZSZwABBBRBTCw0AIAFB4ZrAAEEYEAsLCAAgACABEAALCQAgACgCABBQCwcAIAAQPQALBwAgABBFAAsHACAAECgACwsAQQBBAToAhJ9ACwkAIABBADYCAAsFABBwAAsDAA8LAwAACwuPGwIAQYCAwAAL+RoWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABJyYW5nZSBzdGFydCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAABByYW5nZSBlbmQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAWZGVjb21wcmVzc2lvbiBmYWlsZWQ6IMAAwAI6IMAAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9yd2xvY2svbm9fdGhyZWFkcy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjEyMi9zcmMvZXh0ZXJucmVmLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9saWJkZWZsYXRlci0xLjI1LjIvc3JjL2xpYi5ycwAAAADOAhAACgAAAEAAAAALAAAAzgIQAAoAAABYAAAACwAAAM4CEAAKAAAASQAAABMAAADOAhAACgAAAFMAAAArAAAAzgIQAAoAAABNAAAADwAAAM4CEAAKAAAASgAAABwAAADOAhAACgAAADkAAAAdAAAAZGVjb21wcmVzc2lvbiBvdXRwdXQgdG9vIGxhcmdlAADOAhAACgAAAIQAAAATAAAAzgIQAAoAAACLAAAAHQAAAM4CEAAKAAAAhQAAABwAAADOAhAACgAAAPgAAAATAAAAzgIQAAoAAAD/AAAAHQAAAM4CEAAKAAAA+QAAABwAAABCYWREYXRhSW5zdWZmaWNpZW50U3BhY2WVARAAZwAAAIQAAAARAAAAlQEQAGcAAACSAAAAEQAAAGxpYmRlZmxhdGVfZGVmbGF0ZV9kZWNvbXByZXNzIHJldHVybmVkIGFuIHVua25vd24gZXJyb3IgdHlwZTogdGhpcyBpcyBhbiBpbnRlcm5hbCBidWcgdGhhdCAqKm11c3QqKiBiZSBmaXhlZHkCEABfAAAADQEAABUAAABsaWJkZWZsYXRlX2FsbG9jX2RlY29tcHJlc3NvciByZXR1cm5lZCBOVUxMOiBvdXQgb2YgbWVtb3J5AAB5AhAAXwAAAJ0AAAARAAAADAAAAAIAAAADAAAAAAAAAAAAAAAQERIACAcJBgoFCwQMAw0CDgEPAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAAAAAAAABAAAAAgAAAAMAAAAEAAEABQABAAcAAgAJAAIADQADABEAAwAZAAQAIQAEADEABQBBAAUAYQAGAIEABgDBAAcAAQEHAIEBCAABAggAAQMJAAEECQABBgoAAQgKAAEMCwABEAsAARgMAAEgDAABMA0AAUANAAFgDQABYA0AAWAAAACAAAABgAAAAoAAAAOAAAAEgAAABYAAAAaAAAAHgAAACIAAAAmAAAAKgAAAC4AAAAyAAAANgAAADoAAAA+AAAAQgAAAEYAAABKAAAATgAAAFIAAABWAAAAWgAAAF4AAABiAAAAZgAAAGoAAABuAAAAcgAAAHYAAAB6AAAAfgAAAIIAAACGAAAAigAAAI4AAACSAAAAlgAAAJoAAACeAAAAogAAAKYAAACqAAAArgAAALIAAAC2AAAAugAAAL4AAADCAAAAxgAAAMoAAADOAAAA0gAAANYAAADaAAAA3gAAAOIAAADmAAAA6gAAAO4AAADyAAAA9gAAAPoAAAD+AAABAgAAAQYAAAEKAAABDgAAARIAAAEWAAABGgAAAR4AAAEiAAABJgAAASoAAAEuAAABMgAAATYAAAE6AAABPgAAAUIAAAFGAAABSgAAAU4AAAFSAAABVgAAAVoAAAFeAAABYgAAAWYAAAFqAAABbgAAAXIAAAF2AAABegAAAX4AAAGCAAABhgAAAYoAAAGOAAABkgAAAZYAAAGaAAABngAAAaIAAAGmAAABqgAAAa4AAAGyAAABtgAAAboAAAG+AAABwgAAAcYAAAHKAAABzgAAAdIAAAHWAAAB2gAAAd4AAAHiAAAB5gAAAeoAAAHuAAAB8gAAAfYAAAH6AAAB/gAAAgIAAAIGAAACCgAAAg4AAAISAAACFgAAAhoAAAIeAAACIgAAAiYAAAIqAAACLgAAAjIAAAI2AAACOgAAAj4AAAJCAAACRgAAAkoAAAJOAAACUgAAAlYAAAJaAAACXgAAAmIAAAJmAAACagAAAm4AAAJyAAACdgAAAnoAAAJ+AAACggAAAoYAAAKKAAACjgAAApIAAAKWAAACmgAAAp4AAAKiAAACpgAAAqoAAAKuAAACsgAAArYAAAK6AAACvgAAAsIAAALGAAACygAAAs4AAALSAAAC1gAAAtoAAALeAAAC4gAAAuYAAALqAAAC7gAAAvIAAAL2AAAC+gAAAv4AAAMCAAADBgAAAwoAAAMOAAADEgAAAxYAAAMaAAADHgAAAyIAAAMmAAADKgAAAy4AAAMyAAADNgAAAzoAAAM+AAADQgAAA0YAAANKAAADTgAAA1IAAANWAAADWgAAA14AAANiAAADZgAAA2oAAANuAAADcgAAA3YAAAN6AAADfgAAA4IAAAOGAAADigAAA44AAAOSAAADlgAAA5oAAAOeAAADogAAA6YAAAOqAAADrgAAA7IAAAO2AAADugAAA74AAAPCAAADxgAAA8oAAAPOAAAD0gAAA9YAAAPaAAAD3gAAA+IAAAPmAAAD6gAAA+4AAAPyAAAD9gAAA/oAAAP+AAKAAAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAQALAAEADQABAA8AAQARAAIAEwACABcAAgAbAAIAHwADACMAAwArAAMAMwADADsABABDAAQAUwAEAGMABABzAAUAgwAFAKMABQDDAAUA4wAAAAIBAAACAQAAAgEAAAAACAAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAwAAAAEAAAACgAAAAsAAAAMAAAAAAAAAAgAAAAEAAAADQAAAA4AAAAPAAAAEAAAABEAAAAQAAAABAAAABIAAAATAAAAFAAAAAgAAABtXcvWLFDrY3hBpldxG4u5K4FbAb2GUewMtMKc5MnHBGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAAE4CEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAABOAhAAKgAAALcEAAANAAAAcndsb2NrIG92ZXJmbG93ZWQgcmVhZCBsb2NrczcBEABdAAAAFQAAACwAAAAAAAAACAAAAAQAAAAVAAAACQAAAAwAAAAEAAAAFgAAAHJ3bG9jayBoYXMgbm90IGJlZW4gbG9ja2VkIGZvciByZWFkaW5nAAA3ARAAXQAAAD4AAAAJAAAAY2FwYWNpdHkgb3ZlcmZsb3cAAAD9ARAAUAAAABwAAAAFAAAAFwAAAAwAAAAEAAAAGAAAABkAAAAaAAAAAAAAAAAAAAABAAAAGwAAAGEgZm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90AADuABAASAAAAI8CAAAOAAAARXJyb3IwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OVJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZABB/JrAAAsEBAAAAAApBG5hbWUBIgFfH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIASAlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMjYuMgx3YXNtLWJpbmRnZW4TMC4yLjEyMiAoZGRkMzIyNTE0KQ==`,gx=Bb.t(hx),_x=null,vx=null,yx=null,bx=Array(1024).fill(void 0),bx.push(void 0,null,!0,!1),xx=bx.length,Sx=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),Sx.decode(),Cx=2146435072,wx=0,Tx=0,ax(gx),Ex=null,Dx=null}));function kx(e){let t=new Uint32Array(e.length),n=new Uint32Array(e.length);for(let r=0;r<e.length;r++){let i=e[r];t[r]=i.offset,n[r]=i.length}return{inputOffsets:t,inputLengths:n}}async function Ax(e,t,n){let{inputOffsets:r,inputLengths:i}=kx(t);return sx(e,r,i,n)}async function jx(e,t,n,r,i){let{inputOffsets:a,inputLengths:o}=kx(t);return ux(e,a,o,n,r,i)}async function Mx(e,t,n,r,i,a){let{inputOffsets:o,inputLengths:s}=kx(t);return dx(e,o,s,n,r,i,a)}var Nx=n((()=>{Ox()}));function Px(e,t=0){return new DataView(e.buffer,e.byteOffset+t,e.length-t)}function Fx(e,t,n){let r=e.indexOf(0,t),i=r!==-1&&r<t+n?r:t+n;return Lx.decode(e.subarray(t,i))}function Ix(e){e.sort((e,t)=>e.offset-t.offset);let t=[],n,r;for(let i of e)n&&i.offset-r<=2e3?(n.length=i.offset+i.length-n.offset,n.blocks.push(i),r=i.offset+i.length):(n={blocks:[i],length:i.length,offset:i.offset},t.push(n),r=i.offset+i.length);return t}var Lx,Rx=n((()=>{Lx=new TextDecoder(`utf8`)}));function zx(e,t,n,r){return e<r&&t>n}function Bx(e,t){let n=[],r=0,i=Px(e);for(;r<e.byteLength;){let e=i.getUint32(r,!0);r+=4;let a=i.getUint32(r,!0);r+=4;let o=i.getUint32(r,!0);r+=4;let s=i.getUint32(r,!0);r+=4;let c=i.getFloat32(r,!0);r+=4;let l=i.getFloat32(r,!0);r+=4;let u=i.getFloat32(r,!0);r+=8,(!t||e===t.chrId&&zx(a,o,t.start,t.end))&&n.push({start:a,end:o,maxScore:l,minScore:c,summary:!0,score:s?u/s:0})}return n}function Vx(e,t,n){let r=[],i=0,a=Px(e);for(;i<e.byteLength;){let o=i,s=a.getUint32(i,!0);i+=4;let c=a.getInt32(i,!0);i+=4;let l=a.getInt32(i,!0);i+=4;let u=e.indexOf(0,i),d=u===-1?e.length:u,f=Lx.decode(e.subarray(i,d));i=d+1,(!n||s===n.chrId&&zx(c,l,n.start,n.end))&&r.push({start:c,end:l,rest:f,uniqueId:`bb-${t}-${o}`})}return r}function Hx(e,t){let n=Px(e),r=n.getInt32(4,!0),i=n.getUint32(12,!0),a=n.getUint32(16,!0),o=n.getUint8(20),s=n.getUint16(22,!0),c=24,l=[];switch(o){case 1:for(let e=0;e<s;e++){let e=n.getInt32(c,!0);c+=4;let r=n.getInt32(c,!0);c+=4;let i=n.getFloat32(c,!0);c+=4,(!t||zx(e,r,t.start,t.end))&&l.push({start:e,end:r,score:i})}break;case 2:for(let e=0;e<s;e++){let e=n.getInt32(c,!0);c+=4;let r=n.getFloat32(c,!0);c+=4;let i=e+a;(!t||zx(e,i,t.start,t.end))&&l.push({score:r,start:e,end:i})}break;case 3:for(let e=0;e<s;e++){let o=n.getFloat32(c,!0);c+=4;let s=r+e*i,u=s+a;(!t||zx(s,u,t.start,t.end))&&l.push({score:o,start:s,end:u})}break}return l}function Ux(e,t){let n=Px(e),r=n.getInt32(4,!0),i=n.getUint32(12,!0),a=n.getUint32(16,!0),o=n.getUint8(20),s=n.getUint16(22,!0),c=new Int32Array(s),l=new Int32Array(s),u=new Float32Array(s);if(!t){switch(o){case 1:{let e=24;for(let t=0;t<s;t++)c[t]=n.getInt32(e,!0),l[t]=n.getInt32(e+4,!0),u[t]=n.getFloat32(e+8,!0),e+=12;return{starts:c,ends:l,scores:u}}case 2:{let e=24;for(let t=0;t<s;t++){let r=n.getInt32(e,!0);c[t]=r,l[t]=r+a,u[t]=n.getFloat32(e+4,!0),e+=8}return{starts:c,ends:l,scores:u}}case 3:{let e=24;for(let t=0;t<s;t++){let o=r+t*i;c[t]=o,l[t]=o+a,u[t]=n.getFloat32(e,!0),e+=4}return{starts:c,ends:l,scores:u}}}return{starts:c,ends:l,scores:u}}let d=t.start,f=t.end,p=0;switch(o){case 1:{let e=24;for(let t=0;t<s;t++){let t=n.getInt32(e,!0),r=n.getInt32(e+4,!0);t<f&&r>d&&(c[p]=t,l[p]=r,u[p]=n.getFloat32(e+8,!0),p++),e+=12}break}case 2:{let e=24;for(let t=0;t<s;t++){let t=n.getInt32(e,!0),r=t+a;t<f&&r>d&&(c[p]=t,l[p]=r,u[p]=n.getFloat32(e+4,!0),p++),e+=8}break}case 3:{let e=24;for(let t=0;t<s;t++){let o=r+t*i,s=o+a;o<f&&s>d&&(c[p]=o,l[p]=s,u[p]=n.getFloat32(e,!0),p++),e+=4}break}}return p<s?{starts:c.subarray(0,p),ends:l.subarray(0,p),scores:u.subarray(0,p)}:{starts:c,ends:l,scores:u}}function Wx(e,t){let n=Px(e),r=Math.floor(e.byteLength/32),i=new Int32Array(r),a=new Int32Array(r),o=new Float32Array(r),s=new Float32Array(r),c=new Float32Array(r),l=0,u=0;for(;u<e.byteLength;){let e=n.getUint32(u,!0);u+=4;let r=n.getUint32(u,!0);u+=4;let d=n.getUint32(u,!0);u+=4;let f=n.getUint32(u,!0);u+=4;let p=n.getFloat32(u,!0);u+=4;let m=n.getFloat32(u,!0);u+=4;let h=n.getFloat32(u,!0);u+=8,(!t||e===t.chrId&&zx(r,d,t.start,t.end))&&(i[l]=r,a[l]=d,o[l]=f?h/f:0,s[l]=p,c[l]=m,l++)}return l<r?{starts:i.subarray(0,l),ends:a.subarray(0,l),scores:o.subarray(0,l),minScores:s.subarray(0,l),maxScores:c.subarray(0,l)}:{starts:i,ends:a,scores:o,minScores:s,maxScores:c}}function Gx(e,t,n){if(e.length===1)return e[0];let r=new n(t),i=0;for(let t of e)r.set(t,i),i+=t.length;return r}function Kx(e,t,n,r){switch(e){case`summary`:return Bx(t,r);case`bigwig`:return Hx(t,r);case`bigbed`:return Vx(t,n,r);default:return console.warn(`Don't know what to do with ${e}`),[]}}var qx,Jx,Yx=n((()=>{xb(),Lb(),zb(),Nx(),Rx(),qx=610839776,Jx=class{bbi;refsByName;rTreeOffset;uncompressBufSize;blockType;rTreePromise;rTreeNodeCache=new yb({cache:new Ib({maxSize:1e3}),fill:async({length:e,offset:t},n)=>this.bbi.read(e,t,{signal:n})});constructor(e,t,n,r,i){if(this.bbi=e,this.refsByName=t,this.rTreeOffset=n,this.uncompressBufSize=r,this.blockType=i,!(n>=0))throw Error(`invalid rTreeOffset!`)}async _collectBlocks(e,t,n,r){let i=this.refsByName[e];if(i===void 0)return;this.rTreePromise||=this.bbi.read(48,this.rTreeOffset,r).catch(e=>{throw this.rTreePromise=void 0,e});let a=Px(await this.rTreePromise),o=a.getUint32(0,!0);if(o!==qx)throw Error(`invalid cirTree magic: 0x${o.toString(16)} (expected 0x${qx.toString(16)}) at offset ${this.rTreeOffset}, file may be corrupt or unsupported`);let s=4+a.getUint32(4,!0)*32,c=(e,r,a,o)=>(e<i||e===i&&r<=n)&&(a>i||a===i&&o>=t),l=[],u=[this.rTreeOffset+48];for(;u.length>0;){let e=Rb(u.map(e=>({min:e,max:e+s}))),t=[];for(let{min:n,max:i}of e){let e=i-n,a=n,o=await this.rTreeNodeCache.get(`${e}_${a}`,{length:e,offset:a},r?.signal);for(let e of u)if(n<=e&&e<=i){let n=Px(o.subarray(e-a)),r=n.getUint8(0),i=n.getUint16(2,!0);if(r===1||r===0){let e=r===1?32:24,a=4;for(let o=0;o<i;o++){if(c(n.getUint32(a,!0),n.getUint32(a+4,!0),n.getUint32(a+8,!0),n.getUint32(a+12,!0))){let e=Number(n.getBigUint64(a+16,!0));if(r===1){let t=Number(n.getBigUint64(a+24,!0));l.push({offset:e,length:t})}else t.push(e)}a+=e}}}}u=t}return{blocks:l,chrId:i}}async readWigData(e,t,n,r){let i=await this._collectBlocks(e,t,n,r);if(!i)return[];let{blocks:a,chrId:o}=i;return this.readFeatures(a,{...r,request:{chrId:o,start:t,end:n}})}async readWigDataMulti(e,t={}){let n=e.map(()=>[]),r=new Map,i=new Map;for(let n=0;n<e.length;n++){let{refName:a,start:o,end:s}=e[n],c=await this._collectBlocks(a,o,s,t);if(c){let e={chrId:c.chrId,start:o,end:s};for(let t of c.blocks){let a=i.get(t.offset);a?a.push({regionIndex:n,request:e}):(r.set(t.offset,t),i.set(t.offset,[{regionIndex:n,request:e}]))}}}let{blockType:a,uncompressBufSize:o}=this,{signal:s}=t,c=(e,t)=>{let r=i.get(t);if(r)for(let{regionIndex:i,request:o}of r){let r=Kx(a,e,t,o);for(let e of r)n[i].push(e)}};for(let e of Ix([...r.values()])){let t=await this.bbi.read(e.length,e.offset,{signal:s}),n=e.offset,r=e.blocks;if(o>0){let{data:e,offsets:i}=await Ax(t,r.map(e=>({offset:e.offset-n,length:e.length})),o);for(let t=0;t<r.length;t++)c(e.subarray(i[t],i[t+1]),r[t].offset)}else for(let e of r){let r=e.offset-n;c(t.subarray(r,r+e.length),e.offset)}}return n}async readWigDataAsArrays(e,t,n,r){let i=await this._collectBlocks(e,t,n,r);return this.blockType===`summary`?i?this._readSummaryFeaturesAsArrays(i.blocks,{chrId:i.chrId,start:t,end:n},r):{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array,isSummary:!0}:i?this._readBigWigFeaturesAsArrays(i.blocks,{chrId:i.chrId,start:t,end:n},r):{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,isSummary:!1}}async readFeatures(e,t={}){let{blockType:n,uncompressBufSize:r}=this,{signal:i,request:a}=t,o=Ix(e),s=[];for(let e of o){let t=await this.bbi.read(e.length,e.offset,{signal:i}),o=e.offset,c=e.blocks;if(r>0){let{data:e,offsets:i}=await Ax(t,c.map(e=>({offset:e.offset-o,length:e.length})),r);for(let t=0;t<c.length;t++){let r=Kx(n,e.subarray(i[t],i[t+1]),c[t].offset,a);for(let e of r)s.push(e)}}else for(let e of c){let r=e.offset-o,i=Kx(n,t.subarray(r,r+e.length),e.offset,a);for(let e of i)s.push(e)}}return s}async _readBlocksAsArrays(e,t,n,r,i){let a=[];for(let o of Ix(e)){let e=await this.bbi.read(o.length,o.offset,{signal:t}),s=o.blocks.map(e=>({offset:e.offset-o.offset,length:e.length}));if(this.uncompressBufSize>0){let t=await n(e,s);i(t)>0&&a.push(t)}else for(let t of s){let n=r(e.subarray(t.offset,t.offset+t.length));i(n)>0&&a.push(n)}}return a}async _readBigWigFeaturesAsArrays(e,t,n={}){let r=await this._readBlocksAsArrays(e,n.signal,(e,n)=>jx(e,n,this.uncompressBufSize,t.start,t.end),e=>Ux(e,t),e=>e.starts.length),i=r.reduce((e,t)=>e+t.starts.length,0);return{starts:Gx(r.map(e=>e.starts),i,Int32Array),ends:Gx(r.map(e=>e.ends),i,Int32Array),scores:Gx(r.map(e=>e.scores),i,Float32Array),isSummary:!1}}async _readSummaryFeaturesAsArrays(e,t,n={}){let r=await this._readBlocksAsArrays(e,n.signal,(e,n)=>Mx(e,n,this.uncompressBufSize,t.chrId,t.start,t.end),e=>Wx(e,t),e=>e.starts.length),i=r.reduce((e,t)=>e+t.starts.length,0);return{starts:Gx(r.map(e=>e.starts),i,Int32Array),ends:Gx(r.map(e=>e.ends),i,Int32Array),scores:Gx(r.map(e=>e.scores),i,Float32Array),minScores:Gx(r.map(e=>e.minScores),i,Float32Array),maxScores:Gx(r.map(e=>e.maxScores),i,Float32Array),isSummary:!0}}}})),Xx,Zx,Qx,$x=n((()=>{Mg(),Yx(),Rx(),Xx=-2003829722,Zx=-2021002517,Qx=class{bbi;headerP;renameRefSeqs;getHeader(e){return this.headerP||=this._getHeader(e).catch(e=>{throw this.headerP=void 0,e}),this.headerP}constructor(e){let{filehandle:t,renameRefSeqs:n=e=>e,path:r,url:i}=e;if(this.renameRefSeqs=n,t)this.bbi=t;else if(i)this.bbi=new Og(i);else if(r)this.bbi=new jg(r);else throw Error(`no file given`)}async _getHeader(e){let t=await this._getMainHeader(e),n=await this._readChromosomeTree(t,e);return{...t,...n}}async _getMainHeader(e,t=2e3){let n=await this.bbi.read(t,0,e),r=Px(n),i=0,a=r.getInt32(i,!0);if(i+=4,a!==Xx&&a!==Zx)throw Error(`not a BigWig/BigBed file`);let o=r.getUint16(i,!0);i+=2;let s=r.getUint16(i,!0);i+=2;let c=Number(r.getBigUint64(i,!0));i+=8;let l=Number(r.getBigUint64(i,!0));i+=8;let u=Number(r.getBigUint64(i,!0));i+=8;let d=r.getUint16(i,!0);i+=2;let f=r.getUint16(i,!0);i+=2;let p=Number(r.getBigUint64(i,!0));i+=8;let m=Number(r.getBigUint64(i,!0));i+=8;let h=r.getUint32(i,!0);i+=4;let g=Number(r.getBigUint64(i,!0));i+=8;let _=[];for(let e=0;e<s;e++){let e=r.getUint32(i,!0);i+=4,i+=4;let t=Number(r.getBigUint64(i,!0));i+=8;let n=Number(r.getBigUint64(i,!0));i+=8,_.push({reductionLevel:e,dataOffset:t,indexOffset:n})}let v=a===Zx?`bigbed`:`bigwig`,y=n.length<t,b=p!==0&&!n.includes(0,p);if(!y&&(p>t||m>t-40||b))return this._getMainHeader(e,t*2);let x;if(m){let e=Px(n,m);x={basesCovered:Number(e.getBigUint64(0,!0)),scoreMin:e.getFloat64(8,!0),scoreMax:e.getFloat64(16,!0),scoreSum:e.getFloat64(24,!0),scoreSumSquares:e.getFloat64(32,!0)}}else throw Error(`no stats`);let S=``;if(p){let e=n.indexOf(0,p),t=e===-1?n.length:e;S=Lx.decode(n.subarray(p,t))}return{zoomLevels:_,magic:a,extHeaderOffset:g,numZoomLevels:s,fieldCount:d,totalSummary:x,definedFieldCount:f,uncompressBufSize:h,asOffset:p,chromosomeTreeOffset:c,totalSummaryOffset:m,unzoomedDataOffset:l,unzoomedIndexOffset:u,fileType:v,version:o,autoSql:S}}async _readChromosomeTree(e,t){let n=[],r={},i=e.chromosomeTreeOffset,a=Px(await this.bbi.read(32,i,t)),o=a.getUint32(8,!0),s=a.getUint32(12,!0),c=async e=>{let i=Px(await this.bbi.read(4,e,t)),a=i.getUint8(0),l=i.getUint16(2,!0);if(a){let i=await this.bbi.read(l*(o+s),e+4,t),a=Px(i),c=0;for(let e=0;e<l;e++){let e=Fx(i,c,o);c+=o;let t=a.getUint32(c,!0);c+=4;let s=a.getUint32(c,!0);c+=4,r[this.renameRefSeqs(e)]=t,n[t]={name:e,id:t,length:s}}}else{let n=Px(await this.bbi.read(l*(o+8),e+4,t)),r=[],i=0;for(let e=0;e<l;e++){i+=o;let e=Number(n.getBigUint64(i,!0));i+=8,r.push(c(e))}await Promise.all(r)}};return await c(i+32),{refsByName:r,refsByNumber:n}}viewCache=new Map;getOrCreateBlockView(e,t,n,r){let i=`${t}_${r}`,a=this.viewCache.get(i);return a||(a=new Jx(this.bbi,e,t,n,r),this.viewCache.set(i,a)),a}async getUnzoomedView(e){let{unzoomedIndexOffset:t,refsByName:n,uncompressBufSize:r,fileType:i}=await this.getHeader(e);return this.getOrCreateBlockView(n,t,r,i)}async _getView(e){let{basesPerSpan:t,scale:n}=e||{},r=t?1/t:n??1;return this.getView(r,e)}async getFeatures(e,t,n,r){return(await this._getView(r)).readWigData(this.renameRefSeqs(e),t,n,r)}async getFeaturesMulti(e,t){return(await this._getView(t)).readWigDataMulti(e.map(e=>({refName:this.renameRefSeqs(e.refName),start:e.start,end:e.end})),t)}async getFeaturesAsArrays(e,t,n,r){return(await this._getView(r)).readWigDataAsArrays(this.renameRefSeqs(e),t,n,r)}}})),eS,tS=n((()=>{$x(),eS=class extends Qx{async getView(e,t){let{zoomLevels:n,refsByName:r,uncompressBufSize:i}=await this.getHeader(t),a=1/e,o=n.length-1;for(let e=o;e>=0;--e){let t=n[e];if(t.reductionLevel<=2*a)return this.getOrCreateBlockView(r,t.indexOffset,i,`summary`)}return this.getUnzoomedView(t)}}}));function nS(e,t){if(t<0)return;let n=0;for(let r=0;r<t;r++){if(n=e.indexOf(` `,n),n===-1)return;n++}let r=e.indexOf(` `,n);return r===-1?e.slice(n):e.slice(n,r)}async function rS(e,t,n,r,i,a,o,s){let c=4+n*(r+i),l=await e.read(c,t,s),u=Px(l),d=u.getInt8(0),f=u.getInt16(2,!0),p=4;if(d===0){let t=[];for(let e=0;e<f;e++){let e=Fx(l,p,r);p+=r;let n=Number(u.getBigUint64(p,!0));p+=8,t.push({key:e,offset:n})}let c=0,d=t.length-1,m=-1;for(;c<=d;){let e=Math.floor((c+d)/2);a.localeCompare(t[e].key)>=0?(m=e,c=e+1):d=e-1}let h=t[Math.max(m,0)].offset;return rS(e,h,n,r,i,a,o,s)}else if(d===1){let e=[];for(let t=0;t<f;t++){let t=Fx(l,p,r);p+=r;let n=Number(u.getBigUint64(p,!0));p+=8;let i=u.getUint32(p,!0);p+=4,p+=4,e.push({key:t,offset:n,length:i})}let t=0,n=e.length-1;for(;t<=n;){let r=Math.floor((t+n)/2),i=a.localeCompare(e[r].key);if(i===0)return{...e[r],field:o};i<0?n=r-1:t=r+1}return}}var iS,aS=n((()=>{$x(),Rx(),iS=class extends Qx{indicesP;readIndices(e={}){return this.indicesP||=this._readIndices(e).catch(e=>{throw this.indicesP=void 0,e}),this.indicesP}async getView(e,t){return this.getUnzoomedView(t)}async _readIndices(e){let{extHeaderOffset:t}=await this.getHeader(e),n=Px(await this.bbi.read(64,t,e)),r=n.getUint16(2,!0),i=Number(n.getBigUint64(4,!0));if(r===0)return[];let a=20*r,o=await this.bbi.read(a,i,e),s=[];for(let e=0;e<r;e+=1){let t=Px(o,e*20),n=t.getInt16(0,!0),r=t.getInt16(2,!0),i=Number(t.getBigUint64(4,!0)),a=t.getInt16(16,!0);s.push({type:n,fieldcount:r,offset:i,field:a})}return s}async searchExtraIndexBlocks(e,t={}){let n=await this.readIndices(t);if(n.length===0)return[];let r=n.map(async n=>{let{offset:r,field:i}=n,a=Px(await this.bbi.read(32,r,t)),o=a.getInt32(4,!0),s=a.getInt32(8,!0),c=a.getInt32(12,!0);return rS(this.bbi,r+32,o,s,c,e,i,t)});return(await Promise.all(r)).filter(e=>e!==void 0)}async searchExtraIndex(e,t={}){let n=await this.searchExtraIndexBlocks(e,t);if(n.length===0)return[];let r=await this.getUnzoomedView(t);return(await Promise.all(n.map(async e=>(await r.readFeatures([e],t)).map(t=>({...t,field:e.field}))))).flat().filter(t=>{if(!t.rest)return!1;let n=(t.field??0)-3;return nS(t.rest,n)===e})}}}));async function oS(e,t){let n=await e.getHeader(t),r=[];for(let i of Object.values(n.refsByNumber)){let n=await e.getFeaturesAsArrays(i.name,0,i.length,t);!n.isSummary&&n.starts.length>0&&r.push(n)}return r}var sS=n((()=>{})),cS,lS,uS=n((()=>{cS=class{view;i;constructor(e,t){this.view=e,this.i=t}get(e){return this.view.get(this.i,e)}id(){return this.view.id(this.i)}toJSON(){let{view:e,i:t}=this;return{start:e.start(t),end:e.end(t),score:e.score(t),refName:e.refName,source:e.source,uniqueId:e.id(t),summary:e.isSummary,minScore:e.minScore(t),maxScore:e.maxScore(t)}}},lS=class{starts;ends;scores;minScores;maxScores;isSummary;source;refName;constructor(e,t,n){this.starts=e.starts,this.ends=e.ends,this.scores=e.scores,this.isSummary=e.isSummary,this.minScores=e.isSummary?e.minScores:void 0,this.maxScores=e.isSummary?e.maxScores:void 0,this.source=t,this.refName=n}get length(){return this.starts.length}start(e){return this.starts[e]}end(e){return this.ends[e]}score(e){return this.scores[e]}minScore(e){return this.minScores?.[e]}maxScore(e){return this.maxScores?.[e]}id(e){return`${this.source}:${this.refName}:${this.starts[e]}-${this.ends[e]}`}get(e,t){switch(t){case`start`:return this.starts[e];case`end`:return this.ends[e];case`score`:return this.scores[e];case`refName`:return this.refName;case`source`:return this.source;case`minScore`:return this.minScores?.[e];case`maxScore`:return this.maxScores?.[e];case`summary`:return this.isSummary;default:return}}}})),dS=r({ArrayFeatureView:()=>lS,BigBed:()=>iS,BigWig:()=>eS,BigWigFeature:()=>cS,parseBigWig:()=>oS}),fS=n((()=>{pb(),tS(),aS(),sS(),uS()})),pS=class extends xg{#e=[];#t;constructor(e,t){let n={pixelsPerBin:2,channel:`x`,debounce:200,debounceMode:`window`,...e},r=pg(n.channel);if(super(t,r),this.params=vg(t.paramRuntime,n,e=>{e.has(`url`)?this.#n().then(()=>this.reloadLastDomain()):e.has(`pixelsPerBin`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!this.params.url)throw 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(()=>(fS(),dS)),Promise.resolve().then(()=>(Mg(),Ag))]).then(([{BigWig:n},{RemoteFile:r}])=>{this.#t=new n({filehandle:new r(ih(pg(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus(`loading`),this.#t.getHeader().then(t=>{this.#e=t.zoomLevels.map(e=>e.reductionLevel).reverse(),this.#e.push(1),this.setLoadingStatus(`complete`),e()}).catch(e=>{this.load(),this.setLoadingStatus(`error`,`${pg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async onDomainChanged(e){await this.initializedPromise;let t=this.scaleResolution.getAxisLength()||700,n=gS(e,t,this.#e),r=Math.max(n*t,5e3);this.callIfWindowsChanged(e,r,e=>this.loadInterval(e,n))}async loadInterval(e,t){let n=1/2/t/pg(this.params.pixelsPerBin),r=await this.discretizeAndLoad(e,{load:(e,t)=>this.#t.getFeatures(e.chrom,e.startPos,e.endPos,{scale:n,signal:t}).then(t=>hS(e.chrom,t)),loadBatch:(e,t)=>this.#t.getFeaturesMulti(e.map(e=>({refName:e.chrom,start:e.startPos,end:e.endPos})),{scale:n,signal:t}).then(t=>t.map((t,n)=>hS(e[n].chrom,t)))});r&&this.publishData(r)}};function mS(e){return e?.type==`bigwig`}Gm(mS,pS);function hS(e,t){return t.map(t=>({chrom:e,start:t.start,end:t.end,score:t.score}))}function gS(e,t,n){let r=(e[1]-e[0])/t;return n.find(e=>e<r)??n.at(-1)}var _S=class extends xg{parser;bbi;parseLine;constructor(e,t){let n={channel:`x`,windowSize:1e6,debounce:200,debounceMode:`window`,...e},r=pg(n.channel);if(super(t,r),this.params=vg(t.paramRuntime,n,e=>{e.has(`url`)?this.#e().then(()=>this.reloadLastDomain()):e.has(`windowSize`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!this.params.url)throw 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(()=>(jl(),Al)),Promise.resolve().then(()=>(fS(),dS)),Promise.resolve().then(()=>(Mg(),Ag))]).then(([n,{BigBed:r},{RemoteFile:i}])=>{let a=n.default;this.bbi=new r({filehandle:new i(ih(pg(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus(`loading`),this.bbi.getHeader().then(async t=>{this.parser=new a({autoSql:t.autoSql});try{let e=vS(this.parser);this.parseLine=(t,n)=>e(t,n.start,n.end,n.rest)}catch{this.parseLine=(e,t)=>this.parser.parseLine(`${e}\t${t.start}\t${t.end}\t${t.rest}`)}this.setLoadingStatus(`complete`),e()}).catch(e=>{this.load(),this.setLoadingStatus(`error`,`${pg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.bbi.getFeatures(e.chrom,e.startPos,e.endPos,{signal:t}).then(t=>t.map(t=>this.parseLine(e.chrom,t))));t&&this.publishData(t)}};function vS(e){let t=e.autoSql.fields.filter(e=>e.type).slice(3),n=0,r=``,i=0,a={};function o(){let e=r.indexOf(` `,n);e<0&&(e=i);let t=r.substring(n,e);return n=e+1,t}function s(){let e=0,t=r.charCodeAt(n),a=1;t===45&&(a=-1,n++,t=r.charCodeAt(n));do{if(t===9){n++;break}e=e*10+t-48,t=r.charCodeAt(++n)}while(n<i);return e*a}let c=t.map(e=>`${JSON.stringify(e.name)}: ${e.isNumeric?`0`:`emptyString`}`),l=Function(`
|
|
192
|
+
}`)(function(t){e in t||dh(t,e)}),[e],t):Ye(e)}function dh(e,t){throw Error(`Invalid field "${t}". Available fields or properties: ${Object.keys(e).join(`, `)}`)}function fh(e,t,n){if(!e)throw Error(`Cannot create an accessor without a channel.`);function r(n){let r=n;return r.fields??=[],r.constant=r.fields.length===0,r.channelDef=t,r.channel=e,r.sourceKey=hh(t),r.scaleChannel=((jh(t)&&t.resolutionChannel)??(Xh(e)&&e))||void 0,r.scaleChannel!==void 0&&(r.domainKeyBase=gh({scaleChannel:r.scaleChannel,source:mh(t)}).domainKeyBase),r.equals=e=>e?r===e||r.sourceKey!==void 0&&r.sourceKey===e.sourceKey:!1,r.asNumberAccessor=()=>r,r}function i(e){if(z(e)){let t=r(n.createExpression(e.expr));if(t.fields.length>0)throw Error(`Expression in DatumDef/ValueDef cannot access data fields: `+e.expr);return t}else{let t=e;return r(()=>t)}}if(kh(t))try{return r(R(t.field))}catch(e){throw Error(`Invalid field definition: ${e.message}`,{cause:e})}else if(Fh(t))return r(n.createExpression(t.expr));else if(Ah(t))return i(t.datum);else if(Oh(t))return i(t.value);else throw Error(`Invalid channel definition: "${e}": ${JSON.stringify(t)}! The channel definition must contain one of the following properties: "field", "datum", "value" or "expr".`)}function ph(e){return e.scaleChannel!==void 0}function mh(e){if(kh(e))return{kind:`field`,value:e.field};if(Fh(e))return{kind:`expr`,value:e.expr};if(Ah(e))return{kind:`datum`,value:e.datum};if(Oh(e))return{kind:`value`,value:e.value};throw Error(`Cannot derive a domain key from channel definition: `+JSON.stringify(e))}function hh(e){let t=mh(e);return t.kind===`datum`||t.kind===`value`?`constant|`+yh(t.value):t.kind+`|`+vh(t)}function gh({scaleChannel:e,source:t,type:n}){if(!e)throw Error(`Cannot build a domain key without a scale channel.`);let r=e+`|`+t.kind+`|`+vh(t);return{domainKeyBase:r,domainKey:n?n+`|`+r:void 0}}function _h(e,t){let{domainKey:n,domainKeyBase:r}=gh({scaleChannel:e.scaleChannel,source:mh(e.channelDef),type:t});if(!n)throw Error(`Cannot finalize a domain key without a resolved type.`);return e.domainKeyBase=r,e.domainKey=n,n}function vh(e){switch(e.kind){case`field`:case`expr`:return e.value;case`datum`:case`value`:return yh(e.value);default:throw Error(`Unknown domain key source.`)}}function yh(e){return z(e)?`expr:`+e.expr:e===void 0?`undefined`:JSON.stringify(e)}function bh(e,t,n,r){let i,a=yg(!1),o=()=>{if(i)return i;let o=n.findValue(e);if(!o)return a;let s={};if(ig(o)){let n=Object.keys(o.intervals);for(let r of n){let n=t[r];if(kh(n)){s[r]=n.field;continue}else if(n&&`condition`in n){let e=n.condition;if(kh(e)){s[r]=e.field;continue}}throw Error(`Selection "${e}" has an interval for "${r}" channel, but could not find a fieldDef: ${JSON.stringify(t[r])}`)}}let c=rg({type:`filter`,param:e,fields:s,empty:r},o);return i=n.createExpression(c),i};return Object.assign(e=>o()(e),{param:e,empty:r??!0})}function xh(e,t,n,r){let i=Ih(t)||Lh(t)?Array.isArray(t.condition)?t.condition:[t.condition]:[],a=[...i,t],o=a.map((t,o)=>{let s=i[o];return{accessor:fh(e,t,r),predicate:s?.param?bh(s.param,n,r,s.empty):Object.assign(yg(o===a.length-1),{empty:!1})}});if(o.filter(e=>!e.accessor.constant).length>1)throw Error(`Only one accessor can be non-constant. Channel: `+e);return o}function Sh(e,t){let n={},r=t=>e.getScaleResolution(t)?.getScale();for(let[i,a]of Object.entries(t)){if(!a)continue;let o=i;Ch(o)||(n[o]=Eh(xh(o,a,t,e.paramRuntime),r))}return n}function Ch(e){return e===`key`||e===`search`}function wh(e){return e.branches.map(e=>e.accessor)}function Th(e){return e.branches.find(e=>!e.accessor.constant)?.accessor}function Eh(e,t){if(e.length===1){let n=Dh(e[0].accessor,t);return Object.assign(n,{branches:e})}let n=e.map(e=>e.predicate),r=e.map(e=>Dh(e.accessor,t));return Object.assign(e=>{for(let t=0;t<r.length;t++)if(n[t](e))return r[t](e)},{constant:!1,branches:e,scale:r.map(e=>e.scale).find(e=>e),channelDef:e.at(-1).accessor.channelDef})}function Dh(e,t){let{channel:n,scaleChannel:r,channelDef:i}=e,a=e.scaleChannel?t(r):void 0;if(r&&!a)throw Error(`Missing scale! "${n}": ${JSON.stringify(i)}`);return Object.assign(a?t=>a(e(t)):t=>e(t),{scale:a,constant:e.constant,branches:[{accessor:e,predicate:yg(!0)}],channelDef:i})}function Oh(e){return e&&`value`in e}function kh(e){return e&&`field`in e}function Ah(e){return e&&`datum`in e}function jh(e){return kh(e)||Ah(e)||Fh(e)||Ph(e)}function Mh(e){if(Lh(e)){let t=e.condition;if(!Array.isArray(t)&&jh(t))return t}else if(jh(e))return e}function Nh(e,t){let n=e.mark.encoding[t];if(Array.isArray(n))throw Error(`Not a channel def with scale!`);{let e=Mh(n);if(e)return e}throw Error(`Not a channel def with scale!`)}function Ph(e){return e&&`chrom`in e}function Fh(e){return e&&`expr`in e}function Ih(e){return(kh(e)||Ah(e))&&`condition`in e}function Lh(e){return Oh(e)&&`condition`in e}var Rh=[`x`,`y`],zh=[`x2`,`y2`],Bh=[...Rh,...zh];function Vh(e){return Rh.includes(e)}function Hh(e){return Bh.includes(e)}var Uh={x:`x2`,y:`y2`},Wh=Object.fromEntries(Object.entries(Uh).map(e=>[e[1],e[0]]));function Gh(e){return e in Wh}function Kh(e){let t=Uh[e];if(t)return t;throw Error(`${e} has no secondary channel!`)}function qh(e){return Wh[e]??e}function Jh(e){return[`color`,`fill`,`stroke`].includes(qh(e))}function Yh(e){return[`shape`].includes(e)}function Xh(e){return[`x`,`y`,`x2`,`y2`,`color`,`fill`,`stroke`,`opacity`,`fillOpacity`,`strokeOpacity`,`strokeWidth`,`size`,`shape`,`angle`,`dx`,`dy`,`sample`].includes(e)}function Zh(e){switch(e){case`shape`:return[`circle`,`square`,`cross`,`diamond`,`triangle-up`,`triangle-right`,`triangle-down`,`triangle-left`,`tick-up`,`tick-right`,`tick-down`,`tick-left`];default:}}function Qh(e){if(!Yh(e))throw Error(`Not a discrete channel: `+e);let t=new Map(Zh(e).map((e,t)=>[e,t]));return n=>{let r=t.get(n);if(r!==void 0)return r;throw Error(`Invalid value for "${e}" channel: ${n}`)}}function $h(e){return{type:`single`,datum:e,uniqueId:e?.[sh]}}function eg(e){return e??=[],{type:`multi`,data:new Map(e.map(e=>[e[sh],e]))}}function tg(e){return{type:`interval`,intervals:Object.fromEntries(e.map(e=>[e,null]))}}function ng(e,{add:t,remove:n,toggle:r}){let i=e.data;for(let e of t??[])i.set(e[sh],e);for(let e of n??[])i.delete(e[sh]);for(let e of r??[]){let t=e[sh];i.has(t)?i.delete(t):i.set(t,e)}return{type:`multi`,data:i}}function rg(e,t){let n=!!(e.empty??!0),r=gg(e.param),i=e.fields??{};if(ag(t))return`${r}.uniqueId == null ? ${n} : ${r}.uniqueId === datum[${JSON.stringify(sh)}]`;if(og(t))return`${r}.data.size == 0 ? ${n} : mapHasKey(${r}.data, datum[${JSON.stringify(sh)}])`;if(ig(t)){let a=Object.keys(t.intervals),o=Object.keys(i).filter(Vh);if(o.length===0)throw Error(`Filtering using interval selections requires at least one primary positional channel in the config! `+JSON.stringify(e));if(o.some(e=>!a.includes(e)))throw Error(`Selection channels (${a.join(`, `)}) do not match the fields: ${JSON.stringify(e)}!`);let s=e=>`datum[${JSON.stringify(e)}]`;return a.map(e=>{let t=Kh(e),a=i[e];return`(${r}.intervals.${e} ? (${`${r}.intervals.${e}[0] <= ${s(i[t]??i[e])}`} && ${`${s(a)} <= ${r}.intervals.${e}[1]`}) : ${n})`}).join(` && `)}else throw Error(`Unrecognized selection type : ${JSON.stringify(t)}`)}function ig(e){return e.type===`interval`}function ag(e){return e.type===`single`}function og(e){return e.type===`multi`}function sg(e){let t=typeof e==`string`?{type:e}:{...e};return t.on=t.on?fg(t.on):cg(t)?{type:`click`}:void 0,t.clear=t.clear===!1?void 0:t.clear===!0||t.clear==null?{type:`dblclick`}:fg(t.clear),cg(t)&&t.on.type===`click`&&(t.toggle=!0),t}function cg(e){return e&&e.type==`point`}function lg(e){return e&&e.type==`interval`}function ug(e){return Object.values(e.intervals).some(e=>e&&e.length===2)}function dg(e,t){return Object.entries(e.intervals).every(([e,n])=>(e==`x`||e==`y`)&&n&&n[0]<=t[e]&&n[1]>=t[e])}function fg(e){if(typeof e==`string`){let t=e.match(/^([a-zA-Z]+)(?:\[(.+)\])?$/);if(!t)throw Error(`Invalid event type string: ${e}`);let[,n,r]=t,i={type:n};return r&&(i.filter=r),i}else return e}function z(e){return typeof e==`object`&&!!e&&`expr`in e&&P(e.expr)}function pg(e){if(z(e))throw Error(`ExprRef `+JSON.stringify(e)+` not allowed here. Expected a scalar value.`);return e}function mg(e){return(`expr`in e||`bind`in e)&&!(`select`in e)}function hg(e){return!(`expr`in e||`bind`in e)&&`select`in e}function gg(e){if(!/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e))throw Error(`Invalid parameter name: `+e+`. Must be a valid JavaScript identifier.`);return e}function _g(e,t,n){if(`select`in e){let t=sg(e.select);if(cg(t))return t.toggle?eg():$h(null);if(lg(t)){if(!t.encodings)throw Error(`Interval selection "`+e.name+`" must have encodings defined!`);return tg(t.encodings)}throw Error(`Unknown selection config for parameter "`+e.name+`".`)}if(`expr`in e){let r=n??t?.createExpression(e.expr);if(!r)throw Error(`Cannot evaluate expression for parameter "`+e.name+`".`);return r(null)}return`value`in e?e.value:null}function vg(e,t,n,r,i={}){let a={...t},o=new Set,s=!1,c=!1,l=i.batchMode??`microtask`;r?.(()=>{c=!0,o.clear(),s=!1});let u=()=>{if(c)return;if(!n||o.size===0){s=!1;return}let e=new Set(o);o.clear(),s=!1,n(e)},d=t=>{c||(o.add(t),s||(s=!0,queueMicrotask(()=>{c||(l==`whenPropagated`&&e.whenPropagated?e.whenPropagated().then(u).catch(()=>{u()}):u())})))};for(let[i,o]of Object.entries(t))if(z(o))if(n){let t=()=>d(i),n=e.watchExpression?e.watchExpression(o.expr,t,{scopeOwned:!r,registerDisposer:r}):e.createExpression(o.expr);if(!e.watchExpression){let e=n.subscribe(t);r?.(e)}Object.defineProperty(a,i,{enumerable:!0,get(){return n()}})}else{let t=e.createExpression(o.expr);Object.defineProperty(a,i,{enumerable:!0,get(){return t()}})}else a[i]=o;return a}function yg(e){return Object.assign(()=>e,{subscribe:()=>()=>void 0,invalidate:()=>void 0,identifier:()=>`constant`,fields:[],globals:[],code:JSON.stringify(e)})}function bg(e,t,n=!0){let r,i=e=>void 0;return function(...a){return new Promise((o,s)=>{n&&i(`debounced`),clearTimeout(r),i=s,r=window.setTimeout(()=>{clearTimeout(r),i=e=>void 0,o(e(...a))},typeof t==`function`?t():t)})}}var xg=class extends Qm{#e=new AbortController;#t=[0,0];#n=[0,0];#r=0;params;setupDebouncing(e){let t=()=>pg(e.debounce),n=e.debounceMode;if(n==`domain`)this.onDomainChanged=bg(this.onDomainChanged.bind(this),t,!1);else if(n==`window`)this.loadInterval=bg(this.loadInterval.bind(this),t,!1);else throw Error(`Invalid debounceMode: `+n)}onDomainChanged(e){this.#n=e;let t=pg(this.params?.windowSize)??-1;e[1]-e[0]>t||this.callIfWindowsChanged(e,t,async e=>{await this.initializedPromise,this.loadInterval(e)})}reloadLastDomain(){let e=this.#n;this.#n=[0,0],this.#t=[0,0],this._lastLoadedDomain=void 0,this.onDomainChanged(e)}async loadInterval(e){}publishData(e){let t=this._lastLoadedDomain;super.publishData(e),t&&(this._lastLoadedDomain=t)}async discretizeAndLoad(e,t){this.#e.abort(),this.setLoadingStatus(`loading`),this.#e=new AbortController;let n=this.#e.signal,r=this.genome.continuousToDiscreteChromosomeIntervals(e),i=typeof t==`function`?{load:t}:t;try{let t=i.loadBatch?await i.loadBatch(r,n):await Promise.all(r.map(async e=>i.load(e,n)));if(t.length!==r.length)throw Error(`Batched lazy loader must return one chunk per interval.`);if(!n.aborted)return this.setLoadingStatus(`complete`),this._lastLoadedDomain=Array.from(e),t}catch(e){if(!n.aborted)throw this.setLoadingStatus(`error`,e.message),e}}callIfWindowsChanged(e,t,n){let r=[Math.max(Math.floor(e[0]/t)*t,0),Math.min(Math.ceil(e[1]/t)*t,this.genome.totalSize)],i=this.#t;(t!==this.#r||r[0]<i[0]||r[1]>i[1])&&(this.#t=r,this.#r=t,n(r))}},Sg=n((()=>{}));async function Cg(e){return e.bytes?e.bytes():new Uint8Array(await e.arrayBuffer())}var wg=n((()=>{})),Tg,Eg=n((()=>{wg(),Tg=class{blob;constructor(e){this.blob=e}async read(e,t=0){return e===0?new Uint8Array:Cg(this.blob.slice(t,t+e))}async readFile(e){let t=typeof e==`string`?e:e?.encoding;if(t===`utf8`)return this.blob.text();if(t)throw Error(`unsupported encoding: ${t}`);return Cg(this.blob)}stat(){return Promise.resolve({size:this.blob.size})}close(){return Promise.resolve()}}}));function Dg(e){return(typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:`${e}`).replace(/\.$/,``)}var Og,kg=n((()=>{wg(),Og=class{url;_stat;fetchImplementation;baseHeaders;baseOverrides;constructor(e,t={}){this.url=e,this.baseHeaders=t.headers??{},this.baseOverrides=t.overrides??{},this.fetchImplementation=t.fetch??globalThis.fetch.bind(globalThis)}buildRequest(e,t){return{...this.baseOverrides,...e.overrides,headers:{...this.baseHeaders,...e.headers,...t},method:`GET`,redirect:`follow`,mode:`cors`,signal:e.signal}}async fetch(e,t){let n=t=>Error(`${Dg(t)} fetching ${e}`,{cause:t}),r;try{r=await this.fetchImplementation(e,t)}catch(i){if(`${i}`.includes(`Failed to fetch`)){console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{r=await this.fetchImplementation(e,{...t,cache:`reload`})}catch(e){throw n(e)}}else throw n(i)}return r}async read(e,t,n={}){if(e===0)return new Uint8Array;if(Number.isNaN(e)||Number.isNaN(t))throw TypeError(`read() called with NaN length or position (length=${e}, position=${t}). The index file may be corrupt.`);let r=await this.fetch(this.url,this.buildRequest(n,{range:`bytes=${t}-${t+e-1}`}));if(r.status===416)return new Uint8Array;if(!r.ok)throw Error(`HTTP ${r.status} fetching ${this.url}`);if(r.status===200&&t===0||r.status===206){let t=r.headers.get(`content-range`),n=/\/(\d+)$/.exec(t??``);n?.[1]&&(this._stat={size:parseInt(n[1],10)});let i=await Cg(r);return!this._stat&&r.status===200&&(this._stat={size:i.byteLength}),i.byteLength<=e?i:i.subarray(0,e)}throw Error(r.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${r.status} fetching ${this.url}`)}async readFile(e={}){let t=typeof e==`string`?e:e.encoding,n=typeof e==`string`?{}:e,r=await this.fetch(this.url,this.buildRequest(n));if(!r.ok)throw Error(`HTTP ${r.status} fetching ${this.url}`);if(t===`utf8`)return r.text();if(t)throw Error(`unsupported encoding: ${t}`);return Cg(r)}async stat(){return this._stat||await this.read(10,0),this._stat??{size:0}}close(){return Promise.resolve()}}})),Ag=r({BlobFile:()=>Tg,LocalFile:()=>jg,RemoteFile:()=>Og}),jg,Mg=n((()=>{Sg(),Eg(),kg(),jg=class{readFile(){return Promise.reject(Error(`unimplemented`))}read(){return Promise.reject(Error(`unimplemented`))}stat(){return Promise.reject(Error(`unimplemented`))}close(){return Promise.reject(Error(`unimplemented`))}}}));function Ng(e,t=0){let n=e.getUint32(t,!0);return e.getUint32(t+4,!0)*4294967296+n}var Pg=n((()=>{}));function Fg(e,t){let n=Array(t+1);n[0]=[0,0];let r=new DataView(e.buffer,e.byteOffset,e.byteLength);for(let e=0;e<t;e+=1){let t=e*Lg;n[e+1]=[Ng(r,t),Ng(r,t+8)]}return n}function Ig(e,t){let n=0,r=e.length;for(;n<r;){let i=n+r>>>1;e[i][1]<=t?n=i+1:r=i}return n}var Lg,Rg,zg=n((()=>{Pg(),Lg=16,Rg=class{filehandle;index;constructor({filehandle:e}){this.filehandle=e}_getIndex(){return this.index||=this._readIndex().catch(e=>{throw this.index=void 0,e}),this.index}async _readIndex(){let e=await this.filehandle.read(8,0),t=Ng(new DataView(e.buffer,e.byteOffset,e.byteLength));if(t===0)return[[0,0]];if(t>(2**53-1)/Lg)throw TypeError(`integer overflow`);return Fg(await this.filehandle.read(Lg*t,8),t)}async getRelevantBlocksForRead(e,t){if(e===0)return{blocks:[],nextCompressedPosition:void 0};let n=await this._getIndex(),r=t+e,i=Ig(n,t)-1,a=i+1;for(;a<n.length&&n[a][1]<r;)a+=1;return{blocks:n.slice(i,a),nextCompressedPosition:n[a]?.[0]}}}})),Bg=n((()=>{}));function Vg(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Hg(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var n=t.shift();if(n){if(typeof n!=`object`)throw TypeError(n+`must be non-object`);for(var r in n)Vg(n,r)&&(e[r]=n[r])}}return e}function Ug(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)}var Wg,Gg,Kg,qg,Jg,Yg,Xg,Zg,Qg=n((()=>{Wg={arraySet:function(e,t,n,r,i){if(t.subarray&&e.subarray){e.set(t.subarray(n,n+r),i);return}for(var a=0;a<r;a++)e[i+a]=t[n+a]},flattenChunks:function(e){var t,n,r=0,i,a,o;for(t=0,n=e.length;t<n;t++)r+=e[t].length;for(o=new Uint8Array(r),i=0,t=0,n=e.length;t<n;t++)a=e[t],o.set(a,i),i+=a.length;return o},Buf8:function(e){return new Uint8Array(e)},Buf16:function(e){return new Uint16Array(e)},Buf32:function(e){return new Int32Array(e)}},Gg={arraySet:function(e,t,n,r,i){for(var a=0;a<r;a++)e[i+a]=t[n+a]},flattenChunks:function(e){return[].concat.apply([],e)},Buf8:function(e){return Array(e)},Buf16:function(e){return Array(e)},Buf32:function(e){return Array(e)}},Kg=()=>{let e=typeof Uint8Array<`u`&&typeof Uint16Array<`u`&&typeof Int32Array<`u`;return Kg=()=>e,e},qg=(e,t,n,r,i)=>(qg=Kg()?Wg.arraySet:Gg.arraySet,qg(e,t,n,r,i)),Jg=e=>(Jg=Kg()?Wg.flattenChunks:Gg.flattenChunks,Jg(e)),Yg=e=>(Yg=Kg()?Wg.Buf8:Gg.Buf8,Yg(e)),Xg=e=>(Xg=Kg()?Wg.Buf16:Gg.Buf16,Xg(e)),Zg=e=>(Zg=Kg()?Wg.Buf32:Gg.Buf32,Zg(e))}));function $g(e){var t,n,r,i,a,o=e.length,s=0;for(i=0;i<o;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),s+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(s),a=0,i=0;a<s;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t}function e_(e,t){if(t<65534&&(e.subarray&&a_()||!e.subarray&&i_()))return String.fromCharCode.apply(null,Ug(e,t));for(var n=``,r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n}function t_(e){for(var t=new Uint8Array(e.length),n=0,r=t.length;n<r;n++)t[n]=e.charCodeAt(n);return t}function n_(e,t){var n,r,i,a,o=t||e.length,s=Array(o*2);for(r=0,n=0;n<o;){if(i=e[n++],i<128){s[r++]=i;continue}if(a=o_(i),a>4){s[r++]=65533,n+=a-1;continue}for(i&=a===2?31:a===3?15:7;a>1&&n<o;)i=i<<6|e[n++]&63,a--;if(a>1){s[r++]=65533;continue}i<65536?s[r++]=i:(i-=65536,s[r++]=55296|i>>10&1023,s[r++]=56320|i&1023)}return e_(s,r)}function r_(e,t){var n;for(t||=e.length,t>e.length&&(t=e.length),n=t-1;n>=0&&(e[n]&192)==128;)n--;return n<0||n===0?t:n+o_(e[n])>t?n:t}var i_,a_,o_,s_=n((()=>{Qg(),i_=function(){let e=!0;try{String.fromCharCode.apply(null,[0])}catch{e=!1}return i_=()=>e,e},a_=function(){let e=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{e=!1}return a_=()=>e,e},o_=function(e){for(var t=Yg(256),n=0;n<256;n++)t[n]=n>=252?6:n>=248?5:n>=240?4:n>=224?3:n>=192?2:1;return t[254]=t[254]=1,o_=e=>t[e],t[e]}}));function c_(){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}var l_=n((()=>{}));function u_(e,t,n,r){for(var i=e&65535|0,a=e>>>16&65535|0,o=0;n!==0;){o=n>2e3?2e3:n,n-=o;do i=i+t[r++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0}var d_=n((()=>{}));function f_(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t}function p_(e,t,n,r){var i=m_(),a=r+n;e^=-1;for(var o=r;o<a;o++)e=e>>>8^i[(e^t[o])&255];return e^-1}var m_,h_=n((()=>{m_=function(){let e=f_();return m_=()=>e,e}}));function g_(e,t){var n=e.state,r=e.next_in,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T=e.input,E;i=r+(e.avail_in-5),a=e.next_out,E=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),c=n.dmax,l=n.wsize,u=n.whave,d=n.wnext,f=n.window,p=n.hold,m=n.bits,h=n.lencode,g=n.distcode,_=(1<<n.lenbits)-1,v=(1<<n.distbits)-1;top:do{m<15&&(p+=T[r++]<<m,m+=8,p+=T[r++]<<m,m+=8),y=h[p&_];dolen:for(;;){if(b=y>>>24,p>>>=b,m-=b,b=y>>>16&255,b===0)E[a++]=y&65535;else if(b&16){x=y&65535,b&=15,b&&(m<b&&(p+=T[r++]<<m,m+=8),x+=p&(1<<b)-1,p>>>=b,m-=b),m<15&&(p+=T[r++]<<m,m+=8,p+=T[r++]<<m,m+=8),y=g[p&v];dodist:for(;;){if(b=y>>>24,p>>>=b,m-=b,b=y>>>16&255,b&16){if(S=y&65535,b&=15,m<b&&(p+=T[r++]<<m,m+=8,m<b&&(p+=T[r++]<<m,m+=8)),S+=p&(1<<b)-1,S>c){e.msg=`invalid distance too far back`,n.mode=__;break top}if(p>>>=b,m-=b,b=a-o,S>b){if(b=S-b,b>u&&n.sane){e.msg=`invalid distance too far back`,n.mode=__;break top}if(C=0,w=f,d===0){if(C+=l-b,b<x){x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}}else if(d<b){if(C+=l+d-b,b-=d,b<x){x-=b;do E[a++]=f[C++];while(--b);if(C=0,d<x){b=d,x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}}}else if(C+=d-b,b<x){x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}for(;x>2;)E[a++]=w[C++],E[a++]=w[C++],E[a++]=w[C++],x-=3;x&&(E[a++]=w[C++],x>1&&(E[a++]=w[C++]))}else{C=a-S;do E[a++]=E[C++],E[a++]=E[C++],E[a++]=E[C++],x-=3;while(x>2);x&&(E[a++]=E[C++],x>1&&(E[a++]=E[C++]))}}else if(b&64){e.msg=`invalid distance code`,n.mode=__;break top}else{y=g[(y&65535)+(p&(1<<b)-1)];continue dodist}break}}else if(!(b&64)){y=h[(y&65535)+(p&(1<<b)-1)];continue dolen}else if(b&32){n.mode=v_;break top}else{e.msg=`invalid literal/length code`,n.mode=__;break top}break}}while(r<i&&a<s);x=m>>3,r-=x,m-=x<<3,p&=(1<<m)-1,e.next_in=r,e.next_out=a,e.avail_in=r<i?5+(i-r):5-(r-i),e.avail_out=a<s?257+(s-a):257-(a-s),n.hold=p,n.bits=m}var __,v_,y_=n((()=>{__=30,v_=12}));function b_(e,t,n,r,i,a,o,s){var c=s.bits,l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=0,v=0,y,b,x,S,C,w=null,T=0,E,ee=Xg(x_+1),te=Xg(x_+1),ne=null,re=0,ie,ae,oe;for(l=0;l<=x_;l++)ee[l]=0;for(u=0;u<r;u++)ee[t[n+u]]++;for(p=c,f=x_;f>=1&&ee[f]===0;f--);if(p>f&&(p=f),f===0)return i[a++]=20971520,i[a++]=20971520,s.bits=1,0;for(d=1;d<f&&ee[d]===0;d++);for(p<d&&(p=d),g=1,l=1;l<=x_;l++)if(g<<=1,g-=ee[l],g<0)return-1;if(g>0&&(e===w_||f!==1))return-1;for(te[1]=0,l=1;l<x_;l++)te[l+1]=te[l]+ee[l];for(u=0;u<r;u++)t[n+u]!==0&&(o[te[t[n+u]]++]=u);if(e===w_?(w=ne=o,E=19):e===T_?(w=D_,T-=257,ne=O_,re-=257,E=256):(w=k_,ne=A_,E=-1),v=0,u=0,l=d,C=a,m=p,h=0,x=-1,_=1<<p,S=_-1,e===T_&&_>S_||e===E_&&_>C_)return 1;for(;;){ie=l-h,o[u]<E?(ae=0,oe=o[u]):o[u]>E?(ae=ne[re+o[u]],oe=w[T+o[u]]):(ae=96,oe=0),y=1<<l-h,b=1<<m,d=b;do b-=y,i[C+(v>>h)+b]=ie<<24|ae<<16|oe|0;while(b!==0);for(y=1<<l-1;v&y;)y>>=1;if(y===0?v=0:(v&=y-1,v+=y),u++,--ee[l]===0){if(l===f)break;l=t[n+o[u]]}if(l>p&&(v&S)!==x){for(h===0&&(h=p),C+=d,m=l-h,g=1<<m;m+h<f&&(g-=ee[m+h],!(g<=0));)m++,g<<=1;if(_+=1<<m,e===T_&&_>S_||e===E_&&_>C_)return 1;x=v&S,i[x]=p<<24|m<<16|C-a|0}}return v!==0&&(i[C+v]=l-h<<24|4194304),s.bits=p,0}var x_,S_,C_,w_,T_,E_,D_,O_,k_,A_,j_=n((()=>{Qg(),x_=15,S_=852,C_=592,w_=0,T_=1,E_=2,D_=[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],O_=[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],k_=[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],A_=[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 M_(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function N_(){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=Xg(320),this.work=Xg(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function P_(e){var t;return!e||!e.state?$_:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=``,t.wrap&&(e.adler=t.wrap&1),t.mode=iv,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=Zg(Fv),t.distcode=t.distdyn=Zg(Iv),t.sane=1,t.back=-1,X_)}function F_(e){var t;return!e||!e.state?$_:(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,P_(e))}function I_(e,t){var n,r;return!e||!e.state||(r=e.state,t<0?(n=0,t=-t):(n=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?$_:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,F_(e))}function L_(e,t){var n,r;return e?(r=new N_,e.state=r,r.window=null,n=I_(e,t),n!==X_&&(e.state=null),n):$_}function R_(e){if(Lv){var t;for(Rv=Zg(512),zv=Zg(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(b_(G_,e.lens,0,288,Rv,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;b_(K_,e.lens,0,32,zv,0,e.work,{bits:5}),Lv=!1}e.lencode=Rv,e.lenbits=9,e.distcode=zv,e.distbits=5}function z_(e,t,n,r){var i,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=Yg(a.wsize)),r>=a.wsize?(qg(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),qg(a.window,t,n-r,i,a.wnext),r-=i,r?(qg(a.window,t,n-r,r,0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0}function B_(e,t){var n,r,i,a,o,s,c,l,u,d,f,p,m,h,g=0,_,v,y,b,x,S,C,w,T=Yg(4),E,ee,te=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return $_;n=e.state,n.mode===hv&&(n.mode=gv),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,d=s,f=c,w=X_;inf_leave:for(;;)switch(n.mode){case iv:if(n.wrap===0){n.mode=gv;break}for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.wrap&2&&l===35615){n.check=0,T[0]=l&255,T[1]=l>>>8&255,n.check=p_(n.check,T,2,0),l=0,u=0,n.mode=av;break}if(n.flags=0,n.head&&(n.head.done=!1),!(n.wrap&1)||(((l&255)<<8)+(l>>8))%31){e.msg=`incorrect header check`,n.mode=B;break}if((l&15)!==rv){e.msg=`unknown compression method`,n.mode=B;break}if(l>>>=4,u-=4,C=(l&15)+8,n.wbits===0)n.wbits=C;else if(C>n.wbits){e.msg=`invalid window size`,n.mode=B;break}n.dmax=1<<C,e.adler=n.check=1,n.mode=l&512?pv:hv,l=0,u=0;break;case av:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.flags=l,(n.flags&255)!==rv){e.msg=`unknown compression method`,n.mode=B;break}if(n.flags&57344){e.msg=`unknown header flags set`,n.mode=B;break}n.head&&(n.head.text=l>>8&1),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=p_(n.check,T,2,0)),l=0,u=0,n.mode=ov;case ov:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.time=l),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,T[2]=l>>>16&255,T[3]=l>>>24&255,n.check=p_(n.check,T,4,0)),l=0,u=0,n.mode=sv;case sv:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.xflags=l&255,n.head.os=l>>8),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=p_(n.check,T,2,0)),l=0,u=0,n.mode=cv;case cv:if(n.flags&1024){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length=l,n.head&&(n.head.extra_len=l),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=p_(n.check,T,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=lv;case lv:if(n.flags&1024&&(p=n.length,p>s&&(p=s),p&&(n.head&&(C=n.head.extra_len-n.length,n.head.extra||(n.head.extra=Array(n.head.extra_len)),qg(n.head.extra,r,a,p,C)),n.flags&512&&(n.check=p_(n.check,r,p,a)),s-=p,a+=p,n.length-=p),n.length))break inf_leave;n.length=0,n.mode=uv;case uv:if(n.flags&2048){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.name+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&(n.check=p_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.name=null);n.length=0,n.mode=dv;case dv:if(n.flags&4096){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.comment+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&(n.check=p_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.comment=null);n.mode=fv;case fv:if(n.flags&512){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l!==(n.check&65535)){e.msg=`header crc mismatch`,n.mode=B;break}l=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=hv;break;case pv:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}e.adler=n.check=M_(l),l=0,u=0,n.mode=mv;case mv:if(n.havedict===0)return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,Q_;e.adler=n.check=1,n.mode=hv;case hv:if(t===J_||t===Y_)break inf_leave;case gv:if(n.last){l>>>=u&7,u-=u&7,n.mode=Av;break}for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}switch(n.last=l&1,l>>>=1,--u,l&3){case 0:n.mode=_v;break;case 1:if(R_(n),n.mode=Cv,t===Y_){l>>>=2,u-=2;break inf_leave}break;case 2:n.mode=bv;break;case 3:e.msg=`invalid block type`,n.mode=B}l>>>=2,u-=2;break;case _v:for(l>>>=u&7,u-=u&7;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if((l&65535)!=(l>>>16^65535)){e.msg=`invalid stored block lengths`,n.mode=B;break}if(n.length=l&65535,l=0,u=0,n.mode=vv,t===Y_)break inf_leave;case vv:n.mode=yv;case yv:if(p=n.length,p){if(p>s&&(p=s),p>c&&(p=c),p===0)break inf_leave;qg(i,r,a,p,o),s-=p,a+=p,c-=p,o+=p,n.length-=p;break}n.mode=hv;break;case bv:for(;u<14;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.nlen=(l&31)+257,l>>>=5,u-=5,n.ndist=(l&31)+1,l>>>=5,u-=5,n.ncode=(l&15)+4,l>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg=`too many length or distance symbols`,n.mode=B;break}n.have=0,n.mode=xv;case xv:for(;n.have<n.ncode;){for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.lens[te[n.have++]]=l&7,l>>>=3,u-=3}for(;n.have<19;)n.lens[te[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,E={bits:n.lenbits},w=b_(W_,n.lens,0,19,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid code lengths set`,n.mode=B;break}n.have=0,n.mode=Sv;case Sv:for(;n.have<n.nlen+n.ndist;){for(;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(y<16)l>>>=_,u-=_,n.lens[n.have++]=y;else{if(y===16){for(ee=_+2;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l>>>=_,u-=_,n.have===0){e.msg=`invalid bit length repeat`,n.mode=B;break}C=n.lens[n.have-1],p=3+(l&3),l>>>=2,u-=2}else if(y===17){for(ee=_+3;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=3+(l&7),l>>>=3,u-=3}else{for(ee=_+7;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=11+(l&127),l>>>=7,u-=7}if(n.have+p>n.nlen+n.ndist){e.msg=`invalid bit length repeat`,n.mode=B;break}for(;p--;)n.lens[n.have++]=C}}if(n.mode===B)break;if(n.lens[256]===0){e.msg=`invalid code -- missing end-of-block`,n.mode=B;break}if(n.lenbits=9,E={bits:n.lenbits},w=b_(G_,n.lens,0,n.nlen,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid literal/lengths set`,n.mode=B;break}if(n.distbits=6,n.distcode=n.distdyn,E={bits:n.distbits},w=b_(K_,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,E),n.distbits=E.bits,w){e.msg=`invalid distances set`,n.mode=B;break}if(n.mode=Cv,t===Y_)break inf_leave;case Cv:n.mode=wv;case wv:if(s>=6&&c>=258){e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,g_(e,f),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,n.mode===hv&&(n.back=-1);break}for(n.back=0;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(v&&!(v&240)){for(b=_,x=v,S=y;g=n.lencode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,n.length=y,v===0){n.mode=kv;break}if(v&32){n.back=-1,n.mode=hv;break}if(v&64){e.msg=`invalid literal/length code`,n.mode=B;break}n.extra=v&15,n.mode=Tv;case Tv:if(n.extra){for(ee=n.extra;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Ev;case Ev:for(;g=n.distcode[l&(1<<n.distbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(!(v&240)){for(b=_,x=v,S=y;g=n.distcode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,v&64){e.msg=`invalid distance code`,n.mode=B;break}n.offset=y,n.extra=v&15,n.mode=Dv;case Dv:if(n.extra){for(ee=n.extra;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.offset+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg=`invalid distance too far back`,n.mode=B;break}n.mode=Ov;case Ov:if(c===0)break inf_leave;if(p=f-c,n.offset>p){if(p=n.offset-p,p>n.whave&&n.sane){e.msg=`invalid distance too far back`,n.mode=B;break}p>n.wnext?(p-=n.wnext,m=n.wsize-p):m=n.wnext-p,p>n.length&&(p=n.length),h=n.window}else h=i,m=o-n.offset,p=n.length;p>c&&(p=c),c-=p,n.length-=p;do i[o++]=h[m++];while(--p);n.length===0&&(n.mode=wv);break;case kv:if(c===0)break inf_leave;i[o++]=n.length,c--,n.mode=wv;break;case Av:if(n.wrap){for(;u<32;){if(s===0)break inf_leave;s--,l|=r[a++]<<u,u+=8}if(f-=c,e.total_out+=f,n.total+=f,f&&(e.adler=n.check=n.flags?p_(n.check,i,f,o-f):u_(n.check,i,f,o-f)),f=c,(n.flags?l:M_(l))!==n.check){e.msg=`incorrect data check`,n.mode=B;break}l=0,u=0}n.mode=jv;case jv:if(n.wrap&&n.flags){for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l!==(n.total&4294967295)){e.msg=`incorrect length check`,n.mode=B;break}l=0,u=0}n.mode=Mv;case Mv:w=Z_;break inf_leave;case B:w=ev;break inf_leave;case Nv:return tv;case Pv:default:return $_}return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,(n.wsize||f!==e.avail_out&&n.mode<B&&(n.mode<Av||t!==q_))&&z_(e,e.output,e.next_out,f-e.avail_out)?(n.mode=Nv,tv):(d-=e.avail_in,f-=e.avail_out,e.total_in+=d,e.total_out+=f,n.total+=f,n.wrap&&f&&(e.adler=n.check=n.flags?p_(n.check,i,f,e.next_out-f):u_(n.check,i,f,e.next_out-f)),e.data_type=n.bits+(n.last?64:0)+(n.mode===hv?128:0)+(n.mode===Cv||n.mode===vv?256:0),(d===0&&f===0||t===q_)&&w===X_&&(w=nv),w)}function V_(e){if(!e||!e.state)return $_;var t=e.state;return t.window&&=null,e.state=null,X_}function H_(e,t){var n;return!e||!e.state||(n=e.state,!(n.wrap&2))?$_:(n.head=t,t.done=!1,X_)}function U_(e,t){var n=t.length,r,i,a;return!e||!e.state||(r=e.state,r.wrap!==0&&r.mode!==mv)?$_:r.mode===mv&&(i=1,i=u_(i,t,n,0),i!==r.check)?ev:(a=z_(e,t,n,n),a?(r.mode=Nv,tv):(r.havedict=1,X_))}var W_,G_,K_,q_,J_,Y_,X_,Z_,Q_,$_,ev,tv,nv,rv,iv,av,ov,sv,cv,lv,uv,dv,fv,pv,mv,hv,gv,_v,vv,yv,bv,xv,Sv,Cv,wv,Tv,Ev,Dv,Ov,kv,Av,jv,Mv,B,Nv,Pv,Fv,Iv,Lv,Rv,zv,Bv=n((()=>{d_(),h_(),y_(),j_(),Qg(),W_=0,G_=1,K_=2,q_=4,J_=5,Y_=6,X_=0,Z_=1,Q_=2,$_=-2,ev=-3,tv=-4,nv=-5,rv=8,iv=1,av=2,ov=3,sv=4,cv=5,lv=6,uv=7,dv=8,fv=9,pv=10,mv=11,hv=12,gv=13,_v=14,vv=15,yv=16,bv=17,xv=18,Sv=19,Cv=20,wv=21,Tv=22,Ev=23,Dv=24,Ov=25,kv=26,Av=27,jv=28,Mv=29,B=30,Nv=31,Pv=32,Fv=852,Iv=592,Lv=!0})),Vv,Hv=n((()=>{Vv={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 Uv(){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 Wv=n((()=>{}));function Gv(e,t){var n=new qv(t);if(n.push(e,!0),n.err)throw n.msg||Vv[n.err];return n.result}var Kv,qv,Jv,Yv=n((()=>{Qg(),s_(),Bg(),l_(),Bv(),Hv(),Wv(),Kv=Object.prototype.toString,qv=class e{constructor(t){if(!(this instanceof e))return new e(t);this.options=Hg({chunkSize:16384,windowBits:0,to:``},t||{});var n=this.options;n.raw&&n.windowBits>=0&&n.windowBits<16&&(n.windowBits=-n.windowBits,n.windowBits===0&&(n.windowBits=-15)),n.windowBits>=0&&n.windowBits<16&&!(t&&t.windowBits)&&(n.windowBits+=32),n.windowBits>15&&n.windowBits<48&&(n.windowBits&15||(n.windowBits|=15)),this.err=0,this.msg=``,this.ended=!1,this.chunks=[],this.strm=new Uv,this.strm.avail_out=0;var r=L_(this.strm,n.windowBits);if(r!==0||(this.header=new c_,H_(this.strm,this.header),n.dictionary&&(typeof n.dictionary==`string`?n.dictionary=$g(n.dictionary):Kv.call(n.dictionary)===`[object ArrayBuffer]`&&(n.dictionary=new Uint8Array(n.dictionary)),n.raw&&(r=U_(this.strm,n.dictionary),r!==0))))throw Error(Vv[r])}push(e,t){var n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,o,s,c,l,u,d=!1;if(this.ended)return!1;o=t===~~t?t:t===!0?4:0,typeof e==`string`?n.input=t_(e):Kv.call(e)===`[object ArrayBuffer]`?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=Yg(r),n.next_out=0,n.avail_out=r),a=B_(n,0),a===2&&i&&(u=typeof i==`string`?$g(i):Kv.call(i)===`[object ArrayBuffer]`?new Uint8Array(i):i,a=U_(this.strm,u)),a===-5&&d===!0&&(a=0,d=!1),a!==1&&a!==0)return this.onEnd(a),this.ended=!0,!1;n.next_out&&(n.avail_out===0||a===1||n.avail_in===0&&(o===4||o===2))&&(this.options.to===`string`?(s=r_(n.output,n.next_out),c=n.next_out-s,l=n_(n.output,s),n.next_out=c,n.avail_out=r-c,c&&qg(n.output,n.output,s,c,0),this.onData(l)):this.onData(Ug(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(d=!0)}while((n.avail_in>0||n.avail_out===0)&&a!==1);return a===1&&(o=4),o===4?(a=V_(this.strm),this.onEnd(a),this.ended=!0,a===0):o===2?(this.onEnd(0),n.avail_out=0,!0):!0}onData(e){this.chunks.push(e)}onEnd(e){e===0&&(this.options.to===`string`?this.result=this.chunks.join(``):this.result=Jg(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}},Jv=Gv})),Xv=n((()=>{})),Zv=n((()=>{Bg(),Yv(),Xv()}));function Qv(e){try{let a=V.__wbindgen_add_to_stack_pointer(-16),o=dy(e,V.__wbindgen_export2),s=jy;V.decompress_all(a,o,s);var t=oy().getInt32(a+0,!0),n=oy().getInt32(a+4,!0),r=oy().getInt32(a+8,!0);if(oy().getInt32(a+12,!0))throw fy(r);var i=ay(t,n).slice();return V.__wbindgen_export(t,n*1,1),i}finally{V.__wbindgen_add_to_stack_pointer(16)}}function $v(e,t,n,r,i){try{let s=V.__wbindgen_add_to_stack_pointer(-16),c=dy(e,V.__wbindgen_export2),l=jy;V.decompress_chunk_slice(s,c,l,t,n,r,i);var a=oy().getInt32(s+0,!0),o=oy().getInt32(s+4,!0);if(oy().getInt32(s+8,!0))throw fy(o);return xy.__wrap(a)}finally{V.__wbindgen_add_to_stack_pointer(16)}}function ey(e,t){return ny(Error(cy(e,t)))}function ty(e,t){throw Error(cy(e,t))}function ny(e){Dy===Ey.length&&Ey.push(Ey.length+1);let t=Dy;return Dy=Ey[t],Ey[t]=e,t}function ry(e){e<1028||(Ey[e]=Dy,Dy=e)}function iy(e,t){return e>>>=0,sy().subarray(e/8,e/8+t)}function ay(e,t){return e>>>=0,ly().subarray(e/1,e/1+t)}function oy(){return(Cy===null||Cy.buffer.detached===!0||Cy.buffer.detached===void 0&&Cy.buffer!==V.memory.buffer)&&(Cy=new DataView(V.memory.buffer)),Cy}function sy(){return(wy===null||wy.byteLength===0)&&(wy=new Float64Array(V.memory.buffer)),wy}function cy(e,t){return py(e>>>0,t)}function ly(){return(Ty===null||Ty.byteLength===0)&&(Ty=new Uint8Array(V.memory.buffer)),Ty}function uy(e){return Ey[e]}function dy(e,t){let n=t(e.length*1,1)>>>0;return ly().set(e,n/1),jy=e.length,n}function fy(e){let t=uy(e);return ry(e),t}function py(e,t){return Ay+=t,Ay>=ky&&(Oy=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),Oy.decode(),Ay=t),Oy.decode(ly().subarray(e,e+t))}function my(e){V=e}async function hy(){return My||(Ny||=(async()=>{let e=await(await fetch(by)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":yy});return My=t.exports,my(My),My})(),Ny)}async function gy(e){return await hy(),Qv(e)}async function _y(e,t,n,r,i){await hy();let a=$v(e,t,n,r,i),o=a.take_buffer(),s=[...a.take_cpositions()],c=[...a.take_dpositions()];return a.free(),{buffer:o,cpositions:s,dpositions:c}}var vy,yy,by,xy,Sy,Cy,wy,Ty,Ey,Dy,Oy,ky,Ay,jy,V,My,Ny,Py=n((()=>{vy={},vy.d=(e,t)=>{for(var n in t)vy.o(t,n)&&!vy.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},vy.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),vy.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},yy={},vy.r(yy),vy.d(yy,{ChunkSliceResult:()=>xy,__wbg_Error_ef53bc310eb298a0:()=>ey,__wbg___wbindgen_throw_1506f2235d1bdba0:()=>ty,__wbg_set_wasm:()=>my,decompress_all:()=>Qv,decompress_chunk_slice:()=>$v}),by=`data:application/wasm;base64,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ADYCACADQRitQiCGIAOthDcDCEGfgsAAIANBCGogAhAxAAs0AAJAIAFpQQFHDQAgAEGAgICAeCABa0sNAAJAIABFDQAQaSAAIAEQVyIBRQ0BCyABDwsAC0AAAkAgACgCAEGAgICAeEYNACABIAAoAgQgACgCCBBMDwsgASgCACABKAIEIAAoAgwoAgAiACgCACAAKAIEEAsLOQACQCACQYCAxABGDQAgACACIAEoAhARBQBFDQBBAQ8LAkAgAw0AQQAPCyAAIAMgBCABKAIMEQcACzUBAX8CQCAARQ0AAkAgASgCACICRQ0AIAAgAhECAAsgASgCBCICRQ0AIAAgAiABKAIIEFILCyoBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADIAA2AgQgA0EEahBjAAstAQF/IwBBEGsiASQAIAEgACkCADcCCCABQQhqQZCUwAAgACgCCEEBQQAQFgALLAIBfwF+IwBBEGsiASQAIAApAgAhAiABIAA2AgwgASACNwIEIAFBBGoQZQALIwEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJBCGoQZAALIAACQCABKAIARQ0AIABByJbAADYCBCAAIAE2AgAPCwALHgEBfwJAIAAoAgAiAkUNACABIAIgACgCBBBMDwsACxsBAX8QaSAAQQRqQQQQVyIBIAA2AgAgAUEEagseAQF/AkAgACgCACIBQQFIDQAgACgCBCABQQEQUgsLHgAgACgCACAAKAIEQQAoAtSZQCIAQQMgABsRBAAACyMBAX8CQEGMicAAECwiAA0AQcCIwABBOkH8iMAAEDcACyAACx8AAkAgAEGAgICAeHJBgICAgHhGDQAgASAAQQEQUgsLHAEBfwJAIAAoAgAiAUUNACAAKAIEIAFBARBSCwsXAAJAIAFBCUkNACABIAAQDw8LIAAQAgsVACAAQXxqIgAgACgCAEEEakEEEFILFAACQCAARQ0AIAAgARBeAAsQVQALEQAgACABQQF0QQFyIAIQMQALEgACQCABRQ0AIAAgASACEFILCxIAIAAgASACIAMgBEEAIAUQAwsVAAJAIABFDQAgACAAKAKoWhECAAsLGgAgAEEAKQKUlUA3AgggAEEAKQKMlUA3AgALGgAgAEEAKQKElUA3AgggAEEAKQL8lEA3AgALFgAgACgCACABIAIgACgC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AAGAAAACgAAAA4AAAASAAAAFgAAABoAAAAeAAAAIgAAACYAAAAqAAAALgAAADIAAAA2AAAAOgAAAD4AAABCAAAARgAAAEoAAABOAAAAUgAAAFYAAABaAAAAXgAAAGIAAABmAAAAagAAAG4AAAByAAAAdgAAAHoAAAB+AAAAggAAAIYAAACKAAAAjgAAAJIAAACWAAAAmgAAAJ4AAACiAAAApgAAAKoAAACuAAAAsgAAALYAAAC6AAAAvgAAAMIAAADGAAAAygAAAM4AAADSAAAA1gAAANoAAADeAAAA4gAAAOYAAADqAAAA7gAAAPIAAAD2AAAA+gAAAP4AAAECAAABBgAAAQoAAAEOAAABEgAAARYAAAEaAAABHgAAASIAAAEmAAABKgAAAS4AAAEyAAABNgAAAToAAAE+AAABQgAAAUYAAAFKAAABTgAAAVIAAAFWAAABWgAAAV4AAAFiAAABZgAAAWoAAAFuAAABcgAAAXYAAAF6AAABfgAAAYIAAAGGAAABigAAAY4AAAGSAAABlgAAAZoAAAGeAAABogAAAaYAAAGqAAABrgAAAbIAAAG2AAABugAAAb4AAAHCAAABxgAAAcoAAAHOAAAB0gAAAdYAAAHaAAAB3gAAAeIAAAHmAAAB6gAAAe4AAAHyAAAB9gAAAfoAAAH+AAACAgAAAgYAAAIKAAACDgAAAhIAAAIWAAACGgAAAh4AAAIiAAACJgAAAioAAAIuAAACMgAAAjYAAAI6AAACPgAAAkIAAAJGAAACSgAAAk4AAAJSAAACVgAAAloAAAJeAAACYgAAAmYAAAJqAAACbgAAAnIAAAJ2AAACegAAAn4AAAKCAAAChgAAAooAAAKOAAACkgAAApYAAAKaAAACngAAAqIAAAKmAAACqgAAAq4AAAKyAAACtgAAAroAAAK+AAACwgAAAsYAAALKAAACzgAAAtIAAALWAAAC2gAAAt4AAALiAAAC5gAAAuoAAALuAAAC8gAAAvYAAAL6AAAC/gAAAwIAAAMGAAADCgAAAw4AAAMSAAADFgAAAxoAAAMeAAADIgAAAyYAAAMqAAADLgAAAzIAAAM2AAADOgAAAz4AAANCAAADRgAAA0oAAANOAAADUgAAA1YAAANaAAADXgAAA2IAAANmAAADagAAA24AAANyAAADdgAAA3oAAAN+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAAAO6AAADvgAAA8IAAAPGAAADygAAA84AAAPSAAAD1gAAA9oAAAPeAAAD4gAAA+YAAAPqAAAD7gAAA/IAAAP2AAAD+gAAA/4AAoAAAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgABAAsAAQANAAEADwABABEAAgATAAIAFwACABsAAgAfAAMAIwADACsAAwAzAAMAOwAEAEMABABTAAQAYwAEAHMABQCDAAUAowAFAMMABQDjAAAAAgEAAAIBAAACAQAAAAAIAAAABAAAAAQAAAAFAAAABgAAAAcAAAAIAAAADAAAAAQAAAAJAAAACgAAAAsAAAAAAAAACAAAAAQAAAAMAAAADQAAAA4AAAAPAAAAEAAAABAAAAAEAAAAEQAAABIAAAATAAAABwAAAG1dy9YsUOtjeEGmV3Ebi7krgVsBvYZR7Ay0wpzkyccEYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZAAAOAIQACoAAACxBAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplIDw9IHNpemUgKyBtYXhfb3ZlcmhlYWQAADgCEAAqAAAAtwQAAA0AAAByd2xvY2sgb3ZlcmZsb3dlZCByZWFkIGxvY2tzIQEQAF0AAAAVAAAALAAAAAAAAAAIAAAABAAAABQAAAAIAAAADAAAAAQAAAAVAAAAcndsb2NrIGhhcyBub3QgYmVlbiBsb2NrZWQgZm9yIHJlYWRpbmcAACEBEABdAAAAPgAAAAkAAABjYXBhY2l0eSBvdmVyZmxvdwAAAOcBEABQAAAAHAAAAAUAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OVJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZABBpJnAAAsEBAAAAAApBG5hbWUBIgFWH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIAPAlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMjYuNAx3YXNtLWJpbmRnZW4HMC4yLjEyMg==`,xy=class e{static __wrap(t){let n=Object.create(e.prototype);return n.__wbg_ptr=t,Sy.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Sy.unregister(this),e}free(){let e=this.__destroy_into_raw();V.__wbg_chunksliceresult_free(e,0)}take_buffer(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.chunksliceresult_take_buffer(r,this.__wbg_ptr);var e=oy().getInt32(r+0,!0),t=oy().getInt32(r+4,!0),n=ay(e,t).slice();return V.__wbindgen_export(e,t*1,1),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}take_cpositions(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.chunksliceresult_take_cpositions(r,this.__wbg_ptr);var e=oy().getInt32(r+0,!0),t=oy().getInt32(r+4,!0),n=iy(e,t).slice();return V.__wbindgen_export(e,t*8,8),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}take_dpositions(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.chunksliceresult_take_dpositions(r,this.__wbg_ptr);var e=oy().getInt32(r+0,!0),t=oy().getInt32(r+4,!0),n=iy(e,t).slice();return V.__wbindgen_export(e,t*8,8),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(xy.prototype[Symbol.dispose]=xy.prototype.free),Sy=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>V.__wbg_chunksliceresult_free(e,1)),Cy=null,wy=null,Ty=null,Ey=Array(1024).fill(void 0),Ey.push(void 0,null,!0,!1),Dy=Ey.length,Oy=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),Oy.decode(),ky=2146435072,Ay=0,jy=0,My=null,Ny=null}));function Fy(e){return e[0]===31&&e[1]===139}function Iy(e){return e instanceof Error?e.message:`${e}`}async function Ly(e){if(typeof DecompressionStream<`u`){let t=new Blob([e]).stream().pipeThrough(new DecompressionStream(`gzip`));return new Uint8Array(await new Response(t).arrayBuffer())}else return Jv(e,void 0)}function Ry(e){return Iy(e).includes(`invalid gzip header`)?Error(`problem decompressing block: incorrect gzip header check`,{cause:e}):e}async function zy(e){try{return await gy(e)}catch(t){if(Iy(t).includes(`invalid bgzf header`)){if(Fy(e))return Ly(e);throw Error(`problem decompressing block: not a valid bgzf or gzip block`,{cause:t})}throw Ry(t)}}async function By(e,t){let{minv:n,maxv:r}=t;try{let t=await _y(e,n.blockPosition,n.dataPosition,r.blockPosition,r.dataPosition);return{buffer:t.buffer,cpositions:t.cpositions,dpositions:t.dpositions}}catch(e){throw Ry(e)}}var Vy=n((()=>{Zv(),Py()}));function Hy(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Uy=n((()=>{}));function Wy(e){let t=0,n=[],r=()=>{t--,n.shift()?.()};return async i=>{t>=e&&await new Promise(e=>{n.push(e)}),t++;try{return await i()}finally{r()}}}function Gy(e,t,n,r){let i=Math.max(0,n-t),a=Math.min(r,t+e.length)-t;return i<e.length?e.subarray(i,a):new Uint8Array}var Ky,qy,Jy,Yy=n((()=>{zg(),Vy(),Uy(),Ky=10,qy=65536,Jy=class{filehandle;gzi;limit;constructor({filehandle:e,gziFilehandle:t,blockConcurrency:n=Ky}){this.filehandle=e,this.gzi=new Rg({filehandle:t}),this.limit=Wy(n)}async _readAndUncompressBlock(e,t){return zy(await this.filehandle.read(t,e))}async read(e,t){let{blocks:n,nextCompressedPosition:r}=await this.gzi.getRelevantBlocksForRead(e,t);if(n.length===0)return new Uint8Array;let i=t+e;return Hy(await Promise.all(n.map(([e,a],o)=>this.limit(async()=>{let s=n[o+1]?.[0]??r??e+qy;return Gy(await this._readAndUncompressBlock(e,s-e),a,t,i)}))))}}})),Xy=n((()=>{Yy(),Vy()}));function Zy(e,t,n,r){return e+t*Math.floor(r/n)+r%n}async function Qy(e,t={}){let n=new TextDecoder(`utf8`).decode(await e.readFile(t)),r=[],i=[],a=[],o=[],s=[],c={},l=0,u=n.length,d=0;for(;l<u;){let e=n.indexOf(`
|
|
193
|
+
`,l);e===-1&&(e=u);let t=n.slice(l,e);if(t.endsWith(`\r`)&&(t=t.slice(0,-1)),t=t.trim(),l=e+1,t.length===0)continue;let f=t.indexOf(` `),p=t.indexOf(` `,f+1),m=t.indexOf(` `,p+1),h=t.indexOf(` `,m+1),g=t.slice(0,f);if(g.startsWith(`>`))throw Error(`found > in sequence name, might have supplied FASTA file for the FASTA index`);r.push(g),a.push(+t.slice(f+1,p)),i.push(+t.slice(p+1,m)),o.push(+t.slice(m+1,h)),s.push(+t.slice(h+1)),c[g]=d,d++}return{names:r,nameToIndex:c,offsets:i,lengths:a,lineLengths:o,lineBytes:s}}var $y,eb=n((()=>{Mg(),$y=class{constructor({fasta:e,fai:t,path:n,faiPath:r}){if(e)this.fasta=e;else if(n)this.fasta=new jg(n);else throw Error(`Need to pass filehandle for fasta or path to localfile`);if(t)this.fai=t;else if(r)this.fai=new jg(r);else if(n)this.fai=new jg(`${n}.fai`);else throw Error(`Need to pass filehandle for or path to localfile`)}async _getIndexes(e){return this.indexes||=Qy(this.fai,e).catch(e=>{throw this.indexes=void 0,e}),this.indexes}async getSequenceNames(e){return(await this._getIndexes(e)).names}async getSequenceSizes(e){let t=await this._getIndexes(e);if(!t.sizesCache){let e={};for(let n=0;n<t.names.length;n++)e[t.names[n]]=t.lengths[n];t.sizesCache=e}return t.sizesCache}async getSequenceSize(e,t){let n=await this._getIndexes(t),r=n.nameToIndex[e];return r===void 0?void 0:n.lengths[r]}async hasReferenceSequence(e,t){return(await this._getIndexes(t)).nameToIndex[e]!==void 0}async getResiduesByName(e,t,n,r){let i=await this._getIndexes(r),a=i.nameToIndex[e];if(a!==void 0)return this._fetchFromIndex(i.offsets[a],i.lineBytes[a],i.lineLengths[a],i.lengths[a],t,n,r)}async getSequence(e,t,n,r){return this.getResiduesByName(e,t,n,r)}async _fetchFromIndex(e,t,n,r,i=0,a,o){let s=a;if(i<0)throw TypeError(`regionStart cannot be less than 0`);if((s===void 0||s>r)&&(s=r),i>=s)return``;let c=Zy(e,t,n,i),l=Zy(e,t,n,s)-c,u=new TextDecoder(`utf8`).decode(await this.fasta.read(l,c,o)).replace(/\s+/g,``);if(/[^\x20-\x7e]/.test(u.slice(0,1e3)))throw Error(`Non-ASCII characters detected in sequence. The file may be gzip compressed. Use BgzipIndexedFasta for bgzip files, or decompress the file.`);return u}}})),tb,nb=n((()=>{Xy(),Mg(),eb(),tb=class extends $y{constructor({fasta:e,path:t,fai:n,faiPath:r,gzi:i,gziPath:a}){super({fasta:e,path:t,fai:n,faiPath:r}),e&&i?this.fasta=new Jy({filehandle:e,gziFilehandle:i}):t&&a&&(this.fasta=new Jy({filehandle:new jg(t),gziFilehandle:new jg(a)}))}}})),rb=r({BgzipIndexedFasta:()=>tb,FetchableSmallFasta:()=>ab,IndexedFasta:()=>$y,parseSmallFasta:()=>ib});function ib(e){return e.split(`>`).filter(e=>/\S/.test(e)).map(e=>{let[t,...n]=e.split(`
|
|
194
|
+
`),[r,...i]=t.split(` `),a=n.join(``).replace(/\s/g,``);return{id:r,description:i.join(` `),sequence:a}})}var ab,ob=n((()=>{Mg(),nb(),eb(),ab=class{constructor({fasta:e,path:t}){if(e)this.fasta=e;else if(t)this.fasta=new jg(t);else throw Error(`Need to pass fasta or path`);this.data=this.fasta.readFile().then(e=>ib(new TextDecoder(`utf8`).decode(e)))}async fetch(e,t,n){let r=(await this.data).find(t=>t.id===e),i=n-t;if(!r)throw Error(`no sequence with id ${e} exists`);return r.sequence.slice(t,i)}async getSequenceNames(){return(await this.data).map(e=>e.id)}}})),sb=class extends xg{constructor(e,t){let n={channel:`x`,windowSize:7e3,debounce:200,debounceMode:`window`,...e};if(super(t,n.channel),this.params=n,!this.params.url)throw Error(`No URL provided for IndexedFastaSource`);this.setupDebouncing(this.params),this.initializedPromise=new Promise(e=>{Promise.all([Promise.resolve().then(()=>(ob(),rb)),Promise.resolve().then(()=>(Mg(),Ag))]).then(([{IndexedFasta:t},{RemoteFile:n}])=>{let r=e=>new n(ih(e,this.view.getBaseUrl()));this.fasta=new t({fasta:r(this.params.url),fai:r(this.params.indexUrl??this.params.url+`.fai`)}),e()})})}get label(){return`bigWigSource`}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.fasta.getSequence(e.chrom,e.startPos,e.endPos,{signal:t}).then(t=>{if(t!=null)return{chrom:e.chrom,start:e.startPos,sequence:t};console.log(`No sequence found for interval ${e.chrom}:${e.startPos}-${e.endPos}`)}));this.publishData([t.filter(e=>e!==void 0)])}};function cb(e){return e?.type==`indexedFasta`}Gm(cb,sb);function lb(e,t,n){let r=Number(!!n),i=Number(!n);return BigInt(e.getInt32(t,n)*i+e.getInt32(t+4,n)*r)<<db|BigInt(e.getUint32(t,n)*r+e.getUint32(t+4,n)*i)}function ub(e,t,n){let r=e.getUint32(t,n),i=e.getUint32(t+4,n),a=Number(!!n),o=Number(!n);return BigInt(r*o+i*a)<<db|BigInt(r*a+i*o)}var db,fb=n((()=>{db=BigInt(32)})),pb,mb=n((()=>{fb(),pb=(e,t)=>t in e,pb(DataView.prototype,`getBigInt64`)||(DataView.prototype.getBigInt64=function(e,t){return lb(this,e,t)}),pb(DataView.prototype,`getBigUint64`)||(DataView.prototype.getBigUint64=function(e,t){return ub(this,e,t)})})),hb,gb,_b=n((()=>{hb=class{},gb=class{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(e=new hb){if(this.signal.aborted)throw 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()}}})),vb,yb=n((()=>{vb=class{constructor(){this.callbacks=new Set}addCallback(e=()=>{}){this.callbacks.add(e),this.currentMessage&&e(this.currentMessage)}callback(e){this.currentMessage=e;for(let t of this.callbacks)t(e)}}})),bb,xb=n((()=>{_b(),yb(),bb=class e{constructor({fill:e,cache:t}){if(typeof e!=`function`)throw TypeError(`must pass a fill function`);if(typeof t!=`object`)throw TypeError(`must pass a cache object`);if(typeof t.get!=`function`||typeof t.set!=`function`||typeof t.delete!=`function`)throw 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,n,r){let i=new gb,a=new vb;a.addCallback(r);let o={aborter:i,promise:this.fillCallback(t,i.signal,e=>{a.callback(e)}),settled:!1,statusReporter:a,get aborted(){return this.aborter.signal.aborted}};o.aborter.addSignal(n),o.aborter.signal.addEventListener(`abort`,()=>{o.settled||this.evict(e,o)}),o.promise.then(()=>{o.settled=!0},()=>{o.settled=!0,this.evict(e,o)}).catch(e=>{throw console.error(e),e}),this.cache.set(e,o)}static checkSinglePromise(e,t){function n(){if(t?.aborted)throw Object.assign(Error(`aborted`),{code:`ERR_ABORTED`})}return e.then(e=>(n(),e),e=>{throw n(),e})}has(e){return this.cache.has(e)}get(t,n,r,i){if(!r&&n instanceof AbortSignal)throw TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");let a=this.cache.get(t);return a?a.aborted&&!a.settled?(this.evict(t,a),this.get(t,n,r,i)):a.settled?a.promise:(a.aborter.addSignal(r),a.statusReporter.addCallback(i),e.checkSinglePromise(a.promise,r)):(this.fill(t,n,r,i),e.checkSinglePromise(this.cache.get(t).promise,r))}delete(e){let t=this.cache.get(e);t&&(t.settled||t.aborter.abort(),this.cache.delete(e))}clear(){let e=this.cache.keys(),t=0;for(let n=e.next();!n.done;n=e.next())this.delete(n.value),t+=1;return t}}})),Sb=n((()=>{xb()})),Cb,H,U,wb,W,Tb,Eb,Db,Ob,kb,Ab,jb,Mb,Nb,Pb,Fb,Ib,Lb,Rb=n((()=>{Cb=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},H=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Lb=class extends Map{constructor(e={}){if(super(),U.add(this),wb.set(this,0),W.set(this,new Map),Tb.set(this,new Map),Eb.set(this,void 0),Db.set(this,void 0),Ob.set(this,void 0),!(e.maxSize&&e.maxSize>0))throw TypeError("`maxSize` must be a number greater than 0");if(typeof e.maxAge==`number`&&e.maxAge===0)throw TypeError("`maxAge` must be a number greater than 0");Cb(this,Eb,e.maxSize,`f`),Cb(this,Db,e.maxAge||1/0,`f`),Cb(this,Ob,e.onEviction,`f`)}get __oldCache(){return H(this,Tb,`f`)}get(e){if(H(this,W,`f`).has(e)){let t=H(this,W,`f`).get(e);return H(this,U,`m`,Mb).call(this,e,t)}if(H(this,Tb,`f`).has(e)){let t=H(this,Tb,`f`).get(e);if(!H(this,U,`m`,Ab).call(this,e,t))return H(this,U,`m`,Fb).call(this,e,t),t.value}}set(e,t,{maxAge:n=H(this,Db,`f`)}={}){let r=typeof n==`number`&&n!==1/0?Date.now()+n:void 0;return H(this,W,`f`).has(e)?H(this,W,`f`).set(e,{value:t,expiry:r}):H(this,U,`m`,Pb).call(this,e,{value:t,expiry:r}),this}has(e){return H(this,W,`f`).has(e)?!H(this,U,`m`,Ab).call(this,e,H(this,W,`f`).get(e)):H(this,Tb,`f`).has(e)?!H(this,U,`m`,Ab).call(this,e,H(this,Tb,`f`).get(e)):!1}peek(e){if(H(this,W,`f`).has(e))return H(this,U,`m`,Nb).call(this,e,H(this,W,`f`));if(H(this,Tb,`f`).has(e))return H(this,U,`m`,Nb).call(this,e,H(this,Tb,`f`))}expiresIn(e){let t=H(this,W,`f`).get(e)??H(this,Tb,`f`).get(e);if(t)return t.expiry?t.expiry-Date.now():1/0}delete(e){var t;let n=H(this,W,`f`).delete(e);return n&&Cb(this,wb,(t=H(this,wb,`f`),t--,t),`f`),H(this,Tb,`f`).delete(e)||n}clear(){H(this,W,`f`).clear(),H(this,Tb,`f`).clear(),Cb(this,wb,0,`f`)}resize(e){if(!(e&&e>0))throw TypeError("`maxSize` must be a number greater than 0");let t=[...H(this,U,`m`,Ib).call(this)],n=t.length-e;n<0?(Cb(this,W,new Map(t),`f`),Cb(this,Tb,new Map,`f`),Cb(this,wb,t.length,`f`)):(n>0&&H(this,U,`m`,kb).call(this,t.slice(0,n)),Cb(this,Tb,new Map(t.slice(n)),`f`),Cb(this,W,new Map,`f`),Cb(this,wb,0,`f`)),Cb(this,Eb,e,`f`)}evict(e=1){let t=e;if(!t||t<=0)return;let n=[...H(this,U,`m`,Ib).call(this)],r=Math.trunc(Math.min(t,Math.max(n.length-1,0)));r<=0||(H(this,U,`m`,kb).call(this,n.slice(0,r)),Cb(this,Tb,new Map(n.slice(r)),`f`),Cb(this,W,new Map,`f`),Cb(this,wb,0,`f`))}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[(wb=new WeakMap,W=new WeakMap,Tb=new WeakMap,Eb=new WeakMap,Db=new WeakMap,Ob=new WeakMap,U=new WeakSet,kb=function(e){if(typeof H(this,Ob,`f`)==`function`)for(let[t,n]of e)H(this,Ob,`f`).call(this,t,n.value)},Ab=function(e,t){return typeof t.expiry==`number`&&t.expiry<=Date.now()?(typeof H(this,Ob,`f`)==`function`&&H(this,Ob,`f`).call(this,e,t.value),this.delete(e)):!1},jb=function(e,t){if(!H(this,U,`m`,Ab).call(this,e,t))return t.value},Mb=function(e,t){return t.expiry?H(this,U,`m`,jb).call(this,e,t):t.value},Nb=function(e,t){let n=t.get(e);return H(this,U,`m`,Mb).call(this,e,n)},Pb=function(e,t){var n;H(this,W,`f`).set(e,t),Cb(this,wb,(n=H(this,wb,`f`),n++,n),`f`),H(this,wb,`f`)>=H(this,Eb,`f`)&&(Cb(this,wb,0,`f`),H(this,U,`m`,kb).call(this,H(this,Tb,`f`)),Cb(this,Tb,H(this,W,`f`),`f`),Cb(this,W,new Map,`f`))},Fb=function(e,t){H(this,Tb,`f`).delete(e),H(this,U,`m`,Pb).call(this,e,t)},Ib=function*(){for(let e of H(this,Tb,`f`)){let[t,n]=e;H(this,W,`f`).has(t)||H(this,U,`m`,Ab).call(this,t,n)||(yield e)}for(let e of H(this,W,`f`)){let[t,n]=e;H(this,U,`m`,Ab).call(this,t,n)||(yield e)}},Symbol.iterator)](){for(let e of H(this,W,`f`)){let[t,n]=e;H(this,U,`m`,Ab).call(this,t,n)||(yield[t,n.value])}for(let e of H(this,Tb,`f`)){let[t,n]=e;H(this,W,`f`).has(t)||H(this,U,`m`,Ab).call(this,t,n)||(yield[t,n.value])}}*entriesDescending(){let e=[...H(this,W,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];H(this,U,`m`,Ab).call(this,n,r)||(yield[n,r.value])}e=[...H(this,Tb,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];H(this,W,`f`).has(n)||H(this,U,`m`,Ab).call(this,n,r)||(yield[n,r.value])}}*entriesAscending(){for(let[e,t]of H(this,U,`m`,Ib).call(this))yield[e,t.value]}get size(){if(!H(this,wb,`f`))return H(this,Tb,`f`).size;let e=0;for(let t of H(this,Tb,`f`).keys())H(this,W,`f`).has(t)||e++;return Math.min(H(this,wb,`f`)+e,H(this,Eb,`f`))}get maxSize(){return H(this,Eb,`f`)}get maxAge(){return H(this,Db,`f`)}entries(){return this.entriesAscending()}forEach(e,t=this){for(let[n,r]of this.entriesAscending())e.call(t,r,n,this)}get[Symbol.toStringTag](){return`QuickLRU`}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.toString()}}}));function zb(e){if(e.length===0)return[];let t=e.toSorted((e,t)=>e.min-t.min),n=[],r=t[0];for(let e=1;e<t.length;e++){let i=t[e];i.min>r.max+1?(n.push(r),r=i):i.max>r.max&&(r={min:r.min,max:i.max})}return n.push(r),n}var Bb=n((()=>{}));function Vb(e){var t=mx[e];if(t!==void 0)return t.exports;var n=mx[e]={exports:{}};return px[e](n,n.exports,Vb),n.exports}function Hb(e,t,n,r,i,a){try{let u=G.__wbindgen_add_to_stack_pointer(-16),d=rx(e,G.__wbindgen_export),f=Ex,p=nx(t,G.__wbindgen_export),m=Ex,h=nx(n,G.__wbindgen_export),g=Ex;G.decompress_and_parse_bigwig(u,d,f,p,m,h,g,r,i,a);var o=Zb().getInt32(u+0,!0),s=Zb().getInt32(u+4,!0),c=Zb().getInt32(u+8,!0);if(Zb().getInt32(u+12,!0))throw ix(c);var l=Xb(o,s).slice();return G.__wbindgen_export2(o,s*1,1),l}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Ub(e,t,n,r,i,a,o){try{let d=G.__wbindgen_add_to_stack_pointer(-16),f=rx(e,G.__wbindgen_export),p=Ex,m=nx(t,G.__wbindgen_export),h=Ex,g=nx(n,G.__wbindgen_export),_=Ex;G.decompress_and_parse_summary(d,f,p,m,h,g,_,r,i,a,o);var s=Zb().getInt32(d+0,!0),c=Zb().getInt32(d+4,!0),l=Zb().getInt32(d+8,!0);if(Zb().getInt32(d+12,!0))throw ix(l);var u=Xb(s,c).slice();return G.__wbindgen_export2(s,c*1,1),u}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Wb(e,t){try{let o=G.__wbindgen_add_to_stack_pointer(-16),s=rx(e,G.__wbindgen_export),c=Ex;G.inflate_raw(o,s,c,t);var n=Zb().getInt32(o+0,!0),r=Zb().getInt32(o+4,!0),i=Zb().getInt32(o+8,!0);if(Zb().getInt32(o+12,!0))throw ix(i);var a=Xb(n,r).slice();return G.__wbindgen_export2(n,r*1,1),a}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Gb(e,t,n,r){try{let c=G.__wbindgen_add_to_stack_pointer(-16),l=rx(e,G.__wbindgen_export),u=Ex,d=nx(t,G.__wbindgen_export),f=Ex,p=nx(n,G.__wbindgen_export),m=Ex;G.inflate_raw_batch(c,l,u,d,f,p,m,r);var i=Zb().getInt32(c+0,!0),a=Zb().getInt32(c+4,!0),o=Zb().getInt32(c+8,!0);if(Zb().getInt32(c+12,!0))throw ix(o);var s=Xb(i,a).slice();return G.__wbindgen_export2(i,a*1,1),s}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Kb(e){try{let a=G.__wbindgen_add_to_stack_pointer(-16),o=rx(e,G.__wbindgen_export),s=Ex;G.inflate_raw_unknown_size(a,o,s);var t=Zb().getInt32(a+0,!0),n=Zb().getInt32(a+4,!0),r=Zb().getInt32(a+8,!0);if(Zb().getInt32(a+12,!0))throw ix(r);var i=Xb(t,n).slice();return G.__wbindgen_export2(t,n*1,1),i}finally{G.__wbindgen_add_to_stack_pointer(16)}}function qb(e,t){return Jb(Error(Qb(e,t)))}function Jb(e){Sx===xx.length&&xx.push(xx.length+1);let t=Sx;return Sx=xx[t],xx[t]=e,t}function Yb(e){e<1028||(xx[e]=Sx,Sx=e)}function Xb(e,t){return e>>>=0,ex().subarray(e/1,e/1+t)}function Zb(){return(vx===null||vx.buffer.detached===!0||vx.buffer.detached===void 0&&vx.buffer!==G.memory.buffer)&&(vx=new DataView(G.memory.buffer)),vx}function Qb(e,t){return ax(e>>>0,t)}function $b(){return(yx===null||yx.byteLength===0)&&(yx=new Uint32Array(G.memory.buffer)),yx}function ex(){return(bx===null||bx.byteLength===0)&&(bx=new Uint8Array(G.memory.buffer)),bx}function tx(e){return xx[e]}function nx(e,t){let n=t(e.length*4,4)>>>0;return $b().set(e,n/4),Ex=e.length,n}function rx(e,t){let n=t(e.length*1,1)>>>0;return ex().set(e,n/1),Ex=e.length,n}function ix(e){let t=tx(e);return Yb(e),t}function ax(e,t){return Tx+=t,Tx>=wx&&(Cx=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),Cx.decode(),Tx=t),Cx.decode(ex().subarray(e,e+t))}function ox(e){G=e}async function sx(){return Dx||(Ox||=(async()=>{let e=await(await fetch(gx)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./inflate_wasm_bg.js":hx});return ox(t.exports),Dx=t.exports,Dx})(),Ox)}async function cx(e,t,n,r){await sx();let i=Gb(e,t,n,r),a=new DataView(i.buffer,i.byteOffset,i.byteLength),o=a.getUint32(0,!0),s=4+(o+1)*4,c=Array(o+1);for(let e=0;e<=o;e++)c[e]=a.getUint32(4+e*4,!0);return{data:i.subarray(s),offsets:c}}function lx(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(t===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array};let n=4+t*4,r=n+t*4;return{starts:new Int32Array(e.buffer,e.byteOffset+4,t),ends:new Int32Array(e.buffer,e.byteOffset+n,t),scores:new Float32Array(e.buffer,e.byteOffset+r,t)}}function ux(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(t===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array};let n=4+t*4,r=n+t*4,i=r+t*4,a=i+t*4;return{starts:new Int32Array(e.buffer,e.byteOffset+4,t),ends:new Int32Array(e.buffer,e.byteOffset+n,t),scores:new Float32Array(e.buffer,e.byteOffset+r,t),minScores:new Float32Array(e.buffer,e.byteOffset+i,t),maxScores:new Float32Array(e.buffer,e.byteOffset+a,t)}}async function dx(e,t,n,r,i,a){return await sx(),lx(Hb(e,t,n,r,i,a))}async function fx(e,t,n,r,i,a,o){return await sx(),ux(Ub(e,t,n,r,i,a,o))}var px,mx,hx,gx,_x,vx,yx,bx,xx,Sx,Cx,wx,Tx,Ex,G,Dx,Ox,kx=n((()=>{px={},mx={},(()=>{var e=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,t;Vb.t=function(n,r){if(r&1&&(n=this(n)),r&8||typeof n==`object`&&n&&(r&4&&n.__esModule||r&16&&typeof n.then==`function`))return n;var i=Object.create(null);Vb.r(i);var a={};t||=[null,e({}),e([]),e(e)];for(var o=r&2&&n;(typeof o==`object`||typeof o==`function`)&&!~t.indexOf(o);o=e(o))Object.getOwnPropertyNames(o).forEach(e=>a[e]=()=>n[e]);return a.default=()=>n,Vb.d(i,a),i}})(),Vb.d=(e,t)=>{for(var n in t)Vb.o(t,n)&&!Vb.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},Vb.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Vb.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},hx={},Vb.r(hx),Vb.d(hx,{__wbg_Error_ef53bc310eb298a0:()=>qb,__wbg_set_wasm:()=>ox,decompress_and_parse_bigwig:()=>Hb,decompress_and_parse_summary:()=>Ub,inflate_raw:()=>Wb,inflate_raw_batch:()=>Gb,inflate_raw_unknown_size:()=>Kb}),gx=`data:application/wasm;base64,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AkH4AXEiAkHQnMAAaiEGIAJB2JzAAGooAgAhAgsgBiAANgIIIAIgADYCDCAAIAY2AgwgACACNgIIDAELIAggAiADaiIAQQNyNgIEIAggAGoiACAAKAIEQQFyNgIECyAIQQhqIgANAQsCQAJAAkACQAJAAkBBACgC4J5AIgAgA08NAAJAQQAoAuSeQCIAIANLDQAgAUEEakGEn8AAIANBr4AEakGAgHxxECsCQCABKAIEIgYNAEEAIQAMCAsgASgCDCEFQQBBACgC8J5AIAEoAggiCWoiADYC8J5AQQAgAEEAKAL0nkAiAiAAIAJLGzYC9J5AAkACQAJAQQAoAuyeQCICRQ0AQcCcwAAhAANAIAYgACgCACIIIAAoAgQiB2pGDQIgACgCCCIADQAMAwsLAkACQEEAKAL8nkAiAEUNACAGIABPDQELQQAgBjYC/J5AC0EAQf8fNgKAn0BBACAFNgLMnEBBACAJNgLEnEBBACAGNgLAnEBBAEHQnMAANgLcnEBBAEHYnMAANgLknEBBAEHQnMAANgLYnEBBAEHgnMAANgLsnEBBAEHYnMAANgLgnEBBAEHonMAANgL0nEBBAEHgnMAANgLonEBBAEHwnMAANgL8nEBBAEHonMAANgLwnEBBAEH4nMAANgKEnUBBAEHwnMAANgL4nEBBAEGAncAANgKMnUBBAEH4nMAANgKAnUBBAEGIncAANgKUnUBBAEGAncAANgKInUBBAEGQncAANgKcnUBBAEGIncAANgKQnUBBAEGQncAANgKYnUBBAEGYncAANgKknUBBAEGYncAANgKgnUBBAEGgncAANgKsnUBBAEGgncAANgKonUBBAEGoncAANgK0nUBBAEGoncAANgKwnUBBAEGwncAANgK8nUBBAEGwncAANgK4nUBBAEG4ncAANgLEnUBBAEG4ncAANgLAnUBBAEHAncAANgLMnUBBAEHAncAANgLInUBBAEHIncAANgLUnUBBAEHIncAANgLQnUBBAEHQncAANgLcnUBBAEHYncAANgLknUBBAEHQncAANgLYnUBBAEHgncAANgLsnUBBAEHYncAANgLgnUBBAEHoncAANgL0nUBBAEHgncAANgLonUBBAEHwncAANgL8nUBBAEHoncAANgLwnUBBAEH4ncAANgKEnkBBAEHwncAANgL4nUBBAEGAnsAANgKM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EGsiASQAIAEgACkCADcCCCABQQhqQdCUwAAgACgCCEEBQQAQGAALLAIBfwF+IwBBEGsiASQAIAApAgAhAiABIAA2AgwgASACNwIEIAFBBGoQawALIwEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJBCGoQagALIAACQCABKAIARQ0AIABBiJfAADYCBCAAIAE2AgAPCwALHgEBfwJAIAAoAgAiAkUNACABIAIgACgCBBBTDwsACx8AIAFB04fAAEHMh8AAIAAtAAAiABtBEUEHIAAbEFMLGwEBfxBvIABBBGpBBBBgIgEgADYCACABQQRqCx4BAX8CQCAAKAIAIgFBAUgNACAAKAIEIAFBARBaCwseACAAKAIAIAAoAgRBACgCrJtAIgBBBCAAGxEEAAALIwEBfwJAQcyJwAAQMSIADQBBgInAAEE6QbyJwAAQPAALIAALHwACQCAAQYCAgIB4ckGAgICAeEYNACABIABBARBaCwscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEFoLCxcAAkAgAUEJSQ0AIAEgABAODwsgABABCxwBAX8CQCAAKAIAIgFFDQAgACgCBCABQQEQWgsLFQAgAEF8aiIAIAAoAgBBBGpBBBBaCxQAAkAgAEUNACAAIAEQZAALEF0ACxEAIAAgAUEBdEEBciACEDYACxIAAkAgAUUNACAAIAEgAhBaCwsSACAAIAEgAiADIARBACAFEAILFQACQCAARQ0AIAAgACgCqFoRAgALCxoAIABBACkC1JVANwIIIABBACkCzJVANwIACxoAIABBACkCxJVANwIIIABBACkCvJVANwIACxYAIAAoAgAgASACIAAoAgQoAgwRBwALFAAgACgCACABIAAoAgQoAgwRBQALDQAgACABIAIgAxAIDwsUAEEAIAA2AoSbQEEAQQE2AoCbQAsTACAAQYiXwAA2AgQgACABNgIACxAAIAEgACgCACAAKAIEEFMLEAAgASAAKAIAIAAoAgQQCwsLACAAIAEgAhAsDwsKACAAIAEQbhoACw8AIABB7JTAACABIAIQDAsRAEHgl8AAQSNB9JfAABA2AAsPACAAQYSYwAAgASACEAwLCwAgACMAaiQAIwALCQAgACABEEkPCwkAIAAgARAzDwsJACABIAAQPwALDAAgACABKQIANwMACwkAIAEgABBiAAsNACABQZSZwABBBRBTCw0AIAFB4ZrAAEEYEAsLCAAgACABEAALCQAgACgCABBQCwcAIAAQPQALBwAgABBFAAsHACAAECgACwsAQQBBAToAhJ9ACwkAIABBADYCAAsFABBwAAsDAA8LAwAACwuPGwIAQYCAwAAL+RoWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABJyYW5nZSBzdGFydCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAABByYW5nZSBlbmQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAWZGVjb21wcmVzc2lvbiBmYWlsZWQ6IMAAwAI6IMAAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9yd2xvY2svbm9fdGhyZWFkcy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjEyMi9zcmMvZXh0ZXJucmVmLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9saWJkZWZsYXRlci0xLjI1LjIvc3JjL2xpYi5ycwAAAADOAhAACgAAAEAAAAALAAAAzgIQAAoAAABYAAAACwAAAM4CEAAKAAAASQAAABMA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`,_x=Vb.t(gx),vx=null,yx=null,bx=null,xx=Array(1024).fill(void 0),xx.push(void 0,null,!0,!1),Sx=xx.length,Cx=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),Cx.decode(),wx=2146435072,Tx=0,Ex=0,ox(_x),Dx=null,Ox=null}));function Ax(e){let t=new Uint32Array(e.length),n=new Uint32Array(e.length);for(let r=0;r<e.length;r++){let i=e[r];t[r]=i.offset,n[r]=i.length}return{inputOffsets:t,inputLengths:n}}async function jx(e,t,n){let{inputOffsets:r,inputLengths:i}=Ax(t);return cx(e,r,i,n)}async function Mx(e,t,n,r,i){let{inputOffsets:a,inputLengths:o}=Ax(t);return dx(e,a,o,n,r,i)}async function Nx(e,t,n,r,i,a){let{inputOffsets:o,inputLengths:s}=Ax(t);return fx(e,o,s,n,r,i,a)}var Px=n((()=>{kx()}));function Fx(e,t=0){return new DataView(e.buffer,e.byteOffset+t,e.length-t)}function Ix(e,t,n){let r=e.indexOf(0,t),i=r!==-1&&r<t+n?r:t+n;return Rx.decode(e.subarray(t,i))}function Lx(e){e.sort((e,t)=>e.offset-t.offset);let t=[],n,r;for(let i of e)n&&i.offset-r<=2e3?(n.length=i.offset+i.length-n.offset,n.blocks.push(i),r=i.offset+i.length):(n={blocks:[i],length:i.length,offset:i.offset},t.push(n),r=i.offset+i.length);return t}var Rx,zx=n((()=>{Rx=new TextDecoder(`utf8`)}));function Bx(e,t,n,r){return e<r&&t>n}function Vx(e,t){let n=[],r=0,i=Fx(e);for(;r<e.byteLength;){let e=i.getUint32(r,!0);r+=4;let a=i.getUint32(r,!0);r+=4;let o=i.getUint32(r,!0);r+=4;let s=i.getUint32(r,!0);r+=4;let c=i.getFloat32(r,!0);r+=4;let l=i.getFloat32(r,!0);r+=4;let u=i.getFloat32(r,!0);r+=8,(!t||e===t.chrId&&Bx(a,o,t.start,t.end))&&n.push({start:a,end:o,maxScore:l,minScore:c,summary:!0,score:s?u/s:0})}return n}function Hx(e,t,n){let r=[],i=0,a=Fx(e);for(;i<e.byteLength;){let o=i,s=a.getUint32(i,!0);i+=4;let c=a.getInt32(i,!0);i+=4;let l=a.getInt32(i,!0);i+=4;let u=e.indexOf(0,i),d=u===-1?e.length:u,f=Rx.decode(e.subarray(i,d));i=d+1,(!n||s===n.chrId&&Bx(c,l,n.start,n.end))&&r.push({start:c,end:l,rest:f,uniqueId:`bb-${t}-${o}`})}return r}function Ux(e,t){let n=Fx(e),r=n.getInt32(4,!0),i=n.getUint32(12,!0),a=n.getUint32(16,!0),o=n.getUint8(20),s=n.getUint16(22,!0),c=24,l=[];switch(o){case 1:for(let e=0;e<s;e++){let e=n.getInt32(c,!0);c+=4;let r=n.getInt32(c,!0);c+=4;let i=n.getFloat32(c,!0);c+=4,(!t||Bx(e,r,t.start,t.end))&&l.push({start:e,end:r,score:i})}break;case 2:for(let e=0;e<s;e++){let e=n.getInt32(c,!0);c+=4;let r=n.getFloat32(c,!0);c+=4;let i=e+a;(!t||Bx(e,i,t.start,t.end))&&l.push({score:r,start:e,end:i})}break;case 3:for(let e=0;e<s;e++){let o=n.getFloat32(c,!0);c+=4;let s=r+e*i,u=s+a;(!t||Bx(s,u,t.start,t.end))&&l.push({score:o,start:s,end:u})}break}return l}function Wx(e,t){let n=Fx(e),r=n.getInt32(4,!0),i=n.getUint32(12,!0),a=n.getUint32(16,!0),o=n.getUint8(20),s=n.getUint16(22,!0),c=new Int32Array(s),l=new Int32Array(s),u=new Float32Array(s);if(!t){switch(o){case 1:{let e=24;for(let t=0;t<s;t++)c[t]=n.getInt32(e,!0),l[t]=n.getInt32(e+4,!0),u[t]=n.getFloat32(e+8,!0),e+=12;return{starts:c,ends:l,scores:u}}case 2:{let e=24;for(let t=0;t<s;t++){let r=n.getInt32(e,!0);c[t]=r,l[t]=r+a,u[t]=n.getFloat32(e+4,!0),e+=8}return{starts:c,ends:l,scores:u}}case 3:{let e=24;for(let t=0;t<s;t++){let o=r+t*i;c[t]=o,l[t]=o+a,u[t]=n.getFloat32(e,!0),e+=4}return{starts:c,ends:l,scores:u}}}return{starts:c,ends:l,scores:u}}let d=t.start,f=t.end,p=0;switch(o){case 1:{let e=24;for(let t=0;t<s;t++){let t=n.getInt32(e,!0),r=n.getInt32(e+4,!0);t<f&&r>d&&(c[p]=t,l[p]=r,u[p]=n.getFloat32(e+8,!0),p++),e+=12}break}case 2:{let e=24;for(let t=0;t<s;t++){let t=n.getInt32(e,!0),r=t+a;t<f&&r>d&&(c[p]=t,l[p]=r,u[p]=n.getFloat32(e+4,!0),p++),e+=8}break}case 3:{let e=24;for(let t=0;t<s;t++){let o=r+t*i,s=o+a;o<f&&s>d&&(c[p]=o,l[p]=s,u[p]=n.getFloat32(e,!0),p++),e+=4}break}}return p<s?{starts:c.subarray(0,p),ends:l.subarray(0,p),scores:u.subarray(0,p)}:{starts:c,ends:l,scores:u}}function Gx(e,t){let n=Fx(e),r=Math.floor(e.byteLength/32),i=new Int32Array(r),a=new Int32Array(r),o=new Float32Array(r),s=new Float32Array(r),c=new Float32Array(r),l=0,u=0;for(;u<e.byteLength;){let e=n.getUint32(u,!0);u+=4;let r=n.getUint32(u,!0);u+=4;let d=n.getUint32(u,!0);u+=4;let f=n.getUint32(u,!0);u+=4;let p=n.getFloat32(u,!0);u+=4;let m=n.getFloat32(u,!0);u+=4;let h=n.getFloat32(u,!0);u+=8,(!t||e===t.chrId&&Bx(r,d,t.start,t.end))&&(i[l]=r,a[l]=d,o[l]=f?h/f:0,s[l]=p,c[l]=m,l++)}return l<r?{starts:i.subarray(0,l),ends:a.subarray(0,l),scores:o.subarray(0,l),minScores:s.subarray(0,l),maxScores:c.subarray(0,l)}:{starts:i,ends:a,scores:o,minScores:s,maxScores:c}}function Kx(e,t,n){if(e.length===1)return e[0];let r=new n(t),i=0;for(let t of e)r.set(t,i),i+=t.length;return r}function qx(e,t,n,r){switch(e){case`summary`:return Vx(t,r);case`bigwig`:return Ux(t,r);case`bigbed`:return Hx(t,n,r);default:return console.warn(`Don't know what to do with ${e}`),[]}}var Jx,Yx,Xx=n((()=>{Sb(),Rb(),Bb(),Px(),zx(),Jx=610839776,Yx=class{bbi;refsByName;rTreeOffset;uncompressBufSize;blockType;rTreePromise;rTreeNodeCache=new bb({cache:new Lb({maxSize:1e3}),fill:async({length:e,offset:t},n)=>this.bbi.read(e,t,{signal:n})});constructor(e,t,n,r,i){if(this.bbi=e,this.refsByName=t,this.rTreeOffset=n,this.uncompressBufSize=r,this.blockType=i,!(n>=0))throw Error(`invalid rTreeOffset!`)}async _collectBlocks(e,t,n,r){let i=this.refsByName[e];if(i===void 0)return;this.rTreePromise||=this.bbi.read(48,this.rTreeOffset,r).catch(e=>{throw this.rTreePromise=void 0,e});let a=Fx(await this.rTreePromise),o=a.getUint32(0,!0);if(o!==Jx)throw Error(`invalid cirTree magic: 0x${o.toString(16)} (expected 0x${Jx.toString(16)}) at offset ${this.rTreeOffset}, file may be corrupt or unsupported`);let s=4+a.getUint32(4,!0)*32,c=(e,r,a,o)=>(e<i||e===i&&r<=n)&&(a>i||a===i&&o>=t),l=[],u=[this.rTreeOffset+48];for(;u.length>0;){let e=zb(u.map(e=>({min:e,max:e+s}))),t=[];for(let{min:n,max:i}of e){let e=i-n,a=n,o=await this.rTreeNodeCache.get(`${e}_${a}`,{length:e,offset:a},r?.signal);for(let e of u)if(n<=e&&e<=i){let n=Fx(o.subarray(e-a)),r=n.getUint8(0),i=n.getUint16(2,!0);if(r===1||r===0){let e=r===1?32:24,a=4;for(let o=0;o<i;o++){if(c(n.getUint32(a,!0),n.getUint32(a+4,!0),n.getUint32(a+8,!0),n.getUint32(a+12,!0))){let e=Number(n.getBigUint64(a+16,!0));if(r===1){let t=Number(n.getBigUint64(a+24,!0));l.push({offset:e,length:t})}else t.push(e)}a+=e}}}}u=t}return{blocks:l,chrId:i}}async readWigData(e,t,n,r){let i=await this._collectBlocks(e,t,n,r);if(!i)return[];let{blocks:a,chrId:o}=i;return this.readFeatures(a,{...r,request:{chrId:o,start:t,end:n}})}async readWigDataMulti(e,t={}){let n=e.map(()=>[]),r=new Map,i=new Map;for(let n=0;n<e.length;n++){let{refName:a,start:o,end:s}=e[n],c=await this._collectBlocks(a,o,s,t);if(c){let e={chrId:c.chrId,start:o,end:s};for(let t of c.blocks){let a=i.get(t.offset);a?a.push({regionIndex:n,request:e}):(r.set(t.offset,t),i.set(t.offset,[{regionIndex:n,request:e}]))}}}let{blockType:a,uncompressBufSize:o}=this,{signal:s}=t,c=(e,t)=>{let r=i.get(t);if(r)for(let{regionIndex:i,request:o}of r){let r=qx(a,e,t,o);for(let e of r)n[i].push(e)}};for(let e of Lx([...r.values()])){let t=await this.bbi.read(e.length,e.offset,{signal:s}),n=e.offset,r=e.blocks;if(o>0){let{data:e,offsets:i}=await jx(t,r.map(e=>({offset:e.offset-n,length:e.length})),o);for(let t=0;t<r.length;t++)c(e.subarray(i[t],i[t+1]),r[t].offset)}else for(let e of r){let r=e.offset-n;c(t.subarray(r,r+e.length),e.offset)}}return n}async readWigDataAsArrays(e,t,n,r){let i=await this._collectBlocks(e,t,n,r);return this.blockType===`summary`?i?this._readSummaryFeaturesAsArrays(i.blocks,{chrId:i.chrId,start:t,end:n},r):{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array,isSummary:!0}:i?this._readBigWigFeaturesAsArrays(i.blocks,{chrId:i.chrId,start:t,end:n},r):{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,isSummary:!1}}async readFeatures(e,t={}){let{blockType:n,uncompressBufSize:r}=this,{signal:i,request:a}=t,o=Lx(e),s=[];for(let e of o){let t=await this.bbi.read(e.length,e.offset,{signal:i}),o=e.offset,c=e.blocks;if(r>0){let{data:e,offsets:i}=await jx(t,c.map(e=>({offset:e.offset-o,length:e.length})),r);for(let t=0;t<c.length;t++){let r=qx(n,e.subarray(i[t],i[t+1]),c[t].offset,a);for(let e of r)s.push(e)}}else for(let e of c){let r=e.offset-o,i=qx(n,t.subarray(r,r+e.length),e.offset,a);for(let e of i)s.push(e)}}return s}async _readBlocksAsArrays(e,t,n,r,i){let a=[];for(let o of Lx(e)){let e=await this.bbi.read(o.length,o.offset,{signal:t}),s=o.blocks.map(e=>({offset:e.offset-o.offset,length:e.length}));if(this.uncompressBufSize>0){let t=await n(e,s);i(t)>0&&a.push(t)}else for(let t of s){let n=r(e.subarray(t.offset,t.offset+t.length));i(n)>0&&a.push(n)}}return a}async _readBigWigFeaturesAsArrays(e,t,n={}){let r=await this._readBlocksAsArrays(e,n.signal,(e,n)=>Mx(e,n,this.uncompressBufSize,t.start,t.end),e=>Wx(e,t),e=>e.starts.length),i=r.reduce((e,t)=>e+t.starts.length,0);return{starts:Kx(r.map(e=>e.starts),i,Int32Array),ends:Kx(r.map(e=>e.ends),i,Int32Array),scores:Kx(r.map(e=>e.scores),i,Float32Array),isSummary:!1}}async _readSummaryFeaturesAsArrays(e,t,n={}){let r=await this._readBlocksAsArrays(e,n.signal,(e,n)=>Nx(e,n,this.uncompressBufSize,t.chrId,t.start,t.end),e=>Gx(e,t),e=>e.starts.length),i=r.reduce((e,t)=>e+t.starts.length,0);return{starts:Kx(r.map(e=>e.starts),i,Int32Array),ends:Kx(r.map(e=>e.ends),i,Int32Array),scores:Kx(r.map(e=>e.scores),i,Float32Array),minScores:Kx(r.map(e=>e.minScores),i,Float32Array),maxScores:Kx(r.map(e=>e.maxScores),i,Float32Array),isSummary:!0}}}})),Zx,Qx,$x,eS=n((()=>{Mg(),Xx(),zx(),Zx=-2003829722,Qx=-2021002517,$x=class{bbi;headerP;renameRefSeqs;getHeader(e){return this.headerP||=this._getHeader(e).catch(e=>{throw this.headerP=void 0,e}),this.headerP}constructor(e){let{filehandle:t,renameRefSeqs:n=e=>e,path:r,url:i}=e;if(this.renameRefSeqs=n,t)this.bbi=t;else if(i)this.bbi=new Og(i);else if(r)this.bbi=new jg(r);else throw Error(`no file given`)}async _getHeader(e){let t=await this._getMainHeader(e),n=await this._readChromosomeTree(t,e);return{...t,...n}}async _getMainHeader(e,t=2e3){let n=await this.bbi.read(t,0,e),r=Fx(n),i=0,a=r.getInt32(i,!0);if(i+=4,a!==Zx&&a!==Qx)throw Error(`not a BigWig/BigBed file`);let o=r.getUint16(i,!0);i+=2;let s=r.getUint16(i,!0);i+=2;let c=Number(r.getBigUint64(i,!0));i+=8;let l=Number(r.getBigUint64(i,!0));i+=8;let u=Number(r.getBigUint64(i,!0));i+=8;let d=r.getUint16(i,!0);i+=2;let f=r.getUint16(i,!0);i+=2;let p=Number(r.getBigUint64(i,!0));i+=8;let m=Number(r.getBigUint64(i,!0));i+=8;let h=r.getUint32(i,!0);i+=4;let g=Number(r.getBigUint64(i,!0));i+=8;let _=[];for(let e=0;e<s;e++){let e=r.getUint32(i,!0);i+=4,i+=4;let t=Number(r.getBigUint64(i,!0));i+=8;let n=Number(r.getBigUint64(i,!0));i+=8,_.push({reductionLevel:e,dataOffset:t,indexOffset:n})}let v=a===Qx?`bigbed`:`bigwig`,y=n.length<t,b=p!==0&&!n.includes(0,p);if(!y&&(p>t||m>t-40||b))return this._getMainHeader(e,t*2);let x;if(m){let e=Fx(n,m);x={basesCovered:Number(e.getBigUint64(0,!0)),scoreMin:e.getFloat64(8,!0),scoreMax:e.getFloat64(16,!0),scoreSum:e.getFloat64(24,!0),scoreSumSquares:e.getFloat64(32,!0)}}else throw Error(`no stats`);let S=``;if(p){let e=n.indexOf(0,p),t=e===-1?n.length:e;S=Rx.decode(n.subarray(p,t))}return{zoomLevels:_,magic:a,extHeaderOffset:g,numZoomLevels:s,fieldCount:d,totalSummary:x,definedFieldCount:f,uncompressBufSize:h,asOffset:p,chromosomeTreeOffset:c,totalSummaryOffset:m,unzoomedDataOffset:l,unzoomedIndexOffset:u,fileType:v,version:o,autoSql:S}}async _readChromosomeTree(e,t){let n=[],r={},i=e.chromosomeTreeOffset,a=Fx(await this.bbi.read(32,i,t)),o=a.getUint32(8,!0),s=a.getUint32(12,!0),c=async e=>{let i=Fx(await this.bbi.read(4,e,t)),a=i.getUint8(0),l=i.getUint16(2,!0);if(a){let i=await this.bbi.read(l*(o+s),e+4,t),a=Fx(i),c=0;for(let e=0;e<l;e++){let e=Ix(i,c,o);c+=o;let t=a.getUint32(c,!0);c+=4;let s=a.getUint32(c,!0);c+=4,r[this.renameRefSeqs(e)]=t,n[t]={name:e,id:t,length:s}}}else{let n=Fx(await this.bbi.read(l*(o+8),e+4,t)),r=[],i=0;for(let e=0;e<l;e++){i+=o;let e=Number(n.getBigUint64(i,!0));i+=8,r.push(c(e))}await Promise.all(r)}};return await c(i+32),{refsByName:r,refsByNumber:n}}viewCache=new Map;getOrCreateBlockView(e,t,n,r){let i=`${t}_${r}`,a=this.viewCache.get(i);return a||(a=new Yx(this.bbi,e,t,n,r),this.viewCache.set(i,a)),a}async getUnzoomedView(e){let{unzoomedIndexOffset:t,refsByName:n,uncompressBufSize:r,fileType:i}=await this.getHeader(e);return this.getOrCreateBlockView(n,t,r,i)}async _getView(e){let{basesPerSpan:t,scale:n}=e||{},r=t?1/t:n??1;return this.getView(r,e)}async getFeatures(e,t,n,r){return(await this._getView(r)).readWigData(this.renameRefSeqs(e),t,n,r)}async getFeaturesMulti(e,t){return(await this._getView(t)).readWigDataMulti(e.map(e=>({refName:this.renameRefSeqs(e.refName),start:e.start,end:e.end})),t)}async getFeaturesAsArrays(e,t,n,r){return(await this._getView(r)).readWigDataAsArrays(this.renameRefSeqs(e),t,n,r)}}})),tS,nS=n((()=>{eS(),tS=class extends $x{async getView(e,t){let{zoomLevels:n,refsByName:r,uncompressBufSize:i}=await this.getHeader(t),a=1/e,o=n.length-1;for(let e=o;e>=0;--e){let t=n[e];if(t.reductionLevel<=2*a)return this.getOrCreateBlockView(r,t.indexOffset,i,`summary`)}return this.getUnzoomedView(t)}}}));function rS(e,t){if(t<0)return;let n=0;for(let r=0;r<t;r++){if(n=e.indexOf(` `,n),n===-1)return;n++}let r=e.indexOf(` `,n);return r===-1?e.slice(n):e.slice(n,r)}async function iS(e,t,n,r,i,a,o,s){let c=4+n*(r+i),l=await e.read(c,t,s),u=Fx(l),d=u.getInt8(0),f=u.getInt16(2,!0),p=4;if(d===0){let t=[];for(let e=0;e<f;e++){let e=Ix(l,p,r);p+=r;let n=Number(u.getBigUint64(p,!0));p+=8,t.push({key:e,offset:n})}let c=0,d=t.length-1,m=-1;for(;c<=d;){let e=Math.floor((c+d)/2);a.localeCompare(t[e].key)>=0?(m=e,c=e+1):d=e-1}let h=t[Math.max(m,0)].offset;return iS(e,h,n,r,i,a,o,s)}else if(d===1){let e=[];for(let t=0;t<f;t++){let t=Ix(l,p,r);p+=r;let n=Number(u.getBigUint64(p,!0));p+=8;let i=u.getUint32(p,!0);p+=4,p+=4,e.push({key:t,offset:n,length:i})}let t=0,n=e.length-1;for(;t<=n;){let r=Math.floor((t+n)/2),i=a.localeCompare(e[r].key);if(i===0)return{...e[r],field:o};i<0?n=r-1:t=r+1}return}}var aS,oS=n((()=>{eS(),zx(),aS=class extends $x{indicesP;readIndices(e={}){return this.indicesP||=this._readIndices(e).catch(e=>{throw this.indicesP=void 0,e}),this.indicesP}async getView(e,t){return this.getUnzoomedView(t)}async _readIndices(e){let{extHeaderOffset:t}=await this.getHeader(e),n=Fx(await this.bbi.read(64,t,e)),r=n.getUint16(2,!0),i=Number(n.getBigUint64(4,!0));if(r===0)return[];let a=20*r,o=await this.bbi.read(a,i,e),s=[];for(let e=0;e<r;e+=1){let t=Fx(o,e*20),n=t.getInt16(0,!0),r=t.getInt16(2,!0),i=Number(t.getBigUint64(4,!0)),a=t.getInt16(16,!0);s.push({type:n,fieldcount:r,offset:i,field:a})}return s}async searchExtraIndexBlocks(e,t={}){let n=await this.readIndices(t);if(n.length===0)return[];let r=n.map(async n=>{let{offset:r,field:i}=n,a=Fx(await this.bbi.read(32,r,t)),o=a.getInt32(4,!0),s=a.getInt32(8,!0),c=a.getInt32(12,!0);return iS(this.bbi,r+32,o,s,c,e,i,t)});return(await Promise.all(r)).filter(e=>e!==void 0)}async searchExtraIndex(e,t={}){let n=await this.searchExtraIndexBlocks(e,t);if(n.length===0)return[];let r=await this.getUnzoomedView(t);return(await Promise.all(n.map(async e=>(await r.readFeatures([e],t)).map(t=>({...t,field:e.field}))))).flat().filter(t=>{if(!t.rest)return!1;let n=(t.field??0)-3;return rS(t.rest,n)===e})}}}));async function sS(e,t){let n=await e.getHeader(t),r=[];for(let i of Object.values(n.refsByNumber)){let n=await e.getFeaturesAsArrays(i.name,0,i.length,t);!n.isSummary&&n.starts.length>0&&r.push(n)}return r}var cS=n((()=>{})),lS,uS,dS=n((()=>{lS=class{view;i;constructor(e,t){this.view=e,this.i=t}get(e){return this.view.get(this.i,e)}id(){return this.view.id(this.i)}toJSON(){let{view:e,i:t}=this;return{start:e.start(t),end:e.end(t),score:e.score(t),refName:e.refName,source:e.source,uniqueId:e.id(t),summary:e.isSummary,minScore:e.minScore(t),maxScore:e.maxScore(t)}}},uS=class{starts;ends;scores;minScores;maxScores;isSummary;source;refName;constructor(e,t,n){this.starts=e.starts,this.ends=e.ends,this.scores=e.scores,this.isSummary=e.isSummary,this.minScores=e.isSummary?e.minScores:void 0,this.maxScores=e.isSummary?e.maxScores:void 0,this.source=t,this.refName=n}get length(){return this.starts.length}start(e){return this.starts[e]}end(e){return this.ends[e]}score(e){return this.scores[e]}minScore(e){return this.minScores?.[e]}maxScore(e){return this.maxScores?.[e]}id(e){return`${this.source}:${this.refName}:${this.starts[e]}-${this.ends[e]}`}get(e,t){switch(t){case`start`:return this.starts[e];case`end`:return this.ends[e];case`score`:return this.scores[e];case`refName`:return this.refName;case`source`:return this.source;case`minScore`:return this.minScores?.[e];case`maxScore`:return this.maxScores?.[e];case`summary`:return this.isSummary;default:return}}}})),fS=r({ArrayFeatureView:()=>uS,BigBed:()=>aS,BigWig:()=>tS,BigWigFeature:()=>lS,parseBigWig:()=>sS}),pS=n((()=>{mb(),nS(),oS(),cS(),dS()})),mS=class extends xg{#e=[];#t;constructor(e,t){let n={pixelsPerBin:2,channel:`x`,debounce:200,debounceMode:`window`,...e},r=pg(n.channel);if(super(t,r),this.params=vg(t.paramRuntime,n,e=>{e.has(`url`)?this.#n().then(()=>this.reloadLastDomain()):e.has(`pixelsPerBin`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!this.params.url)throw 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(()=>(pS(),fS)),Promise.resolve().then(()=>(Mg(),Ag))]).then(([{BigWig:n},{RemoteFile:r}])=>{this.#t=new n({filehandle:new r(ih(pg(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus(`loading`),this.#t.getHeader().then(t=>{this.#e=t.zoomLevels.map(e=>e.reductionLevel).reverse(),this.#e.push(1),this.setLoadingStatus(`complete`),e()}).catch(e=>{this.load(),this.setLoadingStatus(`error`,`${pg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async onDomainChanged(e){await this.initializedPromise;let t=this.scaleResolution.getAxisLength()||700,n=_S(e,t,this.#e),r=Math.max(n*t,5e3);this.callIfWindowsChanged(e,r,e=>this.loadInterval(e,n))}async loadInterval(e,t){let n=1/2/t/pg(this.params.pixelsPerBin),r=await this.discretizeAndLoad(e,{load:(e,t)=>this.#t.getFeatures(e.chrom,e.startPos,e.endPos,{scale:n,signal:t}).then(t=>gS(e.chrom,t)),loadBatch:(e,t)=>this.#t.getFeaturesMulti(e.map(e=>({refName:e.chrom,start:e.startPos,end:e.endPos})),{scale:n,signal:t}).then(t=>t.map((t,n)=>gS(e[n].chrom,t)))});r&&this.publishData(r)}};function hS(e){return e?.type==`bigwig`}Gm(hS,mS);function gS(e,t){return t.map(t=>({chrom:e,start:t.start,end:t.end,score:t.score}))}function _S(e,t,n){let r=(e[1]-e[0])/t;return n.find(e=>e<r)??n.at(-1)}var vS=class extends xg{parser;bbi;parseLine;constructor(e,t){let n={channel:`x`,windowSize:1e6,debounce:200,debounceMode:`window`,...e},r=pg(n.channel);if(super(t,r),this.params=vg(t.paramRuntime,n,e=>{e.has(`url`)?this.#e().then(()=>this.reloadLastDomain()):e.has(`windowSize`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!this.params.url)throw 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(()=>(jl(),Al)),Promise.resolve().then(()=>(pS(),fS)),Promise.resolve().then(()=>(Mg(),Ag))]).then(([n,{BigBed:r},{RemoteFile:i}])=>{let a=n.default;this.bbi=new r({filehandle:new i(ih(pg(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus(`loading`),this.bbi.getHeader().then(async t=>{this.parser=new a({autoSql:t.autoSql});try{let e=yS(this.parser);this.parseLine=(t,n)=>e(t,n.start,n.end,n.rest)}catch{this.parseLine=(e,t)=>this.parser.parseLine(`${e}\t${t.start}\t${t.end}\t${t.rest}`)}this.setLoadingStatus(`complete`),e()}).catch(e=>{this.load(),this.setLoadingStatus(`error`,`${pg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.bbi.getFeatures(e.chrom,e.startPos,e.endPos,{signal:t}).then(t=>t.map(t=>this.parseLine(e.chrom,t))));t&&this.publishData(t)}};function yS(e){let t=e.autoSql.fields.filter(e=>e.type).slice(3),n=0,r=``,i=0,a={};function o(){let e=r.indexOf(` `,n);e<0&&(e=i);let t=r.substring(n,e);return n=e+1,t}function s(){let e=0,t=r.charCodeAt(n),a=1;t===45&&(a=-1,n++,t=r.charCodeAt(n));do{if(t===9){n++;break}e=e*10+t-48,t=r.charCodeAt(++n)}while(n<i);return e*a}let c=t.map(e=>`${JSON.stringify(e.name)}: ${e.isNumeric?`0`:`emptyString`}`),l=Function(`
|
|
195
195
|
const emptyString = "";
|
|
196
196
|
return function makeTemplate(chrom, chromStart, chromEnd) {
|
|
197
197
|
return {
|
|
@@ -201,17 +201,17 @@ return groupData;`);return el.set(t,i),i}function Xc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
201
201
|
${c.join(`,
|
|
202
202
|
`)}
|
|
203
203
|
}
|
|
204
|
-
};`)(),u=
|
|
204
|
+
};`)(),u=xS(t.map(e=>{let t=e.type,n=JSON.stringify(e.name);if([`ubyte`,`int`,`uint`].includes(t))return`d[${n}] = parseInt();`;if(e.isNumeric)return`d[${n}] = Number(parseString());`;if([`char`,`string`,`lstring`].includes(t))return`d[${n}] = parseString();`;throw Error(`Unsupported type: `+t)}),50).map((e,t)=>Function(`parseInt`,`parseString`,`return function parseFieldChunk${t}(d) {
|
|
205
205
|
${e.join(`
|
|
206
206
|
`)}
|
|
207
|
-
}`)(s,o));function d(e){r=e,i=e.length,n=0}function f(e,t,n,r){d(r),a=l(e,t,n);for(let e of u)e(a);return a}return f}function yS(e){return e?.type==`bigbed`}Gm(yS,_S);function bS(e,t){return Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,r*t+t))}var xS,SS=n((()=>{xS=class{constructor(e,t,n,r){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=r}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.maxv.blockPosition+65536-this.minv.blockPosition:this._fetchedSize}}}));function CS(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*TS+(n>>>0)}var wS,TS,ES=n((()=>{wS=65536,TS=wS*wS}));function DS(e={}){return`aborted`in e?{signal:e}:e}function OS(e,t){let n=e.length;if(n===0)return e;let r;if(t){let i=t.blockPosition,a=t.dataPosition;r=[];for(let t=0;t<n;t++){let n=e[t],o=n.maxv;(o.blockPosition-i||o.dataPosition-a)>0&&r.push(n)}if(r.length===0)return r}else r=e;r.sort((e,t)=>{let n=e.minv.blockPosition-t.minv.blockPosition;return n===0?e.minv.dataPosition-t.minv.dataPosition:n});let i=[],a=r[0];i.push(a);let o=a.minv.blockPosition,s=a.maxv.blockPosition;for(let e=1;e<r.length;e++){let t=r[e],n=t.minv.blockPosition,c=t.maxv.blockPosition;if(n-s<65e3&&c-o<5e6){let e=t.maxv,n=a.maxv;(c-s||e.dataPosition-n.dataPosition)>0&&(a.maxv=e,s=c)}else i.push(t),a=t,o=n,s=c}return i}function kS(e,t){return{lineCount:CS(e,t)}}function AS(e,t){return e?e.compareTo(t)>0?t:e:t}function jS(e,t=e=>e){let n=0,r=0,i=[],a={};for(let o=0;o<e.length;o+=1)if(!e[o]){if(r<o){let s=``;for(let t=r;t<o;t++)s+=String.fromCharCode(e[t]);s=t(s),i[n]=s,a[s]=n}r=o+1,n+=1}return{refNameToId:a,refIdToName:i}}function MS(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function NS(e,t,n){return!!((e&t)!==t||e&n)}function PS(e,t){return t===`*`?e===void 0:`${e}`!=`${t}`}function FS(e){if(!e)return``;let{flagInclude:t=0,flagExclude:n=0,tagFilter:r}=e;return`:f${t}x${n}${r?`:${r.tag}=${r.value??`*`}`:``}`}var IS=n((()=>{ES()})),LS,RS=n((()=>{IS(),LS=class{constructor({filehandle:e,renameRefSeq:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async estimatedBytesForRegions(e,t){let n=OS((await Promise.all(e.map(e=>this.blocksForRange(e.refId,e.start,e.end,t)))).flat()),r=0;for(let e of n)r+=e.fetchedSize();return r}}}));function zS(e,t=0,n=!1){if(n)throw Error(`big-endian virtual file offsets not implemented`);return new BS(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}var BS,VS=n((()=>{BS=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 HS(e,t){return e-e%t}function US(e,t){return e-e%t+t}function WS(e,t){return--t,[[0,0],[1+(e>>26),1+(t>>26)],[9+(e>>23),9+(t>>23)],[73+(e>>20),73+(t>>20)],[585+(e>>17),585+(t>>17)],[4681+(e>>14),4681+(t>>14)]]}var GS,KS,qS=n((()=>{Lb(),SS(),RS(),IS(),VS(),GS=21578050,KS=class extends LS{async lineCount(e,t){return(await this.parse(t)).indices(e)?.stats?.lineCount||0}async _parse(e){let t=await this.filehandle.readFile(),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==GS)throw Error(`Not a BAI file`);let r=n.getInt32(4,!0),i=((1<<18)-1)/7,a=8,o,s=[];for(let e=0;e<r;e++){s.push(a);let e=n.getInt32(a,!0);a+=4;for(let t=0;t<e;t+=1){let e=n.getUint32(a,!0);if(a+=4,e===i+1)a+=4,a+=32;else if(e>i+1)throw Error(`bai index contains too many bins, please use CSI`);else{let e=n.getInt32(a,!0);a+=4;for(let t=0;t<e;t++)a+=8,a+=8}}let r=n.getInt32(a,!0);a+=4;let c=Array(r);for(let e=0;e<r;e++){let n=zS(t,a);a+=8,o=AS(o,n),c[e]=n}}let c=new Ib({maxSize:5});function l(e){let r=s[e];if(r===void 0)return;let a=n.getInt32(r,!0),c;r+=4;let l={};for(let e=0;e<a;e+=1){let e=n.getUint32(r,!0);if(r+=4,e===i+1)r+=4,c=kS(t,r+16),r+=32;else if(e>i+1)throw Error(`bai index contains too many bins, please use CSI`);else{let i=n.getInt32(r,!0);r+=4;let a=Array(i);for(let n=0;n<i;n++){let i=zS(t,r);r+=8;let s=zS(t,r);r+=8,o=AS(o,i),a[n]=new xS(i,s,e)}l[e]=a}}let u=n.getInt32(r,!0);r+=4;let d=Array(u);for(let e=0;e<u;e++){let n=zS(t,r);r+=8,o=AS(o,n),d[e]=n}return{binIndex:l,linearIndex:d,stats:c}}return{bai:!0,firstDataLine:o,maxBlockSize:65536,indices:e=>{if(!c.has(e)){let t=l(e);return t&&c.set(e,t),t}return c.get(e)},refCount:r}}async indexCov(e,t,n,r){let i=16384,a=t!==void 0,o=(await this.parse(r)).indices(e);if(!o)return[];let{linearIndex:s,stats:c}=o;if(s.length===0)return[];let l=n===void 0?(s.length-1)*i:US(n,i),u=t===void 0?0:HS(t,i),d=a?Array((l-u)/i):Array(s.length-1),f=s[s.length-1].blockPosition;if(l>(s.length-1)*i)throw Error(`query outside of range of linear index`);let p=s[u/i].blockPosition;for(let e=u/i,t=0;e<l/i;e++,t++)d[t]={score:s[e+1].blockPosition-p,start:e*i,end:e*i+i},p=s[e+1].blockPosition;return d.map(e=>({...e,score:e.score*(c?.lineCount||0)/f}))}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r);if(!i)return[];let a=i.indices(e);if(!a)return[];let o=WS(t,n),s=[],{binIndex:c}=a;for(let[e,t]of o)for(let n=e;n<=t;n++){let e=c[n];if(e)for(let t=0,n=e.length;t<n;t++)s.push(e[t])}let{linearIndex:l}=a,u=l.length,d=l[Math.min(t>>14,u-1)];return OS(s,d)}async parse(e={}){return this.setupP||=this._parse(e).catch(e=>{throw this.setupP=void 0,e}),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}})),JS,YS,XS=n((()=>{JS=[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`&&(JS=new Int32Array(JS)),YS=(e,t)=>{let n=t===0?0:~~t^-1;for(let t=0;t<e.length;t++)n=JS[(n^e[t])&255]^n>>>8;return n^-1}}));function ZS(e,t){return e*2**t}function QS(e,t){return Math.floor(e/2**t)}var $S,eC,tC,nC=n((()=>{Yy(),Lb(),SS(),RS(),IS(),VS(),$S=21582659,eC=38359875,tC=class extends LS{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){let n=new DataView(e.buffer),r=n.getUint32(t,!0),i=r&65536?`zero-based-half-open`:`1-based-closed`,a={0:`generic`,1:`SAM`,2:`VCF`}[r&15];if(!a)throw Error(`invalid Tabix preset format flags ${r}`);let o={ref:n.getInt32(t+4,!0),start:n.getInt32(t+8,!0),end:n.getInt32(t+12,!0)},s=n.getInt32(t+16,!0),c=s?String.fromCharCode(s):``,l=n.getInt32(t+20,!0),u=n.getInt32(t+24,!0);return{columnNumbers:o,coordinateType:i,metaValue:s,metaChar:c,skipLines:l,format:a,formatFlags:r,...jS(e.subarray(t+28,t+28+u),this.renameRefSeq)}}async _parse(e){let t=await Vy(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r,i=n.getUint32(0,!0);if(i===$S)r=1;else if(i===eC)r=2;else throw Error(`Not a CSI file ${i}`);this.minShift=n.getInt32(4,!0),this.depth=n.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;let a=this.maxBinNumber,o=n.getInt32(12,!0),s=o>=30?this.parseAuxData(t,16):void 0,c=n.getInt32(16+o,!0),l=16+o+4,u,d=[];for(let e=0;e<c;e++){d.push(l);let e=n.getInt32(l,!0);l+=4;for(let r=0;r<e;r++){let e=n.getUint32(l,!0);if(l+=4,e>this.maxBinNumber)l+=44;else{l+=8;let e=n.getInt32(l,!0);l+=4;for(let n=0;n<e;n+=1){let e=zS(t,l);l+=8,l+=8,u=AS(u,e)}}}}let f=new Ib({maxSize:5});function p(e){let r=d[e];if(r===void 0)return;let i=n.getInt32(r,!0);r+=4;let o={},s;for(let e=0;e<i;e++){let e=n.getUint32(r,!0);if(r+=4,e>a)s=kS(t,r+28),r+=44;else{u=AS(u,zS(t,r)),r+=8;let i=n.getInt32(r,!0);r+=4;let a=Array(i);for(let n=0;n<i;n+=1){let i=zS(t,r);r+=8;let o=zS(t,r);r+=8,a[n]=new xS(i,o,e)}o[e]=a}}return{binIndex:o,stats:s}}return{csiVersion:r,firstDataLine:u,indices:e=>{if(!f.has(e)){let t=p(e);return t&&f.set(e,t),t}return f.get(e)},refCount:c,csi:!0,maxBlockSize:65536,...s}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=(await this.parse(r)).indices(e);if(!i)return[];let a=this.reg2bins(t,n);if(a.length===0)return[];let o=[],{binIndex:s}=i;for(let[e,t]of a)for(let n=e;n<=t;n++){let e=s[n];if(e)for(let t=0,n=e.length;t<n;t++)o.push(e[t])}return OS(o,new BS(0,0))}reg2bins(e,t){--e,e<1&&(e=1),t>2**50&&(t=2**34),--t;let n=0,r=0,i=this.minShift+this.depth*3,a=[];for(;n<=this.depth;i-=3,r+=ZS(1,n*3),n+=1){let n=r+QS(e,i),o=r+QS(t,i);if(o-n+a.length>this.maxBinNumber)throw 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`);a.push([n,o])}return a}async parse(e={}){return this.setupP||=this._parse(e).catch(e=>{throw this.setupP=void 0,e}),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}})),rC,iC=n((()=>{rC=class{read(){throw Error(`never called`)}stat(){throw Error(`never called`)}readFile(){throw Error(`never called`)}close(){throw Error(`never called`)}}})),aC=n((()=>{})),oC,sC=n((()=>{oC={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}})),cC,lC,uC,dC,fC,pC=n((()=>{aC(),sC(),cC=`=ACMGRSVTWYHKDBN`.split(``),lC=`F F .F R .R F .R R .F2F1.F2R1.R2F1.R2R1.F1F2.F1R2.R1F2.R1R2.F2F1.F2R1.R2F1.R2R1.F F .R F .F R .R R .F1F2.R1F2.F1R2.R1R2.F2F1.R2F1.F2R1.R2R1.F1F2.R1F2.F1R2.R1R2`.split(`.`),uC=[77,73,68,78,83,72,80,61,88,63,63,63,63,63,63,63],dC=461,fC=class{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(){let 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;{let 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(){let e=this.read_name_length-1,t=this.b0,n=this.byteArray,r=Array(e);for(let i=0;i<e;i++)r[i]=n[t+i];return String.fromCharCode(...r)}get NUMERIC_MD(){if(this._cachedNUMERIC_MD===void 0){let 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._findTag(e,!1):this._cachedTags[e]}getTagRaw(e){return this._findTag(e,!0)}_findTag(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),i=this.tagsStart,a=this.bytes.end,o=this.byteArray;for(;i<a;){let e=o[i],s=o[i+1],c=o[i+2];i+=3;let l=e===n&&s===r;switch(c){case 65:if(l)return String.fromCharCode(o[i]);i+=1;break;case 105:if(l)return this._dataView.getInt32(i,!0);i+=4;break;case 73:if(l)return this._dataView.getUint32(i,!0);i+=4;break;case 99:if(l)return this._dataView.getInt8(i);i+=1;break;case 67:if(l)return this._dataView.getUint8(i);i+=1;break;case 115:if(l)return this._dataView.getInt16(i,!0);i+=2;break;case 83:if(l)return this._dataView.getUint16(i,!0);i+=2;break;case 102:if(l)return this._dataView.getFloat32(i,!0);i+=4;break;case 90:case 72:if(l){let e=i;for(;i<a&&o[i]!==0;)i++;if(t)return o.subarray(e,i);let n=[];for(let t=e;t<i;t++)n.push(String.fromCharCode(o[t]));return n.join(``)}for(;i<=a&&o[i++]!==0;);break;case 66:{let e=o[i++],t=this._dataView.getInt32(i,!0);i+=4;let n=o.byteOffset+i;if(l){if(e===105){if(n%4==0)return new Int32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getInt32(i+n*4,!0);return e}else if(e===73){if(n%4==0)return new Uint32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getUint32(i+n*4,!0);return e}else if(e===115){if(n%2==0)return new Int16Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getInt16(i+n*2,!0);return e}else if(e===83){if(n%2==0)return new Uint16Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getUint16(i+n*2,!0);return e}else if(e===99)return new Int8Array(o.buffer,n,t);else if(e===67)return new Uint8Array(o.buffer,n,t);else if(e===102){if(n%4==0)return new Float32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getFloat32(i+n*4,!0);return e}}e===105||e===73||e===102?i+=t<<2:e===115||e===83?i+=t<<1:(e===99||e===67)&&(i+=t);break}}}}_computeTags(){let e=this.tagsStart,t=this.bytes.end,n=this.byteArray,r={};for(;e<t;){let i=String.fromCharCode(n[e],n[e+1]),a=n[e+2];switch(e+=3,a){case 65:r[i]=String.fromCharCode(n[e]),e+=1;break;case 105:r[i]=this._dataView.getInt32(e,!0),e+=4;break;case 73:r[i]=this._dataView.getUint32(e,!0),e+=4;break;case 99:r[i]=this._dataView.getInt8(e),e+=1;break;case 67:r[i]=this._dataView.getUint8(e),e+=1;break;case 115:r[i]=this._dataView.getInt16(e,!0),e+=2;break;case 83:r[i]=this._dataView.getUint16(e,!0),e+=2;break;case 102:r[i]=this._dataView.getFloat32(e,!0),e+=4;break;case 90:case 72:{let a=[];for(;e<=t;){let t=n[e++];if(t!==0)a.push(String.fromCharCode(t));else break}r[i]=a.join(``);break}case 66:{let t=n[e++],a=this._dataView.getInt32(e,!0);e+=4;let o=n.byteOffset+e;if(t===105){if(o%4==0)r[i]=new Int32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getInt32(e+n*4,!0);r[i]=t}e+=a<<2}else if(t===73){if(o%4==0)r[i]=new Uint32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getUint32(e+n*4,!0);r[i]=t}e+=a<<2}else if(t===115){if(o%2==0)r[i]=new Int16Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getInt16(e+n*2,!0);r[i]=t}e+=a<<1}else if(t===83){if(o%2==0)r[i]=new Uint16Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getUint16(e+n*2,!0);r[i]=t}e+=a<<1}else if(t===99)r[i]=new Int8Array(n.buffer,o,a),e+=a;else if(t===67)r[i]=new Uint8Array(n.buffer,o,a),e+=a;else if(t===102){if(o%4==0)r[i]=new Float32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getFloat32(e+n*4,!0);r[i]=t}e+=a<<2}break}default:console.error(`Unknown BAM tag type`,a);break}}return r}isPaired(){return!!(this.flags&oC.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&oC.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&oC.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&oC.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&oC.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&oC.BAM_FMREVERSE)}isRead1(){return!!(this.flags&oC.BAM_FREAD1)}isRead2(){return!!(this.flags&oC.BAM_FREAD2)}isSecondary(){return!!(this.flags&oC.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&oC.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&oC.BAM_FDUP)}isSupplementary(){return!!(this.flags&oC.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};let e=this.num_cigar_ops,t=this.b0+this.read_name_length,n=this._dataView.getInt32(t,!0),r=n>>4;if((n&15)==4&&r===this.seq_length){t+=4;let e=this._dataView.getInt32(t,!0),n=e>>4;return(e&15)!=3&&console.warn(`CG tag with no N tag`),{NUMERIC_CIGAR:this.tags.CG,length_on_ref:n}}let i=this.byteArray.byteOffset+t;if(i%4==0&&e>50){let t=new Uint32Array(this.byteArray.buffer,i,e),n=0;for(let r=0;r<e;++r){let e=t[r];n+=(e>>4)*(dC>>(e&15)&1)}return{NUMERIC_CIGAR:t,length_on_ref:n}}let a=Array(e),o=0;for(let n=0;n<e;++n){let e=this._dataView.getInt32(t+n*4,!0)|0;a[n]=e,o+=(e>>4)*(dC>>(e&15)&1)}return{NUMERIC_CIGAR:a,length_on_ref:o}}get length_on_ref(){return this.cigarAndLength.length_on_ref}get NUMERIC_CIGAR(){return this.cigarAndLength.NUMERIC_CIGAR}get CIGAR(){let e=this.NUMERIC_CIGAR,t=``;for(let n=0,r=e.length;n<r;n++){let r=e[n],i=r>>4,a=uC[r&15];t+=i+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(){let e=this.b0+this.read_name_length+this.num_cigar_bytes;return this.byteArray.subarray(e,e+this.num_seq_bytes)}get seq(){let e=this.NUMERIC_SEQ,t=this.seq_length,n=Array(t),r=0,i=t>>1;for(let t=0;t<i;++t){let i=e[t];n[r++]=cC[(i&240)>>4],n[r++]=cC[i&15]}return r<t&&(n[r]=cC[(e[i]&240)>>4]),n.join(``)}get pair_orientation(){let e=this.flags;if(!(e&12||this.ref_id!==this.next_refid))return lC[e>>4&15|(this.template_length>0?16:0)]}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){let t=e>>1,n=this.byteArray[this.b0+this.read_name_length+this.num_cigar_bytes+t];return e%2==0?cC[(n&240)>>4]:cC[n&15]}else return}toJSON(){let e={};for(let t of Object.keys(this))t.startsWith(`_`)||t===`bytes`||(e[t]=this[t]);return e}}}));function mC(e){let t=e.split(/\r?\n/),n=[];for(let e of t){let[t,...r]=e.split(/\t/);t&&n.push({tag:t.slice(1),data:r.map(e=>{let t=e.indexOf(`:`);return{tag:e.slice(0,t),value:e.slice(t+1)}})})}return n}var hC=n((()=>{})),gC,_C,vC=n((()=>{Yy(),Lb(),XS(),Mg(),qS(),nC(),iC(),pC(),hC(),IS(),gC=65536,_C=class{constructor({bamFilehandle:e,bamPath:t,bamUrl:n,baiPath:r,baiFilehandle:i,baiUrl:a,csiPath:o,csiFilehandle:s,csiUrl:c,htsget:l,renameRefSeqs:u=e=>e,recordClass:d}){if(this.htsget=!1,this.chunkFeatureCache=new Ib({maxSize:100}),this.renameRefSeq=u,this.RecordClass=d??fC,e)this.bam=e;else if(t)this.bam=new jg(t);else if(n)this.bam=new Og(n);else if(l)this.htsget=!0,this.bam=new rC;else throw Error(`unable to initialize bam`);if(s)this.index=new tC({filehandle:s});else if(o)this.index=new tC({filehandle:new jg(o)});else if(c)this.index=new tC({filehandle:new Og(c)});else if(i)this.index=new KS({filehandle:i});else if(r)this.index=new KS({filehandle:new jg(r)});else if(a)this.index=new KS({filehandle:new Og(a)});else if(t)this.index=new KS({filehandle:new jg(`${t}.bai`)});else if(n)this.index=new KS({filehandle:new Og(`${n}.bai`)});else if(l)this.htsget=!0;else throw Error(`unable to infer index format`)}async getHeaderPre(e){let t=DS(e);if(!this.index)return;let n=await this.index.parse(t),r=n.firstDataLine===void 0?void 0:n.firstDataLine.blockPosition+gC,i=await Vy(r===void 0?await this.bam.readFile():await this.bam.read(r,0)),a=new DataView(i.buffer);if(a.getInt32(0,!0)!==21840194)throw Error(`Not a BAM file`);let o=a.getInt32(4,!0);this.header=new TextDecoder(`utf8`).decode(i.subarray(8,8+o));let s=o+8;for(let e=0;e<5;e++){if(this._hasEnoughRefSeqData(i,s)){let{chrToIndex:e,indexToChr:t}=this._parseRefSeqs(i,s);return this.chrToIndex=e,this.indexToChr=t,mC(this.header)}if(r===void 0)throw Error(`Insufficient data for reference sequences in ${i.length} bytes`);r*=2,i=await Vy(await this.bam.read(r,0))}throw Error(`Insufficient data for reference sequences after 5 retries`)}getHeader(e){return this.headerP||=this.getHeaderPre(e).catch(e=>{throw this.headerP=void 0,e}),this.headerP}async getHeaderText(e={}){return await this.getHeader(e),this.header}_hasEnoughRefSeqData(e,t){if(t+4>e.length)return!1;let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=t+4;for(let t=0;t<r;t+=1){if(i+8>e.length)return!1;let t=n.getInt32(i,!0);i=i+8+t}return!0}_parseRefSeqs(e,t){let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=t+4,a={},o=[],s=new TextDecoder(`utf8`);for(let t=0;t<r;t+=1){let r=n.getInt32(i,!0),c=this.renameRefSeq(s.decode(e.subarray(i+4,i+4+r-1))),l=n.getInt32(i+r+4,!0);a[c]=t,o.push({refName:c,length:l}),i=i+8+r}return{chrToIndex:a,indexToChr:o}}async getRecordsForRange(e,t,n,r){await this.getHeader(r);let i=this.chrToIndex?.[e];if(i===void 0||!this.index)return[];let a=await this.index.blocksForRange(i,t-1,n,r);return this._fetchChunkFeaturesDirect(a,i,t,n,r)}chunkCacheKey(e,t){let{minv:n,maxv:r}=e;return`${n.blockPosition}:${n.dataPosition}-${r.blockPosition}:${r.dataPosition}${FS(t)}`}blocksOverlap(e,t,n,r){return e<=r&&t>=n}evictOverlappingChunks(e,t){for(let[n,r]of this.chunkFeatureCache)this.blocksOverlap(e,t,r.minBlock,r.maxBlock)&&this.chunkFeatureCache.delete(n)}async _fetchChunkFeaturesDirect(e,t,n,r,i={}){let{viewAsPairs:a,filterBy:o}=i,{flagInclude:s=0,flagExclude:c=0,tagFilter:l}=o||{},u=[];for(let a=0,d=e.length;a<d;a++){let d=e[a],f=this.chunkCacheKey(d,o),p=d.minv.blockPosition,m=d.maxv.blockPosition,h,g=this.chunkFeatureCache.get(f);if(g)h=g.features;else{this.evictOverlappingChunks(p,m);let{data:e,cpositions:t,dpositions:n}=await this._readChunk({chunk:d,opts:i}),r=await this.readBamFeatures(e,t,n,d);if(o){h=[];for(let e=0,t=r.length;e<t;e++){let t=r[e];NS(t.flags,s,c)||l&&PS(t.tags[l.tag],l.value)||h.push(t)}}else h=r;this.chunkFeatureCache.set(f,{minBlock:p,maxBlock:m,features:h})}let _=!1;for(let e=0,i=h.length;e<i;e++){let i=h[e];if(i.ref_id===t)if(i.start>=r){_=!0;break}else i.end>=n&&u.push(i)}if(_)break}if(a){let e=await this.fetchPairs(t,u,i);for(let t=0,n=e.length;t<n;t++)u.push(e[t])}return u}async fetchPairs(e,t,n){let{pairAcrossChr:r,maxInsertSize:i=2e5}=n,a={},o={};for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.name;a[r]=(a[r]||0)+1,o[n.fileOffset]=1}let s=[];for(let o=0,c=t.length;o<c;o++){let c=t[o],l=c.name;this.index&&a[l]===1&&(r||c.next_refid===e&&Math.abs(c.start-c.next_pos)<i)&&s.push(this.index.blocksForRange(c.next_refid,c.next_pos,c.next_pos+1,n))}let c=new Map,l=await Promise.all(s);for(let e=0,t=l.length;e<t;e++){let t=l[e];for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.toString();c.has(r)||c.set(r,n)}}return(await Promise.all([...c.values()].map(async e=>{let{data:t,cpositions:r,dpositions:i,chunk:s}=await this._readChunk({chunk:e,opts:n}),c=[],l=await this.readBamFeatures(t,r,i,s);for(let e=0,t=l.length;e<t;e++){let t=l[e];a[t.name]===1&&!o[t.fileOffset]&&c.push(t)}return c}))).flat()}async _readChunk({chunk:e,opts:t}){let{buffer:n,cpositions:r,dpositions:i}=await Hy(await this.bam.read(e.fetchedSize(),e.minv.blockPosition,t),e);return{data:n,cpositions:r,dpositions:i,chunk:e}}async readBamFeatures(e,t,n,r){let i=0,a=[],o=0,s=new DataView(e.buffer),c=n.length>0,l=t.length>0;for(;i+4<e.length;){let u=s.getInt32(i,!0),d=i+4+u-1;if(c){for(;i+r.minv.dataPosition>=n[o++];);o--}if(d<e.length){let s=new this.RecordClass({bytes:{byteArray:e,start:i,end:d},fileOffset:l?t[o]*256+(i-n[o])+r.minv.dataPosition+1:YS(e.subarray(i,d))>>>0});a.push(s)}i=d+1}return a}async hasRefSeq(e){let t=this.chrToIndex?.[e];return t===void 0?!1:this.index?.hasRefSeq(t)}async lineCount(e){let t=this.chrToIndex?.[e];return t===void 0||!this.index?0:this.index.lineCount(t)}async indexCov(e,t,n){if(!this.index)return[];await this.index.parse();let r=this.chrToIndex?.[e];return r===void 0?[]:this.index.indexCov(r,t,n)}async blocksForRange(e,t,n,r){if(!this.index)return[];await this.index.parse();let i=this.chrToIndex?.[e];return i===void 0?[]:this.index.blocksForRange(i,t,n,r)}clearFeatureCache(){this.chunkFeatureCache.clear()}async estimatedBytesForRegions(e,t){if(!this.index)return 0;if(await this.getHeader(t),!this.chrToIndex)throw Error(`Header not yet parsed`);let n=e.flatMap(e=>{let t=this.chrToIndex[e.refName];return t===void 0?[]:[{refId:t,start:e.start,end:e.end}]});return this.index.estimatedBytesForRegions(n,t)}}}));async function yC(e,t){let n=await Promise.all(e.map(async e=>{let{url:n,headers:r}=e;if(n.startsWith(`data:`)){let e=await fetch(n);if(!e.ok)throw Error(`failed to decode base64`);let t=await e.arrayBuffer();return new Uint8Array(t)}else{let{referer:e,...i}=r,a=await fetch(n,{...t,headers:{...t?.headers,...i}});if(!a.ok)throw Error(`HTTP ${a.status} fetching ${n}: ${await a.text()}`);return new Uint8Array(await a.arrayBuffer())}}));return MS(await Promise.all(n.map(e=>Vy(e))))}var bC,xC=n((()=>{Yy(),vC(),hC(),IS(),bC=class extends _C{constructor(e){super({htsget:!0,recordClass:e.recordClass}),this.baseUrl=e.baseUrl,this.trackId=e.trackId}async getRecordsForRange(e,t,n,r){let i=`${`${this.baseUrl}/${this.trackId}`}?referenceName=${e}&start=${t}&end=${n}&format=BAM`,a=this.chrToIndex?.[e];if(a===void 0)return[];let o=await fetch(i,{...r});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${i}: ${await o.text()}`);let s=await yC((await o.json()).htsget.urls.slice(1),r),c=await this.readBamFeatures(s,[],[],{minv:{dataPosition:0,blockPosition:0},maxv:{dataPosition:0,blockPosition:0}}),l=[];for(let e=0,r=c.length;e<r;e++){let r=c[e];if(r.ref_id===a){if(r.start>=n)break;r.end>=t&&l.push(r)}}return l}async getHeader(e={}){let t=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,n=await fetch(t,e);if(!n.ok)throw Error(`HTTP ${n.status} fetching ${t}: ${await n.text()}`);let r=await yC((await n.json()).htsget.urls,e),i=new DataView(r.buffer);if(i.getInt32(0,!0)!==21840194)throw Error(`Not a BAM file`);let a=i.getInt32(4,!0),o=mC(new TextDecoder(`utf8`).decode(r.subarray(8,8+a))),s=[],c={},l=o.filter(e=>e.tag===`SQ`);for(let[e,t]of l.entries()){let n=``,r=0;for(let e of t.data)e.tag===`SN`?n=e.value:e.tag===`LN`&&(r=+e.value);c[n]=e,s[e]={refName:n,length:r}}return this.chrToIndex=c,this.indexToChr=s,o}}})),SC=r({BAI:()=>KS,BamFile:()=>_C,BamRecord:()=>fC,CSI:()=>tC,HtsgetFile:()=>bC}),CC=n((()=>{qS(),vC(),nC(),pC(),xC()})),wC=class extends xg{#e;chrPrefixFixer=e=>e;constructor(e,t){let n={channel:`x`,windowSize:2e4,debounce:200,debounceMode:`domain`,...e};if(super(t,n.channel),this.params=n,!this.params.url)throw Error(`No URL provided for BamSource`);this.setupDebouncing(this.params),this.initializedPromise=new Promise(e=>{Promise.all([Promise.resolve().then(()=>(CC(),SC)),Promise.resolve().then(()=>(Mg(),Ag))]).then(([{BamFile:t},{RemoteFile:n}])=>{let r=e=>new n(ih(e,this.view.getBaseUrl()));this.#e=new t({bamFilehandle:r(this.params.url),baiFilehandle:r(this.params.indexUrl??this.params.url+`.bai`)}),this.#e.getHeader().then(t=>{let n=this.genome.hasChrPrefix(),r=this.#e.indexToChr?.[0]?.refName.startsWith(`chr`);n&&!r?this.chrPrefixFixer=e=>e.replace(`chr`,``):!n&&r&&(this.chrPrefixFixer=e=>`chr`+e),e()})})})}get label(){return`bamSource`}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.#e.getRecordsForRange(this.chrPrefixFixer(e.chrom),e.startPos,e.endPos,{signal:t}).then(t=>t.map(t=>({chrom:e.chrom,start:t.start,end:t.end,name:t.name,cigar:t.CIGAR,mapq:t.mq,strand:t.strand===1?`+`:`-`}))));t&&this.publishData(t)}};function TC(e){return e?.type==`bam`}Gm(TC,wC);function EC(e){return`values`in e}var DC=class extends Zm{constructor(e,t){if(super(t),this.params=e,typeof e.values==`string`&&!e?.format?.type)throw Error(`Data format type (csv, dsv, ...) must be specified if a string is provided!`)}get label(){return`inlineSource`}isTrivial(){let 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=[],n=e=>e;if(Array.isArray(e))e.length>0&&(t=e,n=IC(e[0]));else if(typeof e==`object`)t=[e];else if(typeof e==`string`)t=To(e,jC(AC(this.params)));else throw Error(`"values" in data configuration is not an array, object, or a string!`);this.reset(),this.beginBatch({type:`file`});for(let e of t)this._propagate(n(e));this.complete()}async load(){this.loadSynchronously()}},OC=new Set([`csv`,`tsv`,`dsv`]),kC=new Set([`gz`,`bgz`,`bgzf`]);function AC(e,t=[]){if(!EC(e)&&!VC(e))return;let n={...e.format};if(n.type??=VC(e)&&NC(t),n.parse===void 0&&HC(n.type)&&(n.parse=`auto`),!n.type)throw Error(`Format for the data source was not defined and it could not be inferred: `+JSON.stringify(e));return n}function jC(e){let t={...e};return(zC(t)||BC(t))&&t.columns&&!(`header`in t)&&(t.header=t.columns),t}function MC(e){return wo(e)?.responseType??`text`}function NC(e){if(Array.isArray(e)&&(e=e[0]),e){let t=FC(e).split(`/`).pop()?.toLowerCase();if(!t)return;let n=t.split(`.`);for(;n.length>1&&kC.has(n.at(-1));)n.pop();let r=n.at(-1);if(r&&wo(r))return r}}function PC(e){let t=FC(e).split(`/`).pop()?.toLowerCase();if(!t)return!1;let n=t.split(`.`).at(-1);return!!n&&kC.has(n)}function FC(e){return e.replace(/[?#].*$/,``)}var IC=e=>typeof e==`object`?RC:LC,LC=e=>({data:e}),RC=e=>e;function zC(e){return e.type==`csv`||e.type==`tsv`}function BC(e){return e.type==`dsv`}function VC(e){return`url`in e}function HC(e){return OC.has(e)}var UC,WC=n((()=>{UC=class{constructor(e,t,n,r){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=r}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.maxv.blockPosition+65536-this.minv.blockPosition:this._fetchedSize}}})),GC,KC=n((()=>{GC=class{constructor({filehandle:e,renameRefSeqs:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async getMetadata(e={}){let{indices:t,...n}=await this.parse(e);return n}_findFirstData(e,t){return e?e.compareTo(t)>0?t:e:t}async parse(e={}){return this.parseP||=this._parse(e).catch(e=>{throw this.parseP=void 0,e}),this.parseP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices[e]?.binIndex}_parseNameBytes(e){let t=0,n=0,r=[],i={},a=new TextDecoder(`utf8`);for(let o=0;o<e.length;o+=1)if(!e[o]){if(n<o){let s=this.renameRefSeq(a.decode(e.subarray(n,o)));r[t]=s,i[s]=t}n=o+1,t+=1}return{refNameToId:i,refIdToName:r}}}}));function qC(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*YC+(n>>>0)}var JC,YC,XC=n((()=>{JC=65536,YC=JC*JC}));function ZC(e,t){return t.minv.blockPosition-e.maxv.blockPosition<65e3&&t.maxv.blockPosition-e.minv.blockPosition<5e6}function QC(e,t){let n=[],r;if(e.length===0)return e;e.sort(function(e,t){let n=e.minv.blockPosition-t.minv.blockPosition;return n===0?e.minv.dataPosition-t.minv.dataPosition:n});for(let i of e)(!t||i.maxv.compareTo(t)>0)&&(r===void 0?(n.push(i),r=i):ZC(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i));return n}var $C=n((()=>{}));function ew(e,t=0){return new tw(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}var tw,nw=n((()=>{tw=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 rw(e,t){return e*2**t}function iw(e,t){return Math.floor(e/2**t)}var aw,ow,sw,cw,lw=n((()=>{Yy(),WC(),KC(),XC(),$C(),nw(),aw=21582659,ow=38359875,sw={0:`generic`,1:`SAM`,2:`VCF`},cw=class extends GC{constructor(e){super(e),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t={}){let n=await this.parse(t),r=n.refNameToId[e];if(r===void 0||!n.indices[r])return-1;let{stats:i}=n.indices[r];return i?i.lineCount:-1}indexCov(){throw Error(`CSI indexes do not support indexcov`)}parseAuxData(e,t){let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=r&65536?`zero-based-half-open`:`1-based-closed`,a=sw[r&15];if(!a)throw Error(`invalid Tabix preset format flags ${r}`);let o={ref:n.getInt32(t+4,!0),start:n.getInt32(t+8,!0),end:n.getInt32(t+12,!0)},s=n.getInt32(t+16,!0),c=s?String.fromCharCode(s):void 0,l=n.getInt32(t+20,!0),u=n.getInt32(t+24,!0),{refIdToName:d,refNameToId:f}=this._parseNameBytes(e.subarray(t+28,t+28+u));return{refIdToName:d,refNameToId:f,skipLines:l,metaChar:c,columnNumbers:o,format:a,coordinateType:i}}async _parse(e={}){let t=await Vy(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r;if(n.getUint32(0,!0)===aw)r=1;else if(n.getUint32(0,!0)===ow)r=2;else throw Error(`Not a CSI file`);this.minShift=n.getInt32(4,!0),this.depth=n.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;let i=2**(this.minShift+this.depth*3),a=n.getInt32(12,!0),o=a&&a>=30?this.parseAuxData(t,16):{refIdToName:[],refNameToId:{},metaChar:void 0,columnNumbers:{ref:0,start:1,end:2},coordinateType:`zero-based-half-open`,format:`generic`},s=n.getInt32(16+a,!0),c,l=16+a+4,u=Array(s).fill(0).map(()=>{let e=n.getInt32(l,!0);l+=4;let r={},i;for(let a=0;a<e;a+=1){let e=n.getUint32(l,!0);if(e>this.maxBinNumber)i=this.parsePseudoBin(t,l+4),l+=48;else{let i=ew(t,l+4);c=this._findFirstData(c,i);let a=n.getInt32(l+12,!0);l+=16;let o=Array(a);for(let n=0;n<a;n+=1){let r=ew(t,l),i=ew(t,l+8);l+=16,o[n]=new UC(r,i,e)}r[e]=o}}return{binIndex:r,stats:i}});return{...o,csi:!0,refCount:s,maxBlockSize:65536,firstDataLine:c,csiVersion:r,indices:u,depth:this.depth,maxBinNumber:this.maxBinNumber,maxRefLength:i}}parsePseudoBin(e,t){return{lineCount:qC(e,t+28)}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r),a=i.refNameToId[e];if(a===void 0)return[];let o=i.indices[a];if(!o)return[];let s=this.reg2bins(t,n),c=[];for(let[e,t]of s)for(let n=e;n<=t;n++)if(o.binIndex[n])for(let e of o.binIndex[n])c.push(new UC(e.minv,e.maxv,n));return QC(c,new tw(0,0))}reg2bins(e,t){--e,e<1&&(e=1),t>2**50&&(t=2**34),--t;let n=0,r=0,i=this.minShift+this.depth*3,a=[];for(;n<=this.depth;i-=3,r+=rw(1,n*3),n+=1){let n=r+iw(e,i),o=r+iw(t,i);if(o-n+a.length>this.maxBinNumber)throw 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`);a.push([n,o])}return a}}}));function uw(e,t){return e+=1,--t,[[0,0],[1+(e>>26),1+(t>>26)],[9+(e>>23),9+(t>>23)],[73+(e>>20),73+(t>>20)],[585+(e>>17),585+(t>>17)],[4681+(e>>14),4681+(t>>14)]]}var dw,fw,pw,mw=n((()=>{Yy(),WC(),KC(),XC(),$C(),nw(),dw=21578324,fw=14,pw=class extends GC{async lineCount(e,t={}){let n=await this.parse(t),r=n.refNameToId[e];return r===void 0||!n.indices[r]?-1:n.indices[r].stats?.lineCount??-1}async _parse(e={}){let t=await Vy(await this.filehandle.readFile(e)),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==dw)throw Error(`Not a TBI file`);let r=n.getUint32(4,!0),i=n.getUint32(8,!0),a=i&65536?`zero-based-half-open`:`1-based-closed`,o={0:`generic`,1:`SAM`,2:`VCF`}[i&15];if(!o)throw Error(`invalid Tabix preset format flags ${i}`);let s={ref:n.getInt32(12,!0),start:n.getInt32(16,!0),end:n.getInt32(20,!0)},c=n.getInt32(24,!0),l=((1<<18)-1)/7,u=2**29,d=c?String.fromCharCode(c):void 0,f=n.getInt32(28,!0),p=n.getInt32(32,!0),{refNameToId:m,refIdToName:h}=this._parseNameBytes(t.slice(36,36+p)),g=36+p,_;return{indices:Array(r).fill(0).map(()=>{let e=n.getInt32(g,!0);g+=4;let r={},i;for(let a=0;a<e;a+=1){let e=n.getUint32(g,!0);if(g+=4,e>l+1)throw Error(`tabix index contains too many bins, please use a CSI index`);if(e===l+1){let e=n.getInt32(g,!0);g+=4,e===2&&(i=this.parsePseudoBin(t,g)),g+=16*e}else{let i=n.getInt32(g,!0);g+=4;let a=Array(i);for(let n=0;n<i;n+=1){let r=ew(t,g),i=ew(t,g+8);g+=16,_=this._findFirstData(_,r),a[n]=new UC(r,i,e)}r[e]=a}}let a=n.getInt32(g,!0);g+=4;let o=Array(a);for(let e=0;e<a;e+=1)o[e]=ew(t,g),g+=8,_=this._findFirstData(_,o[e]);return{binIndex:r,linearIndex:o,stats:i}}),metaChar:d,maxBinNumber:l,maxRefLength:u,skipLines:f,firstDataLine:_,columnNumbers:s,coordinateType:a,format:o,refIdToName:h,refNameToId:m,maxBlockSize:65536}}parsePseudoBin(e,t){return{lineCount:qC(e,t+16)}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r),a=i.refNameToId[e];if(a===void 0)return[];let o=i.indices[a];if(!o)return[];(o.linearIndex.length>0?o.linearIndex[t>>fw>=o.linearIndex.length?o.linearIndex.length-1:t>>fw]:new tw(0,0))||console.warn(`querying outside of possible tabix range`);let s=uw(t,n),c=[];for(let[e,t]of s)for(let n=e;n<=t;n++)if(o.binIndex[n])for(let e of o.binIndex[n])c.push(new UC(e.minv,e.maxv,n));let l=o.linearIndex.length,u,d=Math.min(t>>14,l-1),f=Math.min(n>>14,l-1);for(let e=d;e<=f;++e){let t=o.linearIndex[e];t&&(!u||t.compareTo(u)<0)&&(u=t)}return QC(c,u)}}})),hw,gw=n((()=>{xb(),Yy(),Lb(),Mg(),lw(),mw(),hw=class{constructor({path:e,filehandle:t,url:n,tbiPath:r,tbiUrl:i,tbiFilehandle:a,csiPath:o,csiUrl:s,csiFilehandle:c,renameRefSeqs:l,chunkCacheSize:u=5*2**20}){this.cache=new Ib({maxSize:1e3});let d=l??(e=>e);if(t)this.filehandle=t;else if(e)this.filehandle=new jg(e);else if(n)this.filehandle=new Og(n);else throw TypeError(`must provide either filehandle or path`);if(a)this.index=new pw({filehandle:a,renameRefSeqs:d});else if(c)this.index=new cw({filehandle:c,renameRefSeqs:d});else if(r)this.index=new pw({filehandle:new jg(r),renameRefSeqs:d});else if(o)this.index=new cw({filehandle:new jg(o),renameRefSeqs:d});else if(e)this.index=new pw({filehandle:new jg(`${e}.tbi`),renameRefSeqs:d});else if(s)this.index=new cw({filehandle:new Og(s)});else if(i)this.index=new pw({filehandle:new Og(i)});else if(n)this.index=new pw({filehandle:new Og(`${n}.tbi`)});else throw TypeError(`must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl`);this.renameRefSeq=d,this.hasCustomRenameRefSeq=l!==void 0,this.chunkCache=new yb({cache:new Ib({maxSize:Math.floor(u/65536)}),fill:(e,t)=>this.readChunk(e,{signal:t})})}calculateFileOffset(e,t,n,r,i){return e[n]*256+(r-t[n])+i+1}async getLines(e,t,n,r){let i,a={},o;typeof r==`function`?o=r:(a=r,o=r.lineCallback,i=r.signal);let s=await this.index.getMetadata(a),c=t??0,l=n??s.maxRefLength;if(!(c<=l))throw TypeError(`invalid start and end coordinates. start must be less than or equal to end`);if(c===l)return;let u=await this.index.blocksForRange(e,c,l,a),d=new TextDecoder(`utf8`),f=s.format===`VCF`,p={ref:s.columnNumbers.ref||0,start:s.columnNumbers.start||0,end:f?8:s.columnNumbers.end||0},m=Math.max(p.ref,p.start,p.end),h=s.metaChar?.charCodeAt(0),g=s.coordinateType===`1-based-closed`?-1:0,_=!this.hasCustomRenameRefSeq;for(let t of u){let{buffer:n,cpositions:r,dpositions:a}=await this.chunkCache.get(t.toString(),t,i),s=0,u=0,v=d.decode(n);if(n.length==v.length)for(;s<v.length;){let n=v.indexOf(`
|
|
208
|
-
`,s);if(n===-1)break;let i=v.slice(s,n);if(a){let e=s+t.minv.dataPosition;for(;u<a.length&&e>=a[u];)u++}let d=this.checkLine(e,c,l,i,p.ref,p.start,p.end,m,h,g,f,_);if(d===null)return;d!==void 0&&o(i,this.calculateFileOffset(r,a,u,s,t.minv.dataPosition),d.start,d.end),s=n+1}else for(;s<n.length;){let i=n.indexOf(10,s);if(i===-1)break;let v=n.slice(s,i),y=d.decode(v);if(a){let e=s+t.minv.dataPosition;for(;u<a.length&&e>=a[u];)u++}let b=this.checkLine(e,c,l,y,p.ref,p.start,p.end,m,h,g,f,_);if(b===null)return;b!==void 0&&o(y,this.calculateFileOffset(r,a,u,s,t.minv.dataPosition),b.start,b.end),s=i+1}}}async getMetadata(e={}){return this.index.getMetadata(e)}async getHeaderBuffer(e={}){let{firstDataLine:t,metaChar:n,maxBlockSize:r}=await this.getMetadata(e),i=(t?.blockPosition||0)+r,a=await
|
|
209
|
-
`),
|
|
210
|
-
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n),o=t[a];o||(o=[],t[a]=o);let s=n+1;for(;s<i;){let t=e.indexOf(`,`,s);if((t===-1||t>i)&&(t=i),t>s){let n=e.slice(s,t);o.push(
|
|
211
|
-
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n),o=t[a];o||(o=[],t[a]=o);let s=n+1;for(;s<i;){let t=e.indexOf(`,`,s);(t===-1||t>i)&&(t=i),t>s&&o.push(e.slice(s,t)),s=t+1}}}r=i+1}return t}function
|
|
212
|
-
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n);if(a===`_lineHash`){r=i+1;continue}let o=a.toLowerCase();
|
|
213
|
-
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n);if(a===`_lineHash`){r=i+1;continue}let o=a.toLowerCase();
|
|
214
|
-
`))}};function Yw(e){return e?.type==`gff3`}Gm(Yw,Jw);function Xw(e,t,n){let r=Object.create(null),i=n.length,a=t.length,o=0;if(e===`GT`){for(let e=0;e<i;e++){let i=o;for(;o<a&&t.charCodeAt(o)!==9;)o++;r[n[e]]=t.slice(i,o),o++}return r}let s=e.indexOf(`GT`);if(s===-1)return r;if(s===0){for(let e=0;e<i;e++){let i=o;for(;o<a&&t.charCodeAt(o)!==58&&t.charCodeAt(o)!==9;)o++;for(r[n[e]]=t.slice(i,o);o<a&&t.charCodeAt(o)!==9;)o++;o++}return r}let c=0;for(let t=0;t<s;t++)e.charCodeAt(t)===58&&c++;for(let e=0;e<i;e++){let i=o,s=o;for(;s<a&&t.charCodeAt(s)!==9;)s++;let l=0,u=i;for(let a=i;a<=s;a++)if(a===s||t.charCodeAt(a)===58){if(l===c){r[n[e]]=t.slice(u,a);break}l++,u=a+1}o=s+1}return r}var Zw=n((()=>{}));function Qw(e,t,n,r){let i=t.length,a=0;if(e===`GT`){for(let e=0;e<n;e++){let e=a;for(;a<i&&t.charCodeAt(a)!==9;)a++;r(t,e,a),a++}return}let o=e.indexOf(`GT`);if(o===-1)return;if(o===0){for(let e=0;e<n;e++){let e=a;for(;a<i&&t.charCodeAt(a)!==58&&t.charCodeAt(a)!==9;)a++;for(r(t,e,a);a<i&&t.charCodeAt(a)!==9;)a++;a++}return}let s=0;for(let t=0;t<o;t++)e.charCodeAt(t)===58&&s++;for(let e=0;e<n;e++){let e=a,n=a;for(;n<i&&t.charCodeAt(n)!==9;)n++;let o=0,c=e;for(let i=e;i<=n;i++)if(i===n||t.charCodeAt(i)===58){if(o===s){r(t,c,i);break}o++,c=i+1}a=n+1}}var $w=n((()=>{}));function eT(e){try{return decodeURIComponent(e)}catch{return e}}var tT,nT=n((()=>{Zw(),$w(),tT=class{constructor(e,t,n,r,i){let a=0,o=0;for(;a<e.length&&o<9;)e[a]===` `&&(o+=1),a+=1;let s=o===9?a-1:a,c=e.slice(0,s).split(` `),l=e.slice(s+1),[u,d,f,p,m,h,g]=c,_=g===`.`?void 0:g.split(`;`);if(i&&!c[7])throw Error(`no INFO field specified, must contain at least a '.' (turn off strict mode to allow)`);this.CHROM=u,this.POS=+d,this.ID=f===`.`?void 0:f.split(`;`),this.REF=p,this.ALT=m===`.`?void 0:m.split(`,`),this.QUAL=h===`.`?void 0:+h,this.FILTER=_?.length===1&&_[0]===`PASS`?`PASS`:_,this.INFO=c[7]===void 0||c[7]===`.`?{}:this.parseInfo(c[7],t),this.FORMAT=c[8],this.formatMeta=n,this.rest=l,this.sampleNames=r}parseInfo(e,t){let n={},r=e.includes(`%`),i=e.split(`;`),a=i.length;for(let e=0;e<a;e++){let a=i[e],o=a.indexOf(`=`),s=o===-1?a:a.slice(0,o),c=o===-1?void 0:a.slice(o+1),l=t[s]?.Type;if(l===`Flag`)n[s]=!0;else if(!c)n[s]=!0;else{let e=l===`Integer`||l===`Float`,t=c.split(`,`),i=t.length;if(r){let r=[];for(let n=0;n<i;n++){let i=t[n];if(i===`.`)r.push(void 0);else{let t=eT(i);r.push(e?Number(t):t)}}n[s]=r}else{let r=[];for(let n=0;n<i;n++){let i=t[n];i===`.`?r.push(void 0):r.push(e?Number(i):i)}n[s]=r}}}return n}SAMPLES(){let e={},t=this.FORMAT;if(t){let n=this.rest.split(` `),r=t.split(`:`),i=[];for(let e=0;e<r.length;e++){let t=this.formatMeta[r[e]]?.Type;i.push(t===`Integer`||t===`Float`)}let a=r.length,o=this.sampleNames.length;for(let t=0;t<o;t++){let o=this.sampleNames[t],s={},c=n[t],l=c.length,u=0,d=0;for(let e=0;e<=l;e++)if(e===l||c[e]===`:`){let t=c.slice(u,e);if(t===``||t===`.`)s[r[d]]=void 0;else{let e=t.split(`,`),n=[];if(i[d])for(let t=0;t<e.length;t++){let r=e[t];n.push(r===`.`?void 0:+r)}else for(let t=0;t<e.length;t++){let r=e[t];n.push(r===`.`?void 0:r)}s[r[d]]=n}if(u=e+1,d+=1,d>=a)break}e[o]=s}}return e}GENOTYPES(){return Xw(this.FORMAT??``,this.rest,this.sampleNames)}processGenotypes(e){Qw(this.FORMAT??``,this.rest,this.sampleNames.length,e)}toJSON(){return{CHROM:this.CHROM,POS:this.POS,ID:this.ID,REF:this.REF,ALT:this.ALT,QUAL:this.QUAL,FILTER:this.FILTER,INFO:this.INFO,FORMAT:this.FORMAT}}}}));function rT(e){let t=[],n=[],r=!1,i=!1,a=e.length;for(let o=0;o<a;o++){let a=e[o];a===`"`?(r=!r,n.push(a)):a===`[`?(i=!0,n.push(a)):a===`]`?(i=!1,n.push(a)):a===`,`&&!r&&!i?(t.push(n.join(``).trim()),n.length=0):n.push(a)}return n.length>0&&t.push(n.join(``).trim()),t}function iT(e,t){let n=e.indexOf(t);return[e.slice(0,n),e.slice(n+1)]}function aT(e){let t=rT(e.slice(1,-1)),n=[];for(let e=0;e<t.length;e++){let r=t[e],[i,a]=iT(r,`=`);if(a&&a.startsWith(`[`)&&a.endsWith(`]`)){let e=a.slice(1,-1).split(`,`);for(let t=0;t<e.length;t++)e[t]=e[t].trim();n.push([i,e])}else a&&a.startsWith(`"`)&&a.endsWith(`"`)?n.push([i,a.slice(1,-1)]):n.push([i,a])}return Object.fromEntries(n)}var oT=n((()=>{})),sT,cT=n((()=>{sT={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`}}}})),lT,uT=n((()=>{nT(),oT(),cT(),lT=class{constructor({header:e,strict:t=!0}){if(!e.length)throw Error(`empty header received`);let n=e.split(/[\r\n]+/).filter(Boolean);if(!n.length)throw Error(`no non-empty header lines specified`);this.strict=t,this.metadata={INFO:{...sT.InfoFields},FORMAT:{...sT.GenotypeFields},ALT:{...sT.AltTypes},FILTER:{...sT.FilterTypes}};let r;for(let e=0;e<n.length;e++){let t=n[e];if(t.startsWith(`#`))t.startsWith(`##`)?this.parseMetadata(t):r=t;else throw Error(`Bad line in header:\n${t}`)}if(!r)throw Error(`No format line found in header`);let i=r.trim().split(` `),a=i.slice(0,8),o=[`#CHROM`,`POS`,`ID`,`REF`,`ALT`,`QUAL`,`FILTER`,`INFO`];if(i.length<8)throw Error(`VCF header missing columns:\n${r}`);if(a.length!==o.length||!a.every((e,t)=>e===o[t]))throw Error(`VCF column headers not correct:\n${r}`);this.samples=i.slice(9)}parseMetadata(e){let t=/^##(.+?)=(.*)/.exec(e.trim());if(!t)throw Error(`Line is not a valid metadata line: ${e}`);let[n,r]=t.slice(1,3),i=n;if(r?.startsWith(`<`)){i in this.metadata||(this.metadata[i]={});let[e,t]=this.parseStructuredMetaVal(r);e?this.metadata[i][e]=t:this.metadata[i]=t}else this.metadata[i]=r}parseStructuredMetaVal(e){let t=aT(e),n=t.ID;return delete t.ID,`Number`in t&&(Number.isNaN(Number(t.Number))||(t.Number=Number(t.Number))),[n,t]}getMetadata(...e){let t=this.metadata,n=e.length;for(let r=0;r<n;r++)if(t=t[e[r]],!t)return t;return t}parseLine(e){return new tT(e,this.metadata.INFO,this.metadata.FORMAT,this.samples,this.strict)}}}));function dT(e){let t=e[0],n=e[e.length-1];if(t===`[`||t===`]`||n===`[`||n===`]`){let t=e.split(/[[\]]/),n=e.includes(`[`)?`right`:`left`,r,i,a,o=t.length;for(let e=0;e<o;e++){let n=t[e];n&&(n.includes(`:`)?(a=n,r=i?`right`:`left`):i=n)}if(!(a&&r&&i))throw Error(`Invalid breakend: ${e}`);return{MatePosition:a,Join:r,Replacement:i,MateDirection:n}}if(t===`.`)return{Join:`left`,SingleBreakend:!0,Replacement:e.slice(1)};if(n===`.`)return{Join:`right`,SingleBreakend:!0,Replacement:e.slice(0,-1)};if(t===`<`){let t=fT.exec(e);if(!t)throw Error(`failed to parse ${e}`);let n=t[2];return n?{Join:`left`,Replacement:n,MateDirection:`right`,MatePosition:`<${t[1]}>:1`}:void 0}if(e.includes(`<`)){let t=pT.exec(e);if(!t)throw Error(`failed to parse ${e}`);let n=t[1];return n?{Join:`right`,Replacement:n,MateDirection:`right`,MatePosition:`<${t[2]}>:1`}:void 0}}var fT,pT,mT=n((()=>{fT=/<(.*)>(.*)/,pT=/(.*)<(.*)>/})),hT=r({Variant:()=>tT,default:()=>lT,parseBreakend:()=>dT}),gT=n((()=>{nT(),uT(),mT()})),_T=class extends yw{#e;get label(){return`vcfSource`}async _handleHeader(e){let t=(await Promise.resolve().then(()=>(gT(),hT))).default;this.#e=new t({header:e})}_parseFeatures(e){return e.map(e=>{let t=this.#e.parseLine(e);return delete t.GENOTYPES,t.SAMPLES=t.SAMPLES(),t})}};function vT(e){return e?.type==`vcf`}Gm(vT,_T);var yT=`
|
|
207
|
+
}`)(s,o));function d(e){r=e,i=e.length,n=0}function f(e,t,n,r){d(r),a=l(e,t,n);for(let e of u)e(a);return a}return f}function bS(e){return e?.type==`bigbed`}Gm(bS,vS);function xS(e,t){return Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,r*t+t))}var SS,CS=n((()=>{SS=class{constructor(e,t,n,r){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=r}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.maxv.blockPosition+65536-this.minv.blockPosition:this._fetchedSize}}}));function wS(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*ES+(n>>>0)}var TS,ES,DS=n((()=>{TS=65536,ES=TS*TS}));function OS(e={}){return`aborted`in e?{signal:e}:e}function kS(e,t){let n=e.length;if(n===0)return e;let r;if(t){let i=t.blockPosition,a=t.dataPosition;r=[];for(let t=0;t<n;t++){let n=e[t],o=n.maxv;(o.blockPosition-i||o.dataPosition-a)>0&&r.push(n)}if(r.length===0)return r}else r=e;r.sort((e,t)=>{let n=e.minv.blockPosition-t.minv.blockPosition;return n===0?e.minv.dataPosition-t.minv.dataPosition:n});let i=[],a=r[0];i.push(a);let o=a.minv.blockPosition,s=a.maxv.blockPosition;for(let e=1;e<r.length;e++){let t=r[e],n=t.minv.blockPosition,c=t.maxv.blockPosition;if(n-s<65e3&&c-o<5e6){let e=t.maxv,n=a.maxv;(c-s||e.dataPosition-n.dataPosition)>0&&(a.maxv=e,s=c)}else i.push(t),a=t,o=n,s=c}return i}function AS(e,t){return{lineCount:wS(e,t)}}function jS(e,t){return e?e.compareTo(t)>0?t:e:t}function MS(e,t=e=>e){let n=0,r=0,i=[],a={};for(let o=0;o<e.length;o+=1)if(!e[o]){if(r<o){let s=``;for(let t=r;t<o;t++)s+=String.fromCharCode(e[t]);s=t(s),i[n]=s,a[s]=n}r=o+1,n+=1}return{refNameToId:a,refIdToName:i}}function NS(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function PS(e,t,n){return!!((e&t)!==t||e&n)}function FS(e,t){return t===`*`?e===void 0:`${e}`!=`${t}`}function IS(e){if(!e)return``;let{flagInclude:t=0,flagExclude:n=0,tagFilter:r}=e;return`:f${t}x${n}${r?`:${r.tag}=${r.value??`*`}`:``}`}var LS=n((()=>{DS()})),RS,zS=n((()=>{LS(),RS=class{constructor({filehandle:e,renameRefSeq:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async estimatedBytesForRegions(e,t){let n=kS((await Promise.all(e.map(e=>this.blocksForRange(e.refId,e.start,e.end,t)))).flat()),r=0;for(let e of n)r+=e.fetchedSize();return r}}}));function BS(e,t=0,n=!1){if(n)throw Error(`big-endian virtual file offsets not implemented`);return new VS(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}var VS,HS=n((()=>{VS=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 US(e,t){return e-e%t}function WS(e,t){return e-e%t+t}function GS(e,t){return--t,[[0,0],[1+(e>>26),1+(t>>26)],[9+(e>>23),9+(t>>23)],[73+(e>>20),73+(t>>20)],[585+(e>>17),585+(t>>17)],[4681+(e>>14),4681+(t>>14)]]}var KS,qS,JS=n((()=>{Rb(),CS(),zS(),LS(),HS(),KS=21578050,qS=class extends RS{async lineCount(e,t){return(await this.parse(t)).indices(e)?.stats?.lineCount||0}async _parse(e){let t=await this.filehandle.readFile(),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==KS)throw Error(`Not a BAI file`);let r=n.getInt32(4,!0),i=((1<<18)-1)/7,a=8,o,s=[];for(let e=0;e<r;e++){s.push(a);let e=n.getInt32(a,!0);a+=4;for(let t=0;t<e;t+=1){let e=n.getUint32(a,!0);if(a+=4,e===i+1)a+=4,a+=32;else if(e>i+1)throw Error(`bai index contains too many bins, please use CSI`);else{let e=n.getInt32(a,!0);a+=4;for(let t=0;t<e;t++)a+=8,a+=8}}let r=n.getInt32(a,!0);a+=4;let c=Array(r);for(let e=0;e<r;e++){let n=BS(t,a);a+=8,o=jS(o,n),c[e]=n}}let c=new Lb({maxSize:5});function l(e){let r=s[e];if(r===void 0)return;let a=n.getInt32(r,!0),c;r+=4;let l={};for(let e=0;e<a;e+=1){let e=n.getUint32(r,!0);if(r+=4,e===i+1)r+=4,c=AS(t,r+16),r+=32;else if(e>i+1)throw Error(`bai index contains too many bins, please use CSI`);else{let i=n.getInt32(r,!0);r+=4;let a=Array(i);for(let n=0;n<i;n++){let i=BS(t,r);r+=8;let s=BS(t,r);r+=8,o=jS(o,i),a[n]=new SS(i,s,e)}l[e]=a}}let u=n.getInt32(r,!0);r+=4;let d=Array(u);for(let e=0;e<u;e++){let n=BS(t,r);r+=8,o=jS(o,n),d[e]=n}return{binIndex:l,linearIndex:d,stats:c}}return{bai:!0,firstDataLine:o,maxBlockSize:65536,indices:e=>{if(!c.has(e)){let t=l(e);return t&&c.set(e,t),t}return c.get(e)},refCount:r}}async indexCov(e,t,n,r){let i=16384,a=t!==void 0,o=(await this.parse(r)).indices(e);if(!o)return[];let{linearIndex:s,stats:c}=o;if(s.length===0)return[];let l=n===void 0?(s.length-1)*i:WS(n,i),u=t===void 0?0:US(t,i),d=a?Array((l-u)/i):Array(s.length-1),f=s[s.length-1].blockPosition;if(l>(s.length-1)*i)throw Error(`query outside of range of linear index`);let p=s[u/i].blockPosition;for(let e=u/i,t=0;e<l/i;e++,t++)d[t]={score:s[e+1].blockPosition-p,start:e*i,end:e*i+i},p=s[e+1].blockPosition;return d.map(e=>({...e,score:e.score*(c?.lineCount||0)/f}))}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r);if(!i)return[];let a=i.indices(e);if(!a)return[];let o=GS(t,n),s=[],{binIndex:c}=a;for(let[e,t]of o)for(let n=e;n<=t;n++){let e=c[n];if(e)for(let t=0,n=e.length;t<n;t++)s.push(e[t])}let{linearIndex:l}=a,u=l.length,d=l[Math.min(t>>14,u-1)];return kS(s,d)}async parse(e={}){return this.setupP||=this._parse(e).catch(e=>{throw this.setupP=void 0,e}),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}})),YS,XS,ZS=n((()=>{YS=[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`&&(YS=new Int32Array(YS)),XS=(e,t)=>{let n=t===0?0:~~t^-1;for(let t=0;t<e.length;t++)n=YS[(n^e[t])&255]^n>>>8;return n^-1}}));function QS(e,t){return e*2**t}function $S(e,t){return Math.floor(e/2**t)}var eC,tC,nC,rC=n((()=>{Xy(),Rb(),CS(),zS(),LS(),HS(),eC=21582659,tC=38359875,nC=class extends RS{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){let n=new DataView(e.buffer),r=n.getUint32(t,!0),i=r&65536?`zero-based-half-open`:`1-based-closed`,a={0:`generic`,1:`SAM`,2:`VCF`}[r&15];if(!a)throw Error(`invalid Tabix preset format flags ${r}`);let o={ref:n.getInt32(t+4,!0),start:n.getInt32(t+8,!0),end:n.getInt32(t+12,!0)},s=n.getInt32(t+16,!0),c=s?String.fromCharCode(s):``,l=n.getInt32(t+20,!0),u=n.getInt32(t+24,!0);return{columnNumbers:o,coordinateType:i,metaValue:s,metaChar:c,skipLines:l,format:a,formatFlags:r,...MS(e.subarray(t+28,t+28+u),this.renameRefSeq)}}async _parse(e){let t=await zy(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r,i=n.getUint32(0,!0);if(i===eC)r=1;else if(i===tC)r=2;else throw Error(`Not a CSI file ${i}`);this.minShift=n.getInt32(4,!0),this.depth=n.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;let a=this.maxBinNumber,o=n.getInt32(12,!0),s=o>=30?this.parseAuxData(t,16):void 0,c=n.getInt32(16+o,!0),l=16+o+4,u,d=[];for(let e=0;e<c;e++){d.push(l);let e=n.getInt32(l,!0);l+=4;for(let r=0;r<e;r++){let e=n.getUint32(l,!0);if(l+=4,e>this.maxBinNumber)l+=44;else{l+=8;let e=n.getInt32(l,!0);l+=4;for(let n=0;n<e;n+=1){let e=BS(t,l);l+=8,l+=8,u=jS(u,e)}}}}let f=new Lb({maxSize:5});function p(e){let r=d[e];if(r===void 0)return;let i=n.getInt32(r,!0);r+=4;let o={},s;for(let e=0;e<i;e++){let e=n.getUint32(r,!0);if(r+=4,e>a)s=AS(t,r+28),r+=44;else{u=jS(u,BS(t,r)),r+=8;let i=n.getInt32(r,!0);r+=4;let a=Array(i);for(let n=0;n<i;n+=1){let i=BS(t,r);r+=8;let o=BS(t,r);r+=8,a[n]=new SS(i,o,e)}o[e]=a}}return{binIndex:o,stats:s}}return{csiVersion:r,firstDataLine:u,indices:e=>{if(!f.has(e)){let t=p(e);return t&&f.set(e,t),t}return f.get(e)},refCount:c,csi:!0,maxBlockSize:65536,...s}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=(await this.parse(r)).indices(e);if(!i)return[];let a=this.reg2bins(t,n);if(a.length===0)return[];let o=[],{binIndex:s}=i;for(let[e,t]of a)for(let n=e;n<=t;n++){let e=s[n];if(e)for(let t=0,n=e.length;t<n;t++)o.push(e[t])}return kS(o,new VS(0,0))}reg2bins(e,t){--e,e<1&&(e=1),t>2**50&&(t=2**34),--t;let n=0,r=0,i=this.minShift+this.depth*3,a=[];for(;n<=this.depth;i-=3,r+=QS(1,n*3),n+=1){let n=r+$S(e,i),o=r+$S(t,i);if(o-n+a.length>this.maxBinNumber)throw 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`);a.push([n,o])}return a}async parse(e={}){return this.setupP||=this._parse(e).catch(e=>{throw this.setupP=void 0,e}),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}})),iC,aC=n((()=>{iC=class{read(){throw Error(`never called`)}stat(){throw Error(`never called`)}readFile(){throw Error(`never called`)}close(){throw Error(`never called`)}}})),oC=n((()=>{})),sC,cC=n((()=>{sC={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}})),lC,uC,dC,fC,pC,mC=n((()=>{oC(),cC(),lC=`=ACMGRSVTWYHKDBN`.split(``),uC=`F F .F R .R F .R R .F2F1.F2R1.R2F1.R2R1.F1F2.F1R2.R1F2.R1R2.F2F1.F2R1.R2F1.R2R1.F F .R F .F R .R R .F1F2.R1F2.F1R2.R1R2.F2F1.R2F1.F2R1.R2R1.F1F2.R1F2.F1R2.R1R2`.split(`.`),dC=[77,73,68,78,83,72,80,61,88,63,63,63,63,63,63,63],fC=461,pC=class{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(){let 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;{let 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(){let e=this.read_name_length-1,t=this.b0,n=this.byteArray,r=Array(e);for(let i=0;i<e;i++)r[i]=n[t+i];return String.fromCharCode(...r)}get NUMERIC_MD(){if(this._cachedNUMERIC_MD===void 0){let 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._findTag(e,!1):this._cachedTags[e]}getTagRaw(e){return this._findTag(e,!0)}_findTag(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),i=this.tagsStart,a=this.bytes.end,o=this.byteArray;for(;i<a;){let e=o[i],s=o[i+1],c=o[i+2];i+=3;let l=e===n&&s===r;switch(c){case 65:if(l)return String.fromCharCode(o[i]);i+=1;break;case 105:if(l)return this._dataView.getInt32(i,!0);i+=4;break;case 73:if(l)return this._dataView.getUint32(i,!0);i+=4;break;case 99:if(l)return this._dataView.getInt8(i);i+=1;break;case 67:if(l)return this._dataView.getUint8(i);i+=1;break;case 115:if(l)return this._dataView.getInt16(i,!0);i+=2;break;case 83:if(l)return this._dataView.getUint16(i,!0);i+=2;break;case 102:if(l)return this._dataView.getFloat32(i,!0);i+=4;break;case 90:case 72:if(l){let e=i;for(;i<a&&o[i]!==0;)i++;if(t)return o.subarray(e,i);let n=[];for(let t=e;t<i;t++)n.push(String.fromCharCode(o[t]));return n.join(``)}for(;i<=a&&o[i++]!==0;);break;case 66:{let e=o[i++],t=this._dataView.getInt32(i,!0);i+=4;let n=o.byteOffset+i;if(l){if(e===105){if(n%4==0)return new Int32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getInt32(i+n*4,!0);return e}else if(e===73){if(n%4==0)return new Uint32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getUint32(i+n*4,!0);return e}else if(e===115){if(n%2==0)return new Int16Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getInt16(i+n*2,!0);return e}else if(e===83){if(n%2==0)return new Uint16Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getUint16(i+n*2,!0);return e}else if(e===99)return new Int8Array(o.buffer,n,t);else if(e===67)return new Uint8Array(o.buffer,n,t);else if(e===102){if(n%4==0)return new Float32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getFloat32(i+n*4,!0);return e}}e===105||e===73||e===102?i+=t<<2:e===115||e===83?i+=t<<1:(e===99||e===67)&&(i+=t);break}}}}_computeTags(){let e=this.tagsStart,t=this.bytes.end,n=this.byteArray,r={};for(;e<t;){let i=String.fromCharCode(n[e],n[e+1]),a=n[e+2];switch(e+=3,a){case 65:r[i]=String.fromCharCode(n[e]),e+=1;break;case 105:r[i]=this._dataView.getInt32(e,!0),e+=4;break;case 73:r[i]=this._dataView.getUint32(e,!0),e+=4;break;case 99:r[i]=this._dataView.getInt8(e),e+=1;break;case 67:r[i]=this._dataView.getUint8(e),e+=1;break;case 115:r[i]=this._dataView.getInt16(e,!0),e+=2;break;case 83:r[i]=this._dataView.getUint16(e,!0),e+=2;break;case 102:r[i]=this._dataView.getFloat32(e,!0),e+=4;break;case 90:case 72:{let a=[];for(;e<=t;){let t=n[e++];if(t!==0)a.push(String.fromCharCode(t));else break}r[i]=a.join(``);break}case 66:{let t=n[e++],a=this._dataView.getInt32(e,!0);e+=4;let o=n.byteOffset+e;if(t===105){if(o%4==0)r[i]=new Int32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getInt32(e+n*4,!0);r[i]=t}e+=a<<2}else if(t===73){if(o%4==0)r[i]=new Uint32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getUint32(e+n*4,!0);r[i]=t}e+=a<<2}else if(t===115){if(o%2==0)r[i]=new Int16Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getInt16(e+n*2,!0);r[i]=t}e+=a<<1}else if(t===83){if(o%2==0)r[i]=new Uint16Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getUint16(e+n*2,!0);r[i]=t}e+=a<<1}else if(t===99)r[i]=new Int8Array(n.buffer,o,a),e+=a;else if(t===67)r[i]=new Uint8Array(n.buffer,o,a),e+=a;else if(t===102){if(o%4==0)r[i]=new Float32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getFloat32(e+n*4,!0);r[i]=t}e+=a<<2}break}default:console.error(`Unknown BAM tag type`,a);break}}return r}isPaired(){return!!(this.flags&sC.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&sC.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&sC.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&sC.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&sC.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&sC.BAM_FMREVERSE)}isRead1(){return!!(this.flags&sC.BAM_FREAD1)}isRead2(){return!!(this.flags&sC.BAM_FREAD2)}isSecondary(){return!!(this.flags&sC.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&sC.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&sC.BAM_FDUP)}isSupplementary(){return!!(this.flags&sC.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};let e=this.num_cigar_ops,t=this.b0+this.read_name_length,n=this._dataView.getInt32(t,!0),r=n>>4;if((n&15)==4&&r===this.seq_length){t+=4;let e=this._dataView.getInt32(t,!0),n=e>>4;return(e&15)!=3&&console.warn(`CG tag with no N tag`),{NUMERIC_CIGAR:this.tags.CG,length_on_ref:n}}let i=this.byteArray.byteOffset+t;if(i%4==0&&e>50){let t=new Uint32Array(this.byteArray.buffer,i,e),n=0;for(let r=0;r<e;++r){let e=t[r];n+=(e>>4)*(fC>>(e&15)&1)}return{NUMERIC_CIGAR:t,length_on_ref:n}}let a=Array(e),o=0;for(let n=0;n<e;++n){let e=this._dataView.getInt32(t+n*4,!0)|0;a[n]=e,o+=(e>>4)*(fC>>(e&15)&1)}return{NUMERIC_CIGAR:a,length_on_ref:o}}get length_on_ref(){return this.cigarAndLength.length_on_ref}get NUMERIC_CIGAR(){return this.cigarAndLength.NUMERIC_CIGAR}get CIGAR(){let e=this.NUMERIC_CIGAR,t=``;for(let n=0,r=e.length;n<r;n++){let r=e[n],i=r>>4,a=dC[r&15];t+=i+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(){let e=this.b0+this.read_name_length+this.num_cigar_bytes;return this.byteArray.subarray(e,e+this.num_seq_bytes)}get seq(){let e=this.NUMERIC_SEQ,t=this.seq_length,n=Array(t),r=0,i=t>>1;for(let t=0;t<i;++t){let i=e[t];n[r++]=lC[(i&240)>>4],n[r++]=lC[i&15]}return r<t&&(n[r]=lC[(e[i]&240)>>4]),n.join(``)}get pair_orientation(){let e=this.flags;if(!(e&12||this.ref_id!==this.next_refid))return uC[e>>4&15|(this.template_length>0?16:0)]}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){let t=e>>1,n=this.byteArray[this.b0+this.read_name_length+this.num_cigar_bytes+t];return e%2==0?lC[(n&240)>>4]:lC[n&15]}else return}toJSON(){let e={};for(let t of Object.keys(this))t.startsWith(`_`)||t===`bytes`||(e[t]=this[t]);return e}}}));function hC(e){let t=e.split(/\r?\n/),n=[];for(let e of t){let[t,...r]=e.split(/\t/);t&&n.push({tag:t.slice(1),data:r.map(e=>{let t=e.indexOf(`:`);return{tag:e.slice(0,t),value:e.slice(t+1)}})})}return n}var gC=n((()=>{})),_C,vC,yC=n((()=>{Xy(),Rb(),ZS(),Mg(),JS(),rC(),aC(),mC(),gC(),LS(),_C=65536,vC=class{constructor({bamFilehandle:e,bamPath:t,bamUrl:n,baiPath:r,baiFilehandle:i,baiUrl:a,csiPath:o,csiFilehandle:s,csiUrl:c,htsget:l,renameRefSeqs:u=e=>e,recordClass:d}){if(this.htsget=!1,this.chunkFeatureCache=new Lb({maxSize:100}),this.renameRefSeq=u,this.RecordClass=d??pC,e)this.bam=e;else if(t)this.bam=new jg(t);else if(n)this.bam=new Og(n);else if(l)this.htsget=!0,this.bam=new iC;else throw Error(`unable to initialize bam`);if(s)this.index=new nC({filehandle:s});else if(o)this.index=new nC({filehandle:new jg(o)});else if(c)this.index=new nC({filehandle:new Og(c)});else if(i)this.index=new qS({filehandle:i});else if(r)this.index=new qS({filehandle:new jg(r)});else if(a)this.index=new qS({filehandle:new Og(a)});else if(t)this.index=new qS({filehandle:new jg(`${t}.bai`)});else if(n)this.index=new qS({filehandle:new Og(`${n}.bai`)});else if(l)this.htsget=!0;else throw Error(`unable to infer index format`)}async getHeaderPre(e){let t=OS(e);if(!this.index)return;let n=await this.index.parse(t),r=n.firstDataLine===void 0?void 0:n.firstDataLine.blockPosition+_C,i=await zy(r===void 0?await this.bam.readFile():await this.bam.read(r,0)),a=new DataView(i.buffer);if(a.getInt32(0,!0)!==21840194)throw Error(`Not a BAM file`);let o=a.getInt32(4,!0);this.header=new TextDecoder(`utf8`).decode(i.subarray(8,8+o));let s=o+8;for(let e=0;e<5;e++){if(this._hasEnoughRefSeqData(i,s)){let{chrToIndex:e,indexToChr:t}=this._parseRefSeqs(i,s);return this.chrToIndex=e,this.indexToChr=t,hC(this.header)}if(r===void 0)throw Error(`Insufficient data for reference sequences in ${i.length} bytes`);r*=2,i=await zy(await this.bam.read(r,0))}throw Error(`Insufficient data for reference sequences after 5 retries`)}getHeader(e){return this.headerP||=this.getHeaderPre(e).catch(e=>{throw this.headerP=void 0,e}),this.headerP}async getHeaderText(e={}){return await this.getHeader(e),this.header}_hasEnoughRefSeqData(e,t){if(t+4>e.length)return!1;let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=t+4;for(let t=0;t<r;t+=1){if(i+8>e.length)return!1;let t=n.getInt32(i,!0);i=i+8+t}return!0}_parseRefSeqs(e,t){let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=t+4,a={},o=[],s=new TextDecoder(`utf8`);for(let t=0;t<r;t+=1){let r=n.getInt32(i,!0),c=this.renameRefSeq(s.decode(e.subarray(i+4,i+4+r-1))),l=n.getInt32(i+r+4,!0);a[c]=t,o.push({refName:c,length:l}),i=i+8+r}return{chrToIndex:a,indexToChr:o}}async getRecordsForRange(e,t,n,r){await this.getHeader(r);let i=this.chrToIndex?.[e];if(i===void 0||!this.index)return[];let a=await this.index.blocksForRange(i,t-1,n,r);return this._fetchChunkFeaturesDirect(a,i,t,n,r)}chunkCacheKey(e,t){let{minv:n,maxv:r}=e;return`${n.blockPosition}:${n.dataPosition}-${r.blockPosition}:${r.dataPosition}${IS(t)}`}blocksOverlap(e,t,n,r){return e<=r&&t>=n}evictOverlappingChunks(e,t){for(let[n,r]of this.chunkFeatureCache)this.blocksOverlap(e,t,r.minBlock,r.maxBlock)&&this.chunkFeatureCache.delete(n)}async _fetchChunkFeaturesDirect(e,t,n,r,i={}){let{viewAsPairs:a,filterBy:o}=i,{flagInclude:s=0,flagExclude:c=0,tagFilter:l}=o||{},u=[];for(let a=0,d=e.length;a<d;a++){let d=e[a],f=this.chunkCacheKey(d,o),p=d.minv.blockPosition,m=d.maxv.blockPosition,h,g=this.chunkFeatureCache.get(f);if(g)h=g.features;else{this.evictOverlappingChunks(p,m);let{data:e,cpositions:t,dpositions:n}=await this._readChunk({chunk:d,opts:i}),r=await this.readBamFeatures(e,t,n,d);if(o){h=[];for(let e=0,t=r.length;e<t;e++){let t=r[e];PS(t.flags,s,c)||l&&FS(t.tags[l.tag],l.value)||h.push(t)}}else h=r;this.chunkFeatureCache.set(f,{minBlock:p,maxBlock:m,features:h})}let _=!1;for(let e=0,i=h.length;e<i;e++){let i=h[e];if(i.ref_id===t)if(i.start>=r){_=!0;break}else i.end>=n&&u.push(i)}if(_)break}if(a){let e=await this.fetchPairs(t,u,i);for(let t=0,n=e.length;t<n;t++)u.push(e[t])}return u}async fetchPairs(e,t,n){let{pairAcrossChr:r,maxInsertSize:i=2e5}=n,a={},o={};for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.name;a[r]=(a[r]||0)+1,o[n.fileOffset]=1}let s=[];for(let o=0,c=t.length;o<c;o++){let c=t[o],l=c.name;this.index&&a[l]===1&&(r||c.next_refid===e&&Math.abs(c.start-c.next_pos)<i)&&s.push(this.index.blocksForRange(c.next_refid,c.next_pos,c.next_pos+1,n))}let c=new Map,l=await Promise.all(s);for(let e=0,t=l.length;e<t;e++){let t=l[e];for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.toString();c.has(r)||c.set(r,n)}}return(await Promise.all([...c.values()].map(async e=>{let{data:t,cpositions:r,dpositions:i,chunk:s}=await this._readChunk({chunk:e,opts:n}),c=[],l=await this.readBamFeatures(t,r,i,s);for(let e=0,t=l.length;e<t;e++){let t=l[e];a[t.name]===1&&!o[t.fileOffset]&&c.push(t)}return c}))).flat()}async _readChunk({chunk:e,opts:t}){let{buffer:n,cpositions:r,dpositions:i}=await By(await this.bam.read(e.fetchedSize(),e.minv.blockPosition,t),e);return{data:n,cpositions:r,dpositions:i,chunk:e}}async readBamFeatures(e,t,n,r){let i=0,a=[],o=0,s=new DataView(e.buffer),c=n.length>0,l=t.length>0;for(;i+4<e.length;){let u=s.getInt32(i,!0),d=i+4+u-1;if(c){for(;i+r.minv.dataPosition>=n[o++];);o--}if(d<e.length){let s=new this.RecordClass({bytes:{byteArray:e,start:i,end:d},fileOffset:l?t[o]*256+(i-n[o])+r.minv.dataPosition+1:XS(e.subarray(i,d))>>>0});a.push(s)}i=d+1}return a}async hasRefSeq(e){let t=this.chrToIndex?.[e];return t===void 0?!1:this.index?.hasRefSeq(t)}async lineCount(e){let t=this.chrToIndex?.[e];return t===void 0||!this.index?0:this.index.lineCount(t)}async indexCov(e,t,n){if(!this.index)return[];await this.index.parse();let r=this.chrToIndex?.[e];return r===void 0?[]:this.index.indexCov(r,t,n)}async blocksForRange(e,t,n,r){if(!this.index)return[];await this.index.parse();let i=this.chrToIndex?.[e];return i===void 0?[]:this.index.blocksForRange(i,t,n,r)}clearFeatureCache(){this.chunkFeatureCache.clear()}async estimatedBytesForRegions(e,t){if(!this.index)return 0;if(await this.getHeader(t),!this.chrToIndex)throw Error(`Header not yet parsed`);let n=e.flatMap(e=>{let t=this.chrToIndex[e.refName];return t===void 0?[]:[{refId:t,start:e.start,end:e.end}]});return this.index.estimatedBytesForRegions(n,t)}}}));async function bC(e,t){let n=await Promise.all(e.map(async e=>{let{url:n,headers:r}=e;if(n.startsWith(`data:`)){let e=await fetch(n);if(!e.ok)throw Error(`failed to decode base64`);let t=await e.arrayBuffer();return new Uint8Array(t)}else{let{referer:e,...i}=r,a=await fetch(n,{...t,headers:{...t?.headers,...i}});if(!a.ok)throw Error(`HTTP ${a.status} fetching ${n}: ${await a.text()}`);return new Uint8Array(await a.arrayBuffer())}}));return NS(await Promise.all(n.map(e=>zy(e))))}var xC,SC=n((()=>{Xy(),yC(),gC(),LS(),xC=class extends vC{constructor(e){super({htsget:!0,recordClass:e.recordClass}),this.baseUrl=e.baseUrl,this.trackId=e.trackId}async getRecordsForRange(e,t,n,r){let i=`${`${this.baseUrl}/${this.trackId}`}?referenceName=${e}&start=${t}&end=${n}&format=BAM`,a=this.chrToIndex?.[e];if(a===void 0)return[];let o=await fetch(i,{...r});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${i}: ${await o.text()}`);let s=await bC((await o.json()).htsget.urls.slice(1),r),c=await this.readBamFeatures(s,[],[],{minv:{dataPosition:0,blockPosition:0},maxv:{dataPosition:0,blockPosition:0}}),l=[];for(let e=0,r=c.length;e<r;e++){let r=c[e];if(r.ref_id===a){if(r.start>=n)break;r.end>=t&&l.push(r)}}return l}async getHeader(e={}){let t=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,n=await fetch(t,e);if(!n.ok)throw Error(`HTTP ${n.status} fetching ${t}: ${await n.text()}`);let r=await bC((await n.json()).htsget.urls,e),i=new DataView(r.buffer);if(i.getInt32(0,!0)!==21840194)throw Error(`Not a BAM file`);let a=i.getInt32(4,!0),o=hC(new TextDecoder(`utf8`).decode(r.subarray(8,8+a))),s=[],c={},l=o.filter(e=>e.tag===`SQ`);for(let[e,t]of l.entries()){let n=``,r=0;for(let e of t.data)e.tag===`SN`?n=e.value:e.tag===`LN`&&(r=+e.value);c[n]=e,s[e]={refName:n,length:r}}return this.chrToIndex=c,this.indexToChr=s,o}}})),CC=r({BAI:()=>qS,BamFile:()=>vC,BamRecord:()=>pC,CSI:()=>nC,HtsgetFile:()=>xC}),wC=n((()=>{JS(),yC(),rC(),mC(),SC()})),TC=class extends xg{#e;chrPrefixFixer=e=>e;constructor(e,t){let n={channel:`x`,windowSize:2e4,debounce:200,debounceMode:`domain`,...e};if(super(t,n.channel),this.params=n,!this.params.url)throw Error(`No URL provided for BamSource`);this.setupDebouncing(this.params),this.initializedPromise=new Promise(e=>{Promise.all([Promise.resolve().then(()=>(wC(),CC)),Promise.resolve().then(()=>(Mg(),Ag))]).then(([{BamFile:t},{RemoteFile:n}])=>{let r=e=>new n(ih(e,this.view.getBaseUrl()));this.#e=new t({bamFilehandle:r(this.params.url),baiFilehandle:r(this.params.indexUrl??this.params.url+`.bai`)}),this.#e.getHeader().then(t=>{let n=this.genome.hasChrPrefix(),r=this.#e.indexToChr?.[0]?.refName.startsWith(`chr`);n&&!r?this.chrPrefixFixer=e=>e.replace(`chr`,``):!n&&r&&(this.chrPrefixFixer=e=>`chr`+e),e()})})})}get label(){return`bamSource`}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.#e.getRecordsForRange(this.chrPrefixFixer(e.chrom),e.startPos,e.endPos,{signal:t}).then(t=>t.map(t=>({chrom:e.chrom,start:t.start,end:t.end,name:t.name,cigar:t.CIGAR,mapq:t.mq,strand:t.strand===1?`+`:`-`}))));t&&this.publishData(t)}};function EC(e){return e?.type==`bam`}Gm(EC,TC);function DC(e){return`values`in e}var OC=class extends Zm{constructor(e,t){if(super(t),this.params=e,typeof e.values==`string`&&!e?.format?.type)throw Error(`Data format type (csv, dsv, ...) must be specified if a string is provided!`)}get label(){return`inlineSource`}isTrivial(){let 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=[],n=e=>e;if(Array.isArray(e))e.length>0&&(t=e,n=LC(e[0]));else if(typeof e==`object`)t=[e];else if(typeof e==`string`)t=To(e,MC(jC(this.params)));else throw Error(`"values" in data configuration is not an array, object, or a string!`);this.reset(),this.beginBatch({type:`file`});for(let e of t)this._propagate(n(e));this.complete()}async load(){this.loadSynchronously()}},kC=new Set([`csv`,`tsv`,`dsv`]),AC=new Set([`gz`,`bgz`,`bgzf`]);function jC(e,t=[]){if(!DC(e)&&!HC(e))return;let n={...e.format};if(n.type??=HC(e)&&PC(t),n.parse===void 0&&UC(n.type)&&(n.parse=`auto`),!n.type)throw Error(`Format for the data source was not defined and it could not be inferred: `+JSON.stringify(e));return n}function MC(e){let t={...e};return(BC(t)||VC(t))&&t.columns&&!(`header`in t)&&(t.header=t.columns),t}function NC(e){return wo(e)?.responseType??`text`}function PC(e){if(Array.isArray(e)&&(e=e[0]),e){let t=IC(e).split(`/`).pop()?.toLowerCase();if(!t)return;let n=t.split(`.`);for(;n.length>1&&AC.has(n.at(-1));)n.pop();let r=n.at(-1);if(r&&wo(r))return r}}function FC(e){let t=IC(e).split(`/`).pop()?.toLowerCase();if(!t)return!1;let n=t.split(`.`).at(-1);return!!n&&AC.has(n)}function IC(e){return e.replace(/[?#].*$/,``)}var LC=e=>typeof e==`object`?zC:RC,RC=e=>({data:e}),zC=e=>e;function BC(e){return e.type==`csv`||e.type==`tsv`}function VC(e){return e.type==`dsv`}function HC(e){return`url`in e}function UC(e){return kC.has(e)}var WC,GC=n((()=>{WC=class{constructor(e,t,n,r){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=r}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.maxv.blockPosition+65536-this.minv.blockPosition:this._fetchedSize}}})),KC,qC=n((()=>{KC=class{constructor({filehandle:e,renameRefSeqs:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async getMetadata(e={}){let{indices:t,...n}=await this.parse(e);return n}_findFirstData(e,t){return e?e.compareTo(t)>0?t:e:t}async parse(e={}){return this.parseP||=this._parse(e).catch(e=>{throw this.parseP=void 0,e}),this.parseP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices[e]?.binIndex}_parseNameBytes(e){let t=0,n=0,r=[],i={},a=new TextDecoder(`utf8`);for(let o=0;o<e.length;o+=1)if(!e[o]){if(n<o){let s=this.renameRefSeq(a.decode(e.subarray(n,o)));r[t]=s,i[s]=t}n=o+1,t+=1}return{refNameToId:i,refIdToName:r}}}}));function JC(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*XC+(n>>>0)}var YC,XC,ZC=n((()=>{YC=65536,XC=YC*YC}));function QC(e,t){return t.minv.blockPosition-e.maxv.blockPosition<65e3&&t.maxv.blockPosition-e.minv.blockPosition<5e6}function $C(e,t){let n=[],r;if(e.length===0)return e;e.sort(function(e,t){let n=e.minv.blockPosition-t.minv.blockPosition;return n===0?e.minv.dataPosition-t.minv.dataPosition:n});for(let i of e)(!t||i.maxv.compareTo(t)>0)&&(r===void 0?(n.push(i),r=i):QC(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i));return n}var ew=n((()=>{}));function tw(e,t=0){return new nw(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}var nw,rw=n((()=>{nw=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 iw(e,t){return e*2**t}function aw(e,t){return Math.floor(e/2**t)}var ow,sw,cw,lw,uw=n((()=>{Xy(),GC(),qC(),ZC(),ew(),rw(),ow=21582659,sw=38359875,cw={0:`generic`,1:`SAM`,2:`VCF`},lw=class extends KC{constructor(e){super(e),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t={}){let n=await this.parse(t),r=n.refNameToId[e];if(r===void 0||!n.indices[r])return-1;let{stats:i}=n.indices[r];return i?i.lineCount:-1}indexCov(){throw Error(`CSI indexes do not support indexcov`)}parseAuxData(e,t){let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=r&65536?`zero-based-half-open`:`1-based-closed`,a=cw[r&15];if(!a)throw Error(`invalid Tabix preset format flags ${r}`);let o={ref:n.getInt32(t+4,!0),start:n.getInt32(t+8,!0),end:n.getInt32(t+12,!0)},s=n.getInt32(t+16,!0),c=s?String.fromCharCode(s):void 0,l=n.getInt32(t+20,!0),u=n.getInt32(t+24,!0),{refIdToName:d,refNameToId:f}=this._parseNameBytes(e.subarray(t+28,t+28+u));return{refIdToName:d,refNameToId:f,skipLines:l,metaChar:c,columnNumbers:o,format:a,coordinateType:i}}async _parse(e={}){let t=await zy(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r;if(n.getUint32(0,!0)===ow)r=1;else if(n.getUint32(0,!0)===sw)r=2;else throw Error(`Not a CSI file`);this.minShift=n.getInt32(4,!0),this.depth=n.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;let i=2**(this.minShift+this.depth*3),a=n.getInt32(12,!0),o=a&&a>=30?this.parseAuxData(t,16):{refIdToName:[],refNameToId:{},metaChar:void 0,columnNumbers:{ref:0,start:1,end:2},coordinateType:`zero-based-half-open`,format:`generic`},s=n.getInt32(16+a,!0),c,l=16+a+4,u=Array(s).fill(0).map(()=>{let e=n.getInt32(l,!0);l+=4;let r={},i;for(let a=0;a<e;a+=1){let e=n.getUint32(l,!0);if(e>this.maxBinNumber)i=this.parsePseudoBin(t,l+4),l+=48;else{let i=tw(t,l+4);c=this._findFirstData(c,i);let a=n.getInt32(l+12,!0);l+=16;let o=Array(a);for(let n=0;n<a;n+=1){let r=tw(t,l),i=tw(t,l+8);l+=16,o[n]=new WC(r,i,e)}r[e]=o}}return{binIndex:r,stats:i}});return{...o,csi:!0,refCount:s,maxBlockSize:65536,firstDataLine:c,csiVersion:r,indices:u,depth:this.depth,maxBinNumber:this.maxBinNumber,maxRefLength:i}}parsePseudoBin(e,t){return{lineCount:JC(e,t+28)}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r),a=i.refNameToId[e];if(a===void 0)return[];let o=i.indices[a];if(!o)return[];let s=this.reg2bins(t,n),c=[];for(let[e,t]of s)for(let n=e;n<=t;n++)if(o.binIndex[n])for(let e of o.binIndex[n])c.push(new WC(e.minv,e.maxv,n));return $C(c,new nw(0,0))}reg2bins(e,t){--e,e<1&&(e=1),t>2**50&&(t=2**34),--t;let n=0,r=0,i=this.minShift+this.depth*3,a=[];for(;n<=this.depth;i-=3,r+=iw(1,n*3),n+=1){let n=r+aw(e,i),o=r+aw(t,i);if(o-n+a.length>this.maxBinNumber)throw 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`);a.push([n,o])}return a}}}));function dw(e,t){return e+=1,--t,[[0,0],[1+(e>>26),1+(t>>26)],[9+(e>>23),9+(t>>23)],[73+(e>>20),73+(t>>20)],[585+(e>>17),585+(t>>17)],[4681+(e>>14),4681+(t>>14)]]}var fw,pw,mw,hw=n((()=>{Xy(),GC(),qC(),ZC(),ew(),rw(),fw=21578324,pw=14,mw=class extends KC{async lineCount(e,t={}){let n=await this.parse(t),r=n.refNameToId[e];return r===void 0||!n.indices[r]?-1:n.indices[r].stats?.lineCount??-1}async _parse(e={}){let t=await zy(await this.filehandle.readFile(e)),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==fw)throw Error(`Not a TBI file`);let r=n.getUint32(4,!0),i=n.getUint32(8,!0),a=i&65536?`zero-based-half-open`:`1-based-closed`,o={0:`generic`,1:`SAM`,2:`VCF`}[i&15];if(!o)throw Error(`invalid Tabix preset format flags ${i}`);let s={ref:n.getInt32(12,!0),start:n.getInt32(16,!0),end:n.getInt32(20,!0)},c=n.getInt32(24,!0),l=((1<<18)-1)/7,u=2**29,d=c?String.fromCharCode(c):void 0,f=n.getInt32(28,!0),p=n.getInt32(32,!0),{refNameToId:m,refIdToName:h}=this._parseNameBytes(t.slice(36,36+p)),g=36+p,_;return{indices:Array(r).fill(0).map(()=>{let e=n.getInt32(g,!0);g+=4;let r={},i;for(let a=0;a<e;a+=1){let e=n.getUint32(g,!0);if(g+=4,e>l+1)throw Error(`tabix index contains too many bins, please use a CSI index`);if(e===l+1){let e=n.getInt32(g,!0);g+=4,e===2&&(i=this.parsePseudoBin(t,g)),g+=16*e}else{let i=n.getInt32(g,!0);g+=4;let a=Array(i);for(let n=0;n<i;n+=1){let r=tw(t,g),i=tw(t,g+8);g+=16,_=this._findFirstData(_,r),a[n]=new WC(r,i,e)}r[e]=a}}let a=n.getInt32(g,!0);g+=4;let o=Array(a);for(let e=0;e<a;e+=1)o[e]=tw(t,g),g+=8,_=this._findFirstData(_,o[e]);return{binIndex:r,linearIndex:o,stats:i}}),metaChar:d,maxBinNumber:l,maxRefLength:u,skipLines:f,firstDataLine:_,columnNumbers:s,coordinateType:a,format:o,refIdToName:h,refNameToId:m,maxBlockSize:65536}}parsePseudoBin(e,t){return{lineCount:JC(e,t+16)}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r),a=i.refNameToId[e];if(a===void 0)return[];let o=i.indices[a];if(!o)return[];(o.linearIndex.length>0?o.linearIndex[t>>pw>=o.linearIndex.length?o.linearIndex.length-1:t>>pw]:new nw(0,0))||console.warn(`querying outside of possible tabix range`);let s=dw(t,n),c=[];for(let[e,t]of s)for(let n=e;n<=t;n++)if(o.binIndex[n])for(let e of o.binIndex[n])c.push(new WC(e.minv,e.maxv,n));let l=o.linearIndex.length,u,d=Math.min(t>>14,l-1),f=Math.min(n>>14,l-1);for(let e=d;e<=f;++e){let t=o.linearIndex[e];t&&(!u||t.compareTo(u)<0)&&(u=t)}return $C(c,u)}}})),gw,_w=n((()=>{Sb(),Xy(),Rb(),Mg(),uw(),hw(),gw=class{constructor({path:e,filehandle:t,url:n,tbiPath:r,tbiUrl:i,tbiFilehandle:a,csiPath:o,csiUrl:s,csiFilehandle:c,renameRefSeqs:l,chunkCacheSize:u=5*2**20}){this.cache=new Lb({maxSize:1e3});let d=l??(e=>e);if(t)this.filehandle=t;else if(e)this.filehandle=new jg(e);else if(n)this.filehandle=new Og(n);else throw TypeError(`must provide either filehandle or path`);if(a)this.index=new mw({filehandle:a,renameRefSeqs:d});else if(c)this.index=new lw({filehandle:c,renameRefSeqs:d});else if(r)this.index=new mw({filehandle:new jg(r),renameRefSeqs:d});else if(o)this.index=new lw({filehandle:new jg(o),renameRefSeqs:d});else if(e)this.index=new mw({filehandle:new jg(`${e}.tbi`),renameRefSeqs:d});else if(s)this.index=new lw({filehandle:new Og(s)});else if(i)this.index=new mw({filehandle:new Og(i)});else if(n)this.index=new mw({filehandle:new Og(`${n}.tbi`)});else throw TypeError(`must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl`);this.renameRefSeq=d,this.hasCustomRenameRefSeq=l!==void 0,this.chunkCache=new bb({cache:new Lb({maxSize:Math.floor(u/65536)}),fill:(e,t)=>this.readChunk(e,{signal:t})})}calculateFileOffset(e,t,n,r,i){return e[n]*256+(r-t[n])+i+1}async getLines(e,t,n,r){let i,a={},o;typeof r==`function`?o=r:(a=r,o=r.lineCallback,i=r.signal);let s=await this.index.getMetadata(a),c=t??0,l=n??s.maxRefLength;if(!(c<=l))throw TypeError(`invalid start and end coordinates. start must be less than or equal to end`);if(c===l)return;let u=await this.index.blocksForRange(e,c,l,a),d=new TextDecoder(`utf8`),f=s.format===`VCF`,p={ref:s.columnNumbers.ref||0,start:s.columnNumbers.start||0,end:f?8:s.columnNumbers.end||0},m=Math.max(p.ref,p.start,p.end),h=s.metaChar?.charCodeAt(0),g=s.coordinateType===`1-based-closed`?-1:0,_=!this.hasCustomRenameRefSeq;for(let t of u){let{buffer:n,cpositions:r,dpositions:a}=await this.chunkCache.get(t.toString(),t,i),s=0,u=0,v=d.decode(n);if(n.length==v.length)for(;s<v.length;){let n=v.indexOf(`
|
|
208
|
+
`,s);if(n===-1)break;let i=v.slice(s,n);if(a){let e=s+t.minv.dataPosition;for(;u<a.length&&e>=a[u];)u++}let d=this.checkLine(e,c,l,i,p.ref,p.start,p.end,m,h,g,f,_);if(d===null)return;d!==void 0&&o(i,this.calculateFileOffset(r,a,u,s,t.minv.dataPosition),d.start,d.end),s=n+1}else for(;s<n.length;){let i=n.indexOf(10,s);if(i===-1)break;let v=n.slice(s,i),y=d.decode(v);if(a){let e=s+t.minv.dataPosition;for(;u<a.length&&e>=a[u];)u++}let b=this.checkLine(e,c,l,y,p.ref,p.start,p.end,m,h,g,f,_);if(b===null)return;b!==void 0&&o(y,this.calculateFileOffset(r,a,u,s,t.minv.dataPosition),b.start,b.end),s=i+1}}}async getMetadata(e={}){return this.index.getMetadata(e)}async getHeaderBuffer(e={}){let{firstDataLine:t,metaChar:n,maxBlockSize:r}=await this.getMetadata(e),i=(t?.blockPosition||0)+r,a=await zy(await this.filehandle.read(i,0,e));if(n){let e=-1,t=n.charCodeAt(0);for(let n=0,r=a.length;n<r;n++){let r=a[n];if(n===e+1&&r!==t)break;r===10&&(e=n)}return a.subarray(0,e+1)}return a}async getHeader(e={}){let t=new TextDecoder(`utf8`),n=await this.getHeaderBuffer(e);return t.decode(n)}async getReferenceSequenceNames(e={}){return(await this.getMetadata(e)).refIdToName}checkLine(e,t,n,r,i,a,o,s,c,l,u,d){if(c!==void 0&&r.charCodeAt(0)===c)return;if(r.length<500){let s=r.split(` `),c=s[i-1];if(!(d?c===e:this.renameRefSeq(c)===e))return;let f=+s[a-1]+l;if(f>=n)return null;let p;return p=o===0||o===a?f+1:u?this._getVcfEnd(f,s[3],s[o-1]):+s[o-1],p<=t?void 0:{start:f,end:p}}let f=-1,p=[-1];for(let e=0;e<s;e++){let e=r.indexOf(` `,f+1);if(e===-1){p.push(r.length);break}p.push(e),f=e}let m=r.slice(p[i-1]+1,p[i]);if(!(d?m===e:this.renameRefSeq(m)===e))return;let h=+r.slice(p[a-1]+1,p[a])+l;if(h>=n)return null;let g;if(g=o===0||o===a?h+1:u?this._getVcfEnd(h,r.slice(p[3]+1,p[4]),r.slice(p[o-1]+1,p[o])):+r.slice(p[o-1]+1,p[o]),!(g<=t))return{start:h,end:g}}_getVcfEnd(e,t,n){let r=e+t.length;if(n.includes(`SVTYPE=TRA`))return e+1;if(n[0]!==`.`){let e=n.indexOf(`END=`);if(e!==-1&&(e===0||n[e-1]===`;`)){let t=e+4,i=n.indexOf(`;`,t);i===-1&&(i=n.length),r=Number.parseInt(n.slice(t,i),10)}}return r}async lineCount(e,t={}){return this.index.lineCount(e,t)}async readChunk(e,t={}){return By(await this.filehandle.read(e.fetchedSize(),e.minv.blockPosition,t),e,this.cache)}}})),vw=r({CSI:()=>lw,TBI:()=>mw,TabixIndexedFile:()=>gw}),yw=n((()=>{_w(),uw(),hw()}));Xy();var bw=class extends xg{#e;constructor(e,t){let n={channel:`x`,windowSize:3e6,debounce:200,debounceMode:`domain`,addChrPrefix:!1,...e},r=pg(n.channel);if(super(t,r),this.params=vg(t.paramRuntime,n,e=>{e.has(`url`)||e.has(`indexUrl`)||e.has(`addChrPrefix`)?this.#t().then(()=>this.reloadLastDomain()):e.has(`windowSize`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!pg(this.params.url))throw 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(()=>(yw(),vw)),Promise.resolve().then(()=>(Mg(),Ag))]).then(async([{TabixIndexedFile:n},{RemoteFile:r}])=>{let i=e=>new r(ih(e,this.view.getBaseUrl())),a=pg(this.params.url),o=pg(this.params.indexUrl)??a+`.tbi`,s=pg(this.params.addChrPrefix);this.#e=new n({filehandle:i(a),tbiFilehandle:i(o),renameRefSeqs:s===!0?e=>`chr`+e:s?e=>s+e:void 0});try{this.setLoadingStatus(`loading`);let t=await this.#e.getHeader();await this._handleHeader(t),this.setLoadingStatus(`complete`),e()}catch(e){this.load(),this.setLoadingStatus(`error`,`${pg(this.params.url)}: ${e.message}`),t(e)}})}),this.initializedPromise}async loadInterval(e){await this.initializedPromise;let t=await this.discretizeAndLoad(e,async(e,t)=>{let n=[];return await this.#e.getLines(e.chrom,e.startPos,e.endPos,{lineCallback:e=>{n.push(e)},signal:t}),this._parseFeatures(n)});t&&this.publishData(t)}async _handleHeader(e){}async _readFilePrefix(){let{maxBlockSize:e}=await this.#e.getMetadata(),t=await zy(await this.#e.filehandle.read(e,0));return new TextDecoder(`utf-8`).decode(t)}_parseFeatures(e){return[]}};function xw(e){let t=e.split(/\r?\n/);for(let e=t.length-1;e>=0;e--){let n=t[e].trimEnd().replace(/\r$/,``);if(!n||n.startsWith(`##`)||!n.startsWith(`#`))continue;let r=n.slice(1).split(` `);if(r.length>1)return r}}function Sw(e){let t=e.split(/\r?\n/).find(e=>{let t=e.trimStart();return t!==``&&!t.startsWith(`#`)});if(!t)return;let n=t.trimEnd().replace(/\r$/,``).split(` `);if(n.length>1)return n}function Cw(e,t,n){if(e.length==0)return[];let r={type:`tsv`,columns:t,parse:n??`auto`},i=To(e.join(`
|
|
209
|
+
`),MC(r)),a=t[0],o=null,s=``;for(let e of i){let t=e[a];t!=o&&(o=t,s=String(t)),e[a]=s}return i}var ww=class extends bw{#e;get label(){return`tabixSource`}async _handleHeader(e){let t=this.params;if(this.#e=pg(t.columns)??xw(e),this.#e?.length||(this.#e=Sw(await this._readFilePrefix())),!this.#e?.length)throw Error(`No columns available for Tabix TSV source. Provide data.lazy.columns or a tabix header line such as #chrom\\tstart\\tend, or a plain first row such as chrom\\tstart\\tend.`)}_parseFeatures(e){let t=this.params;return Cw(e,this.#e??[],pg(t.parse))}};function Tw(e){return e?.type==`tabix`}Gm(Tw,ww);function Ew(e){let t=e.indexOf(`%`);if(t===-1)return e;let n=``,r=0,i=t;for(;i<e.length;)if(e[i]===`%`&&i+2<e.length){n+=e.slice(r,i);let t=Rw[e.slice(i+1,i+3)];t===void 0?n+=e.slice(i,i+3):n+=t,i+=3,r=i}else i++;return n+e.slice(r)}function Dw(e){if(e.length===0||e===`.`)return{};let t={},n=e.length;e[n-1]===`
|
|
210
|
+
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n),o=t[a];o||(o=[],t[a]=o);let s=n+1;for(;s<i;){let t=e.indexOf(`,`,s);if((t===-1||t>i)&&(t=i),t>s){let n=e.slice(s,t);o.push(Ew(n))}s=t+1}}}r=i+1}return t}function Ow(e){if(e.length===0||e===`.`)return{};let t={},n=e.length;e[n-1]===`
|
|
211
|
+
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n),o=t[a];o||(o=[],t[a]=o);let s=n+1;for(;s<i;){let t=e.indexOf(`,`,s);(t===-1||t>i)&&(t=i),t>s&&o.push(e.slice(s,t)),s=t+1}}}r=i+1}return t}function kw(e){return e.length===0||e===`.`?null:Ew(e)}function Aw(e){return e.length===0||e===`.`?null:e}function jw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8];return{seq_id:kw(n),source:kw(r),type:kw(i),start:a.length===0||a===`.`?null:+a,end:o.length===0||o===`.`?null:+o,score:s.length===0||s===`.`?null:+s,strand:Aw(c),phase:Aw(l),attributes:u.length===0||u===`.`?null:Dw(u)}}function Mw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8];return{seq_id:Aw(n),source:Aw(r),type:Aw(i),start:a.length===0||a===`.`?null:+a,end:o.length===0||o===`.`?null:+o,score:s.length===0||s===`.`?null:+s,strand:Aw(c),phase:Aw(l),attributes:u.length===0||u===`.`?null:Ow(u)}}function Nw(e){if(e===`+`)return 1;if(e===`-`)return-1;if(e===`.`)return 0}function Pw(e,t){if(e.length===0||e===`.`)return;let n=e.length;e[n-1]===`
|
|
212
|
+
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n);if(a===`_lineHash`){r=i+1;continue}let o=a.toLowerCase();zw.has(o)&&(o+=`2`);let s=[],c=n+1;for(;c<i;){let t=e.indexOf(`,`,c);if((t===-1||t>i)&&(t=i),t>c){let n=e.slice(c,t);s.push(Ew(n))}c=t+1}t[o]=s.length===1?s[0]:s}}r=i+1}}function Fw(e,t){if(e.length===0||e===`.`)return;let n=e.length;e[n-1]===`
|
|
213
|
+
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n);if(a===`_lineHash`){r=i+1;continue}let o=a.toLowerCase();zw.has(o)&&(o+=`2`);let s=[],c=n+1;for(;c<i;){let t=e.indexOf(`,`,c);(t===-1||t>i)&&(t=i),t>c&&s.push(e.slice(c,t)),c=t+1}t[o]=s.length===1?s[0]:s}}r=i+1}}function Iw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d={refName:n.length===0||n===`.`?``:Ew(n),source:r.length===0||r===`.`?null:Ew(r),type:i.length===0||i===`.`?null:Ew(i),start:a.length===0||a===`.`?0:a-1,end:o.length===0||o===`.`?0:+o,score:s.length===0||s===`.`?void 0:+s,strand:Nw(c),phase:l.length===0||l===`.`?void 0:+l,subfeatures:[]};return Pw(u,d),d}function Lw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d={refName:n.length===0||n===`.`?``:n,source:r.length===0||r===`.`?null:r,type:i.length===0||i===`.`?null:i,start:a.length===0||a===`.`?0:a-1,end:o.length===0||o===`.`?0:+o,score:s.length===0||s===`.`?void 0:+s,strand:Nw(c),phase:l.length===0||l===`.`?void 0:+l,subfeatures:[]};return Fw(u,d),d}var Rw,zw,Bw=n((()=>{Rw={};for(let e=0;e<256;e++){let t=e.toString(16).toUpperCase().padStart(2,`0`);Rw[t]=String.fromCharCode(e),Rw[t.toLowerCase()]=String.fromCharCode(e)}zw=new Set([`start`,`end`,`seq_id`,`score`,`type`,`source`,`phase`,`strand`])}));function Vw(e){return Ww(Uw(e))}function Hw(e){return Gw(Uw(e))}function Uw(e){let t=e.split(/\r?\n/),n=[];for(let e=0;e<t.length;e++){let r=t[e];if(r.length===0||r[0]===`#`){if(r.startsWith(`##FASTA`))break;continue}if(r[0]===`>`)break;n.push({line:r,start:0,end:0,hasEscapes:r.includes(`%`)})}return n}function Ww(e){let t=[],n=new Map,r=new Map;for(let i=0;i<e.length;i++){let a=e[i],o=a.hasEscapes?jw(a.line):Mw(a.line);o.child_features=[],o.derived_features=[],a.lineHash!==void 0&&(o.attributes||={},o.attributes._lineHash=[String(a.lineHash)]);let s=o.attributes,c=s?.ID,l=s?.Parent;if(!c&&!l){t.push([o]);continue}let u;if(c){let e=c[0],i=n.get(e);if(i)i.push(o),u=i;else{u=[o],l||t.push(u),n.set(e,u);let i=r.get(e);if(i){for(let e=0;e<i.length;e++)o.child_features.push(i[e]);r.delete(e)}}}else u=[o];if(l)for(let e=0;e<l.length;e++){let t=l[e],i=n.get(t);if(i)for(let e=0;e<i.length;e++)i[e].child_features.push(u);else{let e=r.get(t);e||(e=[],r.set(t,e)),e.push(u)}}}return t}function Gw(e){let t=[],n=new Map,r=new Map;for(let i=0;i<e.length;i++){let a=e[i],o=a.hasEscapes?Iw(a.line):Lw(a.line);a.lineHash!==void 0&&(o._lineHash=String(a.lineHash));let s=o.id,c=o.parent;if(!s&&!c){t.push(o);continue}if(s&&!n.get(s)){c||t.push(o),n.set(s,o);let e=r.get(s);if(e){for(let t=0;t<e.length;t++)o.subfeatures.push(e[t]);r.delete(s)}}if(c){let e=Array.isArray(c)?c:[c];for(let t=0;t<e.length;t++){let i=e[t],a=n.get(i);if(a)a.subfeatures.push(o);else{let e=r.get(i);e||(e=[],r.set(i,e)),e.push(o)}}}}return t}var Kw=n((()=>{Bw()})),qw=r({parseRecords:()=>Ww,parseRecordsJBrowse:()=>Gw,parseStringSync:()=>Vw,parseStringSyncJBrowse:()=>Hw}),Jw=n((()=>{Kw()})),Yw=class extends bw{#e;get label(){return`gff3Source`}async _handleHeader(e){this.#e=await Promise.resolve().then(()=>(Jw(),qw))}_parseFeatures(e){return this.#e?.parseStringSync(e.join(`
|
|
214
|
+
`))}};function Xw(e){return e?.type==`gff3`}Gm(Xw,Yw);function Zw(e,t,n){let r=Object.create(null),i=n.length,a=t.length,o=0;if(e===`GT`){for(let e=0;e<i;e++){let i=o;for(;o<a&&t.charCodeAt(o)!==9;)o++;r[n[e]]=t.slice(i,o),o++}return r}let s=e.indexOf(`GT`);if(s===-1)return r;if(s===0){for(let e=0;e<i;e++){let i=o;for(;o<a&&t.charCodeAt(o)!==58&&t.charCodeAt(o)!==9;)o++;for(r[n[e]]=t.slice(i,o);o<a&&t.charCodeAt(o)!==9;)o++;o++}return r}let c=0;for(let t=0;t<s;t++)e.charCodeAt(t)===58&&c++;for(let e=0;e<i;e++){let i=o,s=o;for(;s<a&&t.charCodeAt(s)!==9;)s++;let l=0,u=i;for(let a=i;a<=s;a++)if(a===s||t.charCodeAt(a)===58){if(l===c){r[n[e]]=t.slice(u,a);break}l++,u=a+1}o=s+1}return r}var Qw=n((()=>{}));function $w(e,t,n,r){let i=t.length,a=0;if(e===`GT`){for(let e=0;e<n;e++){let e=a;for(;a<i&&t.charCodeAt(a)!==9;)a++;r(t,e,a),a++}return}let o=e.indexOf(`GT`);if(o===-1)return;if(o===0){for(let e=0;e<n;e++){let e=a;for(;a<i&&t.charCodeAt(a)!==58&&t.charCodeAt(a)!==9;)a++;for(r(t,e,a);a<i&&t.charCodeAt(a)!==9;)a++;a++}return}let s=0;for(let t=0;t<o;t++)e.charCodeAt(t)===58&&s++;for(let e=0;e<n;e++){let e=a,n=a;for(;n<i&&t.charCodeAt(n)!==9;)n++;let o=0,c=e;for(let i=e;i<=n;i++)if(i===n||t.charCodeAt(i)===58){if(o===s){r(t,c,i);break}o++,c=i+1}a=n+1}}var eT=n((()=>{}));function tT(e){try{return decodeURIComponent(e)}catch{return e}}var nT,rT=n((()=>{Qw(),eT(),nT=class{constructor(e,t,n,r,i){let a=0,o=0;for(;a<e.length&&o<9;)e[a]===` `&&(o+=1),a+=1;let s=o===9?a-1:a,c=e.slice(0,s).split(` `),l=e.slice(s+1),[u,d,f,p,m,h,g]=c,_=g===`.`?void 0:g.split(`;`);if(i&&!c[7])throw Error(`no INFO field specified, must contain at least a '.' (turn off strict mode to allow)`);this.CHROM=u,this.POS=+d,this.ID=f===`.`?void 0:f.split(`;`),this.REF=p,this.ALT=m===`.`?void 0:m.split(`,`),this.QUAL=h===`.`?void 0:+h,this.FILTER=_?.length===1&&_[0]===`PASS`?`PASS`:_,this.INFO=c[7]===void 0||c[7]===`.`?{}:this.parseInfo(c[7],t),this.FORMAT=c[8],this.formatMeta=n,this.rest=l,this.sampleNames=r}parseInfo(e,t){let n={},r=e.includes(`%`),i=e.split(`;`),a=i.length;for(let e=0;e<a;e++){let a=i[e],o=a.indexOf(`=`),s=o===-1?a:a.slice(0,o),c=o===-1?void 0:a.slice(o+1),l=t[s]?.Type;if(l===`Flag`)n[s]=!0;else if(!c)n[s]=!0;else{let e=l===`Integer`||l===`Float`,t=c.split(`,`),i=t.length;if(r){let r=[];for(let n=0;n<i;n++){let i=t[n];if(i===`.`)r.push(void 0);else{let t=tT(i);r.push(e?Number(t):t)}}n[s]=r}else{let r=[];for(let n=0;n<i;n++){let i=t[n];i===`.`?r.push(void 0):r.push(e?Number(i):i)}n[s]=r}}}return n}SAMPLES(){let e={},t=this.FORMAT;if(t){let n=this.rest.split(` `),r=t.split(`:`),i=[];for(let e=0;e<r.length;e++){let t=this.formatMeta[r[e]]?.Type;i.push(t===`Integer`||t===`Float`)}let a=r.length,o=this.sampleNames.length;for(let t=0;t<o;t++){let o=this.sampleNames[t],s={},c=n[t],l=c.length,u=0,d=0;for(let e=0;e<=l;e++)if(e===l||c[e]===`:`){let t=c.slice(u,e);if(t===``||t===`.`)s[r[d]]=void 0;else{let e=t.split(`,`),n=[];if(i[d])for(let t=0;t<e.length;t++){let r=e[t];n.push(r===`.`?void 0:+r)}else for(let t=0;t<e.length;t++){let r=e[t];n.push(r===`.`?void 0:r)}s[r[d]]=n}if(u=e+1,d+=1,d>=a)break}e[o]=s}}return e}GENOTYPES(){return Zw(this.FORMAT??``,this.rest,this.sampleNames)}processGenotypes(e){$w(this.FORMAT??``,this.rest,this.sampleNames.length,e)}toJSON(){return{CHROM:this.CHROM,POS:this.POS,ID:this.ID,REF:this.REF,ALT:this.ALT,QUAL:this.QUAL,FILTER:this.FILTER,INFO:this.INFO,FORMAT:this.FORMAT}}}}));function iT(e){let t=[],n=[],r=!1,i=!1,a=e.length;for(let o=0;o<a;o++){let a=e[o];a===`"`?(r=!r,n.push(a)):a===`[`?(i=!0,n.push(a)):a===`]`?(i=!1,n.push(a)):a===`,`&&!r&&!i?(t.push(n.join(``).trim()),n.length=0):n.push(a)}return n.length>0&&t.push(n.join(``).trim()),t}function aT(e,t){let n=e.indexOf(t);return[e.slice(0,n),e.slice(n+1)]}function oT(e){let t=iT(e.slice(1,-1)),n=[];for(let e=0;e<t.length;e++){let r=t[e],[i,a]=aT(r,`=`);if(a&&a.startsWith(`[`)&&a.endsWith(`]`)){let e=a.slice(1,-1).split(`,`);for(let t=0;t<e.length;t++)e[t]=e[t].trim();n.push([i,e])}else a&&a.startsWith(`"`)&&a.endsWith(`"`)?n.push([i,a.slice(1,-1)]):n.push([i,a])}return Object.fromEntries(n)}var sT=n((()=>{})),cT,lT=n((()=>{cT={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`}}}})),uT,dT=n((()=>{rT(),sT(),lT(),uT=class{constructor({header:e,strict:t=!0}){if(!e.length)throw Error(`empty header received`);let n=e.split(/[\r\n]+/).filter(Boolean);if(!n.length)throw Error(`no non-empty header lines specified`);this.strict=t,this.metadata={INFO:{...cT.InfoFields},FORMAT:{...cT.GenotypeFields},ALT:{...cT.AltTypes},FILTER:{...cT.FilterTypes}};let r;for(let e=0;e<n.length;e++){let t=n[e];if(t.startsWith(`#`))t.startsWith(`##`)?this.parseMetadata(t):r=t;else throw Error(`Bad line in header:\n${t}`)}if(!r)throw Error(`No format line found in header`);let i=r.trim().split(` `),a=i.slice(0,8),o=[`#CHROM`,`POS`,`ID`,`REF`,`ALT`,`QUAL`,`FILTER`,`INFO`];if(i.length<8)throw Error(`VCF header missing columns:\n${r}`);if(a.length!==o.length||!a.every((e,t)=>e===o[t]))throw Error(`VCF column headers not correct:\n${r}`);this.samples=i.slice(9)}parseMetadata(e){let t=/^##(.+?)=(.*)/.exec(e.trim());if(!t)throw Error(`Line is not a valid metadata line: ${e}`);let[n,r]=t.slice(1,3),i=n;if(r?.startsWith(`<`)){i in this.metadata||(this.metadata[i]={});let[e,t]=this.parseStructuredMetaVal(r);e?this.metadata[i][e]=t:this.metadata[i]=t}else this.metadata[i]=r}parseStructuredMetaVal(e){let t=oT(e),n=t.ID;return delete t.ID,`Number`in t&&(Number.isNaN(Number(t.Number))||(t.Number=Number(t.Number))),[n,t]}getMetadata(...e){let t=this.metadata,n=e.length;for(let r=0;r<n;r++)if(t=t[e[r]],!t)return t;return t}parseLine(e){return new nT(e,this.metadata.INFO,this.metadata.FORMAT,this.samples,this.strict)}}}));function fT(e){let t=e[0],n=e[e.length-1];if(t===`[`||t===`]`||n===`[`||n===`]`){let t=e.split(/[[\]]/),n=e.includes(`[`)?`right`:`left`,r,i,a,o=t.length;for(let e=0;e<o;e++){let n=t[e];n&&(n.includes(`:`)?(a=n,r=i?`right`:`left`):i=n)}if(!(a&&r&&i))throw Error(`Invalid breakend: ${e}`);return{MatePosition:a,Join:r,Replacement:i,MateDirection:n}}if(t===`.`)return{Join:`left`,SingleBreakend:!0,Replacement:e.slice(1)};if(n===`.`)return{Join:`right`,SingleBreakend:!0,Replacement:e.slice(0,-1)};if(t===`<`){let t=pT.exec(e);if(!t)throw Error(`failed to parse ${e}`);let n=t[2];return n?{Join:`left`,Replacement:n,MateDirection:`right`,MatePosition:`<${t[1]}>:1`}:void 0}if(e.includes(`<`)){let t=mT.exec(e);if(!t)throw Error(`failed to parse ${e}`);let n=t[1];return n?{Join:`right`,Replacement:n,MateDirection:`right`,MatePosition:`<${t[2]}>:1`}:void 0}}var pT,mT,hT=n((()=>{pT=/<(.*)>(.*)/,mT=/(.*)<(.*)>/})),gT=r({Variant:()=>nT,default:()=>uT,parseBreakend:()=>fT}),_T=n((()=>{rT(),dT(),hT()})),vT=class extends bw{#e;get label(){return`vcfSource`}async _handleHeader(e){let t=(await Promise.resolve().then(()=>(_T(),gT))).default;this.#e=new t({header:e})}_parseFeatures(e){return e.map(e=>{let t=this.#e.parseLine(e);return delete t.GENOTYPES,t.SAMPLES=t.SAMPLES(),t})}};function yT(e){return e?.type==`vcf`}Gm(yT,vT);var bT=`
|
|
215
215
|
@scope {
|
|
216
216
|
:scope {
|
|
217
217
|
--genome-spy-basic-spacing: 10px;
|
|
@@ -300,7 +300,10 @@ height: 1.5em;
|
|
|
300
300
|
}
|
|
301
301
|
|
|
302
302
|
.tooltip {
|
|
303
|
-
position:
|
|
303
|
+
position: fixed;
|
|
304
|
+
inset: auto;
|
|
305
|
+
margin: 0;
|
|
306
|
+
border: 0;
|
|
304
307
|
|
|
305
308
|
max-width: 450px;
|
|
306
309
|
overflow: hidden;
|
|
@@ -472,27 +475,27 @@ background: #fff0f0;
|
|
|
472
475
|
}
|
|
473
476
|
}
|
|
474
477
|
}
|
|
475
|
-
|
|
478
|
+
`,xT=class{#e=!1;#t=!0;#n=void 0;#r=0;#i=void 0;#a=0;#o;#s=!1;#c=[!0];constructor(e){this.#o=document.createElement(`div`),this.#o.className=`tooltip`,this.#o.setAttribute(`popover`,`manual`),e.appendChild(this.#o),this.clear()}set sticky(e){!e&&this.#e&&this.clear(),this.#e=e,this.#o.classList.toggle(`sticky`,this.#e)}get sticky(){return this.#e}set visible(e){e!=this.#t&&(this.#o.style.display=e?null:`none`,this.#l(e),this.#t=e)}get visible(){return this.#t}get enabled(){return Zl(this.#c)??!0}containsEvent(e){return e.composedPath().includes(this.#o)}pushEnabledState(e){this.#c.push(e),e||(this.visible=!1)}popEnabledState(){this.#c.pop()}handleMouseMove(e){if(this.#e)return;this.mouseCoords=[e.clientX,e.clientY];let t=performance.now();!this.visible&&!this._isPenalty()&&t-this.#a>500&&(this.#r=t+70),this.#i&&CT(this.mouseCoords,this.#i)>20&&(this.#r=t+400),this.#i=this.mouseCoords,this.visible&&this.updatePlacement(),this.#a=t}updatePlacement(){let[e,t]=this.mouseCoords,n=e+10;n>window.innerWidth-10-this.#o.offsetWidth&&(n=e-10-this.#o.offsetWidth),this.#o.style.left=n+`px`,this.#o.style.top=Math.min(t+10,window.innerHeight-10-this.#o.offsetHeight)+`px`}setContent(e){if(!this.#e){if(!e||!this.enabled||this._isPenalty()){this.visible&&=(Le(``,this.#o),!1),this.#n=void 0;return}Le(e,this.#o),this.#o.querySelectorAll(`.autoscroll-container`).forEach(ST),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||=e=>Promise.resolve(D` ${JSON.stringify(e)} `);let n=e;t(e).then(e=>{this.#n===n&&this.setContent(e)}).catch(e=>{if(e!==`debounced`)throw e})}}_isPenalty(){return this.#r&&this.#r>performance.now()}#l(e){e!=this.#s&&(e&&this.#o.showPopover?this.#o.showPopover():!e&&this.#o.hidePopover&&this.#o.hidePopover(),this.#s=e)}};function ST(e){e&&queueMicrotask(()=>{e.querySelector(`tr.hovered`)?.scrollIntoView({block:`nearest`,inline:`nearest`})})}function CT(e,t){let n=0;for(let r=0;r<e.length;r++)n+=(e[r]-t[r])**2;return Math.sqrt(n)}function wT(e){e.classList.add(`genome-spy`);let t=document.createElement(`style`);t.innerHTML=bT,e.appendChild(t);let n=ET(`div`,{class:`canvas-wrapper`});return e.appendChild(n),n.classList.add(`loading`),{canvasWrapper:n,loadingIndicatorsElement:ET(`div`,{class:`loading-indicators`}),tooltip:new xT(e),styleElement:t}}function TT(e,t){let n=document.createElement(`div`);n.className=`message-box`;let r=document.createElement(`div`);r.textContent=t,n.appendChild(r),e.appendChild(n)}function ET(e,t){let n=document.createElement(e);for(let[e,r]of Object.entries(t))[`innerHTML`,`innerText`,`className`].includes(e)&&(n[e]=r),n.setAttribute(e,r);return n}var DT={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},OT=e=>(...t)=>({_$litDirective$:e,values:t}),kT=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},AT=`important`,jT=` !`+AT,MT=OT(class extends kT{constructor(e){if(super(e),e.type!==DT.ATTRIBUTE||e.name!==`style`||e.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(e){return Object.keys(e).reduce((t,n)=>{let r=e[n];return r==null?t:t+`${n=n.includes(`-`)?n:n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,`-$&`).toLowerCase()}:${r};`},``)}update(e,[t]){let{style:n}=e.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let e of this.ft)t[e]??(this.ft.delete(e),e.includes(`-`)?n.removeProperty(e):n[e]=null);for(let e in t){let r=t[e];if(r!=null){this.ft.add(e);let t=typeof r==`string`&&r.endsWith(jT);e.includes(`-`)||t?n.setProperty(e,t?r.slice(0,-11):r,t?AT:``):n[e]=r}}return xe}}),NT=`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`,PT=class{#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(),null)}updateLayout(){let e=[],t=()=>{for(let[,e]of this.#t.entries())if(e.status==`loading`||e.status==`error`)return!0;return!1},n,r=!1;for(let[t,i]of this.#t.entries()){let a=i.status==`loading`||i.status==`error`,o=t.coords;if(!o&&a&&!n&&(n=i),o){a&&(r=!0);let t={left:`${o.x}px`,top:`${o.y}px`,width:`${o.width}px`,height:`${o.height}px`};e.push(D`<div style=${MT(t)}>
|
|
476
479
|
<div class=${i.status}>
|
|
477
|
-
${i.status==`error`?
|
|
480
|
+
${i.status==`error`?D`<span
|
|
478
481
|
>Loading
|
|
479
|
-
failed${i.detail?
|
|
480
|
-
>`:
|
|
482
|
+
failed${i.detail?D`: ${i.detail}`:Se}</span
|
|
483
|
+
>`:D`
|
|
481
484
|
<img src="${NT}" alt="" />
|
|
482
485
|
<span>Loading...</span>
|
|
483
486
|
`}
|
|
484
487
|
</div>
|
|
485
|
-
</div>`)}}n&&!r&&e.push(
|
|
488
|
+
</div>`)}}n&&!r&&e.push(D`<div style=${MT({left:`0px`,top:`0px`,width:`100%`,height:`100%`})}>
|
|
486
489
|
<div class=${n.status}>
|
|
487
|
-
${n.status==`error`?
|
|
490
|
+
${n.status==`error`?D`<span
|
|
488
491
|
>Loading
|
|
489
|
-
failed${n.detail?
|
|
490
|
-
>`:
|
|
492
|
+
failed${n.detail?D`: ${n.detail}`:Se}</span
|
|
493
|
+
>`:D`
|
|
491
494
|
<img src="${NT}" alt="" />
|
|
492
495
|
<span>Loading...</span>
|
|
493
496
|
`}
|
|
494
497
|
</div>
|
|
495
|
-
</div>`),t()?this.#e.style.display=`block`:setTimeout(()=>{t()||(this.#e.style.display=`none`)},3e3),
|
|
498
|
+
</div>`),t()?this.#e.style.display=`block`:setTimeout(()=>{t()||(this.#e.style.display=`none`)},3e3),Le(e,this.#e)}},FT=class{#e=new Map;#t=new Set;set(e,t,n){if(!e)throw Error(`LoadingStatusRegistry.set requires a view.`);this.#e.set(e,{status:t,detail:n});let r={view:e,status:t,detail:n};for(let e of this.#t)e(r)}delete(e){let t=this.#e.get(e);if(!t)return;this.#e.delete(e);let n={view:e,status:t.status,detail:t.detail};for(let e of this.#t)e(n)}get(e){return this.#e.get(e)}entries(){return this.#e.entries()}subscribe(e){return this.#t.add(e),()=>{this.#t.delete(e)}}};function IT(e){return t=>{if(e.querySelector(`.view-highlight`)?.remove(),t){if(!t.isVisible())return;let n=t.coords;if(n){let t=document.createElement(`div`);t.className=`view-highlight`,t.style.position=`absolute`,t.style.left=n.x+`px`,t.style.top=n.y+`px`,t.style.width=n.width+`px`,t.style.height=n.height+`px`,t.style.border=`1px solid green`,t.style.backgroundColor=`rgba(0, 255, 0, 0.05)`,t.style.pointerEvents=`none`,e.appendChild(t)}}}}var LT=class{#e;constructor(){this.#e=new Map}add(e,t){document.addEventListener(e,t);let n=this.#e.get(e);n||(n=[],this.#e.set(e,n)),n.push(t)}removeAll(){for(let[e,t]of this.#e)for(let n of t)document.removeEventListener(e,n);this.#e.clear()}},RT=class{#e;constructor(){this.#e=new Map}add(e,t){let n=this.#e.get(e);n||(n=new Set,this.#e.set(e,n)),n.add(t)}remove(e,t){this.#e.get(e)?.delete(t)}emit(e,t){this.#e.get(e)?.forEach(e=>e(t))}};function zT(e){let t=Math.floor(Math.random()*16777215).toString(16),n=[];for(let r of e.paramConfigs.values()){if(!mg(r))continue;let i=r.bind;if(!i||!(`input`in i))continue;let a=r.name,o=t=>{e.setValue(a,t)},s=e.getValue(a),c=i.name??a,l=i.debounce?bg(o,i.debounce,!1):o,u=`${t}-param-${a}`;if(i.input==`range`)n.push(D`<label for=${u}>${c}</label>
|
|
496
499
|
<div>
|
|
497
500
|
<input
|
|
498
501
|
id=${u}
|
|
@@ -503,15 +506,15 @@ background: #fff0f0;
|
|
|
503
506
|
.value=${s}
|
|
504
507
|
@input=${e=>{l(e.target.valueAsNumber),e.target.nextElementSibling.textContent=e.target.valueAsNumber}}
|
|
505
508
|
/><span>${s}</span>
|
|
506
|
-
</div>`);else if(i.input==`checkbox`)n.push(
|
|
509
|
+
</div>`);else if(i.input==`checkbox`)n.push(D`<label for=${u}>${c}</label>
|
|
507
510
|
<input
|
|
508
511
|
id=${u}
|
|
509
512
|
type="checkbox"
|
|
510
513
|
?checked=${s}
|
|
511
514
|
@input=${e=>l(e.target.checked)}
|
|
512
|
-
/>`);else if(i.input==`radio`)n.push(
|
|
515
|
+
/>`);else if(i.input==`radio`)n.push(D`<span class="label">${c}</span>
|
|
513
516
|
<div class="radio-group">
|
|
514
|
-
${i.options.map((e,t)=>
|
|
517
|
+
${i.options.map((e,t)=>D`<label>
|
|
515
518
|
<input
|
|
516
519
|
type="radio"
|
|
517
520
|
name=${a}
|
|
@@ -520,18 +523,18 @@ background: #fff0f0;
|
|
|
520
523
|
@input=${e=>l(e.target.value)}
|
|
521
524
|
/>${i.labels?.[t]??e}</label
|
|
522
525
|
>`)}
|
|
523
|
-
</div>`);else if(i.input==`select`)n.push(
|
|
526
|
+
</div>`);else if(i.input==`select`)n.push(D`<label for=${u}>${c}</label>
|
|
524
527
|
<select
|
|
525
528
|
id=${u}
|
|
526
529
|
@input=${e=>l(e.target.value)}
|
|
527
530
|
>
|
|
528
|
-
${i.options.map((e,t)=>
|
|
531
|
+
${i.options.map((e,t)=>D`<option
|
|
529
532
|
value=${e}
|
|
530
533
|
?selected=${s==e}
|
|
531
534
|
>
|
|
532
535
|
${i.labels?.[t]??e}
|
|
533
536
|
</option>`)}
|
|
534
|
-
</select> `);else if(i.input==`text`||i.input==`number`||i.input==`color`)n.push(
|
|
537
|
+
</select> `);else if(i.input==`text`||i.input==`number`||i.input==`color`)n.push(D`<label for=${u}>${c}</label>
|
|
535
538
|
<div>
|
|
536
539
|
<input
|
|
537
540
|
id=${u}
|
|
@@ -542,7 +545,7 @@ background: #fff0f0;
|
|
|
542
545
|
@focus=${e=>e.target.select()}
|
|
543
546
|
@input=${e=>{l(i.input==`number`?e.target.valueAsNumber:e.target.value)}}
|
|
544
547
|
/>
|
|
545
|
-
</div>`);else throw Error(`Unsupported input type: `+i.input);i.description&&n.push(O`<div class="description">${i.description}</div>`)}return n}var BT=class{#e;#t;#n;constructor(e,t){this.#e=e,this.#t=t,this.#n=void 0}initialize(e){let t=[];e.visit(e=>{let n=e.paramRuntime;t.push(...zT(n))});let n=this.#t.inputBindingContainer;if(!(!n||n==`none`||!t.length)){if(this.#n=document.createElement(`div`),this.#n.className=`gs-input-bindings`,n==`default`)this.#e.appendChild(this.#n);else if(n instanceof HTMLElement)n.appendChild(this.#n);else throw Error(`Invalid inputBindingContainer`);t.length&&Ie(O`<div class="gs-input-binding">${t}</div>`,this.#n)}}remove(){this.#n?.remove()}};Float32Array,Float32Array;var VT=5120,HT=5121,UT=5122,WT=5123,GT=5124,KT=5125,qT=5126,JT=32819,YT=32820,XT=33635,ZT=5131,QT=33640,$T=35899,eE=35902,tE=36269,nE=34042,rE={};{let e=rE;e[VT]=Int8Array,e[HT]=Uint8Array,e[UT]=Int16Array,e[WT]=Uint16Array,e[GT]=Int32Array,e[KT]=Uint32Array,e[qT]=Float32Array,e[JT]=Uint16Array,e[YT]=Uint16Array,e[XT]=Uint16Array,e[ZT]=Uint16Array,e[QT]=Uint32Array,e[$T]=Uint32Array,e[eE]=Uint32Array,e[tE]=Uint32Array,e[nE]=Uint32Array}function iE(e){if(e instanceof Int8Array)return VT;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)return HT;if(e instanceof Int16Array)return UT;if(e instanceof Uint16Array)return WT;if(e instanceof Int32Array)return GT;if(e instanceof Uint32Array)return KT;if(e instanceof Float32Array)return qT;throw Error(`unsupported typed array type`)}function aE(e){if(e===Int8Array)return VT;if(e===Uint8Array||e===Uint8ClampedArray)return HT;if(e===Int16Array)return UT;if(e===Uint16Array)return WT;if(e===Int32Array)return GT;if(e===Uint32Array)return KT;if(e===Float32Array)return qT;throw Error(`unsupported typed array type`)}function oE(e){let t=rE[e];if(!t)throw Error(`unknown gl type`);return t}var sE=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 cE(...e){console.error(...e)}function lE(...e){console.warn(...e)}function uE(e,t){return typeof WebGLBuffer<`u`&&t instanceof WebGLBuffer}function dE(e,t){return typeof WebGLRenderbuffer<`u`&&t instanceof WebGLRenderbuffer}function fE(e,t){return typeof WebGLTexture<`u`&&t instanceof WebGLTexture}function pE(e,t){return typeof WebGLSampler<`u`&&t instanceof WebGLSampler}var mE=35044,hE=34962,gE=34963,_E=34660,vE=5120,yE=5121,bE=5122,xE=5123,SE=5124,CE=5125,wE=5126,TE={attribPrefix:``};function EE(e,t,n,r,i){e.bindBuffer(t,n),e.bufferData(t,r,i||mE)}function DE(e,t,n,r){if(uE(e,t))return t;n||=hE;let i=e.createBuffer();return EE(e,n,i,t,r),i}function OE(e){return e===`indices`}function kE(e){return e instanceof Int8Array||e instanceof Uint8Array}function AE(e){return e===Int8Array||e===Uint8Array}function jE(e){return e.length?e:e.data}var ME=/coord|texture/i,NE=/color|colour/i;function PE(e,t){let n;if(n=ME.test(e)?2:NE.test(e)?4:3,t%n>0)throw Error(`Can not guess numComponents for attribute '${e}'. Tried ${n} but ${t} values is not evenly divisible by ${n}. You should specify it.`);return n}function FE(e,t){return e.numComponents||e.size||PE(t,jE(e).length)}function IE(e,t){if(sE(e))return e;if(sE(e.data))return e.data;Array.isArray(e)&&(e={data:e});let n=e.type;return n||=OE(t)?Uint16Array:Float32Array,new n(e.data)}function LE(e,t){let n={};return Object.keys(t).forEach(function(r){if(!OE(r)){let i=t[r],a=i.attrib||i.name||i.attribName||TE.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!sE(i.value))throw Error(`array.value is not array or typedarray`);n[a]={value:i.value}}else{let t,o,s,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)t=i.buffer,c=i.numComponents||i.size,o=i.type,s=i.normalize;else if(typeof i==`number`||typeof i.data==`number`){let n=i.data||i,a=i.type||Float32Array,l=n*a.BYTES_PER_ELEMENT;o=aE(a),s=i.normalize===void 0?AE(a):i.normalize,c=i.numComponents||i.size||PE(r,n),t=e.createBuffer(),e.bindBuffer(hE,t),e.bufferData(hE,l,i.drawType||mE)}else{let n=IE(i,r);t=DE(e,n,void 0,i.drawType),o=iE(n),s=i.normalize===void 0?kE(n):i.normalize,c=FE(i,r)}n[a]={buffer:t,numComponents:c,type:o,normalize:s,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),e.bindBuffer(hE,null),n}function RE(e,t,n,r){n=IE(n),r===void 0?EE(e,hE,t.buffer,n,t.drawType):(e.bindBuffer(hE,t.buffer),e.bufferSubData(hE,r,n))}function zE(e,t){return t===vE||t===yE?1:t===bE||t===xE?2:t===SE||t===CE||t===wE?4:0}var BE=[`position`,`positions`,`a_position`];function VE(e,t){let n,r;for(r=0;r<BE.length&&(n=BE[r],!(n in t||(n=TE.attribPrefix+n,n in t)));++r);r===BE.length&&(n=Object.keys(t)[0]);let i=t[n];if(!i.buffer)return 1;e.bindBuffer(hE,i.buffer);let a=e.getBufferParameter(hE,_E);e.bindBuffer(hE,null);let o=a/zE(e,i.type),s=i.numComponents||i.size,c=o/s;if(c%1!=0)throw Error(`numComponents ${s} not correct for length ${length}`);return c}function HE(e,t,n){let r=LE(e,t),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);let a=t.indices;if(a){let t=IE(a,`indices`);i.indices=DE(e,t,gE),i.numElements=t.length,i.elementType=iE(t)}else i.numElements||=VE(e,i.attribs);return i}function UE(e){return!!e.texStorage2D}var WE=function(){let e={},t={};function n(n){let r=n.constructor.name;if(!e[r]){for(let e in n)if(typeof n[e]==`number`){let r=t[n[e]];t[n[e]]=r?`${r} | ${e}`:e}e[r]=!0}}return function(e,r){return n(e),t[r]||(typeof r==`number`?`0x${r.toString(16)}`:r)}}(),GE={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},KE=sE,qE=function(){let e;return function(){return e||=typeof document<`u`&&document.createElement?document.createElement(`canvas`).getContext(`2d`):null,e}}(),JE=6406,YE=6407,K=6408,XE=6409,ZE=6410,QE=6402,$E=34041,eD=33071,tD=9728,nD=9729,rD=3553,iD=34067,aD=32879,oD=35866,sD=34069,cD=34070,lD=34071,uD=34072,dD=34073,fD=34074,pD=10241,mD=10240,hD=10242,gD=10243,_D=32882,vD=33082,yD=33083,bD=33084,xD=33085,SD=3317,CD=3314,wD=32878,TD=3316,ED=3315,DD=32877,OD=37443,kD=37441,AD=37440,jD=33321,MD=36756,ND=33325,PD=33326,FD=33330,ID=33329,LD=33338,RD=33337,zD=33340,BD=33339,VD=33323,HD=36757,UD=33327,WD=33328,GD=33336,KD=33335,qD=33332,JD=33331,YD=33334,XD=33333,ZD=32849,QD=35905,$D=36194,eO=36758,tO=35898,nO=35901,rO=34843,iO=34837,aO=36221,oO=36239,sO=36215,cO=36233,lO=36209,uO=36227,dO=32856,fO=35907,pO=36759,mO=32855,hO=32854,gO=32857,_O=34842,vO=34836,yO=36220,bO=36238,xO=36975,SO=36214,CO=36232,wO=36226,TO=36208,EO=33189,DO=33190,OO=36012,kO=36013,AO=35056,jO=5120,q=5121,MO=5122,NO=5123,PO=5124,FO=5125,IO=5126,LO=32819,RO=32820,zO=33635,BO=5131,VO=36193,HO=33640,UO=35899,WO=35902,GO=36269,KO=34042,qO=33319,JO=33320,YO=6403,XO=36244,ZO=36248,QO=36249,$O={};{let e=$O;e[JE]={numColorComponents:1},e[XE]={numColorComponents:1},e[ZE]={numColorComponents:2},e[YE]={numColorComponents:3},e[K]={numColorComponents:4},e[YO]={numColorComponents:1},e[XO]={numColorComponents:1},e[qO]={numColorComponents:2},e[JO]={numColorComponents:2},e[YE]={numColorComponents:3},e[ZO]={numColorComponents:3},e[K]={numColorComponents:4},e[QO]={numColorComponents:4},e[QE]={numColorComponents:1},e[$E]={numColorComponents:2}}var ek;function tk(e){if(!ek){let e={};e[JE]={textureFormat:JE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[q,BO,VO,IO]},e[XE]={textureFormat:XE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[q,BO,VO,IO]},e[ZE]={textureFormat:ZE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[q,BO,VO,IO]},e[YE]={textureFormat:YE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[q,BO,VO,IO,zO]},e[K]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[q,BO,VO,IO,LO,RO]},e[QE]={textureFormat:QE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[FO,NO]},e[jD]={textureFormat:YO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[q]},e[MD]={textureFormat:YO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[jO]},e[ND]={textureFormat:YO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[IO,BO]},e[PD]={textureFormat:YO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[IO]},e[FD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[q]},e[ID]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[jO]},e[qD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[NO]},e[JD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[MO]},e[YD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[FO]},e[XD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[PO]},e[VD]={textureFormat:qO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[q]},e[HD]={textureFormat:qO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[jO]},e[UD]={textureFormat:qO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[IO,BO]},e[WD]={textureFormat:qO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[IO]},e[GD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[q]},e[KD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[jO]},e[LD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[NO]},e[RD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[MO]},e[zD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[FO]},e[BD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[PO]},e[ZD]={textureFormat:YE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[q]},e[QD]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[q]},e[$D]={textureFormat:YE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[q,zO]},e[eO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[jO]},e[tO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[IO,BO,UO]},e[nO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[IO,BO,WO]},e[rO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[IO,BO]},e[iO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[IO]},e[aO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[q]},e[oO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[jO]},e[sO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[NO]},e[cO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[MO]},e[lO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[FO]},e[uO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[PO]},e[dO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[q]},e[fO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[q]},e[pO]={textureFormat:K,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[jO]},e[mO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[q,RO,HO]},e[hO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[q,LO]},e[gO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[HO]},e[_O]={textureFormat:K,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[IO,BO]},e[vO]={textureFormat:K,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[IO]},e[yO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[q]},e[bO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[jO]},e[xO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[HO]},e[SO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[NO]},e[CO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[MO]},e[wO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[PO]},e[TO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[FO]},e[EO]={textureFormat:QE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[NO,FO]},e[DO]={textureFormat:QE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[FO]},e[OO]={textureFormat:QE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[IO]},e[AO]={textureFormat:$E,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[KO]},e[kO]={textureFormat:$E,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[GO]},Object.keys(e).forEach(function(t){let n=e[t];n.bytesPerElementMap={},n.bytesPerElement.forEach(function(e,t){let r=n.type[t];n.bytesPerElementMap[r]=e})}),ek=e}return ek[e]}function nk(e,t){let n=tk(e);if(!n)throw`unknown internal format`;let r=n.bytesPerElementMap[t];if(r===void 0)throw`unknown internal format`;return r}function rk(e){let t=tk(e);if(!t)throw`unknown internal format`;return{format:t.textureFormat,type:t.type[0]}}function ik(e){return(e&e-1)==0}function ak(e,t,n,r){if(!UE(e))return ik(t)&&ik(n);let i=tk(r);if(!i)throw`unknown internal format`;return i.colorRenderable&&i.textureFilterable}function ok(e){let t=tk(e);if(!t)throw`unknown internal format`;return t.textureFilterable}function sk(e,t,n){return KE(t)?iE(t):n||q}function ck(e,t,n,r,i){if(i%1!=0)throw`can't guess dimensions`;if(!n&&!r){let e=Math.sqrt(i/(t===iD?6:1));e%1==0?(n=e,r=e):(n=i,r=1)}else if(!r){if(r=i/n,r%1)throw`can't guess dimensions`}else if(!n&&(n=i/r,n%1))throw`can't guess dimensions`;return{width:n,height:r}}function lk(e,t){t.colorspaceConversion!==void 0&&e.pixelStorei(OD,t.colorspaceConversion),t.premultiplyAlpha!==void 0&&e.pixelStorei(kD,t.premultiplyAlpha),t.flipY!==void 0&&e.pixelStorei(AD,t.flipY)}function uk(e){e.pixelStorei(SD,4),UE(e)&&(e.pixelStorei(CD,0),e.pixelStorei(wD,0),e.pixelStorei(TD,0),e.pixelStorei(ED,0),e.pixelStorei(DD,0))}function dk(e,t,n,r){r.minMag&&(n.call(e,t,pD,r.minMag),n.call(e,t,mD,r.minMag)),r.min&&n.call(e,t,pD,r.min),r.mag&&n.call(e,t,mD,r.mag),r.wrap&&(n.call(e,t,hD,r.wrap),n.call(e,t,gD,r.wrap),(t===aD||pE(e,t))&&n.call(e,t,_D,r.wrap)),r.wrapR&&n.call(e,t,_D,r.wrapR),r.wrapS&&n.call(e,t,hD,r.wrapS),r.wrapT&&n.call(e,t,gD,r.wrapT),r.minLod&&n.call(e,t,vD,r.minLod),r.maxLod&&n.call(e,t,yD,r.maxLod),r.baseLevel&&n.call(e,t,bD,r.baseLevel),r.maxLevel&&n.call(e,t,xD,r.maxLevel)}function fk(e,t,n){let r=n.target||rD;e.bindTexture(r,t),dk(e,r,e.texParameteri,n)}function pk(e){return e||=GE.textureColor,KE(e)?e:new Uint8Array([e[0]*255,e[1]*255,e[2]*255,e[3]*255])}function mk(e,t,n,r,i,a){n||=GE.textureOptions,a||=K;let o=n.target||rD;if(r||=n.width,i||=n.height,e.bindTexture(o,t),ak(e,r,i,a))e.generateMipmap(o);else{let t=ok(a)?nD:tD;e.texParameteri(o,pD,t),e.texParameteri(o,mD,t),e.texParameteri(o,hD,eD),e.texParameteri(o,gD,eD)}}function hk(e){return e.auto===!0||e.auto===void 0&&e.level===void 0}function gk(e,t){return t||={},t.cubeFaceOrder||[sD,cD,lD,uD,dD,fD]}function _k(e,t){let n=gk(e,t).map(function(e,t){return{face:e,ndx:t}});return n.sort(function(e,t){return e.face-t.face}),n}function vk(e,t,n,r){r||=GE.textureOptions;let i=r.target||rD,a=r.level||0,o=n.width,s=n.height,c=r.internalFormat||r.format||K,l=rk(c),u=r.format||l.format,d=r.type||l.type;if(lk(e,r),e.bindTexture(i,t),i===iD){let l=n.width,f=n.height,p,m;if(l/6===f)p=f,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(f/6===l)p=l,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(l/3==f/2)p=l/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(l/2==f/3)p=l/2,m=[0,0,1,0,0,1,1,1,0,2,1,2];else throw`can't figure out cube map from element: `+(n.src?n.src:n.nodeName);let h=qE();h?(h.canvas.width=p,h.canvas.height=p,o=p,s=p,_k(e,r).forEach(function(t){let r=m[t.ndx*2+0]*p,i=m[t.ndx*2+1]*p;h.drawImage(n,r,i,p,p,0,0,p,p),e.texImage2D(t.face,a,c,u,d,h.canvas)}),h.canvas.width=1,h.canvas.height=1):typeof createImageBitmap<`u`&&(o=p,s=p,_k(e,r).forEach(function(l){let f=m[l.ndx*2+0]*p,h=m[l.ndx*2+1]*p;e.texImage2D(l.face,a,c,p,p,0,u,d,null),createImageBitmap(n,f,h,p,p,{premultiplyAlpha:`none`,colorSpaceConversion:`none`}).then(function(n){lk(e,r),e.bindTexture(i,t),e.texImage2D(l.face,a,c,u,d,n),hk(r)&&mk(e,t,r,o,s,c)})}))}else if(i===aD||i===oD){let t=Math.min(n.width,n.height),r=Math.max(n.width,n.height),o=r/t;if(o%1!=0)throw`can not compute 3D dimensions of element`;let s=n.width===r?1:0,l=n.height===r?1:0;e.pixelStorei(SD,1),e.pixelStorei(CD,n.width),e.pixelStorei(wD,0),e.pixelStorei(DD,0),e.texImage3D(i,a,c,t,t,t,0,u,d,null);for(let r=0;r<o;++r){let o=r*t*s,c=r*t*l;e.pixelStorei(TD,o),e.pixelStorei(ED,c),e.texSubImage3D(i,a,0,0,r,t,t,1,u,d,n)}uk(e)}else e.texImage2D(i,a,c,u,d,n);hk(r)&&mk(e,t,r,o,s,c),fk(e,t,r)}function yk(){}function bk(e){if(typeof document<`u`){let t=document.createElement(`a`);return t.href=e,t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}else{let t=new URL(location.href).origin;return new URL(e,location.href).origin===t}}function xk(e,t){return t===void 0&&!bk(e)?`anonymous`:t}function Sk(e,t,n){n||=yk;let r;if(t=t===void 0?GE.crossOrigin:t,t=xk(e,t),typeof Image<`u`){r=new Image,t!==void 0&&(r.crossOrigin=t);let i=function(){r.removeEventListener(`error`,a),r.removeEventListener(`load`,o),r=null},a=function(){let t=`couldn't load image: `+e;cE(t),n(t,r),i()},o=function(){n(null,r),i()};return r.addEventListener(`error`,a),r.addEventListener(`load`,o),r.src=e,r}else if(typeof ImageBitmap<`u`){let i,a,o=function(){n(i,a)},s={};t&&(s.mode=`cors`),fetch(e,s).then(function(e){if(!e.ok)throw e;return e.blob()}).then(function(e){return createImageBitmap(e,{premultiplyAlpha:`none`,colorSpaceConversion:`none`})}).then(function(e){a=e,setTimeout(o)}).catch(function(e){i=e,setTimeout(o)}),r=null}return r}function Ck(e){return typeof ImageBitmap<`u`&&e instanceof ImageBitmap||typeof ImageData<`u`&&e instanceof ImageData||typeof HTMLElement<`u`&&e instanceof HTMLElement}function wk(e,t,n){return Ck(e)?(setTimeout(function(){n(null,e)}),e):Sk(e,t,n)}function Tk(e,t,n){n||=GE.textureOptions;let r=n.target||rD;if(e.bindTexture(r,t),n.color===!1)return;let i=pk(n.color);if(r===iD)for(let t=0;t<6;++t)e.texImage2D(sD+t,0,K,1,1,0,K,q,i);else r===aD||r===oD?e.texImage3D(r,0,K,1,1,1,0,K,q,i):e.texImage2D(r,0,K,1,1,0,K,q,i)}function Ek(e,t,n,r){return r||=yk,n||=GE.textureOptions,Tk(e,t,n),n=Object.assign({},n),wk(n.src,n.crossOrigin,function(i,a){i?r(i,t,a):(vk(e,t,a,n),r(null,t,a))})}function Dk(e,t,n,r){r||=yk;let i=n.src;if(i.length!==6)throw`there must be 6 urls for a cubemap`;let a=n.level||0,o=n.internalFormat||n.format||K,s=rk(o),c=n.format||s.format,l=n.type||q,u=n.target||rD;if(u!==iD)throw`target must be TEXTURE_CUBE_MAP`;Tk(e,t,n),n=Object.assign({},n);let d=6,f=[],p=gk(e,n),m;function h(i){return function(s,p){--d,s?f.push(s):p.width===p.height?(lk(e,n),e.bindTexture(u,t),d===5?gk().forEach(function(t){e.texImage2D(t,a,o,c,l,p)}):e.texImage2D(i,a,o,c,l,p),hk(n)&&e.generateMipmap(u)):f.push(`cubemap face img is not a square: `+p.src),d===0&&r(f.length?f:void 0,t,m)}}m=i.map(function(e,t){return wk(e,n.crossOrigin,h(p[t]))})}function Ok(e,t,n,r){r||=yk;let i=n.src,a=n.internalFormat||n.format||K,o=rk(a),s=n.format||o.format,c=n.type||q,l=n.target||oD;if(l!==aD&&l!==oD)throw`target must be TEXTURE_3D or TEXTURE_2D_ARRAY`;Tk(e,t,n),n=Object.assign({},n);let u=i.length,d=[],f,p=n.level||0,m=n.width,h=n.height,g=i.length,_=!0;function v(i){return function(o,v){if(--u,o)d.push(o);else{if(lk(e,n),e.bindTexture(l,t),_){_=!1,m=n.width||v.width,h=n.height||v.height,e.texImage3D(l,p,a,m,h,g,0,s,c,null);for(let t=0;t<g;++t)e.texSubImage3D(l,p,0,0,t,m,h,1,s,c,v)}else{let t=v,n;(v.width!==m||v.height!==h)&&(n=qE(),t=n.canvas,n.canvas.width=m,n.canvas.height=h,n.drawImage(v,0,0,m,h)),e.texSubImage3D(l,p,0,0,i,m,h,1,s,c,t),n&&t===n.canvas&&(n.canvas.width=0,n.canvas.height=0)}hk(n)&&e.generateMipmap(l)}u===0&&r(d.length?d:void 0,t,f)}}f=i.map(function(e,t){return wk(e,n.crossOrigin,v(t))})}function kk(e,t,n,r){r||=GE.textureOptions;let i=r.target||rD;e.bindTexture(i,t);let a=r.width,o=r.height,s=r.depth,c=r.level||0,l=r.internalFormat||r.format||K,u=rk(l),d=r.format||u.format,f=r.type||sk(e,n,u.type);KE(n)?n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer)):n=new(oE(f))(n);let p=nk(l,f),m=n.byteLength/p;if(m%1)throw`length wrong size for format: `+WE(e,d);let h;if(i===aD||i===oD)if(!a&&!o&&!s){let e=Math.cbrt(m);if(e%1!=0)throw`can't guess cube size of array of numElements: `+m;a=e,o=e,s=e}else a&&(!o||!s)?(h=ck(e,i,o,s,m/a),o=h.width,s=h.height):o&&(!a||!s)?(h=ck(e,i,a,s,m/o),a=h.width,s=h.height):(h=ck(e,i,a,o,m/s),a=h.width,o=h.height);else h=ck(e,i,a,o,m),a=h.width,o=h.height;if(uk(e),e.pixelStorei(SD,r.unpackAlignment||1),lk(e,r),i===iD){let t=p/n.BYTES_PER_ELEMENT,i=m/6*t;_k(e,r).forEach(t=>{let r=i*t.ndx,s=n.subarray(r,r+i);e.texImage2D(t.face,c,l,a,o,0,d,f,s)})}else i===aD||i===oD?e.texImage3D(i,c,l,a,o,s,0,d,f,n):e.texImage2D(i,c,l,a,o,0,d,f,n);return{width:a,height:o,depth:s,type:f}}function Ak(e,t,n){let r=n.target||rD;e.bindTexture(r,t);let i=n.level||0,a=n.internalFormat||n.format||K,o=rk(a),s=n.format||o.format,c=n.type||o.type;if(lk(e,n),r===iD)for(let t=0;t<6;++t)e.texImage2D(sD+t,i,a,n.width,n.height,0,s,c,null);else r===aD||r===oD?e.texImage3D(r,i,a,n.width,n.height,n.depth,0,s,c,null):e.texImage2D(r,i,a,n.width,n.height,0,s,c,null)}function jk(e,t,n){n||=yk,t||=GE.textureOptions;let r=e.createTexture(),i=t.target||rD,a=t.width||1,o=t.height||1,s=t.internalFormat||K;e.bindTexture(i,r),i===iD&&(e.texParameteri(i,hD,eD),e.texParameteri(i,gD,eD));let c=t.src;if(c)if(typeof c==`function`&&(c=c(e,t)),typeof c==`string`)Ek(e,r,t,n);else if(KE(c)||Array.isArray(c)&&(typeof c[0]==`number`||Array.isArray(c[0])||KE(c[0]))){let n=kk(e,r,c,t);a=n.width,o=n.height}else Array.isArray(c)&&(typeof c[0]==`string`||Ck(c[0]))?i===iD?Dk(e,r,t,n):Ok(e,r,t,n):(vk(e,r,c,t),a=c.width,o=c.height);else Ak(e,r,t);return hk(t)&&mk(e,r,t,a,o,s),fk(e,r,t),r}function Mk(e,t,n,r,i,a){r||=n.width,i||=n.height,a||=n.depth;let o=n.target||rD;e.bindTexture(o,t);let s=n.level||0,c=n.internalFormat||n.format||K,l=rk(c),u=n.format||l.format,d,f=n.src;if(d=f&&(KE(f)||Array.isArray(f)&&typeof f[0]==`number`)?n.type||sk(e,f,l.type):n.type||l.type,o===iD)for(let t=0;t<6;++t)e.texImage2D(sD+t,s,c,r,i,0,u,d,null);else o===aD||o===oD?e.texImage3D(o,s,c,r,i,a,0,u,d,null):e.texImage2D(o,s,c,r,i,0,u,d,null)}var Nk=lE,Pk=33984,Fk=35048,Ik=34962,Lk=34963,Rk=35345,zk=35718,Bk=35721,Vk=35971,Hk=35382,Uk=35396,Wk=35398,Gk=35392,Kk=35395,qk=5126,Jk=35664,Yk=35665,Xk=35666,Zk=5124,Qk=35667,$k=35668,eA=35669,tA=35670,nA=35671,rA=35672,iA=35673,aA=35674,oA=35675,sA=35676,cA=35678,lA=35680,uA=35679,dA=35682,fA=35685,pA=35686,mA=35687,hA=35688,gA=35689,_A=35690,vA=36289,yA=36292,bA=36293,xA=5125,SA=36294,CA=36295,wA=36296,TA=36298,EA=36299,DA=36300,OA=36303,kA=36306,AA=36307,jA=36308,MA=36311,NA=3553,PA=34067,FA=32879,IA=35866,J={};function LA(e,t){return J[t].bindPoint}function RA(e,t){return function(n){e.uniform1f(t,n)}}function zA(e,t){return function(n){e.uniform1fv(t,n)}}function BA(e,t){return function(n){e.uniform2fv(t,n)}}function VA(e,t){return function(n){e.uniform3fv(t,n)}}function HA(e,t){return function(n){e.uniform4fv(t,n)}}function UA(e,t){return function(n){e.uniform1i(t,n)}}function WA(e,t){return function(n){e.uniform1iv(t,n)}}function GA(e,t){return function(n){e.uniform2iv(t,n)}}function KA(e,t){return function(n){e.uniform3iv(t,n)}}function qA(e,t){return function(n){e.uniform4iv(t,n)}}function JA(e,t){return function(n){e.uniform1ui(t,n)}}function YA(e,t){return function(n){e.uniform1uiv(t,n)}}function XA(e,t){return function(n){e.uniform2uiv(t,n)}}function ZA(e,t){return function(n){e.uniform3uiv(t,n)}}function QA(e,t){return function(n){e.uniform4uiv(t,n)}}function $A(e,t){return function(n){e.uniformMatrix2fv(t,!1,n)}}function ej(e,t){return function(n){e.uniformMatrix3fv(t,!1,n)}}function tj(e,t){return function(n){e.uniformMatrix4fv(t,!1,n)}}function nj(e,t){return function(n){e.uniformMatrix2x3fv(t,!1,n)}}function rj(e,t){return function(n){e.uniformMatrix3x2fv(t,!1,n)}}function ij(e,t){return function(n){e.uniformMatrix2x4fv(t,!1,n)}}function aj(e,t){return function(n){e.uniformMatrix4x2fv(t,!1,n)}}function oj(e,t){return function(n){e.uniformMatrix3x4fv(t,!1,n)}}function sj(e,t){return function(n){e.uniformMatrix4x3fv(t,!1,n)}}function cj(e,t,n,r){let i=LA(e,t);return UE(e)?function(t){let a,o;fE(e,t)?(a=t,o=null):(a=t.texture,o=t.sampler),e.uniform1i(r,n),e.activeTexture(Pk+n),e.bindTexture(i,a),e.bindSampler(n,o)}:function(t){e.uniform1i(r,n),e.activeTexture(Pk+n),e.bindTexture(i,t)}}function lj(e,t,n,r,i){let a=LA(e,t),o=new Int32Array(i);for(let e=0;e<i;++e)o[e]=n+e;return UE(e)?function(t){e.uniform1iv(r,o),t.forEach(function(t,r){e.activeTexture(Pk+o[r]);let i,s;fE(e,t)?(i=t,s=null):(i=t.texture,s=t.sampler),e.bindSampler(n,s),e.bindTexture(a,i)})}:function(t){e.uniform1iv(r,o),t.forEach(function(t,n){e.activeTexture(Pk+o[n]),e.bindTexture(a,t)})}}J[qk]={Type:Float32Array,size:4,setter:RA,arraySetter:zA},J[Jk]={Type:Float32Array,size:8,setter:BA,cols:2},J[Yk]={Type:Float32Array,size:12,setter:VA,cols:3},J[Xk]={Type:Float32Array,size:16,setter:HA,cols:4},J[Zk]={Type:Int32Array,size:4,setter:UA,arraySetter:WA},J[Qk]={Type:Int32Array,size:8,setter:GA,cols:2},J[$k]={Type:Int32Array,size:12,setter:KA,cols:3},J[eA]={Type:Int32Array,size:16,setter:qA,cols:4},J[xA]={Type:Uint32Array,size:4,setter:JA,arraySetter:YA},J[SA]={Type:Uint32Array,size:8,setter:XA,cols:2},J[CA]={Type:Uint32Array,size:12,setter:ZA,cols:3},J[wA]={Type:Uint32Array,size:16,setter:QA,cols:4},J[tA]={Type:Uint32Array,size:4,setter:UA,arraySetter:WA},J[nA]={Type:Uint32Array,size:8,setter:GA,cols:2},J[rA]={Type:Uint32Array,size:12,setter:KA,cols:3},J[iA]={Type:Uint32Array,size:16,setter:qA,cols:4},J[aA]={Type:Float32Array,size:32,setter:$A,rows:2,cols:2},J[oA]={Type:Float32Array,size:48,setter:ej,rows:3,cols:3},J[sA]={Type:Float32Array,size:64,setter:tj,rows:4,cols:4},J[fA]={Type:Float32Array,size:32,setter:nj,rows:2,cols:3},J[pA]={Type:Float32Array,size:32,setter:ij,rows:2,cols:4},J[mA]={Type:Float32Array,size:48,setter:rj,rows:3,cols:2},J[hA]={Type:Float32Array,size:48,setter:oj,rows:3,cols:4},J[gA]={Type:Float32Array,size:64,setter:aj,rows:4,cols:2},J[_A]={Type:Float32Array,size:64,setter:sj,rows:4,cols:3},J[cA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:NA},J[lA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:PA},J[uA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:FA},J[dA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:NA},J[vA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:IA},J[yA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:IA},J[bA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:PA},J[TA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:NA},J[EA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:FA},J[DA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:PA},J[OA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:IA},J[kA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:NA},J[AA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:FA},J[jA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:PA},J[MA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:IA};function uj(e,t){return function(n){if(n.value)switch(e.disableVertexAttribArray(t),n.value.length){case 4:e.vertexAttrib4fv(t,n.value);break;case 3:e.vertexAttrib3fv(t,n.value);break;case 2:e.vertexAttrib2fv(t,n.value);break;case 1:e.vertexAttrib1fv(t,n.value);break;default:throw Error(`the length of a float constant value must be between 1 and 4!`)}else e.bindBuffer(Ik,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,n.numComponents||n.size,n.type||qk,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function dj(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4iv(t,n.value);else throw Error(`The length of an integer constant value must be 4!`);else e.bindBuffer(Ik,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||Zk,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function fj(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4uiv(t,n.value);else throw Error(`The length of an unsigned integer constant value must be 4!`);else e.bindBuffer(Ik,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||xA,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function pj(e,t,n){let r=n.size,i=n.count;return function(n){e.bindBuffer(Ik,n.buffer);let a=n.size||n.numComponents||r,o=a/i,s=n.type||qk,c=J[s].size*a,l=n.normalize||!1,u=n.offset||0,d=c/i;for(let r=0;r<i;++r)e.enableVertexAttribArray(t+r),e.vertexAttribPointer(t+r,o,s,l,c,u+d*r),n.divisor!==void 0&&e.vertexAttribDivisor(t+r,n.divisor)}}var mj={};mj[qk]={size:4,setter:uj},mj[Jk]={size:8,setter:uj},mj[Yk]={size:12,setter:uj},mj[Xk]={size:16,setter:uj},mj[Zk]={size:4,setter:dj},mj[Qk]={size:8,setter:dj},mj[$k]={size:12,setter:dj},mj[eA]={size:16,setter:dj},mj[xA]={size:4,setter:fj},mj[SA]={size:8,setter:fj},mj[CA]={size:12,setter:fj},mj[wA]={size:16,setter:fj},mj[tA]={size:4,setter:dj},mj[nA]={size:8,setter:dj},mj[rA]={size:12,setter:dj},mj[iA]={size:16,setter:dj},mj[aA]={size:4,setter:pj,count:2},mj[oA]={size:9,setter:pj,count:3},mj[sA]={size:16,setter:pj,count:4};function hj(e){let t=e.name;return t.startsWith(`gl_`)||t.startsWith(`webgl_`)}var gj=/(\.|\[|]|\w+)/g,_j=e=>e>=`0`&&e<=`9`;function vj(e,t,n,r){let i=e.split(gj).filter(e=>e!==``),a=0,o=``;for(;;){let e=i[a++];o+=e;let s=_j(e[0]),c=s?parseInt(e):e;if(s&&(o+=i[a++]),a===i.length){n[c]=t;break}else{let e=i[a++],t=e===`[`,s=n[c]||(t?[]:{});n[c]=s,n=s,r[o]=r[o]||function(e){return function(t){Aj(e,t)}}(s),o+=e}}}function yj(e,t){let n=0;function r(t,r,i){let a=r.name.endsWith(`[0]`),o=r.type,s=J[o];if(!s)throw Error(`unknown type: 0x${o.toString(16)}`);let c;if(s.bindPoint){let t=n;n+=r.size,c=a?s.arraySetter(e,o,t,i,r.size):s.setter(e,o,t,i,r.size)}else c=s.arraySetter&&a?s.arraySetter(e,i):s.setter(e,i);return c.location=i,c}let i={},a={},o=e.getProgramParameter(t,zk);for(let n=0;n<o;++n){let o=e.getActiveUniform(t,n);if(hj(o))continue;let s=o.name;s.endsWith(`[0]`)&&(s=s.substr(0,s.length-3));let c=e.getUniformLocation(t,o.name);if(c){let e=r(t,o,c);i[s]=e,vj(s,e,a,i)}}return i}function bj(e,t){let n={},r=e.getProgramParameter(t,Vk);for(let i=0;i<r;++i){let r=e.getTransformFeedbackVarying(t,i);n[r.name]={index:i,type:r.type,size:r.size}}return n}function xj(e,t){let n=e.getProgramParameter(t,zk),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});let n=e.getActiveUniform(t,a);r[a].name=n.name}[[`UNIFORM_TYPE`,`type`],[`UNIFORM_SIZE`,`size`],[`UNIFORM_BLOCK_INDEX`,`blockNdx`],[`UNIFORM_OFFSET`,`offset`]].forEach(function(n){let a=n[0],o=n[1];e.getActiveUniforms(t,i,e[a]).forEach(function(e,t){r[t][o]=e})});let a={},o=e.getProgramParameter(t,Hk);for(let n=0;n<o;++n){let r=e.getActiveUniformBlockName(t,n),i={index:e.getUniformBlockIndex(t,r),usedByVertexShader:e.getActiveUniformBlockParameter(t,n,Uk),usedByFragmentShader:e.getActiveUniformBlockParameter(t,n,Wk),size:e.getActiveUniformBlockParameter(t,n,Gk),uniformIndices:e.getActiveUniformBlockParameter(t,n,Kk)};i.used=i.usedByVertexShader||i.usedByFragmentShader,a[r]=i}return{blockSpecs:a,uniformData:r}}var Sj=/\[\d+\]\.$/,Cj=(e,t)=>((e+(t-1))/t|0)*t;function wj(e,t,n,r){if(t||n){r||=1;let t=e.length/4;return function(n){let i=0,a=0;for(let o=0;o<t;++o){for(let t=0;t<r;++t)e[i++]=n[a++];i+=4-r}}}else return function(t){t.length?e.set(t):e[0]=t}}function Tj(e,t,n,r){let i=n.blockSpecs,a=n.uniformData,o=i[r];if(!o)return Nk(`no uniform block object named:`,r),{name:r,uniforms:{}};let s=new ArrayBuffer(o.size),c=e.createBuffer(),l=o.index;e.bindBuffer(Rk,c),e.uniformBlockBinding(t,o.index,l);let u=r+`.`;Sj.test(u)&&(u=u.replace(Sj,`.`));let d={},f={},p={};return o.uniformIndices.forEach(function(e){let t=a[e],n=t.name;n.startsWith(u)&&(n=n.substr(u.length));let r=n.endsWith(`[0]`);r&&(n=n.substr(0,n.length-3));let i=J[t.type],o=i.Type,c=r?Cj(i.size,16)*t.size:i.size*t.size,l=new o(s,t.offset,c/o.BYTES_PER_ELEMENT);d[n]=l;let m=wj(l,r,i.rows,i.cols);f[n]=m,vj(n,m,p,f)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:d,setters:f}}function Ej(e,t,n){return Tj(e,t.program,t.uniformBlockSpec,n)}function Dj(e,t,n){let r=(t.uniformBlockSpec||t).blockSpecs[n.name];if(r){let t=r.index;return e.bindBufferRange(Rk,t,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function Oj(e,t,n){Dj(e,t,n)&&e.bufferData(Rk,n.array,Fk)}function kj(e,t){let n=e.setters;for(let e in t){let r=n[e];if(r){let n=t[e];r(n)}}}function Aj(e,t){for(let n in t){let r=e[n];typeof r==`function`?r(t[n]):Aj(e[n],t[n])}}function jj(e,...t){let n=e.uniformSetters||e,r=t.length;for(let e=0;e<r;++e){let r=t[e];if(Array.isArray(r)){let e=r.length;for(let t=0;t<e;++t)jj(n,r[t])}else for(let e in r){let t=n[e];t&&t(r[e])}}}function Mj(e,t){let n={},r=e.getProgramParameter(t,Bk);for(let i=0;i<r;++i){let r=e.getActiveAttrib(t,i);if(hj(r))continue;let a=e.getAttribLocation(t,r.name),o=mj[r.type],s=o.setter(e,a,o);s.location=a,n[r.name]=s}return n}function Nj(e,t){for(let n in t){let r=e[n];r&&r(t[n])}}function Pj(e,t,n){n.vertexArrayObject?e.bindVertexArray(n.vertexArrayObject):(Nj(t.attribSetters||t,n.attribs),n.indices&&e.bindBuffer(Lk,n.indices))}function Fj(e,t){let n={program:t,uniformSetters:yj(e,t),attribSetters:Mj(e,t)};return UE(e)&&(n.uniformBlockSpec=xj(e,t),n.transformFeedbackInfo=bj(e,t)),n}var Ij=4,Lj=5123;function Rj(e,t,n,r,i,a){n=n===void 0?Ij:n;let o=t.indices,s=t.elementType,c=r===void 0?t.numElements:r;i=i===void 0?0:i,s||o?a===void 0?e.drawElements(n,c,s===void 0?Lj:t.elementType,i):e.drawElementsInstanced(n,c,s===void 0?Lj:t.elementType,i,a):a===void 0?e.drawArrays(n,i,c):e.drawArraysInstanced(n,i,c,a)}var zj=36160,Bj=36161,Vj=3553,Hj=5121,Uj=6402,Wj=6408,Gj=33190,Kj=36012,qj=35056,Jj=36013,Yj=32854,Xj=32855,Zj=36194,Qj=33189,$j=6401,eM=36168,tM=34041,nM=36064,rM=36096,iM=36128,aM=33306,oM=33071,sM=9729,cM=[{format:Wj,type:Hj,min:sM,wrap:oM},{format:tM}],lM={};lM[tM]=aM,lM[$j]=iM,lM[eM]=iM,lM[Uj]=rM,lM[Qj]=rM,lM[Gj]=rM,lM[Kj]=rM,lM[qj]=aM,lM[Jj]=aM;function uM(e,t){return lM[e]||lM[t]}var dM={};dM[Yj]=!0,dM[Xj]=!0,dM[Zj]=!0,dM[tM]=!0,dM[Qj]=!0,dM[$j]=!0,dM[eM]=!0;function fM(e){return dM[e]}var pM=32;function mM(e){return e>=nM&&e<nM+pM}function hM(e,t,n,r){let i=zj,a=e.createFramebuffer();e.bindFramebuffer(i,a),n||=e.drawingBufferWidth,r||=e.drawingBufferHeight,t||=cM;let o=[],s={framebuffer:a,attachments:[],width:n,height:r};return t.forEach(function(t,a){let c=t.attachment,l=t.samples,u=t.format,d=t.attachmentPoint||uM(u,t.internalFormat);if(d||=nM+a,mM(d)&&o.push(d),!c)if(l!==void 0||fM(u))c=e.createRenderbuffer(),e.bindRenderbuffer(Bj,c),l>1?e.renderbufferStorageMultisample(Bj,l,u,n,r):e.renderbufferStorage(Bj,u,n,r);else{let i=Object.assign({},t);i.width=n,i.height=r,i.auto===void 0&&(i.auto=!1,i.min=i.min||i.minMag||sM,i.mag=i.mag||i.minMag||sM,i.wrapS=i.wrapS||i.wrap||oM,i.wrapT=i.wrapT||i.wrap||oM),c=jk(e,i)}if(dE(e,c))e.framebufferRenderbuffer(i,d,Bj,c);else if(fE(e,c))t.layer===void 0?e.framebufferTexture2D(i,d,t.target||Vj,c,t.level||0):e.framebufferTextureLayer(i,d,c,t.level||0,t.layer);else throw Error(`unknown attachment type`);s.attachments.push(c)}),e.drawBuffers&&e.drawBuffers(o),s}function gM(e,t,n,r,i){r||=e.drawingBufferWidth,i||=e.drawingBufferHeight,t.width=r,t.height=i,n||=cM,n.forEach(function(n,a){let o=t.attachments[a],s=n.format,c=n.samples;if(c!==void 0||dE(e,o))e.bindRenderbuffer(Bj,o),c>1?e.renderbufferStorageMultisample(Bj,c,s,r,i):e.renderbufferStorage(Bj,s,r,i);else if(fE(e,o))Mk(e,o,n,r,i);else throw Error(`unknown attachment type`)})}function _M(e,t,n){let r=e.createVertexArray();return e.bindVertexArray(r),t.length||(t=[t]),t.forEach(function(t){Pj(e,t,n)}),e.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}var vM={addExtensionsToContext:!0},yM=/^(.*?)_/;function bM(e,t){WE(e,0);let n=e.getExtension(t);if(n){let r={},i=yM.exec(t)[1],a=`_`+i;for(let t in n){let o=n[t],s=typeof o==`function`,c=s?i:a,l=t;t.endsWith(c)&&(l=t.substring(0,t.length-c.length)),e[l]===void 0?s?e[l]=function(e){return function(){return e.apply(n,arguments)}}(o):(e[l]=o,r[l]=o):!s&&e[l]!==o&&lE(l,e[l],o,t)}r.constructor={name:n.constructor.name},WE(r,0)}return n}var xM=[`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 SM(e){for(let t=0;t<xM.length;++t)bM(e,xM[t])}function CM(e,t){let n=[`webgl2`,`webgl`,`experimental-webgl`],r=null;for(let i=0;i<n.length;++i)if(r=e.getContext(n[i],t),r){vM.addExtensionsToContext&&SM(r);break}return r}function wM(e,t){return CM(e,t)}var TM=`flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
|
|
548
|
+
</div>`);else throw Error(`Unsupported input type: `+i.input);i.description&&n.push(D`<div class="description">${i.description}</div>`)}return n}var BT=class{#e;#t;#n;constructor(e,t){this.#e=e,this.#t=t,this.#n=void 0}initialize(e){let t=[];e.visit(e=>{let n=e.paramRuntime;t.push(...zT(n))});let n=this.#t.inputBindingContainer;if(!(!n||n==`none`||!t.length)){if(this.#n=document.createElement(`div`),this.#n.className=`gs-input-bindings`,n==`default`)this.#e.appendChild(this.#n);else if(n instanceof HTMLElement)n.appendChild(this.#n);else throw Error(`Invalid inputBindingContainer`);t.length&&Le(D`<div class="gs-input-binding">${t}</div>`,this.#n)}}remove(){this.#n?.remove()}};Float32Array,Float32Array;var VT=5120,HT=5121,UT=5122,WT=5123,GT=5124,KT=5125,qT=5126,JT=32819,YT=32820,XT=33635,ZT=5131,QT=33640,$T=35899,eE=35902,tE=36269,nE=34042,rE={};{let e=rE;e[VT]=Int8Array,e[HT]=Uint8Array,e[UT]=Int16Array,e[WT]=Uint16Array,e[GT]=Int32Array,e[KT]=Uint32Array,e[qT]=Float32Array,e[JT]=Uint16Array,e[YT]=Uint16Array,e[XT]=Uint16Array,e[ZT]=Uint16Array,e[QT]=Uint32Array,e[$T]=Uint32Array,e[eE]=Uint32Array,e[tE]=Uint32Array,e[nE]=Uint32Array}function iE(e){if(e instanceof Int8Array)return VT;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)return HT;if(e instanceof Int16Array)return UT;if(e instanceof Uint16Array)return WT;if(e instanceof Int32Array)return GT;if(e instanceof Uint32Array)return KT;if(e instanceof Float32Array)return qT;throw Error(`unsupported typed array type`)}function aE(e){if(e===Int8Array)return VT;if(e===Uint8Array||e===Uint8ClampedArray)return HT;if(e===Int16Array)return UT;if(e===Uint16Array)return WT;if(e===Int32Array)return GT;if(e===Uint32Array)return KT;if(e===Float32Array)return qT;throw Error(`unsupported typed array type`)}function oE(e){let t=rE[e];if(!t)throw Error(`unknown gl type`);return t}var sE=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 cE(...e){console.error(...e)}function lE(...e){console.warn(...e)}function uE(e,t){return typeof WebGLBuffer<`u`&&t instanceof WebGLBuffer}function dE(e,t){return typeof WebGLRenderbuffer<`u`&&t instanceof WebGLRenderbuffer}function fE(e,t){return typeof WebGLTexture<`u`&&t instanceof WebGLTexture}function pE(e,t){return typeof WebGLSampler<`u`&&t instanceof WebGLSampler}var mE=35044,hE=34962,gE=34963,_E=34660,vE=5120,yE=5121,bE=5122,xE=5123,SE=5124,CE=5125,wE=5126,TE={attribPrefix:``};function EE(e,t,n,r,i){e.bindBuffer(t,n),e.bufferData(t,r,i||mE)}function DE(e,t,n,r){if(uE(e,t))return t;n||=hE;let i=e.createBuffer();return EE(e,n,i,t,r),i}function OE(e){return e===`indices`}function kE(e){return e instanceof Int8Array||e instanceof Uint8Array}function AE(e){return e===Int8Array||e===Uint8Array}function jE(e){return e.length?e:e.data}var ME=/coord|texture/i,NE=/color|colour/i;function PE(e,t){let n;if(n=ME.test(e)?2:NE.test(e)?4:3,t%n>0)throw Error(`Can not guess numComponents for attribute '${e}'. Tried ${n} but ${t} values is not evenly divisible by ${n}. You should specify it.`);return n}function FE(e,t){return e.numComponents||e.size||PE(t,jE(e).length)}function IE(e,t){if(sE(e))return e;if(sE(e.data))return e.data;Array.isArray(e)&&(e={data:e});let n=e.type;return n||=OE(t)?Uint16Array:Float32Array,new n(e.data)}function LE(e,t){let n={};return Object.keys(t).forEach(function(r){if(!OE(r)){let i=t[r],a=i.attrib||i.name||i.attribName||TE.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!sE(i.value))throw Error(`array.value is not array or typedarray`);n[a]={value:i.value}}else{let t,o,s,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)t=i.buffer,c=i.numComponents||i.size,o=i.type,s=i.normalize;else if(typeof i==`number`||typeof i.data==`number`){let n=i.data||i,a=i.type||Float32Array,l=n*a.BYTES_PER_ELEMENT;o=aE(a),s=i.normalize===void 0?AE(a):i.normalize,c=i.numComponents||i.size||PE(r,n),t=e.createBuffer(),e.bindBuffer(hE,t),e.bufferData(hE,l,i.drawType||mE)}else{let n=IE(i,r);t=DE(e,n,void 0,i.drawType),o=iE(n),s=i.normalize===void 0?kE(n):i.normalize,c=FE(i,r)}n[a]={buffer:t,numComponents:c,type:o,normalize:s,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),e.bindBuffer(hE,null),n}function RE(e,t,n,r){n=IE(n),r===void 0?EE(e,hE,t.buffer,n,t.drawType):(e.bindBuffer(hE,t.buffer),e.bufferSubData(hE,r,n))}function zE(e,t){return t===vE||t===yE?1:t===bE||t===xE?2:t===SE||t===CE||t===wE?4:0}var BE=[`position`,`positions`,`a_position`];function VE(e,t){let n,r;for(r=0;r<BE.length&&(n=BE[r],!(n in t||(n=TE.attribPrefix+n,n in t)));++r);r===BE.length&&(n=Object.keys(t)[0]);let i=t[n];if(!i.buffer)return 1;e.bindBuffer(hE,i.buffer);let a=e.getBufferParameter(hE,_E);e.bindBuffer(hE,null);let o=a/zE(e,i.type),s=i.numComponents||i.size,c=o/s;if(c%1!=0)throw Error(`numComponents ${s} not correct for length ${length}`);return c}function HE(e,t,n){let r=LE(e,t),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);let a=t.indices;if(a){let t=IE(a,`indices`);i.indices=DE(e,t,gE),i.numElements=t.length,i.elementType=iE(t)}else i.numElements||=VE(e,i.attribs);return i}function UE(e){return!!e.texStorage2D}var WE=function(){let e={},t={};function n(n){let r=n.constructor.name;if(!e[r]){for(let e in n)if(typeof n[e]==`number`){let r=t[n[e]];t[n[e]]=r?`${r} | ${e}`:e}e[r]=!0}}return function(e,r){return n(e),t[r]||(typeof r==`number`?`0x${r.toString(16)}`:r)}}(),GE={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},KE=sE,qE=function(){let e;return function(){return e||=typeof document<`u`&&document.createElement?document.createElement(`canvas`).getContext(`2d`):null,e}}(),JE=6406,YE=6407,K=6408,XE=6409,ZE=6410,QE=6402,$E=34041,eD=33071,tD=9728,nD=9729,rD=3553,iD=34067,aD=32879,oD=35866,sD=34069,cD=34070,lD=34071,uD=34072,dD=34073,fD=34074,pD=10241,mD=10240,hD=10242,gD=10243,_D=32882,vD=33082,yD=33083,bD=33084,xD=33085,SD=3317,CD=3314,wD=32878,TD=3316,ED=3315,DD=32877,OD=37443,kD=37441,AD=37440,jD=33321,MD=36756,ND=33325,PD=33326,FD=33330,ID=33329,LD=33338,RD=33337,zD=33340,BD=33339,VD=33323,HD=36757,UD=33327,WD=33328,GD=33336,KD=33335,qD=33332,JD=33331,YD=33334,XD=33333,ZD=32849,QD=35905,$D=36194,eO=36758,tO=35898,nO=35901,rO=34843,iO=34837,aO=36221,oO=36239,sO=36215,cO=36233,lO=36209,uO=36227,dO=32856,fO=35907,pO=36759,mO=32855,hO=32854,gO=32857,_O=34842,vO=34836,yO=36220,bO=36238,xO=36975,SO=36214,CO=36232,wO=36226,TO=36208,EO=33189,DO=33190,OO=36012,kO=36013,AO=35056,jO=5120,q=5121,MO=5122,NO=5123,PO=5124,FO=5125,IO=5126,LO=32819,RO=32820,zO=33635,BO=5131,VO=36193,HO=33640,UO=35899,WO=35902,GO=36269,KO=34042,qO=33319,JO=33320,YO=6403,XO=36244,ZO=36248,QO=36249,$O={};{let e=$O;e[JE]={numColorComponents:1},e[XE]={numColorComponents:1},e[ZE]={numColorComponents:2},e[YE]={numColorComponents:3},e[K]={numColorComponents:4},e[YO]={numColorComponents:1},e[XO]={numColorComponents:1},e[qO]={numColorComponents:2},e[JO]={numColorComponents:2},e[YE]={numColorComponents:3},e[ZO]={numColorComponents:3},e[K]={numColorComponents:4},e[QO]={numColorComponents:4},e[QE]={numColorComponents:1},e[$E]={numColorComponents:2}}var ek;function tk(e){if(!ek){let e={};e[JE]={textureFormat:JE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[q,BO,VO,IO]},e[XE]={textureFormat:XE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[q,BO,VO,IO]},e[ZE]={textureFormat:ZE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[q,BO,VO,IO]},e[YE]={textureFormat:YE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[q,BO,VO,IO,zO]},e[K]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[q,BO,VO,IO,LO,RO]},e[QE]={textureFormat:QE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[FO,NO]},e[jD]={textureFormat:YO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[q]},e[MD]={textureFormat:YO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[jO]},e[ND]={textureFormat:YO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[IO,BO]},e[PD]={textureFormat:YO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[IO]},e[FD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[q]},e[ID]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[jO]},e[qD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[NO]},e[JD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[MO]},e[YD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[FO]},e[XD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[PO]},e[VD]={textureFormat:qO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[q]},e[HD]={textureFormat:qO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[jO]},e[UD]={textureFormat:qO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[IO,BO]},e[WD]={textureFormat:qO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[IO]},e[GD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[q]},e[KD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[jO]},e[LD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[NO]},e[RD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[MO]},e[zD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[FO]},e[BD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[PO]},e[ZD]={textureFormat:YE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[q]},e[QD]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[q]},e[$D]={textureFormat:YE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[q,zO]},e[eO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[jO]},e[tO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[IO,BO,UO]},e[nO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[IO,BO,WO]},e[rO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[IO,BO]},e[iO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[IO]},e[aO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[q]},e[oO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[jO]},e[sO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[NO]},e[cO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[MO]},e[lO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[FO]},e[uO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[PO]},e[dO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[q]},e[fO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[q]},e[pO]={textureFormat:K,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[jO]},e[mO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[q,RO,HO]},e[hO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[q,LO]},e[gO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[HO]},e[_O]={textureFormat:K,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[IO,BO]},e[vO]={textureFormat:K,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[IO]},e[yO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[q]},e[bO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[jO]},e[xO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[HO]},e[SO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[NO]},e[CO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[MO]},e[wO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[PO]},e[TO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[FO]},e[EO]={textureFormat:QE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[NO,FO]},e[DO]={textureFormat:QE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[FO]},e[OO]={textureFormat:QE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[IO]},e[AO]={textureFormat:$E,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[KO]},e[kO]={textureFormat:$E,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[GO]},Object.keys(e).forEach(function(t){let n=e[t];n.bytesPerElementMap={},n.bytesPerElement.forEach(function(e,t){let r=n.type[t];n.bytesPerElementMap[r]=e})}),ek=e}return ek[e]}function nk(e,t){let n=tk(e);if(!n)throw`unknown internal format`;let r=n.bytesPerElementMap[t];if(r===void 0)throw`unknown internal format`;return r}function rk(e){let t=tk(e);if(!t)throw`unknown internal format`;return{format:t.textureFormat,type:t.type[0]}}function ik(e){return(e&e-1)==0}function ak(e,t,n,r){if(!UE(e))return ik(t)&&ik(n);let i=tk(r);if(!i)throw`unknown internal format`;return i.colorRenderable&&i.textureFilterable}function ok(e){let t=tk(e);if(!t)throw`unknown internal format`;return t.textureFilterable}function sk(e,t,n){return KE(t)?iE(t):n||q}function ck(e,t,n,r,i){if(i%1!=0)throw`can't guess dimensions`;if(!n&&!r){let e=Math.sqrt(i/(t===iD?6:1));e%1==0?(n=e,r=e):(n=i,r=1)}else if(!r){if(r=i/n,r%1)throw`can't guess dimensions`}else if(!n&&(n=i/r,n%1))throw`can't guess dimensions`;return{width:n,height:r}}function lk(e,t){t.colorspaceConversion!==void 0&&e.pixelStorei(OD,t.colorspaceConversion),t.premultiplyAlpha!==void 0&&e.pixelStorei(kD,t.premultiplyAlpha),t.flipY!==void 0&&e.pixelStorei(AD,t.flipY)}function uk(e){e.pixelStorei(SD,4),UE(e)&&(e.pixelStorei(CD,0),e.pixelStorei(wD,0),e.pixelStorei(TD,0),e.pixelStorei(ED,0),e.pixelStorei(DD,0))}function dk(e,t,n,r){r.minMag&&(n.call(e,t,pD,r.minMag),n.call(e,t,mD,r.minMag)),r.min&&n.call(e,t,pD,r.min),r.mag&&n.call(e,t,mD,r.mag),r.wrap&&(n.call(e,t,hD,r.wrap),n.call(e,t,gD,r.wrap),(t===aD||pE(e,t))&&n.call(e,t,_D,r.wrap)),r.wrapR&&n.call(e,t,_D,r.wrapR),r.wrapS&&n.call(e,t,hD,r.wrapS),r.wrapT&&n.call(e,t,gD,r.wrapT),r.minLod&&n.call(e,t,vD,r.minLod),r.maxLod&&n.call(e,t,yD,r.maxLod),r.baseLevel&&n.call(e,t,bD,r.baseLevel),r.maxLevel&&n.call(e,t,xD,r.maxLevel)}function fk(e,t,n){let r=n.target||rD;e.bindTexture(r,t),dk(e,r,e.texParameteri,n)}function pk(e){return e||=GE.textureColor,KE(e)?e:new Uint8Array([e[0]*255,e[1]*255,e[2]*255,e[3]*255])}function mk(e,t,n,r,i,a){n||=GE.textureOptions,a||=K;let o=n.target||rD;if(r||=n.width,i||=n.height,e.bindTexture(o,t),ak(e,r,i,a))e.generateMipmap(o);else{let t=ok(a)?nD:tD;e.texParameteri(o,pD,t),e.texParameteri(o,mD,t),e.texParameteri(o,hD,eD),e.texParameteri(o,gD,eD)}}function hk(e){return e.auto===!0||e.auto===void 0&&e.level===void 0}function gk(e,t){return t||={},t.cubeFaceOrder||[sD,cD,lD,uD,dD,fD]}function _k(e,t){let n=gk(e,t).map(function(e,t){return{face:e,ndx:t}});return n.sort(function(e,t){return e.face-t.face}),n}function vk(e,t,n,r){r||=GE.textureOptions;let i=r.target||rD,a=r.level||0,o=n.width,s=n.height,c=r.internalFormat||r.format||K,l=rk(c),u=r.format||l.format,d=r.type||l.type;if(lk(e,r),e.bindTexture(i,t),i===iD){let l=n.width,f=n.height,p,m;if(l/6===f)p=f,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(f/6===l)p=l,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(l/3==f/2)p=l/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(l/2==f/3)p=l/2,m=[0,0,1,0,0,1,1,1,0,2,1,2];else throw`can't figure out cube map from element: `+(n.src?n.src:n.nodeName);let h=qE();h?(h.canvas.width=p,h.canvas.height=p,o=p,s=p,_k(e,r).forEach(function(t){let r=m[t.ndx*2+0]*p,i=m[t.ndx*2+1]*p;h.drawImage(n,r,i,p,p,0,0,p,p),e.texImage2D(t.face,a,c,u,d,h.canvas)}),h.canvas.width=1,h.canvas.height=1):typeof createImageBitmap<`u`&&(o=p,s=p,_k(e,r).forEach(function(l){let f=m[l.ndx*2+0]*p,h=m[l.ndx*2+1]*p;e.texImage2D(l.face,a,c,p,p,0,u,d,null),createImageBitmap(n,f,h,p,p,{premultiplyAlpha:`none`,colorSpaceConversion:`none`}).then(function(n){lk(e,r),e.bindTexture(i,t),e.texImage2D(l.face,a,c,u,d,n),hk(r)&&mk(e,t,r,o,s,c)})}))}else if(i===aD||i===oD){let t=Math.min(n.width,n.height),r=Math.max(n.width,n.height),o=r/t;if(o%1!=0)throw`can not compute 3D dimensions of element`;let s=n.width===r?1:0,l=n.height===r?1:0;e.pixelStorei(SD,1),e.pixelStorei(CD,n.width),e.pixelStorei(wD,0),e.pixelStorei(DD,0),e.texImage3D(i,a,c,t,t,t,0,u,d,null);for(let r=0;r<o;++r){let o=r*t*s,c=r*t*l;e.pixelStorei(TD,o),e.pixelStorei(ED,c),e.texSubImage3D(i,a,0,0,r,t,t,1,u,d,n)}uk(e)}else e.texImage2D(i,a,c,u,d,n);hk(r)&&mk(e,t,r,o,s,c),fk(e,t,r)}function yk(){}function bk(e){if(typeof document<`u`){let t=document.createElement(`a`);return t.href=e,t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}else{let t=new URL(location.href).origin;return new URL(e,location.href).origin===t}}function xk(e,t){return t===void 0&&!bk(e)?`anonymous`:t}function Sk(e,t,n){n||=yk;let r;if(t=t===void 0?GE.crossOrigin:t,t=xk(e,t),typeof Image<`u`){r=new Image,t!==void 0&&(r.crossOrigin=t);let i=function(){r.removeEventListener(`error`,a),r.removeEventListener(`load`,o),r=null},a=function(){let t=`couldn't load image: `+e;cE(t),n(t,r),i()},o=function(){n(null,r),i()};return r.addEventListener(`error`,a),r.addEventListener(`load`,o),r.src=e,r}else if(typeof ImageBitmap<`u`){let i,a,o=function(){n(i,a)},s={};t&&(s.mode=`cors`),fetch(e,s).then(function(e){if(!e.ok)throw e;return e.blob()}).then(function(e){return createImageBitmap(e,{premultiplyAlpha:`none`,colorSpaceConversion:`none`})}).then(function(e){a=e,setTimeout(o)}).catch(function(e){i=e,setTimeout(o)}),r=null}return r}function Ck(e){return typeof ImageBitmap<`u`&&e instanceof ImageBitmap||typeof ImageData<`u`&&e instanceof ImageData||typeof HTMLElement<`u`&&e instanceof HTMLElement}function wk(e,t,n){return Ck(e)?(setTimeout(function(){n(null,e)}),e):Sk(e,t,n)}function Tk(e,t,n){n||=GE.textureOptions;let r=n.target||rD;if(e.bindTexture(r,t),n.color===!1)return;let i=pk(n.color);if(r===iD)for(let t=0;t<6;++t)e.texImage2D(sD+t,0,K,1,1,0,K,q,i);else r===aD||r===oD?e.texImage3D(r,0,K,1,1,1,0,K,q,i):e.texImage2D(r,0,K,1,1,0,K,q,i)}function Ek(e,t,n,r){return r||=yk,n||=GE.textureOptions,Tk(e,t,n),n=Object.assign({},n),wk(n.src,n.crossOrigin,function(i,a){i?r(i,t,a):(vk(e,t,a,n),r(null,t,a))})}function Dk(e,t,n,r){r||=yk;let i=n.src;if(i.length!==6)throw`there must be 6 urls for a cubemap`;let a=n.level||0,o=n.internalFormat||n.format||K,s=rk(o),c=n.format||s.format,l=n.type||q,u=n.target||rD;if(u!==iD)throw`target must be TEXTURE_CUBE_MAP`;Tk(e,t,n),n=Object.assign({},n);let d=6,f=[],p=gk(e,n),m;function h(i){return function(s,p){--d,s?f.push(s):p.width===p.height?(lk(e,n),e.bindTexture(u,t),d===5?gk().forEach(function(t){e.texImage2D(t,a,o,c,l,p)}):e.texImage2D(i,a,o,c,l,p),hk(n)&&e.generateMipmap(u)):f.push(`cubemap face img is not a square: `+p.src),d===0&&r(f.length?f:void 0,t,m)}}m=i.map(function(e,t){return wk(e,n.crossOrigin,h(p[t]))})}function Ok(e,t,n,r){r||=yk;let i=n.src,a=n.internalFormat||n.format||K,o=rk(a),s=n.format||o.format,c=n.type||q,l=n.target||oD;if(l!==aD&&l!==oD)throw`target must be TEXTURE_3D or TEXTURE_2D_ARRAY`;Tk(e,t,n),n=Object.assign({},n);let u=i.length,d=[],f,p=n.level||0,m=n.width,h=n.height,g=i.length,_=!0;function v(i){return function(o,v){if(--u,o)d.push(o);else{if(lk(e,n),e.bindTexture(l,t),_){_=!1,m=n.width||v.width,h=n.height||v.height,e.texImage3D(l,p,a,m,h,g,0,s,c,null);for(let t=0;t<g;++t)e.texSubImage3D(l,p,0,0,t,m,h,1,s,c,v)}else{let t=v,n;(v.width!==m||v.height!==h)&&(n=qE(),t=n.canvas,n.canvas.width=m,n.canvas.height=h,n.drawImage(v,0,0,m,h)),e.texSubImage3D(l,p,0,0,i,m,h,1,s,c,t),n&&t===n.canvas&&(n.canvas.width=0,n.canvas.height=0)}hk(n)&&e.generateMipmap(l)}u===0&&r(d.length?d:void 0,t,f)}}f=i.map(function(e,t){return wk(e,n.crossOrigin,v(t))})}function kk(e,t,n,r){r||=GE.textureOptions;let i=r.target||rD;e.bindTexture(i,t);let a=r.width,o=r.height,s=r.depth,c=r.level||0,l=r.internalFormat||r.format||K,u=rk(l),d=r.format||u.format,f=r.type||sk(e,n,u.type);KE(n)?n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer)):n=new(oE(f))(n);let p=nk(l,f),m=n.byteLength/p;if(m%1)throw`length wrong size for format: `+WE(e,d);let h;if(i===aD||i===oD)if(!a&&!o&&!s){let e=Math.cbrt(m);if(e%1!=0)throw`can't guess cube size of array of numElements: `+m;a=e,o=e,s=e}else a&&(!o||!s)?(h=ck(e,i,o,s,m/a),o=h.width,s=h.height):o&&(!a||!s)?(h=ck(e,i,a,s,m/o),a=h.width,s=h.height):(h=ck(e,i,a,o,m/s),a=h.width,o=h.height);else h=ck(e,i,a,o,m),a=h.width,o=h.height;if(uk(e),e.pixelStorei(SD,r.unpackAlignment||1),lk(e,r),i===iD){let t=p/n.BYTES_PER_ELEMENT,i=m/6*t;_k(e,r).forEach(t=>{let r=i*t.ndx,s=n.subarray(r,r+i);e.texImage2D(t.face,c,l,a,o,0,d,f,s)})}else i===aD||i===oD?e.texImage3D(i,c,l,a,o,s,0,d,f,n):e.texImage2D(i,c,l,a,o,0,d,f,n);return{width:a,height:o,depth:s,type:f}}function Ak(e,t,n){let r=n.target||rD;e.bindTexture(r,t);let i=n.level||0,a=n.internalFormat||n.format||K,o=rk(a),s=n.format||o.format,c=n.type||o.type;if(lk(e,n),r===iD)for(let t=0;t<6;++t)e.texImage2D(sD+t,i,a,n.width,n.height,0,s,c,null);else r===aD||r===oD?e.texImage3D(r,i,a,n.width,n.height,n.depth,0,s,c,null):e.texImage2D(r,i,a,n.width,n.height,0,s,c,null)}function jk(e,t,n){n||=yk,t||=GE.textureOptions;let r=e.createTexture(),i=t.target||rD,a=t.width||1,o=t.height||1,s=t.internalFormat||K;e.bindTexture(i,r),i===iD&&(e.texParameteri(i,hD,eD),e.texParameteri(i,gD,eD));let c=t.src;if(c)if(typeof c==`function`&&(c=c(e,t)),typeof c==`string`)Ek(e,r,t,n);else if(KE(c)||Array.isArray(c)&&(typeof c[0]==`number`||Array.isArray(c[0])||KE(c[0]))){let n=kk(e,r,c,t);a=n.width,o=n.height}else Array.isArray(c)&&(typeof c[0]==`string`||Ck(c[0]))?i===iD?Dk(e,r,t,n):Ok(e,r,t,n):(vk(e,r,c,t),a=c.width,o=c.height);else Ak(e,r,t);return hk(t)&&mk(e,r,t,a,o,s),fk(e,r,t),r}function Mk(e,t,n,r,i,a){r||=n.width,i||=n.height,a||=n.depth;let o=n.target||rD;e.bindTexture(o,t);let s=n.level||0,c=n.internalFormat||n.format||K,l=rk(c),u=n.format||l.format,d,f=n.src;if(d=f&&(KE(f)||Array.isArray(f)&&typeof f[0]==`number`)?n.type||sk(e,f,l.type):n.type||l.type,o===iD)for(let t=0;t<6;++t)e.texImage2D(sD+t,s,c,r,i,0,u,d,null);else o===aD||o===oD?e.texImage3D(o,s,c,r,i,a,0,u,d,null):e.texImage2D(o,s,c,r,i,0,u,d,null)}var Nk=lE,Pk=33984,Fk=35048,Ik=34962,Lk=34963,Rk=35345,zk=35718,Bk=35721,Vk=35971,Hk=35382,Uk=35396,Wk=35398,Gk=35392,Kk=35395,qk=5126,Jk=35664,Yk=35665,Xk=35666,Zk=5124,Qk=35667,$k=35668,eA=35669,tA=35670,nA=35671,rA=35672,iA=35673,aA=35674,oA=35675,sA=35676,cA=35678,lA=35680,uA=35679,dA=35682,fA=35685,pA=35686,mA=35687,hA=35688,gA=35689,_A=35690,vA=36289,yA=36292,bA=36293,xA=5125,SA=36294,CA=36295,wA=36296,TA=36298,EA=36299,DA=36300,OA=36303,kA=36306,AA=36307,jA=36308,MA=36311,NA=3553,PA=34067,FA=32879,IA=35866,J={};function LA(e,t){return J[t].bindPoint}function RA(e,t){return function(n){e.uniform1f(t,n)}}function zA(e,t){return function(n){e.uniform1fv(t,n)}}function BA(e,t){return function(n){e.uniform2fv(t,n)}}function VA(e,t){return function(n){e.uniform3fv(t,n)}}function HA(e,t){return function(n){e.uniform4fv(t,n)}}function UA(e,t){return function(n){e.uniform1i(t,n)}}function WA(e,t){return function(n){e.uniform1iv(t,n)}}function GA(e,t){return function(n){e.uniform2iv(t,n)}}function KA(e,t){return function(n){e.uniform3iv(t,n)}}function qA(e,t){return function(n){e.uniform4iv(t,n)}}function JA(e,t){return function(n){e.uniform1ui(t,n)}}function YA(e,t){return function(n){e.uniform1uiv(t,n)}}function XA(e,t){return function(n){e.uniform2uiv(t,n)}}function ZA(e,t){return function(n){e.uniform3uiv(t,n)}}function QA(e,t){return function(n){e.uniform4uiv(t,n)}}function $A(e,t){return function(n){e.uniformMatrix2fv(t,!1,n)}}function ej(e,t){return function(n){e.uniformMatrix3fv(t,!1,n)}}function tj(e,t){return function(n){e.uniformMatrix4fv(t,!1,n)}}function nj(e,t){return function(n){e.uniformMatrix2x3fv(t,!1,n)}}function rj(e,t){return function(n){e.uniformMatrix3x2fv(t,!1,n)}}function ij(e,t){return function(n){e.uniformMatrix2x4fv(t,!1,n)}}function aj(e,t){return function(n){e.uniformMatrix4x2fv(t,!1,n)}}function oj(e,t){return function(n){e.uniformMatrix3x4fv(t,!1,n)}}function sj(e,t){return function(n){e.uniformMatrix4x3fv(t,!1,n)}}function cj(e,t,n,r){let i=LA(e,t);return UE(e)?function(t){let a,o;fE(e,t)?(a=t,o=null):(a=t.texture,o=t.sampler),e.uniform1i(r,n),e.activeTexture(Pk+n),e.bindTexture(i,a),e.bindSampler(n,o)}:function(t){e.uniform1i(r,n),e.activeTexture(Pk+n),e.bindTexture(i,t)}}function lj(e,t,n,r,i){let a=LA(e,t),o=new Int32Array(i);for(let e=0;e<i;++e)o[e]=n+e;return UE(e)?function(t){e.uniform1iv(r,o),t.forEach(function(t,r){e.activeTexture(Pk+o[r]);let i,s;fE(e,t)?(i=t,s=null):(i=t.texture,s=t.sampler),e.bindSampler(n,s),e.bindTexture(a,i)})}:function(t){e.uniform1iv(r,o),t.forEach(function(t,n){e.activeTexture(Pk+o[n]),e.bindTexture(a,t)})}}J[qk]={Type:Float32Array,size:4,setter:RA,arraySetter:zA},J[Jk]={Type:Float32Array,size:8,setter:BA,cols:2},J[Yk]={Type:Float32Array,size:12,setter:VA,cols:3},J[Xk]={Type:Float32Array,size:16,setter:HA,cols:4},J[Zk]={Type:Int32Array,size:4,setter:UA,arraySetter:WA},J[Qk]={Type:Int32Array,size:8,setter:GA,cols:2},J[$k]={Type:Int32Array,size:12,setter:KA,cols:3},J[eA]={Type:Int32Array,size:16,setter:qA,cols:4},J[xA]={Type:Uint32Array,size:4,setter:JA,arraySetter:YA},J[SA]={Type:Uint32Array,size:8,setter:XA,cols:2},J[CA]={Type:Uint32Array,size:12,setter:ZA,cols:3},J[wA]={Type:Uint32Array,size:16,setter:QA,cols:4},J[tA]={Type:Uint32Array,size:4,setter:UA,arraySetter:WA},J[nA]={Type:Uint32Array,size:8,setter:GA,cols:2},J[rA]={Type:Uint32Array,size:12,setter:KA,cols:3},J[iA]={Type:Uint32Array,size:16,setter:qA,cols:4},J[aA]={Type:Float32Array,size:32,setter:$A,rows:2,cols:2},J[oA]={Type:Float32Array,size:48,setter:ej,rows:3,cols:3},J[sA]={Type:Float32Array,size:64,setter:tj,rows:4,cols:4},J[fA]={Type:Float32Array,size:32,setter:nj,rows:2,cols:3},J[pA]={Type:Float32Array,size:32,setter:ij,rows:2,cols:4},J[mA]={Type:Float32Array,size:48,setter:rj,rows:3,cols:2},J[hA]={Type:Float32Array,size:48,setter:oj,rows:3,cols:4},J[gA]={Type:Float32Array,size:64,setter:aj,rows:4,cols:2},J[_A]={Type:Float32Array,size:64,setter:sj,rows:4,cols:3},J[cA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:NA},J[lA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:PA},J[uA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:FA},J[dA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:NA},J[vA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:IA},J[yA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:IA},J[bA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:PA},J[TA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:NA},J[EA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:FA},J[DA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:PA},J[OA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:IA},J[kA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:NA},J[AA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:FA},J[jA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:PA},J[MA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:IA};function uj(e,t){return function(n){if(n.value)switch(e.disableVertexAttribArray(t),n.value.length){case 4:e.vertexAttrib4fv(t,n.value);break;case 3:e.vertexAttrib3fv(t,n.value);break;case 2:e.vertexAttrib2fv(t,n.value);break;case 1:e.vertexAttrib1fv(t,n.value);break;default:throw Error(`the length of a float constant value must be between 1 and 4!`)}else e.bindBuffer(Ik,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,n.numComponents||n.size,n.type||qk,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function dj(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4iv(t,n.value);else throw Error(`The length of an integer constant value must be 4!`);else e.bindBuffer(Ik,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||Zk,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function fj(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4uiv(t,n.value);else throw Error(`The length of an unsigned integer constant value must be 4!`);else e.bindBuffer(Ik,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||xA,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function pj(e,t,n){let r=n.size,i=n.count;return function(n){e.bindBuffer(Ik,n.buffer);let a=n.size||n.numComponents||r,o=a/i,s=n.type||qk,c=J[s].size*a,l=n.normalize||!1,u=n.offset||0,d=c/i;for(let r=0;r<i;++r)e.enableVertexAttribArray(t+r),e.vertexAttribPointer(t+r,o,s,l,c,u+d*r),n.divisor!==void 0&&e.vertexAttribDivisor(t+r,n.divisor)}}var mj={};mj[qk]={size:4,setter:uj},mj[Jk]={size:8,setter:uj},mj[Yk]={size:12,setter:uj},mj[Xk]={size:16,setter:uj},mj[Zk]={size:4,setter:dj},mj[Qk]={size:8,setter:dj},mj[$k]={size:12,setter:dj},mj[eA]={size:16,setter:dj},mj[xA]={size:4,setter:fj},mj[SA]={size:8,setter:fj},mj[CA]={size:12,setter:fj},mj[wA]={size:16,setter:fj},mj[tA]={size:4,setter:dj},mj[nA]={size:8,setter:dj},mj[rA]={size:12,setter:dj},mj[iA]={size:16,setter:dj},mj[aA]={size:4,setter:pj,count:2},mj[oA]={size:9,setter:pj,count:3},mj[sA]={size:16,setter:pj,count:4};function hj(e){let t=e.name;return t.startsWith(`gl_`)||t.startsWith(`webgl_`)}var gj=/(\.|\[|]|\w+)/g,_j=e=>e>=`0`&&e<=`9`;function vj(e,t,n,r){let i=e.split(gj).filter(e=>e!==``),a=0,o=``;for(;;){let e=i[a++];o+=e;let s=_j(e[0]),c=s?parseInt(e):e;if(s&&(o+=i[a++]),a===i.length){n[c]=t;break}else{let e=i[a++],t=e===`[`,s=n[c]||(t?[]:{});n[c]=s,n=s,r[o]=r[o]||function(e){return function(t){Aj(e,t)}}(s),o+=e}}}function yj(e,t){let n=0;function r(t,r,i){let a=r.name.endsWith(`[0]`),o=r.type,s=J[o];if(!s)throw Error(`unknown type: 0x${o.toString(16)}`);let c;if(s.bindPoint){let t=n;n+=r.size,c=a?s.arraySetter(e,o,t,i,r.size):s.setter(e,o,t,i,r.size)}else c=s.arraySetter&&a?s.arraySetter(e,i):s.setter(e,i);return c.location=i,c}let i={},a={},o=e.getProgramParameter(t,zk);for(let n=0;n<o;++n){let o=e.getActiveUniform(t,n);if(hj(o))continue;let s=o.name;s.endsWith(`[0]`)&&(s=s.substr(0,s.length-3));let c=e.getUniformLocation(t,o.name);if(c){let e=r(t,o,c);i[s]=e,vj(s,e,a,i)}}return i}function bj(e,t){let n={},r=e.getProgramParameter(t,Vk);for(let i=0;i<r;++i){let r=e.getTransformFeedbackVarying(t,i);n[r.name]={index:i,type:r.type,size:r.size}}return n}function xj(e,t){let n=e.getProgramParameter(t,zk),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});let n=e.getActiveUniform(t,a);r[a].name=n.name}[[`UNIFORM_TYPE`,`type`],[`UNIFORM_SIZE`,`size`],[`UNIFORM_BLOCK_INDEX`,`blockNdx`],[`UNIFORM_OFFSET`,`offset`]].forEach(function(n){let a=n[0],o=n[1];e.getActiveUniforms(t,i,e[a]).forEach(function(e,t){r[t][o]=e})});let a={},o=e.getProgramParameter(t,Hk);for(let n=0;n<o;++n){let r=e.getActiveUniformBlockName(t,n),i={index:e.getUniformBlockIndex(t,r),usedByVertexShader:e.getActiveUniformBlockParameter(t,n,Uk),usedByFragmentShader:e.getActiveUniformBlockParameter(t,n,Wk),size:e.getActiveUniformBlockParameter(t,n,Gk),uniformIndices:e.getActiveUniformBlockParameter(t,n,Kk)};i.used=i.usedByVertexShader||i.usedByFragmentShader,a[r]=i}return{blockSpecs:a,uniformData:r}}var Sj=/\[\d+\]\.$/,Cj=(e,t)=>((e+(t-1))/t|0)*t;function wj(e,t,n,r){if(t||n){r||=1;let t=e.length/4;return function(n){let i=0,a=0;for(let o=0;o<t;++o){for(let t=0;t<r;++t)e[i++]=n[a++];i+=4-r}}}else return function(t){t.length?e.set(t):e[0]=t}}function Tj(e,t,n,r){let i=n.blockSpecs,a=n.uniformData,o=i[r];if(!o)return Nk(`no uniform block object named:`,r),{name:r,uniforms:{}};let s=new ArrayBuffer(o.size),c=e.createBuffer(),l=o.index;e.bindBuffer(Rk,c),e.uniformBlockBinding(t,o.index,l);let u=r+`.`;Sj.test(u)&&(u=u.replace(Sj,`.`));let d={},f={},p={};return o.uniformIndices.forEach(function(e){let t=a[e],n=t.name;n.startsWith(u)&&(n=n.substr(u.length));let r=n.endsWith(`[0]`);r&&(n=n.substr(0,n.length-3));let i=J[t.type],o=i.Type,c=r?Cj(i.size,16)*t.size:i.size*t.size,l=new o(s,t.offset,c/o.BYTES_PER_ELEMENT);d[n]=l;let m=wj(l,r,i.rows,i.cols);f[n]=m,vj(n,m,p,f)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:d,setters:f}}function Ej(e,t,n){return Tj(e,t.program,t.uniformBlockSpec,n)}function Dj(e,t,n){let r=(t.uniformBlockSpec||t).blockSpecs[n.name];if(r){let t=r.index;return e.bindBufferRange(Rk,t,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function Oj(e,t,n){Dj(e,t,n)&&e.bufferData(Rk,n.array,Fk)}function kj(e,t){let n=e.setters;for(let e in t){let r=n[e];if(r){let n=t[e];r(n)}}}function Aj(e,t){for(let n in t){let r=e[n];typeof r==`function`?r(t[n]):Aj(e[n],t[n])}}function jj(e,...t){let n=e.uniformSetters||e,r=t.length;for(let e=0;e<r;++e){let r=t[e];if(Array.isArray(r)){let e=r.length;for(let t=0;t<e;++t)jj(n,r[t])}else for(let e in r){let t=n[e];t&&t(r[e])}}}function Mj(e,t){let n={},r=e.getProgramParameter(t,Bk);for(let i=0;i<r;++i){let r=e.getActiveAttrib(t,i);if(hj(r))continue;let a=e.getAttribLocation(t,r.name),o=mj[r.type],s=o.setter(e,a,o);s.location=a,n[r.name]=s}return n}function Nj(e,t){for(let n in t){let r=e[n];r&&r(t[n])}}function Pj(e,t,n){n.vertexArrayObject?e.bindVertexArray(n.vertexArrayObject):(Nj(t.attribSetters||t,n.attribs),n.indices&&e.bindBuffer(Lk,n.indices))}function Fj(e,t){let n={program:t,uniformSetters:yj(e,t),attribSetters:Mj(e,t)};return UE(e)&&(n.uniformBlockSpec=xj(e,t),n.transformFeedbackInfo=bj(e,t)),n}var Ij=4,Lj=5123;function Rj(e,t,n,r,i,a){n=n===void 0?Ij:n;let o=t.indices,s=t.elementType,c=r===void 0?t.numElements:r;i=i===void 0?0:i,s||o?a===void 0?e.drawElements(n,c,s===void 0?Lj:t.elementType,i):e.drawElementsInstanced(n,c,s===void 0?Lj:t.elementType,i,a):a===void 0?e.drawArrays(n,i,c):e.drawArraysInstanced(n,i,c,a)}var zj=36160,Bj=36161,Vj=3553,Hj=5121,Uj=6402,Wj=6408,Gj=33190,Kj=36012,qj=35056,Jj=36013,Yj=32854,Xj=32855,Zj=36194,Qj=33189,$j=6401,eM=36168,tM=34041,nM=36064,rM=36096,iM=36128,aM=33306,oM=33071,sM=9729,cM=[{format:Wj,type:Hj,min:sM,wrap:oM},{format:tM}],lM={};lM[tM]=aM,lM[$j]=iM,lM[eM]=iM,lM[Uj]=rM,lM[Qj]=rM,lM[Gj]=rM,lM[Kj]=rM,lM[qj]=aM,lM[Jj]=aM;function uM(e,t){return lM[e]||lM[t]}var dM={};dM[Yj]=!0,dM[Xj]=!0,dM[Zj]=!0,dM[tM]=!0,dM[Qj]=!0,dM[$j]=!0,dM[eM]=!0;function fM(e){return dM[e]}var pM=32;function mM(e){return e>=nM&&e<nM+pM}function hM(e,t,n,r){let i=zj,a=e.createFramebuffer();e.bindFramebuffer(i,a),n||=e.drawingBufferWidth,r||=e.drawingBufferHeight,t||=cM;let o=[],s={framebuffer:a,attachments:[],width:n,height:r};return t.forEach(function(t,a){let c=t.attachment,l=t.samples,u=t.format,d=t.attachmentPoint||uM(u,t.internalFormat);if(d||=nM+a,mM(d)&&o.push(d),!c)if(l!==void 0||fM(u))c=e.createRenderbuffer(),e.bindRenderbuffer(Bj,c),l>1?e.renderbufferStorageMultisample(Bj,l,u,n,r):e.renderbufferStorage(Bj,u,n,r);else{let i=Object.assign({},t);i.width=n,i.height=r,i.auto===void 0&&(i.auto=!1,i.min=i.min||i.minMag||sM,i.mag=i.mag||i.minMag||sM,i.wrapS=i.wrapS||i.wrap||oM,i.wrapT=i.wrapT||i.wrap||oM),c=jk(e,i)}if(dE(e,c))e.framebufferRenderbuffer(i,d,Bj,c);else if(fE(e,c))t.layer===void 0?e.framebufferTexture2D(i,d,t.target||Vj,c,t.level||0):e.framebufferTextureLayer(i,d,c,t.level||0,t.layer);else throw Error(`unknown attachment type`);s.attachments.push(c)}),e.drawBuffers&&e.drawBuffers(o),s}function gM(e,t,n,r,i){r||=e.drawingBufferWidth,i||=e.drawingBufferHeight,t.width=r,t.height=i,n||=cM,n.forEach(function(n,a){let o=t.attachments[a],s=n.format,c=n.samples;if(c!==void 0||dE(e,o))e.bindRenderbuffer(Bj,o),c>1?e.renderbufferStorageMultisample(Bj,c,s,r,i):e.renderbufferStorage(Bj,s,r,i);else if(fE(e,o))Mk(e,o,n,r,i);else throw Error(`unknown attachment type`)})}function _M(e,t,n){let r=e.createVertexArray();return e.bindVertexArray(r),t.length||(t=[t]),t.forEach(function(t){Pj(e,t,n)}),e.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}var vM={addExtensionsToContext:!0},yM=/^(.*?)_/;function bM(e,t){WE(e,0);let n=e.getExtension(t);if(n){let r={},i=yM.exec(t)[1],a=`_`+i;for(let t in n){let o=n[t],s=typeof o==`function`,c=s?i:a,l=t;t.endsWith(c)&&(l=t.substring(0,t.length-c.length)),e[l]===void 0?s?e[l]=function(e){return function(){return e.apply(n,arguments)}}(o):(e[l]=o,r[l]=o):!s&&e[l]!==o&&lE(l,e[l],o,t)}r.constructor={name:n.constructor.name},WE(r,0)}return n}var xM=[`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 SM(e){for(let t=0;t<xM.length;++t)bM(e,xM[t])}function CM(e,t){let n=[`webgl2`,`webgl`,`experimental-webgl`],r=null;for(let i=0;i<n.length;++i)if(r=e.getContext(n[i],t),r){vM.addExtensionsToContext&&SM(r);break}return r}function wM(e,t){return CM(e,t)}var TM=`flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
|
|
546
549
|
#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
|
|
547
550
|
out vec2 vPosInPixels;
|
|
548
551
|
#endif
|
|
@@ -589,13 +592,13 @@ ${t}
|
|
|
589
592
|
`);this.updateFromDatum=Function(`that`,`datum`,`${e}
|
|
590
593
|
return function unrolledUpdateFromDatum(datum) {
|
|
591
594
|
${t}
|
|
592
|
-
};`)(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()}},AM=127;function jM(e){let t=[];for(let e=0;e<=AM;e++)t.push(void 0);let n=new Map;for(let r of e.chars)r.id<=AM?t[r.id]=r:n.set(r.id,r);let r=8722;n.has(r)||n.set(r,t[45]);function i(e){return(e<=AM?t[e]:n.get(e))||t[63]}function a(e){return i(e.charCodeAt(0))}let o=e.common.base,s=a(`x`),c=a(`X`),l=a(`q`),u=s.height-10,d=c.height-10,f=l.height-s.height+l.yoffset-s.yoffset;function p(e,t=1){let n=0;for(let t=0;t<e.length;t++)n+=i(e.charCodeAt(t)).xadvance;return n/o*t}return{measureWidth:p,getCharByCode:i,getChar:a,xHeight:u,capHeight:d,descent:f,common:e.common}}function MM(){let e=e=>e;return e.invert=e=>e,e.copy=MM,e.invertRange=()=>{},e.type=`null`,e}var NM=4294967295,PM=4294967295;function FM(e){let t=e>>>0;return t^=t>>>16,t=Math.imul(t,2146121005),t^=t>>>15,t=Math.imul(t,2221713035),t^=t>>>16,t>>>0}function IM(e,t={}){let n=Array.from(e,e=>RM(e,`key`)),r=n.length,i=t.maxLoadFactor??.6;if(!(i>0&&i<1))throw Error(`maxLoadFactor must be between 0 and 1.`);let a=t.capacity??zM(Math.ceil(r/i));if(!Number.isSafeInteger(a)||a<1)throw Error(`capacity must be a positive power of two.`);if(a&a-1)throw Error(`capacity must be a power of two.`);let o=new Uint32Array(a);o.fill(NM);let s=a-1;for(let e of n){if(e===4294967295)throw Error(`Hash table keys must not equal the empty sentinel (0xffffffff).`);let t=FM(e)&s,n=!1;for(let r=0;r<a;r+=1){let r=o[t];if(r===4294967295||r===e){o[t]=e,n=!0;break}t=t+1&s}if(!n)throw Error(`Hash table insertion failed. Increase capacity or lower load factor.`)}return{table:o,capacity:a,size:r}}function LM(e,t){if(!Number.isSafeInteger(e)||e<1)throw Error(`capacity must be a positive integer.`);if(e&e-1)throw Error(`capacity must be a power of two.`);if(!Number.isSafeInteger(t)||t<1)throw Error(`maxTextureSize must be a positive integer.`);if(e>t*t)throw Error(`Selection hash table exceeds maximum texture capacity.`);let n=1<<Math.floor(Math.log2(t)),r=Math.min(e,n),i=e/r;if(i>t)throw Error(`Selection hash table dimensions exceed maximum texture size.`);return{width:r,height:i}}function RM(e,t){if(!Number.isSafeInteger(e)||e<0||e>PM)throw Error(t+` must be a non-negative u32.`);return e>>>0}function zM(e){let t=Math.max(1,e);return--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t+1}var BM=class{constructor(e,t,n,r){this._container=e,this._canvas=t,this._sizeSource=n,this._onPhysicalSizeChange=r??(()=>{}),this._logicalCanvasSize=void 0,this._devicePixelContentBoxSize=void 0,this._devicePixelContentBoxObserver=void 0,this._observeDevicePixelContentBox()}invalidate(){this._logicalCanvasSize=void 0,this._devicePixelContentBoxSize=void 0}finalize(){this._devicePixelContentBoxObserver&&this._devicePixelContentBoxObserver.disconnect()}getPhysicalCanvasSize(e){if(this._devicePixelContentBoxSize)return this._devicePixelContentBoxSize;let t=window.devicePixelRatio??1;return e||=this.getLogicalCanvasSize(),{width:Math.round(e.width*t),height:Math.round(e.height*t)}}getDevicePixelRatio(e){e||=this.getLogicalCanvasSize();let t=this.getPhysicalCanvasSize(e),n=e.width>0?t.width/e.width:void 0,r=e.height>0?t.height/e.height:void 0;return n!==void 0&&r!==void 0?(n+r)/2:n===void 0?r===void 0?window.devicePixelRatio??1:r:n}getLogicalCanvasSize(){if(this._logicalCanvasSize)return this._logicalCanvasSize;let e=this._sizeSource(),t=window.getComputedStyle(this._container,null),n=this._container.getBoundingClientRect(),r=parseFloat(t.paddingLeft),i=parseFloat(t.paddingRight),a=parseFloat(t.paddingTop),o=parseFloat(t.paddingBottom),s=parseFloat(t.borderLeftWidth),c=parseFloat(t.borderRightWidth),l=parseFloat(t.borderTopWidth),u=parseFloat(t.borderBottomWidth);return this._logicalCanvasSize={width:e.width??n.width-r-i-s-c,height:e.height??n.height-a-o-l-u},this._logicalCanvasSize}_observeDevicePixelContentBox(){if(typeof ResizeObserver!=`function`)return;let e=new ResizeObserver(e=>{let t=e.find(e=>e.target==this._canvas);if(!t)return;let n=t.devicePixelContentBoxSize;if(!n)return;let r=Array.isArray(n)?n[0]:n;if(!r)return;let i={width:r.inlineSize,height:r.blockSize};this._devicePixelContentBoxSize&&this._devicePixelContentBoxSize.width==i.width&&this._devicePixelContentBoxSize.height==i.height||(this._devicePixelContentBoxSize=i,this._onPhysicalSizeChange())});try{e.observe(this._canvas,{box:`device-pixel-content-box`}),this._devicePixelContentBoxObserver=e}catch{e.disconnect()}}},VM=class{constructor(e,t,n={},r){let i=t??(()=>({width:void 0,height:void 0}));this._canvasSizeHelper=void 0,this._appliedCanvasSize=void 0,this._onCanvasResize=r??(()=>{}),this._shaderCache=new Map,this.rangeTextures=new WeakMap,this.selectionTextures=new WeakMap;let a=document.createElement(`canvas`);e.appendChild(a);let o=wM(a,{antialias:!0,depth:!1,premultipliedAlpha:!0,...n});if(!o)throw Error(`Unable to initialize WebGL. Your browser or machine may not support it.`);if(!UE(o))throw Error(`Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.`);SM(o);let s=o.getExtension(`WEBGL_provoking_vertex`);s&&s.provokingVertexWEBGL(s.FIRST_VERTEX_CONVENTION_WEBGL),o.blendFunc(o.ONE,o.ONE_MINUS_SRC_ALPHA),this.canvas=a,this.gl=o,this._pickingAttachmentOptions=[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],this._pickingBufferInfo=hM(o,this._pickingAttachmentOptions),o.bindFramebuffer(o.FRAMEBUFFER,null),this._canvasSizeHelper=new BM(e,a,i,()=>{this.adjustGl()&&this._onCanvasResize()}),this.adjustGl()}invalidateSize(){this._canvasSizeHelper.invalidate(),this.adjustGl()}compileShader(e,t){
|
|
595
|
+
};`)(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()}},AM=127;function jM(e){let t=[];for(let e=0;e<=AM;e++)t.push(void 0);let n=new Map;for(let r of e.chars)r.id<=AM?t[r.id]=r:n.set(r.id,r);let r=8722;n.has(r)||n.set(r,t[45]);function i(e){return(e<=AM?t[e]:n.get(e))||t[63]}function a(e){return i(e.charCodeAt(0))}let o=e.common.base,s=a(`x`),c=a(`X`),l=a(`q`),u=s.height-10,d=c.height-10,f=l.height-s.height+l.yoffset-s.yoffset;function p(e,t=1){let n=0;for(let t=0;t<e.length;t++)n+=i(e.charCodeAt(t)).xadvance;return n/o*t}return{measureWidth:p,getCharByCode:i,getChar:a,xHeight:u,capHeight:d,descent:f,common:e.common}}function MM(){let e=e=>e;return e.invert=e=>e,e.copy=MM,e.invertRange=()=>{},e.type=`null`,e}var NM=4294967295,PM=4294967295;function FM(e){let t=e>>>0;return t^=t>>>16,t=Math.imul(t,2146121005),t^=t>>>15,t=Math.imul(t,2221713035),t^=t>>>16,t>>>0}function IM(e,t={}){let n=Array.from(e,e=>RM(e,`key`)),r=n.length,i=t.maxLoadFactor??.6;if(!(i>0&&i<1))throw Error(`maxLoadFactor must be between 0 and 1.`);let a=t.capacity??zM(Math.ceil(r/i));if(!Number.isSafeInteger(a)||a<1)throw Error(`capacity must be a positive power of two.`);if(a&a-1)throw Error(`capacity must be a power of two.`);let o=new Uint32Array(a);o.fill(NM);let s=a-1;for(let e of n){if(e===4294967295)throw Error(`Hash table keys must not equal the empty sentinel (0xffffffff).`);let t=FM(e)&s,n=!1;for(let r=0;r<a;r+=1){let r=o[t];if(r===4294967295||r===e){o[t]=e,n=!0;break}t=t+1&s}if(!n)throw Error(`Hash table insertion failed. Increase capacity or lower load factor.`)}return{table:o,capacity:a,size:r}}function LM(e,t){if(!Number.isSafeInteger(e)||e<1)throw Error(`capacity must be a positive integer.`);if(e&e-1)throw Error(`capacity must be a power of two.`);if(!Number.isSafeInteger(t)||t<1)throw Error(`maxTextureSize must be a positive integer.`);if(e>t*t)throw Error(`Selection hash table exceeds maximum texture capacity.`);let n=1<<Math.floor(Math.log2(t)),r=Math.min(e,n),i=e/r;if(i>t)throw Error(`Selection hash table dimensions exceed maximum texture size.`);return{width:r,height:i}}function RM(e,t){if(!Number.isSafeInteger(e)||e<0||e>PM)throw Error(t+` must be a non-negative u32.`);return e>>>0}function zM(e){let t=Math.max(1,e);return--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t+1}var BM=class{constructor(e,t,n,r){this._container=e,this._canvas=t,this._sizeSource=n,this._onPhysicalSizeChange=r??(()=>{}),this._logicalCanvasSize=void 0,this._devicePixelContentBoxSize=void 0,this._devicePixelContentBoxObserver=void 0,this._observeDevicePixelContentBox()}invalidate(){this._logicalCanvasSize=void 0,this._devicePixelContentBoxSize=void 0}finalize(){this._devicePixelContentBoxObserver&&this._devicePixelContentBoxObserver.disconnect()}getPhysicalCanvasSize(e){if(this._devicePixelContentBoxSize)return this._devicePixelContentBoxSize;let t=window.devicePixelRatio??1;return e||=this.getLogicalCanvasSize(),{width:Math.round(e.width*t),height:Math.round(e.height*t)}}getDevicePixelRatio(e){e||=this.getLogicalCanvasSize();let t=this.getPhysicalCanvasSize(e),n=e.width>0?t.width/e.width:void 0,r=e.height>0?t.height/e.height:void 0;return n!==void 0&&r!==void 0?(n+r)/2:n===void 0?r===void 0?window.devicePixelRatio??1:r:n}getLogicalCanvasSize(){if(this._logicalCanvasSize)return this._logicalCanvasSize;let e=this._sizeSource(),t=window.getComputedStyle(this._container,null),n=this._container.getBoundingClientRect(),r=parseFloat(t.paddingLeft),i=parseFloat(t.paddingRight),a=parseFloat(t.paddingTop),o=parseFloat(t.paddingBottom),s=parseFloat(t.borderLeftWidth),c=parseFloat(t.borderRightWidth),l=parseFloat(t.borderTopWidth),u=parseFloat(t.borderBottomWidth);return this._logicalCanvasSize={width:e.width??n.width-r-i-s-c,height:e.height??n.height-a-o-l-u},this._logicalCanvasSize}_observeDevicePixelContentBox(){if(typeof ResizeObserver!=`function`)return;let e=new ResizeObserver(e=>{let t=e.find(e=>e.target==this._canvas);if(!t)return;let n=t.devicePixelContentBoxSize;if(!n)return;let r=Array.isArray(n)?n[0]:n;if(!r)return;let i={width:r.inlineSize,height:r.blockSize};this._devicePixelContentBoxSize&&this._devicePixelContentBoxSize.width==i.width&&this._devicePixelContentBoxSize.height==i.height||(this._devicePixelContentBoxSize=i,this._onPhysicalSizeChange())});try{e.observe(this._canvas,{box:`device-pixel-content-box`}),this._devicePixelContentBoxObserver=e}catch{e.disconnect()}}},VM=class{constructor(e,t,n={},r){let i=t??(()=>({width:void 0,height:void 0}));this._canvasSizeHelper=void 0,this._appliedCanvasSize=void 0,this._onCanvasResize=r??(()=>{}),this._shaderCache=new Map,this.rangeTextures=new WeakMap,this.selectionTextures=new WeakMap;let a=document.createElement(`canvas`);e.appendChild(a);let o=wM(a,{antialias:!0,depth:!1,premultipliedAlpha:!0,...n});if(!o)throw Error(`Unable to initialize WebGL. Your browser or machine may not support it.`);if(!UE(o))throw Error(`Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.`);SM(o);let s=o.getExtension(`WEBGL_provoking_vertex`);s&&s.provokingVertexWEBGL(s.FIRST_VERTEX_CONVENTION_WEBGL),o.blendFunc(o.ONE,o.ONE_MINUS_SRC_ALPHA),this.canvas=a,this.gl=o,this._pickingAttachmentOptions=[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],this._pickingBufferInfo=hM(o,this._pickingAttachmentOptions),o.bindFramebuffer(o.FRAMEBUFFER,null),this._canvasSizeHelper=new BM(e,a,i,()=>{this.adjustGl()&&this._onCanvasResize()}),this.adjustGl()}invalidateSize(){this._canvasSizeHelper.invalidate(),this.adjustGl()}compileShader(e,t){O(t)&&(t=t.join(`
|
|
593
596
|
|
|
594
597
|
`));let n=this.gl,r=t.replaceAll(/ {2,}|^\s*\/\/.*$/gm,``),i=this._shaderCache.get(r);if(!i){let a=[`#version 300 es`,`precision mediump float;`,t].join(`
|
|
595
598
|
|
|
596
599
|
`);i=n.createShader(e),n.shaderSource(i,a),n.compileShader(i),this._shaderCache.set(r,i)}return i}adjustGl(){let e=this.getLogicalCanvasSize(),t=this.getPhysicalCanvasSize(e);return this._appliedCanvasSize&&this._appliedCanvasSize.logicalWidth==e.width&&this._appliedCanvasSize.logicalHeight==e.height&&this._appliedCanvasSize.physicalWidth==t.width&&this._appliedCanvasSize.physicalHeight==t.height?!1:(this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`,this.canvas.width=t.width,this.canvas.height=t.height,gM(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions),this._appliedCanvasSize={logicalWidth:e.width,logicalHeight:e.height,physicalWidth:t.width,physicalHeight:t.height},!0)}finalize(){this._canvasSizeHelper.finalize(),this.canvas.remove()}getPhysicalCanvasSize(e){return this._canvasSizeHelper.getPhysicalCanvasSize(e)}getDevicePixelRatio(e){return this._canvasSizeHelper.getDevicePixelRatio(e)}getLogicalCanvasSize(){return this._canvasSizeHelper.getLogicalCanvasSize()}createRangeTexture(e,t=!1){let n=this.rangeTextures.get(e.getScale());if(!t&&n)return;function r(e,t){return ym(t.type)?t.domain().length:t.type==`threshold`?t.domain().length+1:t.type==`quantize`||t.type==`quantile`?e??4:e}let i=e.channel;if(Jh(i)){let t=e.getScale(),i=t.props,a=t.range(),o;if(i.scheme)if(t.type==`threshold`&&a)o=XM(a,this.gl,t.domain().length,n);else{let e=P(i.scheme)?void 0:i.scheme.count;e=r(e,t),o=qM(i.scheme,this.gl,e,n,!!i.reverse)}else o=Sm(t.type)||vm(t.type)&&a.length>1?JM(a,i.interpolate,this.gl,n):XM(a,this.gl,t.domain().length,n);this.rangeTextures.set(t,o)}else{let t=e.getScale();if(t.type===`ordinal`||bm(t.type)){let e=Yh(i)?Qh(i):e=>e,r=t.range();this.rangeTextures.set(t,YM(r.map(e),this.gl,t.domain().length,n))}}}createSelectionTexture(e,t=!0){if(!og(e))throw Error(`Not a multi-point selection, cannot create texture`);let{table:n,capacity:r}=IM(e.data.keys()),{width:i,height:a}=LM(r,this.gl.getParameter(this.gl.MAX_TEXTURE_SIZE)),o=this.selectionTextures.get(e),s=this.gl,c=WM(this.gl,{auto:!1,level:0,min:s.NEAREST,mag:s.NEAREST,format:s.RED_INTEGER,internalFormat:s.R32UI,width:i,height:a},n,t?o:!1);s.bindTexture(s.TEXTURE_2D,c),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_BASE_LEVEL,0),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAX_LEVEL,0),s.bindTexture(s.TEXTURE_2D,null),this.selectionTextures.set(e,c)}};function HM(e,t=``,n=0){let r=[...t.matchAll(/ERROR:\s*\d+:(\d+)/gi)],i=new Map(r.map((e,n)=>{let i=parseInt(e[1]),a=r[n+1],o=a?a.index:t.length,s=t.substring(e.index,o);return[i-1,s]}));return e.split(`
|
|
597
600
|
`).map((e,t)=>{let r=i.get(t);return`${t+1+n}: ${e}${r?`\n\n^^^ ${r}`:``}`}).join(`
|
|
598
|
-
`)}function UM(e,t,n){let r=e.createProgram();e.attachShader(r,t),e.attachShader(r,n),e.linkProgram(r);function i(){let i,a;if(!e.getProgramParameter(r,e.LINK_STATUS)){i=e.getProgramInfoLog(r);for(let r of[t,n])e.getShaderParameter(r,e.COMPILE_STATUS)||(i=e.getShaderInfoLog(r),a=HM(e.getShaderSource(r),i,0)+`\nError compiling: ${i}`,e.deleteShader(r));e.deleteProgram(r)}if(i)return{message:i,detail:a}}return{program:r,getProgramErrors:i}}function WM(e,t,n,r){return r?kk(e,r,n,t):r=jk(e,{...t,src:n}),r}function GM(e,t,n,r){let{height:i,framebuffer:a}=t,o=new Uint8Array(4);return e.bindFramebuffer(e.FRAMEBUFFER,a),e.readPixels(n,i-r-1,1,1,e.RGBA,e.UNSIGNED_BYTE,o),e.bindFramebuffer(e.FRAMEBUFFER,null),o}function KM(e,t,n=`image/png`){let{width:r,height:i}=t,a=new Uint8Array(r*i*4);e.bindFramebuffer(e.FRAMEBUFFER,t.framebuffer),e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a),e.bindFramebuffer(e.FRAMEBUFFER,null);let o=document.createElement(`canvas`);o.width=r,o.height=i;let s=o.getContext(`2d`),c=s.createImageData(r,i);for(let e=0;e<i;e++){let t=(i-1-e)*r*4,n=e*r*4;c.data.set(a.subarray(t,t+r*4),n)}return s.putImageData(c,0,0),o.toDataURL(n)}function qM(e,t,n,r,i=!1){let a=P(e)?e:e.name,o=!P(e)&&e.extent||[0,1];if(n===void 0&&!P(e)&&(n=e.count),a){let e=Nm(a);if(pt(e)){let a=ZM(e,{extent:o,count:n,reverse:i});return WM(t,{minMag:t.LINEAR,format:t.RGB,height:1,wrap:t.CLAMP_TO_EDGE},a,r)}else if(
|
|
601
|
+
`)}function UM(e,t,n){let r=e.createProgram();e.attachShader(r,t),e.attachShader(r,n),e.linkProgram(r);function i(){let i,a;if(!e.getProgramParameter(r,e.LINK_STATUS)){i=e.getProgramInfoLog(r);for(let r of[t,n])e.getShaderParameter(r,e.COMPILE_STATUS)||(i=e.getShaderInfoLog(r),a=HM(e.getShaderSource(r),i,0)+`\nError compiling: ${i}`,e.deleteShader(r));e.deleteProgram(r)}if(i)return{message:i,detail:a}}return{program:r,getProgramErrors:i}}function WM(e,t,n,r){return r?kk(e,r,n,t):r=jk(e,{...t,src:n}),r}function GM(e,t,n,r){let{height:i,framebuffer:a}=t,o=new Uint8Array(4);return e.bindFramebuffer(e.FRAMEBUFFER,a),e.readPixels(n,i-r-1,1,1,e.RGBA,e.UNSIGNED_BYTE,o),e.bindFramebuffer(e.FRAMEBUFFER,null),o}function KM(e,t,n=`image/png`){let{width:r,height:i}=t,a=new Uint8Array(r*i*4);e.bindFramebuffer(e.FRAMEBUFFER,t.framebuffer),e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a),e.bindFramebuffer(e.FRAMEBUFFER,null);let o=document.createElement(`canvas`);o.width=r,o.height=i;let s=o.getContext(`2d`),c=s.createImageData(r,i);for(let e=0;e<i;e++){let t=(i-1-e)*r*4,n=e*r*4;c.data.set(a.subarray(t,t+r*4),n)}return s.putImageData(c,0,0),o.toDataURL(n)}function qM(e,t,n,r,i=!1){let a=P(e)?e:e.name,o=!P(e)&&e.extent||[0,1];if(n===void 0&&!P(e)&&(n=e.count),a){let e=Nm(a);if(pt(e)){let a=ZM(e,{extent:o,count:n,reverse:i});return WM(t,{minMag:t.LINEAR,format:t.RGB,height:1,wrap:t.CLAMP_TO_EDGE},a,r)}else if(O(e))return XM(i?Array.from(e).reverse():e,t,n,r);else throw Error(`Unknown scheme: `+a)}}function JM(e,t=`rgb`,n,r){let i=ZM(wm(e,P(t)?t:t.type,P(t)?void 0:t.gamma));return WM(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},i,r)}function YM(e,t,n,r){let i=Math.max(e.length,n||0),a=new Float32Array(i);for(let t=0;t<i;t++)a[t]=e[t%e.length];return WM(t,{minMag:t.NEAREST,format:t.RED,internalFormat:t.R32F,height:1},a,r)}function XM(e,t,n,r){let i=QM(e,n);return WM(t,{minMag:t.NEAREST,format:t.RGB,height:1},i,r)}function ZM(e,{extent:t=[0,1],reverse:n=!1,count:r=256}={}){let i=t[0],a=Zl(t)-i,o=Vn(r).map(e=>e/(r-1)).map(e=>i+e/a).map(e);return n&&o.reverse(),QM(o)}function QM(e,t){let n=Math.max(e.length,t||0),r=new Uint8Array(n*3);for(let t=0;t<n;t++){let n=e[t%e.length],i=Cu(n);if(!i)throw Error(`Invalid color "${n}" in the scheme ${JSON.stringify(e)}!`);let a=i.rgb();r[t*3+0]=a.r,r[t*3+1]=a.g,r[t*3+2]=a.b}return r}function $M(e){let t=Cu(e).rgb();return[t.r,t.g,t.b].map(e=>e/255)}var eN=`attr_`,tN=`uDomain_`,nN=`range_`,rN=`accessor_`,iN=`scale_`,aN=`getScaled_`,oN=`uRangeTexture_`,sN=`uParam_`,cN=`checkSelection_`,lN=3402823466e29;function uN(e){let t=e.match(/^(?:(\w+)-)?(\w+)$/);if(!t)throw Error(`Not a scale type: `+e);return{family:t[1]||`continuous`,transform:t[2]}}function dN(e,t){return`${rN}${e}_${t}`}function fN(e,t,n){let r;if(Yh(e))r=yN(Qh(e)(n));else if(P(n))if(Jh(e))r=SN(n);else throw Error(`String values are not supported on the "${e}" channel: ${n}`);else if(St(n))r=yN(n?1:0);else if(n===null)if(Jh(e))r=yN([0,0,0]);else throw Error(`null value is not supported on the "${e}" chanel.`);else r=yN(n);let i=dN(e,t);return{channel:e,accessorGlsl:`
|
|
599
602
|
${r.type} ${i}() {
|
|
600
603
|
// Constant value
|
|
601
604
|
return ${r};
|
|
@@ -617,7 +620,7 @@ ${v.map(e=>` ${e}\n`).join(``)}
|
|
|
617
620
|
${IN(r,i)}
|
|
618
621
|
}
|
|
619
622
|
|
|
620
|
-
#define ${e}_DEFINED`}function vN(e){if(!N(e))throw Error(`Not a number: ${e}`);if(e==1/0)return``+lN;if(e==-1/0)return``+-lN;{let t=`${e}`;return/^(-)?\d+$/.test(t)&&(t+=`.0`),t}}function yN(e){typeof e==`number`&&(e=[e]);let t=e.length;if(t<1||t>4)throw Error(`Invalid number of components: `+t);let n=bN(t),r=`${n}(${e.map(vN).join(`, `)})`;return Object.assign(r,{type:n,numComponents:t})}function bN(e){switch(e){case 1:return`float`;case 2:return`vec2`;case 3:return`vec3`;case 4:return`vec4`;default:throw Error(`Invalid number of components: `+e)}}function xN(e){return Jh(e)?`vec3`:e==`uniqueId`?`uint`:`float`}function SN(e){return yN($M(e))}function CN(e){return yN([e[0],Zl(e)])}function wN(e,...t){let n=[];for(let e of t)N(e)?n.push(vN(e)):
|
|
623
|
+
#define ${e}_DEFINED`}function vN(e){if(!N(e))throw Error(`Not a number: ${e}`);if(e==1/0)return``+lN;if(e==-1/0)return``+-lN;{let t=`${e}`;return/^(-)?\d+$/.test(t)&&(t+=`.0`),t}}function yN(e){typeof e==`number`&&(e=[e]);let t=e.length;if(t<1||t>4)throw Error(`Invalid number of components: `+t);let n=bN(t),r=`${n}(${e.map(vN).join(`, `)})`;return Object.assign(r,{type:n,numComponents:t})}function bN(e){switch(e){case 1:return`float`;case 2:return`vec2`;case 3:return`vec3`;case 4:return`vec4`;default:throw Error(`Invalid number of components: `+e)}}function xN(e){return Jh(e)?`vec3`:e==`uniqueId`?`uint`:`float`}function SN(e){return yN($M(e))}function CN(e){return yN([e[0],Zl(e)])}function wN(e,...t){let n=[];for(let e of t)N(e)?n.push(vN(e)):O(e)?n.push(yN(e)):n.push(e);return`${e}(${n.join(`, `)})`}function TN(e,t){let n=e&&ym(e.type),r=e&&EN(e.type),i=r&&DN(e.domain()),a=i?{attributeType:`uvec2`,arrayConstructor:Uint32Array}:r?{attributeType:`uint`,arrayConstructor:Uint32Array}:n?{attributeType:`uint`,arrayConstructor:Uint16Array}:t==`uniqueId`?{attributeType:`uint`,arrayConstructor:Uint32Array}:{attributeType:`float`,arrayConstructor:Float32Array};return Object.assign(a,{numComponents:+(a.attributeType.match(/^(?:u)?vec([234])$/)?.[1]??1),discrete:n,hp:r,largeHp:i})}function EN(e){return e==`index`||e==`locus`}function DN(e){return e[1]>2**32}var ON=2**12;ON-1;function kN(e,t=[]){let n=e%ON;return t[0]=(e-n)/ON,t[1]=n,t}function AN(e){let t=e%ON;return[e-t,t]}function jN(e){return[...AN(e[0]),e[1]-e[0]]}function MN(e){let t=new hn([],JSON.stringify);for(let[n,r]of Object.entries(e)){let e=r.channelDef;if(kh(e)){let i=[e.field,r.scale?(vm(r.scale.type)||bm(r.scale.type))??!1:!1];t.set(i,[...t.get(i)??[],n])}}return t}function NN(e){return eN+Xl(e).toSorted().join(`_`)}function PN(e){return e[0].toUpperCase()+e.slice(1)}var FN=(e,t)=>Sm(e.type)||vm(e.type)&&Jh(t)?[0,1]:e.range?e.range():void 0;function IN(e,t){if(e.length!=t.length)throw Error(`Unequal array lengths`);let n=e.length;if(n==0)return``;if(n==1&&e[0]==null)return t[0];let r=[];for(let i=0;i<n;i++){let a=e[i],o=i==0?`if (${a})`:a==null&&i==n-1?`else`:`else if (${a})`;r.push(` ${o} {
|
|
621
624
|
${t[i]}
|
|
622
625
|
}`)}return r.join(`
|
|
623
626
|
`)}function LN(){let e=0,t,n=0,r=new Map,i=i=>i===t?n:(n=r.get(i),n===void 0&&(n=e++,r.set(i,n)),t=i,n);return i.addAll=e=>{for(let t of e)i(t)},i.invert=e=>{for(let t of r.entries())if(t[1]==e)return t[0]},i.domain=()=>[...r.keys()],i}function RN(e,t=0,n=1){return Math.max(t,Math.min(n,e))}var zN=2**31-1,BN=-(2**31);function VN(e,t,n,r=n,i=0,a=i){if(a<=i||t[1]<=t[0])return;let o=Array(e);o.fill(zN);let s=Array(e);s.fill(0);let c=t[0],l=(t[1]-t[0])/e,u=(t,n)=>{let r=(t-c)/l,i=Math.floor(r);return RN(n&&i==r?i-1:i,0,e-1)},d=BN,f=-1/0,p=!1,m=(e,t,n=[0,0])=>{let r=u(e,!1),i=u(t,!0),a=o[r],c=Math.max(s[i],a);return n[0]=a,n[1]=c,n};for(let e=i;e<a;){let t=e,i=n(e),c=r(e);for(e+=1;e<a&&n(e)===i&&r(e)===c;)e+=1;if(t>d)d=t;else{p=!0;break}if(i<f||c<i){p=!0;break}f=i;let l=u(i,!1),m=u(c,!0);for(let n=l;n<=m;n++)o[n]>t&&(o[n]=t),s[n]<e&&(s[n]=e)}if(p)return;for(let e=1;e<s.length;e++)s[e]<s[e-1]&&(s[e]=s[e-1]);let h=!0;for(let e=o.length-1;e>0;e--)h&&o[e]==zN?(o[e]=s[e],h=!1):o[e-1]>o[e]&&(o[e-1]=o[e]);return m}var HN=class{constructor({encoders:e,numVertices:t=void 0,attributes:n=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([e,t])=>n.includes(e)&&t&&!t.constant));let r=[...MN(e).entries()].filter(([e,t])=>e[1]&&t.length>1).map(([e,t])=>t);this.allocatedVertices=t,this.variableBuilder=new kM(t),this.attributeNames={};for(let[e,t]of Object.entries(this.variableEncoders)){let n=Th(t);if(!n)continue;let i=r.find(t=>t.find(t=>t==e)),a=n.asNumberAccessor(),o=t.scale,{largeHp:s,arrayConstructor:c,discrete:l,numComponents:u}=TN(o,e),d=[0,0],f;if(o&&l)if(`props`in o&&o.props.domainIndexer)f=o.props.domainIndexer;else if(`domain`in o)f=LN(),f.addAll(o.domain());else throw Error(`Missing domain indexer for discrete scale.`);let p=f?e=>f(n(e)):s?e=>kN(a(e),d):a,m=NN(i??e);for(let t of i??[e])this.attributeNames[t]=m;i&&e!=i[0]||this.variableBuilder.addConverter(m,{f:p,numComponents:u,arrayReference:s?d:void 0,targetArrayType:c})}let i=this.variableEncoders.x,a=this.variableEncoders.x2,o=this.encoders.x?.channelDef,s=i?.scale;if(o?.buildIndex&&i&&s&&vm(s.type)){let e=this.attributeNames.x;if(!e)throw Error(`Missing x attribute for x indexing.`);let t=a?.scale&&vm(a.scale.type)?this.attributeNames.x2??e:e;this.xIndexConfig={domain:[s.domain()[0],s.domain()[1]],xAttributeName:e,x2AttributeName:t}}else this.xIndexConfig=void 0;this.lastOffset=0,this.rangeMap=new hn([],JSON.stringify)}registerBatch(e){let t=this.lastOffset,n=this.variableBuilder.vertexCount,r=n-t;r&&this.rangeMap.set(e,{offset:t,count:r,xIndex:this.createXIndex(t,n)}),this.lastOffset=n}addBatches(e){for(let[t,n]of e)this.addBatch(t,n)}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.pushFromDatum(n)}this.registerBatch(e)}createXIndex(e,t){let n=this.xIndexConfig;if(!n)return;let r=e=>{let{data:t,numComponents:n}=this.variableBuilder.arrays[e];return n==2?e=>{let r=e*n;return t[r]*ON+t[r+1]}:e=>t[e*n]},i=r(n.xAttributeName),a=n.x2AttributeName==n.xAttributeName?i:r(n.x2AttributeName);return VN(50,n.domain,i,a,e,t)}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}},UN=class extends HN{constructor({encoders:e,attributes:t,numItems:n}){super({encoders:e,attributes:t,numVertices:n*6}),this.variableBuilder.configure();let r=this.variableBuilder.pushAll;this.pushAllSixTimes=n>500?Function(`pushAll`,`return function unrolledPushAllSixTimes() {
|
|
@@ -671,7 +674,7 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
|
|
|
671
674
|
#pragma markUniforms
|
|
672
675
|
};`,tF={left:-1,center:0,right:1},nF={top:-1,middle:0,bottom:1,alphabetic:1,baseline:1},rF=class extends vP{constructor(e){super(e),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(let t of Rh)this.properties.fitToBand?bP(e,t):xP(e,t);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(QP,$P,[eF])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let 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,e=>!!e),this.registerMarkUniformValue(`uFlushY`,e.flushY,e=>!!e),this.registerMarkUniformValue(`uSqueeze`,e.squeeze,e=>!!e),kj(this.markUniformInfo,{uAlign:[tF[e.align],nF[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(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getData(),n=this.encoding,r=this.encoders.text,i=0,a=`format`in n.text?sr(n.text.format):e=>e;for(let e of t){let t=a(r(e)),n=P(t)?t:t===null?``:``+t;i+=n&&n.length||0}let o=new qN({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(i,this.properties.minBufferSize||1024)});o.addBatches(e.facetBatches);let s=o.toArrays();this.rangeMap.migrateEntries(s.rangeMap),this.updateBufferInfo(s)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>{jj(this.programInfo,{uTexture:this.font.texture})}),t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>Pj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>Rj(t,this.vertexArrayInfo,t.TRIANGLES,n,e),e)}};function iF(e,t,{spacing:n,devicePixelRatio:r,offset:i,reverse:a}={}){n||=0,i||=0;let o=0,s=0;for(let t of e)o+=uF(t.px)+(lF(t)?0:n),s+=uF(t.grow);o-=n;let c=Math.max(0,t-o),l=r===void 0?e=>e:e=>Math.round(e*r)/r,u=[],d=[],f=e=>{let t=u.length;if(!t)return;let r=(e?n:0)*(a?-1:1);p-=r;for(let e=0;e<t;e++)d.push({location:p+(e+1)/(t+1)*r,size:0});p+=r,u.length=0},p=a?Math.max(t,o):0+i;if(e.length==1&&lF(e[0]))return[{location:p,size:0}];for(let t=0;t<e.length;t++){let r=e[t];if(lF(r))u.push(r);else{f(d.length>0);let e=uF(r.px)+(s?uF(r.grow)/s*c:0);a&&(p-=e),d.push({location:l(p),size:l(e)}),a?p-=n:p+=e+n}}return p+=a?n:-n,f(!1),d}function aF(e){let t=0,n=0;for(let r of e)t=Math.max(t,r.px??0),n=Math.max(n,r.grow??0);return{px:t,grow:n}}var oF=class e{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(t,n){return new e({px:(this.width.px??0)+t,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})}isGrowing(){return!!(this.width.grow||this.height.grow)}},sF=Object.freeze({px:0,grow:0}),cF=new oF(sF,sF);function lF(e){return!e.px&&!e.grow}function uF(e){return e||0}function dF(e){return e&&(N(e.px)||N(e.grow))}function fF(e){if(lR(e))throw Error(`parseSizeDef does not accept step-based sizes.`);if(dF(e))return e;if(N(e))return{px:e,grow:0};if(e===`container`||!e)return{px:0,grow:1};throw Error(`Invalid sizeDef: ${e}`)}var pF=class e{constructor(e,t,n,r){this.top=e||0,this.right=t||0,this.bottom=n||0,this.left=r||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(t){return t<=0?this:new e(this.top+t,this.right+t,this.bottom+t,this.left+t)}add(t){return new e(this.top+t.top,this.right+t.right,this.bottom+t.bottom,this.left+t.left)}subtract(t){return new e(this.top-t.top,this.right-t.right,this.bottom-t.bottom,this.left-t.left)}union(t){return new e(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 e(0,this.right,0,this.left)}getVertical(){return new e(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):mF}static createFromRecord(t){return new e(t.top,t.right,t.bottom,t.left)}static zero(){return mF}static createUniformPadding(t){return new e(t,t,t,t)}},mF=pF.createUniformPadding(0);Object.freeze(mF);var hF=/^([A-Za-z]+:)?\/\//;function gF(e,t){if(t&&hF.test(t))return t;let n=typeof e==`function`?e():e;if(!n)return t;if(!t)return n;if(/[#?]/.test(n))throw Error(`Cannot append to a url with query or hash. Append: ${t}, base: ${n}`);return vF(n)+t}function _F(e,t,n=yF()){let r=typeof e==`function`?e():e;if(!t)return r;try{if(r){let e=n?new URL(r,n).href:new URL(r).href;return new URL(t,e).href}else if(n)return new URL(t,n).href}catch{}return gF(r,t)}function vF(e){let t=e.replace(/[^/]*$/,``);return t===``?void 0:t.endsWith(`://`)?e+`/`:t}function yF(){if(typeof document<`u`&&document.baseURI)return document.baseURI;if(typeof window<`u`&&window.location?.href)return window.location.href}var bF=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,t){let n=this.length++;for(;n>0;){let e=n-1>>1,r=this.values[e];if(t>=r)break;this.ids[n]=this.ids[e],this.values[n]=r,n=e}this.ids[n]=e,this.values[n]=t}pop(){if(this.length===0)return;let e=this.ids,t=this.values,n=e[0],r=--this.length;if(r>0){let n=e[r],i=t[r],a=0,o=r>>1;for(;a<o;){let n=(a<<1)+1,o=n+1,s=n+(o<r&+(t[o]<t[n]));if(t[s]>=i)break;e[a]=e[s],t[a]=t[s],a=s}e[a]=n,t[a]=i}return n}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}},xF=Symbol(`runtimeNode`),SF=1e6;function CF(e){return e?(t,n)=>{e.addDisposer(t,n)}:()=>void 0}function wF(e,t){let n={id:e.id,name:e.name,kind:e.kind,get(){return e.value},subscribe(t){return e.listeners.add(t),()=>{e.listeners.delete(t)}}};return Object.defineProperty(n,xF,{enumerable:!1,configurable:!1,writable:!1,value:e}),t?Object.assign(n,{set(e){t(e)}}):n}function TF(e){let t=e[xF];if(!t)throw Error(`ParamRef is not bound to this graph runtime. Expected runtime-created ref.`);return t}function EF(e){return typeof e.rank==`number`?e.rank:TF(e).rank}function DF(e){for(let t of e)t()}var OF=class{#e=1;#t=1;#n=0;#r=!1;#i=!1;#a=new Set;#o=new Set;#s=new bF;#c=new bF;#l=new Set;#u;constructor(e={}){this.#u=CF(e.lifecycleRegistry)}createWritable(e,t,n,r,i={}){let a=`n`+ this.#e++,o=i.notify??!0,s={id:a,name:t,kind:n,value:r,rank:0,disposed:!1,listeners:new Set,subscribe(e){return s.listeners.add(e),()=>{s.listeners.delete(e)}}};return this.#u(e,()=>{s.disposed=!0,s.listeners.clear()}),wF(s,e=>{if(s.disposed)throw Error(`Cannot set disposed parameter "`+t+`" (`+a+`).`);e!==s.value&&(s.value=e,o&&(DF(s.listeners),this.#m()))})}computed(e,t,n,r){let i=n.reduce((e,t)=>Math.max(e,EF(t)),0),a={id:`n`+ this.#e++,name:t,kind:`derived`,rank:i+1,value:r(),disposed:!1,listeners:new Set,fn:r,subscribe(e){return a.listeners.add(e),()=>{a.listeners.delete(e)}}},o=()=>{a.disposed||this.#d(a)},s=n.map(e=>e.subscribe(o));return this.#u(e,()=>{a.disposed||(a.disposed=!0,s.forEach(e=>e()),a.listeners.clear(),this.#a.delete(a))}),wF(a)}effect(e,t,n){let r=t.reduce((e,t)=>Math.max(e,EF(t)),0),i={id:`n`+ this.#e++,rank:r+1,disposed:!1,fn:n},a=()=>{i.disposed||this.#f(i)},o=t.map(e=>e.subscribe(a)),s=()=>{i.disposed||(i.disposed=!0,o.forEach(e=>e()),this.#o.delete(i))};return this.#u(e,s),s}runInTransaction(e){this.#n+=1;try{return e()}finally{--this.#n,this.#n===0&&this.#m()}}flushNow(){if(!(this.#n>0||this.#i)){this.#r=!1,this.#i=!0;try{let e=!0;for(;e;){for(e=!1;this.#s.length>0;){e=!0;let t=this.#s.pop();if(this.#a.delete(t),t.disposed)continue;let n=t.value,r=t.fn();r!==n&&(t.value=r,DF(t.listeners))}for(;this.#c.length>0;){e=!0;let t=this.#c.pop();this.#o.delete(t),!t.disposed&&t.fn()}}}finally{this.#i=!1,this.#g()}}}whenPropagated(e={}){if(this.#h())return Promise.resolve();let{signal:t,timeoutMs:n}=e;return t?.aborted?Promise.reject(Error(`whenPropagated aborted`)):new Promise((e,r)=>{let i={resolve:e,reject:r};t&&(i.abortHandler=()=>{this.#l.delete(i),r(Error(`whenPropagated aborted`))},t.addEventListener(`abort`,i.abortHandler,{once:!0})),n!=null&&(i.timeoutId=setTimeout(()=>{this.#l.delete(i),i.abortHandler&&t?.removeEventListener(`abort`,i.abortHandler),r(Error(`whenPropagated timeout after `+n+` ms`))},n)),this.#l.add(i)})}#d(e){this.#a.has(e)||(this.#a.add(e),this.#s.push(e,this.#p(e.rank)),this.#m())}#f(e){this.#o.has(e)||(this.#o.add(e),this.#c.push(e,this.#p(e.rank)),this.#m())}#p(e){let t=this.#t%SF;return this.#t+=1,e*SF+t}#m(){this.#n>0||this.#r||this.#i||(this.#r=!0,queueMicrotask(()=>{this.flushNow()}))}#h(){return this.#n===0&&!this.#r&&!this.#i&&this.#s.length===0&&this.#c.length===0&&this.#a.size===0&&this.#o.size===0}#g(){if(this.#h()){for(let e of this.#l)e.timeoutId&&clearTimeout(e.timeoutId),e.resolve();this.#l.clear()}}},kF=class{#e=1;#t=new Map;createOwner(e,t){let n=e+`:`+t+`:`+ this.#e++;return this.#t.set(n,new Set),n}addDisposer(e,t){let n=this.#t.get(e);if(!n)throw Error(`Unknown owner: `+e);n.add(t)}disposeOwner(e){let t=this.#t.get(e);if(t){for(let e of t)e();t.clear(),this.#t.delete(e)}}},AF=class{#e=1;#t=new Map;createRootScope(e){let t=`scope:`+ this.#e++;return this.#t.set(t,{params:new Map,ownerId:e}),t}createChildScope(e,t){if(!this.#t.has(t))throw Error(`Unknown parent scope: `+t);let n=`scope:`+ this.#e++;return this.#t.set(n,{parentScope:t,params:new Map,ownerId:e}),n}getOwnerId(e){let t=this.#t.get(e);if(!t)throw Error(`Unknown scope: `+e);return t.ownerId}clearScope(e){let t=this.#t.get(e);if(!t)throw Error(`Unknown scope: `+e);t.params.clear()}register(e,t,n){gg(t);let r=this.#t.get(e);if(!r)throw Error(`Unknown scope: `+e);if(r.params.has(t))throw Error(`Parameter "`+t+`" already exists in scope `+e);return r.params.set(t,n),n}resolve(e,t){gg(t);let n=e;for(;n;){let e=this.#t.get(n);if(!e)throw Error(`Unknown scope: `+n);let r=e.params.get(t);if(r)return r;n=e.parentScope}}},jF=`RawCode`,MF=`Literal`,NF=`Property`,PF=`Identifier`,FF=`ArrayExpression`,IF=`BinaryExpression`,LF=`CallExpression`,RF=`ConditionalExpression`,zF=`LogicalExpression`,BF=`MemberExpression`,VF=`ObjectExpression`,HF=`UnaryExpression`;function UF(e){this.type=e}UF.prototype.visit=function(e){let t,n,r;if(e(this))return 1;for(t=WF(this),n=0,r=t.length;n<r;++n)if(t[n].visit(e))return 1};function WF(e){switch(e.type){case FF:return e.elements;case IF:case zF:return[e.left,e.right];case LF:return[e.callee].concat(e.arguments);case RF:return[e.test,e.consequent,e.alternate];case BF:return[e.object,e.property];case VF:return e.properties;case NF:return[e.key,e.value];case HF:return[e.argument];case PF:case MF:case jF:default:return[]}}var GF,Y,X,KF,Z,qF=1,JF=2,YF=3,XF=4,ZF=5,QF=6,$F=7,eI=8,tI=9;GF={},GF[qF]=`Boolean`,GF[JF]=`<end>`,GF[YF]=`Identifier`,GF[XF]=`Keyword`,GF[ZF]=`Null`,GF[QF]=`Numeric`,GF[$F]=`Punctuator`,GF[eI]=`String`,GF[tI]=`RegularExpression`;var nI=`ArrayExpression`,rI=`BinaryExpression`,iI=`CallExpression`,aI=`ConditionalExpression`,oI=`Identifier`,sI=`Literal`,cI=`LogicalExpression`,lI=`MemberExpression`,uI=`ObjectExpression`,dI=`Property`,fI=`UnaryExpression`,pI=`Unexpected token %0`,mI=`Unexpected number`,hI=`Unexpected string`,gI=`Unexpected identifier`,_I=`Unexpected reserved word`,vI=`Unexpected end of input`,yI=`Invalid regular expression`,bI=`Invalid regular expression: missing /`,xI=`Octal literals are not allowed in strict mode.`,SI=`Duplicate data property in object literal not allowed in strict mode`,CI=`ILLEGAL`,wI=`Disabled.`,TI=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]`),EI=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 DI(e,t){if(!e)throw Error(`ASSERT: `+t)}function OI(e){return e>=48&&e<=57}function kI(e){return`0123456789abcdefABCDEF`.includes(e)}function AI(e){return`01234567`.includes(e)}function jI(e){return e===32||e===9||e===11||e===12||e===160||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(e)}function MI(e){return e===10||e===13||e===8232||e===8233}function NI(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&TI.test(String.fromCharCode(e))}function PI(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&EI.test(String.fromCharCode(e))}var FI={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 II(){for(;X<KF;){let e=Y.charCodeAt(X);if(jI(e)||MI(e))++X;else break}}function LI(e){var t,n,r,i=0;for(n=e===`u`?4:2,t=0;t<n;++t)X<KF&&kI(Y[X])?(r=Y[X++],i=i*16+`0123456789abcdef`.indexOf(r.toLowerCase())):Q({},pI,CI);return String.fromCharCode(i)}function RI(){var e=Y[X],t=0,n,r;for(e===`}`&&Q({},pI,CI);X<KF&&(e=Y[X++],kI(e));)t=t*16+`0123456789abcdef`.indexOf(e.toLowerCase());return(t>1114111||e!==`}`)&&Q({},pI,CI),t<=65535?String.fromCharCode(t):(n=(t-65536>>10)+55296,r=(t-65536&1023)+56320,String.fromCharCode(n,r))}function zI(){var e=Y.charCodeAt(X++),t=String.fromCharCode(e);for(e===92&&(Y.charCodeAt(X)!==117&&Q({},pI,CI),++X,e=LI(`u`),(!e||e===`\\`||!NI(e.charCodeAt(0)))&&Q({},pI,CI),t=e);X<KF&&(e=Y.charCodeAt(X),PI(e));)++X,t+=String.fromCharCode(e),e===92&&(t=t.substr(0,t.length-1),Y.charCodeAt(X)!==117&&Q({},pI,CI),++X,e=LI(`u`),(!e||e===`\\`||!PI(e.charCodeAt(0)))&&Q({},pI,CI),t+=e);return t}function BI(){for(var e=X++,t;X<KF;){if(t=Y.charCodeAt(X),t===92)return X=e,zI();if(PI(t))++X;else break}return Y.slice(e,X)}function VI(){var e=X,t=Y.charCodeAt(X)===92?zI():BI();return{type:t.length===1?YF:FI.hasOwnProperty(t)?XF:t===`null`?ZF:t===`true`||t===`false`?qF:YF,value:t,start:e,end:X}}function HI(){var e=X,t=Y.charCodeAt(X),n,r=Y[X],i,a,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++X,{type:$F,value:String.fromCharCode(t),start:e,end:X};default:if(n=Y.charCodeAt(X+1),n===61)switch(t){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return X+=2,{type:$F,value:String.fromCharCode(t)+String.fromCharCode(n),start:e,end:X};case 33:case 61:return X+=2,Y.charCodeAt(X)===61&&++X,{type:$F,value:Y.slice(e,X),start:e,end:X}}}if(o=Y.substr(X,4),o===`>>>=`)return X+=4,{type:$F,value:o,start:e,end:X};if(a=o.substr(0,3),a===`>>>`||a===`<<=`||a===`>>=`)return X+=3,{type:$F,value:a,start:e,end:X};if(i=a.substr(0,2),r===i[1]&&`+-<>&|`.includes(r)||i===`=>`)return X+=2,{type:$F,value:i,start:e,end:X};if(i===`//`&&Q({},pI,CI),`<>=!+-*%&|^/`.includes(r))return++X,{type:$F,value:r,start:e,end:X};Q({},pI,CI)}function UI(e){let t=``;for(;X<KF&&kI(Y[X]);)t+=Y[X++];return t.length===0&&Q({},pI,CI),NI(Y.charCodeAt(X))&&Q({},pI,CI),{type:QF,value:parseInt(`0x`+t,16),start:e,end:X}}function WI(e){let t=`0`+Y[X++];for(;X<KF&&AI(Y[X]);)t+=Y[X++];return(NI(Y.charCodeAt(X))||OI(Y.charCodeAt(X)))&&Q({},pI,CI),{type:QF,value:parseInt(t,8),octal:!0,start:e,end:X}}function GI(){var e,t,n=Y[X];if(DI(OI(n.charCodeAt(0))||n===`.`,`Numeric literal must start with a decimal digit or a decimal point`),t=X,e=``,n!==`.`){if(e=Y[X++],n=Y[X],e===`0`){if(n===`x`||n===`X`)return++X,UI(t);if(AI(n))return WI(t);n&&OI(n.charCodeAt(0))&&Q({},pI,CI)}for(;OI(Y.charCodeAt(X));)e+=Y[X++];n=Y[X]}if(n===`.`){for(e+=Y[X++];OI(Y.charCodeAt(X));)e+=Y[X++];n=Y[X]}if(n===`e`||n===`E`)if(e+=Y[X++],n=Y[X],(n===`+`||n===`-`)&&(e+=Y[X++]),OI(Y.charCodeAt(X)))for(;OI(Y.charCodeAt(X));)e+=Y[X++];else Q({},pI,CI);return NI(Y.charCodeAt(X))&&Q({},pI,CI),{type:QF,value:parseFloat(e),start:t,end:X}}function KI(){var e=``,t,n,r,i,a=!1;for(t=Y[X],DI(t===`'`||t===`"`,`String literal must starts with a quote`),n=X,++X;X<KF;)if(r=Y[X++],r===t){t=``;break}else if(r===`\\`)if(r=Y[X++],!r||!MI(r.charCodeAt(0)))switch(r){case`u`:case`x`:Y[X]===`{`?(++X,e+=RI()):e+=LI(r);break;case`n`:e+=`
|
|
673
676
|
`;break;case`r`:e+=`\r`;break;case`t`:e+=` `;break;case`b`:e+=`\b`;break;case`f`:e+=`\f`;break;case`v`:e+=`\v`;break;default:AI(r)?(i=`01234567`.indexOf(r),i!==0&&(a=!0),X<KF&&AI(Y[X])&&(a=!0,i=i*8+`01234567`.indexOf(Y[X++]),`0123`.includes(r)&&X<KF&&AI(Y[X])&&(i=i*8+`01234567`.indexOf(Y[X++]))),e+=String.fromCharCode(i)):e+=r;break}else r===`\r`&&Y[X]===`
|
|
674
|
-
`&&++X;else if(MI(r.charCodeAt(0)))break;else e+=r;return t!==``&&Q({},pI,CI),{type:eI,value:e,octal:a,start:n,end:X}}function qI(e,t){let n=e;t.includes(`u`)&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(e,t)=>{if(parseInt(t,16)<=1114111)return`x`;Q({},yI)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,`x`));try{new RegExp(n)}catch{Q({},yI)}try{return new RegExp(e,t)}catch{return null}}function JI(){var e=Y[X],t,n,r,i;for(DI(e===`/`,`Regular expression literal must start with a slash`),t=Y[X++],n=!1,r=!1;X<KF;)if(e=Y[X++],t+=e,e===`\\`)e=Y[X++],MI(e.charCodeAt(0))&&Q({},bI),t+=e;else if(MI(e.charCodeAt(0)))Q({},bI);else if(n)e===`]`&&(n=!1);else if(e===`/`){r=!0;break}else e===`[`&&(n=!0);return r||Q({},bI),i=t.substr(1,t.length-2),{value:i,literal:t}}function YI(){for(var e,t=``,n=``;X<KF&&(e=Y[X],PI(e.charCodeAt(0)));)++X,e===`\\`&&X<KF?Q({},pI,CI):(n+=e,t+=e);return n.search(/[^gimuy]/g)>=0&&Q({},yI,n),{value:n,literal:t}}function XI(){var e,t,n,r;return Z=null,II(),e=X,t=JI(),n=YI(),r=qI(t.value,n.value),{literal:t.literal+n.literal,value:r,regex:{pattern:t.value,flags:n.value},start:e,end:X}}function ZI(e){return e.type===YF||e.type===XF||e.type===qF||e.type===ZF}function QI(){if(II(),X>=KF)return{type:JF,start:X,end:X};let e=Y.charCodeAt(X);return NI(e)?VI():e===40||e===41||e===59?HI():e===39||e===34?KI():e===46?OI(Y.charCodeAt(X+1))?GI():HI():OI(e)?GI():HI()}function $I(){let e=Z;return X=e.end,Z=QI(),X=e.end,e}function eL(){let e=X;Z=QI(),X=e}function tL(e){let t=new UF(nI);return t.elements=e,t}function nL(e,t,n){let r=new UF(e===`||`||e===`&&`?cI:rI);return r.operator=e,r.left=t,r.right=n,r}function rL(e,t){let n=new UF(iI);return n.callee=e,n.arguments=t,n}function iL(e,t,n){let r=new UF(aI);return r.test=e,r.consequent=t,r.alternate=n,r}function aL(e){let t=new UF(oI);return t.name=e,t}function oL(e){let t=new UF(sI);return t.value=e.value,t.raw=Y.slice(e.start,e.end),e.regex&&(t.raw===`//`&&(t.raw=`/(?:)/`),t.regex=e.regex),t}function sL(e,t,n){let r=new UF(lI);return r.computed=e===`[`,r.object=t,r.property=n,r.computed||(n.member=!0),r}function cL(e){let t=new UF(uI);return t.properties=e,t}function lL(e,t,n){let r=new UF(dI);return r.key=t,r.value=n,r.kind=e,r}function uL(e,t){let n=new UF(fI);return n.operator=e,n.argument=t,n.prefix=!0,n}function Q(e,t){var n,r=Array.prototype.slice.call(arguments,2),i=t.replace(/%(\d)/g,(e,t)=>(DI(t<r.length,`Message reference must be in range`),r[t]));throw n=Error(i),n.index=X,n.description=i,n}function dL(e){e.type===JF&&Q(e,vI),e.type===QF&&Q(e,mI),e.type===eI&&Q(e,hI),e.type===YF&&Q(e,gI),e.type===XF&&Q(e,_I),Q(e,pI,e.value)}function fL(e){let t=$I();(t.type!==$F||t.value!==e)&&dL(t)}function $(e){return Z.type===$F&&Z.value===e}function pL(e){return Z.type===XF&&Z.value===e}function mL(){let e=[];for(X=Z.start,fL(`[`);!$(`]`);)$(`,`)?($I(),e.push(null)):(e.push(AL()),$(`]`)||fL(`,`));return $I(),tL(e)}function hL(){X=Z.start;let e=$I();return e.type===eI||e.type===QF?(e.octal&&Q(e,xI),oL(e)):aL(e.value)}function gL(){var e,t,n,r;if(X=Z.start,e=Z,e.type===YF)return n=hL(),fL(`:`),r=AL(),lL(`init`,n,r);if(e.type===JF||e.type===$F)dL(e);else return t=hL(),fL(`:`),r=AL(),lL(`init`,t,r)}function _L(){var e=[],t,n,r,i={},a=String;for(X=Z.start,fL(`{`);!$(`}`);)t=gL(),n=t.key.type===oI?t.key.name:a(t.key.value),r=`$`+n,Object.prototype.hasOwnProperty.call(i,r)?Q({},SI):i[r]=!0,e.push(t),$(`}`)||fL(`,`);return fL(`}`),cL(e)}function vL(){fL(`(`);let e=jL();return fL(`)`),e}var yL={if:1};function bL(){var e,t,n;if($(`(`))return vL();if($(`[`))return mL();if($(`{`))return _L();if(e=Z.type,X=Z.start,e===YF||yL[Z.value])n=aL($I().value);else if(e===eI||e===QF)Z.octal&&Q(Z,xI),n=oL($I());else if(e===XF)throw Error(wI);else e===qF?(t=$I(),t.value=t.value===`true`,n=oL(t)):e===ZF?(t=$I(),t.value=null,n=oL(t)):$(`/`)||$(`/=`)?(n=oL(XI()),eL()):dL($I());return n}function xL(){let e=[];if(fL(`(`),!$(`)`))for(;X<KF&&(e.push(AL()),!$(`)`));)fL(`,`);return fL(`)`),e}function SL(){X=Z.start;let e=$I();return ZI(e)||dL(e),aL(e.value)}function CL(){return fL(`.`),SL()}function wL(){fL(`[`);let e=jL();return fL(`]`),e}function TL(){for(var e=bL(),t,n;;)if($(`.`))n=CL(),e=sL(`.`,e,n);else if($(`(`))t=xL(),e=rL(e,t);else if($(`[`))n=wL(),e=sL(`[`,e,n);else break;return e}function EL(){let e=TL();if(Z.type===$F&&($(`++`)||$(`--`)))throw Error(wI);return e}function DL(){var e,t;if(Z.type!==$F&&Z.type!==XF)t=EL();else if($(`++`)||$(`--`))throw Error(wI);else if($(`+`)||$(`-`)||$(`~`)||$(`!`))e=$I(),t=DL(),t=uL(e.value,t);else if(pL(`delete`)||pL(`void`)||pL(`typeof`))throw Error(wI);else t=EL();return t}function OL(e){let t=0;if(e.type!==$F&&e.type!==XF)return 0;switch(e.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 kL(){var e=Z,t,n,r,i,a,o,s,c=DL(),l;if(r=Z,i=OL(r),i===0)return c;for(r.prec=i,$I(),t=[e,Z],o=DL(),a=[c,r,o];(i=OL(Z))>0;){for(;a.length>2&&i<=a[a.length-2].prec;)o=a.pop(),s=a.pop().value,c=a.pop(),t.pop(),n=nL(s,c,o),a.push(n);r=$I(),r.prec=i,a.push(r),t.push(Z),n=DL(),a.push(n)}for(l=a.length-1,n=a[l],t.pop();l>1;)t.pop(),n=nL(a[l-1].value,a[l-2],n),l-=2;return n}function AL(){var e=kL(),t,n;return $(`?`)&&($I(),t=AL(),fL(`:`),n=AL(),e=iL(e,t,n)),e}function jL(){let e=AL();if($(`,`))throw Error(wI);return e}function ML(e){Y=e,X=0,KF=Y.length,Z=null,eL();let t=jL();if(Z.type!==JF)throw Error(`Unexpect token after expression.`);return t}var NL={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 PL(e){function t(t,n,r,i){let a=e(n[0]);return r&&(a=r+`(`+a+`)`,r.lastIndexOf(`new `,0)===0&&(a=`(`+a+`)`)),a+`.`+t+(i<0?``:i===0?`()`:`(`+n.slice(1).map(e).join(`,`)+`)`)}function n(e,n,r){return i=>t(e,i,n,r)}let r=`new Date`,i=`String`,a=`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(t){t.length<3&&Ke(`Missing arguments to clamp function.`),t.length>3&&Ke(`Too many arguments to clamp function.`);let n=t.map(e);return`Math.max(`+n[1]+`, Math.min(`+n[2]+`,`+n[0]+`))`},now:`Date.now`,utc:`Date.UTC`,datetime:r,date:n(`getDate`,r,0),day:n(`getDay`,r,0),year:n(`getFullYear`,r,0),month:n(`getMonth`,r,0),hours:n(`getHours`,r,0),minutes:n(`getMinutes`,r,0),seconds:n(`getSeconds`,r,0),milliseconds:n(`getMilliseconds`,r,0),time:n(`getTime`,r,0),timezoneoffset:n(`getTimezoneOffset`,r,0),utcdate:n(`getUTCDate`,r,0),utcday:n(`getUTCDay`,r,0),utcyear:n(`getUTCFullYear`,r,0),utcmonth:n(`getUTCMonth`,r,0),utchours:n(`getUTCHours`,r,0),utcminutes:n(`getUTCMinutes`,r,0),utcseconds:n(`getUTCSeconds`,r,0),utcmilliseconds:n(`getUTCMilliseconds`,r,0),length:n(`length`,null,-1),parseFloat:`parseFloat`,parseInt:`parseInt`,upper:n(`toUpperCase`,i,0),lower:n(`toLowerCase`,i,0),substring:n(`substring`,i),split:n(`split`,i),trim:n(`trim`,i,0),btoa:`btoa`,atob:`atob`,regexp:a,test:n(`test`,a),if:function(t){t.length<3&&Ke(`Missing arguments to if function.`),t.length>3&&Ke(`Too many arguments to if function.`);let n=t.map(e);return`(`+n[0]+`?`+n[1]+`:`+n[2]+`)`}}}function FL(e){let t=e&&e.length-1;return t&&(e[0]===`"`&&e[t]===`"`||e[0]===`'`&&e[t]===`'`)?e.slice(1,-1):e}function IL(e){e||={};let t=e.allowed?Mt(e.allowed):{},n=e.forbidden?Mt(e.forbidden):{},r=e.constants||NL,i=(e.functions||PL)(d),a=e.globalvar,o=e.fieldvar,s=pt(a)?a:e=>`${a}["${e}"]`;new Set([...Object.getOwnPropertyNames(Object.prototype).filter(e=>typeof Object.prototype[e]==`function`),`__proto__`]);let c={},l={},u=0;function d(e){if(P(e))return e;let t=f[e.type];return t??Ke(`Unsupported type: `+e.type),t(e)}let f={Literal:e=>e.raw,Identifier:e=>{let i=e.name;return u>0?i:xt(n,i)?Ke(`Illegal identifier: `+i):xt(r,i)?r[i]:xt(t,i)?i:(c[i]=1,s(i))},MemberExpression:e=>{let t=!e.computed,n=d(e.object);t&&(u+=1);let r=d(e.property);return n===o&&(l[FL(r)]=1),t&&--u,n+(t?`.`+r:`[`+r+`]`)},CallExpression:e=>{e.callee.type!==`Identifier`&&Ke(`Illegal callee type: `+e.callee.type);let t=e.callee.name,n=e.arguments,r=xt(i,t)&&i[t];return r||Ke(`Unrecognized function: `+t),pt(r)?r(n):r+`(`+n.map(d).join(`,`)+`)`},ArrayExpression:e=>`[`+e.elements.map(d).join(`,`)+`]`,BinaryExpression:e=>`(`+d(e.left)+` `+e.operator+` `+d(e.right)+`)`,UnaryExpression:e=>`(`+e.operator+d(e.argument)+`)`,ConditionalExpression:e=>`(`+d(e.test)+`?`+d(e.consequent)+`:`+d(e.alternate)+`)`,LogicalExpression:e=>`(`+d(e.left)+e.operator+d(e.right)+`)`,ObjectExpression:e=>{for(let t of e.properties){let e=t.key.name;Xe.has(e)&&Ke(`Illegal property: `+e)}return`{`+e.properties.map(d).join(`,`)+`}`},Property:e=>{u+=1;let t=d(e.key);return--u,t+`:`+d(e.value)}};function p(e){let t={code:d(e),globals:Object.keys(c),fields:Object.keys(l)};return c={},l={},t}return p.functions=i,p.constants=r,p}function LL(e,t,n){return RN((n-e)/(t-e),0,1)}function RL(e){return Ze(e)||ArrayBuffer.isView(e)?e:null}function zL(e){return RL(e)||(P(e)?e:null)}var BL={clamp:RN,format(e,t){return sr(t)(e)},join(e,t){return RL(e).join(t)},indexof(e,t,n){return zL(e).indexOf(t,n)},lastindexof(e,t,n){return zL(e).lastIndexOf(t,n)},reverse(e){return RL(e).slice().reverse()},slice(e,t,n){return zL(e).slice(t,n)},mapHasKey(e,t){return e.has(t)},isArray:Ze,isBoolean:St,isDefined(e){return e!==void 0},isNumber:N,isObject:Qe,isRegExp:Tt,isString:P,isValid(e){return e!=null&&e===e},lerp:F,linearstep:LL,replace(e,t,n){return String(e).replace(t,n)},sort(e){return RL(e).slice().sort(gt)},center(e){let t=RL(e);return(t[0]+t[t.length-1])/2},span(e){return Et(e)},smoothstep:Ql};function VL(e,t){let n=PL(e);for(let e in BL)n[e]=`this.${e}`;for(let r of[`scale`,`invert`,`domain`,`range`])n[r]=n=>HL(e,t,r,n);return n}function HL(e,t,n,r){if(r.length===0)throw Error(`Scale helper "${n}" requires a literal channel name.`);if((n===`scale`||n===`invert`)&&r.length<2)throw Error(`Scale helper "${n}" requires a channel name and a value.`);let i=UL(r[0]);if(!i)throw Error(`Scale helper "${n}" requires a literal channel name.`);let a=t.resolveScaleResolution?.(i);if(!a)throw Error(`Unknown scale channel "${i}" in expression helper "${n}".`);let o=t.getScaleHelper(n,i,a),s=r.slice(1).map(t=>e(t)).join(`,`);return`${t.globalvar}["${o.codeName}"](${s})`}function UL(e){return e?.type===`Literal`&&typeof e.value==`string`?e.value:void 0}function WL(e,t){let n=n=>KL(t,e,n);if(e===`domain`)return()=>n(()=>t.getDomain());if(e===`range`)return()=>n(()=>t.getScale().range());if(e===`scale`)return e=>n(()=>t.getScale()(e));if(e===`invert`)return e=>n(()=>t.getScale().invert(e));throw Error(`Unknown scale helper: `+e)}var GL=new WeakSet;function KL(e,t,n){if(GL.has(e))throw Error(`Scale helper cycle detected while evaluating ${t}("${e.channel}").`);GL.add(e);try{return n()}finally{GL.delete(e)}}function qL(e,t,n,r){let i=new Set,a=()=>{for(let e of i)e()},o=()=>{e===`domain`?n.addEventListener(`domain`,a):(e===`range`||n.addEventListener(`domain`,a),n.addEventListener(`range`,a))},s=()=>{e===`domain`?n.removeEventListener(`domain`,a):(e===`range`||n.removeEventListener(`domain`,a),n.removeEventListener(`range`,a))};return{id:`scale:${t}:${r}`,name:`scale(${t})`,kind:`derived`,rank:0,get(){return n.getScale()},subscribe(e){let t=i.size===0;return i.add(e),t&&o(),()=>{i.delete(e)&&i.size===0&&s()}}}}function JL(e,t={},n={}){try{let r=new Map,i=new Map,a=1,o={...n,globalvar:`globalObject`,globalObject:t,getScaleHelper(e,n,o){let s=e+`:`+n,c=i.get(s);if(c)return c;let l=r.get(n);l||(l=qL(e,n,o,`__scale_dependency_`+ a++),r.set(n,l));let u=`__scale_helper_`+ a++,d={codeName:u,dependency:l};return i.set(s,d),t[u]=WL(e,o),d}},s=IL({forbidden:[],allowed:[`datum`,`undefined`],globalvar:`globalObject`,fieldvar:`datum`,functions:e=>VL(e,o)})(ML(e)),c=Function(`datum`,`globalObject`,`"use strict";
|
|
677
|
+
`&&++X;else if(MI(r.charCodeAt(0)))break;else e+=r;return t!==``&&Q({},pI,CI),{type:eI,value:e,octal:a,start:n,end:X}}function qI(e,t){let n=e;t.includes(`u`)&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(e,t)=>{if(parseInt(t,16)<=1114111)return`x`;Q({},yI)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,`x`));try{new RegExp(n)}catch{Q({},yI)}try{return new RegExp(e,t)}catch{return null}}function JI(){var e=Y[X],t,n,r,i;for(DI(e===`/`,`Regular expression literal must start with a slash`),t=Y[X++],n=!1,r=!1;X<KF;)if(e=Y[X++],t+=e,e===`\\`)e=Y[X++],MI(e.charCodeAt(0))&&Q({},bI),t+=e;else if(MI(e.charCodeAt(0)))Q({},bI);else if(n)e===`]`&&(n=!1);else if(e===`/`){r=!0;break}else e===`[`&&(n=!0);return r||Q({},bI),i=t.substr(1,t.length-2),{value:i,literal:t}}function YI(){for(var e,t=``,n=``;X<KF&&(e=Y[X],PI(e.charCodeAt(0)));)++X,e===`\\`&&X<KF?Q({},pI,CI):(n+=e,t+=e);return n.search(/[^gimuy]/g)>=0&&Q({},yI,n),{value:n,literal:t}}function XI(){var e,t,n,r;return Z=null,II(),e=X,t=JI(),n=YI(),r=qI(t.value,n.value),{literal:t.literal+n.literal,value:r,regex:{pattern:t.value,flags:n.value},start:e,end:X}}function ZI(e){return e.type===YF||e.type===XF||e.type===qF||e.type===ZF}function QI(){if(II(),X>=KF)return{type:JF,start:X,end:X};let e=Y.charCodeAt(X);return NI(e)?VI():e===40||e===41||e===59?HI():e===39||e===34?KI():e===46?OI(Y.charCodeAt(X+1))?GI():HI():OI(e)?GI():HI()}function $I(){let e=Z;return X=e.end,Z=QI(),X=e.end,e}function eL(){let e=X;Z=QI(),X=e}function tL(e){let t=new UF(nI);return t.elements=e,t}function nL(e,t,n){let r=new UF(e===`||`||e===`&&`?cI:rI);return r.operator=e,r.left=t,r.right=n,r}function rL(e,t){let n=new UF(iI);return n.callee=e,n.arguments=t,n}function iL(e,t,n){let r=new UF(aI);return r.test=e,r.consequent=t,r.alternate=n,r}function aL(e){let t=new UF(oI);return t.name=e,t}function oL(e){let t=new UF(sI);return t.value=e.value,t.raw=Y.slice(e.start,e.end),e.regex&&(t.raw===`//`&&(t.raw=`/(?:)/`),t.regex=e.regex),t}function sL(e,t,n){let r=new UF(lI);return r.computed=e===`[`,r.object=t,r.property=n,r.computed||(n.member=!0),r}function cL(e){let t=new UF(uI);return t.properties=e,t}function lL(e,t,n){let r=new UF(dI);return r.key=t,r.value=n,r.kind=e,r}function uL(e,t){let n=new UF(fI);return n.operator=e,n.argument=t,n.prefix=!0,n}function Q(e,t){var n,r=Array.prototype.slice.call(arguments,2),i=t.replace(/%(\d)/g,(e,t)=>(DI(t<r.length,`Message reference must be in range`),r[t]));throw n=Error(i),n.index=X,n.description=i,n}function dL(e){e.type===JF&&Q(e,vI),e.type===QF&&Q(e,mI),e.type===eI&&Q(e,hI),e.type===YF&&Q(e,gI),e.type===XF&&Q(e,_I),Q(e,pI,e.value)}function fL(e){let t=$I();(t.type!==$F||t.value!==e)&&dL(t)}function $(e){return Z.type===$F&&Z.value===e}function pL(e){return Z.type===XF&&Z.value===e}function mL(){let e=[];for(X=Z.start,fL(`[`);!$(`]`);)$(`,`)?($I(),e.push(null)):(e.push(AL()),$(`]`)||fL(`,`));return $I(),tL(e)}function hL(){X=Z.start;let e=$I();return e.type===eI||e.type===QF?(e.octal&&Q(e,xI),oL(e)):aL(e.value)}function gL(){var e,t,n,r;if(X=Z.start,e=Z,e.type===YF)return n=hL(),fL(`:`),r=AL(),lL(`init`,n,r);if(e.type===JF||e.type===$F)dL(e);else return t=hL(),fL(`:`),r=AL(),lL(`init`,t,r)}function _L(){var e=[],t,n,r,i={},a=String;for(X=Z.start,fL(`{`);!$(`}`);)t=gL(),n=t.key.type===oI?t.key.name:a(t.key.value),r=`$`+n,Object.prototype.hasOwnProperty.call(i,r)?Q({},SI):i[r]=!0,e.push(t),$(`}`)||fL(`,`);return fL(`}`),cL(e)}function vL(){fL(`(`);let e=jL();return fL(`)`),e}var yL={if:1};function bL(){var e,t,n;if($(`(`))return vL();if($(`[`))return mL();if($(`{`))return _L();if(e=Z.type,X=Z.start,e===YF||yL[Z.value])n=aL($I().value);else if(e===eI||e===QF)Z.octal&&Q(Z,xI),n=oL($I());else if(e===XF)throw Error(wI);else e===qF?(t=$I(),t.value=t.value===`true`,n=oL(t)):e===ZF?(t=$I(),t.value=null,n=oL(t)):$(`/`)||$(`/=`)?(n=oL(XI()),eL()):dL($I());return n}function xL(){let e=[];if(fL(`(`),!$(`)`))for(;X<KF&&(e.push(AL()),!$(`)`));)fL(`,`);return fL(`)`),e}function SL(){X=Z.start;let e=$I();return ZI(e)||dL(e),aL(e.value)}function CL(){return fL(`.`),SL()}function wL(){fL(`[`);let e=jL();return fL(`]`),e}function TL(){for(var e=bL(),t,n;;)if($(`.`))n=CL(),e=sL(`.`,e,n);else if($(`(`))t=xL(),e=rL(e,t);else if($(`[`))n=wL(),e=sL(`[`,e,n);else break;return e}function EL(){let e=TL();if(Z.type===$F&&($(`++`)||$(`--`)))throw Error(wI);return e}function DL(){var e,t;if(Z.type!==$F&&Z.type!==XF)t=EL();else if($(`++`)||$(`--`))throw Error(wI);else if($(`+`)||$(`-`)||$(`~`)||$(`!`))e=$I(),t=DL(),t=uL(e.value,t);else if(pL(`delete`)||pL(`void`)||pL(`typeof`))throw Error(wI);else t=EL();return t}function OL(e){let t=0;if(e.type!==$F&&e.type!==XF)return 0;switch(e.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 kL(){var e=Z,t,n,r,i,a,o,s,c=DL(),l;if(r=Z,i=OL(r),i===0)return c;for(r.prec=i,$I(),t=[e,Z],o=DL(),a=[c,r,o];(i=OL(Z))>0;){for(;a.length>2&&i<=a[a.length-2].prec;)o=a.pop(),s=a.pop().value,c=a.pop(),t.pop(),n=nL(s,c,o),a.push(n);r=$I(),r.prec=i,a.push(r),t.push(Z),n=DL(),a.push(n)}for(l=a.length-1,n=a[l],t.pop();l>1;)t.pop(),n=nL(a[l-1].value,a[l-2],n),l-=2;return n}function AL(){var e=kL(),t,n;return $(`?`)&&($I(),t=AL(),fL(`:`),n=AL(),e=iL(e,t,n)),e}function jL(){let e=AL();if($(`,`))throw Error(wI);return e}function ML(e){Y=e,X=0,KF=Y.length,Z=null,eL();let t=jL();if(Z.type!==JF)throw Error(`Unexpect token after expression.`);return t}var NL={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 PL(e){function t(t,n,r,i){let a=e(n[0]);return r&&(a=r+`(`+a+`)`,r.lastIndexOf(`new `,0)===0&&(a=`(`+a+`)`)),a+`.`+t+(i<0?``:i===0?`()`:`(`+n.slice(1).map(e).join(`,`)+`)`)}function n(e,n,r){return i=>t(e,i,n,r)}let r=`new Date`,i=`String`,a=`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(t){t.length<3&&qe(`Missing arguments to clamp function.`),t.length>3&&qe(`Too many arguments to clamp function.`);let n=t.map(e);return`Math.max(`+n[1]+`, Math.min(`+n[2]+`,`+n[0]+`))`},now:`Date.now`,utc:`Date.UTC`,datetime:r,date:n(`getDate`,r,0),day:n(`getDay`,r,0),year:n(`getFullYear`,r,0),month:n(`getMonth`,r,0),hours:n(`getHours`,r,0),minutes:n(`getMinutes`,r,0),seconds:n(`getSeconds`,r,0),milliseconds:n(`getMilliseconds`,r,0),time:n(`getTime`,r,0),timezoneoffset:n(`getTimezoneOffset`,r,0),utcdate:n(`getUTCDate`,r,0),utcday:n(`getUTCDay`,r,0),utcyear:n(`getUTCFullYear`,r,0),utcmonth:n(`getUTCMonth`,r,0),utchours:n(`getUTCHours`,r,0),utcminutes:n(`getUTCMinutes`,r,0),utcseconds:n(`getUTCSeconds`,r,0),utcmilliseconds:n(`getUTCMilliseconds`,r,0),length:n(`length`,null,-1),parseFloat:`parseFloat`,parseInt:`parseInt`,upper:n(`toUpperCase`,i,0),lower:n(`toLowerCase`,i,0),substring:n(`substring`,i),split:n(`split`,i),trim:n(`trim`,i,0),btoa:`btoa`,atob:`atob`,regexp:a,test:n(`test`,a),if:function(t){t.length<3&&qe(`Missing arguments to if function.`),t.length>3&&qe(`Too many arguments to if function.`);let n=t.map(e);return`(`+n[0]+`?`+n[1]+`:`+n[2]+`)`}}}function FL(e){let t=e&&e.length-1;return t&&(e[0]===`"`&&e[t]===`"`||e[0]===`'`&&e[t]===`'`)?e.slice(1,-1):e}function IL(e){e||={};let t=e.allowed?Mt(e.allowed):{},n=e.forbidden?Mt(e.forbidden):{},r=e.constants||NL,i=(e.functions||PL)(d),a=e.globalvar,o=e.fieldvar,s=pt(a)?a:e=>`${a}["${e}"]`;new Set([...Object.getOwnPropertyNames(Object.prototype).filter(e=>typeof Object.prototype[e]==`function`),`__proto__`]);let c={},l={},u=0;function d(e){if(P(e))return e;let t=f[e.type];return t??qe(`Unsupported type: `+e.type),t(e)}let f={Literal:e=>e.raw,Identifier:e=>{let i=e.name;return u>0?i:xt(n,i)?qe(`Illegal identifier: `+i):xt(r,i)?r[i]:xt(t,i)?i:(c[i]=1,s(i))},MemberExpression:e=>{let t=!e.computed,n=d(e.object);t&&(u+=1);let r=d(e.property);return n===o&&(l[FL(r)]=1),t&&--u,n+(t?`.`+r:`[`+r+`]`)},CallExpression:e=>{e.callee.type!==`Identifier`&&qe(`Illegal callee type: `+e.callee.type);let t=e.callee.name,n=e.arguments,r=xt(i,t)&&i[t];return r||qe(`Unrecognized function: `+t),pt(r)?r(n):r+`(`+n.map(d).join(`,`)+`)`},ArrayExpression:e=>`[`+e.elements.map(d).join(`,`)+`]`,BinaryExpression:e=>`(`+d(e.left)+` `+e.operator+` `+d(e.right)+`)`,UnaryExpression:e=>`(`+e.operator+d(e.argument)+`)`,ConditionalExpression:e=>`(`+d(e.test)+`?`+d(e.consequent)+`:`+d(e.alternate)+`)`,LogicalExpression:e=>`(`+d(e.left)+e.operator+d(e.right)+`)`,ObjectExpression:e=>{for(let t of e.properties){let e=t.key.name;Ze.has(e)&&qe(`Illegal property: `+e)}return`{`+e.properties.map(d).join(`,`)+`}`},Property:e=>{u+=1;let t=d(e.key);return--u,t+`:`+d(e.value)}};function p(e){let t={code:d(e),globals:Object.keys(c),fields:Object.keys(l)};return c={},l={},t}return p.functions=i,p.constants=r,p}function LL(e,t,n){return RN((n-e)/(t-e),0,1)}function RL(e){return O(e)||ArrayBuffer.isView(e)?e:null}function zL(e){return RL(e)||(P(e)?e:null)}var BL={clamp:RN,format(e,t){return sr(t)(e)},join(e,t){return RL(e).join(t)},indexof(e,t,n){return zL(e).indexOf(t,n)},lastindexof(e,t,n){return zL(e).lastIndexOf(t,n)},reverse(e){return RL(e).slice().reverse()},slice(e,t,n){return zL(e).slice(t,n)},mapHasKey(e,t){return e.has(t)},isArray:O,isBoolean:St,isDefined(e){return e!==void 0},isNumber:N,isObject:Qe,isRegExp:Tt,isString:P,isValid(e){return e!=null&&e===e},lerp:F,linearstep:LL,replace(e,t,n){return String(e).replace(t,n)},sort(e){return RL(e).slice().sort(gt)},center(e){let t=RL(e);return(t[0]+t[t.length-1])/2},span(e){return Et(e)},smoothstep:Ql};function VL(e,t){let n=PL(e);for(let e in BL)n[e]=`this.${e}`;for(let r of[`scale`,`invert`,`domain`,`range`])n[r]=n=>HL(e,t,r,n);return n}function HL(e,t,n,r){if(r.length===0)throw Error(`Scale helper "${n}" requires a literal channel name.`);if((n===`scale`||n===`invert`)&&r.length<2)throw Error(`Scale helper "${n}" requires a channel name and a value.`);let i=UL(r[0]);if(!i)throw Error(`Scale helper "${n}" requires a literal channel name.`);let a=t.resolveScaleResolution?.(i);if(!a)throw Error(`Unknown scale channel "${i}" in expression helper "${n}".`);let o=t.getScaleHelper(n,i,a),s=r.slice(1).map(t=>e(t)).join(`,`);return`${t.globalvar}["${o.codeName}"](${s})`}function UL(e){return e?.type===`Literal`&&typeof e.value==`string`?e.value:void 0}function WL(e,t){let n=n=>KL(t,e,n);if(e===`domain`)return()=>n(()=>t.getDomain());if(e===`range`)return()=>n(()=>t.getScale().range());if(e===`scale`)return e=>n(()=>t.getScale()(e));if(e===`invert`)return e=>n(()=>t.getScale().invert(e));throw Error(`Unknown scale helper: `+e)}var GL=new WeakSet;function KL(e,t,n){if(GL.has(e))throw Error(`Scale helper cycle detected while evaluating ${t}("${e.channel}").`);GL.add(e);try{return n()}finally{GL.delete(e)}}function qL(e,t,n,r){let i=new Set,a=()=>{for(let e of i)e()},o=()=>{e===`domain`?n.addEventListener(`domain`,a):(e===`range`||n.addEventListener(`domain`,a),n.addEventListener(`range`,a))},s=()=>{e===`domain`?n.removeEventListener(`domain`,a):(e===`range`||n.removeEventListener(`domain`,a),n.removeEventListener(`range`,a))};return{id:`scale:${t}:${r}`,name:`scale(${t})`,kind:`derived`,rank:0,get(){return n.getScale()},subscribe(e){let t=i.size===0;return i.add(e),t&&o(),()=>{i.delete(e)&&i.size===0&&s()}}}}function JL(e,t={},n={}){try{let r=new Map,i=new Map,a=1,o={...n,globalvar:`globalObject`,globalObject:t,getScaleHelper(e,n,o){let s=e+`:`+n,c=i.get(s);if(c)return c;let l=r.get(n);l||(l=qL(e,n,o,`__scale_dependency_`+ a++),r.set(n,l));let u=`__scale_helper_`+ a++,d={codeName:u,dependency:l};return i.set(s,d),t[u]=WL(e,o),d}},s=IL({forbidden:[],allowed:[`datum`,`undefined`],globalvar:`globalObject`,fieldvar:`datum`,functions:e=>VL(e,o)})(ML(e)),c=Function(`datum`,`globalObject`,`"use strict";
|
|
675
678
|
try {
|
|
676
679
|
return (${s.code});
|
|
677
680
|
} catch (e) {
|
|
@@ -681,7 +684,7 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
|
|
|
681
684
|
return !!(${t.code});
|
|
682
685
|
} catch (e) {
|
|
683
686
|
throw new Error("Error evaluating expression: " + ${JSON.stringify(e)} + ", " + e.message, e);
|
|
684
|
-
}`)}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}function ZL(e,t={},n={}){return JL(e,t,n)}function QL(e,t,n={}){let r={},i=ZL(e,r,n),a=new Map;for(let n of i.globals){if(a.has(n))continue;let i=t(n);if(!i)throw Error(`Unknown variable "`+n+`" in expression: `+e);a.set(n,i),Object.defineProperty(r,n,{enumerable:!0,get(){return i.get()}})}let o=new Set;return i.subscribe=e=>{let t=[];for(let n of a.values())t.push(n.subscribe(e));for(let n of i.scaleDependencies??[])t.push(n.subscribe(e));let n=!0,r=()=>{n&&(n=!1,o.delete(r),t.forEach(e=>e()))};return o.add(r),r},i.invalidate=()=>{for(let e of o)e();o.clear()},i.identifier=()=>i.code+`|`+Array.from(a.values()).map(e=>e.id).concat((i.scaleDependencies??[]).map(e=>e.id)).join(`,`),{expression:i,dependencies:Array.from(a.values()).concat(i.scaleDependencies??[])}}var $L=class{#e=new kF;#t=new OF({lifecycleRegistry:this.#e});#n=new AF;createScope(e){let t=this.#e.createOwner(`scope`,e??`root`);return e?this.#n.createChildScope(t,e):this.#n.createRootScope(t)}disposeScope(e){let t=this.#n.getOwnerId(e);this.#e.disposeOwner(t),this.#n.clearScope(e)}addScopeDisposer(e,t){let n=this.#n.getOwnerId(e);this.#e.addDisposer(n,t)}registerBase(e,t,n,r){let i=this.#n.getOwnerId(e),a=this.#t.createWritable(i,t,`base`,n,r);return this.#n.register(e,t,a)}registerSelection(e,t,n,r){let i=this.#n.getOwnerId(e),a=this.#t.createWritable(i,t,`selection`,n,r);return this.#n.register(e,t,a)}registerDerived(e,t,n,r){let{expression:i,dependencies:a}=QL(n,t=>this.resolve(e,t),r),o=this.#n.getOwnerId(e),s=this.#t.computed(o,t,a,()=>i(null));return this.#n.register(e,t,s)}createExpression(e,t,n){let{expression:r}=QL(t,t=>this.resolve(e,t),n);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)}},eR=class{#e;#t;#n=new Map;#r=new Map;#i=new Map;#a;#o;#s=!1;constructor(e,t){this.#a=e??(()=>void 0),this.#o=t??(()=>void 0);let n=this.#a();n?(this.#e=n.#e,this.#t=this.#e.createScope(n.#t)):(this.#e=new $L,this.#t=this.#e.createScope())}registerParam(e){let t=e.name;if(gg(t),this.#i.has(t))throw Error(`Parameter "`+t+`" already registered in this scope.`);if(`value`in e&&`expr`in e)throw Error(`The parameter "${t}" must not have both value and expr properties!`);let n,r;if(e.push==`outer`){let e=this.findRuntimeForParam(t);if(!e)throw Error(`Parameter "${t}" not found in outer scope!`);let r=e.paramConfigs.get(t);if(!r)throw Error(`Outer parameter "${t}" exists as a value but has no registered config.`);if(`expr`in r||`select`in r)throw Error(`The outer parameter "${t}" must not have expr or select properties!`);n=n=>{e.setValue(t,n)},this.#n.set(t,n)}else if(`value`in e)r=_g(e,this),n=this.#c(t,r);else if(`expr`in e){let r=this.#e.registerDerived(this.#t,t,e.expr,{resolveScaleResolution:this.#o});this.#r.set(t,r),n=()=>{throw Error(`Cannot set derived parameter "`+t+`".`)}}else r=_g(e,this),n=this.#c(t,r);if(`select`in e){if(r??=_g(e,this),!this.#n.has(t)){let e=this.#e.registerSelection(this.#t,t,r);this.#r.set(t,e),this.#n.set(t,t=>{e.set(t),this.#e.flushNow()}),n=this.#n.get(t)}n(r)}return this.#i.set(t,e),n}allocateSetter(e,t,n=!1){if(gg(e),this.#n.has(e))throw Error(`Setter already allocated for parameter: `+e);let r=this.#e.registerBase(this.#t,e,t,{notify:!n});this.#r.set(e,r);let i=e=>{r.set(e),this.#e.flushNow()};return this.#n.set(e,i),i}setValue(e,t){gg(e);let n=this.#n.get(e);if(!n)throw Error(`Writable parameter not found in this scope: `+e);n(t)}getValue(e){return this.#r.get(e)?.get()}subscribe(e,t){gg(e);let n=this.findRuntimeForParam(e);if(!n)throw Error(`Parameter not found: `+e);let r=n.#r.get(e);if(!r)throw Error(`Parameter found without local reference: `+e);return r.subscribe(t)}findValue(e){return this.findRuntimeForParam(e)?.getValue(e)}get paramConfigs(){return this.#i}hasLocalParam(e){return gg(e),this.#r.has(e)}hasConfiguredParamInScopeChain(e){return gg(e),this.#i.has(e)?!0:this.#a()?.hasConfiguredParamInScopeChain(e)??!1}findRuntimeForParam(e){return this.#r.has(e)?this:this.#a()?.findRuntimeForParam(e)}createExpression(e){return this.#e.createExpression(this.#t,e,{resolveScaleResolution:this.#o})}watchExpression(e,t,n={}){let r=this.createExpression(e),i=r.subscribe(t);return(n.scopeOwned??!0)&&this.#e.addScopeDisposer(this.#t,i),n.registerDisposer?.(i),r}#c(e,t){let n=this.#e.registerBase(this.#t,e,t);this.#r.set(e,n);let r=e=>{n.set(e),this.#e.flushNow()};return this.#n.set(e,r),r}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.#s||(this.#s=!0,this.#e.disposeScope(this.#t),this.#n.clear(),this.#r.clear(),this.#i.clear())}hasPointSelections(){for(let e of this.#i.values())if(hg(e)){let t=e.select;if(P(t)){if(t==`point`)return!0}else if(t.type==`point`)return!0}return!1}},tR=`VISIT_SKIP`,nR=`VISIT_STOP`,rR=e=>e,iR=class{spec;#e;#t;#n={};#r={};#i={};#a;#o;#s=!1;opacityFunction=rR;#c=[];#l=`none`;facetCoords=new hn([],JSON.stringify);constructor(e,t,n,r,i,a={}){if(!e)throw Error(`View spec must be defined!`);if(this.context=t,this.layoutParent=n,this.dataParent=r,this.#t=i,this.spec=e,r&&e.theme!==void 0)throw Error(`"theme" is only supported at the root specification. Use "config" and "style" for subtree customization.`);let o=r?r.getConfigScopes():[t.getBaseConfig()],s=e.config;if(this.#e=[...o,s].filter(e=>!!e),this.resolutions={scale:{},axis:{}},rP(this),this.options={blockEncodingInheritance:!1,layoutSizeParams:`own`,...a},this.flowHandle=void 0,this.needsAxes={x:!1,y:!1},this.paramRuntime=new eR(()=>this.dataParent?.paramRuntime,e=>this.getScaleResolution(e)),e.params)for(let t of e.params)this.paramRuntime.registerParam(t);this.options.layoutSizeParams!==`inherit`&&(this.#a=this.#u(`width`),this.#o=this.#u(`height`))}#u(e){if(!(this.paramRuntime.hasLocalParam(e)||this.paramRuntime.hasConfiguredParamInScopeChain(e)))return this.paramRuntime.allocateSetter(e,0)}get name(){return this.spec.name??this.#t}get explicitName(){return this.spec.name}get defaultName(){return this.#t}getConfig(){return fP(this.#e)}getCursorSpec(){return this.spec.cursor}getCursor(){let e=this.getCursorSpec();return z(e)?this.paramRuntime.evaluateAndGet(e.expr):e}watchCursor(e,t){let n=this.getCursorSpec();z(n)&&this.paramRuntime.watchExpression(n.expr,e,{scopeOwned:!1,registerDisposer:t})}getConfigScopes(){return this.#e.slice()}get coords(){return this.facetCoords.values().next().value}getPadding(){return this._cache(`size/padding`,()=>pF.createFromConfig(this.spec.padding))}getOverhang(){return pF.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache(`size/size`,()=>this.isConfiguredVisible()?new oF(this.#d(`width`),this.#d(`height`)):cF)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return cF;let e=this.getSize();return new oF(this.#d(`viewportWidth`)??e.width,this.#d(`viewportHeight`)??e.height)}#d(e){let t=this.spec[e],n=lR(t),r=e==`viewportWidth`||e==`viewportHeight`;if(n){if(r)throw new sP(`Cannot use step-based size with "${e}"!`,this);let n=t.step,i=this.getScaleResolution(e==`width`?`x`:`y`)?.getScale();if(i){let e;if(ym(i.type))e=i.domain().length;else if([`locus`,`index`].includes(i.type)){let t=i.domain();e=Zl(t)-t[0]}else throw new sP(`Cannot use step-based size with "${i.type}" scale!`,this);let t=i;return e=Lp(e,t.paddingInner(),t.paddingOuter()),{px:e*n,grow:0}}else throw new sP(`Cannot use step-based size with "${e}"!`,this)}else return(t&&fF(t))??(r?void 0:{px:0,grow:1})}registerStepSizeInvalidation(){this.#f(`width`,`x`),this.#f(`height`,`y`)}#f(e,t){let n=this.spec[e];if(!lR(n))return;let r=this.getScaleResolution(t);if(!r)throw new sP(`Cannot use 'step' size without a scale!`,this);let i=()=>this.invalidateSizeCache();r.addEventListener(`domain`,i),this.registerDisposer(()=>r.removeEventListener(`domain`,i))}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;let e=this.dataParent;return e?e.isDomainInert():!1}getDataInitializationState(){return this.#l}_setDataInitializationState(e){this.#l=e}isDataInitialized(){return this.#l===`ready`}getEffectiveOpacity(){return this.opacityFunction(this.layoutParent?.getEffectiveOpacity()??1)}getPathString(){return this.getLayoutAncestors().map(e=>e.name).reverse().join(`/`)}#p(e){let t=[],n=this;do t.push(n),n=n[e];while(n);return t}getLayoutAncestors(){return this.#p(`layoutParent`)}getDataAncestors(){return this.#p(`dataParent`)}handleBroadcast(e){for(let t of this.#n[e.type]||[])t(e)}_addBroadcastHandler(e,t){let n=this.#n[e];return n||(n=[],this.#n[e]=n),n.push(t),()=>{let n=this.#n[e];if(!n)return;let r=n.indexOf(t);r>=0&&n.splice(r,1)}}handleInteraction(e,t){let n=t?this.#r:this.#i;for(let t of n[e.type]||[])t(e)}addInteractionListener(e,t,n){let r=n?this.#r:this.#i,i=r[e];i||(i=[],r[e]=i),i.push(t)}removeInteractionListener(e,t,n){let r=(n?this.#r:this.#i)?.[e];if(r){let e=r.indexOf(t);e>=0&&r.splice(e,1)}}visit(e){try{let t=e(this);if(e.postOrder&&e.postOrder(this),t!==`VISIT_STOP`)return t}catch(e){throw e.view=this,e}}getDescendants(){let e=[];return this.visit(t=>{e.push(t)}),e}dispose(){for(let e of this.#c)e();this.#c.length=0;let 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(){let e=()=>void 0;e.postOrder=e=>{e.dispose()},this.visit(e)}configureViewOpacity(){(!this.opacityFunction||this.opacityFunction===rR)&&(this.opacityFunction=oR(this))}onBeforeRender(){this.#s||=!0}hasRendered(){return this.#s}render(e,t,n={}){n.firstFacet&&this.facetCoords.clear(),this.facetCoords.set(n.facetId,n.clipRect?t.intersect(n.clipRect):t),this.#a?.(t.width),this.#o?.(t.height)}getEncoding(){let e=this.dataParent&&!this.options.blockEncodingInheritance?this.dataParent.getEncoding():{},t=this.spec.encoding||{},n={...e,...t};for(let[e,t]of Object.entries(n))t===null&&delete n[e];return n}getFacetAccessor(e){if(this.layoutParent)return this.layoutParent.getFacetAccessor(this)}getFacetFields(e){let t=this.getEncoding().sample;return kh(t)?[t.field]:this.layoutParent?.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(e){let t=qh(e);return this.getDataAncestors().map(e=>e.resolutions.scale[t]).find(e=>e)}getAxisResolution(e){let t=qh(e);return this.getDataAncestors().map(e=>e.resolutions.axis[t]).find(e=>e)}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 gF(()=>this.dataParent?.getBaseUrl(),ah(this.spec.baseUrl))}isPickingSupported(){return!0}getTitleText(){let e=this.spec.title;if(e)return P(e)?e:z(e.text)?this.paramRuntime.evaluateAndGet(e.text.expr):e.text}_cache(e,t){return eP(this,e,t)}_invalidateCacheByPrefix(e,t=`self`){switch(t){case`self`:nP(this,e);break;case`ancestors`:for(let t of this.getLayoutAncestors())nP(t,e);break;case`progeny`:this.visit(t=>nP(t,e));break;default:}}invalidateSizeCache(){nP(this,`size`),this._invalidateCacheByPrefix(`size`,`ancestors`)}propagateInteraction(e){}};function aR(e){return`unitsPerPixel`in e}function oR(e){let t=`opacity`in e.spec?e.spec.opacity:void 0;if(t!==void 0){if(N(t))return e=>e*t;if(aR(t)){let n=t=>{let n=e.getScaleResolution(t),r=n?.getScale();if([`linear`,`index`,`locus`].includes(r?.type))return{scale:r,scaleResolution:n}},r=cR(t.values,`opacity.values`,e);if(!Ze(t.unitsPerPixel))throw new sP(`"opacity.unitsPerPixel" must be an array.`,e);let i=()=>1,a=[],o=()=>{let t=sR(cR(a.map(e=>e()),`opacity.unitsPerPixel`,e),r,e),n=Jf().domain(t.unitsPerPixel).range(t.values).clamp(!0);i=e=>n(e)};a=t.unitsPerPixel.map(t=>{if(z(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>{o(),e.context.animator.requestRender()});return()=>n(null)}else return()=>t}),o();let s=e=>{let t=e.scaleResolution.getAxisLength()||1e3;return Et(e.scale.domain())/t},c;if(t.channel===`auto`){let t=n(`x`),r=n(`y`);if(t&&r)c=()=>(s(t)+s(r))/2;else if(t)c=()=>s(t);else if(r)c=()=>s(r);else throw new sP(`Cannot find a resolved quantitative x or y scale for dynamic opacity!`,e)}else{let r=t.channel?n(t.channel):n(`x`)??n(`y`);if(!r)throw new sP(`Cannot find a resolved quantitative scale for dynamic opacity!`,e);c=()=>s(r)}return e=>i(c())*e}else if(z(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>e.context.animator.requestRender());return e=>n(null)*e}}return e=>e}function sR(e,t,n){if(!e.length)throw new sP(`"opacity.unitsPerPixel" must contain at least one stop.`,n);if(e.length!==t.length)throw new sP(`"opacity.unitsPerPixel" and "opacity.values" must have the same length.`,n);e.forEach((e,t)=>{if(e<=0)throw new sP(`Invalid opacity.unitsPerPixel value at index `+t+`. Stop values must be positive.`,n)});let r=e.map((e,n)=>({stop:e,value:t[n]}));r.sort((e,t)=>t.stop-e.stop);let i=r.map(e=>e.stop),a=r.map(e=>e.value);for(let t=1;t<e.length;t++)if(i[t-1]<=i[t])throw new sP(`"opacity.unitsPerPixel" must be strictly decreasing.`,n);return{unitsPerPixel:i,values:a}}function cR(e,t,n){if(!Ze(e))throw new sP(`"`+t+`" must evaluate to an array.`,n);return e.map((e,r)=>{if(!N(e)||!Number.isFinite(e))throw new sP(`Invalid `+t+` value at index `+r+`. Expected a finite number.`,n);return e})}var lR=e=>!!e?.step;function uR(e){return dR(e?.search,`search`)}function dR(e,t){if(!e)return;let n=Array.isArray(e)?e:[e];if(n.length===0)throw Error(`The `+t+` channel array must not be empty.`);let r=[];for(let e of n){if(!e||typeof e!=`object`||!(`field`in e))throw Error(`The `+t+` channel must be a field definition or an array of field definitions.`);let n=e.field;if(typeof n!=`string`)throw Error(`The `+t+` channel field definition must include a string field name.`);r.push(n)}return r}var fR=1;function pR(){let e=[0,1],t=[0,1],n=1,r=1,i=0,a=0,o=.5,s=0,c=i=>(i+o-e[0])/n*r+t[0];return c.invert=i=>(i-t[0])/r*n+e[0]-o,c.domain=function(t){if(arguments.length){e=mn(t),n=e[1]-e[0];let r=e[0]===0&&e[0]===0;if(n<fR&&!r){n=fR;let t=(e[0]+e[1])/2;e[0]=t-n/2,e[1]=t+n/2}return c}else return e.slice()},c.range=function(e){return arguments.length?(t=[...e],r=t[1]-t[0],c):t},c.numberingOffset=function(e){return arguments.length?(s=e,c):s},c.padding=function(e){return arguments.length?(a=e,i=Math.min(1,e),c):i},c.paddingInner=function(e){return arguments.length?(i=Math.min(1,e),c):i},c.paddingOuter=function(e){return arguments.length?(a=e,c):a},c.align=function(e){return arguments.length?(o=Math.max(0,Math.min(1,e)),c):o},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=t=>{let r=c.align(),i=c.numberingOffset();return An(e[0]-r+i,e[1]-r+i,Math.min(t,Math.ceil(n))).filter(Number.isInteger).map(e=>e-s)},c.tickFormat=(t,r)=>{if(r)throw Error(`Index scale's tickFormat does not support a specifier!`);let i=Mn(e[0],e[1],Math.min(t,Math.ceil(n)))<1e5?sr(`,`):sr(`.3s`);return e=>i(e+s)},c.copy=()=>pR().domain(e).range(t).paddingInner(i).paddingOuter(a).numberingOffset(s),c}var mR=sr(`,d`);function hR(e){return e.chrom+`:`+mR(Math.floor(e.pos+1))}function gR(e,t){return e.chrom+`:`+mR(Math.floor(e.pos+1))+`-`+(e.chrom==t.chrom?``:t.chrom+`:`)+mR(Math.ceil(t.pos))}var _R={dm6:`chr3R 32079331
|
|
687
|
+
}`)}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}function ZL(e,t={},n={}){return JL(e,t,n)}function QL(e,t,n={}){let r={},i=ZL(e,r,n),a=new Map;for(let n of i.globals){if(a.has(n))continue;let i=t(n);if(!i)throw Error(`Unknown variable "`+n+`" in expression: `+e);a.set(n,i),Object.defineProperty(r,n,{enumerable:!0,get(){return i.get()}})}let o=new Set;return i.subscribe=e=>{let t=[];for(let n of a.values())t.push(n.subscribe(e));for(let n of i.scaleDependencies??[])t.push(n.subscribe(e));let n=!0,r=()=>{n&&(n=!1,o.delete(r),t.forEach(e=>e()))};return o.add(r),r},i.invalidate=()=>{for(let e of o)e();o.clear()},i.identifier=()=>i.code+`|`+Array.from(a.values()).map(e=>e.id).concat((i.scaleDependencies??[]).map(e=>e.id)).join(`,`),{expression:i,dependencies:Array.from(a.values()).concat(i.scaleDependencies??[])}}var $L=class{#e=new kF;#t=new OF({lifecycleRegistry:this.#e});#n=new AF;createScope(e){let t=this.#e.createOwner(`scope`,e??`root`);return e?this.#n.createChildScope(t,e):this.#n.createRootScope(t)}disposeScope(e){let t=this.#n.getOwnerId(e);this.#e.disposeOwner(t),this.#n.clearScope(e)}addScopeDisposer(e,t){let n=this.#n.getOwnerId(e);this.#e.addDisposer(n,t)}registerBase(e,t,n,r){let i=this.#n.getOwnerId(e),a=this.#t.createWritable(i,t,`base`,n,r);return this.#n.register(e,t,a)}registerSelection(e,t,n,r){let i=this.#n.getOwnerId(e),a=this.#t.createWritable(i,t,`selection`,n,r);return this.#n.register(e,t,a)}registerDerived(e,t,n,r){let{expression:i,dependencies:a}=QL(n,t=>this.resolve(e,t),r),o=this.#n.getOwnerId(e),s=this.#t.computed(o,t,a,()=>i(null));return this.#n.register(e,t,s)}createExpression(e,t,n){let{expression:r}=QL(t,t=>this.resolve(e,t),n);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)}},eR=class{#e;#t;#n=new Map;#r=new Map;#i=new Map;#a;#o;#s=!1;constructor(e,t){this.#a=e??(()=>void 0),this.#o=t??(()=>void 0);let n=this.#a();n?(this.#e=n.#e,this.#t=this.#e.createScope(n.#t)):(this.#e=new $L,this.#t=this.#e.createScope())}registerParam(e){let t=e.name;if(gg(t),this.#i.has(t))throw Error(`Parameter "`+t+`" already registered in this scope.`);if(`value`in e&&`expr`in e)throw Error(`The parameter "${t}" must not have both value and expr properties!`);let n,r;if(e.push==`outer`){let e=this.findRuntimeForParam(t);if(!e)throw Error(`Parameter "${t}" not found in outer scope!`);let r=e.paramConfigs.get(t);if(!r)throw Error(`Outer parameter "${t}" exists as a value but has no registered config.`);if(`expr`in r||`select`in r)throw Error(`The outer parameter "${t}" must not have expr or select properties!`);n=n=>{e.setValue(t,n)},this.#n.set(t,n)}else if(`value`in e)r=_g(e,this),n=this.#c(t,r);else if(`expr`in e){let r=this.#e.registerDerived(this.#t,t,e.expr,{resolveScaleResolution:this.#o});this.#r.set(t,r),n=()=>{throw Error(`Cannot set derived parameter "`+t+`".`)}}else r=_g(e,this),n=this.#c(t,r);if(`select`in e){if(r??=_g(e,this),!this.#n.has(t)){let e=this.#e.registerSelection(this.#t,t,r);this.#r.set(t,e),this.#n.set(t,t=>{e.set(t),this.#e.flushNow()}),n=this.#n.get(t)}n(r)}return this.#i.set(t,e),n}allocateSetter(e,t,n=!1){if(gg(e),this.#n.has(e))throw Error(`Setter already allocated for parameter: `+e);let r=this.#e.registerBase(this.#t,e,t,{notify:!n});this.#r.set(e,r);let i=e=>{r.set(e),this.#e.flushNow()};return this.#n.set(e,i),i}setValue(e,t){gg(e);let n=this.#n.get(e);if(!n)throw Error(`Writable parameter not found in this scope: `+e);n(t)}getValue(e){return this.#r.get(e)?.get()}subscribe(e,t){gg(e);let n=this.findRuntimeForParam(e);if(!n)throw Error(`Parameter not found: `+e);let r=n.#r.get(e);if(!r)throw Error(`Parameter found without local reference: `+e);return r.subscribe(t)}findValue(e){return this.findRuntimeForParam(e)?.getValue(e)}get paramConfigs(){return this.#i}hasLocalParam(e){return gg(e),this.#r.has(e)}hasConfiguredParamInScopeChain(e){return gg(e),this.#i.has(e)?!0:this.#a()?.hasConfiguredParamInScopeChain(e)??!1}findRuntimeForParam(e){return this.#r.has(e)?this:this.#a()?.findRuntimeForParam(e)}createExpression(e){return this.#e.createExpression(this.#t,e,{resolveScaleResolution:this.#o})}watchExpression(e,t,n={}){let r=this.createExpression(e),i=r.subscribe(t);return(n.scopeOwned??!0)&&this.#e.addScopeDisposer(this.#t,i),n.registerDisposer?.(i),r}#c(e,t){let n=this.#e.registerBase(this.#t,e,t);this.#r.set(e,n);let r=e=>{n.set(e),this.#e.flushNow()};return this.#n.set(e,r),r}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.#s||(this.#s=!0,this.#e.disposeScope(this.#t),this.#n.clear(),this.#r.clear(),this.#i.clear())}hasPointSelections(){for(let e of this.#i.values())if(hg(e)){let t=e.select;if(P(t)){if(t==`point`)return!0}else if(t.type==`point`)return!0}return!1}},tR=`VISIT_SKIP`,nR=`VISIT_STOP`,rR=e=>e,iR=class{spec;#e;#t;#n={};#r={};#i={};#a;#o;#s=!1;opacityFunction=rR;#c=[];#l=`none`;facetCoords=new hn([],JSON.stringify);constructor(e,t,n,r,i,a={}){if(!e)throw Error(`View spec must be defined!`);if(this.context=t,this.layoutParent=n,this.dataParent=r,this.#t=i,this.spec=e,r&&e.theme!==void 0)throw Error(`"theme" is only supported at the root specification. Use "config" and "style" for subtree customization.`);let o=r?r.getConfigScopes():[t.getBaseConfig()],s=e.config;if(this.#e=[...o,s].filter(e=>!!e),this.resolutions={scale:{},axis:{}},rP(this),this.options={blockEncodingInheritance:!1,layoutSizeParams:`own`,...a},this.flowHandle=void 0,this.needsAxes={x:!1,y:!1},this.paramRuntime=new eR(()=>this.dataParent?.paramRuntime,e=>this.getScaleResolution(e)),e.params)for(let t of e.params)this.paramRuntime.registerParam(t);this.options.layoutSizeParams!==`inherit`&&(this.#a=this.#u(`width`),this.#o=this.#u(`height`))}#u(e){if(!(this.paramRuntime.hasLocalParam(e)||this.paramRuntime.hasConfiguredParamInScopeChain(e)))return this.paramRuntime.allocateSetter(e,0)}get name(){return this.spec.name??this.#t}get explicitName(){return this.spec.name}get defaultName(){return this.#t}getConfig(){return fP(this.#e)}getCursorSpec(){return this.spec.cursor}getCursor(){let e=this.getCursorSpec();return z(e)?this.paramRuntime.evaluateAndGet(e.expr):e}watchCursor(e,t){let n=this.getCursorSpec();z(n)&&this.paramRuntime.watchExpression(n.expr,e,{scopeOwned:!1,registerDisposer:t})}getConfigScopes(){return this.#e.slice()}get coords(){return this.facetCoords.values().next().value}getPadding(){return this._cache(`size/padding`,()=>pF.createFromConfig(this.spec.padding))}getOverhang(){return pF.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache(`size/size`,()=>this.isConfiguredVisible()?new oF(this.#d(`width`),this.#d(`height`)):cF)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return cF;let e=this.getSize();return new oF(this.#d(`viewportWidth`)??e.width,this.#d(`viewportHeight`)??e.height)}#d(e){let t=this.spec[e],n=lR(t),r=e==`viewportWidth`||e==`viewportHeight`;if(n){if(r)throw new sP(`Cannot use step-based size with "${e}"!`,this);let n=t.step,i=this.getScaleResolution(e==`width`?`x`:`y`)?.getScale();if(i){let e;if(ym(i.type))e=i.domain().length;else if([`locus`,`index`].includes(i.type)){let t=i.domain();e=Zl(t)-t[0]}else throw new sP(`Cannot use step-based size with "${i.type}" scale!`,this);let t=i;return e=Lp(e,t.paddingInner(),t.paddingOuter()),{px:e*n,grow:0}}else throw new sP(`Cannot use step-based size with "${e}"!`,this)}else return(t&&fF(t))??(r?void 0:{px:0,grow:1})}registerStepSizeInvalidation(){this.#f(`width`,`x`),this.#f(`height`,`y`)}#f(e,t){let n=this.spec[e];if(!lR(n))return;let r=this.getScaleResolution(t);if(!r)throw new sP(`Cannot use 'step' size without a scale!`,this);let i=()=>this.invalidateSizeCache();r.addEventListener(`domain`,i),this.registerDisposer(()=>r.removeEventListener(`domain`,i))}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;let e=this.dataParent;return e?e.isDomainInert():!1}getDataInitializationState(){return this.#l}_setDataInitializationState(e){this.#l=e}isDataInitialized(){return this.#l===`ready`}getEffectiveOpacity(){return this.opacityFunction(this.layoutParent?.getEffectiveOpacity()??1)}getPathString(){return this.getLayoutAncestors().map(e=>e.name).reverse().join(`/`)}#p(e){let t=[],n=this;do t.push(n),n=n[e];while(n);return t}getLayoutAncestors(){return this.#p(`layoutParent`)}getDataAncestors(){return this.#p(`dataParent`)}handleBroadcast(e){for(let t of this.#n[e.type]||[])t(e)}_addBroadcastHandler(e,t){let n=this.#n[e];return n||(n=[],this.#n[e]=n),n.push(t),()=>{let n=this.#n[e];if(!n)return;let r=n.indexOf(t);r>=0&&n.splice(r,1)}}handleInteraction(e,t){let n=t?this.#r:this.#i;for(let t of n[e.type]||[])t(e)}addInteractionListener(e,t,n){let r=n?this.#r:this.#i,i=r[e];i||(i=[],r[e]=i),i.push(t)}removeInteractionListener(e,t,n){let r=(n?this.#r:this.#i)?.[e];if(r){let e=r.indexOf(t);e>=0&&r.splice(e,1)}}visit(e){try{let t=e(this);if(e.postOrder&&e.postOrder(this),t!==`VISIT_STOP`)return t}catch(e){throw e.view=this,e}}getDescendants(){let e=[];return this.visit(t=>{e.push(t)}),e}dispose(){for(let e of this.#c)e();this.#c.length=0;let 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(){let e=()=>void 0;e.postOrder=e=>{e.dispose()},this.visit(e)}configureViewOpacity(){(!this.opacityFunction||this.opacityFunction===rR)&&(this.opacityFunction=oR(this))}onBeforeRender(){this.#s||=!0}hasRendered(){return this.#s}render(e,t,n={}){n.firstFacet&&this.facetCoords.clear(),this.facetCoords.set(n.facetId,n.clipRect?t.intersect(n.clipRect):t),this.#a?.(t.width),this.#o?.(t.height)}getEncoding(){let e=this.dataParent&&!this.options.blockEncodingInheritance?this.dataParent.getEncoding():{},t=this.spec.encoding||{},n={...e,...t};for(let[e,t]of Object.entries(n))t===null&&delete n[e];return n}getFacetAccessor(e){if(this.layoutParent)return this.layoutParent.getFacetAccessor(this)}getFacetFields(e){let t=this.getEncoding().sample;return kh(t)?[t.field]:this.layoutParent?.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(e){let t=qh(e);return this.getDataAncestors().map(e=>e.resolutions.scale[t]).find(e=>e)}getAxisResolution(e){let t=qh(e);return this.getDataAncestors().map(e=>e.resolutions.axis[t]).find(e=>e)}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 gF(()=>this.dataParent?.getBaseUrl(),ah(this.spec.baseUrl))}isPickingSupported(){return!0}getTitleText(){let e=this.spec.title;if(e)return P(e)?e:z(e.text)?this.paramRuntime.evaluateAndGet(e.text.expr):e.text}_cache(e,t){return eP(this,e,t)}_invalidateCacheByPrefix(e,t=`self`){switch(t){case`self`:nP(this,e);break;case`ancestors`:for(let t of this.getLayoutAncestors())nP(t,e);break;case`progeny`:this.visit(t=>nP(t,e));break;default:}}invalidateSizeCache(){nP(this,`size`),this._invalidateCacheByPrefix(`size`,`ancestors`)}propagateInteraction(e){}};function aR(e){return`unitsPerPixel`in e}function oR(e){let t=`opacity`in e.spec?e.spec.opacity:void 0;if(t!==void 0){if(N(t))return e=>e*t;if(aR(t)){let n=t=>{let n=e.getScaleResolution(t),r=n?.getScale();if([`linear`,`index`,`locus`].includes(r?.type))return{scale:r,scaleResolution:n}},r=cR(t.values,`opacity.values`,e);if(!O(t.unitsPerPixel))throw new sP(`"opacity.unitsPerPixel" must be an array.`,e);let i=()=>1,a=[],o=()=>{let t=sR(cR(a.map(e=>e()),`opacity.unitsPerPixel`,e),r,e),n=Jf().domain(t.unitsPerPixel).range(t.values).clamp(!0);i=e=>n(e)};a=t.unitsPerPixel.map(t=>{if(z(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>{o(),e.context.animator.requestRender()});return()=>n(null)}else return()=>t}),o();let s=e=>{let t=e.scaleResolution.getAxisLength()||1e3;return Et(e.scale.domain())/t},c;if(t.channel===`auto`){let t=n(`x`),r=n(`y`);if(t&&r)c=()=>(s(t)+s(r))/2;else if(t)c=()=>s(t);else if(r)c=()=>s(r);else throw new sP(`Cannot find a resolved quantitative x or y scale for dynamic opacity!`,e)}else{let r=t.channel?n(t.channel):n(`x`)??n(`y`);if(!r)throw new sP(`Cannot find a resolved quantitative scale for dynamic opacity!`,e);c=()=>s(r)}return e=>i(c())*e}else if(z(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>e.context.animator.requestRender());return e=>n(null)*e}}return e=>e}function sR(e,t,n){if(!e.length)throw new sP(`"opacity.unitsPerPixel" must contain at least one stop.`,n);if(e.length!==t.length)throw new sP(`"opacity.unitsPerPixel" and "opacity.values" must have the same length.`,n);e.forEach((e,t)=>{if(e<=0)throw new sP(`Invalid opacity.unitsPerPixel value at index `+t+`. Stop values must be positive.`,n)});let r=e.map((e,n)=>({stop:e,value:t[n]}));r.sort((e,t)=>t.stop-e.stop);let i=r.map(e=>e.stop),a=r.map(e=>e.value);for(let t=1;t<e.length;t++)if(i[t-1]<=i[t])throw new sP(`"opacity.unitsPerPixel" must be strictly decreasing.`,n);return{unitsPerPixel:i,values:a}}function cR(e,t,n){if(!O(e))throw new sP(`"`+t+`" must evaluate to an array.`,n);return e.map((e,r)=>{if(!N(e)||!Number.isFinite(e))throw new sP(`Invalid `+t+` value at index `+r+`. Expected a finite number.`,n);return e})}var lR=e=>!!e?.step;function uR(e){return dR(e?.search,`search`)}function dR(e,t){if(!e)return;let n=Array.isArray(e)?e:[e];if(n.length===0)throw Error(`The `+t+` channel array must not be empty.`);let r=[];for(let e of n){if(!e||typeof e!=`object`||!(`field`in e))throw Error(`The `+t+` channel must be a field definition or an array of field definitions.`);let n=e.field;if(typeof n!=`string`)throw Error(`The `+t+` channel field definition must include a string field name.`);r.push(n)}return r}var fR=1;function pR(){let e=[0,1],t=[0,1],n=1,r=1,i=0,a=0,o=.5,s=0,c=i=>(i+o-e[0])/n*r+t[0];return c.invert=i=>(i-t[0])/r*n+e[0]-o,c.domain=function(t){if(arguments.length){e=mn(t),n=e[1]-e[0];let r=e[0]===0&&e[0]===0;if(n<fR&&!r){n=fR;let t=(e[0]+e[1])/2;e[0]=t-n/2,e[1]=t+n/2}return c}else return e.slice()},c.range=function(e){return arguments.length?(t=[...e],r=t[1]-t[0],c):t},c.numberingOffset=function(e){return arguments.length?(s=e,c):s},c.padding=function(e){return arguments.length?(a=e,i=Math.min(1,e),c):i},c.paddingInner=function(e){return arguments.length?(i=Math.min(1,e),c):i},c.paddingOuter=function(e){return arguments.length?(a=e,c):a},c.align=function(e){return arguments.length?(o=Math.max(0,Math.min(1,e)),c):o},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=t=>{let r=c.align(),i=c.numberingOffset();return An(e[0]-r+i,e[1]-r+i,Math.min(t,Math.ceil(n))).filter(Number.isInteger).map(e=>e-s)},c.tickFormat=(t,r)=>{if(r)throw Error(`Index scale's tickFormat does not support a specifier!`);let i=Mn(e[0],e[1],Math.min(t,Math.ceil(n)))<1e5?sr(`,`):sr(`.3s`);return e=>i(e+s)},c.copy=()=>pR().domain(e).range(t).paddingInner(i).paddingOuter(a).numberingOffset(s),c}var mR=sr(`,d`);function hR(e){return e.chrom+`:`+mR(Math.floor(e.pos+1))}function gR(e,t){return e.chrom+`:`+mR(Math.floor(e.pos+1))+`-`+(e.chrom==t.chrom?``:t.chrom+`:`)+mR(Math.ceil(t.pos))}var _R={dm6:`chr3R 32079331
|
|
685
688
|
chr3L 28110227
|
|
686
689
|
chr2R 25286936
|
|
687
690
|
chrX 23542271
|
|
@@ -803,39 +806,39 @@ chr19 61431566
|
|
|
803
806
|
chrX 171031299
|
|
804
807
|
chrY 91744698
|
|
805
808
|
chrM 16299`};function vR(e){if(!(e in _R))throw Error(`Unknown assembly: ${e}`);return _R[e].split(`
|
|
806
|
-
`).map(e=>{let t=e.split(` `);return{name:t[0],size:parseInt(t[1])}})}var yR=class{constructor(e){if(this.config={name:`custom`,...e},`baseUrl`in e)throw 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(!wR(e))throw Error(`Not a genome configuration: `+JSON.stringify(e));if(this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,ER(this.config))this.setChromSizes(this.config.contigs);else if(!TR(this.config)){let e=vR(this.config.name);if(e)this.setChromSizes(e);else throw 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(TR(this.config))try{let t=gF(e,this.config.url),n=await fetch(t);if(!n.ok)throw Error(`${n.status} ${n.statusText}`);this.setChromSizes(bR(await n.text()))}catch(e){throw Error(`Could not load chrom sizes: ${this.config.url}. Reason: ${e.message}`,{cause:e})}}hasChrPrefix(){return this.chromosomes.some(e=>e.name.startsWith(`chr`))}setChromSizes(e){this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map;let t=0;this.startByIndex=[0];for(let n=0;n<e.length;n++){this.startByIndex.push(t);let r=e[n].size,i={...e[n],continuousStart:t,continuousEnd:t+r,continuousInterval:[t,t+r],index:n,number:n+1,odd:!(n&1)};this.chromosomes.push(i);let a=i.name.replace(/^chr/i,``);for(let e of[`chr`+a,`CHR`+a,`Chr`+a,i.number,``+i.number,a,i.name])this.cumulativeChromPositions.set(e,t),this.chromosomesByName.set(e,i);t+=i.size}this.totalSize=t}getExtent(){return[0,this.totalSize]}toContinuous(e,t){let n=this.cumulativeChromPositions.get(e);if(n===void 0)throw Error(`Unknown chromosome/contig: `+e);return n+ +t}toChromosome(e){if(e>this.totalSize)return;e=Math.floor(e);let t=dn(this.startByIndex,e)-1;if(t>0&&t<=this.chromosomes.length)return this.chromosomes[t-1]}toChromosomal(e){let 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 gR(...this.toChromosomalInterval(e))}formatLocus(e){let t=this.toChromosomal(e);if(t)return hR(t)}toChromosomalInterval(e){let t=this.toChromosomal(e[0]+.5),n=this.toChromosomal(e[1]-.5);return n.pos+=1,[t,n]}toContinuousInterval(e){let[t,n]=e;return n||=t,[this.toContinuous(t.chrom,t.pos??0),this.toContinuous(n.chrom,n.pos??this.chromosomesByName.get(n.chrom)?.size)]}toDiscreteChromosomeIntervals(e){let t=e[0],n=e[1],r=[];if(t.chrom===n.chrom)r.push({chrom:t.chrom,startPos:t.pos,endPos:n.pos});else{let e=this.chromosomes.findIndex(e=>e.name===t.chrom),i=this.chromosomes.findIndex(e=>e.name===n.chrom);r.push({chrom:t.chrom,startPos:t.pos,endPos:this.chromosomes[e].size});for(let t=e+1;t<i;t++)r.push({chrom:this.chromosomes[t].name,startPos:0,endPos:this.chromosomes[t].size});r.push({chrom:n.chrom,startPos:0,endPos:n.pos})}return r}continuousToDiscreteChromosomeIntervals(e){return this.toDiscreteChromosomeIntervals([this.toChromosomal(e[0]),this.toChromosomal(e[1])])}parseInterval(e){let t=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(t){let e=t[1];if(t.slice(2).every(e=>e===void 0)){let t=this.getChromosome(e);return t?[t.continuousStart,t.continuousEnd]:void 0}let n=t[3]||e,r=parseInt(t[2].replace(/,/g,``)),i=t[4]===void 0?r:parseInt(t[4].replace(/,/g,``));return[this.toContinuous(e,r-1),this.toContinuous(n,i)]}}};function bR(e){return Kt(e).map(([e,t])=>({name:e,size:parseInt(t)}))}function xR(e){return Qe(e)&&`chrom`in e}function SR(e){return e.every(xR)}function CR(e){return SR(e)&&(e[1]??e[0]).pos!==void 0}function wR(e){return Qe(e)&&(`name`in e||TR(e)||ER(e))}function TR(e){return wR(e)&&`url`in e}function ER(e){return wR(e)&&`contigs`in e}var DR=1e6,OR=.65;function kR(){let e=pR().numberingOffset(1),t;e.genome=function(n){return arguments.length?(t=n,e):t},e.ticks=n=>{if(!t)return[];let r=e.domain(),i=r[1]-r[0],a=e.numberingOffset(),o=t.toChromosome(Math.max(r[0],0)),s=t.toChromosome(Math.min(r[1],t.totalSize-1)),c=Math.max(1,Math.min(n??10,Math.floor(i))),l=Mn(r[0],r[1],c);l<DR&&(l=Mn(r[0],r[1],c*OR)),l=Math.max(1,l);let u=[];for(let e=o.index;e<=s.index;e++){let n=t.chromosomes[e],i=Math.max(n.continuousStart+l,r[0]-(r[0]-n.continuousStart)%l),o=Math.min(n.continuousEnd-l/4,r[1]+1);for(let e=i;e<=o;e+=l){let t=e-a;t>=r[0]&&t<r[1]&&u.push(t)}}return u},e.tickFormat=(n,r)=>{if(!t)return;if(r)throw Error(`Locus scale's tickFormat does not support a specifier!`);let i=e.domain(),a=i[1]-i[0],o=e.numberingOffset(),s=Mn(i[0],i[1],Math.max(1,Math.min(n??10,Math.floor(a))))<DR?sr(`,`):sr(`.3s`),c=e=>e-t.toChromosome(e).continuousStart;return e=>s(c(e)+o)};let n=e.copy;return e.copy=()=>{let e=n(),r=t;return e.genome=function(t){return arguments.length?(r=t,e):r},e.genome(t)},e}function AR(e){return e.type==`locus`}function jR(e,t){let n=IR(e);return n?n.toChromosomal(t):t}function MR(e,t){let n=IR(e);return n&&xR(t)?n.toContinuous(t.chrom,t.pos):t}function NR(e,t){let n=IR(e);return n&&SR(t)?n.toContinuousInterval(t):t}function PR(e,t){let n=IR(e);return n?n.toChromosomalInterval(t):t}function FR(e){let t=IR(e);if(!t)throw Error(`No genome has been defined!`);return t.getExtent()}function IR(e){if(e&&`toChromosomal`in e)return e;if(e&&`genome`in e)return e.genome()}var LR=`locus`,RR=`index`,zR=5;function BR(e){let t=e.type;return!e.bins&&(t===`linear`||t===`pow`||t===`sqrt`)}function VR(e){return vm(e)&&![`sequential`,RR,LR].includes(e)}function HR(e){return e||{warn:(e,...t)=>console.warn(e,...t)}}var UR=Mt(`set.modified.clear.type.scheme.schemeExtent.schemeCount.domain.domainMin.domainMid.domainMax.domainRaw.domainImplicit.domainTransition.nice.zero.bins.range.rangeStep.round.reverse.interpolate.interpolateGamma.zoom.fp64.name`.split(`.`));function WR(e,t,n){n=HR(n);for(let r in e)if(!UR[r]){if(r===`padding`&&VR(t.type))continue;pt(t[r])?t[r](e[r]):n.warn(`Unsupported scale property: `+r)}let r=YR(t,e,n);r.domain&&t.domain(r.domain),r.applyOrdinalUnknown&&t.unknown(r.ordinalUnknown),ez(t,e,$R(t,e,r.count))}function GR(e,t){let n=!e.domain&&vm(e.type)?{...e,domain:[0,0]}:e,r=KR(n),i=L(r);if(!i)throw Error(`Unknown scale type: `+r);let a=i();return WR(n,a,t),a}function KR(e){var t=e.type,n=``,r;return t===`sequential`?Up+`-`+zp:(qR(e)&&(r=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(e.domainMid!=null):0,n=r===2?Up+`-`:r===3?Wp+`-`:``),(n+t||`linear`).toLowerCase())}function qR(e){let t=e.type;return vm(t)&&t!==`time`&&t!==`utc`&&(e.scheme||e.range&&e.range.length&&e.range.every(P))}function JR(e){if(!e.copy)return e;let t=e.copy();return t.type==null&&e.type!=null&&(t.type=e.type),t}function YR(e,t,n){if(!e.domain)return{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1};n=HR(n);let r=JR(e);var i=XR(r,t.domainRaw,n);if(i>-1)return{domain:r.domain(),count:i,ordinalUnknown:r.type===`ordinal`&&t.domainImplicit?tu:void 0,applyOrdinalUnknown:!1};var a=t.domain,o=r.type,s=t.zero||t.zero===void 0&&BR(r),c,l;return a?(VR(o)&&t.padding&&a[0]!==$e(a)&&(a=ZR(o,a,t.range,t.padding,t.exponent,t.constant)),(s||t.domainMin!=null||t.domainMax!=null||t.domainMid!=null)&&(c=(a=a.slice()).length-1||1,s&&(a[0]>0&&(a[0]=0),a[c]<0&&(a[c]=0)),t.domainMin!=null&&(a[0]=t.domainMin),t.domainMax!=null&&(a[c]=t.domainMax),t.domainMid!=null&&(l=t.domainMid,(l<a[0]||l>a[c])&&n.warn(`Scale domainMid exceeds domain min or max.`,l),a.splice(c,0,l))),r.domain(QR(o,a,n)),t.nice&&r.nice&&r.nice(t.nice!==!0&&Pm(r,t.nice)||null),{domain:r.domain(),count:a.length,ordinalUnknown:o===`ordinal`&&t.domainImplicit?tu:void 0,applyOrdinalUnknown:o===Jp}):{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1}}function XR(e,t,n){return t?(e.domain(QR(e.type,t,n)),t.length):-1}function ZR(e,t,n,r,i,a){n??=[0,1];var o=Math.abs($e(n)-n[0]),s=o/(o-2*r),c=e===`log`?lt(t,null,s):e===`sqrt`?ut(t,null,s,.5):e===`pow`?ut(t,null,s,i||1):e===`symlog`?dt(t,null,s,a||1):ct(t,null,s);return t=t.slice(),t[0]=c[0],t[t.length-1]=c[1],t}function QR(e,t,n){return xm(e)&&Math.abs(t.reduce(function(e,t){return e+(t<0?-1:t>0?1:0)},0))!==t.length&&n.warn(`Log scale domain includes zero: `+Dt(t)),t}function $R(e,t,n){let r=t.bins;if(r&&!Ze(r)){let t=(r.start==null||r.stop==null)&&e.domain(),n=r.start==null?t[0]:r.start,i=r.stop==null?$e(t):r.stop,a=r.step;a||Ke(`Scale bins parameter missing step property.`),r=Vn(n,i+a,a)}return r?e.bins=r:e.bins&&delete e.bins,e.type===`bin-ordinal`&&(r?!t.domain&&!t.domainRaw&&(e.domain(r),n=r.length):e.bins=e.domain()),n}function ez(e,t,n){var r=e.type,i=t.round||!1,a=t.range;if(t.rangeStep!=null)a=tz(r,t,n);else if(t.scheme&&(a=nz(r,t,n),pt(a))){if(e.interpolator)return e.interpolator(a);Ke(`Scale type ${r} does not support interpolating color schemes.`)}if(a&&Sm(r))return e.interpolator(wm(iz(a,t.reverse),t.interpolate,t.interpolateGamma));a&&t.interpolate&&e.interpolate?e.interpolate(Em(t.interpolate,t.interpolateGamma)):pt(e.round)?e.round(i):pt(e.rangeRound)&&e.interpolate(i?Jd:Gd),a&&e.range(iz(a,t.reverse))}function tz(e,t,n){e!==`band`&&e!==`point`&&Ke(`Only band and point scales support rangeStep.`);var r=(t.paddingOuter==null?t.padding:t.paddingOuter)||0,i=e===`point`?1:(t.paddingInner==null?t.padding:t.paddingInner)||0;return[0,t.rangeStep*Lp(n,i,r)]}function nz(e,t,n){var r=t.schemeExtent,i=t.schemeCount,a,o;return Ze(t.scheme)?o=wm(t.scheme,t.interpolate,t.interpolateGamma):(P(t.scheme)?a=t.scheme.toLowerCase():(a=t.scheme.name.toLowerCase(),r=t.scheme.extent??r,i=t.scheme.count??i),o=Nm(a),o||Ke(`Unrecognized scheme name: ${t.scheme}`)),n=e===`threshold`?n+1:e===`bin-ordinal`?n-1:e===`quantile`||e===`quantize`?+i||zR:n,Sm(e)?rz(o,r,t.reverse):pt(o)?Tm(rz(o,r),n):e===`ordinal`?o:o.slice(0,n)}function rz(e,t,n){return pt(e)&&(t||n)?Cm(e,iz(t||[0,1],n)):e}function iz(e,t){return t?e.slice().reverse():e}var az=class{#e;#t=new Set;#n;#r;#i;#a;#o=0;constructor({getParamRuntime:e,onRangeChange:t,onDomainChange:n,getGenomeStore:r}){this.#n=e,this.#r=t,this.#i=n,this.#a=r}get scale(){return this.#e}getLocusGenome(e){let t=this.#a?.();if(!t)throw Error(`No genome has been defined!`);return e?t.getGenome(e):t.getGenome()}createScale(e){let t=GR({...this.#c(e),range:void 0});return t.props=e,`unknown`in t&&t.unknown(null),this.#e=t,this.#s(e),this.#l(),this.#u(),this.#e}#s(e){let t=this.#e;!t||!AR(t)||t.genome(this.getLocusGenome(e.assembly))}reconfigureScale(e){let t=this.#e;!t||t.type==`null`||(WR({...this.#c(e),range:void 0},t),t.props=e,this.#l())}withDomainNotificationsSuppressed(e){this.#o+=1;try{e()}finally{--this.#o}}#c(e){let{assembly:t,domainIndexer:n,__rangeExprScope:r,...i}=e;return i}#l(){let e=this.#e;if(!e)return;let t=e.props;this.#t.forEach(e=>e.invalidate()),this.#t.clear();let n=t.__rangeExprScope?.paramRuntime??this.#n(),r=sz({range:t.range,reverse:t.reverse,createExpression:e=>n.createExpression(e),registerExpr:e=>this.#t.add(e)});if(!r)return;if(`values`in r){e.range(r.values);return}let i=()=>e.range(r.evaluate());r.setup(i),i()}#u(){let e=this.#e;if(!e)return;let t=e.range,n=e.domain,r=()=>this.#r?.();oz(e,{onRangeChange:r,onDomainChange:()=>{this.#o>0||this.#i?.()},range:t,domain:n}),r()}dispose(){this.#t.forEach(e=>e.invalidate()),this.#t.clear()}};function oz(e,{onRangeChange:t,onDomainChange:n,range:r,domain:i}){typeof r==`function`&&(e.range=(function(e){if(arguments.length)r(e),t?.();else return r()})),typeof i==`function`&&(e.domain=(function(e){if(arguments.length)i(e),n?.();else return i()}))}function sz({range:e,reverse:t,createExpression:n,registerExpr:r}){if(!e||!Ze(e))return null;let i=(e,t)=>t?e.slice().reverse():e;if(e.some(z)){let a;return{dynamic:!0,evaluate:()=>i(a.map(e=>e()),t),setup:t=>{a=e.map(e=>{if(z(e)){let i=n(e.expr);return i.subscribe(t),r(i),()=>i(null)}return()=>e})}}}return{dynamic:!1,values:i(e,t)}}function cz(e,t,n){if(n||=[],e.some(e=>e===null)){if(e.every(e=>e===null))return null;throw console.warn(e),Error(`Cannot merge objects with nulls!`)}let r={},i=(e,t)=>e===t||lz(e)&&lz(t)||lz(e)&&t===!0||e===!0&&Qe(t)||Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((e,n)=>e===t[n]),a=e=>{for(let a in e){let o=e[a];if(!n.includes(a)&&o!==void 0)if(r[a]!==void 0&&!i(r[a],o))console.warn(`Conflicting property ${a} of ${t}: (${JSON.stringify(r[a])} and ${JSON.stringify(e[a])}). Using ${JSON.stringify(r[a])}.`);else{let e=r[a];if(lz(e))lz(o)&&(r[a]=cz([e,o],a));else if(lz(o)){if(!(e===!0||e===void 0))throw Error(`Bug in merge! Target is: `+e);r[a]=cz([{},o],a)}else r[a]=o}}};for(let t of e)a(t);return r}function lz(e){return Qe(e)&&!Array.isArray(e)}var uz={nominal:`nominalColorScheme`,ordinal:`ordinalColorScheme`,quantitative:`quantitativeColorScheme`},dz=new Set([`rect`]),fz=new Set([`shape`,`size`,`angle`,`heatmap`,`ramp`,`diverging`]);function pz(e){return typeof e==`string`||typeof e==`object`&&!!e}function mz(e){return fz.has(e)}function hz(e,t){if(mz(t))return yz(e)[t]}function gz(e){if([`nominal`,`ordinal`,`quantitative`,`index`,`locus`].includes(e))return e}function _z(e){if(!e)return{};let t={...e};for(let e of[`nominal`,`ordinal`,`quantitative`,`index`,`locus`,`nominalColorScheme`,`ordinalColorScheme`,`quantitativeColorScheme`,`indexColorScheme`,`locusColorScheme`])delete t[e];return t}function vz(e,t){let n=gz(t);return fP(e.flatMap(e=>{let t=e.scale;return[t,t&&n?t[n]:void 0]}))}function yz(e){return fP(e.map(e=>e.range))}function bz(e,{channel:t,dataType:n,isExplicitDomain:r,markTypes:i,hasDomainMid:a}){let o=vz(e,n),s=yz(e),c={..._z(o)};if(r?c.zero=!1:c.zero===void 0&&o.zero!==void 0&&(c.zero=o.zero),Hh(t)&&c.nice===void 0&&(c.nice=o.nice===void 0?!r:o.nice),Jh(t)&&c.scheme===void 0)if(n==`quantitative`){let e=a||o.domainMid!==void 0?s.diverging:i?.length&&i.every(e=>dz.has(e))?s.heatmap:s.ramp,t=pz(e)?e:o.quantitativeColorScheme;pz(t)&&(c.scheme=t)}else{let e=o[uz[n]??uz.quantitative];pz(e)&&(c.scheme=e)}else Yh(t)&&c.range===void 0?c.range=t==`shape`?s.shape??[]:[]:t==`size`&&c.range===void 0?c.range=s.size:t==`angle`&&c.range===void 0&&(c.range=s.angle);return c}var xz=`quantitative`,Sz=`ordinal`,Cz=`nominal`;function wz(e,t){if(t==`index`||t==`locus`){if(Vh(e))return t;throw Error(e+` does not support `+t+` data type. Only positional channels do.`)}let n={x:[`band`,`band`,`linear`],y:[`band`,`band`,`linear`],size:[void 0,`point`,`linear`],opacity:[void 0,`point`,`linear`],fillOpacity:[void 0,`point`,`linear`],strokeOpacity:[void 0,`point`,`linear`],color:[`ordinal`,`ordinal`,`linear`],fill:[`ordinal`,`ordinal`,`linear`],stroke:[`ordinal`,`ordinal`,`linear`],strokeWidth:[void 0,void 0,`linear`],shape:[`ordinal`,`ordinal`,void 0],dx:[void 0,void 0,`null`],dy:[void 0,void 0,`null`],angle:[void 0,void 0,`linear`],sample:[`null`,void 0,void 0]},r=[`sample`].includes(e)?`null`:n[e]?n[e][[Cz,Sz,xz].indexOf(t)]:t==`quantitative`?`linear`:`ordinal`;if(r===void 0)throw Error(`Channel "`+e+`" is not compatible with "`+t+`" data type. Use of a proper scale may be needed.`);return r}function Tz(e,t){Hh(t)&&e.type!==`ordinal`&&(e.range=[0,1]),t==`opacity`&&vm(e.type)&&e.clamp===void 0&&(e.clamp=!0)}function Ez({channel:e,dataType:t,orderedMembers:n,isExplicitDomain:r,configScopes:i}){let a=n,o=a.map(e=>typeof e.view.getMarkType==`function`?e.view.getMarkType():void 0).filter(e=>!!e),s=cz(a.map(e=>e.channelDef.scale).filter(e=>e!==void 0),`scale`,[`domain`]);if(s===null||s.type==`null`)return{type:`null`};let c={...bz(i,{channel:e,dataType:t,isExplicitDomain:r,markTypes:o,hasDomainMid:s.domainMid!==void 0}),...s};if(c.type||=wz(e,t),typeof c.range==`string`){if(!mz(c.range))throw Error(`Unknown named scale range "`+c.range+`". Supported names: shape, size, angle, heatmap, ramp, diverging.`);let t=hz(i,c.range);if(t===void 0)throw Error(`Named scale range "`+c.range+`" is not configured in config.range.`);Jh(e)&&(typeof t==`string`||typeof t==`object`&&t&&!Array.isArray(t))?(c.scheme=t,delete c.range):c.range=t}if(e==`y`&&ym(c.type)&&c.reverse==null&&(c.reverse=!0),c.range&&c.scheme&&delete c.scheme,c.domainTransition===void 0&&(c.domainTransition=!a.some(e=>z(e.channelDef.scale?.domain))),Array.isArray(c.range)&&c.range.some(z)&&a.length>0){let e=a.find(e=>e.channelDef.scale?.range!==void 0)?.view;e&&(c.__rangeExprScope=e)}if(!(`zoom`in c)){let e=vz(i,t);e.zoom===void 0?[`index`,`locus`].includes(c.type)&&(c.zoom=!0):c.zoom=e.zoom}return Tz(c,e),c}function Dz(e){return e===`index`||e===`locus`}function Oz(e,t){return Dz(e)?jz(t):t}function kz(e,t){return Dz(e)?Mz(t):t}function Az(e,t){return t&&Dz(e)?jz(t):t}function jz(e){return[e[0],e[1]+Nz(e)]}function Mz(e){return[e[0],e[1]-Nz(e)]}function Nz(e){return e[1]>=e[0]?1:-1}function Pz(e,t){let n=e.findRuntimeForParam(t);if(!n)throw Error(`Selection domain parameter "${t}" was not found.`);return n}function Fz(e,t){if(e){if(!ig(e))throw Error(`Selection domain parameter "${t}" must be an interval selection.`);return e}}function Iz(e,t,n){let r=e.paramRuntime.findRuntimeForParam?Pz(e.paramRuntime,t):e.paramRuntime;return{runtime:r,selection:Fz(r.getValue?r.getValue(t):e.paramRuntime.findValue(t),t)}}function Lz(e,t,n,r){let i=[];return e.visit(e=>{let a=e.paramRuntime?.paramConfigs?.get(n);if(!a||!hg(a))return;let o=sg(a.select);!lg(o)||!o.encodings?.includes(r)||e.paramRuntime.findRuntimeForParam(n)===t&&i.push({view:e,param:a})}),i}function Rz(e,t,n,r){let i=new Set,a=[e.getLayoutAncestors?.(),e.getDataAncestors?.(),[e]];for(let e of a)for(let a of e??[]){if(!a||i.has(a))continue;i.add(a);let e=a.paramRuntime?.paramConfigs?.get(n);if(!e||!hg(e))continue;let o=sg(e.select);if(!(!lg(o)||!o.encodings?.includes(r))&&a.paramRuntime.findRuntimeForParam?.(n)===t)return!0}return!1}function zz(e,t,n={}){if(!e||e.length!==2)return;let r=Number(e[0]),i=Number(e[1]);if(!Number.isFinite(r)||!Number.isFinite(i))return;let a=Math.min(r,i),o=Math.max(r,i);if(a=Math.max(t[0],a),o=Math.min(t[1],o),!(a>o)&&!(n.roundToIntegers&&(a=Math.ceil(a),o=Math.ceil(o),a=Math.max(t[0],a),o=Math.min(t[1],o),a>o)))return[a,o]}var Bz=class e extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(t){if(t instanceof e&&t.type!=this.type)throw Error(`Cannot combine different types of domains: ${this.type} and ${t.type}`);for(let e of t)this.extend(e);return this}extendAllWithAccessor(e,t){for(let n of e)this.extend(t(n));return this}},Vz=class extends Bz{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)}},Hz=class extends Bz{constructor(){super(),this.type=`ordinal`,this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)||this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this}},Uz=class extends Hz{constructor(){super(),this.type=`nominal`}},Wz=class extends Bz{constructor(e){super();let t=0;for(let n=1;n<e.length;n++)t+=Math.sign(e[n]-e[n-1]);if(Math.abs(t)!=e.length-1)throw Error(`Piecewise domain must be strictly increasing or decreasing: `+JSON.stringify(e));e.forEach(e=>this.push(e))}extend(e){if(this.includes(e))return this;throw Error(`Piecewise domains are immutable and cannot be unioned!`)}},Gz={quantitative:Vz,index:Vz,locus:Vz,nominal:Uz,ordinal:Hz};function Kz(e,t){if(e==`quantitative`&&qz(t)){let n=new Wz(t);return n.type=e,n}else if(Gz[e]){let n=new Gz[e];return n.type=e,t&&n.extendAll(t),n}throw Error(`Unknown type: `+e)}function qz(e){return e&&e.length>0&&e.length!=2&&e.every(e=>typeof e==`number`)}var Jz=class{#e;#t;#n;#r;#i;#a;#o;#s=void 0;#c=!0;#l=new Map;#u=new WeakMap;constructor({getActiveMembers:e,getAllMembers:t,getDataMembers:n,getType:r,getLocusExtent:i,fromComplexInterval:a}){this.#e=e,this.#t=t??e,this.#n=n??e,this.#r=r,this.#i=i,this.#a=a}get initialDomainSnapshot(){return this.#o}hasConfiguredDomain(e={}){return!!this.getConfiguredDomain(e)}hasSelectionConfiguredDomain(){return this.getSelectionConfiguredDomainBindingInfo(),!!this.#s}getSelectionConfiguredDomainBindingInfo(){return this.#s||!this.#c||this.getConfiguredDomain(),this.#s}getSelectionConfiguredDomainInfo(){let e=this.getSelectionConfiguredDomainBindingInfo();if(e)return{param:e.param,encoding:e.encoding}}invalidateConfiguredDomain(){this.#c=!0,this.#s=void 0,this.#l.clear()}getDefaultDomain(e=!1,t){let n=this.#r();return oB(n,this.#i,e&&n!==`locus`?this.getDataDomain():void 0,t)}getConfiguredOrDefaultDomain(e=!1,t,n={}){return this.getConfiguredDomain(n)??this.getDefaultDomain(e,t)}getConfiguredDomain(e={}){let t=e.includeSelectionInitial??!0;if(!this.#c&&this.#l.has(t))return this.#l.get(t);let n=Yz(this.#e(),this.#a,t);return nB(this.#t(),n.selectionRef),this.#s=n.selectionRef,this.#l.set(t,n.domain),this.#c=!1,n.domain}getDataDomain(){return aB(this.#n(),this.#r,e=>this.#d(e))}captureInitialDomain(e,t,n){if(!this.#o&&vm(e.type)){let t=n??e.domain();Et(t)>0&&(this.#o=t)}return t?!1:(this.#o=n??e.domain(),!0)}#d(e){let t=this.#u.get(e);if(t)return t;let n=e.view.mark.encoders;if(!n)return[];let r=n[e.channel];if(!r)return[];let i=wh(r);if(i.length===0)return[];let a=i.filter(ph).filter(e=>!e.channelDef.domainInert);return this.#u.set(e,a),a}};function Yz(e,t,n){let r=Array.from(e).filter(e=>e.contributesToDomain).filter(e=>e.channelDef.scale?.domain),i={domains:[],selectionRef:void 0,selectionRuntime:void 0,selectionDescription:void 0,hasLiteralDomain:!1};for(let e of r){let r=Xz(e,t,n);if(r.kind===`selection`){Zz(i,r);continue}Qz(i,r)}return $z(i)}function Xz(e,t,n){let r=e.channelDef.scale.domain;return iB(r)?{kind:`selection`,...eB(e,r,t,n)}:z(r)?{kind:`literal`,domain:tB(e.channelDef.type,e.view.paramRuntime.createExpression(r.expr)(),t)}:{kind:`literal`,domain:tB(e.channelDef.type,r,t)}}function Zz(e,t){if(e.hasLiteralDomain)throw Error(`Cannot mix selection-driven and literal configured domains on a shared scale.`);if(e.selectionRef&&(e.selectionRef.runtime!==t.runtime||e.selectionRef.param!==t.param||e.selectionRef.encoding!==t.encoding))throw Error(`Conflicting selection domain references on a shared scale: `+e.selectionDescription+` vs `+t.description+`.`);e.selectionRuntime=t.runtime,e.selectionDescription=t.description,e.selectionRef={param:t.param,encoding:t.encoding,hasInitial:(e.selectionRef?.hasInitial??!1)||t.hasInitial,runtime:t.runtime},t.domain&&e.domains.push(t.domain)}function Qz(e,t){if(e.selectionRuntime)throw Error(`Cannot mix literal configured domains with selection-driven domains on a shared scale.`);e.hasLiteralDomain=!0,e.domains.push(t.domain)}function $z(e){return e.domains.length>0?{domain:e.domains.reduce((e,t)=>e.extendAll(t)),selectionRef:e.selectionRef}:e.selectionRuntime?{domain:void 0,selectionRef:e.selectionRef}:{domain:void 0,selectionRef:void 0}}function eB(e,t,n,r){let i=t.param,a=rB(e.channel,t,i),o=Iz(e.view,i,a),s=t.initial!==void 0,c=o.selection?.intervals[a],l=i+`.`+a;return!c||c.length!==2?{domain:r&&t.initial?tB(e.channelDef.type,t.initial,n):void 0,description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}:{domain:Kz(e.channelDef.type,n(c)),description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}}function tB(e,t,n){let r=n(t);return Kz(e,e===`locus`&&SR(t)&&!CR(t)?r:Oz(e,r))}function nB(e,t){if(!t||e.size<2||!Array.from(e).some(e=>Rz(e.view,t.runtime,t.param,t.encoding)))return;let n=Array.from(new Set(Array.from(e).filter(e=>e.contributesToDomain).map(e=>e.view.getPathString?.()??e.view.name??`(unknown)`)));throw Error(`Selection domain reference "${t.param}.${t.encoding}" cannot use a shared ${t.encoding} scale when the same interval selection is defined in that shared view group (${n.join(`, `)}). This creates a feedback loop between brushing and the scale domain. Make the linked ${t.encoding} scale independent, for example with "resolve": { "scale": { "${t.encoding}": "independent" } } on the common ancestor.`)}function rB(e,t,n){if(t.encoding)return t.encoding;let r=qh(e);if(r===`x`||r===`y`)return r;throw Error(`Selection domain reference "${n}" on channel "${e}" requires an explicit "encoding" ("x" or "y").`)}function iB(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.param==`string`}function aB(e,t,n){let r=t(),i=new Map;for(let t of e){if(!t.contributesToDomain)continue;let e=n(t);if(e.length===0)continue;let a=t.view.getCollector();for(let t of e){let e=_h(t,r),n=a??null,o=i.get(n);if(o||(o=new Map,i.set(n,o)),o.has(e))continue;let s;if(a)s=a.getDomain(e,r,t);else if(t.constant)s=Kz(r),s.extend(t({}));else continue;o.set(e,s)}}if(i.size===0)return;let a=Kz(r);for(let e of i.values())for(let t of e.values())a.extendAll(t);return a}function oB(e,t,n,r){return e==`locus`?t(r):e==`index`?Az(e,n)??[]:n??[]}function sB(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}function cB(e,t,n){return e*(t/e)**+n}var lB=e=>new Promise(t=>setTimeout(t,e));function uB(){return{canceled:!1}}function dB(e){let t=e.requestAnimationFrame||window.requestAnimationFrame,n=e.signal,r=e.cancelToken,i=()=>new Promise((i,a)=>{if(r?.canceled)return i();if(n?.aborted)return a(`aborted`);let o=performance.now(),s=o+(e.duration||1e3),c=typeof e.from==`number`?e.from:0,l=typeof e.to==`number`?e.to:1,u=e.easingFunction||(e=>e),d=e=>(e-o)/(s-o),f=e=>e*(l-c)+c,p=e=>Math.max(0,Math.min(1,e)),m=o=>{if(r?.canceled){i();return}n?.aborted?a(`aborted`):(e.onUpdate(f(u(p(d(o))))),o<s?t(m):(e.onUpdate(f(u(1))),i()))};t(m)});return e.delay?r?.canceled?Promise.resolve():n?.aborted?Promise.reject(`aborted`):lB(e.delay).then(i):i()}function fB(e,t,n,r,i={}){let a=i.onUnsupported??`throw`;switch(e.type){case`linear`:case`index`:case`locus`:return ct(t,n,r);case`log`:return lt(t,n,r);case`pow`:case`sqrt`:return ut(t,n,r,e.exponent());case`symlog`:return dt(t,n,r,e.constant());default:if(a===`identity`)return t;throw Error(`Zooming is not implemented for: `+e.type)}}var pB=class{#e;#t;#n;#r;#i;#a;#o;#s=null;constructor({getScale:e,getAnimator:t,renderImmediately:n,getInitialDomainSnapshot:r,getResetDomain:i,fromComplexInterval:a,getGenomeExtent:o}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a,this.#o=o}getZoomExtent(){let e=this.#e(),t=e.props.zoom;return hB(e,t,this.#a,this.#o,this.#r)}isZoomable(){return this.isZoomingSupported()&&!!this.#e().props.zoom}isZoomingSupported(){let e=this.#e().type;return vm(e)&&!ym(e)}getDomainChangeAction(e,t){return Yl(t,e)?`none`:this.isZoomable()?`restore`:this.isZoomingSupported()?`animate`:`notify`}isZoomed(){return this.isZoomingSupported()&&!Yl(this.#i(),this.#e().domain())}zoom(e,t,n){if(!this.isZoomingSupported())return!1;let r=this.#e(),i=r.domain(),a=gB(r,i,e,t,n),o=this.getZoomExtent();return a=ft(a,o[0],o[1]),[0,1].some(e=>a[e]!=i[e])?(r.domain(a),!0):!1}async zoomTo(e,t=!1){let{duration:n,renderImmediately:r}=mB(t);if(!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let i=this.#e(),a=_B(i.type,e,this.#a),o=this.#t(),s=i.domain();if(n>0&&s.length==2){if(r)throw Error(`renderImmediately is not supported for animated zooms.`);let e=s[1]-s[0],t=a[1]-a[0],c=s[0]+e/2,l=a[0]+t/2,u=s[0]==a[0],d=s[1]==a[1];this.#c();let f=uB();this.#s=f,await o.transition({duration:n,easingFunction:sB,cancelToken:f,onUpdate:n=>{let r=cB(e,t,n),a=e==t?n:(e-r)/(e-t),o=a*l+(1-a)*c,f=[u?s[0]:o-r/2,d?s[1]:o+r/2];i.domain(f)}}),this.#s===f&&(this.#s=null),i.domain(a)}else this.#c(),i.domain(a),r?this.#n():o?.requestRender()}#c(){this.#s&&=(this.#s.canceled=!0,null)}resetZoom(){if(!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let e=this.#e(),t=e.domain(),n=this.#i();return[0,1].some(e=>n[e]!=t[e])?(e.domain(n),!0):!1}getZoomLevel(){return this.isZoomable()?Et(this.getZoomExtent())/Et(this.#e().domain()):1}};function mB(e){if(e===void 0)return{duration:0,renderImmediately:!1};if(St(e))return{duration:e?700:0,renderImmediately:!1};if(typeof e==`number`)return{duration:e,renderImmediately:!1};let t=e.duration??0;return{duration:St(t)?t?700:0:t,renderImmediately:e.renderImmediately===!0}}function hB(e,t,n,r,i){return vB(t)&&Ze(t.extent)?_B(e.props.type,t.extent,n):t&&e.props.type==`locus`?r():i()}function gB(e,t,n,r,i){let a=[...t],o=e.invert(r);switch(e.props.reverse&&(i=-i),`align`in e&&(o+=e.align()),e.type){case`linear`:case`index`:case`locus`:a=at(a,i||0);break;case`log`:a=ot(a,i||0);break;case`pow`:case`sqrt`:a=j(a,i||0,e.exponent());break;case`symlog`:if(i!==0)throw Error(`Panning is not implemented for: `+e.type);break;default:throw Error(`Zooming is not implemented for: `+e.type)}return fB(e,a,o,n)}function _B(e,t,n){let r=e===`locus`?n(t):t;return e===`locus`&&SR(t)&&!CR(t)?r:Oz(e,r)}function vB(e){return Qe(e)}function yB(e){let t=e.view.getPathString(),n=e.channel??``;return t+`|`+n}function bB(e){return Array.from(e).sort((e,t)=>yB(e).localeCompare(yB(t)))}L(`index`,pR,[`continuous`]),L(`locus`,kR,[`continuous`]),L(`null`,MM,[]);var xB=class{#e=new Set;#t=new Set;#n;#r={domain:new Set,range:new Set};#i;#a;#o;#s;#c=!1;#l=[];#u=0;#d=[];#f=!1;#p=void 0;#m;#h=0;#g=0;#_=!1;constructor(e,t){this.channel=e,this.type=null,this.name=void 0,this.#m=t,this.#a=new Jz({getActiveMembers:()=>this.#b(),getAllMembers:()=>this.#e,getDataMembers:()=>this.#b(this.#t),getType:()=>this.type,getLocusExtent:e=>this.#S(e),fromComplexInterval:this.fromComplexInterval.bind(this)}),this.#i=new az({getParamRuntime:()=>this.#y.paramRuntime,onRangeChange:()=>this.#w(`range`),onDomainChange:()=>this.#w(`domain`),getGenomeStore:()=>this.#x.genomeStore}),this.#o=new pB({getScale:()=>this.getScale(),getAnimator:()=>this.#x.animator,renderImmediately:()=>this.#x.renderImmediately(),getInitialDomainSnapshot:()=>this.#a.initialDomainSnapshot,getResetDomain:()=>this.#k(),fromComplexInterval:this.fromComplexInterval.bind(this),getGenomeExtent:()=>this.#S()})}get#v(){let e=this.#e.values().next().value;if(!e)throw Error(`ScaleResolution has no members!`);return e.view}get#y(){return this.#m??this.#v}#b(e=this.#e){let t=new Set;for(let n of e){let e=n.view;e.isConfiguredVisible()&&(!e.isDataInitialized()&&!n.channelDef?.scale?.domain||t.add(n))}return t}get#x(){return this.#y.context}get zoomExtent(){return(this.#i.scale&&vm(this.#i.scale.type)&&this.#o.getZoomExtent())??[-1/0,1/0]}#S(e){return FR(this.#C(e))}#C(e){if(this.type===`locus`)return this.#i.scale??this.#i.getLocusGenome(e)}addEventListener(e,t){this.#r[e].add(t)}removeEventListener(e,t){this.#r[e].delete(t)}#w(e){e===`domain`&&this.#u===0&&this.syncLinkedSelectionFromDomain();for(let t of this.#r[e].values())t({type:e,scaleResolution:this})}#T(e){this.#u+=1;try{e()}finally{--this.#u}}syncLinkedSelectionFromDomain(){let e=this.#a.getSelectionConfiguredDomainBindingInfo();if(!e||!this.isZoomable())return;let t=Fz(e.runtime.getValue(e.param),e.param);if(!t)return;let n=this.#E(this.getScale().domain());if(!n)return;let r=this.#E(this.#a.getDefaultDomain(!0)),i=r&&Yl(n,r)?null:n;SB(t.intervals[e.encoding]??null,i)||e.runtime.setValue(e.param,{...t,type:`interval`,intervals:{...t.intervals,[e.encoding]:i}})}#E(e){return zz(e,this.zoomExtent)}#D(){return this.#a.getSelectionConfiguredDomainBindingInfo()}#O(){return!this.#f}#k(e=!1,t){return this.#a.getConfiguredOrDefaultDomain(e,t,{includeSelectionInitial:this.#O()})}#A(){for(let e of this.#e)if(e.contributesToDomain&&e.channelDef.scale?.domain!==void 0)return!0;return!1}#j(e){let t=Fz(e.runtime.getValue(e.param),e.param);if(!t)return null;let n=t.intervals[e.encoding];return n&&n.length===2?n:null}#M(e,t){t?this.#f=!1:e&&(this.#f=!0)}#N(e){let t=CB(e),{channel:n,channelDef:r}=t,i=r.type==null&&this.type;if(n!=`sample`&&!r.type&&!Gh(n)&&!i)throw Error(`The "type" property must be defined in channel definition: "${n}": ${JSON.stringify(r)}. Must be one of: "quantitative", "ordinal", "nominal", "locus", "index"`);let a=n==`sample`?`nominal`:r.type,o=r?.scale?.name,s=r.scale?.type??(a===`index`||a===`locus`?a:void 0);if(s&&[`index`,`locus`].includes(s)&&!Vh(this.channel))throw Error(`Index and locus scales are only supported on positional channels (x/y). Channel "${this.channel}" resolves to scale type "${s}".`);if(o){if(this.name!==void 0&&o!=this.name)throw Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!i){if(!this.type)this.type=a;else if(a!==this.type&&!Gh(n))throw Error(`Can not use shared scale for different data types: ${this.type} vs. ${a}. Use "resolve: independent" for channel ${this.channel}`)}return this.#e.add(t),t.contributesToDomain&&this.#t.add(t),t}#P(){this.#_=!1,this.#U(),this.#G(),this.#R(),this.#z()}#F(){this.#g>0?this.#_=!0:this.#P()}static registerInBatch(e,t){let n=Array.from(e);for(let e of n)e.#g++;try{return t()}finally{for(let e of n)e.#g--,e.#g===0&&e.#_&&e.#P()}}registerMember(e){let t=this.#N(e);return this.#F(),()=>{let e=this.#e.delete(t);return e&&(this.#t.delete(t),this.#F()),e&&this.#e.size===0}}dispose(){this.#I(),this.#L(),this.#r.domain.clear(),this.#r.range.clear(),this.#i.dispose()}#I(){for(let e of this.#l)e();this.#l=[],this.#p=void 0}#L(){for(let e of this.#d)e();this.#d=[]}#R(){if(this.#I(),this.#e.size===0)return;let e=this.#D();e&&(this.#p=this.#j(e),this.#l.push(e.runtime.subscribe(e.param,()=>{let t=this.#p,n=this.#j(e);this.#M(t,n),this.#p=n,this.#G(),this.reconfigureDomain()})))}#z(){if(this.#L(),this.#e.size===0)return;let e=()=>{this.#G(),this.reconfigureDomain()};for(let t of this.#e){if(!t.contributesToDomain)continue;let n=t.channelDef.scale?.domain;if(!z(n))continue;let r=t.view.paramRuntime.createExpression(n.expr).subscribe(e);this.#d.push(r)}}#B(){for(let e of this.#e)if(e.view.hasRendered())return!0;return!1}registerCollectorSubscriptions(e,t){let n=new Set;for(let e of t)e.channelDef.domainInert||n.add(_h(e,this.type));if(n.size===0)return()=>void 0;let r=()=>{this.reconfigureDomain()},i=[];for(let t of n)i.push(e.subscribeDomainChanges(t,r));return()=>{for(let e of i)e()}}isDomainDefinedExplicitly(){return this.#A()}isDomainInitialized(){let e=this.#i.scale;if(!e)return!1;let t=e.domain();return vm(e.type)?t.length>2||t.length==2&&(t[0]!==0||t[1]!==0):t.length>0}#V(){return eP(this,`mergedScaleProps`,()=>{let e=Ez({channel:this.channel,dataType:this.type,orderedMembers:this.#W(),isExplicitDomain:this.isDomainDefinedExplicitly(),configScopes:this.#y.getConfigScopes()});return this.#K(e),e})}#H(){tP(this,`mergedScaleProps`)}#U(){this.#n=void 0}#W(){return this.#n||=bB(this.#e),this.#n}#G(){this.#a.invalidateConfiguredDomain(),this.#H()}#K(e){let t=this.#D();if(!t||e===null||e.type===`null`)return;let n=vm(e.type)&&!ym(e.type)&&!!e.zoom;if(t.hasInitial&&!n)throw Error(`Selection domain reference "${t.param}.${t.encoding}" cannot use "initial" with a non-zoomable ${this.channel} scale. Enable zoom on the linked scale or remove "initial".`)}getAssemblyRequirement(){let e=this.#V();return e===null||e.type===`null`||e.type!==`locus`?{assembly:void 0,needsDefaultAssembly:!1}:{assembly:e.assembly,needsDefaultAssembly:e.assembly===void 0}}getResolvedScaleType(){let e=this.#V();if(!(e===null||e.type===`null`))return e.type}#q(e=!1){let t=this.#V();if(t===null||t.type==`null`)return{type:`null`};let n={...t};this.#h+=1;let r;try{r=this.#k(e,n.type===`locus`?n.assembly:void 0)}finally{--this.#h}if(ym(n.type)){let t=this.isDomainDefinedExplicitly(),i=this.#J(t);if(r!=null){if(t&&i.domain().length>0&&!Yl(i.domain(),r))return this.#s=void 0,this.#q(e);i.addAll(r);let a=new Set(r),o=i.domain().filter(e=>a.has(e));n.domain=o.length>0?o:new Uz}else{let e=i.domain();n.domain=e.length>0?e:new Uz}n.domainIndexer=i}else r&&r.length>0&&(n.domain=r);return!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),n}#J(e){return(!this.#s||this.#c!==e)&&(this.#s=LN(),this.#c=e),this.#s}reconfigure(){this.#T(()=>{this.#G();let e=this.#Y(!0);e&&(this.#X(e,(e,t)=>this.#i.reconfigureScale(t)),this.#Z(e))})}reconfigureDomain(){this.#T(()=>{let e=this.#Y(!0,!0);if(!e)return;let{domainConfig:t,targetDomain:n}=e,r=n!=null&&Yl(n,e.scale.domain());n!=null&&!r&&this.#X(e,e=>{e.domain(n),t.applyOrdinalUnknown&&e.unknown(t.ordinalUnknown)}),this.#Z(e),this.syncLinkedSelectionFromDomain()})}#Y(e,t=!1){let n=this.#i.scale;if(!n||n.type==`null`)return;let r={scale:n,props:this.#q(e),previousDomain:n.domain(),domainWasInitialized:this.isDomainInitialized(),hasSelectionConfiguredDomain:this.#a.hasSelectionConfiguredDomain()};if(t){let e=YR(n,r.props);return{...r,domainConfig:e,targetDomain:e.domain}}return r}#X(e,t){this.#i.withDomainNotificationsSuppressed(()=>{t(e.scale,e.props)})}#Z(e){let{scale:t,previousDomain:n,domainWasInitialized:r,hasSelectionConfiguredDomain:i}=e,a=i?this.#a.getDefaultDomain(!0):void 0;if(this.#a.captureInitialDomain(t,r,a)){this.#w(`domain`);return}if(t.props.domainTransition===!1){this.#w(`domain`);return}let o=t.domain(),s=this.#o.getDomainChangeAction(n,o);s===`restore`?i?this.#w(`domain`):this.#i.withDomainNotificationsSuppressed(()=>{t.domain(n)}):s===`animate`?i?this.#w(`domain`):this.#B()?(this.#i.withDomainNotificationsSuppressed(()=>{t.domain(n)}),this.zoomTo(o,500)):this.#w(`domain`):s===`notify`&&this.#w(`domain`)}get scale(){if(this.#i.scale)return this.#i.scale;throw Error(`ScaleResolution.scale accessed before initialization. Call initializeScale().`)}getScale(){if(this.#h>0)throw Error(`Scale resolution for channel "${this.channel}" cannot read its own scale while its domain is being resolved.`);return this.#i.scale??this.initializeScale()}initializeScale(){if(this.#i.scale)return this.#i.scale;let e=this.#q();return this.#i.createScale(e)}getDomain(){if(this.#h>0)throw Error(`Scale resolution for channel "${this.channel}" cannot read its own domain while its domain is being resolved.`);return this.getScale().domain()}getDataDomain(){return this.#a.getDataDomain()}getComplexDomain(){return PR(this.#C(),kz(this.type,this.getDomain()))}getLinkedSelectionDomainInfo(){let e=this.#D();if(!e)return;let t=this.#y.getLayoutAncestors().at(-1),n=t?Lz(t,e.runtime,e.param,e.encoding).some(e=>e.param.persist!==!1):!1;return{param:e.param,encoding:e.encoding,persist:n}}isZoomed(){return this.#o.isZoomed()}isZoomable(){let e=this.#V();return e===null||e.type===`null`?!1:vm(e.type)&&!ym(e.type)&&!!e.zoom}zoom(e,t,n){return this.#o.zoom(e,t,n)}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 Error(`Axis length is only defined for x and y channels!`);let e=Array.from(this.#e).map(e=>e.view.coords?.[this.channel===`x`?`width`:`height`]).filter(e=>e>0);return e.length?e.reduce((e,t)=>Math.min(e,t),1e4):0}invertToComplex(e){let t=this.getScale();if(`invert`in t){let n=t.invert(e);return this.toComplex(n)}else throw Error(`The scale does not support inverting!`)}toComplex(e){return jR(this.#C(),e)}fromComplex(e){return MR(this.#C(),e)}fromComplexInterval(e){return this.type==`locus`?NR(this.#C(),e):e}};function SB(e,t){return e===t?!0:!e||!t?!1:e.length===t.length&&Yl(e,t)}function CB(e){let t=e.channelDef.scale,n=t?.assembly;if(!t||!n||typeof n!=`object`||!(`url`in n))return e;let r=_F(e.view.getBaseUrl(),n.url);return r===n.url?e:{...e,channelDef:{...e.channelDef,scale:{...t,assembly:{...n,url:r}}}}}function wB(...e){for(let t of e)if(t!==void 0)return t}var TB=class{#e=new Set;constructor(e){this.channel=e}get scaleResolution(){return this.#e.values().next().value?.view.getScaleResolution(this.channel)}#t(e){let{view:t}=e,n=t.getScaleResolution(this.channel);if(!n)throw Error(`Cannot find a scale resolution!`);if(this.scaleResolution&&n!==this.scaleResolution)throw Error(`Shared axes must have a shared scale! Channel: ${this.channel}, existing views: [${Array.from(this.#e).map(e=>e.view.getPathString()).join(`, `)}], new view: ${t.getPathString()}.`);this.#e.add(e),tP(this,`axisProps`)}registerMember(e){return this.#t(e),()=>this.removeMember(e)&&this.#e.size===0}removeMember(e){let t=this.#e.delete(e);return t&&tP(this,`axisProps`),t}getAxisProps(){return eP(this,`axisProps`,()=>{let e=bB(this.#e).map(e=>{let t=e.view.mark.encoding[e.channel];return`axis`in t&&t.axis});return e.length>0&&e.some(e=>e===null)?null:cz(e.filter(e=>e!==void 0),`axis`,[`title`])})}getTitle(){let e=bB(this.#e).map(e=>{let t=Nh(e.view,e.channel);if(!Oh(t))return{member:e,axisTitle:`axis`in t?t.axis?.title:void 0,explicitTitle:wB(`axis`in t?t.axis?.title:void 0,t.title),implicitTitle:wB(kh(t)?t.field:void 0,Fh(t)?t.expr:void 0)}}),t=e.map(e=>e.axisTitle).find(e=>e!==void 0);if(t!==void 0)return t;let n=e.filter(t=>{if(Gh(t.member.channel)&&!t.explicitTitle){let n=qh(t.member.channel);return e.find(e=>e.member.view==t.member.view&&e.member.channel==n)?.explicitTitle===void 0}return!0}),r=new Set(n.map(e=>wB(e.explicitTitle,e.implicitTitle)).filter(P));return r.size?[...r].join(`, `):null}},EB=e=>{if(jh(e))return e;if(Lh(e)){let t=e.condition;if(!Array.isArray(t)&&jh(t))return t}},DB=(e,t,n)=>{let r=e;for(;(r.getConfiguredOrDefaultResolution(n,t)==`forced`||r.dataParent&&[`shared`,`excluded`,`forced`].includes(r.dataParent.getConfiguredOrDefaultResolution(n,t)))&&r.getConfiguredOrDefaultResolution(n,t)!=`excluded`;)r=r.dataParent;return r},OB=(e,t,n)=>{if(!t.resolutions.scale[n]){let r=new xB(n,t);t.resolutions.scale[n]=r;let i=t=>{e.context.glHelper?.createRangeTexture(t.scaleResolution,!0)};r.addEventListener(`range`,i),r.addEventListener(`domain`,i),e.registerDisposer(()=>{r.removeEventListener(`range`,i),r.removeEventListener(`domain`,i)})}return t.resolutions.scale[n]},kB=(e,t,n,r)=>{let i=EB(r);if(!i)return;let a=qh(i.resolutionChannel??n);if(Xh(a)&&!(t==`axis`&&!Hh(a)))return{view:DB(e,t,a),channel:n,channelDef:i,targetChannel:a}},AB=(e,t)=>{for(let[n,r]of Object.entries(e.mark.encoding))!r||Array.isArray(r)||t(n,r)},jB=e=>{let t=[];return AB(e,(n,r)=>{let i=kB(e,`axis`,n,r);i&&Hh(i.channel)&&t.push(i)}),t},MB=e=>{let t=new Map;return AB(e,(n,r)=>{let i=kB(e,`scale`,n,r);if(!i)return;let a=OB(e,i.view,i.targetChannel),o=t.get(a);o?o.push(i):t.set(a,[i])}),t},NB=(e,t)=>{for(let{view:n,channel:r,channelDef:i,targetChannel:a}of t){if(!Hh(r)||!Vh(a))continue;n.resolutions.axis[a]||(n.resolutions.axis[a]=new TB(a));let t=n.resolutions.axis[a],o=t.registerMember({view:e,channel:r,channelDef:i});e.registerDisposer(()=>{o()&&n.resolutions.axis[a]===t&&delete n.resolutions.axis[a]})}},PB=(e,t)=>{xB.registerInBatch(t.keys(),()=>{for(let[n,r]of t)for(let{view:t,channel:i,channelDef:a,targetChannel:o}of r){let r=o,s=!e.isDomainInert(),c=n.registerMember({view:e,channel:i,channelDef:a,contributesToDomain:s});e.registerDisposer(()=>{c()&&t.resolutions.scale[r]===n&&(n.dispose(),delete t.resolutions.scale[r])})}})},FB=(e,t)=>{if(!t){FB(e,`scale`),FB(e,`axis`);return}t==`axis`?NB(e,jB(e)):PB(e,MB(e))},IB={point:NP,rect:EP,rule:zP,tick:zP,link:ZP,text:rF},LB=class extends iR{#e;#t=!1;#n=null;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e;let o=IB[this.getMarkType()];if(o)this.mark=new o(this);else throw Error(`No such mark: ${this.getMarkType()}`);this.#e=this.paramRuntime.allocateSetter(`zoomLevel`,1),this.resolve();for(let e of[`x`,`y`]){let t=this.getScaleResolution(e);if(t){let e=()=>{this.#e(Math.sqrt(this.getZoomLevel()))};t.addEventListener(`domain`,e),this.registerDisposer(()=>t.removeEventListener(`domain`,e))}}this.registerDisposer(this._addBroadcastHandler(`subtreeDataReady`,()=>{for(let e of Rh)this.getScaleResolution(e)?.syncLinkedSelectionFromDomain()})),this.needsAxes={x:!0,y:!0},this.#r()}#r(){for(let[e,t]of this.paramRuntime.paramConfigs){if(!(`select`in t))continue;let n=sg(t.select),r=n.on,i=n.clear;if(cg(n)){let t=0,a=t=>{this.paramRuntime.setValue(e,t)},o=()=>{let e=this.context.getCurrentHover();return e?.mark?.unitView===this?e.datum:null},s=r.filter?XL(r.filter):()=>!0;if(this.addInteractionListener([`mouseover`,`pointerover`].includes(r.type)?`mousemove`:r.type,r=>{if(!s(r.proxiedMouseEvent))return;let i=o(),c=i?i[sh]:0,l;n.toggle?r.mouseEvent.shiftKey?i&&(l=ng(this.paramRuntime.getValue(e),{toggle:[i]})):l=eg(i?[i]:null):c!=t&&(t=c,l=$h(i)),l!==void 0&&a(l)}),i){let e=i.filter?XL(i.filter):()=>!0;this.addInteractionListener(i.type,r=>{e(r.proxiedMouseEvent)&&(t=0,a(n.toggle?eg():$h(null)))})}}}}render(e,t,n={}){super.render(e,t,n),this.isConfiguredVisible()&&(e.pushView(this,t),e.renderMark(this.mark,n),e.popView(this))}getMarkType(){return typeof this.spec.mark==`object`?this.spec.mark.type:this.spec.mark}getEncoding(){let e=super.getEncoding(),t=this.mark.getSupportedChannels();for(let n of Object.keys(e))n!==`key`&&(t.includes(n)||delete e[n]);return e}resolve(e){if(!e){this.resolve(`scale`),this.resolve(`axis`);return}FB(this,e)}dispose(){super.dispose(),this.mark.dispose()}getDataAccessor(e){let t=this.mark.encoders;if(t)return t[e]?Th(t[e]):void 0}getSearchAccessors(){return this.#n||=(uR(this.getEncoding())??[]).map(e=>R(e)),this.#n}getFacetAccessor(e){return this.getDataAccessor(`sample`)||super.getFacetAccessor(this)}getCollector(){return this.flowHandle?.collector}registerDomainSubscriptions(){if(this.#t||this.isDomainInert())return;let e=this.getCollector();if(!e)return;let t=this.mark.encoders;if(!t)throw Error(`Encoders are not initialized!`);this.#t=!0;let n=Jm(e),r=new Map;for(let e of Object.values(t)){if(!e)continue;let t=wh(e);if(t.length!==0)for(let e of t){if(!ph(e))continue;let t=this.getScaleResolution(e.scaleChannel);if(!t)throw Error(`Missing scale resolution for channel: `+e.scaleChannel);if(e.channelDef.domainInert||RB(e,t,n))continue;let i=r.get(t);i||(i=new Set,r.set(t,i)),i.add(e)}}for(let[t,n]of r){if(n.size===0)continue;let r=t.registerCollectorSubscriptions(e,n);this.registerDisposer(r)}}getZoomLevel(){return Rh.map(e=>this.getScaleResolution(e)?.getZoomLevel()??1).reduce((e,t)=>e*t,1)}propagateInteraction(e){this.handleInteraction(e,!0),e.target=this,!e.stopped&&this.handleInteraction(e,!1)}getDefaultResolution(e,t){return e==`x`?`shared`:`independent`}};function RB(e,t,n){return!t.isDomainDefinedExplicitly()&&n.has(qh(e.scaleChannel))}var zB=class extends Error{constructor(e,t){super(t),this.kind=e}};async function BB(e,t={}){let n;try{n=await fetch(e,{signal:t.signal})}catch(e){throw new zB(`network`,String(e))}if(!n.ok)throw new zB(`http`,String(n.status)+` `+n.statusText);try{return await n.json()}catch(e){throw new zB(`json`,String(e))}}function VB(e){let t=new Set;e.visit(e=>{for(let n of Object.values(e.resolutions.scale)){let e=n.name;if(e&&t.has(e))throw Error(`The same scale name "${e}" occurs in multiple scale resolutions!`);t.add(e)}})}function HB(e){for(let t of Rh){let n=e.getScaleResolution(t);n&&!n.name&&n.isZoomable()&&(n.name=`${t}_at_root`)}}function UB(e,t=()=>!0){return Promise.allSettled(e).then(e=>{if(t())for(let t of e)`value`in t?t.value.finalizeGraphicsInitialization():`reason`in t&&console.error(t.reason)})}async function WB(e,t,n){let r=e.import;if(!(`url`in r))throw Error(`Not an url import: `+JSON.stringify(r));let i=gF(t,r.url),a;try{a=await BB(i)}catch(e){throw Error(`Could not load imported view spec: ${i}. Reason: ${e.message}`,{cause:e})}if(n.isViewSpec(a))return a.baseUrl=gF(vF(r.url),a.baseUrl),a;throw Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(e)}`)}function GB(e){let t=e.getSize(),n=e.getPadding(),r=(e,t)=>e.grow>0?void 0:e.px+t;return{width:r(t.width,n.horizontalTotal),height:r(t.height,n.verticalTotal)}}function*KB(e,t=[]){for(let[n,r]of e.entries())if(r instanceof Map)for(let e of KB(r,[...t,n]))yield e;else yield[[...t,n],r]}var qB=2147483647,JB=XB([qB]);function YB(e){for(let t=1;t<e.length;t++)if(e[t]<e[t-1])return!1;return!0}function XB(e){let t=0;for(let n=0,r=e.length;n<r;n++)e[n]>t&&(t=e[n]);return Math.floor(Math.log2(t)/4)+1}function ZB(e){let t=XB(e),n=Array.from({length:e.length},(e,t)=>t);if(YB(e))return n;let r=Array(e.length),i=Array(16);for(let a=0;a<t;a++){i.fill(0);let t=a*4,o=16**a,s=r=>{let i=e[n[r]];return a>=JB?i>qB?Math.floor(i/o)%16:0:i>>t&15};for(let t=0;t<e.length;t++)i[s(t)]++;for(let e=1;e<16;e++)i[e]+=i[e-1];for(let t=e.length-1;t>=0;t--)r[--i[s(t)]]=n[t];[n,r]=[r,n]}return n}var QB=`|`,$B=`\\`,eV=class{#e=null;#t=null;#n=!1;invalidate(){this.#e=null,this.#t=null,this.#n=!1}findDatum(e,t,n){if(!e||e.length===0)return;let r=e.join(`, `);if(e.length!==t.length)throw Error(`Key tuple length ${t.length} does not match fields [${r}]`);(!this.#e||!this.#i(e))&&this.#r(e,n);let i=this.#t,a;if(this.#n){let e=``;for(let n=0;n<t.length;n++){n>0&&(e+=QB);let r=i[n],a=tV(t[n],r);e+=rV(a)}a=e}else{let e=i[0];a=tV(t[0],e)}return this.#e.get(a)}#r(e,t){let n=e.map(e=>R(e)),r=new Map,i=e.join(`, `),a=e.length!==1;if(a)for(let a of t)for(let t=0,o=a.length;t<o;t++){let o=a[t],s=``;for(let t=0;t<n.length;t++){t>0&&(s+=QB);let r=e[t],i=tV(n[t](o),r);s+=rV(i)}if(r.get(s)!==void 0){let e=n.map(e=>e(o));throw Error(`Duplicate key detected for fields [${i}]: ${JSON.stringify(e)}`)}r.set(s,o)}else{let a=n[0],o=e[0];for(let e of t)for(let t=0,n=e.length;t<n;t++){let n=e[t],s=tV(a(n),o);if(r.get(s)!==void 0)throw Error(`Duplicate key detected for fields [${i}]: ${JSON.stringify(s)}`);r.set(s,n)}}this.#e=r,this.#t=[...e],this.#n=a}#i(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 tV(e,t){if(e===void 0)throw Error(`Key field "${t}" is undefined. Ensure all key fields are present in the data.`);if(e===null)throw Error(`Key field "${t}" is null. Ensure all key fields are present in the data.`);if(typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`)throw Error(`Key field "${t}" must be a scalar value (string, number, or boolean).`);return e}function nV(e){if(!(e.indexOf($B)!==-1||e.indexOf(QB)!==-1))return e;let t=``;for(let n=0;n<e.length;n++){let r=e[n];(r===$B||r===QB)&&(t+=$B),t+=r}return t}function rV(e){return typeof e==`string`?nV(e):String(e)}var iV=class extends qm{#e=[];#t=R(sh);#n=[];#r=new eV;#i;#a;#o=new aV;get behavior(){return 4}get label(){return`collect`}constructor(e){super(),this.params=e??{type:`collect`},this.observers=new Set,this.facetBatches=new hn([],JSON.stringify),this.#a=sV(this.params?.sort),this.#s()}#s(){this.#e=[],this.#n=[],this.#r.invalidate(),this.facetBatches.clear(),this.facetBatches.set(void 0,this.#e)}reset(){super.reset(),this.#s()}handle(e){this.#e.push(e)}beginBatch(e){this.#r.invalidate(),Xm(e)&&(this.#e=[],this.facetBatches.set(Xl(e.facetId),this.#e))}complete(){if(this.#e=[],this.params.groupby?.length){if(this.facetBatches.size>1)throw Error(`TODO: Support faceted data!`);let e=this.facetBatches.get(void 0),t=this.params.groupby.map(e=>R(e)),n=t.length>1?xn(e,...t):oV(e,t[0]);this.facetBatches.clear();for(let[e,t]of KB(n))this.facetBatches.set(e,t)}if(this.#a)for(let e of this.facetBatches.values())e.sort(this.#a);this.#d(),this.#c(),super.complete(),this.#u();for(let e of this.observers)e(this)}observe(e){return this.observers.add(e),()=>{this.observers.delete(e)}}#c(){if(this.children.length)for(let[e,t]of this.facetBatches.entries()){if(e){let t={type:`facet`,facetId:e};for(let e of this.children)e.beginBatch(t)}for(let e=0,n=t.length;e<n;e++)this._propagate(t[e])}}repropagate(){for(let e of this.children)e.reset();this.#c();for(let e of this.children)e.complete();this.#u()}getDomain(e,t,n){return this.#o.getDomain(e,()=>{let e=Kz(t);if(n.constant)e.extend(n({}));else if(this.completed)for(let t of this.facetBatches.values())for(let r=0,i=t.length;r<i;r++)e.extend(n(t[r]));return e})}subscribeDomainChanges(e,t){return this.#o.subscribe(e,t)}getData(){switch(this.#l(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{let e=this.facetBatches;return{[Symbol.iterator]:function*(){for(let t of e.values())yield*t}}}}}visitData(e){this.#l();for(let t of this.facetBatches.values())for(let n=0;n<t.length;n++)e(t[n])}getItemCount(){let e=0;for(let t of this.facetBatches.values())e+=t.length;return e}#l(){if(!this.completed)throw Error(`Data propagation is not completed! No data are available.`)}#u(){this.#o.hasCachedDomains()&&this.#o.clear(),this.#o.notify()}#d(){this.#i=[];let e=this.facetBatches.values().next().value?.[0];if(e==null||!(`_uniqueId`in e))return;let t=0,n=[],r=this.#t;for(let[e,i]of this.facetBatches){this.#i.push({start:t,stop:t+i.length,facetId:e}),t+=i.length;for(let e=0,t=i.length;e<t;e++)n.push(r(i[e]))}this.#n=ZB(n)}findDatumByUniqueId(e){if(!this.#n.length)return;let t=on(e=>e.start).right,n=this.#t,r=on(e=>n(i(e))).left,i=e=>{let n=t(this.#i,e),r=this.#i[n-1];if(!(!r||e>=r.stop))return this.facetBatches.get(r.facetId)[e-r.start]},a=r(this.#n,e);if(a>=0){let t=i(this.#n[a]);if(t&&n(t)===e)return t}}findDatumByKey(e,t){return this.#l(),this.#r.findDatum(e,t,this.facetBatches.values())}},aV=class{#e=new Map;#t=new Map;hasCachedDomains(){return this.#e.size>0}clear(){this.#e.clear()}getDomain(e,t){let n=this.#e.get(e);if(n)return n;{let n=t();return this.#e.set(e,n),n}}subscribe(e,t){let n=this.#t.get(e);return n||(n=new Set,this.#t.set(e,n)),n.add(t),()=>{let n=this.#t.get(e);n&&(n.delete(t),n.size===0&&this.#t.delete(e))}}notify(){if(this.#t.size===0)return;let e=new Set;for(let t of this.#t.values())for(let n of t)e.add(n);for(let t of e)t()}};function oV(e,t){let n=new Map;for(let r=0,i=e.length;r<i;r++){let i=e[r],a=t(i),o=n.get(a);o||(o=[],n.set(a,o)),o.push(i)}return n}function sV(e){if(e?.field){let t=Xl(e.field);if(t.length==1&&!t[0].includes(`.`)){let n=Xl(e.order)[0]??`ascending`,r=JSON.stringify(t[0]);return Function(`a`,`b`,`return a[${r}] ${n===`ascending`?`-`:`+`} b[${r}];`)}return ht(e.field,e.order)}}var cV=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e,this.startAccessor=R(e.start),this.endAccessor=R(e.end),this.chromAccessor=e.chrom?R(e.chrom):e=>void 0,this.weightAccessor=e.weight?R(e.weight):e=>1,this.as={coverage:e.as??`coverage`,start:e.asStart??e.start,end:e.asEnd??e.end,chrom:e.asChrom??e.chrom},this.createSegment=Function(`start`,`end`,`coverage`,`chrom`,`return {`+Object.entries(this.as).filter(([e,t])=>t).map(([e,t])=>`${JSON.stringify(t)}: ${e}`).join(`, `)+`};`),this.ends=new bF}reset(){super.reset(),this.initialize()}initialize(){let e=this.as.coverage,t=this.as.end,n=this.as.chrom,r=this.startAccessor,i=this.endAccessor,a=this.chromAccessor,o=this.weightAccessor,s,c,l,u=0,d=NaN,f=this.ends;f.clear();let p=e=>{this._propagate(e),s=null},m=(n,r,i)=>{if(n==r)return;let a=!1;s&&(s[e]===i?(s[t]=r,a=!0):s[e]!=0&&p(s)),a||(s=this.createSegment(n,r,i,l))},h=()=>{let e;for(;(e=f.peekValue())!==void 0;)m(d,e,u),d=e,u-=f.pop();d=NaN,s&&p(s)};this.handle=e=>{let t=r(e),s;for(;(s=f.peekValue())!==void 0&&s<t;)m(d,s,u),d=s,u-=f.pop();if(n){let t=a(e);t!==c&&(h(),l=t,c=l)}isNaN(d)||m(d,t,u),d=t;let p=o(e);u+=p,f.push(p,i(e))},this.complete=()=>{h(),super.complete()},this.beginBatch=e=>{h(),c=null,super.beginBatch(e)}}};function lV(e,t,n=e=>+e,r=0,i=e.length){let a=new bF,o=i-r,s;for(s=0;s<t&&s<o;s++)a.push(s,n(e[r+s]));for(;s<o;s++){let t=n(e[r+s]);t>=a.peekValue()&&(a.push(s,t),a.pop())}let c=[],l;for(;(l=a.pop())!==void 0;)c.push(e[r+l]);return c.reverse()}var uV=class{constructor(e,t=-1/0,n=1/0){this.maxSize=e,this.lowerLimit=t,this.upperLimit=n;let r=this.maxSize*2+1;this.lowerLimits=new Float64Array(r),this.upperLimits=new Float64Array(r),this.lowerChildren=new Int32Array(r),this.upperChildren=new Int32Array(r),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,n=0){if(e>=this.lowerLimits[n]&&t<=this.upperLimits[n]){let r=this.lowerChildren[n];if(r){let i=this._findSlot(e,t,r);return i>=0?i:this._findSlot(e,t,this.upperChildren[n])}else return n}else return-1}reserve(e,t){if(t-e<=0)throw Error(`Cannot reserve an empty or negative-size slot!`);if(this.n+1>this.lowerLimits.length)return!1;let n=this._findSlot(e,t);if(n<0)return!1;let r=this.n++,i=this.n++;return this.lowerLimits[r]=this.lowerLimits[n],this.upperLimits[r]=e,this.lowerLimits[i]=t,this.upperLimits[i]=this.upperLimits[n],this.lowerChildren[n]=r,this.upperChildren[n]=i,!0}},dV=class extends oh{get behavior(){return 4}get domainSensitiveScaleChannels(){return[this.channel]}constructor(e,t){if(super(e),this.params=e,this._data=[],this.channel=e.channel??`x`,![`x`,`y`].includes(this.channel))throw Error(`Invalid channel: `+this.channel);this.startPosAccessor=R(this.params.pos),this.endPosAccessor=R(this.params.pos2??this.params.pos),this.startPosBisector=on(this.startPosAccessor),this.endPosBisector=on(this.endPosAccessor),this.scoreAccessor=R(this.params.score),this.widthAccessor=R(this.params.width),this.laneAccessor=this.params.lane?R(this.params.lane):e=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=t.getScaleResolution(this.channel);let n=()=>this._filterAndPropagate();this.schedule=()=>t.context.animator.requestTransition(n);let r=()=>this._filterAndPropagate();this.resolution.addEventListener(`domain`,r),this.registerDisposer(()=>this.resolution.removeEventListener(`domain`,r));let i=t._addBroadcastHandler(`layoutComputed`,()=>this.schedule());this.registerDisposer(i)}complete(){let e=this.startPosAccessor;this._data.sort((t,n)=>e(t)-e(n));for(let e of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(e,new uV(200));this.schedule(),super.complete()}_filterAndPropagate(){super.reset();let e=this.resolution.getScale(),t=this.resolution.getAxisLength();if(!t)return;for(let e of this.reservationMaps.values())e.reset();let n=e.domain(),r=lV(this._data,70,this.scoreAccessor,this.endPosBisector.left(this._data,n[0]),this.startPosBisector.right(this._data,n[1]));for(let n of r){let r=e(this.startPosAccessor(n))*t,i=e(this.endPosAccessor(n))*t,a=i-r,o=this.widthAccessor(n)+this.padding*2,s=(r+i)/2,c=Math.max(0,(a-o)/2);if(c>0){let e=Math.max(0,o/2-s);s+=Math.min(e,c);let n=Math.max(0,o/2+s-t);s-=Math.min(n,c)}if(this.reservationMaps.get(this.laneAccessor(n)).reserve(s-o/2,s+o/2))if(this.params.asMidpoint){let r=Object.assign({},n);r[this.params.asMidpoint]=e.invert(s/t),this._propagate(r)}else this._propagate(n)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}},fV=class extends oh{constructor(e,t){super(e,t),this.params=e,this.predicate=void 0}initialize(){let e;if(pV(this.params))e=this.params.expr;else if(mV(this.params)){let t=this.paramRuntime.findValue(this.params.param);if(!t)throw Error(`Cannot initialize filter transform. Selection parameter "${this.params.param}" not found!`);e=rg(this.params,t)}else throw Error(`Invalid filter params: `+JSON.stringify(this.params));this.predicate=this.paramRuntime.watchExpression(e,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)})}handle(e){this.predicate(e)&&this._propagate(e)}};function pV(e){return`expr`in e}function mV(e){return`param`in e}var hV=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=e.index;if(e.fields){let n=Xl(e.fields).map(e=>R(e)),r=Xl(e.as||e.fields);if(n.length!==r.length)throw Error(`Lengths of "fields" (${n.length}), and "as" (${r.length}) do not match!`);this.handle=e=>{let i=n.map((t,n)=>t(e)??[]),a=i[0].length;for(let o=0;o<a;o++){let a=Object.assign({},e);for(let e=0;e<n.length;e++)a[r[e]]=o<i[e].length?i[e][o]:null;t&&(a[t]=o),this._propagate(a)}}}else this.handle=e=>{for(let n=0;n<e.length;n++){let r=Object.assign({},e[n]);t&&(r[t]=n),this._propagate(r)}}}},gV=48;function*_V(e,t=`,`){let n=t.charCodeAt(0),r=0;for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);i==n?(yield r,r=0):r=r*10+i-gV}yield r}var vV=class extends oh{get behavior(){return 1}constructor(e){super(e);let t=R(e.exons??`exons`),n=R(e.start??`start`),[r,i]=e.as||[`exonStart`,`exonEnd`];this.handle=e=>{let a=n(e),o=a,s=!0,c=t(e);for(let t of _V(c)){if(s)o=a+t;else{a=o+t;let n=Object.assign({},e);n[r]=o,n[i]=a,this._propagate(n)}s=!s}}}},yV=class extends oh{get behavior(){return 1}constructor(e){super(e);let t=Xl(e.field).map(e=>R(e)),n=Xl(e.separator),r=Xl(e.as||e.field);if(t.length!==n.length||t.length!==r.length)throw Error(`Lengths of "separator" (${n.length}), "fields" (${t.length}), and "as" (${r.length}) do not match!`);this.handle=e=>{if(t.some(t=>!t(e)))return;let i=t.map((t,r)=>t(e).split(n[r]));bV(i,e);let a=i[0].length;for(let n=0;n<a;n++){let a=Object.assign({},e);for(let e=0;e<t.length;e++)a[r[e]]=i[e][n];this._propagate(a)}}}};function bV(e,t){let n=e.map(e=>e.length);if(!n.every(e=>e==n[0]))throw Error(`Mismatching number of elements in the fields to be split: `+JSON.stringify(t))}var xV=class extends oh{get behavior(){return 2}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)}},SV=class extends oh{get behavior(){return 2}constructor(e,t){e={channel:`x`,...e},super(e),this.params=e;let n=e.channel;if(![`x`,`y`].includes(n))throw Error(`Invalid channel: `+n);let r=t.getScaleResolution(n).getScale(),i=`genome`in r?r.genome():void 0;if(!i)throw Error(`LinearizeGenomicCoordinate transform requires a locus scale!`);let a=R(e.chrom),o=Xl(e.pos).map(e=>R(e)),s=Xl(e.as);if(o.length!=s.length)throw Error(`The number of "pos" and "as" elements must be equal!`);let c=Xl(e.offset),l;if(c.length==0)l=Array(o.length).fill(0);else if(c.length==1)l=Array(o.length).fill(c[0]);else if(c.length==o.length)l=c;else throw Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);let u=Function(`datum`,`chromOffset`,`posAccessors`,s.map((e,t)=>`datum[${JSON.stringify(e)}] = chromOffset + +posAccessors[${t}](datum) - ${l[t]};`).join(`
|
|
807
|
-
`)),d,f=0,p=e=>{if(e!==d){if(f=i.cumulativeChromPositions.get(e),f===void 0)return;d=e}return f};this.handle=e=>{let t=a(e),n=p(t);if(n===void 0)throw Error(`Unknown chromosome/contig "${t}" in datum: ${JSON.stringify(e)}`);u(e,n,o),this._propagate(e)}}},
|
|
809
|
+
`).map(e=>{let t=e.split(` `);return{name:t[0],size:parseInt(t[1])}})}var yR=class{constructor(e){if(this.config={name:`custom`,...e},`baseUrl`in e)throw 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(!wR(e))throw Error(`Not a genome configuration: `+JSON.stringify(e));if(this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,ER(this.config))this.setChromSizes(this.config.contigs);else if(!TR(this.config)){let e=vR(this.config.name);if(e)this.setChromSizes(e);else throw 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(TR(this.config))try{let t=gF(e,this.config.url),n=await fetch(t);if(!n.ok)throw Error(`${n.status} ${n.statusText}`);this.setChromSizes(bR(await n.text()))}catch(e){throw Error(`Could not load chrom sizes: ${this.config.url}. Reason: ${e.message}`,{cause:e})}}hasChrPrefix(){return this.chromosomes.some(e=>e.name.startsWith(`chr`))}setChromSizes(e){this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map;let t=0;this.startByIndex=[0];for(let n=0;n<e.length;n++){this.startByIndex.push(t);let r=e[n].size,i={...e[n],continuousStart:t,continuousEnd:t+r,continuousInterval:[t,t+r],index:n,number:n+1,odd:!(n&1)};this.chromosomes.push(i);let a=i.name.replace(/^chr/i,``);for(let e of[`chr`+a,`CHR`+a,`Chr`+a,i.number,``+i.number,a,i.name])this.cumulativeChromPositions.set(e,t),this.chromosomesByName.set(e,i);t+=i.size}this.totalSize=t}getExtent(){return[0,this.totalSize]}toContinuous(e,t){let n=this.cumulativeChromPositions.get(e);if(n===void 0)throw Error(`Unknown chromosome/contig: `+e);return n+ +t}toChromosome(e){if(e>this.totalSize)return;e=Math.floor(e);let t=dn(this.startByIndex,e)-1;if(t>0&&t<=this.chromosomes.length)return this.chromosomes[t-1]}toChromosomal(e){let 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 gR(...this.toChromosomalInterval(e))}formatLocus(e){let t=this.toChromosomal(e);if(t)return hR(t)}toChromosomalInterval(e){let t=this.toChromosomal(e[0]+.5),n=this.toChromosomal(e[1]-.5);return n.pos+=1,[t,n]}toContinuousInterval(e){let[t,n]=e;return n||=t,[this.toContinuous(t.chrom,t.pos??0),this.toContinuous(n.chrom,n.pos??this.chromosomesByName.get(n.chrom)?.size)]}toDiscreteChromosomeIntervals(e){let t=e[0],n=e[1],r=[];if(t.chrom===n.chrom)r.push({chrom:t.chrom,startPos:t.pos,endPos:n.pos});else{let e=this.chromosomes.findIndex(e=>e.name===t.chrom),i=this.chromosomes.findIndex(e=>e.name===n.chrom);r.push({chrom:t.chrom,startPos:t.pos,endPos:this.chromosomes[e].size});for(let t=e+1;t<i;t++)r.push({chrom:this.chromosomes[t].name,startPos:0,endPos:this.chromosomes[t].size});r.push({chrom:n.chrom,startPos:0,endPos:n.pos})}return r}continuousToDiscreteChromosomeIntervals(e){return this.toDiscreteChromosomeIntervals([this.toChromosomal(e[0]),this.toChromosomal(e[1])])}parseInterval(e){let t=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(t){let e=t[1];if(t.slice(2).every(e=>e===void 0)){let t=this.getChromosome(e);return t?[t.continuousStart,t.continuousEnd]:void 0}let n=t[3]||e,r=parseInt(t[2].replace(/,/g,``)),i=t[4]===void 0?r:parseInt(t[4].replace(/,/g,``));return[this.toContinuous(e,r-1),this.toContinuous(n,i)]}}};function bR(e){return Kt(e).map(([e,t])=>({name:e,size:parseInt(t)}))}function xR(e){return Qe(e)&&`chrom`in e}function SR(e){return e.every(xR)}function CR(e){return SR(e)&&(e[1]??e[0]).pos!==void 0}function wR(e){return Qe(e)&&(`name`in e||TR(e)||ER(e))}function TR(e){return wR(e)&&`url`in e}function ER(e){return wR(e)&&`contigs`in e}var DR=1e6,OR=.65;function kR(){let e=pR().numberingOffset(1),t;e.genome=function(n){return arguments.length?(t=n,e):t},e.ticks=n=>{if(!t)return[];let r=e.domain(),i=r[1]-r[0],a=e.numberingOffset(),o=t.toChromosome(Math.max(r[0],0)),s=t.toChromosome(Math.min(r[1],t.totalSize-1)),c=Math.max(1,Math.min(n??10,Math.floor(i))),l=Mn(r[0],r[1],c);l<DR&&(l=Mn(r[0],r[1],c*OR)),l=Math.max(1,l);let u=[];for(let e=o.index;e<=s.index;e++){let n=t.chromosomes[e],i=Math.max(n.continuousStart+l,r[0]-(r[0]-n.continuousStart)%l),o=Math.min(n.continuousEnd-l/4,r[1]+1);for(let e=i;e<=o;e+=l){let t=e-a;t>=r[0]&&t<r[1]&&u.push(t)}}return u},e.tickFormat=(n,r)=>{if(!t)return;if(r)throw Error(`Locus scale's tickFormat does not support a specifier!`);let i=e.domain(),a=i[1]-i[0],o=e.numberingOffset(),s=Mn(i[0],i[1],Math.max(1,Math.min(n??10,Math.floor(a))))<DR?sr(`,`):sr(`.3s`),c=e=>e-t.toChromosome(e).continuousStart;return e=>s(c(e)+o)};let n=e.copy;return e.copy=()=>{let e=n(),r=t;return e.genome=function(t){return arguments.length?(r=t,e):r},e.genome(t)},e}function AR(e){return e.type==`locus`}function jR(e,t){let n=IR(e);return n?n.toChromosomal(t):t}function MR(e,t){let n=IR(e);return n&&xR(t)?n.toContinuous(t.chrom,t.pos):t}function NR(e,t){let n=IR(e);return n&&SR(t)?n.toContinuousInterval(t):t}function PR(e,t){let n=IR(e);return n?n.toChromosomalInterval(t):t}function FR(e){let t=IR(e);if(!t)throw Error(`No genome has been defined!`);return t.getExtent()}function IR(e){if(e&&`toChromosomal`in e)return e;if(e&&`genome`in e)return e.genome()}var LR=`locus`,RR=`index`,zR=5;function BR(e){let t=e.type;return!e.bins&&(t===`linear`||t===`pow`||t===`sqrt`)}function VR(e){return vm(e)&&![`sequential`,RR,LR].includes(e)}function HR(e){return e||{warn:(e,...t)=>console.warn(e,...t)}}var UR=Mt(`set.modified.clear.type.scheme.schemeExtent.schemeCount.domain.domainMin.domainMid.domainMax.domainRaw.domainImplicit.domainTransition.nice.zero.bins.range.rangeStep.round.reverse.interpolate.interpolateGamma.zoom.fp64.name`.split(`.`));function WR(e,t,n){n=HR(n);for(let r in e)if(!UR[r]){if(r===`padding`&&VR(t.type))continue;pt(t[r])?t[r](e[r]):n.warn(`Unsupported scale property: `+r)}let r=YR(t,e,n);r.domain&&t.domain(r.domain),r.applyOrdinalUnknown&&t.unknown(r.ordinalUnknown),ez(t,e,$R(t,e,r.count))}function GR(e,t){let n=!e.domain&&vm(e.type)?{...e,domain:[0,0]}:e,r=KR(n),i=L(r);if(!i)throw Error(`Unknown scale type: `+r);let a=i();return WR(n,a,t),a}function KR(e){var t=e.type,n=``,r;return t===`sequential`?Up+`-`+zp:(qR(e)&&(r=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(e.domainMid!=null):0,n=r===2?Up+`-`:r===3?Wp+`-`:``),(n+t||`linear`).toLowerCase())}function qR(e){let t=e.type;return vm(t)&&t!==`time`&&t!==`utc`&&(e.scheme||e.range&&e.range.length&&e.range.every(P))}function JR(e){if(!e.copy)return e;let t=e.copy();return t.type==null&&e.type!=null&&(t.type=e.type),t}function YR(e,t,n){if(!e.domain)return{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1};n=HR(n);let r=JR(e);var i=XR(r,t.domainRaw,n);if(i>-1)return{domain:r.domain(),count:i,ordinalUnknown:r.type===`ordinal`&&t.domainImplicit?tu:void 0,applyOrdinalUnknown:!1};var a=t.domain,o=r.type,s=t.zero||t.zero===void 0&&BR(r),c,l;return a?(VR(o)&&t.padding&&a[0]!==$e(a)&&(a=ZR(o,a,t.range,t.padding,t.exponent,t.constant)),(s||t.domainMin!=null||t.domainMax!=null||t.domainMid!=null)&&(c=(a=a.slice()).length-1||1,s&&(a[0]>0&&(a[0]=0),a[c]<0&&(a[c]=0)),t.domainMin!=null&&(a[0]=t.domainMin),t.domainMax!=null&&(a[c]=t.domainMax),t.domainMid!=null&&(l=t.domainMid,(l<a[0]||l>a[c])&&n.warn(`Scale domainMid exceeds domain min or max.`,l),a.splice(c,0,l))),r.domain(QR(o,a,n)),t.nice&&r.nice&&r.nice(t.nice!==!0&&Pm(r,t.nice)||null),{domain:r.domain(),count:a.length,ordinalUnknown:o===`ordinal`&&t.domainImplicit?tu:void 0,applyOrdinalUnknown:o===Jp}):{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1}}function XR(e,t,n){return t?(e.domain(QR(e.type,t,n)),t.length):-1}function ZR(e,t,n,r,i,a){n??=[0,1];var o=Math.abs($e(n)-n[0]),s=o/(o-2*r),c=e===`log`?lt(t,null,s):e===`sqrt`?ut(t,null,s,.5):e===`pow`?ut(t,null,s,i||1):e===`symlog`?dt(t,null,s,a||1):ct(t,null,s);return t=t.slice(),t[0]=c[0],t[t.length-1]=c[1],t}function QR(e,t,n){return xm(e)&&Math.abs(t.reduce(function(e,t){return e+(t<0?-1:t>0?1:0)},0))!==t.length&&n.warn(`Log scale domain includes zero: `+Dt(t)),t}function $R(e,t,n){let r=t.bins;if(r&&!O(r)){let t=(r.start==null||r.stop==null)&&e.domain(),n=r.start==null?t[0]:r.start,i=r.stop==null?$e(t):r.stop,a=r.step;a||qe(`Scale bins parameter missing step property.`),r=Vn(n,i+a,a)}return r?e.bins=r:e.bins&&delete e.bins,e.type===`bin-ordinal`&&(r?!t.domain&&!t.domainRaw&&(e.domain(r),n=r.length):e.bins=e.domain()),n}function ez(e,t,n){var r=e.type,i=t.round||!1,a=t.range;if(t.rangeStep!=null)a=tz(r,t,n);else if(t.scheme&&(a=nz(r,t,n),pt(a))){if(e.interpolator)return e.interpolator(a);qe(`Scale type ${r} does not support interpolating color schemes.`)}if(a&&Sm(r))return e.interpolator(wm(iz(a,t.reverse),t.interpolate,t.interpolateGamma));a&&t.interpolate&&e.interpolate?e.interpolate(Em(t.interpolate,t.interpolateGamma)):pt(e.round)?e.round(i):pt(e.rangeRound)&&e.interpolate(i?Jd:Gd),a&&e.range(iz(a,t.reverse))}function tz(e,t,n){e!==`band`&&e!==`point`&&qe(`Only band and point scales support rangeStep.`);var r=(t.paddingOuter==null?t.padding:t.paddingOuter)||0,i=e===`point`?1:(t.paddingInner==null?t.padding:t.paddingInner)||0;return[0,t.rangeStep*Lp(n,i,r)]}function nz(e,t,n){var r=t.schemeExtent,i=t.schemeCount,a,o;return O(t.scheme)?o=wm(t.scheme,t.interpolate,t.interpolateGamma):(P(t.scheme)?a=t.scheme.toLowerCase():(a=t.scheme.name.toLowerCase(),r=t.scheme.extent??r,i=t.scheme.count??i),o=Nm(a),o||qe(`Unrecognized scheme name: ${t.scheme}`)),n=e===`threshold`?n+1:e===`bin-ordinal`?n-1:e===`quantile`||e===`quantize`?+i||zR:n,Sm(e)?rz(o,r,t.reverse):pt(o)?Tm(rz(o,r),n):e===`ordinal`?o:o.slice(0,n)}function rz(e,t,n){return pt(e)&&(t||n)?Cm(e,iz(t||[0,1],n)):e}function iz(e,t){return t?e.slice().reverse():e}var az=class{#e;#t=new Set;#n;#r;#i;#a;#o=0;constructor({getParamRuntime:e,onRangeChange:t,onDomainChange:n,getGenomeStore:r}){this.#n=e,this.#r=t,this.#i=n,this.#a=r}get scale(){return this.#e}resetScale(){this.dispose(),this.#e=void 0}getLocusGenome(e){let t=this.#a?.();if(!t)throw Error(`No genome has been defined!`);return e?t.getGenome(e):t.getGenome()}createScale(e){let t=GR({...this.#c(e),range:void 0});return t.props=e,`unknown`in t&&t.unknown(null),this.#e=t,this.#s(e),this.#l(),this.#u(),this.#e}#s(e){let t=this.#e;!t||!AR(t)||t.genome(this.getLocusGenome(e.assembly))}reconfigureScale(e){let t=this.#e;!t||t.type==`null`||(WR({...this.#c(e),range:void 0},t),t.props=e,this.#l())}withDomainNotificationsSuppressed(e){this.#o+=1;try{e()}finally{--this.#o}}#c(e){let{assembly:t,domainIndexer:n,__rangeExprScope:r,...i}=e;return i}#l(){let e=this.#e;if(!e)return;let t=e.props;this.#t.forEach(e=>e.invalidate()),this.#t.clear();let n=t.__rangeExprScope?.paramRuntime??this.#n(),r=sz({range:t.range,reverse:t.reverse,createExpression:e=>n.createExpression(e),registerExpr:e=>this.#t.add(e)});if(!r)return;if(`values`in r){e.range(r.values);return}let i=()=>e.range(r.evaluate());r.setup(i),i()}#u(){let e=this.#e;if(!e)return;let t=e.range,n=e.domain,r=()=>this.#r?.();oz(e,{onRangeChange:r,onDomainChange:()=>{this.#o>0||this.#i?.()},range:t,domain:n}),r()}dispose(){this.#t.forEach(e=>e.invalidate()),this.#t.clear()}};function oz(e,{onRangeChange:t,onDomainChange:n,range:r,domain:i}){typeof r==`function`&&(e.range=(function(e){if(arguments.length)r(e),t?.();else return r()})),typeof i==`function`&&(e.domain=(function(e){if(arguments.length)i(e),n?.();else return i()}))}function sz({range:e,reverse:t,createExpression:n,registerExpr:r}){if(!e||!O(e))return null;let i=(e,t)=>t?e.slice().reverse():e;if(e.some(z)){let a;return{dynamic:!0,evaluate:()=>i(a.map(e=>e()),t),setup:t=>{a=e.map(e=>{if(z(e)){let i=n(e.expr);return i.subscribe(t),r(i),()=>i(null)}return()=>e})}}}return{dynamic:!1,values:i(e,t)}}function cz(e,t,n){if(n||=[],e.some(e=>e===null)){if(e.every(e=>e===null))return null;throw console.warn(e),Error(`Cannot merge objects with nulls!`)}let r={},i=(e,t)=>e===t||lz(e)&&lz(t)||lz(e)&&t===!0||e===!0&&Qe(t)||Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((e,n)=>e===t[n]),a=e=>{for(let a in e){let o=e[a];if(!n.includes(a)&&o!==void 0)if(r[a]!==void 0&&!i(r[a],o))console.warn(`Conflicting property ${a} of ${t}: (${JSON.stringify(r[a])} and ${JSON.stringify(e[a])}). Using ${JSON.stringify(r[a])}.`);else{let e=r[a];if(lz(e))lz(o)&&(r[a]=cz([e,o],a));else if(lz(o)){if(!(e===!0||e===void 0))throw Error(`Bug in merge! Target is: `+e);r[a]=cz([{},o],a)}else r[a]=o}}};for(let t of e)a(t);return r}function lz(e){return Qe(e)&&!Array.isArray(e)}var uz={nominal:`nominalColorScheme`,ordinal:`ordinalColorScheme`,quantitative:`quantitativeColorScheme`},dz=new Set([`rect`]),fz=new Set([`shape`,`size`,`angle`,`heatmap`,`ramp`,`diverging`]);function pz(e){return typeof e==`string`||typeof e==`object`&&!!e}function mz(e){return fz.has(e)}function hz(e,t){if(mz(t))return yz(e)[t]}function gz(e){if([`nominal`,`ordinal`,`quantitative`,`index`,`locus`].includes(e))return e}function _z(e){if(!e)return{};let t={...e};for(let e of[`nominal`,`ordinal`,`quantitative`,`index`,`locus`,`nominalColorScheme`,`ordinalColorScheme`,`quantitativeColorScheme`,`indexColorScheme`,`locusColorScheme`])delete t[e];return t}function vz(e,t){let n=gz(t);return fP(e.flatMap(e=>{let t=e.scale;return[t,t&&n?t[n]:void 0]}))}function yz(e){return fP(e.map(e=>e.range))}function bz(e,{channel:t,dataType:n,isExplicitDomain:r,markTypes:i,hasDomainMid:a}){let o=vz(e,n),s=yz(e),c={..._z(o)};if(r?c.zero=!1:c.zero===void 0&&o.zero!==void 0&&(c.zero=o.zero),Hh(t)&&c.nice===void 0&&(c.nice=o.nice===void 0?!r:o.nice),Jh(t)&&c.scheme===void 0)if(n==`quantitative`){let e=a||o.domainMid!==void 0?s.diverging:i?.length&&i.every(e=>dz.has(e))?s.heatmap:s.ramp,t=pz(e)?e:o.quantitativeColorScheme;pz(t)&&(c.scheme=t)}else{let e=o[uz[n]??uz.quantitative];pz(e)&&(c.scheme=e)}else Yh(t)&&c.range===void 0?c.range=t==`shape`?s.shape??[]:[]:t==`size`&&c.range===void 0?c.range=s.size:t==`angle`&&c.range===void 0&&(c.range=s.angle);return c}function xz(e,t){return z(e)?t.createExpression(e.expr)():Array.isArray(e)?e.map(e=>xz(e,t)):e}function Sz(e){return z(e)?[e]:Array.isArray(e)?e.flatMap(e=>Sz(e)):[]}var Cz=`quantitative`,wz=`ordinal`,Tz=`nominal`;function Ez(e,t){if(t==`index`||t==`locus`){if(Vh(e))return t;throw Error(e+` does not support `+t+` data type. Only positional channels do.`)}let n={x:[`band`,`band`,`linear`],y:[`band`,`band`,`linear`],size:[void 0,`point`,`linear`],opacity:[void 0,`point`,`linear`],fillOpacity:[void 0,`point`,`linear`],strokeOpacity:[void 0,`point`,`linear`],color:[`ordinal`,`ordinal`,`linear`],fill:[`ordinal`,`ordinal`,`linear`],stroke:[`ordinal`,`ordinal`,`linear`],strokeWidth:[void 0,void 0,`linear`],shape:[`ordinal`,`ordinal`,void 0],dx:[void 0,void 0,`null`],dy:[void 0,void 0,`null`],angle:[void 0,void 0,`linear`],sample:[`null`,void 0,void 0]},r=[`sample`].includes(e)?`null`:n[e]?n[e][[Tz,wz,Cz].indexOf(t)]:t==`quantitative`?`linear`:`ordinal`;if(r===void 0)throw Error(`Channel "`+e+`" is not compatible with "`+t+`" data type. Use of a proper scale may be needed.`);return r}function Dz(e,t,n,r){if(n){if([`index`,`locus`].includes(n)&&!Vh(e))throw Error(`Index and locus scales are only supported on positional channels (x/y). Channel "${e}" resolves to scale type "${n}".`);if([`index`,`locus`].includes(t)&&n!==t||n===`locus`&&n!==t)throw Error(`${r} "${n}" is incompatible with "${t}" data.`)}}function Oz(e,t){Hh(t)&&e.type!==`ordinal`&&(e.range=[0,1]),t==`opacity`&&vm(e.type)&&e.clamp===void 0&&(e.clamp=!0)}function kz({channel:e,dataType:t,orderedMembers:n,viewLevelScaleConfig:r,isExplicitDomain:i,configScopes:a}){let o=n,s=o.map(e=>typeof e.view.getMarkType==`function`?e.view.getMarkType():void 0).filter(e=>!!e),c=cz(r?[r.config]:o.map(e=>e.channelDef.scale).filter(e=>e!==void 0),`scale`,[`domain`]);if(c===null||c.type==`null`)return{type:`null`};let l={...bz(a,{channel:e,dataType:t,isExplicitDomain:i,markTypes:s,hasDomainMid:c.domainMid!==void 0}),...c};if(l.type||=Ez(e,t),Dz(e,t,r?l.type:void 0,`View-level scales.${e}.type`),typeof l.range==`string`){if(!mz(l.range))throw Error(`Unknown named scale range "`+l.range+`". Supported names: shape, size, angle, heatmap, ramp, diverging.`);let t=hz(a,l.range);if(t===void 0)throw Error(`Named scale range "`+l.range+`" is not configured in config.range.`);Jh(e)&&(typeof t==`string`||typeof t==`object`&&t&&!Array.isArray(t))?(l.scheme=t,delete l.range):l.range=t}if(e==`y`&&ym(l.type)&&l.reverse==null&&(l.reverse=!0),l.range&&l.scheme&&delete l.scheme,l.domainTransition===void 0&&(l.domainTransition=!(o.some(e=>Sz(e.channelDef.scale?.domain).length>0)||Sz(r?.config.domain).length>0)),Array.isArray(l.range)&&l.range.some(z)&&o.length>0){let e=r?.config.range===void 0?o.find(e=>e.channelDef.scale?.range!==void 0)?.view:r.view;e&&(l.__rangeExprScope=e)}if(!(`zoom`in l)){let e=vz(a,t);e.zoom===void 0?[`index`,`locus`].includes(l.type)&&(l.zoom=!0):l.zoom=e.zoom}return Oz(l,e),l}function Az(e){return e===`index`||e===`locus`}function jz(e,t){return Az(e)?Pz(t):t}function Mz(e,t){return Az(e)?Fz(t):t}function Nz(e,t){return t&&Az(e)?Pz(t):t}function Pz(e){return[e[0],e[1]+Iz(e)]}function Fz(e){return[e[0],e[1]-Iz(e)]}function Iz(e){return e[1]>=e[0]?1:-1}function Lz(e,t){let n=e.findRuntimeForParam(t);if(!n)throw Error(`Selection domain parameter "${t}" was not found.`);return n}function Rz(e,t){if(e){if(!ig(e))throw Error(`Selection domain parameter "${t}" must be an interval selection.`);return e}}function zz(e,t,n){let r=e.paramRuntime.findRuntimeForParam?Lz(e.paramRuntime,t):e.paramRuntime;return{runtime:r,selection:Rz(r.getValue?r.getValue(t):e.paramRuntime.findValue(t),t)}}function Bz(e,t,n,r){let i=[];return e.visit(e=>{let a=e.paramRuntime?.paramConfigs?.get(n);if(!a||!hg(a))return;let o=sg(a.select);!lg(o)||!o.encodings?.includes(r)||e.paramRuntime.findRuntimeForParam(n)===t&&i.push({view:e,param:a})}),i}function Vz(e,t,n,r){let i=new Set,a=[e.getLayoutAncestors?.(),e.getDataAncestors?.(),[e]];for(let e of a)for(let a of e??[]){if(!a||i.has(a))continue;i.add(a);let e=a.paramRuntime?.paramConfigs?.get(n);if(!e||!hg(e))continue;let o=sg(e.select);if(!(!lg(o)||!o.encodings?.includes(r))&&a.paramRuntime.findRuntimeForParam?.(n)===t)return!0}return!1}function Hz(e,t,n={}){if(!e||e.length!==2)return;let r=Number(e[0]),i=Number(e[1]);if(!Number.isFinite(r)||!Number.isFinite(i))return;let a=Math.min(r,i),o=Math.max(r,i);if(a=Math.max(t[0],a),o=Math.min(t[1],o),!(a>o)&&!(n.roundToIntegers&&(a=Math.ceil(a),o=Math.ceil(o),a=Math.max(t[0],a),o=Math.min(t[1],o),a>o)))return[a,o]}var Uz=class e extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(t){if(t instanceof e&&t.type!=this.type)throw Error(`Cannot combine different types of domains: ${this.type} and ${t.type}`);for(let e of t)this.extend(e);return this}extendAllWithAccessor(e,t){for(let n of e)this.extend(t(n));return this}},Wz=class extends Uz{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)}},Gz=class extends Uz{constructor(){super(),this.type=`ordinal`,this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)||this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this}},Kz=class extends Gz{constructor(){super(),this.type=`nominal`}},qz=class extends Uz{constructor(e){super();let t=0;for(let n=1;n<e.length;n++)t+=Math.sign(e[n]-e[n-1]);if(Math.abs(t)!=e.length-1)throw Error(`Piecewise domain must be strictly increasing or decreasing: `+JSON.stringify(e));e.forEach(e=>this.push(e))}extend(e){if(this.includes(e))return this;throw Error(`Piecewise domains are immutable and cannot be unioned!`)}},Jz={quantitative:Wz,index:Wz,locus:Wz,nominal:Kz,ordinal:Gz};function Yz(e,t){if(e==`quantitative`&&Xz(t)){let n=new qz(t);return n.type=e,n}else if(Jz[e]){let n=new Jz[e];return n.type=e,t&&n.extendAll(t),n}throw Error(`Unknown type: `+e)}function Xz(e){return e&&e.length>0&&e.length!=2&&e.every(e=>typeof e==`number`)}var Zz=class{#e;#t;#n;#r;#i;#a;#o;#s;#c=void 0;#l=!0;#u=new Map;#d=new WeakMap;constructor({getActiveMembers:e,getAllMembers:t,getDataMembers:n,getViewLevelConfiguredDomain:r,getType:i,getLocusExtent:a,fromComplexInterval:o}){this.#e=e,this.#t=t??e,this.#n=n??e,this.#r=r,this.#i=i,this.#a=a,this.#o=o}get initialDomainSnapshot(){return this.#s}hasConfiguredDomain(e={}){return!!this.getConfiguredDomain(e)}hasSelectionConfiguredDomain(){return this.getSelectionConfiguredDomainBindingInfo(),!!this.#c}getSelectionConfiguredDomainBindingInfo(){return this.#c||!this.#l||this.getConfiguredDomain(),this.#c}getSelectionConfiguredDomainInfo(){let e=this.getSelectionConfiguredDomainBindingInfo();if(e)return{param:e.param,encoding:e.encoding}}invalidateConfiguredDomain(){this.#l=!0,this.#c=void 0,this.#u.clear()}getDefaultDomain(e=!1,t){let n=this.#i();return uB(n,this.#a,e&&n!==`locus`?this.getDataDomain():void 0,t)}getConfiguredOrDefaultDomain(e=!1,t,n={}){return this.getConfiguredDomain(n)??this.getDefaultDomain(e,t)}getConfiguredDomain(e={}){let t=e.includeSelectionInitial??!0;if(!this.#l&&this.#u.has(t))return this.#u.get(t);let n=Qz(this.#e(),this.#r?.(),this.#o,t);return oB(this.#t(),n.selectionRef),this.#c=n.selectionRef,this.#u.set(t,n.domain),this.#l=!1,n.domain}getDataDomain(){return lB(this.#n(),this.#i,e=>this.#f(e))}captureInitialDomain(e,t,n){if(!this.#s&&vm(e.type)){let t=n??e.domain();Et(t)>0&&(this.#s=t)}return t?!1:(this.#s=n??e.domain(),!0)}#f(e){let t=this.#d.get(e);if(t)return t;let n=e.view.mark.encoders;if(!n)return[];let r=n[e.channel];if(!r)return[];let i=wh(r);if(i.length===0)return[];let a=i.filter(ph).filter(e=>!e.channelDef.domainInert);return this.#d.set(e,a),a}};function Qz(e,t,n,r){let i=Array.from(e).filter(e=>e.contributesToDomain).filter(e=>e.channelDef.scale?.domain),a={domains:[],selectionRef:void 0,selectionRuntime:void 0,selectionDescription:void 0,hasLiteralDomain:!1};t?.domain!==void 0&&$z(a,eB(t,n,r));for(let e of i)$z(a,eB({view:e.view,channel:e.channel,type:e.channelDef.type,domain:e.channelDef.scale.domain},n,r));return rB(a)}function $z(e,t){t.kind===`selection`?tB(e,t):nB(e,t)}function eB(e,t,n){let r=e.domain;return cB(r)?{kind:`selection`,...iB(e,r,t,n)}:{kind:`literal`,domain:aB(e.type,xz(r,e.view?.paramRuntime),t)}}function tB(e,t){if(e.hasLiteralDomain)throw Error(`Cannot mix selection-driven and literal configured domains on a shared scale.`);if(e.selectionRef&&(e.selectionRef.runtime!==t.runtime||e.selectionRef.param!==t.param||e.selectionRef.encoding!==t.encoding))throw Error(`Conflicting selection domain references on a shared scale: `+e.selectionDescription+` vs `+t.description+`.`);e.selectionRuntime=t.runtime,e.selectionDescription=t.description,e.selectionRef={param:t.param,encoding:t.encoding,hasInitial:(e.selectionRef?.hasInitial??!1)||t.hasInitial,runtime:t.runtime},t.domain&&e.domains.push(t.domain)}function nB(e,t){if(e.selectionRuntime)throw Error(`Cannot mix literal configured domains with selection-driven domains on a shared scale.`);e.hasLiteralDomain=!0,e.domains.push(t.domain)}function rB(e){return e.domains.length>0?{domain:e.domains.reduce((e,t)=>e.extendAll(t)),selectionRef:e.selectionRef}:e.selectionRuntime?{domain:void 0,selectionRef:e.selectionRef}:{domain:void 0,selectionRef:void 0}}function iB(e,t,n,r){let i=t.param,a=sB(e.channel,t,i),o=zz(e.view,i,a),s=t.initial!==void 0,c=o.selection?.intervals[a],l=i+`.`+a;return!c||c.length!==2?{domain:r&&t.initial?aB(e.type,t.initial,n):void 0,description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}:{domain:Yz(e.type,n(c)),description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}}function aB(e,t,n){let r=n(t);return Yz(e,e===`locus`&&SR(t)&&!CR(t)?r:jz(e,r))}function oB(e,t){if(!t||e.size<2||!Array.from(e).some(e=>Vz(e.view,t.runtime,t.param,t.encoding)))return;let n=Array.from(new Set(Array.from(e).filter(e=>e.contributesToDomain).map(e=>e.view.getPathString?.()??e.view.name??`(unknown)`)));throw Error(`Selection domain reference "${t.param}.${t.encoding}" cannot use a shared ${t.encoding} scale when the same interval selection is defined in that shared view group (${n.join(`, `)}). This creates a feedback loop between brushing and the scale domain. Make the linked ${t.encoding} scale independent, for example with "resolve": { "scale": { "${t.encoding}": "independent" } } on the common ancestor.`)}function sB(e,t,n){if(t.encoding)return t.encoding;let r=qh(e);if(r===`x`||r===`y`)return r;throw Error(`Selection domain reference "${n}" on channel "${e}" requires an explicit "encoding" ("x" or "y").`)}function cB(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.param==`string`}function lB(e,t,n){let r=t(),i=new Map;for(let t of e){if(!t.contributesToDomain)continue;let e=n(t);if(e.length===0)continue;let a=t.view.getCollector();for(let t of e){let e=_h(t,r),n=a??null,o=i.get(n);if(o||(o=new Map,i.set(n,o)),o.has(e))continue;let s;if(a)s=a.getDomain(e,r,t);else if(t.constant)s=Yz(r),s.extend(t({}));else continue;o.set(e,s)}}if(i.size===0)return;let a=Yz(r);for(let e of i.values())for(let t of e.values())a.extendAll(t);return a}function uB(e,t,n,r){return e==`locus`?t(r):e==`index`?Nz(e,n)??[]:n??[]}function dB(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}function fB(e,t,n){return e*(t/e)**+n}var pB=e=>new Promise(t=>setTimeout(t,e));function mB(){return{canceled:!1}}function hB(e){let t=e.requestAnimationFrame||window.requestAnimationFrame,n=e.signal,r=e.cancelToken,i=()=>new Promise((i,a)=>{if(r?.canceled)return i();if(n?.aborted)return a(`aborted`);let o=performance.now(),s=o+(e.duration||1e3),c=typeof e.from==`number`?e.from:0,l=typeof e.to==`number`?e.to:1,u=e.easingFunction||(e=>e),d=e=>(e-o)/(s-o),f=e=>e*(l-c)+c,p=e=>Math.max(0,Math.min(1,e)),m=o=>{if(r?.canceled){i();return}n?.aborted?a(`aborted`):(e.onUpdate(f(u(p(d(o))))),o<s?t(m):(e.onUpdate(f(u(1))),i()))};t(m)});return e.delay?r?.canceled?Promise.resolve():n?.aborted?Promise.reject(`aborted`):pB(e.delay).then(i):i()}function gB(e,t,n,r,i={}){let a=i.onUnsupported??`throw`;switch(e.type){case`linear`:case`index`:case`locus`:return ct(t,n,r);case`log`:return lt(t,n,r);case`pow`:case`sqrt`:return ut(t,n,r,e.exponent());case`symlog`:return dt(t,n,r,e.constant());default:if(a===`identity`)return t;throw Error(`Zooming is not implemented for: `+e.type)}}var _B=class{#e;#t;#n;#r;#i;#a;#o;#s=null;constructor({getScale:e,getAnimator:t,renderImmediately:n,getInitialDomainSnapshot:r,getResetDomain:i,fromComplexInterval:a,getGenomeExtent:o}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a,this.#o=o}getZoomExtent(){let e=this.#e(),t=e.props.zoom;return yB(e,t,this.#a,this.#o,this.#r)}isZoomable(){return this.isZoomingSupported()&&!!this.#e().props.zoom}isZoomingSupported(){let e=this.#e().type;return vm(e)&&!ym(e)}getDomainChangeAction(e,t){return Yl(t,e)?`none`:this.isZoomable()?`restore`:this.isZoomingSupported()?`animate`:`notify`}isZoomed(){return this.isZoomingSupported()&&!Yl(this.#i(),this.#e().domain())}zoom(e,t,n){if(!this.isZoomingSupported())return!1;let r=this.#e(),i=r.domain(),a=bB(r,i,e,t,n),o=this.getZoomExtent();return a=ft(a,o[0],o[1]),[0,1].some(e=>a[e]!=i[e])?(r.domain(a),!0):!1}async zoomTo(e,t=!1){let{duration:n,renderImmediately:r}=vB(t);if(!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let i=this.#e(),a=xB(i.type,e,this.#a),o=this.#t(),s=i.domain();if(n>0&&s.length==2){if(r)throw Error(`renderImmediately is not supported for animated zooms.`);let e=s[1]-s[0],t=a[1]-a[0],c=s[0]+e/2,l=a[0]+t/2,u=s[0]==a[0],d=s[1]==a[1];this.#c();let f=mB();this.#s=f,await o.transition({duration:n,easingFunction:dB,cancelToken:f,onUpdate:n=>{let r=fB(e,t,n),a=e==t?n:(e-r)/(e-t),o=a*l+(1-a)*c,f=[u?s[0]:o-r/2,d?s[1]:o+r/2];i.domain(f)}}),this.#s===f&&(this.#s=null),i.domain(a)}else this.#c(),i.domain(a),r?this.#n():o?.requestRender()}#c(){this.#s&&=(this.#s.canceled=!0,null)}resetZoom(){if(!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let e=this.#e(),t=e.domain(),n=this.#i();return[0,1].some(e=>n[e]!=t[e])?(e.domain(n),!0):!1}getZoomLevel(){return this.isZoomable()?Et(this.getZoomExtent())/Et(this.#e().domain()):1}};function vB(e){if(e===void 0)return{duration:0,renderImmediately:!1};if(St(e))return{duration:e?700:0,renderImmediately:!1};if(typeof e==`number`)return{duration:e,renderImmediately:!1};let t=e.duration??0;return{duration:St(t)?t?700:0:t,renderImmediately:e.renderImmediately===!0}}function yB(e,t,n,r,i){return SB(t)&&O(t.extent)?xB(e.props.type,t.extent,n):t&&e.props.type==`locus`?r():i()}function bB(e,t,n,r,i){let a=[...t],o=e.invert(r);switch(e.props.reverse&&(i=-i),`align`in e&&(o+=e.align()),e.type){case`linear`:case`index`:case`locus`:a=at(a,i||0);break;case`log`:a=ot(a,i||0);break;case`pow`:case`sqrt`:a=j(a,i||0,e.exponent());break;case`symlog`:if(i!==0)throw Error(`Panning is not implemented for: `+e.type);break;default:throw Error(`Zooming is not implemented for: `+e.type)}return gB(e,a,o,n)}function xB(e,t,n){let r=e===`locus`?n(t):t;return e===`locus`&&SR(t)&&!CR(t)?r:jz(e,r)}function SB(e){return Qe(e)}function CB(e){let t=e.view.getPathString(),n=e.channel??``;return t+`|`+n}function wB(e){return Array.from(e).sort((e,t)=>CB(e).localeCompare(CB(t)))}L(`index`,pR,[`continuous`]),L(`locus`,kR,[`continuous`]),L(`null`,MM,[]);var TB=class{#e=new Set;#t=new Set;#n;#r={domain:new Set,range:new Set};#i;#a;#o;#s;#c=!1;#l=[];#u=0;#d=[];#f=!1;#p=void 0;#m;#h;#g=0;#_=0;#v=!1;constructor(e,t){this.channel=e,this.type=null,this.name=void 0,this.#m=t,this.#a=new Zz({getActiveMembers:()=>this.#x(),getAllMembers:()=>this.#e,getDataMembers:()=>this.#x(this.#t),getViewLevelConfiguredDomain:()=>this.#L(),getType:()=>this.type,getLocusExtent:e=>this.#C(e),fromComplexInterval:this.fromComplexInterval.bind(this)}),this.#i=new az({getParamRuntime:()=>this.#b.paramRuntime,onRangeChange:()=>this.#T(`range`),onDomainChange:()=>this.#T(`domain`),getGenomeStore:()=>this.#S.genomeStore}),this.#o=new _B({getScale:()=>this.getScale(),getAnimator:()=>this.#S.animator,renderImmediately:()=>this.#S.renderImmediately(),getInitialDomainSnapshot:()=>this.#a.initialDomainSnapshot,getResetDomain:()=>this.#A(),fromComplexInterval:this.fromComplexInterval.bind(this),getGenomeExtent:()=>this.#C()})}get#y(){let e=this.#e.values().next().value;if(!e)throw Error(`ScaleResolution has no members!`);return e.view}get#b(){return this.#m??this.#y}#x(e=this.#e){let t=new Set;for(let n of e){let e=n.view;e.isConfiguredVisible()&&(!e.isDataInitialized()&&!n.channelDef?.scale?.domain||t.add(n))}return t}get#S(){return this.#b.context}get zoomExtent(){return(this.#i.scale&&vm(this.#i.scale.type)&&this.#o.getZoomExtent())??[-1/0,1/0]}#C(e){return FR(this.#w(e))}#w(e){if(this.type===`locus`)return this.#i.scale??this.#i.getLocusGenome(e)}addEventListener(e,t){this.#r[e].add(t)}removeEventListener(e,t){this.#r[e].delete(t)}#T(e){e===`domain`&&this.#u===0&&this.syncLinkedSelectionFromDomain();for(let t of this.#r[e].values())t({type:e,scaleResolution:this})}#E(e){this.#u+=1;try{e()}finally{--this.#u}}syncLinkedSelectionFromDomain(){let e=this.#a.getSelectionConfiguredDomainBindingInfo();if(!e||!this.isZoomable())return;let t=Rz(e.runtime.getValue(e.param),e.param);if(!t)return;let n=this.#D(this.getScale().domain());if(!n)return;let r=this.#D(this.#a.getDefaultDomain(!0)),i=r&&Yl(n,r)?null:n;EB(t.intervals[e.encoding]??null,i)||e.runtime.setValue(e.param,{...t,type:`interval`,intervals:{...t.intervals,[e.encoding]:i}})}#D(e){return Hz(e,this.zoomExtent)}#O(){return this.#a.getSelectionConfiguredDomainBindingInfo()}#k(){return!this.#f}#A(e=!1,t){return this.#a.getConfiguredOrDefaultDomain(e,t,{includeSelectionInitial:this.#k()})}#j(){if(this.#h?.config.domain!==void 0)return!0;for(let e of this.#e)if(e.contributesToDomain&&e.channelDef.scale?.domain!==void 0)return!0;return!1}#M(e){let t=Rz(e.runtime.getValue(e.param),e.param);if(!t)return null;let n=t.intervals[e.encoding];return n&&n.length===2?n:null}#N(e,t){t?this.#f=!1:e&&(this.#f=!0)}#P(e){let t=DB(e),{channel:n,channelDef:r}=t;this.#R(t);let i=r.type==null&&this.type;if(n!=`sample`&&!r.type&&!Gh(n)&&!i)throw Error(`The "type" property must be defined in channel definition: "${n}": ${JSON.stringify(r)}. Must be one of: "quantitative", "ordinal", "nominal", "locus", "index"`);let a=n==`sample`?`nominal`:r.type,o=r?.scale?.name,s=r.scale?.type??(a===`index`||a===`locus`?a:void 0);if(Dz(this.channel,a,s,`encoding.${n}.scale.type`),o){if(this.name!==void 0&&o!=this.name)throw Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!i){if(!this.type)this.type=a;else if(a!==this.type&&!Gh(n))throw Error(`Can not use shared scale for different data types: ${this.type} vs. ${a}. Use "resolve: independent" for channel ${this.channel}`)}return this.#e.add(t),t.contributesToDomain&&this.#t.add(t),t}#F(){this.#v=!1,this.#q(),this.#Y(),this.#H(),this.#U()}#I(){this.#_>0?this.#v=!0:this.#F()}static registerInBatch(e,t){let n=Array.from(e);for(let e of n)e.#_++;try{return t()}finally{for(let e of n)e.#_--,e.#_===0&&e.#v&&e.#F()}}registerMember(e){let t=this.#P(e);return this.#I(),()=>{let e=this.#e.delete(t);return e&&(this.#t.delete(t),this.#I()),e&&this.#e.size===0}}attachViewLevelScaleConfig(e,t){if(this.#h&&this.#h.view!==e)throw Error(`Multiple view-level scale configs target the same ${this.channel} scale resolution.`);for(let e of this.#e)this.#z(e);this.#h={view:e,config:t},this.#K(),this.#Y(),this.#H(),this.#U(),this.#i.scale&&(this.#i.resetScale(),this.initializeScale())}clearViewLevelScaleConfig(e){this.#h?.view===e&&(this.#h=void 0,this.#K(),this.#Y(),this.#H(),this.#U(),this.#i.scale&&(this.#i.resetScale(),this.initializeScale()))}getViewLevelScaleConfig(){return this.#h}#L(){let e=this.#h;if(e)return{view:e.view,channel:this.channel,type:this.type,domain:e.config.domain}}#R(e){this.#h&&this.#z(e)}#z(e){if(e.channelDef.scale!==void 0)throw Error(`Cannot mix view-level scales.${this.channel} with encoding.${e.channel}.scale in the same scale resolution.`)}dispose(){this.#B(),this.#V(),this.#r.domain.clear(),this.#r.range.clear(),this.#i.dispose()}#B(){for(let e of this.#l)e();this.#l=[],this.#p=void 0}#V(){for(let e of this.#d)e();this.#d=[]}#H(){if(this.#B(),this.#e.size===0)return;let e=this.#O();e&&(this.#p=this.#M(e),this.#l.push(e.runtime.subscribe(e.param,()=>{let t=this.#p,n=this.#M(e);this.#N(t,n),this.#p=n,this.#Y(),this.reconfigureDomain()})))}#U(){if(this.#V(),this.#e.size===0)return;let e=()=>{this.#Y(),this.reconfigureDomain()};for(let t of this.#e){if(!t.contributesToDomain)continue;let n=t.channelDef.scale?.domain,r=Sz(n);if(r.length!==0)for(let n of r){let r=t.view.paramRuntime.createExpression(n.expr).subscribe(e);this.#d.push(r)}}let t=this.#h?.config.domain,n=Sz(t);for(let t of n){let n=this.#h.view.paramRuntime.createExpression(t.expr).subscribe(e);this.#d.push(n)}}#W(){for(let e of this.#e)if(e.view.hasRendered())return!0;return!1}registerCollectorSubscriptions(e,t){let n=new Set;for(let e of t)e.channelDef.domainInert||n.add(_h(e,this.type));if(n.size===0)return()=>void 0;let r=()=>{this.reconfigureDomain()},i=[];for(let t of n)i.push(e.subscribeDomainChanges(t,r));return()=>{for(let e of i)e()}}isDomainDefinedExplicitly(){return this.#j()}isDomainInitialized(){let e=this.#i.scale;if(!e)return!1;let t=e.domain();return vm(e.type)?t.length>2||t.length==2&&(t[0]!==0||t[1]!==0):t.length>0}#G(){return eP(this,`mergedScaleProps`,()=>{let e=kz({channel:this.channel,dataType:this.type,orderedMembers:this.#J(),viewLevelScaleConfig:this.#h,isExplicitDomain:this.isDomainDefinedExplicitly(),configScopes:this.#b.getConfigScopes()});return this.#X(e),e})}#K(){tP(this,`mergedScaleProps`)}#q(){this.#n=void 0}#J(){return this.#n||=wB(this.#e),this.#n}#Y(){this.#a.invalidateConfiguredDomain(),this.#K()}#X(e){let t=this.#O();if(!t||e===null||e.type===`null`)return;let n=vm(e.type)&&!ym(e.type)&&!!e.zoom;if(t.hasInitial&&!n)throw Error(`Selection domain reference "${t.param}.${t.encoding}" cannot use "initial" with a non-zoomable ${this.channel} scale. Enable zoom on the linked scale or remove "initial".`)}getAssemblyRequirement(){let e=this.#G();return e===null||e.type===`null`||e.type!==`locus`?{assembly:void 0,needsDefaultAssembly:!1}:{assembly:e.assembly,needsDefaultAssembly:e.assembly===void 0}}getResolvedScaleType(){let e=this.#G();if(!(e===null||e.type===`null`))return e.type}#Z(e=!1){let t=this.#G();if(t===null||t.type==`null`)return{type:`null`};let n={...t};this.#g+=1;let r;try{r=this.#A(e,n.type===`locus`?n.assembly:void 0)}finally{--this.#g}if(ym(n.type)){let t=this.isDomainDefinedExplicitly(),i=this.#Q(t);if(r!=null){if(t&&i.domain().length>0&&!Yl(i.domain(),r))return this.#s=void 0,this.#Z(e);i.addAll(r);let a=new Set(r),o=i.domain().filter(e=>a.has(e));n.domain=o.length>0?o:new Kz}else{let e=i.domain();n.domain=e.length>0?e:new Kz}n.domainIndexer=i}else r&&r.length>0&&(n.domain=r);return!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),n}#Q(e){return(!this.#s||this.#c!==e)&&(this.#s=LN(),this.#c=e),this.#s}reconfigure(){this.#E(()=>{this.#Y();let e=this.#$(!0);e&&(this.#ee(e,(e,t)=>this.#i.reconfigureScale(t)),this.#te(e))})}reconfigureDomain(){this.#E(()=>{let e=this.#$(!0,!0);if(!e)return;let{domainConfig:t,targetDomain:n}=e,r=n!=null&&Yl(n,e.scale.domain());n!=null&&!r&&this.#ee(e,e=>{e.domain(n),t.applyOrdinalUnknown&&e.unknown(t.ordinalUnknown)}),this.#te(e),this.syncLinkedSelectionFromDomain()})}#$(e,t=!1){let n=this.#i.scale;if(!n||n.type==`null`)return;let r={scale:n,props:this.#Z(e),previousDomain:n.domain(),domainWasInitialized:this.isDomainInitialized(),hasSelectionConfiguredDomain:this.#a.hasSelectionConfiguredDomain()};if(t){let e=YR(n,r.props);return{...r,domainConfig:e,targetDomain:e.domain}}return r}#ee(e,t){this.#i.withDomainNotificationsSuppressed(()=>{t(e.scale,e.props)})}#te(e){let{scale:t,previousDomain:n,domainWasInitialized:r,hasSelectionConfiguredDomain:i}=e,a=i?this.#a.getDefaultDomain(!0):void 0;if(this.#a.captureInitialDomain(t,r,a)){this.#T(`domain`);return}if(t.props.domainTransition===!1){this.#T(`domain`);return}let o=t.domain(),s=this.#o.getDomainChangeAction(n,o);s===`restore`?i?this.#T(`domain`):this.#i.withDomainNotificationsSuppressed(()=>{t.domain(n)}):s===`animate`?i?this.#T(`domain`):this.#W()?(this.#i.withDomainNotificationsSuppressed(()=>{t.domain(n)}),this.zoomTo(o,500)):this.#T(`domain`):s===`notify`&&this.#T(`domain`)}get scale(){if(this.#i.scale)return this.#i.scale;throw Error(`ScaleResolution.scale accessed before initialization. Call initializeScale().`)}getScale(){if(this.#g>0)throw Error(`Scale resolution for channel "${this.channel}" cannot read its own scale while its domain is being resolved.`);return this.#i.scale??this.initializeScale()}initializeScale(){if(this.#i.scale)return this.#i.scale;let e=this.#Z();return this.#i.createScale(e)}getDomain(){if(this.#g>0)throw Error(`Scale resolution for channel "${this.channel}" cannot read its own domain while its domain is being resolved.`);return this.getScale().domain()}getDataDomain(){return this.#a.getDataDomain()}getComplexDomain(){return PR(this.#w(),Mz(this.type,this.getDomain()))}getLinkedSelectionDomainInfo(){let e=this.#O();if(!e)return;let t=this.#b.getLayoutAncestors().at(-1),n=t?Bz(t,e.runtime,e.param,e.encoding).some(e=>e.param.persist!==!1):!1;return{param:e.param,encoding:e.encoding,persist:n}}isZoomed(){return this.#o.isZoomed()}isZoomable(){let e=this.#G();return e===null||e.type===`null`?!1:vm(e.type)&&!ym(e.type)&&!!e.zoom}zoom(e,t,n){return this.#o.zoom(e,t,n)}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 Error(`Axis length is only defined for x and y channels!`);let e=Array.from(this.#e).map(e=>e.view.coords?.[this.channel===`x`?`width`:`height`]).filter(e=>e>0);return e.length?e.reduce((e,t)=>Math.min(e,t),1e4):0}invertToComplex(e){let t=this.getScale();if(`invert`in t){let n=t.invert(e);return this.toComplex(n)}else throw Error(`The scale does not support inverting!`)}toComplex(e){return jR(this.#w(),e)}fromComplex(e){return MR(this.#w(),e)}fromComplexInterval(e){return this.type==`locus`?NR(this.#w(),e):e}};function EB(e,t){return e===t?!0:!e||!t?!1:e.length===t.length&&Yl(e,t)}function DB(e){let t=e.channelDef.scale,n=t?.assembly;if(!t||!n||typeof n!=`object`||!(`url`in n))return e;let r=_F(e.view.getBaseUrl(),n.url);return r===n.url?e:{...e,channelDef:{...e.channelDef,scale:{...t,assembly:{...n,url:r}}}}}function OB(...e){for(let t of e)if(t!==void 0)return t}var kB=class{#e=new Set;constructor(e){this.channel=e}get scaleResolution(){return this.#e.values().next().value?.view.getScaleResolution(this.channel)}#t(e){let{view:t}=e,n=t.getScaleResolution(this.channel);if(!n)throw Error(`Cannot find a scale resolution!`);if(this.scaleResolution&&n!==this.scaleResolution)throw Error(`Shared axes must have a shared scale! Channel: ${this.channel}, existing views: [${Array.from(this.#e).map(e=>e.view.getPathString()).join(`, `)}], new view: ${t.getPathString()}.`);this.#e.add(e),tP(this,`axisProps`)}registerMember(e){return this.#t(e),()=>this.removeMember(e)&&this.#e.size===0}removeMember(e){let t=this.#e.delete(e);return t&&tP(this,`axisProps`),t}getAxisProps(){return eP(this,`axisProps`,()=>{let e=wB(this.#e).map(e=>{let t=e.view.mark.encoding[e.channel];return`axis`in t&&t.axis});return e.length>0&&e.some(e=>e===null)?null:cz(e.filter(e=>e!==void 0),`axis`,[`title`])})}getTitle(){let e=wB(this.#e).map(e=>{let t=Nh(e.view,e.channel);if(!Oh(t))return{member:e,axisTitle:`axis`in t?t.axis?.title:void 0,explicitTitle:OB(`axis`in t?t.axis?.title:void 0,t.title),implicitTitle:OB(kh(t)?t.field:void 0,Fh(t)?t.expr:void 0)}}),t=e.map(e=>e.axisTitle).find(e=>e!==void 0);if(t!==void 0)return t;let n=e.filter(t=>{if(Gh(t.member.channel)&&!t.explicitTitle){let n=qh(t.member.channel);return e.find(e=>e.member.view==t.member.view&&e.member.channel==n)?.explicitTitle===void 0}return!0}),r=new Set(n.map(e=>OB(e.explicitTitle,e.implicitTitle)).filter(P));return r.size?[...r].join(`, `):null}},AB=e=>{if(jh(e))return e;if(Lh(e)){let t=e.condition;if(!Array.isArray(t)&&jh(t))return t}},jB=(e,t,n)=>{let r=e;for(;(r.getConfiguredOrDefaultResolution(n,t)==`forced`||r.dataParent&&[`shared`,`excluded`,`forced`].includes(r.dataParent.getConfiguredOrDefaultResolution(n,t)))&&r.getConfiguredOrDefaultResolution(n,t)!=`excluded`;)r=r.dataParent;return r},MB=(e,t,n)=>{if(!t.resolutions.scale[n]){let r=new TB(n,t);t.resolutions.scale[n]=r;let i=t=>{e.context.glHelper?.createRangeTexture(t.scaleResolution,!0)};r.addEventListener(`range`,i),r.addEventListener(`domain`,i),e.registerDisposer(()=>{r.removeEventListener(`range`,i),r.removeEventListener(`domain`,i)})}return t.resolutions.scale[n]},NB=(e,t,n,r)=>{let i=AB(r);if(!i)return;let a=qh(i.resolutionChannel??n);if(Xh(a)&&!(t==`axis`&&!Hh(a)))return{view:jB(e,t,a),channel:n,channelDef:i,targetChannel:a}},PB=(e,t)=>{for(let[n,r]of Object.entries(e.mark.encoding))!r||Array.isArray(r)||t(n,r)},FB=e=>{let t=[];return PB(e,(n,r)=>{let i=NB(e,`axis`,n,r);i&&Hh(i.channel)&&t.push(i)}),t},IB=e=>{let t=new Map;return PB(e,(n,r)=>{let i=NB(e,`scale`,n,r);if(!i)return;let a=MB(e,i.view,i.targetChannel),o=t.get(a);o?o.push(i):t.set(a,[i])}),t},LB=(e,t)=>{for(let{view:n,channel:r,channelDef:i,targetChannel:a}of t){if(!Hh(r)||!Vh(a))continue;n.resolutions.axis[a]||(n.resolutions.axis[a]=new kB(a));let t=n.resolutions.axis[a],o=t.registerMember({view:e,channel:r,channelDef:i});e.registerDisposer(()=>{o()&&n.resolutions.axis[a]===t&&delete n.resolutions.axis[a]})}},RB=(e,t)=>{TB.registerInBatch(t.keys(),()=>{for(let[n,r]of t)for(let{view:t,channel:i,channelDef:a,targetChannel:o}of r){let r=o,s=!e.isDomainInert(),c=n.registerMember({view:e,channel:i,channelDef:a,contributesToDomain:s});e.registerDisposer(()=>{c()&&t.resolutions.scale[r]===n&&(n.dispose(),delete t.resolutions.scale[r])})}})},zB=(e,t)=>{if(!t){zB(e,`scale`),zB(e,`axis`);return}t==`axis`?LB(e,FB(e)):RB(e,IB(e))},BB={point:NP,rect:EP,rule:zP,tick:zP,link:ZP,text:rF},VB=class extends iR{#e;#t=!1;#n=null;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e;let o=BB[this.getMarkType()];if(o)this.mark=new o(this);else throw Error(`No such mark: ${this.getMarkType()}`);this.#e=this.paramRuntime.allocateSetter(`zoomLevel`,1),this.resolve();for(let e of[`x`,`y`]){let t=this.getScaleResolution(e);if(t){let e=()=>{this.#e(Math.sqrt(this.getZoomLevel()))};t.addEventListener(`domain`,e),this.registerDisposer(()=>t.removeEventListener(`domain`,e))}}this.registerDisposer(this._addBroadcastHandler(`subtreeDataReady`,()=>{for(let e of Rh)this.getScaleResolution(e)?.syncLinkedSelectionFromDomain()})),this.needsAxes={x:!0,y:!0},this.#r()}#r(){for(let[e,t]of this.paramRuntime.paramConfigs){if(!(`select`in t))continue;let n=sg(t.select),r=n.on,i=n.clear;if(cg(n)){let t=0,a=t=>{this.paramRuntime.setValue(e,t)},o=()=>{let e=this.context.getCurrentHover();return e?.mark?.unitView===this?e.datum:null},s=r.filter?XL(r.filter):()=>!0;if(this.addInteractionListener([`mouseover`,`pointerover`].includes(r.type)?`mousemove`:r.type,r=>{if(!s(r.proxiedMouseEvent))return;let i=o(),c=i?i[sh]:0,l;n.toggle?r.mouseEvent.shiftKey?i&&(l=ng(this.paramRuntime.getValue(e),{toggle:[i]})):l=eg(i?[i]:null):c!=t&&(t=c,l=$h(i)),l!==void 0&&a(l)}),i){let e=i.filter?XL(i.filter):()=>!0;this.addInteractionListener(i.type,r=>{e(r.proxiedMouseEvent)&&(t=0,a(n.toggle?eg():$h(null)))})}}}}render(e,t,n={}){super.render(e,t,n),this.isConfiguredVisible()&&(e.pushView(this,t),e.renderMark(this.mark,n),e.popView(this))}getMarkType(){return typeof this.spec.mark==`object`?this.spec.mark.type:this.spec.mark}getEncoding(){let e=super.getEncoding(),t=this.mark.getSupportedChannels();for(let n of Object.keys(e))n!==`key`&&(t.includes(n)||delete e[n]);return e}resolve(e){if(!e){this.resolve(`scale`),this.resolve(`axis`);return}zB(this,e)}dispose(){super.dispose(),this.mark.dispose()}getDataAccessor(e){let t=this.mark.encoders;if(t)return t[e]?Th(t[e]):void 0}getSearchAccessors(){return this.#n||=(uR(this.getEncoding())??[]).map(e=>R(e)),this.#n}getFacetAccessor(e){return this.getDataAccessor(`sample`)||super.getFacetAccessor(this)}getCollector(){return this.flowHandle?.collector}registerDomainSubscriptions(){if(this.#t||this.isDomainInert())return;let e=this.getCollector();if(!e)return;let t=this.mark.encoders;if(!t)throw Error(`Encoders are not initialized!`);this.#t=!0;let n=Jm(e),r=new Map;for(let e of Object.values(t)){if(!e)continue;let t=wh(e);if(t.length!==0)for(let e of t){if(!ph(e))continue;let t=this.getScaleResolution(e.scaleChannel);if(!t)throw Error(`Missing scale resolution for channel: `+e.scaleChannel);if(e.channelDef.domainInert||HB(e,t,n))continue;let i=r.get(t);i||(i=new Set,r.set(t,i)),i.add(e)}}for(let[t,n]of r){if(n.size===0)continue;let r=t.registerCollectorSubscriptions(e,n);this.registerDisposer(r)}}getZoomLevel(){return Rh.map(e=>this.getScaleResolution(e)?.getZoomLevel()??1).reduce((e,t)=>e*t,1)}propagateInteraction(e){this.handleInteraction(e,!0),e.target=this,!e.stopped&&this.handleInteraction(e,!1)}getDefaultResolution(e,t){return e==`x`?`shared`:`independent`}};function HB(e,t,n){return!t.isDomainDefinedExplicitly()&&n.has(qh(e.scaleChannel))}var UB=class extends Error{constructor(e,t){super(t),this.kind=e}};async function WB(e,t={}){let n;try{n=await fetch(e,{signal:t.signal})}catch(e){throw new UB(`network`,String(e))}if(!n.ok)throw new UB(`http`,String(n.status)+` `+n.statusText);try{return await n.json()}catch(e){throw new UB(`json`,String(e))}}function GB(e){let t=new Set;e.visit(e=>{for(let n of Object.values(e.resolutions.scale)){let e=n.name;if(e&&t.has(e))throw Error(`The same scale name "${e}" occurs in multiple scale resolutions!`);t.add(e)}})}function KB(e){for(let t of Rh){let n=e.getScaleResolution(t);n&&!n.name&&n.isZoomable()&&(n.name=`${t}_at_root`)}}function qB(e,t=()=>!0){return Promise.allSettled(e).then(e=>{if(t())for(let t of e)`value`in t?t.value.finalizeGraphicsInitialization():`reason`in t&&console.error(t.reason)})}async function JB(e,t,n){let r=e.import;if(!(`url`in r))throw Error(`Not an url import: `+JSON.stringify(r));let i=gF(t,r.url),a;try{a=await WB(i)}catch(e){throw Error(`Could not load imported view spec: ${i}. Reason: ${e.message}`,{cause:e})}if(n.isViewSpec(a))return a.baseUrl=gF(vF(r.url),a.baseUrl),a;throw Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(e)}`)}function YB(e){let t=e.getSize(),n=e.getPadding(),r=(e,t)=>e.grow>0?void 0:e.px+t;return{width:r(t.width,n.horizontalTotal),height:r(t.height,n.verticalTotal)}}function*XB(e,t=[]){for(let[n,r]of e.entries())if(r instanceof Map)for(let e of XB(r,[...t,n]))yield e;else yield[[...t,n],r]}var ZB=2147483647,QB=eV([ZB]);function $B(e){for(let t=1;t<e.length;t++)if(e[t]<e[t-1])return!1;return!0}function eV(e){let t=0;for(let n=0,r=e.length;n<r;n++)e[n]>t&&(t=e[n]);return Math.floor(Math.log2(t)/4)+1}function tV(e){let t=eV(e),n=Array.from({length:e.length},(e,t)=>t);if($B(e))return n;let r=Array(e.length),i=Array(16);for(let a=0;a<t;a++){i.fill(0);let t=a*4,o=16**a,s=r=>{let i=e[n[r]];return a>=QB?i>ZB?Math.floor(i/o)%16:0:i>>t&15};for(let t=0;t<e.length;t++)i[s(t)]++;for(let e=1;e<16;e++)i[e]+=i[e-1];for(let t=e.length-1;t>=0;t--)r[--i[s(t)]]=n[t];[n,r]=[r,n]}return n}var nV=`|`,rV=`\\`,iV=class{#e=null;#t=null;#n=!1;invalidate(){this.#e=null,this.#t=null,this.#n=!1}findDatum(e,t,n){if(!e||e.length===0)return;let r=e.join(`, `);if(e.length!==t.length)throw Error(`Key tuple length ${t.length} does not match fields [${r}]`);(!this.#e||!this.#i(e))&&this.#r(e,n);let i=this.#t,a;if(this.#n){let e=``;for(let n=0;n<t.length;n++){n>0&&(e+=nV);let r=i[n],a=aV(t[n],r);e+=sV(a)}a=e}else{let e=i[0];a=aV(t[0],e)}return this.#e.get(a)}#r(e,t){let n=e.map(e=>R(e)),r=new Map,i=e.join(`, `),a=e.length!==1;if(a)for(let a of t)for(let t=0,o=a.length;t<o;t++){let o=a[t],s=``;for(let t=0;t<n.length;t++){t>0&&(s+=nV);let r=e[t],i=aV(n[t](o),r);s+=sV(i)}if(r.get(s)!==void 0){let e=n.map(e=>e(o));throw Error(`Duplicate key detected for fields [${i}]: ${JSON.stringify(e)}`)}r.set(s,o)}else{let a=n[0],o=e[0];for(let e of t)for(let t=0,n=e.length;t<n;t++){let n=e[t],s=aV(a(n),o);if(r.get(s)!==void 0)throw Error(`Duplicate key detected for fields [${i}]: ${JSON.stringify(s)}`);r.set(s,n)}}this.#e=r,this.#t=[...e],this.#n=a}#i(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 aV(e,t){if(e===void 0)throw Error(`Key field "${t}" is undefined. Ensure all key fields are present in the data.`);if(e===null)throw Error(`Key field "${t}" is null. Ensure all key fields are present in the data.`);if(typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`)throw Error(`Key field "${t}" must be a scalar value (string, number, or boolean).`);return e}function oV(e){if(!(e.indexOf(rV)!==-1||e.indexOf(nV)!==-1))return e;let t=``;for(let n=0;n<e.length;n++){let r=e[n];(r===rV||r===nV)&&(t+=rV),t+=r}return t}function sV(e){return typeof e==`string`?oV(e):String(e)}var cV=class extends qm{#e=[];#t=R(sh);#n=[];#r=new iV;#i;#a;#o=new lV;get behavior(){return 4}get label(){return`collect`}constructor(e){super(),this.params=e??{type:`collect`},this.observers=new Set,this.facetBatches=new hn([],JSON.stringify),this.#a=dV(this.params?.sort),this.#s()}#s(){this.#e=[],this.#n=[],this.#r.invalidate(),this.facetBatches.clear(),this.facetBatches.set(void 0,this.#e)}reset(){super.reset(),this.#s()}handle(e){this.#e.push(e)}beginBatch(e){this.#r.invalidate(),Xm(e)&&(this.#e=[],this.facetBatches.set(Xl(e.facetId),this.#e))}complete(){if(this.#e=[],this.params.groupby?.length){if(this.facetBatches.size>1)throw Error(`TODO: Support faceted data!`);let e=this.facetBatches.get(void 0),t=this.params.groupby.map(e=>R(e)),n=t.length>1?xn(e,...t):uV(e,t[0]);this.facetBatches.clear();for(let[e,t]of XB(n))this.facetBatches.set(e,t)}if(this.#a)for(let e of this.facetBatches.values())e.sort(this.#a);this.#d(),this.#c(),super.complete(),this.#u();for(let e of this.observers)e(this)}observe(e){return this.observers.add(e),()=>{this.observers.delete(e)}}#c(){if(this.children.length)for(let[e,t]of this.facetBatches.entries()){if(e){let t={type:`facet`,facetId:e};for(let e of this.children)e.beginBatch(t)}for(let e=0,n=t.length;e<n;e++)this._propagate(t[e])}}repropagate(){for(let e of this.children)e.reset();this.#c();for(let e of this.children)e.complete();this.#u()}getDomain(e,t,n){return this.#o.getDomain(e,()=>{let e=Yz(t);if(n.constant)e.extend(n({}));else if(this.completed)for(let t of this.facetBatches.values())for(let r=0,i=t.length;r<i;r++)e.extend(n(t[r]));return e})}subscribeDomainChanges(e,t){return this.#o.subscribe(e,t)}getData(){switch(this.#l(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{let e=this.facetBatches;return{[Symbol.iterator]:function*(){for(let t of e.values())yield*t}}}}}visitData(e){this.#l();for(let t of this.facetBatches.values())for(let n=0;n<t.length;n++)e(t[n])}getItemCount(){let e=0;for(let t of this.facetBatches.values())e+=t.length;return e}#l(){if(!this.completed)throw Error(`Data propagation is not completed! No data are available.`)}#u(){this.#o.hasCachedDomains()&&this.#o.clear(),this.#o.notify()}#d(){this.#i=[];let e=this.facetBatches.values().next().value?.[0];if(e==null||!(`_uniqueId`in e))return;let t=0,n=[],r=this.#t;for(let[e,i]of this.facetBatches){this.#i.push({start:t,stop:t+i.length,facetId:e}),t+=i.length;for(let e=0,t=i.length;e<t;e++)n.push(r(i[e]))}this.#n=tV(n)}findDatumByUniqueId(e){if(!this.#n.length)return;let t=on(e=>e.start).right,n=this.#t,r=on(e=>n(i(e))).left,i=e=>{let n=t(this.#i,e),r=this.#i[n-1];if(!(!r||e>=r.stop))return this.facetBatches.get(r.facetId)[e-r.start]},a=r(this.#n,e);if(a>=0){let t=i(this.#n[a]);if(t&&n(t)===e)return t}}findDatumByKey(e,t){return this.#l(),this.#r.findDatum(e,t,this.facetBatches.values())}},lV=class{#e=new Map;#t=new Map;hasCachedDomains(){return this.#e.size>0}clear(){this.#e.clear()}getDomain(e,t){let n=this.#e.get(e);if(n)return n;{let n=t();return this.#e.set(e,n),n}}subscribe(e,t){let n=this.#t.get(e);return n||(n=new Set,this.#t.set(e,n)),n.add(t),()=>{let n=this.#t.get(e);n&&(n.delete(t),n.size===0&&this.#t.delete(e))}}notify(){if(this.#t.size===0)return;let e=new Set;for(let t of this.#t.values())for(let n of t)e.add(n);for(let t of e)t()}};function uV(e,t){let n=new Map;for(let r=0,i=e.length;r<i;r++){let i=e[r],a=t(i),o=n.get(a);o||(o=[],n.set(a,o)),o.push(i)}return n}function dV(e){if(e?.field){let t=Xl(e.field);if(t.length==1&&!t[0].includes(`.`)){let n=Xl(e.order)[0]??`ascending`,r=JSON.stringify(t[0]);return Function(`a`,`b`,`return a[${r}] ${n===`ascending`?`-`:`+`} b[${r}];`)}return ht(e.field,e.order)}}var fV=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e,this.startAccessor=R(e.start),this.endAccessor=R(e.end),this.chromAccessor=e.chrom?R(e.chrom):e=>void 0,this.weightAccessor=e.weight?R(e.weight):e=>1,this.as={coverage:e.as??`coverage`,start:e.asStart??e.start,end:e.asEnd??e.end,chrom:e.asChrom??e.chrom},this.createSegment=Function(`start`,`end`,`coverage`,`chrom`,`return {`+Object.entries(this.as).filter(([e,t])=>t).map(([e,t])=>`${JSON.stringify(t)}: ${e}`).join(`, `)+`};`),this.ends=new bF}reset(){super.reset(),this.initialize()}initialize(){let e=this.as.coverage,t=this.as.end,n=this.as.chrom,r=this.startAccessor,i=this.endAccessor,a=this.chromAccessor,o=this.weightAccessor,s,c,l,u=0,d=NaN,f=this.ends;f.clear();let p=e=>{this._propagate(e),s=null},m=(n,r,i)=>{if(n==r)return;let a=!1;s&&(s[e]===i?(s[t]=r,a=!0):s[e]!=0&&p(s)),a||(s=this.createSegment(n,r,i,l))},h=()=>{let e;for(;(e=f.peekValue())!==void 0;)m(d,e,u),d=e,u-=f.pop();d=NaN,s&&p(s)};this.handle=e=>{let t=r(e),s;for(;(s=f.peekValue())!==void 0&&s<t;)m(d,s,u),d=s,u-=f.pop();if(n){let t=a(e);t!==c&&(h(),l=t,c=l)}isNaN(d)||m(d,t,u),d=t;let p=o(e);u+=p,f.push(p,i(e))},this.complete=()=>{h(),super.complete()},this.beginBatch=e=>{h(),c=null,super.beginBatch(e)}}};function pV(e,t,n=e=>+e,r=0,i=e.length){let a=new bF,o=i-r,s;for(s=0;s<t&&s<o;s++)a.push(s,n(e[r+s]));for(;s<o;s++){let t=n(e[r+s]);t>=a.peekValue()&&(a.push(s,t),a.pop())}let c=[],l;for(;(l=a.pop())!==void 0;)c.push(e[r+l]);return c.reverse()}var mV=class{constructor(e,t=-1/0,n=1/0){this.maxSize=e,this.lowerLimit=t,this.upperLimit=n;let r=this.maxSize*2+1;this.lowerLimits=new Float64Array(r),this.upperLimits=new Float64Array(r),this.lowerChildren=new Int32Array(r),this.upperChildren=new Int32Array(r),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,n=0){if(e>=this.lowerLimits[n]&&t<=this.upperLimits[n]){let r=this.lowerChildren[n];if(r){let i=this._findSlot(e,t,r);return i>=0?i:this._findSlot(e,t,this.upperChildren[n])}else return n}else return-1}reserve(e,t){if(t-e<=0)throw Error(`Cannot reserve an empty or negative-size slot!`);if(this.n+1>this.lowerLimits.length)return!1;let n=this._findSlot(e,t);if(n<0)return!1;let r=this.n++,i=this.n++;return this.lowerLimits[r]=this.lowerLimits[n],this.upperLimits[r]=e,this.lowerLimits[i]=t,this.upperLimits[i]=this.upperLimits[n],this.lowerChildren[n]=r,this.upperChildren[n]=i,!0}},hV=class extends oh{get behavior(){return 4}get domainSensitiveScaleChannels(){return[this.channel]}constructor(e,t){if(super(e),this.params=e,this._data=[],this.channel=e.channel??`x`,![`x`,`y`].includes(this.channel))throw Error(`Invalid channel: `+this.channel);this.startPosAccessor=R(this.params.pos),this.endPosAccessor=R(this.params.pos2??this.params.pos),this.startPosBisector=on(this.startPosAccessor),this.endPosBisector=on(this.endPosAccessor),this.scoreAccessor=R(this.params.score),this.widthAccessor=R(this.params.width),this.laneAccessor=this.params.lane?R(this.params.lane):e=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=t.getScaleResolution(this.channel);let n=()=>this._filterAndPropagate();this.schedule=()=>t.context.animator.requestTransition(n);let r=()=>this._filterAndPropagate();this.resolution.addEventListener(`domain`,r),this.registerDisposer(()=>this.resolution.removeEventListener(`domain`,r));let i=t._addBroadcastHandler(`layoutComputed`,()=>this.schedule());this.registerDisposer(i)}complete(){let e=this.startPosAccessor;this._data.sort((t,n)=>e(t)-e(n));for(let e of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(e,new mV(200));this.schedule(),super.complete()}_filterAndPropagate(){super.reset();let e=this.resolution.getScale(),t=this.resolution.getAxisLength();if(!t)return;for(let e of this.reservationMaps.values())e.reset();let n=e.domain(),r=pV(this._data,70,this.scoreAccessor,this.endPosBisector.left(this._data,n[0]),this.startPosBisector.right(this._data,n[1]));for(let n of r){let r=e(this.startPosAccessor(n))*t,i=e(this.endPosAccessor(n))*t,a=i-r,o=this.widthAccessor(n)+this.padding*2,s=(r+i)/2,c=Math.max(0,(a-o)/2);if(c>0){let e=Math.max(0,o/2-s);s+=Math.min(e,c);let n=Math.max(0,o/2+s-t);s-=Math.min(n,c)}if(this.reservationMaps.get(this.laneAccessor(n)).reserve(s-o/2,s+o/2))if(this.params.asMidpoint){let r=Object.assign({},n);r[this.params.asMidpoint]=e.invert(s/t),this._propagate(r)}else this._propagate(n)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}},gV=class extends oh{constructor(e,t){super(e,t),this.params=e,this.predicate=void 0}initialize(){let e;if(_V(this.params))e=this.params.expr;else if(vV(this.params)){let t=this.paramRuntime.findValue(this.params.param);if(!t)throw Error(`Cannot initialize filter transform. Selection parameter "${this.params.param}" not found!`);e=rg(this.params,t)}else throw Error(`Invalid filter params: `+JSON.stringify(this.params));this.predicate=this.paramRuntime.watchExpression(e,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)})}handle(e){this.predicate(e)&&this._propagate(e)}};function _V(e){return`expr`in e}function vV(e){return`param`in e}var yV=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=e.index;if(e.fields){let n=Xl(e.fields).map(e=>R(e)),r=Xl(e.as||e.fields);if(n.length!==r.length)throw Error(`Lengths of "fields" (${n.length}), and "as" (${r.length}) do not match!`);this.handle=e=>{let i=n.map((t,n)=>t(e)??[]),a=i[0].length;for(let o=0;o<a;o++){let a=Object.assign({},e);for(let e=0;e<n.length;e++)a[r[e]]=o<i[e].length?i[e][o]:null;t&&(a[t]=o),this._propagate(a)}}}else this.handle=e=>{for(let n=0;n<e.length;n++){let r=Object.assign({},e[n]);t&&(r[t]=n),this._propagate(r)}}}},bV=48;function*xV(e,t=`,`){let n=t.charCodeAt(0),r=0;for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);i==n?(yield r,r=0):r=r*10+i-bV}yield r}var SV=class extends oh{get behavior(){return 1}constructor(e){super(e);let t=R(e.exons??`exons`),n=R(e.start??`start`),[r,i]=e.as||[`exonStart`,`exonEnd`];this.handle=e=>{let a=n(e),o=a,s=!0,c=t(e);for(let t of xV(c)){if(s)o=a+t;else{a=o+t;let n=Object.assign({},e);n[r]=o,n[i]=a,this._propagate(n)}s=!s}}}},CV=class extends oh{get behavior(){return 1}constructor(e){super(e);let t=Xl(e.field).map(e=>R(e)),n=Xl(e.separator),r=Xl(e.as||e.field);if(t.length!==n.length||t.length!==r.length)throw Error(`Lengths of "separator" (${n.length}), "fields" (${t.length}), and "as" (${r.length}) do not match!`);this.handle=e=>{if(t.some(t=>!t(e)))return;let i=t.map((t,r)=>t(e).split(n[r]));wV(i,e);let a=i[0].length;for(let n=0;n<a;n++){let a=Object.assign({},e);for(let e=0;e<t.length;e++)a[r[e]]=i[e][n];this._propagate(a)}}}};function wV(e,t){let n=e.map(e=>e.length);if(!n.every(e=>e==n[0]))throw Error(`Mismatching number of elements in the fields to be split: `+JSON.stringify(t))}var TV=class extends oh{get behavior(){return 2}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)}},EV=class extends oh{get behavior(){return 2}constructor(e,t){e={channel:`x`,...e},super(e),this.params=e;let n=e.channel;if(![`x`,`y`].includes(n))throw Error(`Invalid channel: `+n);let r=t.getScaleResolution(n).getScale(),i=`genome`in r?r.genome():void 0;if(!i)throw Error(`LinearizeGenomicCoordinate transform requires a locus scale!`);let a=R(e.chrom),o=Xl(e.pos).map(e=>R(e)),s=Xl(e.as);if(o.length!=s.length)throw Error(`The number of "pos" and "as" elements must be equal!`);let c=Xl(e.offset),l;if(c.length==0)l=Array(o.length).fill(0);else if(c.length==1)l=Array(o.length).fill(c[0]);else if(c.length==o.length)l=c;else throw Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);let u=Function(`datum`,`chromOffset`,`posAccessors`,s.map((e,t)=>`datum[${JSON.stringify(e)}] = chromOffset + +posAccessors[${t}](datum) - ${l[t]};`).join(`
|
|
810
|
+
`)),d,f=0,p=e=>{if(e!==d){if(f=i.cumulativeChromPositions.get(e),f===void 0)return;d=e}return f};this.handle=e=>{let t=a(e),n=p(t);if(n===void 0)throw Error(`Unknown chromosome/contig "${t}" in datum: ${JSON.stringify(e)}`);u(e,n,o),this._propagate(e)}}},DV=class extends oh{get behavior(){return 2}constructor(e,t){super(e,t),this.params=e;let n=R(e.field),r=e.as,i=0;if(z(e.fontSize)){let n=t.paramRuntime.watchExpression(e.fontSize.expr,()=>{i=n(),this.repropagate()},{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)});i=n()}else i=e.fontSize;this.handle=e=>{let t=n(e);t===void 0?e[r]=0:e[r]=this.font.metrics.measureWidth(t,i),this._propagate(e)}}initialize(){let e=this.paramRuntimeProvider.context.fontManager;this.font=this.params.font?e.getFont(this.params.font,this.params.fontStyle,this.params.fontWeight):e.getDefaultFont()}},OV=65536,kV=class extends oh{get behavior(){return 2}constructor(e){super(e),this.params=e}reset(){super.reset(),this.initialize()}initialize(){let e=this.params,t=e.as||`lane`,n=N(e.spacing)?e.spacing:1,r=R(e.start),i=R(e.end);if(!e.preference!=!e.preferredOrder)throw Error(`Must specify both "preference" and "preferredOrder"`);if(e.preference){let a=new Float64Array(OV),o=R(e.preference),s=e.preferredOrder,c=1/0;this.handle=e=>{let l=r(e);l<c&&a.fill(-1/0),c=l;let u=s.indexOf(o(e)),d;if(u>=0&&a[u]<l)d=u;else{let t=r(e);for(d=0;d<a.length&&!(a[d]<t);d++);if(d>=a.length)throw Error(`Out of lanes!`)}a[d]=i(e)+n,e[t]=d,this._propagate(e)}}else{let e=new bF,a=new bF,o=-1/0,s=0;this.handle=c=>{let l=r(c);for(;e.length&&(e.peekValue()<=l||l<o);){let t=e.pop();a.push(t,t)}o=l;let u=a.pop();u===void 0&&(u=s++),c[t]=u,this._propagate(c),e.push(u,i(c)+n)}}}},AV=class extends oh{get behavior(){return 1}constructor(e){if(super(e),this.params=e,e.as&&e.as.length!=e.fields.length)throw Error(`"fields" and "as" have unequal lengths!`);let t=e.fields.map(e=>R(e)),n=e.as?e.as:t.map(He);this.handle=e=>{let r={};for(let i=0;i<t.length;i++)r[n[i]]=t[i](e);this._propagate(r)}}},jV=class extends oh{get behavior(){return 2}constructor(e){super(e),this.params=e;let t=new RegExp(e.regex),n=typeof e.as==`string`?[e.as]:e.as,r=R(e.field);this.handle=i=>{let a=r(i);if(P(a)){let r=a.match(t);if(r){if(r.length-1!=n.length)throw Error(`The number of RegEx groups and the length of "as" do not match!`);for(let e=0;e<n.length;e++)i[n[e]]=r[e+1]}else if(e.skipInvalidInput)for(let e=0;e<n.length;e++)i[n[e]]=void 0;else throw Error(`"${a}" does not match the given regex: ${t.toString()}`)}else if(!e.skipInvalidInput)throw Error(`Trying to match a non-string field. Encountered type: ${typeof a}, field content: "${a}".`);this._propagate(i)}}},MV=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=Xl(e.columnRegex).map(e=>new RegExp(e));for(let e of t)if(RegExp(`|`+e.source).exec(``).length-1!=1)throw Error(`Regex ${e.toString()} must have exactly one capturing group!`);let n=Xl(e.asValue);if(t.length!=n.length)throw Error(`Lengths of "columnRegex" and "as" are not equal!`);let r=e.skipRegex?new RegExp(e.skipRegex):void 0,i=e.asKey||`sample`,a,o,s,c=e=>{let c=Object.keys(e);for(let e of t)if(!c.some(t=>e.test(t)))throw Error(`No columns matching the regex ${e.toString()} found in the data!`);let l=new Map;for(let[e,n]of t.entries())for(let t of c){let r=n.exec(t)?.[1];if(r!==void 0){let n=l.get(r);n||(n=[],l.set(r,n)),n[e]=t}}a=[...l.entries()],o=c.filter(e=>!t.some(t=>t.test(e))&&!(r&&r.test(e)));let u=[...o.map(e=>JSON.stringify(e)+`: datum[`+JSON.stringify(e)+`]`),JSON.stringify(i)+`: sampleId`,...n.map((e,t)=>JSON.stringify(e)+`: datum[attrs[${t}]]`)];s=Function(`datum`,`sampleId`,`attrs`,`return {
|
|
808
811
|
`+u.join(`,
|
|
809
812
|
`)+`
|
|
810
|
-
};`)},l=e=>{a||c(e);for(let t=0;t<a.length;t++){let[n,r]=a[t],i=s(e,n,r);this._propagate(i)}},u=e=>{c(e),l(e),this.handle=l};this.handle=u,this.beginBatch=e=>{Ym(e)&&(this.handle=u),super.beginBatch(e)}}},
|
|
811
|
-
`)+` };`);return n.properties=t,n}function ZV(e){let t=[];do t=t.concat(Object.keys(e)),e=Object.getPrototypeOf(e);while(e&&e!==Object.prototype);return Array.from(new Set(t))}var QV=class extends oh{get behavior(){return 1}#e;#t=e=>e;constructor(){super({type:`clone`});let e=e=>{let t=ZV(e);(!this.#e||!Yl(t,this.#e))&&(this.#e=t,this.#t=XV(e));let n=this.#t;this.handle=e=>this._propagate(n(e)),this.handle(e)};this.handle=e,this.beginBatch=t=>{Ym(t)&&(this.handle=e),super.beginBatch(t)}}};function $V(e){return`name`in e}var eH=class extends Zm{#e;constructor(e,t,n){super(t),this.provider=n,this.params=e}get identifier(){return this.params.name}get label(){return`namedSource`}updateDynamicData(e){this.#e=e,this.loadSynchronously()}loadSynchronously(){let e=this.#e??this.provider(this.params.name)??[],t=e=>e;if(Array.isArray(e))e.length>0&&(t=IC(e[0]));else throw Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:`file`});for(let n of e)this._propagate(t(n));this.complete()}async load(){this.loadSynchronously()}},tH=class{#e;#t;loadingStatusRegistry;constructor(){this.#e=new Set,this.#t=new Set,this.loadingStatusRegistry=new FT}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;){let e=t;t=e.parent,t?(t.removeChild(e),e.dispose()):e instanceof Zm?this.removeDataSource(e):e.dispose()}}findNamedDataSource(e){let t;for(let n of this.#e.values())if(n instanceof eH&&e==n.identifier){if(t&&t!==n)throw Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);t=n}if(t)return{dataSource:t}}};function nH(e,t){let n=new Map,r=[];for(let t of e)n.set(t,{ref:t,children:[]});for(let e of n.values()){let i=n.get(t(e.ref));i?i.children.push(e):r.push(e)}return r}function rH(e,t,n){let r=t.preOrder?.(e);if(r)return r;for(let r of n(e)){let e=rH(r,t,n);if(e===`stop`)return e}return t.postOrder?.(e)}function iH(e,t){return rH(e,t,e=>e.children)}function aH(e,t,n,r){let i=[],a=[],o,s=t??new tH,c=[],l=r??(()=>!0);function u(e,t=()=>void 0){if(!o)throw t()||Error(`Cannot append data flow node, no parent exist!`);return o.addChild(e),o=e,i.push(e),e}function d(e,t){return u(e,()=>Error(`Cannot append a transform because no (inherited) data are available! ${t?JSON.stringify(t):``}`))}function f(e,t){for(let n of e){let e;try{e=NV(n,t)}catch(e){throw console.warn(e),Error(`Cannot initialize "${n.type}" transform: ${e}`,{cause:e})}e.behavior&2&&d(new QV),d(e)}}function p(){return i.findLastIndex(e=>e instanceof uh)>i.findLastIndex(e=>e instanceof Zm)}let m=e=>{if(!l(e)){let t=e.flowHandle?.node;if(t){t!==o&&(o=t,i.push(t));return}if(e.spec.data||e.spec.transform||e instanceof LB)throw Error(`Cannot reuse missing flow nodes for `+e.getPathString());return}if(e.spec.data){let t=e.flowHandle?.dataSource;t&&t.view===e&&!t.identifier&&s.removeDataSource(t);let n=$V(e.spec.data)?new eH(e.spec.data,e,e.context.getNamedDataFromProvider):JV(e.spec.data,e);o=n,i.push(n),s.addDataSource(n),e.flowHandle??={},e.flowHandle.dataSource=n}if(e.spec.transform&&f(e.spec.transform,e),e instanceof LB){if(!o)throw Error(`A unit view (${e.getPathString()}) has no (inherited) data source`);let t=sH(e);if(t){c.push(t.rewrite);for(let e of t.transforms)d(e)}e.mark.isPickingParticipant()&&!p()&&(d(new QV),d(new uh({type:`identifier`})));let n=new iV({type:`collect`,groupby:e.getFacetFields(),sort:cH(e,t?.rewrittenEncoding)});u(n);let r=e.flowHandle?.collector;r&&s.removeCollector(r),s.addCollector(n),e.flowHandle??={},e.flowHandle.collector=n}o&&(e.flowHandle??={},e.flowHandle.node=o)},h=nH(oH(e,n),e=>e.dataParent);for(let e of h)iH(e,{preOrder:e=>{a.push({view:e.ref,nodeStackDepth:i.length}),m(e.ref)},postOrder:()=>{let{nodeStackDepth:e}=a.pop();i.length=e,o=i.at(-1)}});return c.forEach(e=>e()),s}function oH(e,t){if(!t)return e.getDescendants();let n=[];return e.visit(e=>{if(!t(e))return tR;n.push(e)}),n}function sH(e){let t=[],n={},r=e.mark.encoding,i=e.getEncoding(),a=[];for(let[e,t]of Object.entries(r)){let n=e;qh(n)!==n&&!(n in i)||Hh(n)&&!Array.isArray(t)&&Ph(t)&&a.push({channel:n,chromPosDef:t})}let o=xn(a,e=>qh(e.channel),e=>e.chromPosDef.chrom);for(let[a,s]of o.entries())for(let[o,c]of s.entries()){let s=[],l=[],u=[];for(let{channel:t,chromPosDef:a}of c){let o=e=>e.replace(/[^A-Za-z0-9_]/g,``),c=[`_linearized_`,o(a.chrom),`_`,o(a.pos)].join(``),d={...e.spec.encoding?.[t]??i[t]??r[t]??{},field:c};delete d.chrom,delete d.pos,!d.type&&a.type&&(d.type=a.type),n[t]=d,s.push(a.pos),u.push(a.offset??0),l.push(c)}t.push(new QV),t.push(new SV({type:`linearizeGenomicCoordinate`,channel:a,chrom:o,pos:s,offset:u,as:l},e))}return t.length?{transforms:t,rewrittenEncoding:n,rewrite:()=>{e.spec.encoding={...e.spec.encoding,...n},tP(e.mark,`encoding`)}}:void 0}function cH(e,t){let n={...e.getEncoding(),...t}.x;if(jh(n)&&e.getScaleResolution(`x`)?.isZoomable()){if(kh(n))return`buildIndex`in n&&n.buildIndex?{field:n.field}:null;if(!Ah(n)&&Fh(n))throw Error(`A zoomable x channel must be mapped to a field.`)}}function lH(e,t=void 0){if(e.parent!==t)return!1;for(let t of e.children)if(!lH(t,e))return!1;return!0}function uH(e,t=!1){if(e.behavior&4&&(t=!0),e instanceof QV)if(t)t=!1;else{let n=e.children[0];e.excise(),n&&uH(n,t);return}e.behavior&1&&(t=!1);for(let n=0,r=e.children.length;n<r;n++)uH(e.children[n],t||r>1)}function dH(e){let t=e.dataSources,n=new Map;for(let e of t)e.identifier&&!n.has(e.identifier)&&n.set(e.identifier,e);let r=new Set,i=new Map;for(let e of t)if(e.identifier){let t=n.get(e.identifier);t&&(t!==e&&t.adoptChildrenOf(e),r.add(t),i.set(e,t))}else r.add(e),i.set(e,e);return e.replaceDataSources(r),i}function fH(e){if(uH(e),!lH(e))throw Error(`Encountered a bug! There's a problem in the data flow structure.`)}function pH(e){let t=dH(e);for(let t of e.dataSources)fH(t);return t}var mH=new WeakMap,hH=new WeakMap;function gH(e,t){let n=mH.get(e);if(n){if(!t?.queueReload)return n;let r=hH.get(e);if(r)return r;let i=n.catch(()=>{}).then(()=>gH(e)).finally(()=>{hH.delete(e)});return hH.set(e,i),i}let r=Promise.resolve().then(()=>e.load()).finally(()=>{mH.delete(e)});return mH.set(e,r),r}function _H(e,t){for(let n of e.getDescendants()){let e=n.flowHandle;if(!e)continue;let r=e.dataSource;r&&(e.dataSource=t.get(r)??r)}}function vH(e,t,n,r){let i=r??(()=>!0),a=SH(e,n).filter(i);if(a.length===0)return{dataFlow:t,unitViews:[],dataSources:new Set,graphicsPromises:[]};let o=new Set(a);for(let e of a)e._setDataInitializationState(`pending`);let s;try{s=aH(e,t,n,e=>o.has(e)),_H(e,pH(s))}catch(e){for(let e of a)e._setDataInitializationState(`none`);throw e}let c=yH(a);for(let e of c)e.visit(e=>e.initializeOnce());let l=a.filter(e=>e instanceof LB),u=[],d=!!e.context.glHelper;for(let e of l){let t=e.mark;t.initializeEncoders(),e.registerDomainSubscriptions(),d&&u.push(t.initializeGraphics().then(()=>t)),e.registerDisposer(e.flowHandle.collector.observe(n=>{if(t.initializeData(),d)try{t.updateGraphicsData()}catch(t){throw t.view=e,t}e.context.animator.requestRender()}))}for(let e of a)e._setDataInitializationState(`ready`);return{dataFlow:s,unitViews:l,dataSources:c,graphicsPromises:u}}function yH(e,t){let n=Array.isArray(e)?e:SH(e,t),r=new Set;for(let e of n){if(t&&!t(e))continue;let n=e;for(;n&&!n.flowHandle?.dataSource;)n=n.dataParent;n?.flowHandle?.dataSource&&r.add(n.flowHandle.dataSource)}return r}function bH(e,t){let n=new Set;return e.visit(e=>{if(t&&!t(e))return tR;if(e.flowHandle?.dataSource)return n.add(e.flowHandle.dataSource),tR}),n}function xH(e,t,n,r){return t||=bH(e,n),Promise.all(Array.from(t).map(e=>gH(e,r))).then(t=>(CH(e),t))}function SH(e,t){let n=[];return t?(e.visit(e=>{if(!t(e))return tR;n.push(e)}),n):e.getDescendants()}function CH(e){let t={type:`subtreeDataReady`,payload:{subtreeRoot:e}};e.visit(e=>e.handleBroadcast(t))}async function wH(e,t,n,r){let i=e=>e.isConfiguredVisible(),{dataFlow:a,graphicsPromises:o}=vH(e,t,i);return r(a),await n.waitUntilReady(),await xH(e,new Set(a.dataSources),i),await UB(o),a}async function TH(e,t,n){let r=e=>e.isConfiguredVisible(),i=EH(e,r).filter(e=>e.getDataInitializationState()===`none`);if(i.length===0)return t;let a=new Set(i),o=e=>a.has(e),s=new Set,c=[];for(let e of i){if(e.spec.data){c.push(e);continue}let t=OH(e);t?s.add(t):c.push(e)}let{dataFlow:l,graphicsPromises:u}=vH(e,t,r,o);await n.waitUntilReady();for(let e of s)e.repropagate();if(c.length){let e=DH(c);await Promise.all(Array.from(e.entries()).map(([e,t])=>xH(e,t,void 0,{queueReload:!0})))}return await UB(u),l}function EH(e,t){let n=[];return e.visit(e=>{if(!t(e))return tR;n.push(e)}),n}function DH(e){let t=new Map;for(let n of e){let e=n;for(;e&&!e.flowHandle?.dataSource;)e=e.dataParent;if(!e?.flowHandle?.dataSource){if(n.spec.data)throw Error(`No data source found for view `+n.getPathString());continue}let r=t.get(e);r||(r=new Set,t.set(e,r)),r.add(e.flowHandle.dataSource)}return t}function OH(e){let t=e.dataParent;for(;t;){let e=t.flowHandle?.collector;if(e)return e.completed?e:void 0;t=t.dataParent}}var kH=class{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){let 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;let t=this.transitions;this.transitions=[];let n;for(;n=t.shift();)n(e);this._renderCallback(e)}))}transition(e){return dB({requestAnimationFrame:e=>this.requestTransition(e),...e})}};function AH(e,t,n,r,i){let a=0,o=!0,s=structuredClone(i),c=s;function l(e,t,n,r){return t+(e-t)*2**(-n/r)}function u(i){if(o)return;let d=i-a;a=i;for(let e of Object.keys(c))s[e]=l(s[e],c[e],d,n);t(s);let f=-1/0;for(let e of Object.keys(c))f=Math.max(f,Math.abs(c[e]-s[e]));f<r?(s=c,t(s),o=!0,f!=0&&e.requestRender()):e.requestTransition(e=>u(e))}function d(e){c=e,o&&(o=!1,a=+document.timeline.currentTime,u(a))}return d.stop=()=>{o=!0},d}var jH=class{constructor(e){this.genomes=new Map,this.#e=new Map,this.#t=new Map,this.#n=new Map,this.#r=0,this.#i=void 0,this.baseUrl=e}#e;#t;#n;#r;#i;async initialize(e){let{name:t,...n}=e;this.configureGenomes(new Map([[t,n]]),t),await this.ensureAssembly(t)}configureGenomes(e,t){this.genomes.clear(),this.#t.clear(),this.#n.clear(),this.#r=0,this.#e=new Map(e),this.#i=t}getDefaultAssemblyName(){if(this.#i)return this.#i;if(this.#e.size===1)return this.#e.keys().next().value;if(this.#e.size===0&&this.genomes.size===1)return this.genomes.keys().next().value}async ensureAssemblies(e){let t=[],n=new Set;for(let r of e){if(!r)continue;let e=MH(r);n.has(e)||(n.add(e),t.push(this.ensureAssembly(r)))}await Promise.all(t)}async ensureAssembly(e){if(typeof e==`object`)return this.#d(e);let t=this.genomes.get(e);if(t)return t;let n=this.#e.get(e);if(n)return this.#u(e,n);let r=this.#s(e);if(r)return r;throw this.#o(e)}getGenome(e){if(e&&typeof e==`object`)return this.#f(e);if(typeof e==`string`){let t=this.genomes.get(e);if(t)return t;if(this.#e.has(e))throw Error(`Genome ${e} has not been loaded yet. Call ensureAssembly("${e}") before accessing it.`);let n=this.#s(e);if(n)return n;throw this.#o(e)}let t=this.getDefaultAssemblyName();if(t)return this.getGenome(t);if(this.#e.size>1)throw Error(`Cannot pick a default genome! More than one have been configured!`);if(this.genomes.size===0&&this.#e.size)throw Error("Default genome is not loaded. Define root `assembly` or call ensureAssembly() first.");if(this.genomes.size>1)throw Error(`Cannot pick a default genome! More than one have been configured!`);if(this.genomes.size===0)throw Error(`No genomes have been configured!`);return this.genomes.values().next().value}#a(e){try{return new yR({name:e})}catch{return}}#o(e){return Error(`No genome with the name ${e} has been configured!`)}#s(e){let t=this.#a(e);if(t)return this.genomes.set(e,t),t}async#c(e,t){let n=this.#t.get(e);if(!n)throw Error(`No pending genome load for ${e}.`);await n;let r=this.genomes.get(e);if(!r)throw Error(t);return r}async#l(e,t){let n=t.load(this.baseUrl);this.#t.set(e,n);try{await n}catch(t){throw this.genomes.delete(e),t}finally{this.#t.delete(e)}return t}async#u(e,t){let n=this.genomes.get(e);if(n)return this.#t.has(e)?this.#c(e,`Loading genome ${e} failed before it became available.`):n;if(this.#t.has(e))return this.#c(e,`Loading genome ${e} failed before it became available.`);let r=new yR({name:e,...t});return this.genomes.set(e,r),`url`in t?this.#l(e,r):r}async#d(e){this.#p(e);let t=this.#m(e),n=this.genomes.get(t);if(n)return this.#t.has(t)?this.#c(t,`Loading inline assembly ${t} failed before it became available.`):n;if(this.#t.has(t))return this.#c(t,`Loading inline assembly ${t} failed before it became available.`);if(`contigs`in e){let n=new yR({name:t,contigs:e.contigs});return this.genomes.set(t,n),n}let r=new yR({name:t,url:e.url});return this.genomes.set(t,r),this.#l(t,r)}#f(e){this.#p(e);let t=this.#m(e),n=this.genomes.get(t);if(n){if(this.#t.has(t))throw Error(`Inline URL assembly ${t} has not been loaded yet. Call ensureAssembly() before accessing it.`);return n}if(`url`in e)throw Error(`Inline URL assemblies must be loaded first. Call ensureAssembly() before accessing it.`);let r=new yR({name:t,contigs:e.contigs});return this.genomes.set(t,r),r}#p(e){if(`contigs`in e==`url`in e)throw Error("Inline `scale.assembly` objects must define exactly one of `contigs` or `url`.")}#m(e){let t=JSON.stringify(e),n=this.#n.get(t);if(n)return n;let r=`inline_assembly_${this.#r}`;for(this.#r+=1;this.genomes.has(r)||this.#e.has(r)||this.#t.has(r);)r=`inline_assembly_${this.#r}`,this.#r+=1;return this.#n.set(t,r),r}};function MH(e){return typeof e==`string`?`name:${e}`:`inline:${JSON.stringify(e)}`}var NH={pages:[`Lato-Regular.png`],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642,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.642,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.429,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.429,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534,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.429,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429,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.336,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429,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.429,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.429,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.153,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.313,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.801,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891,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.208,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429,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.429,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.182,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.176,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.874,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.089,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.278,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:`Lato Regular`,size:42,bold:0,italic:0,charset:` !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~`.split(``),unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]},PH=`data:image/png;base64,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`,FH={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900},IH=class{constructor(e){this._webGLHelper=e,this.fontRepository=`https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/`,this._fonts=new hn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:jM(NH),texture:e?this._createTextureNow(PH):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,t=`normal`,n=`regular`){if(P(n)&&(n=FH[n.toLowerCase()],!n))throw Error(`Unknown font weight: `+n);let r={family:e,style:t,weight:n},i=this._fonts.get(r);return i||(i={metrics:void 0,texture:void 0},this._fonts.set(r,i),this._promises.push(this._loadFontEntry(i,r))),i}async _loadFontEntry(e,t){try{let n=zH(await this._loadMetadata(t.family),t),r=this.fontRepository+LH(t.family)+`/`+n.replace(/\.\w+/,``),i=this._createTexture(r+`.png`),a=this._loadFont(r+`.json`);e.texture=await i,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(e=>{if(!e.ok)throw Error(`Could not load font: `+e.status);return e}).then(e=>e.json()).then(e=>jM(e)),this._fontPromises.set(e,t)),t}_loadMetadata(e){let t=LH(e),n=this._metadataPromises.get(t);if(!n){let e=this.fontRepository+t+`/METADATA.pb`;n=fetch(e).then(t=>{if(!t.ok)throw Error(`Could not load font metadata. Response status: `+t.status+`, url: `+e);return t}).then(e=>e.text()).then(e=>RH(e)).catch(e=>{console.warn(e.message)}),this._metadataPromises.set(t,n)}return n}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){let t=this._webGLHelper.gl;return new Promise((n,r)=>{jk(t,{src:e,min:t.LINEAR},(e,t,i)=>{e?r(e):n(t)})})}_createTextureNow(e){let t=this._webGLHelper.gl,n,r=new Promise((r,i)=>{n=jk(t,{src:e,min:t.LINEAR},(e,t,n)=>{e?i(e):r(t)})});return this._promises.push(r),n}};function LH(e){return e.toLowerCase().replaceAll(/[^\w]/g,``)}function RH(e){let t=e.split(`
|
|
812
|
-
`),n=[],r;for(let e of t)if(e.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}),e.startsWith(`}`)&&(n.push(r),r=void 0),r){let t=e.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(t){let e=t[1];r[e]=t[2]}if(t=e.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),t){let e=t[1];r[e]=+t[2]}}return n}function
|
|
813
|
+
};`)},l=e=>{a||c(e);for(let t=0;t<a.length;t++){let[n,r]=a[t],i=s(e,n,r);this._propagate(i)}},u=e=>{c(e),l(e),this.handle=l};this.handle=u,this.beginBatch=e=>{Ym(e)&&(this.handle=u),super.beginBatch(e)}}},NV=class extends oh{get behavior(){return 2}constructor(e){super(e),this.params=e,this.buffer=[]}reset(){super.reset(),this.buffer=[]}handle(e){this.buffer.push(e)}complete(){let e=this.params,t=e.as||[`y0`,`y1`],n=e.sort?ht(e.sort.field,e.sort.order):void 0,r=e.field?R(e.field):()=>1,i=e.groupby.map(e=>R(e)),a=Sn(this.buffer,e=>i.map(t=>t(e)).join()).map(e=>e[1]),o=e=>!0;if(e.baseField){let t=R(e.baseField);o=e=>t(e)!==null}let s,c;switch(e.offset){case`normalize`:s=(e,t)=>e/t,c=(e,t)=>Hn(e,t);break;case`center`:s=(e,t)=>e-t/2,c=(e,t)=>Hn(e,t);break;case`information`:{let t=Math.log2(e.cardinality??4);s=(e,t)=>e/t,c=(e,n)=>{let r=Hn(e,e=>+!o(e)),i=Hn(e,n),a=i-r,s=0;for(let t=0;t<e.length;t++){let r=e[t];if(o(r)){let e=n(r)/a;s-=e*Math.log2(e)}}return a/(t-(s+0))*(a/i)}}break;default:s=(e,t)=>e,c=(e,t)=>1}for(let e of a){n&&e.sort(n);let i=c(e,r),a=0;for(let n of e){let e=a+r(n);o(n)&&(n[t[0]]=s(a,i),n[t[1]]=s(e,i),this._propagate(n),a=e)}}super.complete()}},PV=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=R(e.field??`sequence`),[n,r]=e.as??[`pos`,`sequence`];this.handle=e=>{let i=Object.assign({},e,{[r]:``,[n]:0}),a=t(e);for(let e=0;e<a.length;e++){let t=Object.assign({},i);t[n]=e,t[r]=a.charAt(e),this._propagate(t)}}}},FV={count:e=>e.length,valid:fn,sum:Hn,min:Pn,max:Nn,mean:zn,q1:(e,t)=>Ln(e,.25,t),median:Bn,q3:(e,t)=>Ln(e,.75,t),variance:pn},IV={aggregate:class extends oh{get behavior(){return 1}constructor(e){if(super(e),this.params=e,this.buffer=[],this.ops=[],this.as=[],e.fields){if(e.fields.length!=e.ops.length)throw Error(`Fields and ops must have the same length!`);if(e.as&&e.as.length!=e.ops.length)throw Error(`If "as" is defined, "fields" and "as" must have the same length!`);e.fields.forEach((t,n)=>{let r=R(t),i=FV[e.ops[n]];this.ops.push(e=>i(e,r)),this.as.push(e.as?e.as[n]:`${e.ops[n]}_${e.fields[n]}`)})}else this.ops.push(e=>FV.count(e)),this.as.push(`count`)}reset(){super.reset(),this.buffer=[]}#e(){let e=this.params?.groupby;if(e?.length>0){let t=e.map(e=>R(e)),n=xn(this.buffer,...t);for(let[t,r]of XB(n)){let n={};for(let r=0;r<e.length;r++)n[e[r]]=t[r];this.ops.forEach((e,t)=>{n[this.as[t]]=e(r)}),this._propagate(n)}}else{let e={};this.ops.forEach((t,n)=>{e[this.as[n]]=t(this.buffer)}),this._propagate(e)}}handle(e){this.buffer.push(e)}beginBatch(e){this.buffer.length>0&&(this.#e(),this.buffer=[]),super.beginBatch(e)}complete(){this.buffer.length>0&&this.#e(),super.complete()}},collect:cV,coverage:fV,filterScoredLabels:hV,filter:gV,flatten:yV,flattenCompressedExons:SV,flattenDelimited:CV,flattenSequence:PV,formula:TV,identifier:uh,linearizeGenomicCoordinate:EV,measureText:DV,pileup:kV,project:AV,regexExtract:jV,regexFold:MV,sample:AP,stack:NV};function LV(e,t){let n=IV[e.type];if(n)return new n(e,t);throw Error(`Unknown transform: `+e.type)}var RV=new Set([`application/gzip`,`application/x-gzip`]),zV=new TextDecoder,BV=class extends Zm{constructor(e,t){super(t),this.params=vg(t.paramRuntime,e,()=>this.load(),e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),this.baseUrl=t?.getBaseUrl()}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}get label(){return`urlSource`}async#e(e){let t=gF(this.baseUrl,e.urlsFromFile),n={type:e.type??`tsv`},r=await fetch(t);if(!r.ok)throw Error(`Cannot load "${t}": ${r.status} ${r.statusText}`);return To(await qV(r,t,NC(n.type)),MC(n)).map(e=>typeof e==`string`?e:e.url).map(e=>gF(t,e))}async load(){let e=pg(this.params.url),t=typeof e==`object`&&`urlsFromFile`in e?await this.#e(e):(Array.isArray(e)?e:[e]).map(e=>gF(this.baseUrl,e)),n=jC(this.params,t),r=NC(n.type);if(t.length===0||!t[0]){this.reset(),this.complete();return}let i=async e=>{try{let t=await fetch(e);if(!t.ok)throw Error(`${t.status} ${t.statusText}`);return await qV(t,e,r)}catch(t){throw Error(`Could not load data: ${e}. Reason: ${t.message}`,{cause:t})}},a=async(e,t)=>{try{let r=To(e,MC(n)),i=r instanceof Promise?await r:r;this.beginBatch({type:`file`,url:t});for(let e of i)this._propagate(e)}catch(e){throw console.warn(e),Error(`Cannot parse: ${t}: ${e.message}`,{cause:e})}};this.setLoadingStatus(`loading`),this.reset();try{await Promise.all(t.map(e=>i(e).then(a))),this.setLoadingStatus(`complete`)}catch(e){this.setLoadingStatus(`error`,e.message)}this.complete()}};function VV(e){return`url`in e}function HV(e){return e.length>=10&&e[0]==31&&e[1]==139&&e[2]==8&&(e[3]&224)==0}function UV(e){return e?RV.has(e.split(`;`)[0].trim().toLowerCase()):!1}function WV(e){return e?e.toLowerCase().split(`,`).some(e=>e.trim()==`gzip`):!1}function GV(e){return new Uint8Array(e).buffer}async function KV(e){if(typeof DecompressionStream!=`function`)throw Error(`Gzip-compressed URL data requires DecompressionStream support.`);let t=new Response(GV(e)).body;if(!t)throw Error(`Cannot create a readable stream for gzip decompression.`);let n=t.pipeThrough(new DecompressionStream(`gzip`));return new Uint8Array(await new Response(n).arrayBuffer())}async function qV(e,t,n){if(!(FC(t)||UV(e.headers.get(`content-type`))||WV(e.headers.get(`content-encoding`))))return JV(e,n);let r=new Uint8Array(await e.arrayBuffer());return YV(HV(r)?await KV(r):r,n)}function JV(e,t){return typeof e[t]==`function`?e[t]():e.text()}function YV(e,t){return t==`arrayBuffer`?GV(e):zV.decode(e)}function XV(e){return`sequence`in e}var ZV=class extends Zm{constructor(e,t){if(super(t),this.sequence=vg(t.paramRuntime,e.sequence,()=>this.loadSynchronously(),e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!(`start`in this.sequence))throw Error(`'start' is missing from sequence parameters!`);if(!(`stop`in this.sequence))throw Error(`'stop' is missing from sequence parameters!`)}get label(){return`sequenceSource`}loadSynchronously(){let e=pg(this.sequence.as)??`data`,t=pg(this.sequence.start)??0,n=pg(this.sequence.step)??1,r=pg(this.sequence.stop);this.reset(),this.beginBatch({type:`file`});for(let i=t;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}};function QV(e,t){if(DC(e))return new OC(e,t);if(VV(e))return new BV(e,t);if(XV(e))return new ZV(e,t);if($V(e))return Km(e.lazy,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}function $V(e){return`lazy`in e}function eH(e){let t=tH(e).filter(e=>typeof e==`string`),n=Function(`source`,`return { `+t.map(e=>JSON.stringify(e)).map(e=>`${e}: source[${e}]`).join(`,
|
|
814
|
+
`)+` };`);return n.properties=t,n}function tH(e){let t=[];do t=t.concat(Object.keys(e)),e=Object.getPrototypeOf(e);while(e&&e!==Object.prototype);return Array.from(new Set(t))}var nH=class extends oh{get behavior(){return 1}#e;#t=e=>e;constructor(){super({type:`clone`});let e=e=>{let t=tH(e);(!this.#e||!Yl(t,this.#e))&&(this.#e=t,this.#t=eH(e));let n=this.#t;this.handle=e=>this._propagate(n(e)),this.handle(e)};this.handle=e,this.beginBatch=t=>{Ym(t)&&(this.handle=e),super.beginBatch(t)}}};function rH(e){return`name`in e}var iH=class extends Zm{#e;constructor(e,t,n){super(t),this.provider=n,this.params=e}get identifier(){return this.params.name}get label(){return`namedSource`}updateDynamicData(e){this.#e=e,this.loadSynchronously()}loadSynchronously(){let e=this.#e??this.provider(this.params.name)??[],t=e=>e;if(Array.isArray(e))e.length>0&&(t=LC(e[0]));else throw Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:`file`});for(let n of e)this._propagate(t(n));this.complete()}async load(){this.loadSynchronously()}},aH=class{#e;#t;loadingStatusRegistry;constructor(){this.#e=new Set,this.#t=new Set,this.loadingStatusRegistry=new FT}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;){let e=t;t=e.parent,t?(t.removeChild(e),e.dispose()):e instanceof Zm?this.removeDataSource(e):e.dispose()}}findNamedDataSource(e){let t;for(let n of this.#e.values())if(n instanceof iH&&e==n.identifier){if(t&&t!==n)throw Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);t=n}if(t)return{dataSource:t}}};function oH(e,t){let n=new Map,r=[];for(let t of e)n.set(t,{ref:t,children:[]});for(let e of n.values()){let i=n.get(t(e.ref));i?i.children.push(e):r.push(e)}return r}function sH(e,t,n){let r=t.preOrder?.(e);if(r)return r;for(let r of n(e)){let e=sH(r,t,n);if(e===`stop`)return e}return t.postOrder?.(e)}function cH(e,t){return sH(e,t,e=>e.children)}function lH(e,t,n,r){let i=[],a=[],o,s=t??new aH,c=[],l=r??(()=>!0);function u(e,t=()=>void 0){if(!o)throw t()||Error(`Cannot append data flow node, no parent exist!`);return o.addChild(e),o=e,i.push(e),e}function d(e,t){return u(e,()=>Error(`Cannot append a transform because no (inherited) data are available! ${t?JSON.stringify(t):``}`))}function f(e,t){for(let n of e){let e;try{e=LV(n,t)}catch(e){throw console.warn(e),Error(`Cannot initialize "${n.type}" transform: ${e}`,{cause:e})}e.behavior&2&&d(new nH),d(e)}}function p(){return i.findLastIndex(e=>e instanceof uh)>i.findLastIndex(e=>e instanceof Zm)}let m=e=>{if(!l(e)){let t=e.flowHandle?.node;if(t){t!==o&&(o=t,i.push(t));return}if(e.spec.data||e.spec.transform||e instanceof VB)throw Error(`Cannot reuse missing flow nodes for `+e.getPathString());return}if(e.spec.data){let t=e.flowHandle?.dataSource;t&&t.view===e&&!t.identifier&&s.removeDataSource(t);let n=rH(e.spec.data)?new iH(e.spec.data,e,e.context.getNamedDataFromProvider):QV(e.spec.data,e);o=n,i.push(n),s.addDataSource(n),e.flowHandle??={},e.flowHandle.dataSource=n}if(e.spec.transform&&f(e.spec.transform,e),e instanceof VB){if(!o)throw Error(`A unit view (${e.getPathString()}) has no (inherited) data source`);let t=dH(e);if(t){c.push(t.rewrite);for(let e of t.transforms)d(e)}e.mark.isPickingParticipant()&&!p()&&(d(new nH),d(new uh({type:`identifier`})));let n=new cV({type:`collect`,groupby:e.getFacetFields(),sort:fH(e,t?.rewrittenEncoding)});u(n);let r=e.flowHandle?.collector;r&&s.removeCollector(r),s.addCollector(n),e.flowHandle??={},e.flowHandle.collector=n}o&&(e.flowHandle??={},e.flowHandle.node=o)},h=oH(uH(e,n),e=>e.dataParent);for(let e of h)cH(e,{preOrder:e=>{a.push({view:e.ref,nodeStackDepth:i.length}),m(e.ref)},postOrder:()=>{let{nodeStackDepth:e}=a.pop();i.length=e,o=i.at(-1)}});return c.forEach(e=>e()),s}function uH(e,t){if(!t)return e.getDescendants();let n=[];return e.visit(e=>{if(!t(e))return tR;n.push(e)}),n}function dH(e){let t=[],n={},r=e.mark.encoding,i=e.getEncoding(),a=[];for(let[e,t]of Object.entries(r)){let n=e;qh(n)!==n&&!(n in i)||Hh(n)&&!Array.isArray(t)&&Ph(t)&&a.push({channel:n,chromPosDef:t})}let o=xn(a,e=>qh(e.channel),e=>e.chromPosDef.chrom);for(let[a,s]of o.entries())for(let[o,c]of s.entries()){let s=[],l=[],u=[];for(let{channel:t,chromPosDef:a}of c){let o=e=>e.replace(/[^A-Za-z0-9_]/g,``),c=[`_linearized_`,o(a.chrom),`_`,o(a.pos)].join(``),d={...e.spec.encoding?.[t]??i[t]??r[t]??{},field:c};delete d.chrom,delete d.pos,!d.type&&a.type&&(d.type=a.type),n[t]=d,s.push(a.pos),u.push(a.offset??0),l.push(c)}t.push(new nH),t.push(new EV({type:`linearizeGenomicCoordinate`,channel:a,chrom:o,pos:s,offset:u,as:l},e))}return t.length?{transforms:t,rewrittenEncoding:n,rewrite:()=>{e.spec.encoding={...e.spec.encoding,...n},tP(e.mark,`encoding`)}}:void 0}function fH(e,t){let n={...e.getEncoding(),...t}.x;if(jh(n)&&e.getScaleResolution(`x`)?.isZoomable()){if(kh(n))return`buildIndex`in n&&n.buildIndex?{field:n.field}:null;if(!Ah(n)&&Fh(n))throw Error(`A zoomable x channel must be mapped to a field.`)}}function pH(e,t=void 0){if(e.parent!==t)return!1;for(let t of e.children)if(!pH(t,e))return!1;return!0}function mH(e,t=!1){if(e.behavior&4&&(t=!0),e instanceof nH)if(t)t=!1;else{let n=e.children[0];e.excise(),n&&mH(n,t);return}e.behavior&1&&(t=!1);for(let n=0,r=e.children.length;n<r;n++)mH(e.children[n],t||r>1)}function hH(e){let t=e.dataSources,n=new Map;for(let e of t)e.identifier&&!n.has(e.identifier)&&n.set(e.identifier,e);let r=new Set,i=new Map;for(let e of t)if(e.identifier){let t=n.get(e.identifier);t&&(t!==e&&t.adoptChildrenOf(e),r.add(t),i.set(e,t))}else r.add(e),i.set(e,e);return e.replaceDataSources(r),i}function gH(e){if(mH(e),!pH(e))throw Error(`Encountered a bug! There's a problem in the data flow structure.`)}function _H(e){let t=hH(e);for(let t of e.dataSources)gH(t);return t}var vH=new WeakMap,yH=new WeakMap;function bH(e,t){let n=vH.get(e);if(n){if(!t?.queueReload)return n;let r=yH.get(e);if(r)return r;let i=n.catch(()=>{}).then(()=>bH(e)).finally(()=>{yH.delete(e)});return yH.set(e,i),i}let r=Promise.resolve().then(()=>e.load()).finally(()=>{vH.delete(e)});return vH.set(e,r),r}function xH(e,t){for(let n of e.getDescendants()){let e=n.flowHandle;if(!e)continue;let r=e.dataSource;r&&(e.dataSource=t.get(r)??r)}}function SH(e,t,n,r){let i=r??(()=>!0),a=EH(e,n).filter(i);if(a.length===0)return{dataFlow:t,unitViews:[],dataSources:new Set,graphicsPromises:[]};let o=new Set(a);for(let e of a)e._setDataInitializationState(`pending`);let s;try{s=lH(e,t,n,e=>o.has(e)),xH(e,_H(s))}catch(e){for(let e of a)e._setDataInitializationState(`none`);throw e}let c=CH(a);for(let e of c)e.visit(e=>e.initializeOnce());let l=a.filter(e=>e instanceof VB),u=[],d=!!e.context.glHelper;for(let e of l){let t=e.mark;t.initializeEncoders(),e.registerDomainSubscriptions(),d&&u.push(t.initializeGraphics().then(()=>t)),e.registerDisposer(e.flowHandle.collector.observe(n=>{if(t.initializeData(),d)try{t.updateGraphicsData()}catch(t){throw t.view=e,t}e.context.animator.requestRender()}))}for(let e of a)e._setDataInitializationState(`ready`);return{dataFlow:s,unitViews:l,dataSources:c,graphicsPromises:u}}function CH(e,t){let n=Array.isArray(e)?e:EH(e,t),r=new Set;for(let e of n){if(t&&!t(e))continue;let n=e;for(;n&&!n.flowHandle?.dataSource;)n=n.dataParent;n?.flowHandle?.dataSource&&r.add(n.flowHandle.dataSource)}return r}function wH(e,t){let n=new Set;return e.visit(e=>{if(t&&!t(e))return tR;if(e.flowHandle?.dataSource)return n.add(e.flowHandle.dataSource),tR}),n}function TH(e,t,n,r){return t||=wH(e,n),Promise.all(Array.from(t).map(e=>bH(e,r))).then(t=>(DH(e),t))}function EH(e,t){let n=[];return t?(e.visit(e=>{if(!t(e))return tR;n.push(e)}),n):e.getDescendants()}function DH(e){let t={type:`subtreeDataReady`,payload:{subtreeRoot:e}};e.visit(e=>e.handleBroadcast(t))}async function OH(e,t,n,r){let i=e=>e.isConfiguredVisible(),{dataFlow:a,graphicsPromises:o}=SH(e,t,i);return r(a),await n.waitUntilReady(),await TH(e,new Set(a.dataSources),i),await qB(o),a}async function kH(e,t,n){let r=e=>e.isConfiguredVisible(),i=AH(e,r).filter(e=>e.getDataInitializationState()===`none`);if(i.length===0)return t;let a=new Set(i),o=e=>a.has(e),s=new Set,c=[];for(let e of i){if(e.spec.data){c.push(e);continue}let t=MH(e);t?s.add(t):c.push(e)}let{dataFlow:l,graphicsPromises:u}=SH(e,t,r,o);await n.waitUntilReady();for(let e of s)e.repropagate();if(c.length){let e=jH(c);await Promise.all(Array.from(e.entries()).map(([e,t])=>TH(e,t,void 0,{queueReload:!0})))}return await qB(u),l}function AH(e,t){let n=[];return e.visit(e=>{if(!t(e))return tR;n.push(e)}),n}function jH(e){let t=new Map;for(let n of e){let e=n;for(;e&&!e.flowHandle?.dataSource;)e=e.dataParent;if(!e?.flowHandle?.dataSource){if(n.spec.data)throw Error(`No data source found for view `+n.getPathString());continue}let r=t.get(e);r||(r=new Set,t.set(e,r)),r.add(e.flowHandle.dataSource)}return t}function MH(e){let t=e.dataParent;for(;t;){let e=t.flowHandle?.collector;if(e)return e.completed?e:void 0;t=t.dataParent}}var NH=class{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){let 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;let t=this.transitions;this.transitions=[];let n;for(;n=t.shift();)n(e);this._renderCallback(e)}))}transition(e){return hB({requestAnimationFrame:e=>this.requestTransition(e),...e})}};function PH(e,t,n,r,i){let a=0,o=!0,s=structuredClone(i),c=s;function l(e,t,n,r){return t+(e-t)*2**(-n/r)}function u(i){if(o)return;let d=i-a;a=i;for(let e of Object.keys(c))s[e]=l(s[e],c[e],d,n);t(s);let f=-1/0;for(let e of Object.keys(c))f=Math.max(f,Math.abs(c[e]-s[e]));f<r?(s=c,t(s),o=!0,f!=0&&e.requestRender()):e.requestTransition(e=>u(e))}function d(e){c=e,o&&(o=!1,a=+document.timeline.currentTime,u(a))}return d.stop=()=>{o=!0},d}var FH=class{constructor(e){this.genomes=new Map,this.#e=new Map,this.#t=new Map,this.#n=new Map,this.#r=0,this.#i=void 0,this.baseUrl=e}#e;#t;#n;#r;#i;async initialize(e){let{name:t,...n}=e;this.configureGenomes(new Map([[t,n]]),t),await this.ensureAssembly(t)}configureGenomes(e,t){this.genomes.clear(),this.#t.clear(),this.#n.clear(),this.#r=0,this.#e=new Map(e),this.#i=t}getDefaultAssemblyName(){if(this.#i)return this.#i;if(this.#e.size===1)return this.#e.keys().next().value;if(this.#e.size===0&&this.genomes.size===1)return this.genomes.keys().next().value}async ensureAssemblies(e){let t=[],n=new Set;for(let r of e){if(!r)continue;let e=IH(r);n.has(e)||(n.add(e),t.push(this.ensureAssembly(r)))}await Promise.all(t)}async ensureAssembly(e){if(typeof e==`object`)return this.#d(e);let t=this.genomes.get(e);if(t)return t;let n=this.#e.get(e);if(n)return this.#u(e,n);let r=this.#s(e);if(r)return r;throw this.#o(e)}getGenome(e){if(e&&typeof e==`object`)return this.#f(e);if(typeof e==`string`){let t=this.genomes.get(e);if(t)return t;if(this.#e.has(e))throw Error(`Genome ${e} has not been loaded yet. Call ensureAssembly("${e}") before accessing it.`);let n=this.#s(e);if(n)return n;throw this.#o(e)}let t=this.getDefaultAssemblyName();if(t)return this.getGenome(t);if(this.#e.size>1)throw Error(`Cannot pick a default genome! More than one have been configured!`);if(this.genomes.size===0&&this.#e.size)throw Error("Default genome is not loaded. Define root `assembly` or call ensureAssembly() first.");if(this.genomes.size>1)throw Error(`Cannot pick a default genome! More than one have been configured!`);if(this.genomes.size===0)throw Error(`No genomes have been configured!`);return this.genomes.values().next().value}#a(e){try{return new yR({name:e})}catch{return}}#o(e){return Error(`No genome with the name ${e} has been configured!`)}#s(e){let t=this.#a(e);if(t)return this.genomes.set(e,t),t}async#c(e,t){let n=this.#t.get(e);if(!n)throw Error(`No pending genome load for ${e}.`);await n;let r=this.genomes.get(e);if(!r)throw Error(t);return r}async#l(e,t){let n=t.load(this.baseUrl);this.#t.set(e,n);try{await n}catch(t){throw this.genomes.delete(e),t}finally{this.#t.delete(e)}return t}async#u(e,t){let n=this.genomes.get(e);if(n)return this.#t.has(e)?this.#c(e,`Loading genome ${e} failed before it became available.`):n;if(this.#t.has(e))return this.#c(e,`Loading genome ${e} failed before it became available.`);let r=new yR({name:e,...t});return this.genomes.set(e,r),`url`in t?this.#l(e,r):r}async#d(e){this.#p(e);let t=this.#m(e),n=this.genomes.get(t);if(n)return this.#t.has(t)?this.#c(t,`Loading inline assembly ${t} failed before it became available.`):n;if(this.#t.has(t))return this.#c(t,`Loading inline assembly ${t} failed before it became available.`);if(`contigs`in e){let n=new yR({name:t,contigs:e.contigs});return this.genomes.set(t,n),n}let r=new yR({name:t,url:e.url});return this.genomes.set(t,r),this.#l(t,r)}#f(e){this.#p(e);let t=this.#m(e),n=this.genomes.get(t);if(n){if(this.#t.has(t))throw Error(`Inline URL assembly ${t} has not been loaded yet. Call ensureAssembly() before accessing it.`);return n}if(`url`in e)throw Error(`Inline URL assemblies must be loaded first. Call ensureAssembly() before accessing it.`);let r=new yR({name:t,contigs:e.contigs});return this.genomes.set(t,r),r}#p(e){if(`contigs`in e==`url`in e)throw Error("Inline `scale.assembly` objects must define exactly one of `contigs` or `url`.")}#m(e){let t=JSON.stringify(e),n=this.#n.get(t);if(n)return n;let r=`inline_assembly_${this.#r}`;for(this.#r+=1;this.genomes.has(r)||this.#e.has(r)||this.#t.has(r);)r=`inline_assembly_${this.#r}`,this.#r+=1;return this.#n.set(t,r),r}};function IH(e){return typeof e==`string`?`name:${e}`:`inline:${JSON.stringify(e)}`}var LH={pages:[`Lato-Regular.png`],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642,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.642,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.429,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.429,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534,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.429,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429,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.336,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429,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.429,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.429,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.153,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.313,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.801,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891,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.208,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429,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.429,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.182,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.176,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.874,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.089,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.278,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:`Lato Regular`,size:42,bold:0,italic:0,charset:` !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~`.split(``),unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]},RH=`data:image/png;base64,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`,zH={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900},BH=class{constructor(e){this._webGLHelper=e,this.fontRepository=`https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/`,this._fonts=new hn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:jM(LH),texture:e?this._createTextureNow(RH):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,t=`normal`,n=`regular`){if(P(n)&&(n=zH[n.toLowerCase()],!n))throw Error(`Unknown font weight: `+n);let r={family:e,style:t,weight:n},i=this._fonts.get(r);return i||(i={metrics:void 0,texture:void 0},this._fonts.set(r,i),this._promises.push(this._loadFontEntry(i,r))),i}async _loadFontEntry(e,t){try{let n=UH(await this._loadMetadata(t.family),t),r=this.fontRepository+VH(t.family)+`/`+n.replace(/\.\w+/,``),i=this._createTexture(r+`.png`),a=this._loadFont(r+`.json`);e.texture=await i,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(e=>{if(!e.ok)throw Error(`Could not load font: `+e.status);return e}).then(e=>e.json()).then(e=>jM(e)),this._fontPromises.set(e,t)),t}_loadMetadata(e){let t=VH(e),n=this._metadataPromises.get(t);if(!n){let e=this.fontRepository+t+`/METADATA.pb`;n=fetch(e).then(t=>{if(!t.ok)throw Error(`Could not load font metadata. Response status: `+t.status+`, url: `+e);return t}).then(e=>e.text()).then(e=>HH(e)).catch(e=>{console.warn(e.message)}),this._metadataPromises.set(t,n)}return n}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){let t=this._webGLHelper.gl;return new Promise((n,r)=>{jk(t,{src:e,min:t.LINEAR},(e,t,i)=>{e?r(e):n(t)})})}_createTextureNow(e){let t=this._webGLHelper.gl,n,r=new Promise((r,i)=>{n=jk(t,{src:e,min:t.LINEAR},(e,t,n)=>{e?i(e):r(t)})});return this._promises.push(r),n}};function VH(e){return e.toLowerCase().replaceAll(/[^\w]/g,``)}function HH(e){let t=e.split(`
|
|
815
|
+
`),n=[],r;for(let e of t)if(e.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}),e.startsWith(`}`)&&(n.push(r),r=void 0),r){let t=e.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(t){let e=t[1];r[e]=t[2]}if(t=e.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),t){let e=t[1];r[e]=+t[2]}}return n}function UH(e,t){let n,r=1/0;for(let i of e)if(t.family.localeCompare(i.name,void 0,{sensitivity:`accent`})==0&&t.style==i.style){let e=Math.abs(t.weight-i.weight);e<r&&(r=e,n=i)}return n?.filename}var WH=new Map,GH={Organism:`Homo sapiens`};async function KH(e,t,n={}){let r=e.symbol,i={...GH,GENE:r};for(let[e,t]of Object.entries(n))typeof t==`string`&&(i[e]=t);let a=WH.get(r)??await YH(i);return a?(WH.set(r,a),D`
|
|
813
816
|
<div class="title">
|
|
814
817
|
<strong>${a.name}</strong>
|
|
815
818
|
${a.description}
|
|
816
819
|
</div>
|
|
817
820
|
<p class="summary">${a.summary}</p>
|
|
818
821
|
<p class="source">Source: NCBI RefSeq Gene</p>
|
|
819
|
-
`):null}async function
|
|
822
|
+
`):null}async function qH(e){let t={mode:`cors`},n=new URL(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi`);n.search=new URLSearchParams({db:`gene`,term:XH(e),sort:`relevance`,retmax:`1`,retmode:`json`}).toString();let r=(await fetch(n.toString(),t).then(e=>e.json())).esearchresult.idlist[0];if(r){let e=new URL(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi`);return e.search=new URLSearchParams({db:`gene`,id:r,retmode:`json`}).toString(),(await fetch(e.toString(),t).then(e=>e.json())).result[r]}else return null}var JH=bg(qH,500);function YH(e){return JH(e)}function XH(e){return Object.entries(e).filter(([e,t])=>t&&t.length>0).map(([e,t])=>`("${t}"[${e}])`).join(` AND `)}var ZH=sr(`.4~r`),QH=sr(`.4~e`);function $H(e){return e==null?D` <span class="na">NA</span> `:P(e)?e.substring(0,30):Number.isInteger(e)?``+e:N(e)?Math.abs(e)>10**8||Math.abs(e)<10**-8?QH(e):ZH(e):St(e)?e?`True`:`False`:O(e)?D`${e.map((t,n)=>[$H(t),n<e.length-1?`, `:Se])}`:`?`+typeof e+` `+e}function eU(e){let t=[];return tU(Object.entries(e),t),t}function tU(e,t,n){for(let[r,i]of e)r.startsWith(`_`)||(typeof i==`object`&&i&&!Array.isArray(i)?tU(Object.entries(i),t,(n||``)+r+`.`):t.push({key:(n||``)+r,value:i}))}var nU={x:`x2`,y:`y2`},rU=new Set([`auto`,`locus`,`interval`,`endpoints`,`disabled`]),iU=new WeakMap;function aU(e,t,n){let r=oU(t),i=cU(`x`,e,t,r,bU(n,`x`)),a=cU(`y`,e,t,r,bU(n,`y`)),o=i.rows.length>0&&a.rows.length>0,s=[...o?sU(`x`,i.rows):i.rows,...o?sU(`y`,a.rows):a.rows],c=new Set;for(let n of[i,a])for(let i of n.usedLinearizedFields){let n=r.get(i);!n||n.ambiguous||xU(e,i,n,t)&&(c.add(n.chrom),c.add(n.pos))}return{hiddenRowKeys:[...c],genomicRows:s,flattenDatumRows:()=>eU(e),formatGenomicLocus:(e,n)=>_U(t,e,n),formatGenomicInterval:(e,n)=>vU(t,e,n)}}function oU(e){let t=iU.get(e);if(t)return t;let n=hU(e);return iU.set(e,n),n}function sU(e,t){let n=e.toUpperCase()+` `;return t.map(e=>({key:n+e.key,value:e.value}))}function cU(e,t,n,r,i){let a=new Set;if(i===`disabled`)return{rows:[],usedLinearizedFields:a};let o=mU(n,e,t);if(!o)return{rows:[],usedLinearizedFields:a};o.field&&a.add(o.field);let s=mU(n,nU[e],t);s?.field&&a.add(s.field);let c=i===`auto`?lU(o,s,r):i;if(c===`endpoints`&&s){let[t,i]=dU(o,s,r);return{rows:[{key:`Endpoint 1`,value:_U(n,e,t.value)??String(t.value)},{key:`Endpoint 2`,value:_U(n,e,i.value)??String(i.value)}],usedLinearizedFields:a}}return c===`interval`&&s?{rows:[{key:`Interval`,value:vU(n,e,[o.value,s.value])??o.value+` - `+s.value}],usedLinearizedFields:a}:{rows:[{key:`Coordinate`,value:_U(n,e,o.value)??String(o.value)}],usedLinearizedFields:a}}function lU(e,t,n){if(!t)return`locus`;let r=uU(e.field,n),i=uU(t.field,n);return r&&i&&r!==i?`endpoints`:`interval`}function uU(e,t){let n=e?t.get(e):void 0;return n&&!n.ambiguous?n.groupId:void 0}function dU(e,t,n){let r=fU(e.field,n),i=fU(t.field,n);return r===2&&i!==2||i===1&&r!==1||r===2&&i===1?[t,e]:[e,t]}function fU(e,t){let n=e?t.get(e):void 0,r=[n?.pos,n?.chrom,e],i;for(let e of r){let t=pU(e);if(t!==void 0){if(i===void 0)i=t;else if(i!==t)return}}return i}function pU(e){if(!e)return;let t=e.toLowerCase(),n=t.match(/(?:^|[^0-9])(1|2)$/);if(n)return n[1]===`1`?1:2;let r=t.match(/(?:^|[_-])(first|second)(?:[_-]|$)/);if(r)return r[1]===`first`?1:2}function mU(e,t,n){let r=e.encoders?.[t];if(r?.scale?.type!==`locus`)return;let i=Th(r);if(!i)return;let a=+i(n);if(Number.isFinite(a))return{value:a,field:i.fields?.length===1?i.fields[0]:void 0}}function hU(e){let t=new Map,n=0,r=e.unitView?.getCollector?.()?.parent;for(;r;){let e=r.params;if(e?.type===`linearizeGenomicCoordinate`){let r=Xl(e.as),i=Xl(e.pos),a=gU(e.offset,i.length),o=`g`+ n++,s=e.channel===`y`?`y`:`x`;for(let n=0;n<r.length;n++){if(n>=i.length)continue;let c=t.get(r[n]);c?c.ambiguous=!0:t.set(r[n],{groupId:o,chrom:e.chrom,pos:i[n],offset:a[n],channel:s,ambiguous:!1})}}r=r.parent}return t}function gU(e,t){let n=Xl(e);return n.length===0?Array(t).fill(0):n.length===1?Array(t).fill(n[0]):n.length===t?n:Array(t).fill(0)}function _U(e,t,n){return yU(e,t)?.formatLocus(n)}function vU(e,t,n){return yU(e,t)?.formatInterval(n)}function yU(e,t){let n=e.encoders?.[t]?.scale;return n?.type===`locus`&&`genome`in n?n.genome():void 0}function bU(e,t){let n=e?.genomicCoordinates?.[t],r=typeof n==`string`?n:n?.mode??`auto`;if(!rU.has(r))throw Error(`Unknown genomic coordinate display mode: "`+r+`"`);return r}function xU(e,t,n,r){let i=yU(r,n.channel);if(!i)return!1;let a=e[n.chrom],o=e[n.pos],s=e[t];if(a===void 0||o===void 0||s===void 0)return!1;let c=+o,l=+s;if(!Number.isFinite(c)||!Number.isFinite(l))return!1;let u;try{u=i.toContinuous(a,c-n.offset)}catch{return!1}return Math.abs(u-l)<1e-6}async function SU(e,t,n,r){let i=e=>Je(e).join(`.`),a=e=>e!=null&&!(typeof e==`number`&&Number.isNaN(e)),o=(e,n,r)=>{for(let[o,s]of Object.entries(t.encoders)){let t=s?Th(s)?.fields:void 0;if(t&&t.some(t=>t===e||i(t)===e))switch(o){case`color`:case`fill`:case`stroke`:{let e=s(r);return e==null?a(n)?D`
|
|
820
823
|
<span
|
|
821
824
|
class="color-legend color-legend-unmapped"
|
|
822
825
|
></span>
|
|
823
|
-
`:``:
|
|
826
|
+
`:``:D`
|
|
824
827
|
<span
|
|
825
828
|
class="color-legend"
|
|
826
829
|
style=${`background-color: `+String(e)}
|
|
827
830
|
></span>
|
|
828
|
-
`}default:}}return``},s=r??
|
|
831
|
+
`}default:}}return``},s=r??aU(e,t,n),c=s.flattenDatumRows?s.flattenDatumRows():eU(e),l=s.genomicRows??[],u=new Set(s.hiddenRowKeys??[]),d=c.filter(t=>!u.has(t.key)||o(t.key,t.value,e)),f=[...l,...d];if(!f.length)return;let p=D`
|
|
829
832
|
<table class="attributes">
|
|
830
|
-
${f.map(t=>{let n
|
|
833
|
+
${f.map(t=>{let n=$H(t.value),r=o(t.key,t.value,e);return D`
|
|
831
834
|
<tr>
|
|
832
835
|
<th>${t.key}</th>
|
|
833
836
|
<td>${n} ${r}</td>
|
|
834
837
|
</tr>
|
|
835
838
|
`})}
|
|
836
839
|
</table>
|
|
837
|
-
`,m=t.unitView.getTitleText();return
|
|
840
|
+
`,m=t.unitView.getTitleText();return D`${m?D`
|
|
838
841
|
<div class="title">
|
|
839
842
|
<strong>${m}</strong>
|
|
840
843
|
</div>
|
|
841
|
-
`:``}${p}`}var yU=class e extends iR{#e=new Map;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e}async initializeChildren(){}getNextAutoName(e){let 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(e){throw e.view=this,e}if(t===`VISIT_STOP`)return t;if(t!==`VISIT_SKIP`){e.beforeChildren&&e.beforeChildren(this);for(let t of this){let n=t.visit(e);if(n===`VISIT_STOP`)return n}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(t){let n=this;for(let r=0;r<t.length;r++){if(!(n instanceof e))return;let i=n.#t(t[r]);if(!i)return;if(r===t.length-1)return i;n=i}}#t(e){for(let t of this)if(t.name===e)return t}findDescendantByName(e){let t;return this.visit(n=>{if(n.name==e)return t=n,nR}),t}getDefaultResolution(e,t){return`shared`}};function bU(e){VB(e),HB(e)}function xU(e){e.getDescendants().forEach(e=>e.configureViewOpacity())}var SU=new WeakMap,CU=new WeakMap,wU=new WeakMap;function TU(e,t){if(t!==null&&typeof t!=`string`)throw Error(`Import scope name must be a string or null.`);SU.set(e,{name:t})}function EU(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;CU.set(e,n)}function DU(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;wU.set(e,n)}function OU(e){let t=e.getDataAncestors(),n=[];for(let e=t.length-1;e>=0;--e){let r=SU.get(t[e]);r&&typeof r.name==`string`&&n.push(r.name)}return n}function kU(e,t){e.visit(e=>{let n=CU.get(e);if(n===`excludeSubtree`)return tR;if(n!==`exclude`)return t(e)})}function AU(e){let t=[];for(let n of MU(e)){let r=NU(n);FU(e,r,t),IU(e,r,t)}return t}function jU(e){return e.persist===!1?!1:hg(e)?!0:mg(e)?!!e.bind:!1}function MU(e){let t=new Set([e]);return e.visit(e=>{let n=SU.get(e);n&&typeof n.name==`string`&&t.add(e)}),Array.from(t)}function NU(e){return OU(e)}function PU(e){return e.length?`import scope [`+e.join(` / `)+`]`:`import scope (root)`}function FU(e,t,n){let r=new Map;zU(e,t,e=>{for(let[t,n]of e.paramRuntime.paramConfigs){if(!jU(n))continue;let i=r.get(t);i?i.push(e):r.set(t,[e])}});for(let[e,i]of r){if(i.length<=1)continue;let r=i.map(e=>e.getPathString()).join(`, `);n.push({message:`Bookmarkable parameter "`+e+`" is not unique within `+PU(t)+`. Found in: `+r+`.`,scope:t})}}function IU(e,t,n){let r=LU(e,t);if(!r.length)return;let i=r.filter(e=>RU(e));if(i.length<=1)return;let a=new Map;for(let e of i){let t=SU.get(e),n=t?t.name:void 0;typeof n!=`string`||!n.length||a.set(n,(a.get(n)??0)+1)}for(let[e,r]of a)r>1&&n.push({message:`Import instance name "`+e+`" is used multiple times for addressable instances in `+PU(t)+`.`,scope:t})}function LU(e,t){let n=[];return zU(e,t,e=>{if(OU(e).length!==t.length+1)return;let r=SU.get(e);!r||typeof r.name!=`string`||n.push(e)},{includeNamedImportRoots:!0}),n}function RU(e){let t=!1;return e.visit(e=>{let n=CU.get(e);if(n===`excludeSubtree`)return tR;if(n!==`exclude`){for(let n of e.paramRuntime.paramConfigs.values())if(jU(n))return t=!0,nR}}),t}function zU(e,t,n,r={}){let i=r.includeNamedImportRoots??!1;e.visit(e=>{let r=SU.get(e),a=CU.get(e);if(a===`excludeSubtree`)return tR;if(a!==`exclude`&&BU(e,t,r,i))return n(e)})}function BU(e,t,n,r){let i=OU(e);return VU(i,t)?!0:!r||!n||typeof n.name!=`string`||i.length!==t.length+1?!1:HU(t,i)}function VU(e,t){return e.length===t.length?HU(e,t):!1}function HU(e,t){if(e.length>t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function UU(e){let t=[],n=!1,r=GU(e);for(let e of r){let r=e.getAssemblyRequirement();r.assembly&&t.push(r.assembly),r.needsDefaultAssembly&&(n=!0)}return{assemblies:t,needsDefaultAssembly:n}}async function WU(e,t){let{assemblies:n,needsDefaultAssembly:r}=UU(e);if(r){let e=t.getDefaultAssemblyName();if(!e)throw Error("No default assembly has been configured. Set root `assembly`, define exactly one entry in root `genomes`, or set `scale.assembly` on each locus scale.");n.push(e)}await t.ensureAssemblies(n)}function GU(e){let t=new Set,n=[`x`,`y`],r=e=>{for(let r of n){let n=e.getScaleResolution(r);n&&t.add(n)}};return r(e),kU(e,r),t}var KU=class{constructor(e,t){this.container=e,this.options=t}async addChildSpec(e,t){let{specs:n,insertAt:r}=this.options.getChildSpecs(),i=t??n.length,a=this.options.defaultName?.(i,e)??this.container.getNextAutoName(`child`),o=await this.container.context.createOrImportView(e,this.container,this.container,a,void 0,this.options.createViewOptions);await WU(o,this.container.context.genomeStore),r(i,e);let s=this.options.insertView(o,i);this.options.prepareView&&await this.options.prepareView(o,i,s),xU(o);let{dataSources:c,graphicsPromises:l}=vH(o,this.container.context.dataFlow,e=>e.isConfiguredVisible());return await xH(o,c),await UB(l),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow()),o}async removeChildAt(e){let{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())}},qU=.5;function JU(e){return`multiscale`in e&&Ze(e.multiscale)}function YU(e){if(!e.multiscale.length)throw Error(`"multiscale" must contain at least one child view.`);let t=XU(e.stops,e.multiscale.length),n=e.multiscale.map((n,r)=>e.multiscale.length===1?n:{opacity:QU(r,e.multiscale.length,t),layer:[n]}),r={...e};return delete r.multiscale,delete r.stops,{...r,layer:n}}function XU(e,t){let n=`unitsPerPixel`,r,i=`auto`,a=qU;if(Ze(e))r=ZU(e,t,`stops`);else if(Qe(e))n=e.metric??`unitsPerPixel`,r=ZU(e.values,t,`stops.values`),i=e.channel??`auto`,a=e.fade??qU;else throw Error(`"stops" must be an array or an object with "values".`);if(n!==`unitsPerPixel`)throw Error(`Only "unitsPerPixel" is supported for "stops.metric" in multiscale.`);if(![`x`,`y`,`auto`].includes(i))throw Error(`"stops.channel" must be one of "x", "y", or "auto".`);if(!Number.isFinite(a)||a<0||a>.5)throw Error(`"stops.fade" must be a finite number in range [0, 0.5].`);if(r.forEach((e,t)=>{if(!z(e)&&(!Number.isFinite(e)||e<=0))throw Error(`Invalid stop value at index `+t+`. Stop values must be positive finite numbers.`)}),!r.some(z)){let e=r;for(let t=1;t<e.length;t++)if(e[t-1]<=e[t])throw Error(`"stops.values" must be strictly decreasing for "unitsPerPixel".`);for(let t=0;t<e.length-1;t++)if(e[t]*(1-a)<=e[t+1]*(1+a))throw Error(`Adjacent transitions overlap. Reduce fade or increase stop spacing.`)}return{metric:n,values:r,channel:i,fade:a}}function ZU(e,t,n){if(!Ze(e))throw Error(`"`+n+`" must be an array of numbers or ExprRefs.`);let r=t-1;if(e.length!==r)throw Error(`Invalid stop count for multiscale. Expected `+r+`, got `+e.length+`.`);for(let t of e)if(!z(t)&&!Number.isFinite(t))throw Error(`"`+n+`" must contain only numbers or ExprRefs.`);return e}function QU(e,t,n){let r,i,a=n.values.map(e=>({hi:$U(e,1+n.fade),lo:$U(e,1-n.fade)}));if(e===0)r=[a[0].hi,a[0].lo];else if(e===t-1){let e=a.at(-1);r=[e.hi,e.lo]}else{let t=a[e-1],n=a[e];r=[t.hi,t.lo,n.hi,n.lo]}return i=e===0?[1,0]:e===t-1?[0,1]:[0,1,1,0],{channel:n.channel,unitsPerPixel:r,values:i}}function $U(e,t){return z(e)?{expr:`(`+e.expr+`) * `+t}:e*t}function eW(e){return`mark`in e&&(P(e.mark)||Qe(e.mark))}function tW(e){return`layer`in e&&Qe(e.layer)}function nW(e){return`import`in e}function rW(e){return`vconcat`in e&&Ze(e.vconcat)}function iW(e){return`hconcat`in e&&Ze(e.hconcat)}function aW(e){return`concat`in e&&Ze(e.concat)}var oW=class extends yU{#e=[];constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),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`),e=>{if(!tW(e)&&!eW(e)&&!JU(e))throw new sP(`LayerView accepts only unit, layer, or multiscale specs as children!`,this)},{layoutSizeParams:`inherit`})))}async addChildSpec(e,t){return this.#t().addChildSpec(e,t)}async removeChildAt(e){await this.#t().removeChildAt(e)}#t(){return new KU(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=>{let t=this.#e[e];if(!t)throw Error(`Child index out of range!`);t.disposeSubtree(),this.#e.splice(e,1)},defaultName:()=>this.getNextAutoName(`layer`),createViewOptions:{layoutSizeParams:`inherit`}})}get children(){return this.#e.slice()}*[Symbol.iterator](){for(let e of this.#e)yield e}render(e,t,n={}){if(super.render(e,t,n),this.isConfiguredVisible()){e.pushView(this,t);for(let r of this.#e)r.render(e,t,n);e.popView(this)}}propagateInteraction(e){this.handleInteraction(e,!0);for(let t=this.#e.length-1;t>=0;t--)if(this.#e[t].propagateInteraction(e),e.stopped)return;this.handleInteraction(e,!1)}},sW=class{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(){let e=[],t=this.nCols,n=this.nRows;for(let r=0;r<n;r++){let n=[];e.push(n);for(let e=0;e<t;e++){let i=r*t+e;i<this.n&&n.push(i)}}return e}get colIndices(){let e=[],t=this.nCols,n=this.nRows;for(let r=0;r<t;r++){let i=[];e.push(i);for(let e=0;e<n;e++){let n=e*t+r;n<this.n&&i.push(n)}}return e}getCellIndex(e,t){let n;if(this.maxCols==1/0)n=t==0?e:void 0;else if(e>=this.maxCols)return;else n=t*this.nCols+e;return n<this.n?n:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}};function cW(e){return()=>e}var lW=class e{static create(t,n,r,i){return new e(cW(t),cW(n),cW(r),cW(i))}static ZERO=e.create(0,0,0,0);_offset(e,t){let n=this[`_`+e];if(t===0)return n;switch(typeof t){case`number`:return()=>n()+t;case`function`:return()=>n()+t();default:throw Error(`Not a number of function`)}}_passThrough(e){return this._offset(e,0)}constructor(e,t,n,r){this._x=e,this._y=t,this._width=n,this._height=r}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(t){if(!Object.keys(t).length)return this;let n=e=>{let n=t[e];return typeof n==`number`?cW(n):typeof n==`function`?n:this._passThrough(e)};return new e(n(`x`),n(`y`),n(`width`),n(`height`))}translate(t,n){return t===0&&n===0?this:new e(this._offset(`x`,t),this._offset(`y`,n),this._passThrough(`width`),this._passThrough(`height`))}translateBy(e){return this.translate(e.x,e.y)}expand(t,n=1){return t.left==0&&t.top==0&&t.right==0&&t.bottom==0?this:new e(t.left?this._offset(`x`,-t.left*n):this._passThrough(`x`),t.top?this._offset(`y`,-t.top*n):this._passThrough(`y`),t.width?this._offset(`width`,t.width*n):this._passThrough(`width`),t.height?this._offset(`height`,t.height*n):this._passThrough(`height`))}shrink(e){return this.expand(e,-1)}intersect(t){return this===t||t==null?this:new e(()=>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 e(()=>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 e(cW(this.x),cW(this.y),cW(this.width),cW(this.height))}containsPoint(e,t){return e>=this.x&&e<this.x2&&t>=this.y&&t<this.y2}normalizePoint(e,t,n=!1){let r={x:(e-this.x)/this.width,y:(t-this.y)/this.height};return n&&(r.y=1-r.y),r}denormalizePoint(e,t,n=!1){return n&&(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)}`}},uW={x:`axisX`,y:`axisY`},dW={top:`axisTop`,bottom:`axisBottom`,left:`axisLeft`,right:`axisRight`},fW={nominal:`axisNominal`,ordinal:`axisOrdinal`,quantitative:`axisQuantitative`,index:`axisIndex`,locus:`axisLocus`};function pW(e,{channel:t,orient:n,type:r,style:i}){let a=pP(i);return fP(e.flatMap(e=>{let i=uW[t],o=n?dW[n]:void 0,s=r?fW[r]:void 0,c=[e.axis,i?e[i]:void 0,o?e[o]:void 0,s?e[s]:void 0];return[...c.flatMap(e=>pP(e?.style)).map(t=>e.style?.[t]),...c,...a.map(t=>e.style?.[t])]}))}var mW=`chromosome_ticks_and_labels`,hW=`labels_main`,gW=`ticks_and_labels`,_W=`axisExtent`,vW=`_labelWidth`,yW=10,bW=2;function xW(e){return e==`x`?`y`:`x`}var SW={x:[`bottom`,`top`],y:[`left`,`right`]},CW=Object.fromEntries(Object.entries(SW).map(([e,t])=>t.map(t=>[t,e])).flat(1));function wW(e){return CW[e]}var TW=class extends oW{#e;#t;#n;#r=!1;#i=!1;constructor(e,t,n,r,i,a){let o=wW(e.orient),s=pW(i.getConfigScopes(),{channel:o,orient:e.orient,type:t,style:e.style}),c={...s,...e},l={...s,...jW(t,c),...e};super(t==`locus`?NW(l,t):MW(l,t),n,r,i,`axis_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=l,this.#e=EW(l),this.#t=this.paramRuntime.allocateSetter(_W,this.#e),EU(this,{skipSubtree:!0}),DU(this,{skipSubtree:!0})}async initializeChildren(){await super.initializeChildren();let e=this.getDescendants().find(e=>e instanceof LB&&e.name===hW);e instanceof LB&&(this.#n=e),!(!this.axisProps.labels||!this.#n)&&this.registerDisposer(this._addBroadcastHandler(`subtreeDataReady`,()=>this.#o()))}getSize(){let e={px:this.getPerpendicularSize()},t={grow:1};return CW[this.axisProps.orient]==`x`?new oF(t,e):new oF(e,t)}getPerpendicularSize(){return this.#e}isPickingSupported(){return!1}#a(){this.#i||(this.#i=!0,queueMicrotask(()=>{this.#i=!1,this.#s()}))}#o(){if(this.#r)return;let e=this.#n?.getCollector();e&&(this.#r=!0,this.registerDisposer(e.observe(()=>this.#a())),e.completed&&this.#a())}#s(){let e=wW(this.axisProps.orient),t=this.dataParent.getScaleResolution(e);if(t&&!t.isDomainDefinedExplicitly()&&!t.isDomainInitialized())return;let n=AW(this.axisProps,this.context,this.#n);if(n===void 0)return;let r=EW(this.axisProps,n);r>=this.#e+bW&&(this.#e=r,this.#t(r),this.invalidateSizeCache(),this.context.requestLayoutReflow())}};function EW(e,t){let n=DW(e);return e.labels&&(n+=t??OW(e)),kW(e,n)}function DW(e){let t=e.ticks&&e.tickSize||0;return e.labels&&(t+=e.labelPadding),e.title&&(t+=e.titlePadding+e.titleFontSize),t}function OW(e){return wW(e.orient)==`x`?e.labelFontSize:yW}function kW(e,t){return Math.min(e.maxExtent||1/0,Math.max(e.minExtent||0,t))}function AW(e,t,n){let r=n?.getCollector();if(!r?.completed)return;let i=0;r.visitData(e=>{i=Math.max(i,Number(e[vW])||0)});let a=(e.labelFont?t.fontManager.getFont(e.labelFont,e.labelFontStyle,e.labelFontWeight):t.fontManager.getDefaultFont()).metrics;if(!a)return;let o=(a.capHeight+a.descent)/a.common.base*e.labelFontSize,s=e.labelAngle*Math.PI/180,c=Math.abs(Math.sin(s)),l=Math.abs(Math.cos(s)),u=wW(e.orient)==`x`?i*c+o*l:i*l+o*c;return Math.ceil(u)}function jW(e,t){let n=t.orient,r=e==`nominal`||e==`ordinal`,i=`center`,a=`middle`,o=t.labelAngle??((n==`top`||n==`bottom`)&&r?-90:0);switch(n){case`left`:i=`right`;break;case`right`:i=`left`;break;case`top`:case`bottom`:Math.abs(o)>30?(i=o>0==(n==`bottom`)?`left`:`right`,a=`middle`):a=n==`top`?`alphabetic`:`top`;break;default:}return{labelAlign:i,labelAngle:o,labelBaseline:a}}function MW(e,t){let n=e,r=wW(n.orient),i=xW(r),a=n.orient==`bottom`||n.orient==`right`?1:-1,o=n.orient==`bottom`||n.orient==`left`?1:0,s=()=>({field:`value`,type:t}),c=()=>({name:`domain`,data:{values:[{}]},mark:{type:`rule`,clip:!1,strokeDash:n.domainDash,strokeCap:n.domainCap,color:n.domainColor,[i]:o,size:n.domainWidth}}),l=()=>({name:hW,transform:[{type:`measureText`,field:`label`,as:vW,fontSize:n.labelFontSize,font:n.labelFont,fontStyle:n.labelFontStyle,fontWeight:n.labelFontWeight}],mark:{type:`text`,clip:!1,align:n.labelAlign,angle:n.labelAngle,baseline:n.labelBaseline,font:n.labelFont,fontStyle:n.labelFontStyle,fontWeight:n.labelFontWeight,[i+`Offset`]:(n.tickSize+n.labelPadding)*a,[i]:o,size:n.labelFontSize,color:n.labelColor,minBufferSize:1500},encoding:{[r]:s(),text:{field:`label`}}}),u=()=>({name:`ticks`,mark:{type:`rule`,clip:!1,strokeDash:n.tickDash,strokeCap:n.tickCap,color:n.tickColor,size:n.tickWidth,minBufferSize:300},encoding:{[i]:{value:o},[i+`2`]:{value:{expr:`${o} - ${n.tickSize} / ${_W} * ${o?1:-1}`}}}}),d=()=>({name:`title`,data:{values:[{}]},mark:{type:`text`,clip:!1,align:`center`,baseline:n.orient==`bottom`?`bottom`:`top`,angle:[0,90,0,-90][[`top`,`right`,`bottom`,`left`].indexOf(n.orient)],text:n.title,color:n.titleColor,[r]:.5,[i]:1-o}}),f=()=>{let e={name:gW,encoding:{[r]:s()},layer:[]};return n.ticks&&e.layer.push(u()),n.labels&&e.layer.push(l()),e},p={resolve:{scale:{[r]:`forced`}},domainInert:!0,data:{lazy:{type:`axisTicks`,channel:r,axis:e}},layer:[]};return n.domain&&p.layer.push(c()),(n.ticks||n.labels)&&p.layer.push(f()),n.title&&p.layer.push(d()),p}function NW(e,t){let n=e,r=wW(n.orient),i=xW(r),a=n.orient==`bottom`||n.orient==`left`?1:0,o=()=>({name:`chromosome_ticks`,mark:{type:`rule`,strokeDash:e.chromTickDash,strokeDashOffset:e.chromTickDashOffset,[i]:a,[i+`2`]:{expr:`${a} - ${n.chromTickSize} / ${_W} * ${a?1:-1}`},color:e.chromTickColor,size:n.chromTickWidth}}),s=()=>{let i;switch(n.orient){case`top`:i={y:0,angle:0,paddingX:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case`bottom`:i={y:1,angle:0,paddingX:4,dy:n.chromLabelPadding+n.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case`left`:i={x:1,angle:-90,paddingY:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case`right`:i={x:0,angle:90,align:`right`,paddingY:4,dy:-n.chromLabelPadding};break;default:i={}}return{name:`chromosome_labels`,mark:{type:`text`,size:n.chromLabelFontSize,font:n.chromLabelFont,fontWeight:n.chromLabelFontWeight,fontStyle:n.chromLabelFontStyle,color:n.chromLabelColor,align:e.chromLabelAlign,baseline:`alphabetic`,clip:!1,...i},encoding:{[r+`2`]:{field:`continuousEnd`,type:t},text:{field:`name`}}}},c;switch(n.orient){case`bottom`:case`top`:c={};break;case`left`:c={labelAngle:-90,labelAlign:`center`,labelPadding:6};break;case`right`:c={labelAngle:90,labelAlign:`center`,labelPadding:6};break;default:c={}}let l=MW({...e,...c},t);if(e.chromTicks||e.chromLabels){let i={name:mW,data:{lazy:{type:`axisGenome`,channel:wW(n.orient)}},encoding:{[r]:{field:`continuousStart`,type:t,band:0}},layer:[]};if(e.chromTicks&&i.layer.push(o()),e.chromLabels){i.layer.push(s());let e;l.layer.filter(e=>e.name==gW).forEach(t=>t.layer.filter(e=>e.name==hW).forEach(t=>{e=t.mark})),e&&(n.orient==`top`||n.orient==`bottom`?(e.viewportEdgeFadeWidthLeft=30,e.viewportEdgeFadeDistanceLeft=40):(e.viewportEdgeFadeWidthBottom=30,e.viewportEdgeFadeDistanceBottom=40))}l.layer.push(i)}return l}function PW(e,t,n){e.handleInteraction(t,!0),!t.stopped&&(n(),!t.stopped&&e.handleInteraction(t,!1))}function FW(e,t,n,r){return t()?(n(),e.stopped||r?.(),!0):!1}var IW=class{#e;#t=0;#n=0;constructor(e){this.#e=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(){let 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}};function LW(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`touchgesture`&&(t.phase===`move`||t.phase===`end`)&&(t.pointerCount===1||t.pointerCount===2)&&Number.isFinite(t.xDelta)&&Number.isFinite(t.yDelta)&&Number.isFinite(t.zDelta)}function RW(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`wheel`&&Number.isFinite(t.deltaX)&&Number.isFinite(t.deltaY)&&Number.isFinite(t.deltaMode)&&typeof t.preventDefault==`function`}function zW(e,t,n){return new Proxy(e,{get(e,r){if(r===`deltaX`)return t;if(r===`deltaY`)return n;let i=Reflect.get(e,r,e);return typeof i==`function`?i.bind(e):i}})}function BW(e){let t=e=>e===null||typeof e!=`object`&&typeof e!=`function`;return new Proxy(e,{get(e,n,r){let i=Reflect.get(e,n,e);if(!t(i))throw Error(`Access to non-primitive property "${String(n)}" is not allowed.`);return i},getPrototypeOf(){return null},ownKeys(e){return Reflect.ownKeys(e).filter(n=>t(e[n])).map(e=>typeof e==`symbol`?e:String(e))},getOwnPropertyDescriptor(e,n){let r=Reflect.getOwnPropertyDescriptor(e,n);if(r&&!(`get`in r||`set`in r)&&t(r.value))return{value:r.value,writable:!!r.writable,enumerable:!!r.enumerable,configurable:!!r.configurable}},has(e,n){return n in e?t(e[n]):!1}})}var VW=class e{static fromMouseEvent(t){return new e(t.clientX,t.clientY)}constructor(e,t){this.x=e,this.y=t}subtract(t){return new e(this.x-t.x,this.y-t.y)}add(t){return new e(this.x-t.x,this.y-t.y)}multiply(t){return new e(this.x*t,this.y*t)}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}},HW=0,UW=new WeakMap,WW=$W(),GW=6;function KW(){HW=performance.now()}function qW(){return performance.now()-HW<50}function JW(e){return function(...t){return KW(),e(...t)}}function YW(e,t,n,r,i){n=JW(n);let a=eG(i);if(e.type==`wheel`){let i=e.wheelEvent,o=i.deltaMode?120:1;if(!i.deltaX&&!i.deltaY)return;a.smoother?.stop();let{x:s,y:c}=e.point;if(r){let n=XW(e.point,t,r);if(n)n.x!==void 0&&(s=n.x),n.y!==void 0&&(c=n.y);else{let e=r.mark.encoders;e.x&&!e.x2&&!e.x.constant&&(s=ZW(e.x,r.datum)*t.width+t.x),e.y&&!e.y2&&!e.y.constant&&(c=(1-ZW(e.y,r.datum))*t.height+t.y)}}(Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:c,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300})===!0:n({x:s,y:c,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})===!0)&&i.preventDefault()}else if(e.type==`mousedown`&&e.mouseEvent.button===0){a.smoother&&a.smoother.stop();let t=new IW(30),r=e.mouseEvent;r.preventDefault(),e.target?.context.suspendHoverTracking();let o=VW.fromMouseEvent(r),s=e=>{let r=VW.fromMouseEvent(e);t.push({point:r,timestamp:performance.now()});let i=r.subtract(o);n({x:o.x,y:o.y,xDelta:i.x,yDelta:i.y,zDelta:0}),o=r},c=r=>{document.removeEventListener(`mousemove`,s),document.removeEventListener(`mouseup`,c),e.target?.context.resumeHoverTracking(r),nG(a,t,o,n,i,{minSampleCount:5})};document.addEventListener(`mouseup`,c,!1),document.addEventListener(`mousemove`,s,!1)}else if(e.type==`touchgesture`){if(!LW(e.uiEvent))return;let t=e.uiEvent,{xDelta:r,yDelta:o,zDelta:s}=t;if(t.phase===`end`){t.pointerCount===1&&nG(a,a.touchPanEventBuffer,a.touchPanLastPoint,n,i,{minSampleCount:2,minVelocityPxPerMs:.03}),tG(a);return}a.touchPanPointerCount!==t.pointerCount&&(tG(a),a.touchPanPointerCount=t.pointerCount);let c=new VW(e.point.x+r,e.point.y+o);if(a.touchPanLastPoint=c,t.pointerCount===1&&(r!==0||o!==0)&&a.touchPanEventBuffer.push({point:c,timestamp:performance.now()}),r===0&&o===0&&s===0)return;a.smoother?.stop(),n({x:e.point.x,y:e.point.y,xDelta:r,yDelta:o,zDelta:s})}}function XW(e,t,n){if(n.mark.getType()!==`link`)return;let r=n.mark.encoders;if(!(r.x&&r.y&&r.x2&&r.y2))return;let i=!r.x.constant&&!r.x2.constant,a=!r.y.constant&&!r.y2.constant;if(!i&&!a)return;let o=ZW(r.x,n.datum)*t.width+t.x,s=(1-ZW(r.y,n.datum))*t.height+t.y,c=ZW(r.x2,n.datum)*t.width+t.x,l=(1-ZW(r.y2,n.datum))*t.height+t.y,u=0,d=0;i&&(u+=(e.x-o)**2,d+=(e.x-c)**2),a&&(u+=(e.y-s)**2,d+=(e.y-l)**2);let f=r.size?+r.size(n.datum):0,p=Number.isFinite(f)?Math.max(f,GW):GW,m=p*p;if(!(Math.min(u,d)>m))return u<=d?{x:i?o:void 0,y:a?s:void 0}:{x:i?c:void 0,y:a?l:void 0}}function ZW(e,t){let n=+e(t),r=e.scale;if(!r)return n;let i=QW(e.channelDef);if(r.type===`band`||r.type===`point`)return Number.isFinite(i)?n+r.bandwidth()*i:n;if(r.type===`index`||r.type===`locus`){if(!Number.isFinite(i))return n;let e=r;return n+e.step()*(i-e.align())}else return n}function QW(e){return e&&`band`in e?e.band??.5:.5}function $W(){return{smoother:void 0,touchPanEventBuffer:new IW(30),touchPanLastPoint:void 0,touchPanPointerCount:0}}function eG(e){if(!e)return WW;let t=UW.get(e);return t||(t=$W(),UW.set(e,t)),t}function tG(e){e.touchPanEventBuffer=new IW(30),e.touchPanLastPoint=void 0,e.touchPanPointerCount=0}function nG(e,t,n,r,i,a={}){if(!i||!n)return;let o=a.minSampleCount??5,s=a.minVelocityPxPerMs??0,c=performance.now(),l=t.get().filter(e=>c-e.timestamp<160);if(l.length<o||l.length>=5&&rG(l))return;let u=l.at(-1),d=l[0],f=u.point.subtract(d.point).multiply(1/(u.timestamp-d.timestamp));if(!Number.isFinite(f.x)||!Number.isFinite(f.y)||f.length<s)return;let p=n.x,m=n.y;e.smoother=AH(i,e=>{r({x:e.x,y:e.y,xDelta:p-e.x,yDelta:m-e.y,zDelta:0}),p=e.x,m=e.y},150,.5,{x:p,y:m}),e.smoother({x:n.x-f.x*250,y:n.y-f.y*250})}function rG(e){let t=e[Math.floor(e.length/2)],n=t.point.subtract(e[0].point).multiply(t.timestamp-e[0].timestamp),r=e.at(-1).point.subtract(t.point).multiply(e.at(-1).timestamp-t.timestamp),i=n.length;return r.length/i<.4}var iG=class extends oW{constructor(e,t,n,r,i,a){super(cG(e,t),n,r,i,`axisGrid_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=e,EU(this,{skipSubtree:!0}),DU(this,{skipSubtree:!0})}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}};function aG(e,t){let n=e,r=wW(n.orient);return{name:`grid_lines`,data:{lazy:{type:`axisTicks`,channel:r,axis:e}},mark:{type:`rule`,strokeDash:n.gridDash,strokeCap:n.gridCap,color:n.gridColor,size:n.gridWidth,opacity:n.gridOpacity,minBufferSize:300},encoding:{[r]:{field:`value`,type:t}}}}function oG(e,t){let n=e,r=wW(n.orient);return{name:`chromosome_lines`,data:{lazy:{type:`axisGenome`,channel:r}},mark:{type:`rule`,strokeDash:n.chromGridDash,strokeCap:n.chromGridCap,color:n.chromGridColor,size:n.chromGridWidth,opacity:n.chromGridOpacity},encoding:{[r]:{field:`continuousStart`,type:t,band:0}}}}function sG(e,t){let n=e,r=wW(n.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:[n.chromGridFillEven??`white`,n.chromGridFillOdd??`white`]}},opacity:{field:`odd`,type:`nominal`,scale:{type:`ordinal`,domain:[!1,!0],range:[n.chromGridFillEven?1:0,n.chromGridFillOdd?1:0]}}}}}function cG(e,t){let n={...e},r=[];return n.chromGrid&&(n.chromGridFillOdd||n.chromGridFillEven)&&r.push(sG(n,t)),n.chromGrid&&n.chromGridOpacity>0&&r.push(oG(n,t)),n.grid&&n.gridOpacity>0&&r.push(aG(n,t)),{name:`grid_layers`,resolve:{scale:{[wW(e.orient)]:`forced`,fill:`independent`,opacity:`independent`}},domainInert:!0,layer:r}}function lG(e){return fP(e.map(e=>e.title))}function uG(e,t){let n=pP(t);return n.length==0?{}:fP(e.flatMap(e=>n.map(t=>e.style?.[t])))}var dG={start:0,middle:.5,end:1},fG={start:`left`,middle:`center`,end:`right`},pG=`group-title`;function mG(e){let t={},n={x:0,y:0},r=dG[e.anchor??`middle`];switch(e.orient){case`top`:n={x:r,y:1},t={baseline:`alphabetic`,angle:0};break;case`right`:n={x:1,y:1-r},t={baseline:`alphabetic`,angle:90};break;case`bottom`:n={x:r,y:0},t={baseline:`top`,angle:0};break;case`left`:n={x:0,y:r},t={baseline:`alphabetic`,angle:-90};break;default:}return{orientConfig:t,xy:n}}function hG(e,t=[]){if(!e)return;let n=P(e)?{text:e}:e;if(!n.text||n.orient==`none`)return;let r=lG(t),i=uG(t,n.style??pG),{orientConfig:a}=mG({...r,...i,...n});return{...r,...a,...i,...n}}function gG(e,t=[]){let n=hG(e,t);if(!n)return;let{xy:r}=mG(n),i={xOffset:0,yOffset:0};switch(n.orient){case`top`:i.yOffset=-n.offset;break;case`right`:i.xOffset=n.offset;break;case`bottom`:i.yOffset=n.offset;break;case`left`:i.xOffset=-n.offset;break;default:}return{data:{values:[{}]},mark:{type:`text`,tooltip:null,clip:!1,...r,...i,text:n.text,align:n.align??fG[n.anchor],angle:n.angle,baseline:n.baseline,dx:n.dx,dy:n.dy,color:n.color,font:n.font,size:n.fontSize,fontStyle:n.fontStyle,fontWeight:n.fontWeight}}}var _G=class extends LB{#e;#t=lW.ZERO;#n=lW.ZERO;#r=lW.ZERO;viewportOffset=0;#i;constructor(e,t,n={}){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}},e.layoutParent.context,e.layoutParent,e.view,`scrollbar-`+t,{blockEncodingInheritance:!0}),EU(this,{skipSubtree:!0}),DU(this,{skipSubtree:!0}),this.config={scrollbarSize:8,scrollbarPadding:2,scrollbarMinLength:20},this.#e=t,this.#i=n.onViewportOffsetChange;let r=this.config.scrollbarPadding,i=this.config.scrollbarSize;this.#t=this.#e==`vertical`?new lW(()=>this.#n.x+this.#n.width-i-r,()=>this.#n.y+r+this.scrollOffset,()=>i,()=>this.#s()):new lW(()=>this.#n.x+r+this.scrollOffset,()=>this.#n.y+this.#n.height-i-r,()=>this.#s(),()=>i),this.#f(this.viewportOffset),this.addInteractionListener(`mousedown`,e=>{if(e.stopPropagation(),this.#c()<=0)return;let n=e=>t==`vertical`?e.clientY:e.clientX;e.mouseEvent.preventDefault(),this.context.suspendHoverTracking();let r=this.scrollOffset,i=n(e.mouseEvent),a=e=>{let t=this.#c();if(t<=0)return;let a=RN(n(e)-i+r,0,t);this.interpolateViewportOffset({x:this.#u(a)})},o=e=>{document.removeEventListener(`mousemove`,a),document.removeEventListener(`mouseup`,o),this.context.resumeHoverTracking(e)};document.addEventListener(`mouseup`,o,!1),document.addEventListener(`mousemove`,a,!1)})}get scrollOffset(){return this.#l(this.viewportOffset)}setViewportOffset(e,{notify:t=!0,syncSmoother:n=!1}={}){this.viewportOffset=RN(e,0,this.#d()),n&&this.#f(this.viewportOffset),t&&this.#i&&this.#i(this.viewportOffset)}#a(){let e=this.#e==`horizontal`?`width`:`height`,t=this.#n[e],n=this.#r[e];return n>0?Math.min(1,t/n):1}#o(){let e=this.#e==`horizontal`?`width`:`height`;return Math.max(0,this.#n[e]-2*this.config.scrollbarPadding)}#s(){let e=this.#o(),t=this.#a()*e,n=this.config.scrollbarMinLength;return Math.min(e,Math.max(n,t))}#c(){return Math.max(0,this.#o()-this.#s())}#l(e){let t=this.#d(),n=this.#c();return t<=0||n<=0?0:e/t*n}#u(e){let t=this.#d(),n=this.#c();return t<=0||n<=0?0:e/n*t}#d(){let e=this.#e==`horizontal`?`width`:`height`;return Math.max(0,this.#r[e]-this.#n[e])}render(e,t,n){super.render(e,this.#t,n)}updateScrollbar(e,t){this.#n=e.flatten(),this.#r=t,this.setViewportOffset(this.viewportOffset,{notify:!1,syncSmoother:!0})}#f(e){this.interpolateViewportOffset=AH(this.context.animator,e=>{this.setViewportOffset(e.x,{notify:!0,syncSmoother:!1})},35,.4,{x:e})}},vG=`intervalDragActive`,yG=class extends oW{constructor(e,t,n={}){let r=t(),i=Object.keys(r.intervals),{zindex:a=1,...o}=n;if(Rh.every(e=>!i.includes(e)))throw Error(`SelectionRect requires at least one of the channels 'x' or 'y' to be present in the selection.`);let s={name:`selectionRect`,domainInert:!0,params:[{name:vG,value:!1}],resolve:{scale:{x:`forced`,y:`forced`}},data:{values:bG(t())},encoding:{},layer:[]};i.includes(`x`)&&(s.encoding.x={field:`_x`,type:null,title:null},s.encoding.x2={field:`_x2`}),i.includes(`y`)&&(s.encoding.y={field:`_y`,type:null,title:null},s.encoding.y2={field:`_y2`}),s.layer.push({name:`selectionRectRect`,mark:{type:`rect`,clip:!0,fill:`#808080`,fillOpacity:.05,stroke:`black`,strokeWidth:1,strokeOpacity:.2,cursor:o.cursor??{expr:`intervalDragActive ? 'grabbing' : 'move'`},...o}});let c=t=>{let n=e.view.getScaleResolution(t);return`format(datum._${t}2 - datum._${t}, '.3s')`+(n.type===`locus`?` + 'b'`:``)},l=n.measure==`inside`?9:n.measure==`outside`?-9:0;i.includes(`x`)&&l!=0&&s.layer.push({name:`selectionRectTextX`,mark:{type:`text`,align:`center`,paddingX:5,dy:l,tooltip:null},encoding:{text:{expr:c(`x`)},y:i.includes(`y`)?{field:`_y2`,type:null,title:null}:{value:1},y2:null}}),i.includes(`y`)&&l!=0&&s.layer.push({name:`selectionRectTextY`,mark:{type:`text`,align:`center`,paddingY:5,dy:l,tooltip:null,angle:-90},encoding:{text:{expr:c(`y`)},x2:null}}),super(s,e.layoutParent.context,e.layoutParent,e.view,`selectionRect`,{blockEncodingInheritance:!0}),this._zindex=a,EU(this,{skipSubtree:!0}),DU(this,{skipSubtree:!0}),this.registerDisposer(t.subscribe(()=>{let e=t(),n=this.flowHandle?.dataSource;if(!n)throw Error(`Cannot find selection rect data source handle!`);n.updateDynamicData(bG(e))}))}getZindex(){return this._zindex}};function bG(e){let t=e.intervals.x,n=e.intervals.y;return!t&&!n?[]:[{_x:t?.[0],_x2:t?.[1],_y:n?.[0],_y2:n?.[1]}]}function xG(e,t){let n=[`cell`,...pP(t?.style)];return fP(e.flatMap(e=>[e.view,...n.map(t=>e.style?.[t])]).concat([t]))}var SG=class{constructor(e,t,n){if(this.layoutParent=t,this.view=e,this.serial=n,this.background=void 0,this.backgroundStroke=void 0,this.axes={},this.gridLines={},this.scrollbars={},this.selectionRect=void 0,this.title=void 0,this.backgroundZindex=0,this.backgroundStrokeZindex=void 0,this.titleZindex=1,this.coords=lW.ZERO,e.needsAxes.x||e.needsAxes.y){let r=e.spec,i=xG(e.getConfigScopes(),`view`in r?r.view:void 0);this.backgroundZindex=i?.zindex??0,this.backgroundStrokeZindex=i?.strokeZindex;let a=TG(i);a&&(this.background=new LB(a,t.context,t,e,`background`+n,{blockEncodingInheritance:!0}),EU(this.background,{skipSubtree:!0}),DU(this.background,{skipSubtree:!0}));let o=EG(i);o&&(this.backgroundStroke=new LB(o,t.context,t,e,`backgroundStroke`+n,{blockEncodingInheritance:!0}),EU(this.backgroundStroke,{skipSubtree:!0}),DU(this.backgroundStroke,{skipSubtree:!0}));let s=hG(e.spec.title,e.getConfigScopes());this.titleZindex=s?.zindex??1;let c=gG(s);c&&(this.title=new LB(c,t.context,t,e,`title`+n,{blockEncodingInheritance:!0}),EU(this.title,{skipSubtree:!0}),DU(this.title,{skipSubtree:!0}))}e.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new _G(this,`horizontal`)),e.spec.viewportHeight!=null&&(this.scrollbars.vertical=new _G(this,`vertical`)),this.#e()}#e(){let e=this.view;for(let[t,n]of e.paramRuntime.paramConfigs){if(!(`select`in n))continue;let r=sg(n.select);if(!lg(r))continue;let i=r.encodings,a=Object.fromEntries(i.map(e=>{let n=this.view.getScaleResolution(e),r=n?.getResolvedScaleType();if(!n||!r||!vm(r))throw Error(`No continuous scale found for interval selection param "${t}" on channel "${e}"! Scale type is "${r??`none`}".`);return[e,n]})),o=i.some(e=>a[e].isZoomable()),s=r.on??(o?{type:`mousedown`,filter:`event.shiftKey`}:{type:`mousedown`});if(s.type!==`mousedown`)throw Error(`Interval selection param "${t}" currently supports only "mousedown" in "on".`);let c=s.filter?XL(s.filter):()=>!0,l=CG(r.zoom,o,t),u=l?.filter?XL(l.filter):()=>!0;if(this.selectionRect)throw Error(`Only one interval selection per container is currently allowed!`);let d=!1,f=!1,p=!1,m=null,h=(e,t)=>Object.fromEntries(i.map(n=>[n,[Math.min(e[n],t[n]),Math.max(e[n],t[n])]])),g=e.paramRuntime.createExpression(t),_=n=>{e.paramRuntime.setValue(t,n)};n.value&&_({type:`interval`,intervals:n.value});let v=()=>{_(tg(i))};this.selectionRect=new yG(this,g,r.mark);let y=e=>{this.selectionRect.paramRuntime.setValue(vG,e)};this.selectionRect.initializeChildren();let b=t=>{let n={x:0,y:0},r=e.coords.normalizePoint(t.x,t.y,!0);for(let e of i){let t=a[e].getScale();n[e]=t.invert(e==`x`?r.x:r.y)+([`index`,`locus`].includes(t.type)?.5:0)}return n},x=t=>{let{intervals:n}=t,r=(t,n,r)=>{let i=(e,t)=>t==null?null:a[e].getScale()(t),o=i(`x`,t)??r,s=i(`y`,n)??r;return e.coords.denormalizePoint(o,s,!0)},i=r(n.x?.[0],n.y?.[0],0),o=r(n.x?.[1],n.y?.[1],1);return lW.create(i.x,i.y,o.x-i.x,o.y-i.y)};e.addInteractionListener(`mousedown`,t=>{if(t.mouseEvent.button!=0)return;if(m=d?x(g()):null,m)y(!0),f=!0;else{let n=t.point;if(ug(g())&&(f=!0),c(t.proxiedMouseEvent))v(),p=!0;else if(ug(g())){let t=r=>{e.removeInteractionListener(`mouseup`,t);let i=r.point;n.subtract(i).length<2&&v()};e.addInteractionListener(`mouseup`,t);return}else return}t.stopPropagation(),e.context.suspendHoverTracking();let n=t.point,r=VW.fromMouseEvent(t.mouseEvent).subtract(n),o=e=>{let t=VW.fromMouseEvent(e).subtract(r),o;if(m){let e=t.subtract(n),r=m.translate(e.x,e.y);o=h(b(new VW(r.x,r.y)),b(new VW(r.x2,r.y2)))}else o=h(b(n),b(t));for(let e of i){let t=a[e],{zoomExtent:n}=t,r=o[e];if(m){let e=r[1]-r[0],t=n[0],i=n[1];r[0]<t&&(r[0]=t,r[1]=t+e),r[1]>i&&(r[1]=i,r[0]=i-e)}let i=wG(t,r);i?(r[0]=i[0],r[1]=i[1]):(r[0]=n[0],r[1]=n[0])}_({type:`interval`,intervals:o})},s=t=>{document.removeEventListener(`mousemove`,o),document.removeEventListener(`mouseup`,s),y(!1),p=!1,m&&=null,e.context.resumeHoverTracking(t)};document.addEventListener(`mousemove`,o),document.addEventListener(`mouseup`,s)}),e.addInteractionListener(`click`,e=>{e.mouseEvent.button==0&&(f&&=(e.stopPropagation(),!1))},!0);let S=e=>dg(g(),b(e));e.addInteractionListener(`dblclick`,e=>{S(e.point)&&(v(),e.stopPropagation())},!0),e.addInteractionListener(`wheel`,e=>{let t=e.wheelEvent;if(!l||!u(BW(t))||Math.abs(t.deltaX)>=Math.abs(t.deltaY)||!S(e.point))return;let n=g();if(!ug(n))return;let r=t.deltaMode?120:1,o=2**(t.deltaY*r/300),s=b(e.point),c={...n.intervals},d=!1;for(let e of i){let t=c[e];if(!t||t.length!==2)continue;let n=a[e],r=wG(n,fB(n.getScale(),[...t],s[e],o,{onUnsupported:`identity`}));r&&(r[0]!==t[0]||r[1]!==t[1])&&(c[e]=r,d=!0)}d&&(_({...n,type:`interval`,intervals:c}),t.preventDefault(),e.stopPropagation())}),e.addInteractionListener(`mousemove`,e=>{S(e.point)?p||(d=!0):d=!1})}}*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();let{view:e,axes:t,gridLines:n}=this,r=(e,n)=>{let r=e.getAxisProps();if(r===null)return;let i=r?{...r}:{};if(!i.orient){for(let e of SW[n])if(!t[e]){i.orient=e;break}if(!i.orient)throw Error(`No slots available for an axis! Perhaps a LayerView has more than two children?`)}if(i.title??=e.getTitle(),!SW[n].includes(i.orient))throw Error(`Invalid axis orientation "${i.orient}" on channel "${n}"!`);return i},i=async(e,n,i)=>{let a=r(e,n);if(a){if(t[a.orient])throw Error(`An axis with the orient "${a.orient}" already exists!`);let n=new TW(a,e.scaleResolution.type,this.layoutParent.context,this.layoutParent,i);t[a.orient]=n,await n.initializeChildren()}},a=async(e,t,i)=>{let a=r(e,t);if(!a)return;let o={...pW(i.getConfigScopes(),{channel:t,orient:a.orient,type:e.scaleResolution.type,style:a.style}),...a};if(o.grid||o.chromGrid){let t=new iG(o,e.scaleResolution.type,this.layoutParent.context,this.layoutParent,i);n[a.orient]=t,await t.initializeChildren()}};for(let t of[`x`,`y`])if(e.needsAxes[t]){let n=e.resolutions.axis[t];if(!n)continue;await i(n,t,e)}for(let t of[`x`,`y`])if(e.needsAxes[t]&&e.getConfiguredOrDefaultResolution(t,`axis`)!=`excluded`){let n=e.getAxisResolution(t);if(!n)continue;await a(n,t,e)}if(e instanceof oW){for(let t of e)for(let[e,n]of Object.entries(t.resolutions.axis)){let r=n.getAxisProps();r&&r.orient&&await i(n,e,t)}for(let t of e)for(let[e,n]of Object.entries(t.resolutions.axis)){let r=n.getAxisProps();r&&!r.orient&&await i(n,e,t)}}[...Object.values(t),...Object.values(n)].forEach(e=>e.visit(e=>{e instanceof LB&&e.resolve(`scale`)}))}disposeAxisViews(){for(let e of Object.values(this.axes))e.disposeSubtree();for(let e of Object.values(this.gridLines))e.disposeSubtree();this.axes={},this.gridLines={}}getOverhang(){let e=e=>{let t=this.axes[e];return t?Math.max(t.getPerpendicularSize()+(t.axisProps.offset??0),0):0};return new pF(e(`top`),e(`right`),e(`bottom`),e(`left`)).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}};function CG(e,t,n){let r=e===void 0?!t:e;if(r===!1)return;if(r===!0)return{type:`wheel`};let i=fg(r);if(i.type!==`wheel`)throw Error(`Interval selection param "${n}" currently supports only "wheel" in "zoom".`);return i}function wG(e,t){let n=e.getScale();return zz(t,e.zoomExtent,{roundToIntegers:n.type===`index`||n.type===`locus`})}function TG(e){if(e?.fill||e?.fillOpacity||e?.shadowOpacity)return{data:{values:[{}]},mark:{color:e.fill,opacity:e.fillOpacity??(e.fill?1:0),type:`rect`,clip:!1,tooltip:null,minHeight:1,minOpacity:0,shadowBlur:e.shadowBlur,shadowColor:e.shadowColor,shadowOffsetX:e.shadowOffsetX,shadowOffsetY:e.shadowOffsetY,shadowOpacity:e.shadowOpacity}}}function EG(e){if(!(!e||!e.stroke||e.strokeWidth===0||e.strokeOpacity===0))return{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:e.strokeWidth??1,color:e.stroke??`lightgray`,strokeCap:`square`,opacity:e.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`}}}}var DG={pan:{baseSpeed:1,maxExtraSpeed:3,pressHalfLifeMs:30,releaseHalfLifeMs:100,holdGrowthHalfLifeMs:800,stopVelocity:.01},zoom:{baseSpeed:3,maxExtraSpeed:15,pressHalfLifeMs:10,releaseHalfLifeMs:100,holdGrowthHalfLifeMs:600,stopVelocity:.01}},OG=class{#e;#t;#n;#r;#i;constructor(e=DG){this.#r=e.pan,this.#i=e.zoom,this.#e={KeyW:!1,KeyA:!1,KeyS:!1,KeyD:!1},this.#t={velocity:0,holdMs:0,direction:0},this.#n={velocity:0,holdMs:0,direction:0}}isNavigationKey(e){return e===`KeyW`||e===`KeyA`||e===`KeyS`||e===`KeyD`}handleKeyDown(e){return this.#a(e,!0)}handleKeyUp(e){return this.#a(e,!1)}reset(){this.#e.KeyW=!1,this.#e.KeyA=!1,this.#e.KeyS=!1,this.#e.KeyD=!1,this.#t.velocity=0,this.#t.holdMs=0,this.#t.direction=0,this.#n.velocity=0,this.#n.holdMs=0,this.#n.direction=0}step(e){if(e<=0)return{panDelta:0,zoomDelta:0,active:this.isActive()};{let t=kG(this.#e.KeyD,this.#e.KeyA),n=kG(this.#e.KeyW,this.#e.KeyS),r=AG(this.#t,t,e,this.#r),i=AG(this.#n,n,e,this.#i),a=e/1e3;return{panDelta:r*a,zoomDelta:i*a,active:this.isActive()}}}isActive(){return this.#e.KeyW||this.#e.KeyA||this.#e.KeyS||this.#e.KeyD?!0:this.#t.velocity!==0||this.#n.velocity!==0}#a(e,t){if(this.isNavigationKey(e)){let n=e;return this.#e[n]===t?!1:(this.#e[n]=t,!0)}else return!1}};function kG(e,t){return e===t?0:t?1:-1}function AG(e,t,n,r){if(t!==0){e.direction!==t&&(e.holdMs=0),e.holdMs+=n;let i=r.maxExtraSpeed*(1-2**(-e.holdMs/r.holdGrowthHalfLifeMs)),a=t*(r.baseSpeed+i);e.velocity=jG(e.velocity,a,n,r.pressHalfLifeMs)}else e.holdMs=0,e.velocity=jG(e.velocity,0,n,r.releaseHalfLifeMs),Math.abs(e.velocity)<r.stopVelocity&&(e.velocity=0);return e.direction=t,e.velocity}function jG(e,t,n,r){return t+(e-t)*2**(-n/r)}function MG(e){let t={x:new Set,y:new Set};return e.visit(e=>{for(let[n,r]of Object.entries(t)){let t=e.getScaleResolution(n);t&&t.isZoomable()&&r.add(t)}}),t}function NG(e){let t=MG(e).x;if(t.size===1){let n=t.values().next().value,r=e.getScaleResolution(`x`);return!r||r!==n?void 0:n}}var PG=class{#e;#t;#n=.5;#r=new OG;#i=!1;#a=0;#o=e=>{if(!this.#i)return;let t=NG(this.#t);if(!t){this.#r.reset(),this.#i=!1,this.#a=0;return}let n=Math.max(0,e-this.#a);this.#a=e;let r=this.#r.step(n);(r.panDelta!==0||r.zoomDelta!==0)&&t.zoom(2**r.zoomDelta,this.#n,r.panDelta)&&(KW(),this.#e.animator.requestRender()),r.active?this.#e.animator.requestTransition(this.#o):(this.#i=!1,this.#a=0)};constructor({context:e,viewRoot:t}){this.#e=e,this.#t=t,this.#s()}handlePointerEvent(e,t){if(e){let n=e.view;if(typeof n.getKeyboardZoomAnchorX==`function`){let e=n.getKeyboardZoomAnchorX(t.point);Number.isFinite(e)&&(this.#n=Math.max(0,Math.min(1,e)))}else this.#n=e.coords.normalizePoint(t.point.x,t.point.y).x}else return}#s(){let e=this.#e.addKeyboardListener;typeof e==`function`&&(e(`keydown`,e=>{FG(e)||this.#r.isNavigationKey(e.code)&&NG(this.#t)&&this.#r.handleKeyDown(e.code)&&(e.preventDefault(),this.#c())}),e(`keyup`,e=>{this.#r.isNavigationKey(e.code)&&this.#r.handleKeyUp(e.code)&&NG(this.#t)&&(e.preventDefault(),this.#c())}))}#c(){this.#i||(this.#i=!0,this.#a=performance.now(),this.#e.animator.requestTransition(this.#o))}};function FG(e){return!!(e.altKey||e.ctrlKey||e.metaKey||IG(e.target))}function IG(e){if(!e||typeof e!=`object`)return!1;let t=e;if(t.isContentEditable)return!0;if(typeof t.nodeName==`string`){let e=t.nodeName.toLowerCase();return e===`input`||e===`textarea`||e===`select`}return!1}var LG=Object.freeze({size:1,color:`#ccc`,opacity:1,strokeDash:[4,4],strokeCap:`butt`}),RG=class{#e;#t;#n;#r;#i=[];#a=[];#o={x:[0,0],y:[0,0]};constructor({direction:e,props:t,context:n,layoutParent:r,dataParent:i,getName:a}){this.#e=e,this.#t=t.includePlotMargin??!0,this.#r=t.zindex??0;let o={...t};delete o.includePlotMargin,delete o.zindex,this.#n=this.#l(o,n,r,i,a)}get view(){return this.#n}getZindex(){return this.#r}update(e,t,n,r,i,a){this.#s(e,t,r,i),this.#c(n,a)}render(e,t,n){this.#n.render(e,t,n)}#s(e,t,n,r){if(this.#a.length=0,t<2)return;let i=this.#e===`vertical`?`column`:`row`,a=r?3:2;for(let r=1;r<t;r++){let t=e[n(i,r)-a],o=t?t.location:0,s=t?t.size:0;this.#a.push(o+s/2)}}#c(e,t){let n=this.#t?0:t.left,r=this.#t?e.width:e.width-t.right,i=this.#t?0:t.bottom,a=this.#t?e.height:e.height-t.top;this.#i.length=this.#a.length;for(let t=0;t<this.#a.length;t++){let o=this.#a[t],s=this.#i[t]??{};if(this.#e===`vertical`)s.x=o,s.x2=o,s.y=i,s.y2=a;else{let t=e.height-o;s.x=n,s.x2=r,s.y=t,s.y2=t}this.#i[t]=s}let o=this.#n.flowHandle?.dataSource;if(!o)return;o.updateDynamicData(this.#i),this.#o.x[1]=e.width,this.#o.y[1]=e.height;let s=this.#n.getScaleResolution(`x`)?.getScale();s&&s.domain(this.#o.x);let c=this.#n.getScaleResolution(`y`)?.getScale();c&&c.domain(this.#o.y)}#l(e,t,n,r,i){let a=new LB(BG(e),t,n,r,this.#e===`horizontal`?i(`separatorHorizontal`):i(`separatorVertical`),{blockEncodingInheritance:!0});return EU(a,{skipSubtree:!0}),DU(a,{skipSubtree:!0}),a}};function zG(e){if(!e)return null;let t=e===!0?{...LG}:{...LG,...e};return t.strokeDash===LG.strokeDash&&(t.strokeDash=LG.strokeDash.slice()),t}function BG(e){return{domainInert:!0,data:{values:[]},resolve:{scale:{x:`excluded`,y:`excluded`},axis:{x:`excluded`,y:`excluded`}},mark:{...e,type:`rule`,clip:e.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`}}}}var VG=Object.freeze({background:0,separator:10,grid:20,backgroundStroke:30,axis:40,selectionRect:80,scrollbar:90,title:100}),HG=10,UG=class extends yU{#e=1/0;#t=10;#n=[];#r={};#i=0;#a={};#o=null;constructor(e,t,n,r,i,a,o){super(e,t,n,r,i,o),this.spec=e,this.#t=e.spacing??10,this.#e=a,this.#n=[],this.wrappingFacet=!1;let s=zG(e.separator);if(s)for(let t of YG(e))this.#a[t]=new RG({direction:t,props:s,context:this.context,layoutParent:this,dataParent:this,getName:e=>this.getNextAutoName(e)});this.layoutParent||(this.#o=new PG({context:this.context,viewRoot:this}))}appendChild(e){this.appendChildView(e)}appendChildView(e){return this.insertChildViewAt(e,this.#n.length)}insertChildViewAt(e,t){e.layoutParent??=this;let n=new SG(e,this,this.#i);return this.#i++,this.#n.splice(t,0,n),this.invalidateSizeCache(),n}removeChildView(e){let t=this.#n.findIndex(t=>t.view===e);if(t<0)throw Error(`Not my child view!`);this.removeChildAt(t)}removeChildAt(e){let t=this.#n[e];if(!t)throw Error(`Child index out of range!`);this.#l(t),this.#n.splice(e,1),this.invalidateSizeCache()}get#s(){return this.#n.filter(e=>e.view.isConfiguredVisible())}get#c(){return new sW(this.#s.length,this.#e??1/0)}setChildren(e){for(let e of this.#n)this.#l(e);this.#n=[];for(let t of e)this.appendChild(t);this.invalidateSizeCache()}#l(e){e.disposeAxisViews();for(let 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(let e of Object.values(this.#r))e.disposeSubtree();this.#r={};let e=[];for(let t of Rh){let n=this.resolutions.axis[t];if(!n)continue;let r=n.getAxisProps();if(!r)continue;let i=new TW({title:n.getTitle(),orient:SW[t][0],...r},n.scaleResolution.type,this.context,this,this);e.push(i.initializeChildren()),this.#r[t]=i}await Promise.all(e)}*[Symbol.iterator](){for(let e of this.#n)yield*e.getChildren();for(let e of Object.values(this.#a))yield e.view;for(let e of Object.values(this.#r))yield e}#u(e){let t=e==`column`?`width`:`height`,n=(t,n)=>t.map(t=>{let r=this.#s[t].getOverhangAndPadding();return e==`column`?n?r.right:r.left:n?r.bottom:r.top}).reduce((e,t)=>Math.max(e,t),0);return this._cache(`size/directionSizes/${e}`,()=>this.#c[e==`column`?`colIndices`:`rowIndices`].map(e=>({axisBefore:n(e,0),axisAfter:n(e,1),view:aF(e.map(e=>this.#s[e].view.getViewportSize()[t]))})))}#d(e){let t=this.#u(e),n=[];n.push(sF);for(let[e,r]of t.entries())e>0&&n.push({px:this.#t,grow:0}),(e==0||this.wrappingFacet)&&n.push(sF),n.push({px:r.axisBefore,grow:0}),n.push(r.view),n.push({px:r.axisAfter,grow:0}),(e==t.length-1||this.wrappingFacet)&&n.push(sF);return n}#f(e){let t=0,n=0,r=e==`row`?this.spec.height:this.spec.width;if(r||r===0)return fF(r);let i=this.#u(e);for(let[e,r]of i.entries())e>0&&(n+=this.#t),(e==0||this.wrappingFacet)&&(n+=0),n+=r.axisBefore,n+=r.view.px??0,t+=r.view.grow??0,n+=r.axisAfter,(e==i.length-1||this.wrappingFacet)&&(n+=0);return{px:n,grow:t}}#p(e,t){return e==`row`&&this.wrappingFacet?1+6*t+2:2+4*t+1}getOverhang(){return this.#m().union(this.#h())}#m(){let e=this.#u(`column`),t=this.#u(`row`);return!e.length||!t.length?pF.zero():new pF(t.at(0).axisBefore,e.at(-1).axisAfter,t.at(-1).axisAfter,e.at(0).axisBefore)}#h(){let e=e=>{let t=CW[e],n=this.#r[t];return n?.axisProps.orient===e?Math.max(n.getPerpendicularSize()+(n.axisProps.offset??0),0):0};return new pF(e(`top`),e(`right`),e(`bottom`),e(`left`))}getSize(){return this._cache(`size`,()=>new oF(this.#f(`column`),this.#f(`row`)).addPadding(this.#h()))}render(e,t,n={}){if(super.render(e,t,n),!this.isConfiguredVisible())return;this.layoutParent||(t=t.shrink(this.getPadding())),t=t.shrink(this.#h()),e.pushView(this,t);let r=e.getDevicePixelRatio(),i={devicePixelRatio:r},a=iF(this.#d(`column`),t.width,i),o=iF(this.#d(`row`),t.height,i),s=new sW(this.#s.length,this.#e??1/0),c=e=>Math.round(e*r)/r,l=[];for(let[e,r]of this.#s.entries()){let{view:i,axes:u,gridLines:d,background:f,backgroundStroke:p,title:m,selectionRect:h}=r,[g,_]=s.getCellCoords(e),v=a[this.#p(`column`,g)],y=o[this.#p(`row`,_)],b=i.getViewportSize(),x=i.getSize(),S=i.getOverhang(),C=v.location-S.left,w=y.location-S.top,T=(e,t)=>(e[t].grow?(t==`width`?v:y).size:e[t].px)+S[t],E=T(b,`width`),D=T(b,`height`),ee=T(x,`width`),te=T(x,`height`),ne=r.scrollbars.horizontal,re=r.scrollbars.vertical,ie=ne?()=>c(ne.viewportOffset):()=>0,ae=re?()=>c(re.viewportOffset):()=>0,oe=new lW(()=>t.x+C,()=>t.y+w,()=>E,()=>D),se=i.isScrollable(),ce=se?new lW(()=>t.x+C-ie(),()=>t.y+w-ae(),()=>ee,()=>te):oe;r.coords=oe;let le=n.clipRect?oe.intersect(n.clipRect):oe;l.push({col:g,row:_,view:i,axes:u,gridLines:d,background:f,backgroundStroke:p,title:m,selectionRect:h,viewportCoords:oe,viewCoords:ce,clippedChildCoords:le,viewWidth:ee,viewHeight:te,scrollable:se,gridChild:r})}let u=this.#m(),d=[],f=[],p=[],m=0,h=(e,t,n)=>{(e>0?f:d).push({zindex:e,order:t,sequence:m++,render:n})},g=e=>{e.sort((e,t)=>e.zindex-t.zindex||e.order-t.order||e.sequence-t.sequence);for(let t of e)t.render()};for(let t of l)t.background&&h(t.gridChild.backgroundZindex,VG.background,()=>t.background?.render(e,t.clippedChildCoords,{...n,clipRect:void 0}));let _=this.#a.vertical;_&&(_.update(a,s.nCols,t,(e,t)=>this.#p(e,t),this.wrappingFacet,u),h(_.getZindex(),VG.separator,()=>_.render(e,t,n)));let v=this.#a.horizontal;v&&(v.update(o,s.nRows,t,(e,t)=>this.#p(e,t),this.wrappingFacet,u),h(v.getZindex(),VG.separator,()=>v.render(e,t,n)));for(let r of l){let{view:i,axes:a,gridLines:o,backgroundStroke:c,title:l,selectionRect:u,viewportCoords:d,viewCoords:f,clippedChildCoords:m,viewWidth:g,viewHeight:_,scrollable:v,gridChild:y,col:b,row:x}=r,S=KG(i)||v;for(let t of Object.values(o))h(t.axisProps.zindex??0,VG.grid,()=>t.render(e,d,n));p.push(()=>i.render(e,f,S?{...n,clipRect:m}:n)),c&&h(ZG(y.backgroundStrokeZindex,S),VG.backgroundStroke,()=>c?.render(e,m,{...n,clipRect:void 0}));for(let[t,r]of Object.entries(a)){let i=t==`left`||t==`right`?`vertical`:`horizontal`,a=y.scrollbars[i],o=QG(a?d.modify(i==`vertical`?{y:()=>f.y,height:_}:{x:()=>f.x,width:g}):d,t,r),s=n.clipRect;a&&(s=o.intersect(s).intersect(a?d.modify(i==`vertical`?{x:-1e5,width:2e5}:{y:-1e5,height:2e5}):void 0)),h(XG(r.axisProps.zindex,S),VG.axis,()=>r.render(e,o,{...n,clipRect:s}))}for(let t of Object.values(this.#r)){let r=t.axisProps.orient;(r==`left`&&b==0||r==`right`&&b==s.nCols-1||r==`top`&&x==0||r==`bottom`&&x==s.nRows-1)&&h(XG(t.axisProps.zindex,S),VG.axis,()=>t.render(e,QG(d.shrink(y.view.getOverhang()),r,t),n))}u&&h(u.getZindex(),VG.selectionRect,()=>u?.render(e,f,n));for(let r of Object.values(y.scrollbars))h(1,VG.scrollbar,()=>{r.updateScrollbar(d,f),r.render(e,t,n)});l&&h(y.titleZindex,VG.title,()=>l?.render(e,d,n))}g(d);for(let e of p)e();g(f),e.popView(this)}propagateInteraction(e){PW(this,e,()=>{let t=this.#s.find(t=>t.coords.containsPoint(e.point.x,e.point.y)),n=t?.view,r=t?void 0:this.#g(e.point);if(e.type===`wheelclaimprobe`){if(!n){r&&e.claimWheel();return}JG(n)?qG(n)&&e.claimWheel():n.propagateInteraction(e);return}this.#o?.handlePointerEvent(t,e);for(let n of Object.values(t?.scrollbars??{}))if(FW(e,()=>n.coords.containsPoint(e.point.x,e.point.y),()=>n.propagateInteraction(e)),e.stopped)return;if(!n){r&&this.#y(e,r);return}FW(e,()=>!0,()=>n.propagateInteraction(e),JG(n)?()=>YW(e,t.coords,e=>this.#b(t.coords,t.view,e),this.context.getCurrentHover(),this.context.animator):void 0)})}#g(e){let t=this.#_();if(!t)return;let n=this.getScaleResolution(t);if(!n||!n.isZoomable())return;let r=this.#v(t);if(r&&r.containsPoint(e.x,e.y))return{coords:r,zoomableResolutions:WG(t,n)}}#_(){if(rW(this.spec))return`x`;if(iW(this.spec))return`y`}#v(e){let t=this.#s[0];if(!t)return;let n=t.coords,r=t.coords.expand(t.getOverhang()),i=n.x,a=r.y,o=n.x2,s=r.y2;for(let t of this.#s.slice(1)){let n=t.coords,r=t.coords.expand(t.getOverhang());e==`x`?(i=Math.max(i,n.x),o=Math.min(o,n.x2),a=Math.min(a,r.y),s=Math.max(s,r.y2)):(i=Math.min(i,r.x),o=Math.max(o,r.x2),a=Math.max(a,n.y),s=Math.min(s,n.y2))}for(let t of Object.values(this.#r)){let n=t.coords;if(!n)continue;let r=t.axisProps.orient;e==`x`&&(r==`top`||r==`bottom`)?(a=Math.min(a,n.y),s=Math.max(s,n.y2)):e==`y`&&(r==`left`||r==`right`)&&(i=Math.min(i,n.x),o=Math.max(o,n.x2))}if(!(i>=o||a>=s))return lW.create(i,a,o-i,s-a)}#y(e,t){e.target=this,YW(e,t.coords,e=>GG(t.coords,e,t.zoomableResolutions,this.context.animator),this.context.getCurrentHover(),this.context.animator)}#b(e,t,n){return GG(e,n,MG(t),this.context.animator)}getDefaultResolution(e,t){return`independent`}};function WG(e,t){let n={x:new Set,y:new Set};return n[e].add(t),n}function GG(e,t,n,r){let i=!1,a=!1,o=e.normalizePoint(t.x,t.y),s=e.normalizePoint(t.x+t.xDelta,t.y+t.yDelta),c={x:s.x-o.x,y:s.y-o.y};for(let[e,r]of Object.entries(n))if(!(r.size<=0)){i=!0;for(let n of r)a=n.zoom(2**t.zDelta,e==`y`?1-o[e]:o[e],e==`x`?c.x:-c.y)||a}return a&&r.requestRender(),i}function KG(e){let t=!0;return e.visit(e=>{e instanceof LB&&(t&&=e.mark.properties.clip===!0)}),t}function qG(e){let t=MG(e);return t.x.size>0||t.y.size>0}function JG(e){return e instanceof LB||e instanceof oW}function YG(e){return`vconcat`in e?[`horizontal`]:`hconcat`in e?[`vertical`]:[`horizontal`,`vertical`]}function XG(e,t){return e??(t?HG:0)}function ZG(e,t){return e??(t?HG:0)}function QG(e,t,n){let r=n.axisProps,i=n.getPerpendicularSize();if(t==`bottom`)return e.translate(0,e.height+r.offset).modify({height:i});if(t==`top`)return e.translate(0,-i-r.offset).modify({height:i});if(t==`left`)return e.translate(-i-r.offset,0).modify({width:i});if(t==`right`)return e.translate(e.width+r.offset,0).modify({width:i})}var $G=class extends UG{constructor(e,t,n,r,i,a){super(e,t,n,r,i,aW(e)?e.columns:rW(e)?1:1/0,a),this.spec=e}async initializeChildren(){let e=this.spec,t=aW(e)?e.concat:rW(e)?e.vconcat:e.hconcat;this.setChildren(await Promise.all(t.map(e=>this.context.createOrImportView(e,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`:rW(this.spec)&&e===`x`||iW(this.spec)&&e===`y`?`shared`:`independent`}#e(){let e=this.spec,t;return t=aW(e)?e.concat:rW(e)?e.vconcat:e.hconcat,{specs:t,insertAt:(e,n)=>{t.splice(e,0,n)},removeAt:e=>{t.splice(e,1)}}}#t(){return new KU(this,{getChildSpecs:this.#e.bind(this),insertView:(e,t)=>this.insertChildViewAt(e,t),removeView:e=>super.removeChildAt(e),prepareView:async(e,t,n)=>{await n.createAxes(),await this.syncSharedAxes()},afterRemove:async()=>{await this.syncSharedAxes()},defaultName:()=>this.getNextAutoName(`grid`)})}};function eK({defaultConfig:e,builtInTheme:t,theme:n}){return fP([e,t,n])}function tK(e,t){if(!(!e&&!t))return fP([e,t])}var nK=`viewRoot`,rK=class{#e=new Map;constructor(e={}){this.options={allowImport:!0,wrapRoot:!0,...e};let t=e=>(t,n,r,i,a,o)=>new e(t,n,r,i,a,o);this.addViewType(tW,t(oW)),this.addViewType(JU,((e,t,n,r,i,a)=>new oW(YU(e),t,n,r,i,a))),this.addViewType(eW,t(LB)),this.addViewType(rW,t($G)),this.addViewType(iW,t($G)),this.addViewType(aW,t($G))}addViewType(e,t){this.#e.set(e,t)}createView(e,t,n,r,i,a){for(let[o,s]of this.#e)if(o(e))return s(e,t,n,r,i,a);throw oK(e)?Error(`SampleView is not supported by the @genome-spy/core package. Use @genome-spy/app instead!`):Error(`Invalid spec, cannot figure out the view type from the properties: `+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){let t=[...this.#e.keys()].filter(t=>t(e));if(t.length>1)throw Error(`Ambiguous spec. Cannot create a view!`);return t.length==1}async createOrImportView(e,t,n,r,i,a,o){let s,c=nW(e)?e.name??null:void 0;if(nW(e)){let i;if(`url`in e.import)if(this.options.allowImport)i=await WB(e,r.getBaseUrl(),t);else throw new sP(`Importing views is not allowed!`,n);else if(`template`in e.import)i=iK(e.import.template,r);else throw Error(`Invalid import: `+JSON.stringify(e));a?.(i),aK(i,e),s=i}else s=e;let l=e=>e?.params?.some(e=>hg(e)&&sg(e.select).type==`interval`),u=!1;if(!r&&this.options.wrapRoot&&(eW(s)||tW(s)||JU(s)||l(s))&&i===`viewRoot`){let e={...s};delete e.theme,s={name:`implicitRoot`,vconcat:[e]},u=!0}let d=this.createView(s,t,n,r,i,o);return c!==void 0&&TU(d,c),u&&EU(d),d instanceof yU&&await d.initializeChildren(),d.registerStepSizeInvalidation(),d}};function iK(e,t){let n=t.spec?.templates?.[e];if(n)return structuredClone(n);if(t.dataParent)return iK(e,t.dataParent);throw Error(`Cannot find template "${e}" in current view or its ancestors!`)}function aK(e,t){t.name!=null&&(e.name=t.name),t.visible!=null&&(e.visible=t.visible),e.config=tK(t.config,e.config);let n=Ze(t.params)?t.params:Qe(t.params)?Object.entries(t.params).map(([e,t])=>({name:e,value:t})):[];if(n.length){e.params??=[];for(let t of n){let n=e.params.findIndex(e=>e.name==t.name);n>=0&&(e.params[n]=t)}for(let t of n)e.params.some(e=>e.name==t.name)||e.params.push(t)}}function oK(e){return`samples`in e&&Qe(e.samples)&&`spec`in e&&Qe(e.spec)}var sK=class{constructor(e,t){this.animator=e,this.disabled=!!t,this.maxDistance=500,this.callback=null,this.targetValue=0,this.lastValue=0,this.smoother=AH(e,e=>{let t=e.x-this.lastValue;this.lastValue=e.x,this.callback?.(t)},40,.1,{x:0})}cancel(){this.lastValue!==this.targetValue&&(this.targetValue=F([this.lastValue,this.targetValue],.3),this.smoother({x:this.targetValue}))}setMomentum(e,t){if(this.disabled){t(e);return}this.callback=t;let n=RN(this.targetValue+e-this.lastValue,-this.maxDistance,this.maxDistance);this.targetValue=this.lastValue+n,this.smoother({x:this.targetValue})}};function cK(e){let t={},n=[`string`,`number`,`boolean`],r=[`wheelDelta`,`wheelDeltaX`,`wheelDeltaY`];for(let i in e){let a=i;!r.includes(i)&&n.includes(typeof e[a])&&(t[a]=e[a])}return t}var lK=class{#e;#t;constructor(e,t,n){this.point=e,this.#n=t,this.stopped=!1,this.wheelClaimed=!1,this.#r=n,this.target=void 0,this.currentTarget=void 0,this.relatedTarget=void 0}#n;#r;#i;get uiEvent(){return this.#n}set uiEvent(e){this.#n=e,this.#e=void 0,this.#t=void 0,this.#i=void 0}stopPropagation(){this.stopped=!0}claimWheel(){if(this.type!==`wheel`&&this.type!==`wheelclaimprobe`)throw Error(`Can claim wheel only for wheel events!`);this.wheelClaimed=!0}setWheelDeltas(e,t){if(!RW(this.uiEvent))throw Error(`Not a WheelEvent!`);this.#i={deltaX:e,deltaY:t},this.#t=void 0}get type(){return this.#r??this.uiEvent.type}set type(e){this.#r=e}get proxiedMouseEvent(){return this.#e||=BW(this.mouseEvent),this.#e}get mouseEvent(){if(this.uiEvent instanceof MouseEvent)return this.uiEvent;throw Error(`Not a MouseEvent!`)}get wheelEvent(){if(!RW(this.uiEvent))throw Error(`Not a WheelEvent!`);return this.#i?(this.#t||=zW(this.uiEvent,this.#i.deltaX,this.#i.deltaY),this.#t):this.uiEvent}},uK=class{#e;#t;#n;#r=[];constructor({viewRoot:e}){this.#e=e}dispatch(e,t){this.#t=e;let n=new lK(e,t);return this.#e.propagateInteraction(n),this.#n=n.target,n.type===`mousemove`&&this.#i(n),n}handlePointerLeave(e){if(!this.#t||this.#r.length===0){this.#r=[],this.#n=void 0;return}let t=new lK(this.#t,e,`mouseleave`);this.#a(t,this.#r,void 0),this.#r=[],this.#n=void 0}getCurrentTarget(){return this.#n}#i(e){let t=this.#s(e.target),n=this.#r,r=0;for(;r<n.length&&r<t.length&&n[r]===t[r];)r++;r<n.length&&this.#a(e,n.slice(r),t.at(-1)),r<t.length&&this.#o(e,t.slice(r),n.at(-1)),this.#r=t}#a(e,t,n){for(let r=t.length-1;r>=0;r--){let i=new lK(e.point,e.uiEvent,`mouseleave`),a=t[r];if(i.target=a,i.currentTarget=a,i.relatedTarget=n,this.#c(a,i),i.stopped)return}}#o(e,t,n){for(let r of t){let t=new lK(e.point,e.uiEvent,`mouseenter`);if(t.target=r,t.currentTarget=r,t.relatedTarget=n,this.#c(r,t),t.stopped)return}}#s(e){return e?e.getLayoutAncestors().reverse():[]}#c(e,t){e.handleInteraction(t,!0),!t.stopped&&e.handleInteraction(t,!1)}},dK=class{#e;#t;#n;constructor({canvas:e}){this.#e=e}update({target:e,hover:t}){this.#r(fK(e,t))}clear(){this.#r(void 0)}#r(e){if(pK(this.#t,e)){this.#i();return}this.#n?.(),this.#n=void 0,this.#t=e,e?.watch(e=>{this.#n=e},()=>this.#i()),this.#i()}#i(){let e=this.#t?.evaluate();this.#e.style.cursor=typeof e==`string`?e:``}};function fK(e,t){let n=t?.mark,r=n?.getCursorSpec?.();if(r!==void 0)return{owner:n,raw:r,evaluate:()=>n.getCursor(),watch:(e,t)=>n.watchCursor?.(t,e)};for(let t of e?.getLayoutAncestors()??[]){let e=t.getCursorSpec?.();if(e!==void 0)return{owner:t,raw:e,evaluate:()=>t.getCursor(),watch:(e,n)=>t.watchCursor?.(n,e)}}}function pK(e,t){return!e||!t?e===t:e.owner===t.owner&&e.raw===t.raw}var mK=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=!1;#h=!1;#g=!1;#_=0;#v=!1;constructor({viewRoot:e,glHelper:t,tooltip:n,animator:r,emitEvent:i,tooltipHandlers:a,renderPickingFramebuffer:o,getDevicePixelRatio:s}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a,this.#o=o,this.#s=s,this.#c=new uK({viewRoot:e}),this.#l=new dK({canvas:t.canvas}),this.#u=void 0,this.#d=new sK(this.#r),this.#f=void 0,this.#p=void 0}getCurrentHover(){return this.#u}suspendHoverTracking(){this.#_++,!this.#h&&(this.#n.clear(),this.#m=!1)}resumeHoverTracking(e){if(!(this.#_<=0)&&(this.#_--,!(this.#_>0)&&(this.#n.clear(),this.#m=!1,!this.#C()))){if(e){let t=this.#y(e);if(this.#p=t,this.#b(t)){this.#x(t),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#c.handlePointerLeave(e)}else if(this.#p&&this.#b(this.#p)){this.#x(this.#p),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#u=null,this.#l.clear()}}registerInteractionEvents(){let e=this.#t.canvas,t=performance.now(),n=!1,r,i=(e,t)=>{let n=this.#c.dispatch(e,t);return!this.#m&&!this.#h&&this.#n.clear(),t instanceof MouseEvent&&t.type!==`mouseout`&&this.#l.update({target:n.target,hover:this.#u}),n},a=e=>{let r=performance.now(),a=r-t<200;if(e instanceof MouseEvent){if(e.type!==`contextmenu`&&this.#C())return;let o=this.#y(e);this.#p=o,e.type==`mousemove`&&!a&&this.#_===0&&(this.#g=!1,this.#n.handleMouseMove(e),this.#m=!1,e.buttons==0&&!qW()&&(this.#o(),this.#w(o.x,o.y)));let s=e=>{i(o,e)};if(e.type!=`wheel`&&this.#d.cancel(),(e.type==`mousedown`||e.type==`mouseup`)&&!qW())this.#o();else if(e.type==`wheel`){t=r,this.#m=!1;let n=e;if(Math.abs(n.deltaX)>Math.abs(n.deltaY))this.#u=null,this.#d.cancel();else if(i(o,{type:`wheelclaimprobe`}).wheelClaimed){let e=cK(n);this.#d.setMomentum(n.deltaY*(n.deltaMode?80:1),t=>{s(new WheelEvent(`wheel`,{...e,deltaMode:0,deltaX:0,deltaY:t}))}),n.preventDefault();return}else this.#d.cancel()}if(e.type==`click`){if(n)return;let t=this.#u?{type:e.type,viewPath:this.#u.mark.unitView.getLayoutAncestors().map(e=>e.name).reverse(),datum:this.#u.datum}:{type:e.type,viewPath:null,datum:null};this.#i(`click`,t)}if(e.type!=`click`||this.#f?.subtract(VW.fromMouseEvent(e)).length<3){let t=i(o,e);return e.type==`dblclick`&&this.#_===0&&this.#b(o)&&this.#S(),t}}};e.addEventListener(`mousedown`,e=>{this.#f=VW.fromMouseEvent(e),this.#h=!1;let t=e.shiftKey||e.ctrlKey||e.metaKey;this.#n.sticky?(this.#n.sticky=!1,this.#g=!0,this.#n.clear(),n=!0):n=!1;let r=()=>{document.addEventListener(`mouseup`,()=>this.#n.popEnabledState(),{once:!0,capture:!0}),this.#n.pushEnabledState(!1)};if(e.button==2)r();else if(e.button==0&&this.#n.visible){this.#h=!0;let e;t||(e=setTimeout(()=>{n=!0,this.#h=!1,this.#n.sticky=!0},400));let r=t=>{clearTimeout(e),this.#h&&(this.#h=!1,t&&this.#_>0&&(this.#n.clear(),this.#m=!1))};document.addEventListener(`mouseup`,()=>r(!1),{once:!0}),document.addEventListener(`mousemove`,()=>r(!0),{once:!0})}}),[`mousedown`,`mouseup`,`wheel`,`click`,`mousemove`,`contextmenu`,`dblclick`].forEach(t=>e.addEventListener(t,a));let o=(t,n)=>{let r=e.getBoundingClientRect();return new VW(t-r.left-e.clientLeft,n-r.top-e.clientTop)},s=e=>{if(e.length<=0)return;let t=e[0];if(e.length===1)return{pointerCount:1,centerX:t.clientX,centerY:t.clientY,distance:0};let n=e[1];return{pointerCount:2,centerX:(t.clientX+n.clientX)/2,centerY:(t.clientY+n.clientY)/2,distance:hK(t,n)}},c=(e,t,n,r,a,s,c)=>{i(o(e,t),{type:`touchgesture`,phase:n,pointerCount:r,xDelta:a,yDelta:s,zDelta:c})},l=e=>{e.preventDefault(),this.#d.cancel(),this.#m=!1;let t=s(e.touches);if(!t){r=void 0;return}if(!r||r.pointerCount!==t.pointerCount){r=t;return}let n=t.centerX-r.centerX,i=t.centerY-r.centerY,a=t.pointerCount===2?gK(r.distance,t.distance):0;(n!==0||i!==0||a!==0)&&Number.isFinite(n)&&Number.isFinite(i)&&Number.isFinite(a)&&c(r.centerX,r.centerY,`move`,t.pointerCount,n,i,a),r=t},u=e=>{e.preventDefault(),this.#m=!1,r&&e.touches.length===0&&c(r.centerX,r.centerY,`end`,r.pointerCount,0,0,0),r=s(e.touches)};e.addEventListener(`touchstart`,l,{passive:!1}),e.addEventListener(`touchmove`,l,{passive:!1}),e.addEventListener(`touchend`,u,{passive:!1}),e.addEventListener(`touchcancel`,u,{passive:!1}),e.addEventListener(`dragstart`,e=>e.stopPropagation()),e.addEventListener(`mouseout`,e=>{if(!this.#C()){if(this.#_>0){this.#n.clear(),this.#m=!1;return}this.#c.handlePointerLeave(e),this.#l.clear(),this.#n.clear(),this.#u=null}})}#y(e){let t=this.#t.canvas,n=t.getBoundingClientRect();return new VW(e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop)}#b(e){let t=this.#t.canvas;return e.x>=0&&e.y>=0&&e.x<=t.clientWidth&&e.y<=t.clientHeight}#x(e){qW()||(this.#o(),this.#w(e.x,e.y))}#S(){this.#v||(this.#v=!0,this.#r.requestRender(),window.requestAnimationFrame(()=>{if(this.#v=!1,this.#_>0||this.#C())return;let e=this.#p;if(!e||!this.#b(e)){this.#u=null,this.#l.clear();return}this.#n.clear(),this.#m=!1,this.#x(e),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u})}))}#C(){return typeof document<`u`&&!!document.body&&document.body.classList.contains(`gs-freeze-interaction`)}#w(e,t){let n=this.#s(),r=GM(this.#t.gl,this.#t._pickingBufferInfo,e*n,t*n),i=r[0]|r[1]<<8|r[2]<<16|r[3]<<24;if(i==0){this.#u=null;return}if(i!==this.#u?.uniqueId&&(this.#u=null),this.#u||this.#e.visit(n=>{if(n instanceof LB){if(n.mark.isPickingParticipant()&&[...n.facetCoords.values()].some(n=>n.containsPoint(e,t))){let e=n.getCollector().findDatumByUniqueId(i);e&&(this.#u={mark:n.mark,datum:e,uniqueId:i})}if(this.#u)return nR}}),this.#u){let e=this.#u.mark;this.updateTooltip(this.#u.datum,async t=>{if(!e.isPickingParticipant())return;let n=e.properties.tooltip;if(n!==null&&n!==!1){let r=n?.handler??`default`,i=this.#a[r];if(!i)throw Error(`No such tooltip handler: `+r);let a=tU(t,e,n?.params);return i(t,e,n?.params,a)}})}}updateTooltip(e,t){if(!this.#g)if(!this.#m||!e)this.#n.updateWithDatum(e,t),this.#m=!0;else throw Error(`Tooltip has already been updated! Duplicate event handler?`)}};function hK(e,t){let n=t.clientX-e.clientX,r=t.clientY-e.clientY;return Math.hypot(n,r)}function gK(e,t){return e<=0||t<=0?0:Math.log2(e/t)}var _K=class{constructor(e){this.globalOptions=e}pushView(e,t){}popView(e){}renderMark(e,t){}getDevicePixelRatio(){return 1}},vK=class extends _K{#e=[0,0,0,0];#t;#n=[];#r;#i;#a=new Set;#o=void 0;#s=1;#c={width:0,height:0};constructor(e,t){if(super(e),this.#i=t.webGLHelper,this.#r=t.framebufferInfo,this.#s=t.devicePixelRatio,this.#c=t.canvasSize,t.clearColor){let e=Cu(t.clearColor).rgb();this.#e=[e.r/255,e.g/255,e.b/255,e.opacity]}}getDevicePixelRatio(){return this.#s}pushView(e,t){this.#a.add(e),this.#o=t}renderMark(e,t){if(this.globalOptions.picking&&!e.isPickingParticipant())return;let n=e.render(t);n&&this.#n.push({mark:e,callback:n,coords:this.#o,clipRect:t.clipRect})}render(){if(this.#t||this.#l(),this.#t.length==0)return;let e=this.#i.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(let e of this.#a)e.onBeforeRender();for(let e of this.#t)e();this.#r&&e.bindFramebuffer(e.FRAMEBUFFER,null)}#l(){this.#t=[];let e=!0,t=!0,n=t=>()=>{e&&t()},r=n=>()=>{e&&t&&n()},i=xn(this.#n.reverse(),e=>e.mark);for(let[a,o]of[...i.entries()].reverse()){if(!a.isReady())continue;this.#t.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.#t.push(...a.prepareRender(this.globalOptions).map(e=>n(e)));let i;for(let e of o){let o=e.coords;o.equals(i)||this.#t.push(n(()=>{t=a.setViewport(this.#c,this.#s,o,e.clipRect)})),this.#t.push(r(e.callback)),i=e.coords}}}},yK=class extends _K{constructor(...e){super({}),this.contexts=e}pushView(e,t){for(let n of this.contexts)n.pushView(e,t)}popView(e){for(let t of this.contexts)t.popView(e)}renderMark(e,t){for(let n of this.contexts)n.renderMark(e,t)}},bK=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor({viewRoot:e,glHelper:t,getBackground:n,broadcast:r,onLayoutComputed:i}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=void 0,this.#o=void 0,this.#s=!1}computeLayout(){let e=this.#e;if(!e)return;this.#r(`layout`);let 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}let n={webGLHelper:this.#t,canvasSize:t,devicePixelRatio:this.#t.getDevicePixelRatio(t)};this.#a=new vK({picking:!1},{...n,clearColor:this.#n()}),this.#o=new vK({picking:!0},{...n,framebufferInfo:this.#t._pickingBufferInfo}),e.render(new yK(this.#a,this.#o),lW.create(0,0,t.width,t.height)),this.#i(),this.#r(`layoutComputed`)}renderAll(){this.#a?.render(),this.#s=!0}renderPickingFramebuffer(){this.#s&&=(this.#o.render(),!1)}};function xK(e){let t=e=>{throw Error(`ViewContext.`+e+` is not configured.`)},n={dataFlow:e.dataFlow??t(`dataFlow`),glHelper:e.allowMissingGlHelper?e.glHelper:e.glHelper??t(`glHelper`),animator:e.animator??t(`animator`),genomeStore:e.genomeStore,fontManager:e.fontManager??t(`fontManager`),createOrImportView:async function(t,r,i,a,o,s){let c=e.createOrImportViewWithContext;return c?c(n,t,r,i,a,o,s):Promise.reject(Error(`ViewContext.createOrImportView is not configured.`))}},r=[`requestLayoutReflow`,`renderImmediately`,`updateTooltip`,`getNamedDataFromProvider`,`getCurrentHover`,`suspendHoverTracking`,`resumeHoverTracking`,`addKeyboardListener`,`addBroadcastListener`,`removeBroadcastListener`,`highlightView`,`isViewConfiguredVisible`,`isViewSpec`,`getBaseConfig`],i=e,a=n;for(let e of r)a[e]=i[e]??(()=>t(e));return n}var SK={view:{},mark:{xOffset:0,yOffset:0,minBufferSize:0,opacity:1},point:{x:.5,y:.5,filled:!0,size:100,semanticScore:0,shape:`circle`,strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02,minPickingSize:2},rect:{x2:void 0,y2:void 0,filled:!0,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1},rule:{x2:void 0,y2:void 0,size:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:`butt`},tick:{minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:`butt`,orient:void 0,thickness:1},text:{x:.5,y:.5,x2:void 0,y2:void 0,text:``,size:11,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},link:{x:0,x2:void 0,y:0,y2:void 0,size:1,segments:101,arcHeightFactor:1,minArcHeight:1.5,minPickingSize:3,clampApex:!1,maxChordLength:5e4,arcFadingDistance:!1,noFadingOnPointSelection:!0,linkShape:`arc`,orient:`vertical`},axis:{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,grid:!1,gridCap:`butt`,gridColor:`lightgray`,gridDash:null,gridOpacity:1,gridWidth:1},axisLocus:{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,chromGrid:!1,chromGridCap:`butt`,chromGridColor:`gray`,chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1},scale:{nominalColorScheme:`tableau10`,ordinalColorScheme:`blues`,quantitativeColorScheme:`viridis`},range:{shape:[`circle`,`square`,`triangle-up`,`cross`,`diamond`],size:[0,400],angle:[0,360],heatmap:`yellowgreenblue`},title:{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`},style:{"track-title":{orient:`left`,anchor:`middle`,align:`right`,baseline:`middle`,angle:0,fontSize:12},overlay:{orient:`top`,anchor:`start`,align:`left`,baseline:`top`,offset:-10,dx:10,fontSize:12},"overlay-title":{orient:`top`,anchor:`start`,align:`left`,baseline:`top`,offset:-10,dx:10,fontSize:12}}};function CK(e){bU(e),xU(e)}function wK({glHelper:e,viewRoot:t,logicalWidth:n,logicalHeight:r,devicePixelRatio:i,clearColor:a=`white`}){n??=e.getLogicalCanvasSize().width,r??=e.getLogicalCanvasSize().height,i??=window.devicePixelRatio??1;let o=e.gl,s=Math.floor(n*i),c=Math.floor(r*i),l=hM(o,[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],s,c),u=new vK({picking:!1},{webGLHelper:e,canvasSize:{width:n,height:r},devicePixelRatio:i,clearColor:a,framebufferInfo:l});return t.render(u,lW.create(0,0,n,r)),u.render(),KM(o,l,`image/png`)}function TK(e,t){let n=OK(e,t);if(!n.length)throw Error(`Parameter "`+t+`" not found.`);let r=new Map;for(let e of n){let n=e.view.paramRuntime.findRuntimeForParam(t);if(!n)throw Error(`Parameter "`+t+`" has no runtime value.`);r.set(n,{runtime:n,readOnly:EK(r.get(n),e),pointSelection:DK(r.get(n),e)})}if(r.size>1)throw Error(`Parameter "`+t+`" is ambiguous.`);let{runtime:i,readOnly:a,pointSelection:o}=r.values().next().value;return{getValue(){return i.getValue(t)},setValue(n){if(a)throw Error(`Cannot set computed parameter "`+t+`".`);if(o)throw Error(`Cannot set point selection parameter "`+t+`" through the embed API.`);i.setValue(t,n),e.context.animator.requestRender()},subscribe(e){return i.subscribe(t,()=>{e(i.getValue(t))})}}}function EK(e,t){return!!(e?.readOnly||`expr`in t.param)}function DK(e,t){if(e?.pointSelection)return!0;let n=t.param;return`select`in n&&cg(sg(n.select))}function OK(e,t){let n=[];return e.visit(e=>{let r=e.paramRuntime.paramConfigs.get(t);r&&n.push({view:e,param:r})}),n}function kK(e){if(e.genome&&e.genomes)throw Error("Do not mix deprecated `genome` with `genomes`. Use only `genomes` and `assembly`.");if(e.genome&&e.assembly)throw Error("Do not mix deprecated `genome` with root `assembly`. Use `genomes` and `assembly`.");if(e.genome){let{name:t,...n}=e.genome;return{genomesByName:!(Object.keys(n).length>0)&&jK(t)?new Map:new Map([[t,n]]),defaultAssembly:t,deprecationWarning:AK()}}let t=new Map;for(let[n,r]of Object.entries(e.genomes??{}))t.set(n,r??{});let n=e.assembly;if(!n&&t.size===1&&(n=t.keys().next().value),n&&!t.has(n)&&!jK(n))throw Error(`Root assembly "${n}" is neither defined in \`genomes\` nor a built-in assembly.`);return{genomesByName:t,defaultAssembly:n,deprecationWarning:void 0}}function AK(){return'Root `genome` is deprecated and will be removed in a future version. Use root `genomes` and `assembly` instead. Built-in migration example: {"genome":{"name":"hg38"}} -> {"assembly":"hg38"}.'}function jK(e){try{return vR(e),!0}catch{return!1}}function MK(e,t,n){let r=PK(e,n);if(!r.size)return!0;for(let e of r)if(!FK(e,t))return!1;return!0}function NK(e,t,n,r,i){let a=i??(e=>e.isConfiguredVisible());return new Promise((i,o)=>{let s=new Set,c=new Set,l=()=>{f(),d()},u=()=>{for(let e of s)e();s.clear(),e.removeBroadcastListener(`subtreeDataReady`,l),r&&r.removeEventListener(`abort`,p)},d=()=>{MK(t,n,a)&&(u(),i())},f=()=>{t.visit(e=>{if(!(e instanceof LB)||!a(e))return;let t=e.flowHandle?.collector;t&&(c.has(t)||(c.add(t),s.add(t.observe(d))))})},p=()=>{u(),o(Error(`Lazy subtree readiness was aborted.`))};if(f(),d(),e.addBroadcastListener(`subtreeDataReady`,l),r){if(r.aborted){p();return}r.addEventListener(`abort`,p,{once:!0})}})}function PK(e,t){let n=t??(e=>e.isConfiguredVisible()),r=new Set;return e.visit(e=>{if(!(e instanceof LB)||!n(e))return;let t=e;for(;t&&!(t.flowHandle&&t.flowHandle.dataSource);)t=t.dataParent;if(!t||!t.flowHandle)return;let i=t.flowHandle.dataSource;i instanceof Qm&&r.add(i)}),r}function FK(e,t){let n=t??{[e.channel]:Array.from(e.scaleResolution.getDomain())};return e.isDataReadyForDomain(n)}var IK={mark:{color:`#4c78a8`},point:{filled:!1,size:30},rule:{color:`black`},text:{color:`black`},view:{stroke:`#ddd`,strokeWidth:1},axis:{grid:!1,domain:!0,tickColor:`gray`,domainColor:`gray`,gridColor:`#ddd`,labelColor:`#333`,titleColor:`#333`,titleFontSize:11,titleFontWeight:`normal`},axisQuantitative:{grid:!0},scale:{nominalColorScheme:`tableau10`,ordinalColorScheme:`blues`,quantitativeColorScheme:`blues`},range:{heatmap:`yellowgreenblue`,ramp:`blues`,diverging:`blueorange`}},LK={genomespy:{mark:{color:`#4c78a8`},rule:{color:`black`},text:{color:`black`},link:{color:`black`}},vegalite:IK,quartz:fP([IK,{background:`#f9f9f9`,view:{fill:`#f9f9f9`},mark:{color:`#ab5787`},point:{size:30},axis:{domainColor:`#979797`,domainWidth:.5,gridWidth:.2,labelColor:`#979797`,tickColor:`#979797`,tickWidth:.2,titleColor:`#979797`},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0}}]),dark:fP([IK,{background:`#333`,view:{fill:`#333`,stroke:`#888`},title:{color:`#fff`},axis:{domainColor:`#fff`,gridColor:`#888`,tickColor:`#fff`,labelColor:`#fff`,titleColor:`#fff`},text:{color:`#fff`},rule:{color:`#fff`}}]),fivethirtyeight:fP([IK,{background:`#f0f0f0`,view:{fill:`#f0f0f0`},mark:{color:`#30a2da`},point:{filled:!0,shape:`circle`},axis:{domainColor:`#cbcbcb`,grid:!0,gridColor:`#cbcbcb`,gridWidth:1,labelColor:`#999`,labelFontSize:10,titleColor:`#333`,tickColor:`#cbcbcb`,tickSize:10,titleFontSize:14,titlePadding:10,labelPadding:4},axisNominal:{grid:!1},axisOrdinal:{grid:!1},title:{anchor:`start`,fontSize:24,fontWeight:600,offset:20}}]),urbaninstitute:fP([IK,{background:`#FFFFFF`,view:{fill:`#FFFFFF`,stroke:`#000000`,strokeOpacity:0},mark:{color:`#1696d2`},point:{filled:!0},text:{font:`Lato`,color:`#1696d2`,size:11,align:`center`,fontWeight:400},title:{anchor:`start`,fontSize:18,font:`Lato`},axisX:{domain:!0,domainColor:`#000000`,domainWidth:1,grid:!1,labelFontSize:12,labelFont:`Lato`,labelAngle:0,tickColor:`#000000`,tickSize:5,titleFontSize:12,titlePadding:10,titleFont:`Lato`},axisY:{domain:!1,domainWidth:1,grid:!0,gridColor:`#DEDDDD`,gridWidth:1,labelFontSize:12,labelFont:`Lato`,labelPadding:8,ticks:!1,titleFontSize:12,titlePadding:10,titleFont:`Lato`}}])},RK=Object.keys(LK);function zK(e){let t={...LK[e]};return delete t.background,t}function BK(e){if(!e)return[];let t=Array.isArray(e)?e:[e],n=t.filter(e=>!(e in LK));if(n.length>0)throw Error(`Unknown theme "`+n[0]+`". Available themes: `+RK.join(`, `));return t}var VK=`genomespy`;function HK(e){return LK[e].background}function UK(e){let t=BK(e);if(t.length!=0)return fP(t.map(e=>zK(e)))}var WK=class{#e=[];#t;#n;#r;#i;#a;#o;#s=new LT;#c=new RT;#l=new RT;constructor(e,t,n={}){this.container=e,this.options=n,n.inputBindingContainer??=`default`,this.spec=t,this.viewFactory=new rK,this.namedDataProviders=[],this.animator=new kH(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=e=>e.isVisibleInSpec(),this.tooltipHandlers={default:vU,refseqgene:HH,...n.tooltipHandlers??{}},this.viewRoot=void 0,this.#i=new BT(e,n),this.dpr=window.devicePixelRatio}get#u(){return this.container.querySelector(`.canvas-wrapper`)}#d(){this.#i.initialize(this.viewRoot)}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(let t of this.namedDataProviders){let n=t(e);if(n)return n}}updateNamedData(e,t){let n=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!n)throw Error(`No such named data source: `+e);n.dataSource.updateDynamicData(t),this.animator.requestRender()}getParam(e){return TK(this.viewRoot,e)}addEventListener(e,t){this.#c.add(e,t)}removeEventListener(e,t){this.#c.remove(e,t)}broadcast(e,t){let n={type:e,payload:t};this.viewRoot.visit(e=>e.handleBroadcast(n)),this.#l.emit(e,n)}#f(){this.dpr=this.#o.getDevicePixelRatio();let e=this.viewRoot.paramRuntime.allocateSetter(`devicePixelRatio`,this.dpr),t=()=>{this.#o.invalidateSize(),this.dpr=this.#o.getDevicePixelRatio(),e(this.dpr),this.computeLayout(),this.renderAll()};if(this.viewRoot.getSize().isGrowing()){let e=new ResizeObserver(t);e.observe(this.container),this.#e.push(()=>e.disconnect())}let n=null,r=()=>{n!=null&&(n(),t());let e=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);e.addEventListener(`change`,r),n=()=>{e.removeEventListener(`change`,r)}};r(),n&&this.#e.push(n)}#p(){let{canvasWrapper:e,loadingIndicatorsElement:t,tooltip:n}=wT(this.container);this.#o=new VM(e,()=>this.viewRoot?GB(this.viewRoot):{width:void 0,height:void 0},{powerPreference:this.options.powerPreference??`default`},()=>this.#t?.renderAll()),e.appendChild(t),this.tooltip=n,this.#r=new FT,this.#n=new PT(t,this.#r)}destroy(){let e=this.#u;for(this.container.classList.remove(`genome-spy`),e.classList.remove(`loading`),this.#s.removeAll(),this.#e.forEach(e=>e()),this.#o.finalize(),this.#i.remove(),this.#n.destroy();this.container.firstChild;)this.container.firstChild.remove()}async#m(){await this.#h();let e=this.#g();await this.#v(e),await wH(this.viewRoot,e.dataFlow,e.fontManager,e=>this.broadcast(`dataFlowBuilt`,e)),this.#b(e)}async#h(){this.genomeStore=new jH(this.spec.baseUrl);let{genomesByName:e,defaultAssembly:t,deprecationWarning:n}=kK(this.spec);this.genomeStore.configureGenomes(e,t),n&&console.warn(n)}#g(){let e=new tH;e.loadingStatusRegistry=this.#r;let t=eK({defaultConfig:SK,builtInTheme:UK(VK),theme:fP([this.options.theme,UK(this.spec.theme)])});return xK({dataFlow:e,glHelper:this.#o,animator:this.animator,genomeStore:this.genomeStore,fontManager:new IH(this.#o),updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this.#a.getCurrentHover(),suspendHoverTracking:()=>this.#a?.suspendHoverTracking(),resumeHoverTracking:e=>this.#a?.resumeHoverTracking(e),addKeyboardListener:(e,t)=>{this.#s.add(e,n=>{this.#_(e,n)&&t(n)})},addBroadcastListener:(e,t)=>this.#l.add(e,t),removeBroadcastListener:(e,t)=>this.#l.remove(e,t),renderImmediately:this.renderAll.bind(this),isViewConfiguredVisible:this.viewVisibilityPredicate,isViewSpec:e=>this.viewFactory.isViewSpec(e),getBaseConfig:()=>t,createOrImportViewWithContext:(e,t,n,r,i,a,o)=>this.viewFactory.createOrImportView(t,e,n,r,i,a,o),highlightView:IT(this.container)})}#_(e,t){if(e===`keyup`)return!0;let n=document.activeElement;return n&&n!==document.body?this.container.contains(n):this.container.matches(`:hover`)}async#v(e){let t=this.spec;t.datasets&&this.registerNamedDataProvider(e=>t.datasets[e]),this.viewRoot=await e.createOrImportView(t,null,null,nK),await WU(this.viewRoot,this.genomeStore),this.#r.set(this.viewRoot,`loading`),this.#u.style.flexGrow=this.viewRoot.getSize().height.grow>0?`1`:`0`,this.#d(),CK(this.viewRoot),this.#y(),this.#o.invalidateSize();let n=this.spec.theme?Array.isArray(this.spec.theme)?this.spec.theme:[this.spec.theme]:[];this.#t=new bK({viewRoot:this.viewRoot,glHelper:this.#o,getBackground:()=>{if(this.spec.background!==void 0)return this.spec.background;let e;for(let t of n){let n=HK(t);n!==void 0&&(e=n)}return e},broadcast:this.broadcast.bind(this),onLayoutComputed:()=>this.#n.updateLayout()}),e.requestLayoutReflow=this.computeLayout.bind(this),this.#f()}#y(){let e=AU(this.viewRoot);if(e.length)for(let t of e)console.warn(`Selector constraints warning:`,t.message)}#b(e){e.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(e=>nP(e,`size`)),this.#o.invalidateSize(),this.#a=new mK({viewRoot:this.viewRoot,glHelper:this.#o,tooltip:this.tooltip,animator:this.animator,emitEvent:this.#c.emit.bind(this.#c),tooltipHandlers:this.tooltipHandlers,renderPickingFramebuffer:this.renderPickingFramebuffer.bind(this),getDevicePixelRatio:()=>this.dpr})}async launch(){let e=!1;try{return this.#p(),await this.#m(),this.#a.registerInteractionEvents(),this.computeLayout(),this.animator.requestRender(),e=!0,!0}catch(e){let t=`${e.view?`At "${e.view.getPathString()}": `:``}${e.toString()}`;return console.error(e.stack),this.options.onError?.(e,this.container)||TT(this.container,t),this.viewRoot&&this.#r.set(this.viewRoot,`error`,t),!1}finally{this.#u.classList.remove(`loading`),e&&this.viewRoot&&this.#r.set(this.viewRoot,`complete`)}}async initializeVisibleViewData(){this.viewRoot&&(await TH(this.viewRoot,this.viewRoot.context.dataFlow,this.viewRoot.context.fontManager),this.viewRoot._invalidateCacheByPrefix(`size`,`progeny`),this.#o.invalidateSize(),this.computeLayout(),this.animator.requestRender())}async awaitVisibleLazyData(e){this.viewRoot&&await NK(this.viewRoot.context,this.viewRoot,void 0,e,e=>e.isConfiguredVisible()&&GK(e))}updateTooltip(e,t){this.#a.updateTooltip(e,t)}exportCanvas(e,t,n,r=`white`){let i=wK({glHelper:this.#o,viewRoot:this.viewRoot,logicalWidth:e,logicalHeight:t,devicePixelRatio:n,clearColor:r});return this.computeLayout(),this.renderAll(),i}getLogicalCanvasSize(){return this.#o.getLogicalCanvasSize()}getRenderedBounds(){let e={width:void 0,height:void 0};return this.viewRoot.visit(t=>{for(let n of t.facetCoords.values())e.width=Math.max(e.width??0,n.x2),e.height=Math.max(e.height??0,n.y2)}),e}computeLayout(){this.#t.computeLayout(),this.#o.invalidateSize()}renderAll(){this.#t.renderAll()}renderPickingFramebuffer(){this.#t.renderPickingFramebuffer()}getSearchableViews(){let e=[];return this.viewRoot.visit(t=>{t instanceof LB&&t.getSearchAccessors().length>0&&e.push(t)}),e}getNamedScaleResolutions(){let e=new Map;return this.viewRoot.visit(t=>{for(let n of Object.values(t.resolutions.scale))n.name&&e.set(n.name,n)}),e}};function GK(e){let t=e;for(;t;){let e=t.flowHandle?.dataSource;if(e)return e instanceof xg;t=t.dataParent}return!1}var KK=`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`,qK=`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`,JK=[[`/docs/examples/`,`/docs/examples/`],[`/examples/core/`,`/examples/`],[`/examples/docs/`,`/examples/`],[`/examples/app/`,`/examples/`]],YK=/^(?:[a-z]+:)?\/\//i,XK=`https://example.invalid`;function ZK(e){return YK.test(e)?`external`:e.startsWith(`/`)?`root`:`relative`}function QK(e){let t=new URL(e,XK),n=JK.find(([e])=>t.pathname.startsWith(e));if(n)return eq(n[1],t,ZK(e))}function $K(e){let t=QK(e);if(t)return t;let n=new URL(e,XK);return eq(new URL(`./`,n).pathname,n,ZK(e))}function eq(e,t,n){return n===`external`?t.origin+e:n===`root`?e:e.slice(1)}function tq(e){return async function(t,n,r={}){let i;if(P(t)){if(i=document.querySelector(t),!i)throw Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)i=t;else throw Error(`Invalid element: ${t}`);let a;try{let t=Qe(n)?n:await rq(n);if(t.baseUrl??=``,t.width??=`container`,t.padding??=10,i==document.body){let e=document.createElement(`div`);e.style.position=`fixed`,e.style.inset=`0`,e.style.overflow=`hidden`,i.appendChild(e),i=e}a=new e(i,t,r),nq(a,r),await a.launch()}catch(e){i.innerText=e.toString(),console.error(e)}return{finalize(){for(a.destroy();i.firstChild;)i.firstChild.remove()},addEventListener(e,t){a.addEventListener(e,t)},removeEventListener(e,t){a.removeEventListener(e,t)},getScaleResolutionByName(e){return a.getNamedScaleResolutions().get(e)},getParam:a.getParam.bind(a),awaitVisibleLazyData:a.awaitVisibleLazyData.bind(a),getRenderedBounds:a.getRenderedBounds.bind(a),updateNamedData:a.updateNamedData.bind(a),getLogicalCanvasSize:a.getLogicalCanvasSize.bind(a),exportCanvas:a.exportCanvas.bind(a)}}}function nq(e,t){t.namedDataProvider&&e.registerNamedDataProvider(t.namedDataProvider)}async function rq(e){let t;try{t=await BB(e)}catch(t){throw Error(`Could not load or parse configuration: ${e}, reason: ${t.message}`,{cause:t})}return t.baseUrl||=$K(e),t}function iq(e){return{type:`interval`,intervals:{...e}}}var aq=tq(WK);e.GenomeSpy=WK,e.embed=aq,e.favIcon=qK,e.html=O,e.icon=KK,e.intervalSelection=iq,e.loadSpec=rq});
|
|
844
|
+
`:``}${p}`}var CU=class e extends iR{#e=new Map;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e}async initializeChildren(){}getNextAutoName(e){let 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(e){throw e.view=this,e}if(t===`VISIT_STOP`)return t;if(t!==`VISIT_SKIP`){e.beforeChildren&&e.beforeChildren(this);for(let t of this){let n=t.visit(e);if(n===`VISIT_STOP`)return n}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(t){let n=this;for(let r=0;r<t.length;r++){if(!(n instanceof e))return;let i=n.#t(t[r]);if(!i)return;if(r===t.length-1)return i;n=i}}#t(e){for(let t of this)if(t.name===e)return t}findDescendantByName(e){let t;return this.visit(n=>{if(n.name==e)return t=n,nR}),t}getDefaultResolution(e,t){return`shared`}};function wU(e){GB(e),KB(e)}function TU(e){e.getDescendants().forEach(e=>e.configureViewOpacity())}var EU=new WeakMap,DU=new WeakMap,OU=new WeakMap;function kU(e,t){if(t!==null&&typeof t!=`string`)throw Error(`Import scope name must be a string or null.`);EU.set(e,{name:t})}function AU(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;DU.set(e,n)}function jU(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;OU.set(e,n)}function MU(e){let t=e.getDataAncestors(),n=[];for(let e=t.length-1;e>=0;--e){let r=EU.get(t[e]);r&&typeof r.name==`string`&&n.push(r.name)}return n}function NU(e,t){e.visit(e=>{let n=DU.get(e);if(n===`excludeSubtree`)return tR;if(n!==`exclude`)return t(e)})}function PU(e){let t=[];for(let n of IU(e)){let r=LU(n);zU(e,r,t),BU(e,r,t)}return t}function FU(e){return e.persist===!1?!1:hg(e)?!0:mg(e)?!!e.bind:!1}function IU(e){let t=new Set([e]);return e.visit(e=>{let n=EU.get(e);n&&typeof n.name==`string`&&t.add(e)}),Array.from(t)}function LU(e){return MU(e)}function RU(e){return e.length?`import scope [`+e.join(` / `)+`]`:`import scope (root)`}function zU(e,t,n){let r=new Map;UU(e,t,e=>{for(let[t,n]of e.paramRuntime.paramConfigs){if(!FU(n))continue;let i=r.get(t);i?i.push(e):r.set(t,[e])}});for(let[e,i]of r){if(i.length<=1)continue;let r=i.map(e=>e.getPathString()).join(`, `);n.push({message:`Bookmarkable parameter "`+e+`" is not unique within `+RU(t)+`. Found in: `+r+`.`,scope:t})}}function BU(e,t,n){let r=VU(e,t);if(!r.length)return;let i=r.filter(e=>HU(e));if(i.length<=1)return;let a=new Map;for(let e of i){let t=EU.get(e),n=t?t.name:void 0;typeof n!=`string`||!n.length||a.set(n,(a.get(n)??0)+1)}for(let[e,r]of a)r>1&&n.push({message:`Import instance name "`+e+`" is used multiple times for addressable instances in `+RU(t)+`.`,scope:t})}function VU(e,t){let n=[];return UU(e,t,e=>{if(MU(e).length!==t.length+1)return;let r=EU.get(e);!r||typeof r.name!=`string`||n.push(e)},{includeNamedImportRoots:!0}),n}function HU(e){let t=!1;return e.visit(e=>{let n=DU.get(e);if(n===`excludeSubtree`)return tR;if(n!==`exclude`){for(let n of e.paramRuntime.paramConfigs.values())if(FU(n))return t=!0,nR}}),t}function UU(e,t,n,r={}){let i=r.includeNamedImportRoots??!1;e.visit(e=>{let r=EU.get(e),a=DU.get(e);if(a===`excludeSubtree`)return tR;if(a!==`exclude`&&WU(e,t,r,i))return n(e)})}function WU(e,t,n,r){let i=MU(e);return GU(i,t)?!0:!r||!n||typeof n.name!=`string`||i.length!==t.length+1?!1:KU(t,i)}function GU(e,t){return e.length===t.length?KU(e,t):!1}function KU(e,t){if(e.length>t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function qU(e){let t=[],n=!1,r=YU(e);for(let e of r){let r=e.getAssemblyRequirement();r.assembly&&t.push(r.assembly),r.needsDefaultAssembly&&(n=!0)}return{assemblies:t,needsDefaultAssembly:n}}async function JU(e,t){let{assemblies:n,needsDefaultAssembly:r}=qU(e);if(r){let e=t.getDefaultAssemblyName();if(!e)throw Error("No default assembly has been configured. Set root `assembly`, define exactly one entry in root `genomes`, or set `scale.assembly` on each locus scale.");n.push(e)}await t.ensureAssemblies(n)}function YU(e){let t=new Set,n=[`x`,`y`],r=e=>{for(let r of n){let n=e.getScaleResolution(r);n&&t.add(n)}};return r(e),NU(e,r),t}function XU(e){let t=[];for(let n of e.getDescendants()){let e=n.spec.scales;if(e)for(let[r,i]of Object.entries(e))t.push($U(n,r,i))}return t}function ZU(e){QU(e);let t=XU(e);for(let e of t)e.resolution&&e.resolution.attachViewLevelScaleConfig(e.view,e.config);return t}function QU(e){let t=new Set(e.getDescendants()),n=tW(e);for(let e of n){let n=e.getViewLevelScaleConfig();n&&t.has(n.view)&&e.clearViewLevelScaleConfig(n.view)}}function $U(e,t,n){let r=eW(e,t);if(r.size>1)throw Error(`View-level scales.${t} maps to multiple scale resolutions. Move scales.${t} closer to the intended subtree or configure scale resolution explicitly.`);return{view:e,channel:t,config:n,resolution:r.values().next().value}}function eW(e,t){let n=new Set;for(let r of e.getDescendants()){let e=r.getScaleResolution(t);e&&n.add(e)}return n}function tW(e){let t=new Set;for(let n of e.getDescendants())for(let e of Object.values(n.resolutions.scale))t.add(e);return t}var nW=class{constructor(e,t){this.container=e,this.options=t}async addChildSpec(e,t){let{specs:n,insertAt:r}=this.options.getChildSpecs(),i=t??n.length,a=this.options.defaultName?.(i,e)??this.container.getNextAutoName(`child`),o=await this.container.context.createOrImportView(e,this.container,this.container,a,void 0,this.options.createViewOptions);r(i,e);let s=this.options.insertView(o,i);ZU(this.container),await JU(o,this.container.context.genomeStore),this.options.prepareView&&await this.options.prepareView(o,i,s),TU(o);let{dataSources:c,graphicsPromises:l}=SH(o,this.container.context.dataFlow,e=>e.isConfiguredVisible());return await TH(o,c),await qB(l),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow()),o}async removeChildAt(e){let{removeAt:t}=this.options.getChildSpecs();QU(this.container),this.options.removeView(e),t(e),this.options.afterRemove&&await this.options.afterRemove(e),ZU(this.container),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow())}},rW=.5;function iW(e){return`multiscale`in e&&O(e.multiscale)}function aW(e){if(!e.multiscale.length)throw Error(`"multiscale" must contain at least one child view.`);let t=oW(e.stops,e.multiscale.length),n=e.multiscale.map((n,r)=>e.multiscale.length===1?n:{opacity:cW(r,e.multiscale.length,t),layer:[n]}),r={...e};return delete r.multiscale,delete r.stops,{...r,layer:n}}function oW(e,t){let n=`unitsPerPixel`,r,i=`auto`,a=rW;if(O(e))r=sW(e,t,`stops`);else if(Qe(e))n=e.metric??`unitsPerPixel`,r=sW(e.values,t,`stops.values`),i=e.channel??`auto`,a=e.fade??rW;else throw Error(`"stops" must be an array or an object with "values".`);if(n!==`unitsPerPixel`)throw Error(`Only "unitsPerPixel" is supported for "stops.metric" in multiscale.`);if(![`x`,`y`,`auto`].includes(i))throw Error(`"stops.channel" must be one of "x", "y", or "auto".`);if(!Number.isFinite(a)||a<0||a>.5)throw Error(`"stops.fade" must be a finite number in range [0, 0.5].`);if(r.forEach((e,t)=>{if(!z(e)&&(!Number.isFinite(e)||e<=0))throw Error(`Invalid stop value at index `+t+`. Stop values must be positive finite numbers.`)}),!r.some(z)){let e=r;for(let t=1;t<e.length;t++)if(e[t-1]<=e[t])throw Error(`"stops.values" must be strictly decreasing for "unitsPerPixel".`);for(let t=0;t<e.length-1;t++)if(e[t]*(1-a)<=e[t+1]*(1+a))throw Error(`Adjacent transitions overlap. Reduce fade or increase stop spacing.`)}return{metric:n,values:r,channel:i,fade:a}}function sW(e,t,n){if(!O(e))throw Error(`"`+n+`" must be an array of numbers or ExprRefs.`);let r=t-1;if(e.length!==r)throw Error(`Invalid stop count for multiscale. Expected `+r+`, got `+e.length+`.`);for(let t of e)if(!z(t)&&!Number.isFinite(t))throw Error(`"`+n+`" must contain only numbers or ExprRefs.`);return e}function cW(e,t,n){let r,i,a=n.values.map(e=>({hi:lW(e,1+n.fade),lo:lW(e,1-n.fade)}));if(e===0)r=[a[0].hi,a[0].lo];else if(e===t-1){let e=a.at(-1);r=[e.hi,e.lo]}else{let t=a[e-1],n=a[e];r=[t.hi,t.lo,n.hi,n.lo]}return i=e===0?[1,0]:e===t-1?[0,1]:[0,1,1,0],{channel:n.channel,unitsPerPixel:r,values:i}}function lW(e,t){return z(e)?{expr:`(`+e.expr+`) * `+t}:e*t}function uW(e){return`mark`in e&&(P(e.mark)||Qe(e.mark))}function dW(e){return`layer`in e&&Qe(e.layer)}function fW(e){return`import`in e}function pW(e){return`vconcat`in e&&O(e.vconcat)}function mW(e){return`hconcat`in e&&O(e.hconcat)}function hW(e){return`concat`in e&&O(e.concat)}var gW=class extends CU{#e=[];constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),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`),e=>{if(!dW(e)&&!uW(e)&&!iW(e))throw new sP(`LayerView accepts only unit, layer, or multiscale specs as children!`,this)},{layoutSizeParams:`inherit`})))}async addChildSpec(e,t){return this.#t().addChildSpec(e,t)}async removeChildAt(e){await this.#t().removeChildAt(e)}#t(){return new nW(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=>{let t=this.#e[e];if(!t)throw Error(`Child index out of range!`);t.disposeSubtree(),this.#e.splice(e,1)},defaultName:()=>this.getNextAutoName(`layer`),createViewOptions:{layoutSizeParams:`inherit`}})}get children(){return this.#e.slice()}*[Symbol.iterator](){for(let e of this.#e)yield e}render(e,t,n={}){if(super.render(e,t,n),this.isConfiguredVisible()){e.pushView(this,t);for(let r of this.#e)r.render(e,t,n);e.popView(this)}}propagateInteraction(e){this.handleInteraction(e,!0);for(let t=this.#e.length-1;t>=0;t--)if(this.#e[t].propagateInteraction(e),e.stopped)return;this.handleInteraction(e,!1)}},_W=class{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(){let e=[],t=this.nCols,n=this.nRows;for(let r=0;r<n;r++){let n=[];e.push(n);for(let e=0;e<t;e++){let i=r*t+e;i<this.n&&n.push(i)}}return e}get colIndices(){let e=[],t=this.nCols,n=this.nRows;for(let r=0;r<t;r++){let i=[];e.push(i);for(let e=0;e<n;e++){let n=e*t+r;n<this.n&&i.push(n)}}return e}getCellIndex(e,t){let n;if(this.maxCols==1/0)n=t==0?e:void 0;else if(e>=this.maxCols)return;else n=t*this.nCols+e;return n<this.n?n:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}};function vW(e){return()=>e}var yW=class e{static create(t,n,r,i){return new e(vW(t),vW(n),vW(r),vW(i))}static ZERO=e.create(0,0,0,0);_offset(e,t){let n=this[`_`+e];if(t===0)return n;switch(typeof t){case`number`:return()=>n()+t;case`function`:return()=>n()+t();default:throw Error(`Not a number of function`)}}_passThrough(e){return this._offset(e,0)}constructor(e,t,n,r){this._x=e,this._y=t,this._width=n,this._height=r}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(t){if(!Object.keys(t).length)return this;let n=e=>{let n=t[e];return typeof n==`number`?vW(n):typeof n==`function`?n:this._passThrough(e)};return new e(n(`x`),n(`y`),n(`width`),n(`height`))}translate(t,n){return t===0&&n===0?this:new e(this._offset(`x`,t),this._offset(`y`,n),this._passThrough(`width`),this._passThrough(`height`))}translateBy(e){return this.translate(e.x,e.y)}expand(t,n=1){return t.left==0&&t.top==0&&t.right==0&&t.bottom==0?this:new e(t.left?this._offset(`x`,-t.left*n):this._passThrough(`x`),t.top?this._offset(`y`,-t.top*n):this._passThrough(`y`),t.width?this._offset(`width`,t.width*n):this._passThrough(`width`),t.height?this._offset(`height`,t.height*n):this._passThrough(`height`))}shrink(e){return this.expand(e,-1)}intersect(t){return this===t||t==null?this:new e(()=>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 e(()=>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 e(vW(this.x),vW(this.y),vW(this.width),vW(this.height))}containsPoint(e,t){return e>=this.x&&e<this.x2&&t>=this.y&&t<this.y2}normalizePoint(e,t,n=!1){let r={x:(e-this.x)/this.width,y:(t-this.y)/this.height};return n&&(r.y=1-r.y),r}denormalizePoint(e,t,n=!1){return n&&(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)}`}},bW={x:`axisX`,y:`axisY`},xW={top:`axisTop`,bottom:`axisBottom`,left:`axisLeft`,right:`axisRight`},SW={nominal:`axisNominal`,ordinal:`axisOrdinal`,quantitative:`axisQuantitative`,index:`axisIndex`,locus:`axisLocus`};function CW(e,{channel:t,orient:n,type:r,style:i}){let a=pP(i);return fP(e.flatMap(e=>{let i=bW[t],o=n?xW[n]:void 0,s=r?SW[r]:void 0,c=[e.axis,i?e[i]:void 0,o?e[o]:void 0,s?e[s]:void 0];return[...c.flatMap(e=>pP(e?.style)).map(t=>e.style?.[t]),...c,...a.map(t=>e.style?.[t])]}))}var wW=`chromosome_ticks_and_labels`,TW=`labels_main`,EW=`ticks_and_labels`,DW=`axisExtent`,OW=`_labelWidth`,kW=10,AW=2;function jW(e){return e==`x`?`y`:`x`}var MW={x:[`bottom`,`top`],y:[`left`,`right`]},NW=Object.fromEntries(Object.entries(MW).map(([e,t])=>t.map(t=>[t,e])).flat(1));function PW(e){return NW[e]}var FW=class extends gW{#e;#t;#n;#r=!1;#i=!1;constructor(e,t,n,r,i,a){let o=PW(e.orient),s=CW(i.getConfigScopes(),{channel:o,orient:e.orient,type:t,style:e.style}),c={...s,...e},l={...s,...VW(t,c),...e};super(t==`locus`?UW(l,t):HW(l,t),n,r,i,`axis_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=l,this.#e=IW(l),this.#t=this.paramRuntime.allocateSetter(DW,this.#e),AU(this,{skipSubtree:!0}),jU(this,{skipSubtree:!0})}async initializeChildren(){await super.initializeChildren();let e=this.getDescendants().find(e=>e instanceof VB&&e.name===TW);e instanceof VB&&(this.#n=e),!(!this.axisProps.labels||!this.#n)&&this.registerDisposer(this._addBroadcastHandler(`subtreeDataReady`,()=>this.#o()))}getSize(){let e={px:this.getPerpendicularSize()},t={grow:1};return NW[this.axisProps.orient]==`x`?new oF(t,e):new oF(e,t)}getPerpendicularSize(){return this.#e}isPickingSupported(){return!1}#a(){this.#i||(this.#i=!0,queueMicrotask(()=>{this.#i=!1,this.#s()}))}#o(){if(this.#r)return;let e=this.#n?.getCollector();e&&(this.#r=!0,this.registerDisposer(e.observe(()=>this.#a())),e.completed&&this.#a())}#s(){let e=PW(this.axisProps.orient),t=this.dataParent.getScaleResolution(e);if(t&&!t.isDomainDefinedExplicitly()&&!t.isDomainInitialized())return;let n=BW(this.axisProps,this.context,this.#n);if(n===void 0)return;let r=IW(this.axisProps,n);r>=this.#e+AW&&(this.#e=r,this.#t(r),this.invalidateSizeCache(),this.context.requestLayoutReflow())}};function IW(e,t){let n=LW(e);return e.labels&&(n+=t??RW(e)),zW(e,n)}function LW(e){let t=e.ticks&&e.tickSize||0;return e.labels&&(t+=e.labelPadding),e.title&&(t+=e.titlePadding+e.titleFontSize),t}function RW(e){return PW(e.orient)==`x`?e.labelFontSize:kW}function zW(e,t){return Math.min(e.maxExtent||1/0,Math.max(e.minExtent||0,t))}function BW(e,t,n){let r=n?.getCollector();if(!r?.completed)return;let i=0;r.visitData(e=>{i=Math.max(i,Number(e[OW])||0)});let a=(e.labelFont?t.fontManager.getFont(e.labelFont,e.labelFontStyle,e.labelFontWeight):t.fontManager.getDefaultFont()).metrics;if(!a)return;let o=(a.capHeight+a.descent)/a.common.base*e.labelFontSize,s=e.labelAngle*Math.PI/180,c=Math.abs(Math.sin(s)),l=Math.abs(Math.cos(s)),u=PW(e.orient)==`x`?i*c+o*l:i*l+o*c;return Math.ceil(u)}function VW(e,t){let n=t.orient,r=e==`nominal`||e==`ordinal`,i=`center`,a=`middle`,o=t.labelAngle??((n==`top`||n==`bottom`)&&r?-90:0);switch(n){case`left`:i=`right`;break;case`right`:i=`left`;break;case`top`:case`bottom`:Math.abs(o)>30?(i=o>0==(n==`bottom`)?`left`:`right`,a=`middle`):a=n==`top`?`alphabetic`:`top`;break;default:}return{labelAlign:i,labelAngle:o,labelBaseline:a}}function HW(e,t){let n=e,r=PW(n.orient),i=jW(r),a=n.orient==`bottom`||n.orient==`right`?1:-1,o=n.orient==`bottom`||n.orient==`left`?1:0,s=()=>({field:`value`,type:t}),c=()=>({name:`domain`,data:{values:[{}]},mark:{type:`rule`,clip:!1,strokeDash:n.domainDash,strokeCap:n.domainCap,color:n.domainColor,[i]:o,size:n.domainWidth}}),l=()=>({name:TW,transform:[{type:`measureText`,field:`label`,as:OW,fontSize:n.labelFontSize,font:n.labelFont,fontStyle:n.labelFontStyle,fontWeight:n.labelFontWeight}],mark:{type:`text`,clip:!1,align:n.labelAlign,angle:n.labelAngle,baseline:n.labelBaseline,font:n.labelFont,fontStyle:n.labelFontStyle,fontWeight:n.labelFontWeight,[i+`Offset`]:(n.tickSize+n.labelPadding)*a,[i]:o,size:n.labelFontSize,color:n.labelColor,minBufferSize:1500},encoding:{[r]:s(),text:{field:`label`}}}),u=()=>({name:`ticks`,mark:{type:`rule`,clip:!1,strokeDash:n.tickDash,strokeCap:n.tickCap,color:n.tickColor,size:n.tickWidth,minBufferSize:300},encoding:{[i]:{value:o},[i+`2`]:{value:{expr:`${o} - ${n.tickSize} / ${DW} * ${o?1:-1}`}}}}),d=()=>({name:`title`,data:{values:[{}]},mark:{type:`text`,clip:!1,align:`center`,baseline:n.orient==`bottom`?`bottom`:`top`,angle:[0,90,0,-90][[`top`,`right`,`bottom`,`left`].indexOf(n.orient)],text:n.title,color:n.titleColor,[r]:.5,[i]:1-o}}),f=()=>{let e={name:EW,encoding:{[r]:s()},layer:[]};return n.ticks&&e.layer.push(u()),n.labels&&e.layer.push(l()),e},p={resolve:{scale:{[r]:`forced`}},domainInert:!0,data:{lazy:{type:`axisTicks`,channel:r,axis:e}},layer:[]};return n.domain&&p.layer.push(c()),(n.ticks||n.labels)&&p.layer.push(f()),n.title&&p.layer.push(d()),p}function UW(e,t){let n=e,r=PW(n.orient),i=jW(r),a=n.orient==`bottom`||n.orient==`left`?1:0,o=()=>({name:`chromosome_ticks`,mark:{type:`rule`,strokeDash:e.chromTickDash,strokeDashOffset:e.chromTickDashOffset,[i]:a,[i+`2`]:{expr:`${a} - ${n.chromTickSize} / ${DW} * ${a?1:-1}`},color:e.chromTickColor,size:n.chromTickWidth}}),s=()=>{let i;switch(n.orient){case`top`:i={y:0,angle:0,paddingX:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case`bottom`:i={y:1,angle:0,paddingX:4,dy:n.chromLabelPadding+n.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case`left`:i={x:1,angle:-90,paddingY:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case`right`:i={x:0,angle:90,align:`right`,paddingY:4,dy:-n.chromLabelPadding};break;default:i={}}return{name:`chromosome_labels`,mark:{type:`text`,size:n.chromLabelFontSize,font:n.chromLabelFont,fontWeight:n.chromLabelFontWeight,fontStyle:n.chromLabelFontStyle,color:n.chromLabelColor,align:e.chromLabelAlign,baseline:`alphabetic`,clip:!1,...i},encoding:{[r+`2`]:{field:`continuousEnd`,type:t},text:{field:`name`}}}},c;switch(n.orient){case`bottom`:case`top`:c={};break;case`left`:c={labelAngle:-90,labelAlign:`center`,labelPadding:6};break;case`right`:c={labelAngle:90,labelAlign:`center`,labelPadding:6};break;default:c={}}let l=HW({...e,...c},t);if(e.chromTicks||e.chromLabels){let i={name:wW,data:{lazy:{type:`axisGenome`,channel:PW(n.orient)}},encoding:{[r]:{field:`continuousStart`,type:t,band:0}},layer:[]};if(e.chromTicks&&i.layer.push(o()),e.chromLabels){i.layer.push(s());let e;l.layer.filter(e=>e.name==EW).forEach(t=>t.layer.filter(e=>e.name==TW).forEach(t=>{e=t.mark})),e&&(n.orient==`top`||n.orient==`bottom`?(e.viewportEdgeFadeWidthLeft=30,e.viewportEdgeFadeDistanceLeft=40):(e.viewportEdgeFadeWidthBottom=30,e.viewportEdgeFadeDistanceBottom=40))}l.layer.push(i)}return l}function WW(e,t,n){e.handleInteraction(t,!0),!t.stopped&&(n(),!t.stopped&&e.handleInteraction(t,!1))}function GW(e,t,n,r){return t()?(n(),e.stopped||r?.(),!0):!1}var KW=class{#e;#t=0;#n=0;constructor(e){this.#e=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(){let 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}};function qW(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`touchgesture`&&(t.phase===`move`||t.phase===`end`)&&(t.pointerCount===1||t.pointerCount===2)&&Number.isFinite(t.xDelta)&&Number.isFinite(t.yDelta)&&Number.isFinite(t.zDelta)}function JW(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`wheel`&&Number.isFinite(t.deltaX)&&Number.isFinite(t.deltaY)&&Number.isFinite(t.deltaMode)&&typeof t.preventDefault==`function`}function YW(e,t,n){return new Proxy(e,{get(e,r){if(r===`deltaX`)return t;if(r===`deltaY`)return n;let i=Reflect.get(e,r,e);return typeof i==`function`?i.bind(e):i}})}function XW(e){let t=e=>e===null||typeof e!=`object`&&typeof e!=`function`;return new Proxy(e,{get(e,n,r){let i=Reflect.get(e,n,e);if(!t(i))throw Error(`Access to non-primitive property "${String(n)}" is not allowed.`);return i},getPrototypeOf(){return null},ownKeys(e){return Reflect.ownKeys(e).filter(n=>t(e[n])).map(e=>typeof e==`symbol`?e:String(e))},getOwnPropertyDescriptor(e,n){let r=Reflect.getOwnPropertyDescriptor(e,n);if(r&&!(`get`in r||`set`in r)&&t(r.value))return{value:r.value,writable:!!r.writable,enumerable:!!r.enumerable,configurable:!!r.configurable}},has(e,n){return n in e?t(e[n]):!1}})}var ZW=class e{static fromMouseEvent(t){return new e(t.clientX,t.clientY)}constructor(e,t){this.x=e,this.y=t}subtract(t){return new e(this.x-t.x,this.y-t.y)}add(t){return new e(this.x-t.x,this.y-t.y)}multiply(t){return new e(this.x*t,this.y*t)}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}},QW=0,$W=new WeakMap,eG=lG(),tG=6;function nG(){QW=performance.now()}function rG(){return performance.now()-QW<50}function iG(e){return function(...t){return nG(),e(...t)}}function aG(e,t,n,r,i){n=iG(n);let a=uG(i);if(e.type==`wheel`){let i=e.wheelEvent,o=i.deltaMode?120:1;if(!i.deltaX&&!i.deltaY)return;a.smoother?.stop();let{x:s,y:c}=e.point;if(r){let n=oG(e.point,t,r);if(n)n.x!==void 0&&(s=n.x),n.y!==void 0&&(c=n.y);else{let e=r.mark.encoders;e.x&&!e.x2&&!e.x.constant&&(s=sG(e.x,r.datum)*t.width+t.x),e.y&&!e.y2&&!e.y.constant&&(c=(1-sG(e.y,r.datum))*t.height+t.y)}}(Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:c,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300})===!0:n({x:s,y:c,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})===!0)&&i.preventDefault()}else if(e.type==`mousedown`&&e.mouseEvent.button===0){a.smoother&&a.smoother.stop();let t=new KW(30),r=e.mouseEvent;r.preventDefault(),e.target?.context.suspendHoverTracking();let o=ZW.fromMouseEvent(r),s=e=>{let r=ZW.fromMouseEvent(e);t.push({point:r,timestamp:performance.now()});let i=r.subtract(o);n({x:o.x,y:o.y,xDelta:i.x,yDelta:i.y,zDelta:0}),o=r},c=r=>{document.removeEventListener(`mousemove`,s),document.removeEventListener(`mouseup`,c),e.target?.context.resumeHoverTracking(r),fG(a,t,o,n,i,{minSampleCount:5})};document.addEventListener(`mouseup`,c,!1),document.addEventListener(`mousemove`,s,!1)}else if(e.type==`touchgesture`){if(!qW(e.uiEvent))return;let t=e.uiEvent,{xDelta:r,yDelta:o,zDelta:s}=t;if(t.phase===`end`){t.pointerCount===1&&fG(a,a.touchPanEventBuffer,a.touchPanLastPoint,n,i,{minSampleCount:2,minVelocityPxPerMs:.03}),dG(a);return}a.touchPanPointerCount!==t.pointerCount&&(dG(a),a.touchPanPointerCount=t.pointerCount);let c=new ZW(e.point.x+r,e.point.y+o);if(a.touchPanLastPoint=c,t.pointerCount===1&&(r!==0||o!==0)&&a.touchPanEventBuffer.push({point:c,timestamp:performance.now()}),r===0&&o===0&&s===0)return;a.smoother?.stop(),n({x:e.point.x,y:e.point.y,xDelta:r,yDelta:o,zDelta:s})}}function oG(e,t,n){if(n.mark.getType()!==`link`)return;let r=n.mark.encoders;if(!(r.x&&r.y&&r.x2&&r.y2))return;let i=!r.x.constant&&!r.x2.constant,a=!r.y.constant&&!r.y2.constant;if(!i&&!a)return;let o=sG(r.x,n.datum)*t.width+t.x,s=(1-sG(r.y,n.datum))*t.height+t.y,c=sG(r.x2,n.datum)*t.width+t.x,l=(1-sG(r.y2,n.datum))*t.height+t.y,u=0,d=0;i&&(u+=(e.x-o)**2,d+=(e.x-c)**2),a&&(u+=(e.y-s)**2,d+=(e.y-l)**2);let f=r.size?+r.size(n.datum):0,p=Number.isFinite(f)?Math.max(f,tG):tG,m=p*p;if(!(Math.min(u,d)>m))return u<=d?{x:i?o:void 0,y:a?s:void 0}:{x:i?c:void 0,y:a?l:void 0}}function sG(e,t){let n=+e(t),r=e.scale;if(!r)return n;let i=cG(e.channelDef);if(r.type===`band`||r.type===`point`)return Number.isFinite(i)?n+r.bandwidth()*i:n;if(r.type===`index`||r.type===`locus`){if(!Number.isFinite(i))return n;let e=r;return n+e.step()*(i-e.align())}else return n}function cG(e){return e&&`band`in e?e.band??.5:.5}function lG(){return{smoother:void 0,touchPanEventBuffer:new KW(30),touchPanLastPoint:void 0,touchPanPointerCount:0}}function uG(e){if(!e)return eG;let t=$W.get(e);return t||(t=lG(),$W.set(e,t)),t}function dG(e){e.touchPanEventBuffer=new KW(30),e.touchPanLastPoint=void 0,e.touchPanPointerCount=0}function fG(e,t,n,r,i,a={}){if(!i||!n)return;let o=a.minSampleCount??5,s=a.minVelocityPxPerMs??0,c=performance.now(),l=t.get().filter(e=>c-e.timestamp<160);if(l.length<o||l.length>=5&&pG(l))return;let u=l.at(-1),d=l[0],f=u.point.subtract(d.point).multiply(1/(u.timestamp-d.timestamp));if(!Number.isFinite(f.x)||!Number.isFinite(f.y)||f.length<s)return;let p=n.x,m=n.y;e.smoother=PH(i,e=>{r({x:e.x,y:e.y,xDelta:p-e.x,yDelta:m-e.y,zDelta:0}),p=e.x,m=e.y},150,.5,{x:p,y:m}),e.smoother({x:n.x-f.x*250,y:n.y-f.y*250})}function pG(e){let t=e[Math.floor(e.length/2)],n=t.point.subtract(e[0].point).multiply(t.timestamp-e[0].timestamp),r=e.at(-1).point.subtract(t.point).multiply(e.at(-1).timestamp-t.timestamp),i=n.length;return r.length/i<.4}var mG=class extends gW{constructor(e,t,n,r,i,a){super(vG(e,t),n,r,i,`axisGrid_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=e,AU(this,{skipSubtree:!0}),jU(this,{skipSubtree:!0})}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}};function hG(e,t){let n=e,r=PW(n.orient);return{name:`grid_lines`,data:{lazy:{type:`axisTicks`,channel:r,axis:e}},mark:{type:`rule`,strokeDash:n.gridDash,strokeCap:n.gridCap,color:n.gridColor,size:n.gridWidth,opacity:n.gridOpacity,minBufferSize:300},encoding:{[r]:{field:`value`,type:t}}}}function gG(e,t){let n=e,r=PW(n.orient);return{name:`chromosome_lines`,data:{lazy:{type:`axisGenome`,channel:r}},mark:{type:`rule`,strokeDash:n.chromGridDash,strokeCap:n.chromGridCap,color:n.chromGridColor,size:n.chromGridWidth,opacity:n.chromGridOpacity},encoding:{[r]:{field:`continuousStart`,type:t,band:0}}}}function _G(e,t){let n=e,r=PW(n.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:[n.chromGridFillEven??`white`,n.chromGridFillOdd??`white`]}},opacity:{field:`odd`,type:`nominal`,scale:{type:`ordinal`,domain:[!1,!0],range:[n.chromGridFillEven?1:0,n.chromGridFillOdd?1:0]}}}}}function vG(e,t){let n={...e},r=[];return n.chromGrid&&(n.chromGridFillOdd||n.chromGridFillEven)&&r.push(_G(n,t)),n.chromGrid&&n.chromGridOpacity>0&&r.push(gG(n,t)),n.grid&&n.gridOpacity>0&&r.push(hG(n,t)),{name:`grid_layers`,resolve:{scale:{[PW(e.orient)]:`forced`,fill:`independent`,opacity:`independent`}},domainInert:!0,layer:r}}function yG(e){return fP(e.map(e=>e.title))}function bG(e,t){let n=pP(t);return n.length==0?{}:fP(e.flatMap(e=>n.map(t=>e.style?.[t])))}var xG={start:0,middle:.5,end:1},SG={start:`left`,middle:`center`,end:`right`},CG=`group-title`;function wG(e){let t={},n={x:0,y:0},r=xG[e.anchor??`middle`];switch(e.orient){case`top`:n={x:r,y:1},t={baseline:`alphabetic`,angle:0};break;case`right`:n={x:1,y:1-r},t={baseline:`alphabetic`,angle:90};break;case`bottom`:n={x:r,y:0},t={baseline:`top`,angle:0};break;case`left`:n={x:0,y:r},t={baseline:`alphabetic`,angle:-90};break;default:}return{orientConfig:t,xy:n}}function TG(e,t=[]){if(!e)return;let n=P(e)?{text:e}:e;if(!n.text||n.orient==`none`)return;let r=yG(t),i=bG(t,n.style??CG),{orientConfig:a}=wG({...r,...i,...n});return{...r,...a,...i,...n}}function EG(e,t=[]){let n=TG(e,t);if(!n)return;let{xy:r}=wG(n),i={xOffset:0,yOffset:0};switch(n.orient){case`top`:i.yOffset=-n.offset;break;case`right`:i.xOffset=n.offset;break;case`bottom`:i.yOffset=n.offset;break;case`left`:i.xOffset=-n.offset;break;default:}return{data:{values:[{}]},mark:{type:`text`,tooltip:null,clip:!1,...r,...i,text:n.text,align:n.align??SG[n.anchor],angle:n.angle,baseline:n.baseline,dx:n.dx,dy:n.dy,color:n.color,font:n.font,size:n.fontSize,fontStyle:n.fontStyle,fontWeight:n.fontWeight}}}var DG=class extends VB{#e;#t=yW.ZERO;#n=yW.ZERO;#r=yW.ZERO;viewportOffset=0;#i;constructor(e,t,n={}){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}},e.layoutParent.context,e.layoutParent,e.view,`scrollbar-`+t,{blockEncodingInheritance:!0}),AU(this,{skipSubtree:!0}),jU(this,{skipSubtree:!0}),this.config={scrollbarSize:8,scrollbarPadding:2,scrollbarMinLength:20},this.#e=t,this.#i=n.onViewportOffsetChange;let r=this.config.scrollbarPadding,i=this.config.scrollbarSize;this.#t=this.#e==`vertical`?new yW(()=>this.#n.x+this.#n.width-i-r,()=>this.#n.y+r+this.scrollOffset,()=>i,()=>this.#s()):new yW(()=>this.#n.x+r+this.scrollOffset,()=>this.#n.y+this.#n.height-i-r,()=>this.#s(),()=>i),this.#f(this.viewportOffset),this.addInteractionListener(`mousedown`,e=>{if(e.stopPropagation(),this.#c()<=0)return;let n=e=>t==`vertical`?e.clientY:e.clientX;e.mouseEvent.preventDefault(),this.context.suspendHoverTracking();let r=this.scrollOffset,i=n(e.mouseEvent),a=e=>{let t=this.#c();if(t<=0)return;let a=RN(n(e)-i+r,0,t);this.interpolateViewportOffset({x:this.#u(a)})},o=e=>{document.removeEventListener(`mousemove`,a),document.removeEventListener(`mouseup`,o),this.context.resumeHoverTracking(e)};document.addEventListener(`mouseup`,o,!1),document.addEventListener(`mousemove`,a,!1)})}get scrollOffset(){return this.#l(this.viewportOffset)}setViewportOffset(e,{notify:t=!0,syncSmoother:n=!1}={}){this.viewportOffset=RN(e,0,this.#d()),n&&this.#f(this.viewportOffset),t&&this.#i&&this.#i(this.viewportOffset)}#a(){let e=this.#e==`horizontal`?`width`:`height`,t=this.#n[e],n=this.#r[e];return n>0?Math.min(1,t/n):1}#o(){let e=this.#e==`horizontal`?`width`:`height`;return Math.max(0,this.#n[e]-2*this.config.scrollbarPadding)}#s(){let e=this.#o(),t=this.#a()*e,n=this.config.scrollbarMinLength;return Math.min(e,Math.max(n,t))}#c(){return Math.max(0,this.#o()-this.#s())}#l(e){let t=this.#d(),n=this.#c();return t<=0||n<=0?0:e/t*n}#u(e){let t=this.#d(),n=this.#c();return t<=0||n<=0?0:e/n*t}#d(){let e=this.#e==`horizontal`?`width`:`height`;return Math.max(0,this.#r[e]-this.#n[e])}render(e,t,n){super.render(e,this.#t,n)}updateScrollbar(e,t){this.#n=e.flatten(),this.#r=t,this.setViewportOffset(this.viewportOffset,{notify:!1,syncSmoother:!0})}#f(e){this.interpolateViewportOffset=PH(this.context.animator,e=>{this.setViewportOffset(e.x,{notify:!0,syncSmoother:!1})},35,.4,{x:e})}},OG=`intervalDragActive`,kG=class extends gW{constructor(e,t,n={}){let r=t(),i=Object.keys(r.intervals),{zindex:a=1,...o}=n;if(Rh.every(e=>!i.includes(e)))throw Error(`SelectionRect requires at least one of the channels 'x' or 'y' to be present in the selection.`);let s={name:`selectionRect`,domainInert:!0,params:[{name:OG,value:!1}],resolve:{scale:{x:`forced`,y:`forced`}},data:{values:AG(t())},encoding:{},layer:[]};i.includes(`x`)&&(s.encoding.x={field:`_x`,type:null,title:null},s.encoding.x2={field:`_x2`}),i.includes(`y`)&&(s.encoding.y={field:`_y`,type:null,title:null},s.encoding.y2={field:`_y2`}),s.layer.push({name:`selectionRectRect`,mark:{type:`rect`,clip:!0,fill:`#808080`,fillOpacity:.05,stroke:`black`,strokeWidth:1,strokeOpacity:.2,cursor:o.cursor??{expr:`intervalDragActive ? 'grabbing' : 'move'`},...o}});let c=t=>{let n=e.view.getScaleResolution(t);return`format(datum._${t}2 - datum._${t}, '.3s')`+(n.type===`locus`?` + 'b'`:``)},l=n.measure==`inside`?9:n.measure==`outside`?-9:0;i.includes(`x`)&&l!=0&&s.layer.push({name:`selectionRectTextX`,mark:{type:`text`,align:`center`,paddingX:5,dy:l,tooltip:null},encoding:{text:{expr:c(`x`)},y:i.includes(`y`)?{field:`_y2`,type:null,title:null}:{value:1},y2:null}}),i.includes(`y`)&&l!=0&&s.layer.push({name:`selectionRectTextY`,mark:{type:`text`,align:`center`,paddingY:5,dy:l,tooltip:null,angle:-90},encoding:{text:{expr:c(`y`)},x2:null}}),super(s,e.layoutParent.context,e.layoutParent,e.view,`selectionRect`,{blockEncodingInheritance:!0}),this._zindex=a,AU(this,{skipSubtree:!0}),jU(this,{skipSubtree:!0}),this.registerDisposer(t.subscribe(()=>{let e=t(),n=this.flowHandle?.dataSource;if(!n)throw Error(`Cannot find selection rect data source handle!`);n.updateDynamicData(AG(e))}))}getZindex(){return this._zindex}};function AG(e){let t=e.intervals.x,n=e.intervals.y;return!t&&!n?[]:[{_x:t?.[0],_x2:t?.[1],_y:n?.[0],_y2:n?.[1]}]}function jG(e,t){let n=[`cell`,...pP(t?.style)];return fP(e.flatMap(e=>[e.view,...n.map(t=>e.style?.[t])]).concat([t]))}var MG=class{constructor(e,t,n){if(this.layoutParent=t,this.view=e,this.serial=n,this.background=void 0,this.backgroundStroke=void 0,this.axes={},this.gridLines={},this.scrollbars={},this.selectionRect=void 0,this.title=void 0,this.backgroundZindex=0,this.backgroundStrokeZindex=void 0,this.titleZindex=1,this.coords=yW.ZERO,e.needsAxes.x||e.needsAxes.y){let r=e.spec,i=jG(e.getConfigScopes(),`view`in r?r.view:void 0);this.backgroundZindex=i?.zindex??0,this.backgroundStrokeZindex=i?.strokeZindex;let a=FG(i);a&&(this.background=new VB(a,t.context,t,e,`background`+n,{blockEncodingInheritance:!0}),AU(this.background,{skipSubtree:!0}),jU(this.background,{skipSubtree:!0}));let o=IG(i);o&&(this.backgroundStroke=new VB(o,t.context,t,e,`backgroundStroke`+n,{blockEncodingInheritance:!0}),AU(this.backgroundStroke,{skipSubtree:!0}),jU(this.backgroundStroke,{skipSubtree:!0}));let s=TG(e.spec.title,e.getConfigScopes());this.titleZindex=s?.zindex??1;let c=EG(s);c&&(this.title=new VB(c,t.context,t,e,`title`+n,{blockEncodingInheritance:!0}),AU(this.title,{skipSubtree:!0}),jU(this.title,{skipSubtree:!0}))}e.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new DG(this,`horizontal`)),e.spec.viewportHeight!=null&&(this.scrollbars.vertical=new DG(this,`vertical`)),this.#e()}#e(){let e=this.view;for(let[t,n]of e.paramRuntime.paramConfigs){if(!(`select`in n))continue;let r=sg(n.select);if(!lg(r))continue;let i=r.encodings,a=Object.fromEntries(i.map(e=>{let n=this.view.getScaleResolution(e),r=n?.getResolvedScaleType();if(!n||!r||!vm(r))throw Error(`No continuous scale found for interval selection param "${t}" on channel "${e}"! Scale type is "${r??`none`}".`);return[e,n]})),o=i.some(e=>a[e].isZoomable()),s=r.on??(o?{type:`mousedown`,filter:`event.shiftKey`}:{type:`mousedown`});if(s.type!==`mousedown`)throw Error(`Interval selection param "${t}" currently supports only "mousedown" in "on".`);let c=s.filter?XL(s.filter):()=>!0,l=NG(r.zoom,o,t),u=l?.filter?XL(l.filter):()=>!0;if(this.selectionRect)throw Error(`Only one interval selection per container is currently allowed!`);let d=!1,f=!1,p=!1,m=null,h=(e,t)=>Object.fromEntries(i.map(n=>[n,[Math.min(e[n],t[n]),Math.max(e[n],t[n])]])),g=e.paramRuntime.createExpression(t),_=n=>{e.paramRuntime.setValue(t,n)};n.value&&_({type:`interval`,intervals:n.value});let v=()=>{_(tg(i))};this.selectionRect=new kG(this,g,r.mark);let y=e=>{this.selectionRect.paramRuntime.setValue(OG,e)};this.selectionRect.initializeChildren();let b=t=>{let n={x:0,y:0},r=e.coords.normalizePoint(t.x,t.y,!0);for(let e of i){let t=a[e].getScale();n[e]=t.invert(e==`x`?r.x:r.y)+([`index`,`locus`].includes(t.type)?.5:0)}return n},x=t=>{let{intervals:n}=t,r=(t,n,r)=>{let i=(e,t)=>t==null?null:a[e].getScale()(t),o=i(`x`,t)??r,s=i(`y`,n)??r;return e.coords.denormalizePoint(o,s,!0)},i=r(n.x?.[0],n.y?.[0],0),o=r(n.x?.[1],n.y?.[1],1);return yW.create(i.x,i.y,o.x-i.x,o.y-i.y)};e.addInteractionListener(`mousedown`,t=>{if(t.mouseEvent.button!=0)return;if(m=d?x(g()):null,m)y(!0),f=!0;else{let n=t.point;if(ug(g())&&(f=!0),c(t.proxiedMouseEvent))v(),p=!0;else if(ug(g())){let t=r=>{e.removeInteractionListener(`mouseup`,t);let i=r.point;n.subtract(i).length<2&&v()};e.addInteractionListener(`mouseup`,t);return}else return}t.stopPropagation(),e.context.suspendHoverTracking();let n=t.point,r=ZW.fromMouseEvent(t.mouseEvent).subtract(n),o=e=>{let t=ZW.fromMouseEvent(e).subtract(r),o;if(m){let e=t.subtract(n),r=m.translate(e.x,e.y);o=h(b(new ZW(r.x,r.y)),b(new ZW(r.x2,r.y2)))}else o=h(b(n),b(t));for(let e of i){let t=a[e],{zoomExtent:n}=t,r=o[e];if(m){let e=r[1]-r[0],t=n[0],i=n[1];r[0]<t&&(r[0]=t,r[1]=t+e),r[1]>i&&(r[1]=i,r[0]=i-e)}let i=PG(t,r);i?(r[0]=i[0],r[1]=i[1]):(r[0]=n[0],r[1]=n[0])}_({type:`interval`,intervals:o})},s=t=>{document.removeEventListener(`mousemove`,o),document.removeEventListener(`mouseup`,s),y(!1),p=!1,m&&=null,e.context.resumeHoverTracking(t)};document.addEventListener(`mousemove`,o),document.addEventListener(`mouseup`,s)}),e.addInteractionListener(`click`,e=>{e.mouseEvent.button==0&&(f&&=(e.stopPropagation(),!1))},!0);let S=e=>dg(g(),b(e));e.addInteractionListener(`dblclick`,e=>{S(e.point)&&(v(),e.stopPropagation())},!0),e.addInteractionListener(`wheel`,e=>{let t=e.wheelEvent;if(!l||!u(XW(t))||Math.abs(t.deltaX)>=Math.abs(t.deltaY)||!S(e.point))return;let n=g();if(!ug(n))return;let r=t.deltaMode?120:1,o=2**(t.deltaY*r/300),s=b(e.point),c={...n.intervals},d=!1;for(let e of i){let t=c[e];if(!t||t.length!==2)continue;let n=a[e],r=PG(n,gB(n.getScale(),[...t],s[e],o,{onUnsupported:`identity`}));r&&(r[0]!==t[0]||r[1]!==t[1])&&(c[e]=r,d=!0)}d&&(_({...n,type:`interval`,intervals:c}),t.preventDefault(),e.stopPropagation())}),e.addInteractionListener(`mousemove`,e=>{S(e.point)?p||(d=!0):d=!1})}}*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();let{view:e,axes:t,gridLines:n}=this,r=(e,n)=>{let r=e.getAxisProps();if(r===null)return;let i=r?{...r}:{};if(!i.orient){for(let e of MW[n])if(!t[e]){i.orient=e;break}if(!i.orient)throw Error(`No slots available for an axis! Perhaps a LayerView has more than two children?`)}if(i.title??=e.getTitle(),!MW[n].includes(i.orient))throw Error(`Invalid axis orientation "${i.orient}" on channel "${n}"!`);return i},i=async(e,n,i)=>{let a=r(e,n);if(a){if(t[a.orient])throw Error(`An axis with the orient "${a.orient}" already exists!`);let n=new FW(a,e.scaleResolution.type,this.layoutParent.context,this.layoutParent,i);t[a.orient]=n,await n.initializeChildren()}},a=async(e,t,i)=>{let a=r(e,t);if(!a)return;let o={...CW(i.getConfigScopes(),{channel:t,orient:a.orient,type:e.scaleResolution.type,style:a.style}),...a};if(o.grid||o.chromGrid){let t=new mG(o,e.scaleResolution.type,this.layoutParent.context,this.layoutParent,i);n[a.orient]=t,await t.initializeChildren()}};for(let t of[`x`,`y`])if(e.needsAxes[t]){let n=e.resolutions.axis[t];if(!n)continue;await i(n,t,e)}for(let t of[`x`,`y`])if(e.needsAxes[t]&&e.getConfiguredOrDefaultResolution(t,`axis`)!=`excluded`){let n=e.getAxisResolution(t);if(!n)continue;await a(n,t,e)}if(e instanceof gW){for(let t of e)for(let[e,n]of Object.entries(t.resolutions.axis)){let r=n.getAxisProps();r&&r.orient&&await i(n,e,t)}for(let t of e)for(let[e,n]of Object.entries(t.resolutions.axis)){let r=n.getAxisProps();r&&!r.orient&&await i(n,e,t)}}[...Object.values(t),...Object.values(n)].forEach(e=>e.visit(e=>{e instanceof VB&&e.resolve(`scale`)}))}disposeAxisViews(){for(let e of Object.values(this.axes))e.disposeSubtree();for(let e of Object.values(this.gridLines))e.disposeSubtree();this.axes={},this.gridLines={}}getOverhang(){let e=e=>{let t=this.axes[e];return t?Math.max(t.getPerpendicularSize()+(t.axisProps.offset??0),0):0};return new pF(e(`top`),e(`right`),e(`bottom`),e(`left`)).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}};function NG(e,t,n){let r=e===void 0?!t:e;if(r===!1)return;if(r===!0)return{type:`wheel`};let i=fg(r);if(i.type!==`wheel`)throw Error(`Interval selection param "${n}" currently supports only "wheel" in "zoom".`);return i}function PG(e,t){let n=e.getScale();return Hz(t,e.zoomExtent,{roundToIntegers:n.type===`index`||n.type===`locus`})}function FG(e){if(e?.fill||e?.fillOpacity||e?.shadowOpacity)return{data:{values:[{}]},mark:{color:e.fill,opacity:e.fillOpacity??(e.fill?1:0),type:`rect`,clip:!1,tooltip:null,minHeight:1,minOpacity:0,shadowBlur:e.shadowBlur,shadowColor:e.shadowColor,shadowOffsetX:e.shadowOffsetX,shadowOffsetY:e.shadowOffsetY,shadowOpacity:e.shadowOpacity}}}function IG(e){if(!(!e||!e.stroke||e.strokeWidth===0||e.strokeOpacity===0))return{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:e.strokeWidth??1,color:e.stroke??`lightgray`,strokeCap:`square`,opacity:e.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`}}}}var LG={pan:{baseSpeed:1,maxExtraSpeed:3,pressHalfLifeMs:30,releaseHalfLifeMs:100,holdGrowthHalfLifeMs:800,stopVelocity:.01},zoom:{baseSpeed:3,maxExtraSpeed:15,pressHalfLifeMs:10,releaseHalfLifeMs:100,holdGrowthHalfLifeMs:600,stopVelocity:.01}},RG=class{#e;#t;#n;#r;#i;constructor(e=LG){this.#r=e.pan,this.#i=e.zoom,this.#e={KeyW:!1,KeyA:!1,KeyS:!1,KeyD:!1},this.#t={velocity:0,holdMs:0,direction:0},this.#n={velocity:0,holdMs:0,direction:0}}isNavigationKey(e){return e===`KeyW`||e===`KeyA`||e===`KeyS`||e===`KeyD`}handleKeyDown(e){return this.#a(e,!0)}handleKeyUp(e){return this.#a(e,!1)}reset(){this.#e.KeyW=!1,this.#e.KeyA=!1,this.#e.KeyS=!1,this.#e.KeyD=!1,this.#t.velocity=0,this.#t.holdMs=0,this.#t.direction=0,this.#n.velocity=0,this.#n.holdMs=0,this.#n.direction=0}step(e){if(e<=0)return{panDelta:0,zoomDelta:0,active:this.isActive()};{let t=zG(this.#e.KeyD,this.#e.KeyA),n=zG(this.#e.KeyW,this.#e.KeyS),r=BG(this.#t,t,e,this.#r),i=BG(this.#n,n,e,this.#i),a=e/1e3;return{panDelta:r*a,zoomDelta:i*a,active:this.isActive()}}}isActive(){return this.#e.KeyW||this.#e.KeyA||this.#e.KeyS||this.#e.KeyD?!0:this.#t.velocity!==0||this.#n.velocity!==0}#a(e,t){if(this.isNavigationKey(e)){let n=e;return this.#e[n]===t?!1:(this.#e[n]=t,!0)}else return!1}};function zG(e,t){return e===t?0:t?1:-1}function BG(e,t,n,r){if(t!==0){e.direction!==t&&(e.holdMs=0),e.holdMs+=n;let i=r.maxExtraSpeed*(1-2**(-e.holdMs/r.holdGrowthHalfLifeMs)),a=t*(r.baseSpeed+i);e.velocity=VG(e.velocity,a,n,r.pressHalfLifeMs)}else e.holdMs=0,e.velocity=VG(e.velocity,0,n,r.releaseHalfLifeMs),Math.abs(e.velocity)<r.stopVelocity&&(e.velocity=0);return e.direction=t,e.velocity}function VG(e,t,n,r){return t+(e-t)*2**(-n/r)}function HG(e){let t={x:new Set,y:new Set};return e.visit(e=>{for(let[n,r]of Object.entries(t)){let t=e.getScaleResolution(n);t&&t.isZoomable()&&r.add(t)}}),t}function UG(e){let t=HG(e).x;if(t.size===1){let n=t.values().next().value,r=e.getScaleResolution(`x`);return!r||r!==n?void 0:n}}var WG=class{#e;#t;#n=.5;#r=new RG;#i=!1;#a=0;#o=e=>{if(!this.#i)return;let t=UG(this.#t);if(!t){this.#r.reset(),this.#i=!1,this.#a=0;return}let n=Math.max(0,e-this.#a);this.#a=e;let r=this.#r.step(n);(r.panDelta!==0||r.zoomDelta!==0)&&t.zoom(2**r.zoomDelta,this.#n,r.panDelta)&&(nG(),this.#e.animator.requestRender()),r.active?this.#e.animator.requestTransition(this.#o):(this.#i=!1,this.#a=0)};constructor({context:e,viewRoot:t}){this.#e=e,this.#t=t,this.#s()}handlePointerEvent(e,t){if(e){let n=e.view;if(typeof n.getKeyboardZoomAnchorX==`function`){let e=n.getKeyboardZoomAnchorX(t.point);Number.isFinite(e)&&(this.#n=Math.max(0,Math.min(1,e)))}else this.#n=e.coords.normalizePoint(t.point.x,t.point.y).x}else return}#s(){let e=this.#e.addKeyboardListener;typeof e==`function`&&(e(`keydown`,e=>{GG(e)||this.#r.isNavigationKey(e.code)&&UG(this.#t)&&this.#r.handleKeyDown(e.code)&&(e.preventDefault(),this.#c())}),e(`keyup`,e=>{this.#r.isNavigationKey(e.code)&&this.#r.handleKeyUp(e.code)&&UG(this.#t)&&(e.preventDefault(),this.#c())}))}#c(){this.#i||(this.#i=!0,this.#a=performance.now(),this.#e.animator.requestTransition(this.#o))}};function GG(e){return!!(e.altKey||e.ctrlKey||e.metaKey||KG(e.target))}function KG(e){if(!e||typeof e!=`object`)return!1;let t=e;if(t.isContentEditable)return!0;if(typeof t.nodeName==`string`){let e=t.nodeName.toLowerCase();return e===`input`||e===`textarea`||e===`select`}return!1}var qG=Object.freeze({size:1,color:`#ccc`,opacity:1,strokeDash:[4,4],strokeCap:`butt`}),JG=class{#e;#t;#n;#r;#i=[];#a=[];#o={x:[0,0],y:[0,0]};constructor({direction:e,props:t,context:n,layoutParent:r,dataParent:i,getName:a}){this.#e=e,this.#t=t.includePlotMargin??!0,this.#r=t.zindex??0;let o={...t};delete o.includePlotMargin,delete o.zindex,this.#n=this.#l(o,n,r,i,a)}get view(){return this.#n}getZindex(){return this.#r}update(e,t,n,r,i,a){this.#s(e,t,r,i),this.#c(n,a)}render(e,t,n){this.#n.render(e,t,n)}#s(e,t,n,r){if(this.#a.length=0,t<2)return;let i=this.#e===`vertical`?`column`:`row`,a=r?3:2;for(let r=1;r<t;r++){let t=e[n(i,r)-a],o=t?t.location:0,s=t?t.size:0;this.#a.push(o+s/2)}}#c(e,t){let n=this.#t?0:t.left,r=this.#t?e.width:e.width-t.right,i=this.#t?0:t.bottom,a=this.#t?e.height:e.height-t.top;this.#i.length=this.#a.length;for(let t=0;t<this.#a.length;t++){let o=this.#a[t],s=this.#i[t]??{};if(this.#e===`vertical`)s.x=o,s.x2=o,s.y=i,s.y2=a;else{let t=e.height-o;s.x=n,s.x2=r,s.y=t,s.y2=t}this.#i[t]=s}let o=this.#n.flowHandle?.dataSource;if(!o)return;o.updateDynamicData(this.#i),this.#o.x[1]=e.width,this.#o.y[1]=e.height;let s=this.#n.getScaleResolution(`x`)?.getScale();s&&s.domain(this.#o.x);let c=this.#n.getScaleResolution(`y`)?.getScale();c&&c.domain(this.#o.y)}#l(e,t,n,r,i){let a=new VB(XG(e),t,n,r,this.#e===`horizontal`?i(`separatorHorizontal`):i(`separatorVertical`),{blockEncodingInheritance:!0});return AU(a,{skipSubtree:!0}),jU(a,{skipSubtree:!0}),a}};function YG(e){if(!e)return null;let t=e===!0?{...qG}:{...qG,...e};return t.strokeDash===qG.strokeDash&&(t.strokeDash=qG.strokeDash.slice()),t}function XG(e){return{domainInert:!0,data:{values:[]},resolve:{scale:{x:`excluded`,y:`excluded`},axis:{x:`excluded`,y:`excluded`}},mark:{...e,type:`rule`,clip:e.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`}}}}var ZG=Object.freeze({background:0,separator:10,grid:20,backgroundStroke:30,axis:40,selectionRect:80,scrollbar:90,title:100}),QG=10,$G=class extends CU{#e=1/0;#t=10;#n=[];#r={};#i=0;#a={};#o=null;constructor(e,t,n,r,i,a,o){super(e,t,n,r,i,o),this.spec=e,this.#t=e.spacing??10,this.#e=a,this.#n=[],this.wrappingFacet=!1;let s=YG(e.separator);if(s)for(let t of aK(e))this.#a[t]=new JG({direction:t,props:s,context:this.context,layoutParent:this,dataParent:this,getName:e=>this.getNextAutoName(e)});this.layoutParent||(this.#o=new WG({context:this.context,viewRoot:this}))}appendChild(e){this.appendChildView(e)}appendChildView(e){return this.insertChildViewAt(e,this.#n.length)}insertChildViewAt(e,t){e.layoutParent??=this;let n=new MG(e,this,this.#i);return this.#i++,this.#n.splice(t,0,n),this.invalidateSizeCache(),n}removeChildView(e){let t=this.#n.findIndex(t=>t.view===e);if(t<0)throw Error(`Not my child view!`);this.removeChildAt(t)}removeChildAt(e){let t=this.#n[e];if(!t)throw Error(`Child index out of range!`);this.#l(t),this.#n.splice(e,1),this.invalidateSizeCache()}get#s(){return this.#n.filter(e=>e.view.isConfiguredVisible())}get#c(){return new _W(this.#s.length,this.#e??1/0)}setChildren(e){for(let e of this.#n)this.#l(e);this.#n=[];for(let t of e)this.appendChild(t);this.invalidateSizeCache()}#l(e){e.disposeAxisViews();for(let 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(let e of Object.values(this.#r))e.disposeSubtree();this.#r={};let e=[];for(let t of Rh){let n=this.resolutions.axis[t];if(!n)continue;let r=n.getAxisProps();if(!r)continue;let i=new FW({title:n.getTitle(),orient:MW[t][0],...r},n.scaleResolution.type,this.context,this,this);e.push(i.initializeChildren()),this.#r[t]=i}await Promise.all(e)}*[Symbol.iterator](){for(let e of this.#n)yield*e.getChildren();for(let e of Object.values(this.#a))yield e.view;for(let e of Object.values(this.#r))yield e}#u(e){let t=e==`column`?`width`:`height`,n=(t,n)=>t.map(t=>{let r=this.#s[t].getOverhangAndPadding();return e==`column`?n?r.right:r.left:n?r.bottom:r.top}).reduce((e,t)=>Math.max(e,t),0);return this._cache(`size/directionSizes/${e}`,()=>this.#c[e==`column`?`colIndices`:`rowIndices`].map(e=>({axisBefore:n(e,0),axisAfter:n(e,1),view:aF(e.map(e=>this.#s[e].view.getViewportSize()[t]))})))}#d(e){let t=this.#u(e),n=[];n.push(sF);for(let[e,r]of t.entries())e>0&&n.push({px:this.#t,grow:0}),(e==0||this.wrappingFacet)&&n.push(sF),n.push({px:r.axisBefore,grow:0}),n.push(r.view),n.push({px:r.axisAfter,grow:0}),(e==t.length-1||this.wrappingFacet)&&n.push(sF);return n}#f(e){let t=0,n=0,r=e==`row`?this.spec.height:this.spec.width;if(r||r===0)return fF(r);let i=this.#u(e);for(let[e,r]of i.entries())e>0&&(n+=this.#t),(e==0||this.wrappingFacet)&&(n+=0),n+=r.axisBefore,n+=r.view.px??0,t+=r.view.grow??0,n+=r.axisAfter,(e==i.length-1||this.wrappingFacet)&&(n+=0);return{px:n,grow:t}}#p(e,t){return e==`row`&&this.wrappingFacet?1+6*t+2:2+4*t+1}getOverhang(){return this.#m().union(this.#h())}#m(){let e=this.#u(`column`),t=this.#u(`row`);return!e.length||!t.length?pF.zero():new pF(t.at(0).axisBefore,e.at(-1).axisAfter,t.at(-1).axisAfter,e.at(0).axisBefore)}#h(){let e=e=>{let t=NW[e],n=this.#r[t];return n?.axisProps.orient===e?Math.max(n.getPerpendicularSize()+(n.axisProps.offset??0),0):0};return new pF(e(`top`),e(`right`),e(`bottom`),e(`left`))}getSize(){return this._cache(`size`,()=>new oF(this.#f(`column`),this.#f(`row`)).addPadding(this.#h()))}render(e,t,n={}){if(super.render(e,t,n),!this.isConfiguredVisible())return;this.layoutParent||(t=t.shrink(this.getPadding())),t=t.shrink(this.#h()),e.pushView(this,t);let r=e.getDevicePixelRatio(),i={devicePixelRatio:r},a=iF(this.#d(`column`),t.width,i),o=iF(this.#d(`row`),t.height,i),s=new _W(this.#s.length,this.#e??1/0),c=e=>Math.round(e*r)/r,l=[];for(let[e,r]of this.#s.entries()){let{view:i,axes:u,gridLines:d,background:f,backgroundStroke:p,title:m,selectionRect:h}=r,[g,_]=s.getCellCoords(e),v=a[this.#p(`column`,g)],y=o[this.#p(`row`,_)],b=i.getViewportSize(),x=i.getSize(),S=i.getOverhang(),C=v.location-S.left,w=y.location-S.top,T=(e,t)=>(e[t].grow?(t==`width`?v:y).size:e[t].px)+S[t],E=T(b,`width`),ee=T(b,`height`),te=T(x,`width`),ne=T(x,`height`),re=r.scrollbars.horizontal,ie=r.scrollbars.vertical,ae=re?()=>c(re.viewportOffset):()=>0,oe=ie?()=>c(ie.viewportOffset):()=>0,se=new yW(()=>t.x+C,()=>t.y+w,()=>E,()=>ee),ce=i.isScrollable(),le=ce?new yW(()=>t.x+C-ae(),()=>t.y+w-oe(),()=>te,()=>ne):se;r.coords=se;let ue=n.clipRect?se.intersect(n.clipRect):se;l.push({col:g,row:_,view:i,axes:u,gridLines:d,background:f,backgroundStroke:p,title:m,selectionRect:h,viewportCoords:se,viewCoords:le,clippedChildCoords:ue,viewWidth:te,viewHeight:ne,scrollable:ce,gridChild:r})}let u=this.#m(),d=[],f=[],p=[],m=0,h=(e,t,n)=>{(e>0?f:d).push({zindex:e,order:t,sequence:m++,render:n})},g=e=>{e.sort((e,t)=>e.zindex-t.zindex||e.order-t.order||e.sequence-t.sequence);for(let t of e)t.render()};for(let t of l)t.background&&h(t.gridChild.backgroundZindex,ZG.background,()=>t.background?.render(e,t.clippedChildCoords,{...n,clipRect:void 0}));let _=this.#a.vertical;_&&(_.update(a,s.nCols,t,(e,t)=>this.#p(e,t),this.wrappingFacet,u),h(_.getZindex(),ZG.separator,()=>_.render(e,t,n)));let v=this.#a.horizontal;v&&(v.update(o,s.nRows,t,(e,t)=>this.#p(e,t),this.wrappingFacet,u),h(v.getZindex(),ZG.separator,()=>v.render(e,t,n)));for(let r of l){let{view:i,axes:a,gridLines:o,backgroundStroke:c,title:l,selectionRect:u,viewportCoords:d,viewCoords:f,clippedChildCoords:m,viewWidth:g,viewHeight:_,scrollable:v,gridChild:y,col:b,row:x}=r,S=nK(i)||v;for(let t of Object.values(o))h(t.axisProps.zindex??0,ZG.grid,()=>t.render(e,d,n));p.push(()=>i.render(e,f,S?{...n,clipRect:m}:n)),c&&h(sK(y.backgroundStrokeZindex,S),ZG.backgroundStroke,()=>c?.render(e,m,{...n,clipRect:void 0}));for(let[t,r]of Object.entries(a)){let i=t==`left`||t==`right`?`vertical`:`horizontal`,a=y.scrollbars[i],o=cK(a?d.modify(i==`vertical`?{y:()=>f.y,height:_}:{x:()=>f.x,width:g}):d,t,r),s=n.clipRect;a&&(s=o.intersect(s).intersect(a?d.modify(i==`vertical`?{x:-1e5,width:2e5}:{y:-1e5,height:2e5}):void 0)),h(oK(r.axisProps.zindex,S),ZG.axis,()=>r.render(e,o,{...n,clipRect:s}))}for(let t of Object.values(this.#r)){let r=t.axisProps.orient;(r==`left`&&b==0||r==`right`&&b==s.nCols-1||r==`top`&&x==0||r==`bottom`&&x==s.nRows-1)&&h(oK(t.axisProps.zindex,S),ZG.axis,()=>t.render(e,cK(d.shrink(y.view.getOverhang()),r,t),n))}u&&h(u.getZindex(),ZG.selectionRect,()=>u?.render(e,f,n));for(let r of Object.values(y.scrollbars))h(1,ZG.scrollbar,()=>{r.updateScrollbar(d,f),r.render(e,t,n)});l&&h(y.titleZindex,ZG.title,()=>l?.render(e,d,n))}g(d);for(let e of p)e();g(f),e.popView(this)}propagateInteraction(e){WW(this,e,()=>{let t=this.#s.find(t=>t.coords.containsPoint(e.point.x,e.point.y)),n=t?.view,r=t?void 0:this.#g(e.point);if(e.type===`wheelclaimprobe`){if(!n){r&&e.claimWheel();return}iK(n)?rK(n)&&e.claimWheel():n.propagateInteraction(e);return}this.#o?.handlePointerEvent(t,e);for(let n of Object.values(t?.scrollbars??{}))if(GW(e,()=>n.coords.containsPoint(e.point.x,e.point.y),()=>n.propagateInteraction(e)),e.stopped)return;if(!n){r&&this.#y(e,r);return}GW(e,()=>!0,()=>n.propagateInteraction(e),iK(n)?()=>aG(e,t.coords,e=>this.#b(t.coords,t.view,e),this.context.getCurrentHover(),this.context.animator):void 0)})}#g(e){let t=this.#_();if(!t)return;let n=this.getScaleResolution(t);if(!n||!n.isZoomable())return;let r=this.#v(t);if(r&&r.containsPoint(e.x,e.y))return{coords:r,zoomableResolutions:eK(t,n)}}#_(){if(pW(this.spec))return`x`;if(mW(this.spec))return`y`}#v(e){let t=this.#s[0];if(!t)return;let n=t.coords,r=t.coords.expand(t.getOverhang()),i=n.x,a=r.y,o=n.x2,s=r.y2;for(let t of this.#s.slice(1)){let n=t.coords,r=t.coords.expand(t.getOverhang());e==`x`?(i=Math.max(i,n.x),o=Math.min(o,n.x2),a=Math.min(a,r.y),s=Math.max(s,r.y2)):(i=Math.min(i,r.x),o=Math.max(o,r.x2),a=Math.max(a,n.y),s=Math.min(s,n.y2))}for(let t of Object.values(this.#r)){let n=t.coords;if(!n)continue;let r=t.axisProps.orient;e==`x`&&(r==`top`||r==`bottom`)?(a=Math.min(a,n.y),s=Math.max(s,n.y2)):e==`y`&&(r==`left`||r==`right`)&&(i=Math.min(i,n.x),o=Math.max(o,n.x2))}if(!(i>=o||a>=s))return yW.create(i,a,o-i,s-a)}#y(e,t){e.target=this,aG(e,t.coords,e=>tK(t.coords,e,t.zoomableResolutions,this.context.animator),this.context.getCurrentHover(),this.context.animator)}#b(e,t,n){return tK(e,n,HG(t),this.context.animator)}getDefaultResolution(e,t){return`independent`}};function eK(e,t){let n={x:new Set,y:new Set};return n[e].add(t),n}function tK(e,t,n,r){let i=!1,a=!1,o=e.normalizePoint(t.x,t.y),s=e.normalizePoint(t.x+t.xDelta,t.y+t.yDelta),c={x:s.x-o.x,y:s.y-o.y};for(let[e,r]of Object.entries(n))if(!(r.size<=0)){i=!0;for(let n of r)a=n.zoom(2**t.zDelta,e==`y`?1-o[e]:o[e],e==`x`?c.x:-c.y)||a}return a&&r.requestRender(),i}function nK(e){let t=!0;return e.visit(e=>{e instanceof VB&&(t&&=e.mark.properties.clip===!0)}),t}function rK(e){let t=HG(e);return t.x.size>0||t.y.size>0}function iK(e){return e instanceof VB||e instanceof gW}function aK(e){return`vconcat`in e?[`horizontal`]:`hconcat`in e?[`vertical`]:[`horizontal`,`vertical`]}function oK(e,t){return e??(t?QG:0)}function sK(e,t){return e??(t?QG:0)}function cK(e,t,n){let r=n.axisProps,i=n.getPerpendicularSize();if(t==`bottom`)return e.translate(0,e.height+r.offset).modify({height:i});if(t==`top`)return e.translate(0,-i-r.offset).modify({height:i});if(t==`left`)return e.translate(-i-r.offset,0).modify({width:i});if(t==`right`)return e.translate(e.width+r.offset,0).modify({width:i})}var lK=class extends $G{constructor(e,t,n,r,i,a){super(e,t,n,r,i,hW(e)?e.columns:pW(e)?1:1/0,a),this.spec=e}async initializeChildren(){let e=this.spec,t=hW(e)?e.concat:pW(e)?e.vconcat:e.hconcat;this.setChildren(await Promise.all(t.map(e=>this.context.createOrImportView(e,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`:pW(this.spec)&&e===`x`||mW(this.spec)&&e===`y`?`shared`:`independent`}#e(){let e=this.spec,t;return t=hW(e)?e.concat:pW(e)?e.vconcat:e.hconcat,{specs:t,insertAt:(e,n)=>{t.splice(e,0,n)},removeAt:e=>{t.splice(e,1)}}}#t(){return new nW(this,{getChildSpecs:this.#e.bind(this),insertView:(e,t)=>this.insertChildViewAt(e,t),removeView:e=>super.removeChildAt(e),prepareView:async(e,t,n)=>{await n.createAxes(),await this.syncSharedAxes()},afterRemove:async()=>{await this.syncSharedAxes()},defaultName:()=>this.getNextAutoName(`grid`)})}};function uK({defaultConfig:e,builtInTheme:t,theme:n}){return fP([e,t,n])}function dK(e,t){if(!(!e&&!t))return fP([e,t])}var fK=`viewRoot`,pK=class{#e=new Map;constructor(e={}){this.options={allowImport:!0,wrapRoot:!0,...e};let t=e=>(t,n,r,i,a,o)=>new e(t,n,r,i,a,o);this.addViewType(dW,t(gW)),this.addViewType(iW,((e,t,n,r,i,a)=>new gW(aW(e),t,n,r,i,a))),this.addViewType(uW,t(VB)),this.addViewType(pW,t(lK)),this.addViewType(mW,t(lK)),this.addViewType(hW,t(lK))}addViewType(e,t){this.#e.set(e,t)}createView(e,t,n,r,i,a){for(let[o,s]of this.#e)if(o(e))return s(e,t,n,r,i,a);throw gK(e)?Error(`SampleView is not supported by the @genome-spy/core package. Use @genome-spy/app instead!`):Error(`Invalid spec, cannot figure out the view type from the properties: `+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){let t=[...this.#e.keys()].filter(t=>t(e));if(t.length>1)throw Error(`Ambiguous spec. Cannot create a view!`);return t.length==1}async createOrImportView(e,t,n,r,i,a,o){let s,c=fW(e)?e.name??null:void 0;if(fW(e)){let i;if(`url`in e.import)if(this.options.allowImport)i=await JB(e,r.getBaseUrl(),t);else throw new sP(`Importing views is not allowed!`,n);else if(`template`in e.import)i=mK(e.import.template,r);else throw Error(`Invalid import: `+JSON.stringify(e));a?.(i),hK(i,e),s=i}else s=e;let l=e=>e?.params?.some(e=>hg(e)&&sg(e.select).type==`interval`),u=!1;if(!r&&this.options.wrapRoot&&(uW(s)||dW(s)||iW(s)||l(s))&&i===`viewRoot`){let e={...s};delete e.theme,s={name:`implicitRoot`,vconcat:[e]},u=!0}let d=this.createView(s,t,n,r,i,o);return c!==void 0&&kU(d,c),u&&AU(d),d instanceof CU&&await d.initializeChildren(),d.registerStepSizeInvalidation(),d}};function mK(e,t){let n=t.spec?.templates?.[e];if(n)return structuredClone(n);if(t.dataParent)return mK(e,t.dataParent);throw Error(`Cannot find template "${e}" in current view or its ancestors!`)}function hK(e,t){t.name!=null&&(e.name=t.name),t.visible!=null&&(e.visible=t.visible),e.config=dK(t.config,e.config);let n=O(t.params)?t.params:Qe(t.params)?Object.entries(t.params).map(([e,t])=>({name:e,value:t})):[];if(n.length){e.params??=[];for(let t of n){let n=e.params.findIndex(e=>e.name==t.name);n>=0&&(e.params[n]=t)}for(let t of n)e.params.some(e=>e.name==t.name)||e.params.push(t)}}function gK(e){return`samples`in e&&Qe(e.samples)&&`spec`in e&&Qe(e.spec)}var _K=class{constructor(e,t){this.animator=e,this.disabled=!!t,this.maxDistance=500,this.callback=null,this.targetValue=0,this.lastValue=0,this.smoother=PH(e,e=>{let t=e.x-this.lastValue;this.lastValue=e.x,this.callback?.(t)},40,.1,{x:0})}cancel(){this.lastValue!==this.targetValue&&(this.targetValue=F([this.lastValue,this.targetValue],.3),this.smoother({x:this.targetValue}))}setMomentum(e,t){if(this.disabled){t(e);return}this.callback=t;let n=RN(this.targetValue+e-this.lastValue,-this.maxDistance,this.maxDistance);this.targetValue=this.lastValue+n,this.smoother({x:this.targetValue})}};function vK(e){let t={},n=[`string`,`number`,`boolean`],r=[`wheelDelta`,`wheelDeltaX`,`wheelDeltaY`];for(let i in e){let a=i;!r.includes(i)&&n.includes(typeof e[a])&&(t[a]=e[a])}return t}var yK=class{#e;#t;constructor(e,t,n){this.point=e,this.#n=t,this.stopped=!1,this.wheelClaimed=!1,this.#r=n,this.target=void 0,this.currentTarget=void 0,this.relatedTarget=void 0}#n;#r;#i;get uiEvent(){return this.#n}set uiEvent(e){this.#n=e,this.#e=void 0,this.#t=void 0,this.#i=void 0}stopPropagation(){this.stopped=!0}claimWheel(){if(this.type!==`wheel`&&this.type!==`wheelclaimprobe`)throw Error(`Can claim wheel only for wheel events!`);this.wheelClaimed=!0}setWheelDeltas(e,t){if(!JW(this.uiEvent))throw Error(`Not a WheelEvent!`);this.#i={deltaX:e,deltaY:t},this.#t=void 0}get type(){return this.#r??this.uiEvent.type}set type(e){this.#r=e}get proxiedMouseEvent(){return this.#e||=XW(this.mouseEvent),this.#e}get mouseEvent(){if(this.uiEvent instanceof MouseEvent)return this.uiEvent;throw Error(`Not a MouseEvent!`)}get wheelEvent(){if(!JW(this.uiEvent))throw Error(`Not a WheelEvent!`);return this.#i?(this.#t||=YW(this.uiEvent,this.#i.deltaX,this.#i.deltaY),this.#t):this.uiEvent}},bK=class{#e;#t;#n;#r=[];constructor({viewRoot:e}){this.#e=e}dispatch(e,t){this.#t=e;let n=new yK(e,t);return this.#e.propagateInteraction(n),this.#n=n.target,n.type===`mousemove`&&this.#i(n),n}handlePointerLeave(e){if(!this.#t||this.#r.length===0){this.#r=[],this.#n=void 0;return}let t=new yK(this.#t,e,`mouseleave`);this.#a(t,this.#r,void 0),this.#r=[],this.#n=void 0}getCurrentTarget(){return this.#n}#i(e){let t=this.#s(e.target),n=this.#r,r=0;for(;r<n.length&&r<t.length&&n[r]===t[r];)r++;r<n.length&&this.#a(e,n.slice(r),t.at(-1)),r<t.length&&this.#o(e,t.slice(r),n.at(-1)),this.#r=t}#a(e,t,n){for(let r=t.length-1;r>=0;r--){let i=new yK(e.point,e.uiEvent,`mouseleave`),a=t[r];if(i.target=a,i.currentTarget=a,i.relatedTarget=n,this.#c(a,i),i.stopped)return}}#o(e,t,n){for(let r of t){let t=new yK(e.point,e.uiEvent,`mouseenter`);if(t.target=r,t.currentTarget=r,t.relatedTarget=n,this.#c(r,t),t.stopped)return}}#s(e){return e?e.getLayoutAncestors().reverse():[]}#c(e,t){e.handleInteraction(t,!0),!t.stopped&&e.handleInteraction(t,!1)}},xK=class{#e;#t;#n;constructor({canvas:e}){this.#e=e}update({target:e,hover:t}){this.#r(SK(e,t))}clear(){this.#r(void 0)}#r(e){if(CK(this.#t,e)){this.#i();return}this.#n?.(),this.#n=void 0,this.#t=e,e?.watch(e=>{this.#n=e},()=>this.#i()),this.#i()}#i(){let e=this.#t?.evaluate();this.#e.style.cursor=typeof e==`string`?e:``}};function SK(e,t){let n=t?.mark,r=n?.getCursorSpec?.();if(r!==void 0)return{owner:n,raw:r,evaluate:()=>n.getCursor(),watch:(e,t)=>n.watchCursor?.(t,e)};for(let t of e?.getLayoutAncestors()??[]){let e=t.getCursorSpec?.();if(e!==void 0)return{owner:t,raw:e,evaluate:()=>t.getCursor(),watch:(e,n)=>t.watchCursor?.(n,e)}}}function CK(e,t){return!e||!t?e===t:e.owner===t.owner&&e.raw===t.raw}var wK=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=!1;#h=!1;#g=!1;#_=0;#v=!1;#y(){this.#n.sticky=!1,this.#g=!0,this.#n.clear()}constructor({viewRoot:e,glHelper:t,tooltip:n,animator:r,emitEvent:i,tooltipHandlers:a,renderPickingFramebuffer:o,getDevicePixelRatio:s}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a,this.#o=o,this.#s=s,this.#c=new bK({viewRoot:e}),this.#l=new xK({canvas:t.canvas}),this.#u=void 0,this.#d=new _K(this.#r),this.#f=void 0,this.#p=void 0}getCurrentHover(){return this.#u}suspendHoverTracking(){this.#_++,!this.#h&&(this.#n.clear(),this.#m=!1)}resumeHoverTracking(e){if(!(this.#_<=0)&&(this.#_--,!(this.#_>0)&&(this.#n.clear(),this.#m=!1,!this.#w()))){if(e){let t=this.#b(e);if(this.#p=t,this.#x(t)){this.#S(t),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#c.handlePointerLeave(e)}else if(this.#p&&this.#x(this.#p)){this.#S(this.#p),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#u=null,this.#l.clear()}}registerInteractionEvents(){let e=this.#t.canvas,t=[],n=(e,n,r,i)=>{e.addEventListener(n,r,i),t.push(()=>e.removeEventListener(n,r,i))},r=performance.now(),i=!1,a;globalThis.document?.addEventListener&&n(document,`mousedown`,t=>{this.#n.sticky&&!t.composedPath().includes(e)&&!this.#n.containsEvent(t)&&this.#y()},{capture:!0});let o=(e,t)=>{let n=this.#c.dispatch(e,t);return!this.#m&&!this.#h&&this.#n.clear(),t instanceof MouseEvent&&t.type!==`mouseout`&&this.#l.update({target:n.target,hover:this.#u}),n},s=e=>{let t=performance.now(),n=t-r<200;if(e instanceof MouseEvent){if(e.type!==`contextmenu`&&this.#w())return;let a=this.#b(e);this.#p=a,e.type==`mousemove`&&!n&&this.#_===0&&(this.#g=!1,this.#n.handleMouseMove(e),this.#m=!1,e.buttons==0&&!rG()&&(this.#o(),this.#T(a.x,a.y)));let s=e=>{o(a,e)};if(e.type!=`wheel`&&this.#d.cancel(),(e.type==`mousedown`||e.type==`mouseup`)&&!rG())this.#o();else if(e.type==`wheel`){r=t,this.#m=!1;let n=e;if(Math.abs(n.deltaX)>Math.abs(n.deltaY))this.#u=null,this.#d.cancel();else if(o(a,{type:`wheelclaimprobe`}).wheelClaimed){let e=vK(n);this.#d.setMomentum(n.deltaY*(n.deltaMode?80:1),t=>{s(new WheelEvent(`wheel`,{...e,deltaMode:0,deltaX:0,deltaY:t}))}),n.preventDefault();return}else this.#d.cancel()}if(e.type==`click`){if(i)return;let t=this.#u?{type:e.type,viewPath:this.#u.mark.unitView.getLayoutAncestors().map(e=>e.name).reverse(),datum:this.#u.datum}:{type:e.type,viewPath:null,datum:null};this.#i(`click`,t)}if(e.type!=`click`||this.#f?.subtract(ZW.fromMouseEvent(e)).length<3){let t=o(a,e);return e.type==`dblclick`&&this.#_===0&&this.#x(a)&&this.#C(),t}}};n(e,`mousedown`,e=>{this.#f=ZW.fromMouseEvent(e),this.#h=!1;let t=e.shiftKey||e.ctrlKey||e.metaKey;this.#n.sticky?(this.#y(),i=!0):i=!1;let n=()=>{document.addEventListener(`mouseup`,()=>this.#n.popEnabledState(),{once:!0,capture:!0}),this.#n.pushEnabledState(!1)};if(e.button==2)n();else if(e.button==0&&this.#n.visible){this.#h=!0;let e;t||(e=setTimeout(()=>{i=!0,this.#h=!1,this.#n.sticky=!0},400));let n=t=>{clearTimeout(e),this.#h&&(this.#h=!1,t&&this.#_>0&&(this.#n.clear(),this.#m=!1))};document.addEventListener(`mouseup`,()=>n(!1),{once:!0}),document.addEventListener(`mousemove`,()=>n(!0),{once:!0})}}),[`mousedown`,`mouseup`,`wheel`,`click`,`mousemove`,`contextmenu`,`dblclick`].forEach(t=>n(e,t,s));let c=(t,n)=>{let r=e.getBoundingClientRect();return new ZW(t-r.left-e.clientLeft,n-r.top-e.clientTop)},l=e=>{if(e.length<=0)return;let t=e[0];if(e.length===1)return{pointerCount:1,centerX:t.clientX,centerY:t.clientY,distance:0};let n=e[1];return{pointerCount:2,centerX:(t.clientX+n.clientX)/2,centerY:(t.clientY+n.clientY)/2,distance:TK(t,n)}},u=(e,t,n,r,i,a,s)=>{o(c(e,t),{type:`touchgesture`,phase:n,pointerCount:r,xDelta:i,yDelta:a,zDelta:s})},d=e=>{e.preventDefault(),this.#d.cancel(),this.#m=!1;let t=l(e.touches);if(!t){a=void 0;return}if(!a||a.pointerCount!==t.pointerCount){a=t;return}let n=t.centerX-a.centerX,r=t.centerY-a.centerY,i=t.pointerCount===2?EK(a.distance,t.distance):0;(n!==0||r!==0||i!==0)&&Number.isFinite(n)&&Number.isFinite(r)&&Number.isFinite(i)&&u(a.centerX,a.centerY,`move`,t.pointerCount,n,r,i),a=t},f=e=>{e.preventDefault(),this.#m=!1,a&&e.touches.length===0&&u(a.centerX,a.centerY,`end`,a.pointerCount,0,0,0),a=l(e.touches)};return n(e,`touchstart`,d,{passive:!1}),n(e,`touchmove`,d,{passive:!1}),n(e,`touchend`,f,{passive:!1}),n(e,`touchcancel`,f,{passive:!1}),n(e,`dragstart`,e=>e.stopPropagation()),n(e,`mouseout`,e=>{if(!this.#w()){if(this.#_>0){this.#n.clear(),this.#m=!1;return}this.#c.handlePointerLeave(e),this.#l.clear(),this.#n.clear(),this.#u=null}}),()=>{for(let e of t)e()}}#b(e){let t=this.#t.canvas,n=t.getBoundingClientRect();return new ZW(e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop)}#x(e){let t=this.#t.canvas;return e.x>=0&&e.y>=0&&e.x<=t.clientWidth&&e.y<=t.clientHeight}#S(e){rG()||(this.#o(),this.#T(e.x,e.y))}#C(){this.#v||(this.#v=!0,this.#r.requestRender(),window.requestAnimationFrame(()=>{if(this.#v=!1,this.#_>0||this.#w())return;let e=this.#p;if(!e||!this.#x(e)){this.#u=null,this.#l.clear();return}this.#n.clear(),this.#m=!1,this.#S(e),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u})}))}#w(){return typeof document<`u`&&!!document.body&&document.body.classList.contains(`gs-freeze-interaction`)}#T(e,t){let n=this.#s(),r=GM(this.#t.gl,this.#t._pickingBufferInfo,e*n,t*n),i=r[0]|r[1]<<8|r[2]<<16|r[3]<<24;if(i==0){this.#u=null;return}if(i!==this.#u?.uniqueId&&(this.#u=null),this.#u||this.#e.visit(n=>{if(n instanceof VB){if(n.mark.isPickingParticipant()&&[...n.facetCoords.values()].some(n=>n.containsPoint(e,t))){let e=n.getCollector().findDatumByUniqueId(i);e&&(this.#u={mark:n.mark,datum:e,uniqueId:i})}if(this.#u)return nR}}),this.#u){let e=this.#u.mark;this.updateTooltip(this.#u.datum,async t=>{if(!e.isPickingParticipant())return;let n=e.properties.tooltip;if(n!==null&&n!==!1){let r=n?.handler??`default`,i=this.#a[r];if(!i)throw Error(`No such tooltip handler: `+r);let a=aU(t,e,n?.params);return i(t,e,n?.params,a)}})}}updateTooltip(e,t){if(!this.#g)if(!this.#m||!e)this.#n.updateWithDatum(e,t),this.#m=!0;else throw Error(`Tooltip has already been updated! Duplicate event handler?`)}};function TK(e,t){let n=t.clientX-e.clientX,r=t.clientY-e.clientY;return Math.hypot(n,r)}function EK(e,t){return e<=0||t<=0?0:Math.log2(e/t)}var DK=class{constructor(e){this.globalOptions=e}pushView(e,t){}popView(e){}renderMark(e,t){}getDevicePixelRatio(){return 1}},OK=class extends DK{#e=[0,0,0,0];#t;#n=[];#r;#i;#a=new Set;#o=void 0;#s=1;#c={width:0,height:0};constructor(e,t){if(super(e),this.#i=t.webGLHelper,this.#r=t.framebufferInfo,this.#s=t.devicePixelRatio,this.#c=t.canvasSize,t.clearColor){let e=Cu(t.clearColor).rgb();this.#e=[e.r/255,e.g/255,e.b/255,e.opacity]}}getDevicePixelRatio(){return this.#s}pushView(e,t){this.#a.add(e),this.#o=t}renderMark(e,t){if(this.globalOptions.picking&&!e.isPickingParticipant())return;let n=e.render(t);n&&this.#n.push({mark:e,callback:n,coords:this.#o,clipRect:t.clipRect})}render(){if(this.#t||this.#l(),this.#t.length==0)return;let e=this.#i.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(let e of this.#a)e.onBeforeRender();for(let e of this.#t)e();this.#r&&e.bindFramebuffer(e.FRAMEBUFFER,null)}#l(){this.#t=[];let e=!0,t=!0,n=t=>()=>{e&&t()},r=n=>()=>{e&&t&&n()},i=xn(this.#n.reverse(),e=>e.mark);for(let[a,o]of[...i.entries()].reverse()){if(!a.isReady())continue;this.#t.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.#t.push(...a.prepareRender(this.globalOptions).map(e=>n(e)));let i;for(let e of o){let o=e.coords;o.equals(i)||this.#t.push(n(()=>{t=a.setViewport(this.#c,this.#s,o,e.clipRect)})),this.#t.push(r(e.callback)),i=e.coords}}}},kK=class extends DK{constructor(...e){super({}),this.contexts=e}pushView(e,t){for(let n of this.contexts)n.pushView(e,t)}popView(e){for(let t of this.contexts)t.popView(e)}renderMark(e,t){for(let n of this.contexts)n.renderMark(e,t)}},AK=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor({viewRoot:e,glHelper:t,getBackground:n,broadcast:r,onLayoutComputed:i}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=void 0,this.#o=void 0,this.#s=!1}computeLayout(){let e=this.#e;if(!e)return;this.#r(`layout`);let 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}let n={webGLHelper:this.#t,canvasSize:t,devicePixelRatio:this.#t.getDevicePixelRatio(t)};this.#a=new OK({picking:!1},{...n,clearColor:this.#n()}),this.#o=new OK({picking:!0},{...n,framebufferInfo:this.#t._pickingBufferInfo}),e.render(new kK(this.#a,this.#o),yW.create(0,0,t.width,t.height)),this.#i(),this.#r(`layoutComputed`)}renderAll(){this.#a?.render(),this.#s=!0}renderPickingFramebuffer(){this.#s&&=(this.#o.render(),!1)}};function jK(e){let t=e=>{throw Error(`ViewContext.`+e+` is not configured.`)},n={dataFlow:e.dataFlow??t(`dataFlow`),glHelper:e.allowMissingGlHelper?e.glHelper:e.glHelper??t(`glHelper`),animator:e.animator??t(`animator`),genomeStore:e.genomeStore,fontManager:e.fontManager??t(`fontManager`),createOrImportView:async function(t,r,i,a,o,s){let c=e.createOrImportViewWithContext;return c?c(n,t,r,i,a,o,s):Promise.reject(Error(`ViewContext.createOrImportView is not configured.`))}},r=[`requestLayoutReflow`,`renderImmediately`,`updateTooltip`,`getNamedDataFromProvider`,`getCurrentHover`,`suspendHoverTracking`,`resumeHoverTracking`,`addKeyboardListener`,`addBroadcastListener`,`removeBroadcastListener`,`highlightView`,`isViewConfiguredVisible`,`isViewSpec`,`getBaseConfig`],i=e,a=n;for(let e of r)a[e]=i[e]??(()=>t(e));return n}var MK={view:{},mark:{xOffset:0,yOffset:0,minBufferSize:0,opacity:1},point:{x:.5,y:.5,filled:!0,size:100,semanticScore:0,shape:`circle`,strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02,minPickingSize:2},rect:{x2:void 0,y2:void 0,filled:!0,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1},rule:{x2:void 0,y2:void 0,size:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:`butt`},tick:{minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:`butt`,orient:void 0,thickness:1},text:{x:.5,y:.5,x2:void 0,y2:void 0,text:``,size:11,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},link:{x:0,x2:void 0,y:0,y2:void 0,size:1,segments:101,arcHeightFactor:1,minArcHeight:1.5,minPickingSize:3,clampApex:!1,maxChordLength:5e4,arcFadingDistance:!1,noFadingOnPointSelection:!0,linkShape:`arc`,orient:`vertical`},axis:{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,grid:!1,gridCap:`butt`,gridColor:`lightgray`,gridDash:null,gridOpacity:1,gridWidth:1},axisLocus:{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,chromGrid:!1,chromGridCap:`butt`,chromGridColor:`gray`,chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1},scale:{nominalColorScheme:`tableau10`,ordinalColorScheme:`blues`,quantitativeColorScheme:`viridis`},range:{shape:[`circle`,`square`,`triangle-up`,`cross`,`diamond`],size:[0,400],angle:[0,360],heatmap:`yellowgreenblue`},title:{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`},style:{"track-title":{orient:`left`,anchor:`middle`,align:`right`,baseline:`middle`,angle:0,fontSize:12},overlay:{orient:`top`,anchor:`start`,align:`left`,baseline:`top`,offset:-10,dx:10,fontSize:12},"overlay-title":{orient:`top`,anchor:`start`,align:`left`,baseline:`top`,offset:-10,dx:10,fontSize:12}}};function NK(e){wU(e),TU(e)}function PK({glHelper:e,viewRoot:t,logicalWidth:n,logicalHeight:r,devicePixelRatio:i,clearColor:a=`white`}){n??=e.getLogicalCanvasSize().width,r??=e.getLogicalCanvasSize().height,i??=window.devicePixelRatio??1;let o=e.gl,s=Math.floor(n*i),c=Math.floor(r*i),l=hM(o,[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],s,c),u=new OK({picking:!1},{webGLHelper:e,canvasSize:{width:n,height:r},devicePixelRatio:i,clearColor:a,framebufferInfo:l});return t.render(u,yW.create(0,0,n,r)),u.render(),KM(o,l,`image/png`)}function FK(e,t){let n=RK(e,t);if(!n.length)throw Error(`Parameter "`+t+`" not found.`);let r=new Map;for(let e of n){let n=e.view.paramRuntime.findRuntimeForParam(t);if(!n)throw Error(`Parameter "`+t+`" has no runtime value.`);r.set(n,{runtime:n,readOnly:IK(r.get(n),e),pointSelection:LK(r.get(n),e)})}if(r.size>1)throw Error(`Parameter "`+t+`" is ambiguous.`);let{runtime:i,readOnly:a,pointSelection:o}=r.values().next().value;return{getValue(){return i.getValue(t)},setValue(n){if(a)throw Error(`Cannot set computed parameter "`+t+`".`);if(o)throw Error(`Cannot set point selection parameter "`+t+`" through the embed API.`);i.setValue(t,n),e.context.animator.requestRender()},subscribe(e){return i.subscribe(t,()=>{e(i.getValue(t))})}}}function IK(e,t){return!!(e?.readOnly||`expr`in t.param)}function LK(e,t){if(e?.pointSelection)return!0;let n=t.param;return`select`in n&&cg(sg(n.select))}function RK(e,t){let n=[];return e.visit(e=>{let r=e.paramRuntime.paramConfigs.get(t);r&&n.push({view:e,param:r})}),n}function zK(e){if(e.genome&&e.genomes)throw Error("Do not mix deprecated `genome` with `genomes`. Use only `genomes` and `assembly`.");if(e.genome&&e.assembly)throw Error("Do not mix deprecated `genome` with root `assembly`. Use `genomes` and `assembly`.");if(e.genome){let{name:t,...n}=e.genome;return{genomesByName:!(Object.keys(n).length>0)&&VK(t)?new Map:new Map([[t,n]]),defaultAssembly:t,deprecationWarning:BK()}}let t=new Map;for(let[n,r]of Object.entries(e.genomes??{}))t.set(n,r??{});let n=e.assembly;if(!n&&t.size===1&&(n=t.keys().next().value),n&&!t.has(n)&&!VK(n))throw Error(`Root assembly "${n}" is neither defined in \`genomes\` nor a built-in assembly.`);return{genomesByName:t,defaultAssembly:n,deprecationWarning:void 0}}function BK(){return'Root `genome` is deprecated and will be removed in a future version. Use root `genomes` and `assembly` instead. Built-in migration example: {"genome":{"name":"hg38"}} -> {"assembly":"hg38"}.'}function VK(e){try{return vR(e),!0}catch{return!1}}function HK(e,t,n){let r=WK(e,n);if(!r.size)return!0;for(let e of r)if(!GK(e,t))return!1;return!0}function UK(e,t,n,r,i){let a=i??(e=>e.isConfiguredVisible());return new Promise((i,o)=>{let s=new Set,c=new Set,l=()=>{f(),d()},u=()=>{for(let e of s)e();s.clear(),e.removeBroadcastListener(`subtreeDataReady`,l),r&&r.removeEventListener(`abort`,p)},d=()=>{HK(t,n,a)&&(u(),i())},f=()=>{t.visit(e=>{if(!(e instanceof VB)||!a(e))return;let t=e.flowHandle?.collector;t&&(c.has(t)||(c.add(t),s.add(t.observe(d))))})},p=()=>{u(),o(Error(`Lazy subtree readiness was aborted.`))};if(f(),d(),e.addBroadcastListener(`subtreeDataReady`,l),r){if(r.aborted){p();return}r.addEventListener(`abort`,p,{once:!0})}})}function WK(e,t){let n=t??(e=>e.isConfiguredVisible()),r=new Set;return e.visit(e=>{if(!(e instanceof VB)||!n(e))return;let t=e;for(;t&&!(t.flowHandle&&t.flowHandle.dataSource);)t=t.dataParent;if(!t||!t.flowHandle)return;let i=t.flowHandle.dataSource;i instanceof Qm&&r.add(i)}),r}function GK(e,t){let n=t??{[e.channel]:Array.from(e.scaleResolution.getDomain())};return e.isDataReadyForDomain(n)}var KK={mark:{color:`#4c78a8`},point:{filled:!1,size:30},rule:{color:`black`},text:{color:`black`},view:{stroke:`#ddd`,strokeWidth:1},axis:{grid:!1,domain:!0,tickColor:`gray`,domainColor:`gray`,gridColor:`#ddd`,labelColor:`#333`,titleColor:`#333`,titleFontSize:11,titleFontWeight:`normal`},axisQuantitative:{grid:!0},scale:{nominalColorScheme:`tableau10`,ordinalColorScheme:`blues`,quantitativeColorScheme:`blues`},range:{heatmap:`yellowgreenblue`,ramp:`blues`,diverging:`blueorange`}},qK={genomespy:{mark:{color:`#4c78a8`},rule:{color:`black`},text:{color:`black`},link:{color:`black`}},vegalite:KK,quartz:fP([KK,{background:`#f9f9f9`,view:{fill:`#f9f9f9`},mark:{color:`#ab5787`},point:{size:30},axis:{domainColor:`#979797`,domainWidth:.5,gridWidth:.2,labelColor:`#979797`,tickColor:`#979797`,tickWidth:.2,titleColor:`#979797`},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0}}]),dark:fP([KK,{background:`#333`,view:{fill:`#333`,stroke:`#888`},title:{color:`#fff`},axis:{domainColor:`#fff`,gridColor:`#888`,tickColor:`#fff`,labelColor:`#fff`,titleColor:`#fff`},text:{color:`#fff`},rule:{color:`#fff`}}]),fivethirtyeight:fP([KK,{background:`#f0f0f0`,view:{fill:`#f0f0f0`},mark:{color:`#30a2da`},point:{filled:!0,shape:`circle`},axis:{domainColor:`#cbcbcb`,grid:!0,gridColor:`#cbcbcb`,gridWidth:1,labelColor:`#999`,labelFontSize:10,titleColor:`#333`,tickColor:`#cbcbcb`,tickSize:10,titleFontSize:14,titlePadding:10,labelPadding:4},axisNominal:{grid:!1},axisOrdinal:{grid:!1},title:{anchor:`start`,fontSize:24,fontWeight:600,offset:20}}]),urbaninstitute:fP([KK,{background:`#FFFFFF`,view:{fill:`#FFFFFF`,stroke:`#000000`,strokeOpacity:0},mark:{color:`#1696d2`},point:{filled:!0},text:{font:`Lato`,color:`#1696d2`,size:11,align:`center`,fontWeight:400},title:{anchor:`start`,fontSize:18,font:`Lato`},axisX:{domain:!0,domainColor:`#000000`,domainWidth:1,grid:!1,labelFontSize:12,labelFont:`Lato`,labelAngle:0,tickColor:`#000000`,tickSize:5,titleFontSize:12,titlePadding:10,titleFont:`Lato`},axisY:{domain:!1,domainWidth:1,grid:!0,gridColor:`#DEDDDD`,gridWidth:1,labelFontSize:12,labelFont:`Lato`,labelPadding:8,ticks:!1,titleFontSize:12,titlePadding:10,titleFont:`Lato`}}])},JK=Object.keys(qK);function YK(e){let t={...qK[e]};return delete t.background,t}function XK(e){if(!e)return[];let t=Array.isArray(e)?e:[e],n=t.filter(e=>!(e in qK));if(n.length>0)throw Error(`Unknown theme "`+n[0]+`". Available themes: `+JK.join(`, `));return t}var ZK=`genomespy`;function QK(e){return qK[e].background}function $K(e){let t=XK(e);if(t.length!=0)return fP(t.map(e=>YK(e)))}var eq=class{#e=[];#t;#n;#r;#i;#a;#o;#s=new LT;#c=new RT;#l=new RT;constructor(e,t,n={}){this.container=e,this.options=n,n.inputBindingContainer??=`default`,this.spec=t,this.viewFactory=new pK,this.namedDataProviders=[],this.animator=new NH(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=e=>e.isVisibleInSpec(),this.tooltipHandlers={default:SU,refseqgene:KH,...n.tooltipHandlers??{}},this.viewRoot=void 0,this.#i=new BT(e,n),this.dpr=window.devicePixelRatio}get#u(){return this.container.querySelector(`.canvas-wrapper`)}#d(){this.#i.initialize(this.viewRoot)}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(let t of this.namedDataProviders){let n=t(e);if(n)return n}}updateNamedData(e,t){let n=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!n)throw Error(`No such named data source: `+e);n.dataSource.updateDynamicData(t),this.animator.requestRender()}getParam(e){return FK(this.viewRoot,e)}addEventListener(e,t){this.#c.add(e,t)}removeEventListener(e,t){this.#c.remove(e,t)}broadcast(e,t){let n={type:e,payload:t};this.viewRoot.visit(e=>e.handleBroadcast(n)),this.#l.emit(e,n)}#f(){this.dpr=this.#o.getDevicePixelRatio();let e=this.viewRoot.paramRuntime.allocateSetter(`devicePixelRatio`,this.dpr),t=()=>{this.#o.invalidateSize(),this.dpr=this.#o.getDevicePixelRatio(),e(this.dpr),this.computeLayout(),this.renderAll()};if(this.viewRoot.getSize().isGrowing()){let e=new ResizeObserver(t);e.observe(this.container),this.#e.push(()=>e.disconnect())}let n=null,r=()=>{n!=null&&(n(),t());let e=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);e.addEventListener(`change`,r),n=()=>{e.removeEventListener(`change`,r)}};r(),n&&this.#e.push(n)}#p(){let{canvasWrapper:e,loadingIndicatorsElement:t,tooltip:n}=wT(this.container);this.#o=new VM(e,()=>this.viewRoot?YB(this.viewRoot):{width:void 0,height:void 0},{powerPreference:this.options.powerPreference??`default`},()=>this.#t?.renderAll()),e.appendChild(t),this.tooltip=n,this.#r=new FT,this.#n=new PT(t,this.#r)}destroy(){let e=this.#u;for(this.container.classList.remove(`genome-spy`),e.classList.remove(`loading`),this.#s.removeAll(),this.#e.forEach(e=>e()),this.#o.finalize(),this.#i.remove(),this.#n.destroy();this.container.firstChild;)this.container.firstChild.remove()}async#m(){await this.#h();let e=this.#g();await this.#v(e),await OH(this.viewRoot,e.dataFlow,e.fontManager,e=>this.broadcast(`dataFlowBuilt`,e)),this.#b(e)}async#h(){this.genomeStore=new FH(this.spec.baseUrl);let{genomesByName:e,defaultAssembly:t,deprecationWarning:n}=zK(this.spec);this.genomeStore.configureGenomes(e,t),n&&console.warn(n)}#g(){let e=new aH;e.loadingStatusRegistry=this.#r;let t=uK({defaultConfig:MK,builtInTheme:$K(ZK),theme:fP([this.options.theme,$K(this.spec.theme)])});return jK({dataFlow:e,glHelper:this.#o,animator:this.animator,genomeStore:this.genomeStore,fontManager:new BH(this.#o),updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this.#a.getCurrentHover(),suspendHoverTracking:()=>this.#a?.suspendHoverTracking(),resumeHoverTracking:e=>this.#a?.resumeHoverTracking(e),addKeyboardListener:(e,t)=>{this.#s.add(e,n=>{this.#_(e,n)&&t(n)})},addBroadcastListener:(e,t)=>this.#l.add(e,t),removeBroadcastListener:(e,t)=>this.#l.remove(e,t),renderImmediately:this.renderAll.bind(this),isViewConfiguredVisible:this.viewVisibilityPredicate,isViewSpec:e=>this.viewFactory.isViewSpec(e),getBaseConfig:()=>t,createOrImportViewWithContext:(e,t,n,r,i,a,o)=>this.viewFactory.createOrImportView(t,e,n,r,i,a,o),highlightView:IT(this.container)})}#_(e,t){if(e===`keyup`)return!0;let n=document.activeElement;return n&&n!==document.body?this.container.contains(n):this.container.matches(`:hover`)}async#v(e){let t=this.spec;t.datasets&&this.registerNamedDataProvider(e=>t.datasets[e]),this.viewRoot=await e.createOrImportView(t,null,null,fK),ZU(this.viewRoot),await JU(this.viewRoot,this.genomeStore),this.#r.set(this.viewRoot,`loading`),this.#u.style.flexGrow=this.viewRoot.getSize().height.grow>0?`1`:`0`,this.#d(),NK(this.viewRoot),this.#y(),this.#o.invalidateSize();let n=this.spec.theme?Array.isArray(this.spec.theme)?this.spec.theme:[this.spec.theme]:[];this.#t=new AK({viewRoot:this.viewRoot,glHelper:this.#o,getBackground:()=>{if(this.spec.background!==void 0)return this.spec.background;let e;for(let t of n){let n=QK(t);n!==void 0&&(e=n)}return e},broadcast:this.broadcast.bind(this),onLayoutComputed:()=>this.#n.updateLayout()}),e.requestLayoutReflow=this.computeLayout.bind(this),this.#f()}#y(){let e=PU(this.viewRoot);if(e.length)for(let t of e)console.warn(`Selector constraints warning:`,t.message)}#b(e){e.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(e=>nP(e,`size`)),this.#o.invalidateSize(),this.#a=new wK({viewRoot:this.viewRoot,glHelper:this.#o,tooltip:this.tooltip,animator:this.animator,emitEvent:this.#c.emit.bind(this.#c),tooltipHandlers:this.tooltipHandlers,renderPickingFramebuffer:this.renderPickingFramebuffer.bind(this),getDevicePixelRatio:()=>this.dpr})}async launch(){let e=!1;try{return this.#p(),await this.#m(),this.#e.push(this.#a.registerInteractionEvents()),this.computeLayout(),this.animator.requestRender(),e=!0,!0}catch(e){let t=`${e.view?`At "${e.view.getPathString()}": `:``}${e.toString()}`;return console.error(e.stack),this.options.onError?.(e,this.container)||TT(this.container,t),this.viewRoot&&this.#r.set(this.viewRoot,`error`,t),!1}finally{this.#u.classList.remove(`loading`),e&&this.viewRoot&&this.#r.set(this.viewRoot,`complete`)}}async initializeVisibleViewData(){this.viewRoot&&(await kH(this.viewRoot,this.viewRoot.context.dataFlow,this.viewRoot.context.fontManager),this.viewRoot._invalidateCacheByPrefix(`size`,`progeny`),this.#o.invalidateSize(),this.computeLayout(),this.animator.requestRender())}async awaitVisibleLazyData(e){this.viewRoot&&await UK(this.viewRoot.context,this.viewRoot,void 0,e,e=>e.isConfiguredVisible()&&tq(e))}updateTooltip(e,t){this.#a.updateTooltip(e,t)}exportCanvas(e,t,n,r=`white`){let i=PK({glHelper:this.#o,viewRoot:this.viewRoot,logicalWidth:e,logicalHeight:t,devicePixelRatio:n,clearColor:r});return this.computeLayout(),this.renderAll(),i}getLogicalCanvasSize(){return this.#o.getLogicalCanvasSize()}getRenderedBounds(){let e={width:void 0,height:void 0};return this.viewRoot.visit(t=>{for(let n of t.facetCoords.values())e.width=Math.max(e.width??0,n.x2),e.height=Math.max(e.height??0,n.y2)}),e}computeLayout(){this.#t.computeLayout(),this.#o.invalidateSize()}renderAll(){this.#t.renderAll()}renderPickingFramebuffer(){this.#t.renderPickingFramebuffer()}getSearchableViews(){let e=[];return this.viewRoot.visit(t=>{t instanceof VB&&t.getSearchAccessors().length>0&&e.push(t)}),e}getNamedScaleResolutions(){let e=new Map;return this.viewRoot.visit(t=>{for(let n of Object.values(t.resolutions.scale))n.name&&e.set(n.name,n)}),e}};function tq(e){let t=e;for(;t;){let e=t.flowHandle?.dataSource;if(e)return e instanceof xg;t=t.dataParent}return!1}var nq=`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`,rq=`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`,iq=[[`/docs/examples/`,`/docs/examples/`],[`/examples/core/`,`/examples/`],[`/examples/docs/`,`/examples/`],[`/examples/app/`,`/examples/`]],aq=/^(?:[a-z]+:)?\/\//i,oq=`https://example.invalid`;function sq(e){return aq.test(e)?`external`:e.startsWith(`/`)?`root`:`relative`}function cq(e){let t=new URL(e,oq),n=iq.find(([e])=>t.pathname.startsWith(e));if(n)return uq(n[1],t,sq(e))}function lq(e){let t=cq(e);if(t)return t;let n=new URL(e,oq);return uq(new URL(`./`,n).pathname,n,sq(e))}function uq(e,t,n){return n===`external`?t.origin+e:n===`root`?e:e.slice(1)}function dq(e){return async function(t,n,r={}){let i;if(P(t)){if(i=document.querySelector(t),!i)throw Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)i=t;else throw Error(`Invalid element: ${t}`);let a;try{let t=Qe(n)?n:await pq(n);if(t.baseUrl??=``,t.width??=`container`,t.padding??=10,i==document.body){let e=document.createElement(`div`);e.style.position=`fixed`,e.style.inset=`0`,e.style.overflow=`hidden`,i.appendChild(e),i=e}a=new e(i,t,r),fq(a,r),await a.launch()}catch(e){i.innerText=e.toString(),console.error(e)}return{finalize(){for(a.destroy();i.firstChild;)i.firstChild.remove()},addEventListener(e,t){a.addEventListener(e,t)},removeEventListener(e,t){a.removeEventListener(e,t)},getScaleResolutionByName(e){return a.getNamedScaleResolutions().get(e)},getParam:a.getParam.bind(a),awaitVisibleLazyData:a.awaitVisibleLazyData.bind(a),getRenderedBounds:a.getRenderedBounds.bind(a),updateNamedData:a.updateNamedData.bind(a),getLogicalCanvasSize:a.getLogicalCanvasSize.bind(a),exportCanvas:a.exportCanvas.bind(a)}}}function fq(e,t){t.namedDataProvider&&e.registerNamedDataProvider(t.namedDataProvider)}async function pq(e){let t;try{t=await WB(e)}catch(t){throw Error(`Could not load or parse configuration: ${e}, reason: ${t.message}`,{cause:t})}return t.baseUrl||=lq(e),t}function mq(e){return{type:`interval`,intervals:{...e}}}var hq=dq(eq);e.GenomeSpy=eq,e.embed=hq,e.favIcon=rq,e.html=D,e.icon=nq,e.intervalSelection=mq,e.loadSpec=pq});
|