@genome-spy/core 0.76.0 → 0.77.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/LICENSE +21 -0
- package/dist/bundle/browser-KWU9rWZT.js +123 -0
- package/dist/bundle/{esm-BimDEpBb.js → esm-0dYHNV_D.js} +1 -1
- package/dist/bundle/{esm-CngqBe45.js → esm-CRMf_I9V.js} +1 -1
- package/dist/bundle/esm-CT3ygiMq.js +1084 -0
- package/dist/bundle/{esm-D_euN86T.js → esm-CscjKVDc.js} +1 -1
- package/dist/bundle/index.es.js +2708 -2601
- package/dist/bundle/index.js +91 -83
- package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/bigWigSource.js +31 -11
- package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts +19 -3
- package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +34 -13
- package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
- package/dist/src/data/transforms/filterScoredLabels.js +3 -2
- package/dist/src/embedFactory.d.ts.map +1 -1
- package/dist/src/embedFactory.js +2 -0
- package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -1
- package/dist/src/genomeSpy/viewContextFactory.js +1 -0
- package/dist/src/genomeSpyBase.d.ts +6 -0
- package/dist/src/genomeSpyBase.d.ts.map +1 -1
- package/dist/src/genomeSpyBase.js +11 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +2 -2
- package/dist/src/marks/mark.d.ts.map +1 -1
- package/dist/src/marks/mark.js +0 -6
- package/dist/src/marks/rect.vertex.glsl.js +1 -1
- package/dist/src/minimal.d.ts +1 -0
- package/dist/src/minimal.d.ts.map +1 -1
- package/dist/src/minimal.js +1 -0
- package/dist/src/paramRuntime/embedParamApi.d.ts +26 -0
- package/dist/src/paramRuntime/embedParamApi.d.ts.map +1 -0
- package/dist/src/paramRuntime/embedParamApi.js +133 -0
- package/dist/src/scales/scaleInteractionController.d.ts +8 -4
- package/dist/src/scales/scaleInteractionController.d.ts.map +1 -1
- package/dist/src/scales/scaleInteractionController.js +55 -7
- package/dist/src/scales/scaleResolution.d.ts +3 -3
- package/dist/src/scales/scaleResolution.d.ts.map +1 -1
- package/dist/src/scales/scaleResolution.js +5 -4
- package/dist/src/selection/index.d.ts +8 -0
- package/dist/src/selection/index.d.ts.map +1 -0
- package/dist/src/selection/index.js +12 -0
- package/dist/src/styles/genome-spy.css +8 -0
- 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 +8 -0
- package/dist/src/types/embedApi.d.ts +54 -0
- package/dist/src/types/scaleResolutionApi.d.ts +28 -1
- package/dist/src/types/viewContext.d.ts +11 -0
- package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
- package/dist/src/utils/ui/tooltip.js +22 -0
- package/package.json +3 -3
- package/dist/bundle/browser-BTgw5ieH.js +0 -126
- package/dist/bundle/esm-Bvlm1uVk.js +0 -1015
package/dist/bundle/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
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 D=globalThis,ee=e=>e,te=D.trustedTypes,ne=te?te.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,re=`$lit$`,ie=`lit$${Math.random().toFixed(9).slice(2)}$`,ae=`?`+ie,oe=`<${ae}>`,se=document,ce=()=>se.createComment(``),le=e=>e===null||typeof e!=`object`&&typeof e!=`function`,ue=Array.isArray,de=e=>ue(e)||typeof e?.[Symbol.iterator]==`function`,fe=`[
|
|
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__`]),k=Array.isArray;function Ze(e){return e===Object(e)}function Qe(e){return e[e.length-1]}function $e(e){return e==null||e===``?null:+e}var A=e=>t=>e*Math.exp(t),et=e=>t=>Math.log(e*t),tt=e=>t=>Math.sign(t)*Math.log1p(Math.abs(t/e)),nt=e=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*e,rt=e=>t=>t<0?-((-t)**+e):t**+e;function j(e,t,n,r){let i=n(e[0]),a=n(Qe(e)),o=(a-i)*t;return[r(i-o),r(a-o)]}function it(e,t){return j(e,t,$e,Ye)}function at(e,t){var n=Math.sign(e[0]);return j(e,t,et(n),A(n))}function M(e,t,n){return j(e,t,rt(n),rt(1/n))}function ot(e,t,n,r,i){let a=r(e[0]),o=r(Qe(e)),s=t==null?(a+o)/2:r(t);return[i(s+(a-s)*n),i(s+(o-s)*n)]}function st(e,t,n){return ot(e,t,n,$e,Ye)}function ct(e,t,n){let r=Math.sign(e[0]);return ot(e,t,n,et(r),A(r))}function lt(e,t,n,r){return ot(e,t,n,rt(r),rt(1/r))}function ut(e,t,n,r){return ot(e,t,n,tt(r),nt(r))}function N(e){return e==null?[]:k(e)?e:[e]}function dt(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 ft(e){return typeof e==`function`}var pt=`descending`;function mt(e,t,n){n||={},t=N(t)||[];let r=[],i=[],a={},o=n.comparator||gt;return N(e).forEach((e,o)=>{e!=null&&(r.push(t[o]===pt?-1:1),i.push(e=ft(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 ht=(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,gt=(e,t)=>e.length===1?_t(e[0],t[0]):vt(e,t,e.length),_t=(e,t)=>function(n,r){return ht(e(n),e(r))*t},vt=(e,t,n)=>(t.push(0),function(r,i){let a,o=0,s=-1;for(;o===0&&++s<n;)a=e[s],o=ht(a(r),a(i));return o*t[s]});function yt(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 bt(e,t){return Object.hasOwn(e,t)}function xt(e){return typeof e==`boolean`}function St(e){return Object.prototype.toString.call(e)===`[object Date]`}function Ct(e){return e&&ft(e[Symbol.iterator])}function P(e){return typeof e==`number`}function wt(e){return Object.prototype.toString.call(e)===`[object RegExp]`}function F(e){return typeof e==`string`}function I(e,t){let n=e[0],r=Qe(e),i=+t;return i?i===1?r:n+i*(r-n):n}function Tt(e){return e&&Qe(e)-e[0]||0}function Et(e){return k(e)?`[${e.map(e=>e===null?`null`:Et(e))}]`:Ze(e)||F(e)?JSON.stringify(e).replaceAll(`\u2028`,`\\u2028`).replaceAll(`\u2029`,`\\u2029`):e}function Dt(e){return e==null||e===``?null:!e||e===`false`||e===`0`?!1:!!e}var Ot=e=>P(e)||St(e)?e:Date.parse(e);function kt(e,t){return t||=Ot,e==null||e===``?null:t(e)}function At(e){return e==null||e===``?null:e+``}function jt(e){let t={},n=e.length;for(let r=0;r<n;++r)t[e[r]]=!0;return t}var Mt={},Nt={},Pt=34,Ft=10,It=13;function Lt(e){return Function(`d`,`return {`+e.map(function(e,t){return JSON.stringify(e)+`: d[`+t+`] || ""`}).join(`,`)+`}`)}function Rt(e,t){var n=Lt(e);return function(r,i){return t(n(r),i,e)}}function zt(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 Bt(e,t){var n=e+``,r=n.length;return r<t?Array(t-r+1).join(0)+n:n}function Vt(e){return e<0?`-`+Bt(-e,6):e>9999?`+`+Bt(e,6):Bt(e,4)}function Ht(e){var t=e.getUTCHours(),n=e.getUTCMinutes(),r=e.getUTCSeconds(),i=e.getUTCMilliseconds();return isNaN(e)?`Invalid Date`:Vt(e.getUTCFullYear(),4)+`-`+Bt(e.getUTCMonth()+1,2)+`-`+Bt(e.getUTCDate(),2)+(i?`T`+Bt(t,2)+`:`+Bt(n,2)+`:`+Bt(r,2)+`.`+Bt(i,3)+`Z`:r?`T`+Bt(t,2)+`:`+Bt(n,2)+`:`+Bt(r,2)+`Z`:n||t?`T`+Bt(t,2)+`:`+Bt(n,2)+`Z`:``)}function Ut(e){var t=RegExp(`["`+e+`
|
|
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?
|
|
4
|
-
`)}function s(e,t){return t??=
|
|
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+`
|
|
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
|
+
`)}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?Ht(e):t.test(e+=``)?`"`+e.replace(/"/g,`""`)+`"`:e}return{parse:r,parseRows:i,format:o,formatBody:s,formatRows:c,formatRow:l,formatValue:u}}var Wt=Ut(` `);Wt.parse;var Gt=Wt.parseRows;Wt.format,Wt.formatBody,Wt.formatRows,Wt.formatRow,Wt.formatValue;function Kt(e){return e}function qt(e){if(e==null)return Kt;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 Jt(e,t){for(var n,r=e.length,i=r-t;i<--r;)n=e[i],e[i++]=e[r],e[r]=n}function Yt(e,t){return typeof t==`string`&&(t=e.objects[t]),t.type===`GeometryCollection`?{type:`FeatureCollection`,features:t.geometries.map(function(t){return Xt(e,t)})}:Xt(e,t)}function Xt(e,t){var n=t.id,r=t.bbox,i=t.properties==null?{}:t.properties,a=Zt(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 Zt(e,t){var n=qt(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&&Jt(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 Qt(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 $t(e){return Zt(e,en.apply(this,arguments))}function en(e,t,n){var r,i,a;if(arguments.length>1)r=tn(e,t,n);else for(i=0,r=Array(a=e.arcs.length);i<a;++i)r[i]=i;return{type:`MultiLineString`,arcs:Qt(e,r)}}function tn(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 nn(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function rn(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function an(e){let t,n,r;e.length===2?(t=e===nn||e===rn?e:on,n=e,r=e):(t=nn,n=(t,n)=>nn(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 on(){return 0}function sn(e){return e===null?NaN:+e}function*cn(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 ln=an(nn),un=ln.right;ln.left,an(sn).center;function dn(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 fn(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 pn(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 mn=class extends Map{constructor(e,t=vn){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(hn(this,e))}has(e){return super.has(hn(this,e))}set(e,t){return super.set(gn(this,e),t)}delete(e){return super.delete(_n(this,e))}};function hn({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function gn({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function _n({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function vn(e){return typeof e==`object`&&e?e.valueOf():e}function yn(e){return e}function bn(e,...t){return Sn(e,yn,yn,t)}function xn(e,...t){return Sn(e,Array.from,yn,t)}function Sn(e,t,n,r){return(function e(i,a){if(a>=r.length)return n(i);let o=new mn,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 Cn(e=nn){if(e===nn)return wn;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 wn(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}var Tn=Math.sqrt(50),En=Math.sqrt(10),Dn=Math.sqrt(2);function On(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=Tn?10:a>=En?5:a>=Dn?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?On(e,t,n*2):[s,c,l]}function kn(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?On(t,e,n):On(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 An(e,t,n){return t=+t,e=+e,n=+n,On(e,t,n)[2]}function jn(e,t,n){t=+t,e=+e,n=+n;let r=t<e,i=r?An(t,e,n):An(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}function Mn(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 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,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?wn:Cn(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));Pn(e,t,u,d,i)}let a=e[t],o=n,s=r;for(Fn(e,n,t),i(e[r],a)>0&&Fn(e,n,r);o<s;){for(Fn(e,o,s),++o,--s;i(e[o],a)<0;)++o;for(;i(e[s],a)>0;)--s}i(e[n],a)===0?Fn(e,n,s):(++s,Fn(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function Fn(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function In(e,t,n){if(e=Float64Array.from(cn(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return Nn(e);if(t>=1)return Mn(e);var r,i=(r-1)*t,a=Math.floor(i),o=Mn(Pn(e,a).subarray(0,a+1));return o+(Nn(e.subarray(a+1))-o)*(i-a)}}function Ln(e,t,n=sn){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 Rn(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 zn(e,t){return In(e,.5,t)}function Bn(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 Vn(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 Hn(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function Un(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 Wn(e){return e=Un(Math.abs(e)),e?e[1]:NaN}function Gn(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 Kn(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var qn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Jn(e){if(!(t=qn.exec(e)))throw Error(`invalid format: `+e);var t;return new Yn({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]})}Jn.prototype=Yn.prototype;function Yn(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+``}Yn.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 Xn(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 Zn;function Qn(e,t){var n=Un(e,t);if(!n)return Zn=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(Zn=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`)+Un(e,Math.max(0,t+a-1))[0]}function $n(e,t){var n=Un(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 er={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:Hn,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)=>$n(e*100,t),r:$n,s:Qn,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function tr(e){return e}var nr=Array.prototype.map,rr=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function ir(e){var t=e.grouping===void 0||e.thousands===void 0?tr:Gn(nr.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?tr:Kn(nr.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=Jn(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`):er[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=er[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=Xn(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&Zn!==void 0?rr[8+Zn/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(Wn(t)/3)))*3,r=10**-n,i=l((e=Jn(e),e.type=`f`,e),{suffix:rr[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var ar,or,sr;cr({thousands:`,`,grouping:[3],currency:[`$`,``]});function cr(e){return ar=ir(e),or=ar.format,sr=ar.formatPrefix,ar}function lr(e){return Math.max(0,-Wn(Math.abs(e)))}function ur(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Wn(t)/3)))*3-Wn(Math.abs(e)))}function dr(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Wn(t)-Wn(e))+1}var fr=new Date,pr=new Date;function mr(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=>mr(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)=>(fr.setTime(+t),pr.setTime(+r),e(fr),e(pr),Math.floor(n(fr,pr))),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 hr=mr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);hr.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?mr(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):hr),hr.range;var gr=1e3,_r=gr*60,vr=_r*60,yr=vr*24,br=yr*7,xr=yr*30,Sr=yr*365,Cr=mr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*gr)},(e,t)=>(t-e)/gr,e=>e.getUTCSeconds());Cr.range;var wr=mr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*gr)},(e,t)=>{e.setTime(+e+t*_r)},(e,t)=>(t-e)/_r,e=>e.getMinutes());wr.range;var Tr=mr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*_r)},(e,t)=>(t-e)/_r,e=>e.getUTCMinutes());Tr.range;var Er=mr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*gr-e.getMinutes()*_r)},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getHours());Er.range;var Dr=mr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getUTCHours());Dr.range;var Or=mr(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*_r)/yr,e=>e.getDate()-1);Or.range;var kr=mr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/yr,e=>e.getUTCDate()-1);kr.range;var Ar=mr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/yr,e=>Math.floor(e/yr));Ar.range;function jr(e){return mr(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())*_r)/br)}var Mr=jr(0),Nr=jr(1),Pr=jr(2),Fr=jr(3),Ir=jr(4),Lr=jr(5),Rr=jr(6);Mr.range,Nr.range,Pr.range,Fr.range,Ir.range,Lr.range,Rr.range;function zr(e){return mr(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)/br)}var Br=zr(0),Vr=zr(1),Hr=zr(2),Ur=zr(3),Wr=zr(4),Gr=zr(5),Kr=zr(6);Br.range,Vr.range,Hr.range,Ur.range,Wr.range,Gr.range,Kr.range;var qr=mr(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());qr.range;var Jr=mr(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());Jr.range;var Yr=mr(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());Yr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:mr(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)}),Yr.range;var Xr=mr(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());Xr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:mr(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)}),Xr.range;function Zr(e,t,n,r,i,a){let o=[[Cr,1,gr],[Cr,5,5*gr],[Cr,15,15*gr],[Cr,30,30*gr],[a,1,_r],[a,5,5*_r],[a,15,15*_r],[a,30,30*_r],[i,1,vr],[i,3,3*vr],[i,6,6*vr],[i,12,12*vr],[r,1,yr],[r,2,2*yr],[n,1,br],[t,1,xr],[t,3,3*xr],[e,1,Sr]];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=an(([,,e])=>e).right(o,i);if(a===o.length)return e.every(jn(t/Sr,n/Sr,r));if(a===0)return hr.every(Math.max(jn(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[Qr,$r]=Zr(Xr,Jr,Br,Ar,Dr,Tr),[ei,ti]=Zr(Yr,qr,Mr,Or,Er,wr),ni=`year`,ri=`quarter`,ii=`month`,ai=`week`,oi=`date`,si=`dayofyear`,ci=`hours`,li=`minutes`,ui=`seconds`,di=`milliseconds`;[ni,ri,ii,ai,oi,`day`,si,ci,li,ui,di].reduce((e,t,n)=>(e[t]=1+n,e),{}),`${ni}${ii}`,`${ni}${ii}${oi}`,`${ci}${li}`,ai+``,ai+``;var fi={[ni]:Yr,[ri]:qr.every(3),[ii]:qr,[ai]:Mr,[oi]:Or,day:Or,[si]:Or,[ci]:Er,[li]:wr,[ui]:Cr,[di]:hr},pi={[ni]:Xr,[ri]:Jr.every(3),[ii]:Jr,[ai]:Br,[oi]:kr,day:kr,[si]:kr,[ci]:Dr,[li]:Tr,[ui]:Cr,[di]:hr};function mi(e){return fi[e]}function hi(e){return pi[e]}var gi=1e3,_i=gi*60,vi=_i*60,yi=vi*24;yi*7;var bi=yi*30;yi*365,[ni,ii,oi,ci,li,ui,di].slice(0,-1).slice(0,-1).slice(0,-1).slice(0,-1),5*gi,15*gi,30*gi,5*_i,15*_i,30*_i,3*vi,6*vi,12*vi,3*bi;function xi(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 Si(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 Ci(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function wi(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=Ai(i),u=ji(i),d=Ai(a),f=ji(a),p=Ai(o),m=ji(o),h=Ai(s),g=ji(s),_=Ai(c),v=ji(c),y={a:ae,A:oe,b:se,B:ce,c:null,d:Qi,e:Qi,f:ra,g:ma,G:ga,H:$i,I:ea,j:ta,L:na,m:ia,M:aa,p:le,q:ue,Q:za,s:Ba,S:oa,u:sa,U:ca,V:ua,w:da,W:fa,x:null,X:null,y:pa,Y:ha,Z:_a,"%":Ra},b={a:de,A:fe,b:pe,B:me,c:null,d:va,e:va,f:Ca,g:Pa,G:Ia,H:ya,I:ba,j:xa,L:Sa,m:wa,M:Ta,p:he,q:ge,Q:za,s:Ba,S:Ea,u:Da,U:Oa,V:Aa,w:ja,W:Ma,x:null,X:null,y:Na,Y:Fa,Z:La,"%":Ra},x={a:E,A:D,b:ee,B:te,c:ne,d:Hi,e:Hi,f:Ji,g:Ri,G:Li,H:Wi,I:Wi,j:Ui,L:qi,m:Vi,M:Gi,p:T,q:Bi,Q:Xi,s:Zi,S:Ki,u:Ni,U:Pi,V:Fi,w:Mi,W:Ii,x:re,X:ie,y:Ri,Y:Li,Z:zi,"%":Yi};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=Ti[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=Ci(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=Si(Ci(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?Vr.ceil(a):Vr(a),a=kr.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=xi(Ci(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Nr.ceil(a):Nr(a),a=Or.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?Si(Ci(r.y,0,1)).getUTCDay():xi(Ci(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,Si(r)):xi(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 Ti?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 Ti={"-":``,_:` `,0:`0`},Ei=/^\s*\d+/,Di=/^%/,Oi=/[\\^$*+?|[\]().{}]/g;function L(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 ki(e){return e.replace(Oi,`\\$&`)}function Ai(e){return RegExp(`^(?:`+e.map(ki).join(`|`)+`)`,`i`)}function ji(e){return new Map(e.map((e,t)=>[e.toLowerCase(),t]))}function Mi(e,t,n){var r=Ei.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Ni(e,t,n){var r=Ei.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Pi(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Fi(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Ii(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function Li(e,t,n){var r=Ei.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Ri(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function zi(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 Bi(e,t,n){var r=Ei.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Vi(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Hi(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Ui(e,t,n){var r=Ei.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Wi(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Gi(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function Ki(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function qi(e,t,n){var r=Ei.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Ji(e,t,n){var r=Ei.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Yi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Xi(e,t,n){var r=Ei.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Zi(e,t,n){var r=Ei.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function Qi(e,t){return L(e.getDate(),t,2)}function $i(e,t){return L(e.getHours(),t,2)}function ea(e,t){return L(e.getHours()%12||12,t,2)}function ta(e,t){return L(1+Or.count(Yr(e),e),t,3)}function na(e,t){return L(e.getMilliseconds(),t,3)}function ra(e,t){return na(e,t)+`000`}function ia(e,t){return L(e.getMonth()+1,t,2)}function aa(e,t){return L(e.getMinutes(),t,2)}function oa(e,t){return L(e.getSeconds(),t,2)}function sa(e){var t=e.getDay();return t===0?7:t}function ca(e,t){return L(Mr.count(Yr(e)-1,e),t,2)}function la(e){var t=e.getDay();return t>=4||t===0?Ir(e):Ir.ceil(e)}function ua(e,t){return e=la(e),L(Ir.count(Yr(e),e)+(Yr(e).getDay()===4),t,2)}function da(e){return e.getDay()}function fa(e,t){return L(Nr.count(Yr(e)-1,e),t,2)}function pa(e,t){return L(e.getFullYear()%100,t,2)}function ma(e,t){return e=la(e),L(e.getFullYear()%100,t,2)}function ha(e,t){return L(e.getFullYear()%1e4,t,4)}function ga(e,t){var n=e.getDay();return e=n>=4||n===0?Ir(e):Ir.ceil(e),L(e.getFullYear()%1e4,t,4)}function _a(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+L(t/60|0,`0`,2)+L(t%60,`0`,2)}function va(e,t){return L(e.getUTCDate(),t,2)}function ya(e,t){return L(e.getUTCHours(),t,2)}function ba(e,t){return L(e.getUTCHours()%12||12,t,2)}function xa(e,t){return L(1+kr.count(Xr(e),e),t,3)}function Sa(e,t){return L(e.getUTCMilliseconds(),t,3)}function Ca(e,t){return Sa(e,t)+`000`}function wa(e,t){return L(e.getUTCMonth()+1,t,2)}function Ta(e,t){return L(e.getUTCMinutes(),t,2)}function Ea(e,t){return L(e.getUTCSeconds(),t,2)}function Da(e){var t=e.getUTCDay();return t===0?7:t}function Oa(e,t){return L(Br.count(Xr(e)-1,e),t,2)}function ka(e){var t=e.getUTCDay();return t>=4||t===0?Wr(e):Wr.ceil(e)}function Aa(e,t){return e=ka(e),L(Wr.count(Xr(e),e)+(Xr(e).getUTCDay()===4),t,2)}function ja(e){return e.getUTCDay()}function Ma(e,t){return L(Vr.count(Xr(e)-1,e),t,2)}function Na(e,t){return L(e.getUTCFullYear()%100,t,2)}function Pa(e,t){return e=ka(e),L(e.getUTCFullYear()%100,t,2)}function Fa(e,t){return L(e.getUTCFullYear()%1e4,t,4)}function Ia(e,t){var n=e.getUTCDay();return e=n>=4||n===0?Wr(e):Wr.ceil(e),L(e.getUTCFullYear()%1e4,t,4)}function La(){return`+0000`}function Ra(){return`%`}function za(e){return+e}function Ba(e){return Math.floor(e/1e3)}var Va,Ha,Ua,Wa,Ga;Ka({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 Ka(e){return Va=wi(e),Ha=Va.format,Ua=Va.parse,Wa=Va.utcFormat,Ga=Va.utcParse,Va}function qa(e){let t={};return n=>t[n]||(t[n]=e(n))}function Ja(e,t){return n=>{let r=e(n),i=r.indexOf(t);if(i<0)return r;let a=Ya(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 Ya(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 Xa(e){let t=qa(e.format),n=e.formatPrefix;return{format:t,formatPrefix:n,formatFloat(e){let n=Jn(e||`,`);if(n.precision==null){switch(n.precision=12,n.type){case`%`:n.precision-=2;break;case`e`:--n.precision;break}return Ja(t(n),t(`.1f`)(1)[1])}else return t(n)},formatSpan(e,r,i,a){a=Jn(a??`,f`);let o=jn(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=ur(o,s))||(a.precision=c),n(a,s);case``:case`e`:case`g`:case`p`:case`r`:isNaN(c=dr(o,s))||(a.precision=c-(a.type===`e`));break;case`f`:case`%`:isNaN(c=lr(o))||(a.precision=c-(a.type===`%`)*2);break}return t(a)}}}Za();function Za(){return Xa({format:or,formatPrefix:sr})}function Qa(e,t,n){n||={},Ze(n)||Ke(`Invalid time multi-format specifier: ${n}`);let r=t(ui),i=t(li),a=t(ci),o=t(oi),s=t(ai),c=t(ii),l=t(ri),u=t(ni),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 $a(e){let t=qa(e.format),n=qa(e.utcFormat);return{timeFormat:e=>F(e)?t(e):Qa(t,mi,e),utcFormat:e=>F(e)?n(e):Qa(n,hi,e),timeParse:qa(e.parse),utcParse:qa(e.utcParse)}}var eo;to();function to(){return eo=$a({format:Ha,parse:Ua,utcFormat:Wa,utcParse:Ga})}function no(e){return $a(wi(e))}function ro(e){return arguments.length?eo=no(e):eo}var io=e=>e!=null&&e===e,ao=e=>e===`true`||e===`false`||e===!0||e===!1,oo=e=>!Number.isNaN(Date.parse(e)),so=e=>!Number.isNaN(+e)&&!(e instanceof Date),co=e=>so(e)&&Number.isInteger(+e),lo={boolean:Dt,integer:$e,number:$e,date:kt,string:At,unknown:Ye},uo=[ao,co,so,oo],fo=[`boolean`,`integer`,`number`,`date`];function po(e,t){if(!e||!e.length)return`unknown`;let n=e.length,r=uo.length,i=uo.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]&&io(c)&&!uo[s](c)&&(i[s]=0,++o,o===uo.length))return`string`;return fo[i.reduce((e,t)=>e===0?t:e,0)-1]}function mo(e,t){return t.reduce((t,n)=>(t[n]=po(e,n),t),{})}function ho(e){let t=function(t,n){let r={delimiter:e};return go(t,n?yt(n,r):r)};return t.responseType=`text`,t}function go(e,t){return t.header&&(e=t.header.map(Et).join(t.delimiter)+`
|
|
7
|
-
`+e),Ut(t.delimiter).parse(e+``)}go.responseType=`text`;function _o(e){return typeof Buffer==`function`&&ft(Buffer.isBuffer)?Buffer.isBuffer(e):!1}function vo(e,t){let n=t&&t.property?Je(t.property):Ye;return Ze(e)&&!_o(e)?yo(n(e),t):n(JSON.parse(e))}vo.responseType=`json`;function yo(e,t){return!k(e)&&Ct(e)&&(e=[...e]),t&&t.copy?JSON.parse(JSON.stringify(e)):e}var bo={interior:(e,t)=>e!==t,exterior:(e,t)=>e===t};function xo(e,t){let n,r,i,a;return e=vo(e,t),t&&t.feature?(n=Yt,i=t.feature):t&&t.mesh?(n=$t,i=t.mesh,a=bo[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]}xo.responseType=`json`;var So={dsv:go,csv:ho(`,`),tsv:ho(` `),json:vo,topojson:xo};function Co(e,t){return arguments.length>1?(So[e]=t,this):bt(So,e)?So[e]:null}function wo(e,t,n,r){t||={};let i=Co(t.type||`json`);return i||Ke(`Unknown data format type: `+t.type),e=i(e,t),t.parse&&To(e,t.parse,n,r),bt(e,`columns`)&&delete e.columns,e}function To(e,t,n,r){if(!e.length)return;let i=ro();n||=i.timeParse,r||=i.utcParse;let a=e.columns||Object.keys(e[0]),o,s,c,l,u,d;t===`auto`&&(t=mo(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(!lo[i])throw Error(`Illegal format pattern: `+e+`:`+i);return lo[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 Eo,Do,Oo,ko,Ao,jo,Mo,No=n((()=>{Eo=[`BOOLEAN`,`INT32`,`INT64`,`INT96`,`FLOAT`,`DOUBLE`,`BYTE_ARRAY`,`FIXED_LEN_BYTE_ARRAY`],Do=[`PLAIN`,`GROUP_VAR_INT`,`PLAIN_DICTIONARY`,`RLE`,`BIT_PACKED`,`DELTA_BINARY_PACKED`,`DELTA_LENGTH_BYTE_ARRAY`,`DELTA_BYTE_ARRAY`,`RLE_DICTIONARY`,`BYTE_STREAM_SPLIT`],Oo=[`REQUIRED`,`OPTIONAL`,`REPEATED`],ko=[`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`],Ao=[`UNCOMPRESSED`,`SNAPPY`,`GZIP`,`LZO`,`BROTLI`,`LZ4`,`ZSTD`,`LZ4_RAW`],jo=[`DATA_PAGE`,`INDEX_PAGE`,`DICTIONARY_PAGE`,`DATA_PAGE_V2`],Mo=[`SPHERICAL`,`VINCENTY`,`THOMAS`,`ANDOYER`,`KARNEY`]}));function Po(e){let t=Fo(e);if(t.type===1)return{type:`Point`,coordinates:Io(e,t)};if(t.type===2)return{type:`LineString`,coordinates:Lo(e,t)};if(t.type===3)return{type:`Polygon`,coordinates:Ro(e,t)};if(t.type===4){let n=[];for(let r=0;r<t.count;r++)n.push(Io(e,Fo(e)));return{type:`MultiPoint`,coordinates:n}}else if(t.type===5){let n=[];for(let r=0;r<t.count;r++)n.push(Lo(e,Fo(e)));return{type:`MultiLineString`,coordinates:n}}else if(t.type===6){let n=[];for(let r=0;r<t.count;r++)n.push(Ro(e,Fo(e)));return{type:`MultiPolygon`,coordinates:n}}else if(t.type===7){let n=[];for(let r=0;r<t.count;r++)n.push(Po(e));return{type:`GeometryCollection`,geometries:n}}else throw Error(`Unsupported geometry type: ${t.type}`)}function Fo(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 Io(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 Lo(e,t){let n=[];for(let r=0;r<t.count;r++)n.push(Io(e,t));return n}function Ro(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(Lo(e,{...t,count:i}))}return r}var zo=n((()=>{}));function Bo(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 Vo(e,r)}function Vo(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]=Ho(e[n])*t:r[n]=Number(e[n])*t;return r}if(!s&&o===`INT96`)return Array.from(e).map(e=>r.timestampFromNanoseconds(Uo(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(Go.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(Wo);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 Ho(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 Uo(e){let t=(e>>64n)-2440588n,n=e&18446744073709551615n;return t*86400000000000n+n}function Wo(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 Go,Ko,qo=n((()=>{zo(),Go=new TextDecoder,Ko={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&&Go.decode(e)},geometryFromBytes(e){return e&&Po({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})},geographyFromBytes(e){return e&&Po({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})}}}));function Jo(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=Jo(e,t+a,[...n,r.name]);a+=o.count,i.push(o)}return{count:a,element:r,children:i,path:n}}function Yo(e,t){let n=Jo(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 Xo(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 Zo(e){let t=0;for(let{element:n}of e)n.repetition_type===`REPEATED`&&t++;return t}function Qo(e){let t=0;for(let{element:n}of e.slice(1))n.repetition_type!==`REQUIRED`&&t++;return t}function $o(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 es(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 ts(e){if(e.length!==2)return!1;let[,t]=e;return!(t.element.repetition_type===`REPEATED`||t.children.length)}var ns=n((()=>{}));function rs(e){let t=0,n={};for(;e.offset<e.view.byteLength;){let[r,i,a]=ls(e,t);if(t=a,r===us.STOP)break;n[`field_${i}`]=is(e,r)}return n}function is(e,t){switch(t){case us.TRUE:return!0;case us.FALSE:return!1;case us.BYTE:return e.view.getInt8(e.offset++);case us.I16:case us.I32:return ss(e);case us.I64:return cs(e);case us.DOUBLE:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case us.BINARY:{let t=as(e),n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}case us.LIST:{let t=e.view.getUint8(e.offset++),n=t&15,r=t>>4;r===15&&(r=as(e));let i=n===us.TRUE||n===us.FALSE,a=Array(r);for(let t=0;t<r;t++)a[t]=i?is(e,us.BYTE)===1:is(e,n);return a}case us.STRUCT:{let t={},n=0;for(;;){let[r,i,a]=ls(e,n);if(n=a,r===us.STOP)break;t[`field_${i}`]=is(e,r)}return t}default:throw Error(`thrift unhandled type: ${t}`)}}function as(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 os(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 ss(e){let t=as(e);return t>>>1^-(t&1)}function cs(e){let t=os(e);return t>>1n^-(t&1n)}function ls(e,t){let n=e.view.getUint8(e.offset++),r=n&15;if(r===us.STOP)return[0,0,t];let i=n>>4,a=i?t+i:ss(e);return[r,a,a]}var us,ds=n((()=>{us={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 fs(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 ps=n((()=>{}));function ms(e){return e&&Cs.decode(e)}async function hs(e,{parsers:t,initialFetchSize:n=Ss,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),gs(c,{parsers:t,geoparquet:r})}else return gs(a,{parsers:t,geoparquet:r})}function gs(e,{parsers:t,geoparquet:n=!0}={}){if(!(e instanceof ArrayBuffer))throw Error(`parquet expected ArrayBuffer`);let r=new DataView(e);if(t={...Ko,...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=rs({view:r,offset:i-a}),s=o.field_1,c=o.field_2.map(e=>({type:Eo[e.field_1],type_length:e.field_2,repetition_type:Oo[e.field_3],name:ms(e.field_4),num_children:e.field_5,converted_type:ko[e.field_6],scale:e.field_7,precision:e.field_8,field_id:e.field_9,logical_type:vs(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:ms(e.field_1),file_offset:e.field_2,meta_data:e.field_3&&{type:Eo[e.field_3.field_1],encodings:e.field_3.field_2?.map(e=>Do[e]),path_in_schema:e.field_3.field_3.map(ms),codec:Ao[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:ms(e.field_1),value:ms(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:bs(e.field_3.field_12,l[n],t),encoding_stats:e.field_3.field_13?.map(e=>({page_type:jo[e.field_1],encoding:Do[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:ms(e.field_1),value:ms(e.field_2)})),p=ms(o.field_6);return n&&fs(c,f),{version:s,schema:c,num_rows:u,row_groups:d,key_value_metadata:f,created_by:p,metadata_length:a}}function _s({schema:e}){return Yo(e,[])[0]}function vs(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:ys(e.field_7.field_2)}:e?.field_8?{type:`TIMESTAMP`,isAdjustedToUTC:e.field_8.field_1,unit:ys(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:ms(e.field_17.field_1)}:e?.field_18?{type:`GEOGRAPHY`,crs:ms(e.field_18.field_1),algorithm:Mo[e.field_18.field_2]}:e}function ys(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 bs(e,t,n){return e&&{max:xs(e.field_1,t,n),min:xs(e.field_2,t,n),null_count:e.field_3,distinct_count:e.field_4,max_value:xs(e.field_5,t,n),min_value:xs(e.field_6,t,n),is_max_value_exact:e.field_7,is_min_value_exact:e.field_8}}function xs(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`?Ho(e)*10**-(t.scale||0):a?.type===`FLOAT16`?Wo(e):e}var Ss,Cs,ws=n((()=>{No(),qo(),ns(),ds(),ps(),Ss=1<<19,Cs=new TextDecoder}));function Ts(e,t){let n=1e4;for(let r=0;r<t.length;r+=n)e.push(...t.slice(r,r+n))}function Es(e,t,n=!0){if(n?e===t:e==t)return!0;if(e instanceof Uint8Array&&t instanceof Uint8Array)return Es(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(!Es(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(!Es(e[i],t[i],n))return!1;return!0}function Ds(e){if(!e)return[];if(e.length===1)return e[0];let t=[];for(let n of e)Ts(t,n);return t}var Os=n((()=>{}));function ks({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=>ks({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$or`in n&&Array.isArray(n.$or))return n.$or.every(n=>ks({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`&&Es(d,f,r)&&Es(d,t,r)||e===`$in`&&Array.isArray(t)&&t.every(e=>e<d||e>f)||e===`$nin`&&Array.isArray(t)&&Es(d,f,r)&&t.includes(d))return!0}}return!1}var As=n((()=>{Os()}));function js({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=Xo(_s(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&&!ks({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<=Ns?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 Ms(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 Ns,Ps=n((()=>{As(),ws(),ns(),Ns=1<<21}));function Fs(e,t=Ko){if(Array.isArray(e))return e.map(e=>Fs(e,t));if(typeof e!=`object`)return e;if(`metadata`in e){let n=Rs(e.metadata),r=e.typed_value&&Is(e.typed_value,n,t),i=e.value&&Bs(Ls(e.value),n,t);return r&&i?{...i,...r}:r??i}return e}function Is(e,t,n){if(e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof Uint8Array)){if(`typed_value`in e)return Is(e.typed_value,t,n);if(`value`in e&&e.value instanceof Uint8Array)return Bs(Ls(e.value),t,n);let r={};for(let[i,a]of Object.entries(e))r[i]=Is(a,t,n);return r}return e instanceof Uint8Array?Bs(Ls(e),t,n):Array.isArray(e)?e.map(e=>Is(e,t,n)):e}function Ls(e){return{view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0}}function Rs(e){let t=qs.get(e.buffer);t||(t=new Map,qs.set(e.buffer,t));let n=`${e.byteOffset}:${e.byteLength}`,r=t.get(n);if(r)return r;let i=Ls(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=zs(i,c),u=Array(l+1);for(let e=0;e<u.length;e++)u[e]=zs(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]=Ks.decode(i)}let p={dictionary:f,sorted:s};return t.set(n,p),p}function zs(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 Bs(e,t,n){let r=e.view.getUint8(e.offset++),i=r&3,a=r>>2;if(i===0)return Vs(e,a,n);if(i===2)return Hs(e,a,t,n);if(i===3)return Us(e,a,t,n);let o=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,a);return e.offset+=a,Ks.decode(o)}function Vs(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 Ws(e,4);case 9:return Ws(e,8);case 10:return Ws(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 Gs(e);case 16:{let t=Gs(e);return Ks.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 Hs(e,t,n,r){let i=(t&3)+1,a=(t>>2&3)+1,o=t>>4&1?zs(e,4):e.view.getUint8(e.offset++),s=Array(o);for(let t=0;t<o;t++)s[t]=zs(e,a);let c=Array(o+1);for(let t=0;t<c.length;t++)c[t]=zs(e,i);let l={};for(let t=0;t<o;t++){let i=n.dictionary[s[t]];l[i]=Bs({view:e.view,offset:e.offset+c[t]},n,r)}return e.offset+=c[c.length-1],l}function Us(e,t,n,r){let i=t&3,a=t>>2&1,o=i+1,s=zs(e,a?4:1),c=Array(s+1);for(let t=0;t<c.length;t++)c[t]=zs(e,o);let l=e.offset,u=Array(s);for(let t=0;t<s;t++)u[t]=Bs({view:e.view,offset:l+c[t]},n,r);return e.offset=l+c[c.length-1],u}function Ws(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 Gs(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 Ks,qs,Js=n((()=>{qo(),Ks=new TextDecoder,qs=new WeakMap}));function Ys(e,t,n,r,i){let a=Qo(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 Xs(e,t,n,r=0){let i=t.path.join(`.`),a=t.element.repetition_type===`OPTIONAL`,o=a?r+1:r;if($o(t)){let s=t.children[0],c=o;s.children.length===1&&(s=s.children[0],c++),Xs(e,s,n,c);let l=s.path.join(`.`),u=e.get(l);if(!u)throw Error(`parquet list column missing values`);a&&Zs(u,r),e.set(i,u),e.delete(l);return}if(es(t)){let s=t.children[0].element.name;Xs(e,t.children[0].children[0],n,o+1),Xs(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=Qs(c,l,o);a&&Zs(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){Xs(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=$s(s,o);t.element.logical_type?.type===`VARIANT`&&(c=Fs(c,n)),a&&Zs(c,r),e.set(i,c)}}function Zs(e,t){for(let n=0;n<e.length;n++)t?Zs(e[n],t-1):e[n]=e[n][0]}function Qs(e,t,n){let r=[];for(let i=0;i<e.length;i++)if(n)r.push(Qs(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 $s(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($s(o,t-1)):i.push(o)}return i}var ec=n((()=>{ns(),Js()}));function tc(e,t,n){let r=n instanceof Int32Array,i=as(e),a=as(e);as(e);let o=cs(e),s=0;n[s++]=r?Number(o):o;let c=i/a;for(;s<t;){let i=cs(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 nc(e,t,n){let r=new Int32Array(t);tc(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 rc(e,t,n){let r=new Int32Array(t);tc(e,t,r);let i=new Int32Array(t);tc(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 ic=n((()=>{ds()}));function ac(e){return 32-Math.clz32(e)}function oc(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=as(e);if(r&1)a=cc(e,r,t,n,a);else{let i=r>>>1;sc(e,i,t,n,a),a+=i}}e.offset=i+r}function sc(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 cc(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 lc(e,t,n,r){let i=uc(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 uc(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 dc=n((()=>{ds()}));function fc(e,t,n,r){if(n===0)return[];if(t===`BOOLEAN`)return pc(e,n);if(t===`INT32`)return mc(e,n);if(t===`INT64`)return hc(e,n);if(t===`INT96`)return gc(e,n);if(t===`FLOAT`)return _c(e,n);if(t===`DOUBLE`)return vc(e,n);if(t===`BYTE_ARRAY`)return yc(e,n);if(t===`FIXED_LEN_BYTE_ARRAY`){if(!r)throw Error(`parquet missing fixed length`);return bc(e,n,r)}else throw Error(`parquet unhandled type: ${t}`)}function pc(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 mc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Int32Array(xc(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 hc(e,t){let n=(e.view.byteOffset+e.offset)%8?new BigInt64Array(xc(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 gc(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 _c(e,t){let n=(e.view.byteOffset+e.offset)%4?new Float32Array(xc(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 vc(e,t){let n=(e.view.byteOffset+e.offset)%8?new Float64Array(xc(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 yc(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 bc(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 xc(e,t,n){let r=new ArrayBuffer(n);return new Uint8Array(r).set(new Uint8Array(e,t,n)),r}var Sc=n((()=>{}));function Cc(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[t+a]}function wc(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`);Cc(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&Tc[t])+1,i+=t}if(i+o>n)throw Error(`snappy error literal exceeds input length`);Cc(e,i,t,a,o),i+=o,a+=o}}if(a!==r)throw Error(`premature end of input`)}var Tc,Ec=n((()=>{Tc=[0,255,65535,16777215,4294967295]}));function Dc(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=Oc(o,t,i),{definitionLevels:l,numNulls:u}=kc(o,t,i),d=t.num_values-u;if(t.encoding===`PLAIN`)s=fc(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`?(oc(o,e,s),s=s.map(e=>!!e)):oc(o,e,s,a.byteLength-o.offset)):s=new Uint8Array(d)}else if(t.encoding===`BYTE_STREAM_SPLIT`)s=lc(o,d,n,r.type_length);else if(t.encoding===`DELTA_BINARY_PACKED`)s=n===`INT32`?new Int32Array(d):new BigInt64Array(d),tc(o,d,s);else if(t.encoding===`DELTA_LENGTH_BYTE_ARRAY`)s=Array(d),nc(o,d,s);else throw Error(`parquet unsupported encoding: ${t.encoding}`);return{definitionLevels:l,repetitionLevels:c,dataPage:s}}function Oc(e,t,n){if(n.length>1){let r=Zo(n);if(r){let n=Array(t.num_values);return oc(e,ac(r),n),n}}return[]}function kc(e,t,n){let r=Qo(n);if(!r)return{definitionLevels:[],numNulls:0};let i=Array(t.num_values);oc(e,ac(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 Ac(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),wc(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 jc(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=Mc(r,l,o);r.offset=l.repetition_levels_byte_length;let d=Nc(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=Ac(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=fc(h,i,_,a.type_length);else if(l.encoding===`RLE`)g=Array(_),oc(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(_),oc(h,e,g,f-1)}else if(l.encoding===`DELTA_BINARY_PACKED`)g=i===`INT32`?new Int32Array(_):new BigInt64Array(_),tc(h,_,g);else if(l.encoding===`DELTA_LENGTH_BYTE_ARRAY`)g=Array(_),nc(h,_,g);else if(l.encoding===`DELTA_BYTE_ARRAY`)g=Array(_),rc(h,_,g);else if(l.encoding===`BYTE_STREAM_SPLIT`)g=lc(h,_,i,a.type_length);else throw Error(`parquet unsupported encoding: ${l.encoding}`);return{definitionLevels:d,repetitionLevels:u,dataPage:g}}function Mc(e,t,n){let r=Zo(n);if(!r)return[];let i=Array(t.num_values);return oc(e,ac(r),i,t.repetition_levels_byte_length),i}function Nc(e,t,n){let r=Qo(n);if(r){let n=Array(t.num_values);return oc(e,ac(r),n,t.definition_levels_byte_length),n}}var Pc=n((()=>{ic(),dc(),Sc(),ns(),Ec()}));function Fc(e,{groupStart:t,selectStart:n,selectEnd:r},i,a){let{pathInSchema:o,schemaPath:s}=i,c=ts(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=Lc(e);if(t.type===`DICTIONARY_PAGE`){let{data:n}=Ic(e,t,i,u,void 0,0);n&&(u=Vo(n,i))}else{let r=d?.length||0,a=Ic(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 Ic(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&&ts(c))return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:f}=Dc(Ac(d,Number(t.uncompressed_page_size),l,u),e,n),p=Bo(f,r,e.encoding,n);return{skipped:0,data:Ys(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}=jc(d,t,n),u=Bo(l,r,e.encoding,n);return{skipped:0,data:Ys(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=Ac(d,Number(t.uncompressed_page_size),l,u);return{skipped:0,data:fc({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 Lc(e){let t=rs(e);return{type:jo[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:Do[t.field_5.field_2],definition_level_encoding:Do[t.field_5.field_3],repetition_level_encoding:Do[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:Do[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:Do[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 Rc=n((()=>{ec(),No(),qo(),Pc(),Sc(),ns(),ds()}));function zc(e){let t=rs(e);return{page_locations:t.field_1.map(Bc),unencoded_byte_array_data_bytes:t.field_2}}function Bc(e){return{offset:e.field_1,compressed_page_size:e.field_2,first_row_index:e.field_3}}var Vc=n((()=>{ds()}));function Hc(e,{metadata:t},n){let{file:r,compressors:i,utf8:a}=e,o=[],s={...Ko,...e.parsers};for(let c of n.chunks){let{columnMetadata:l}=c,u=Yo(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=>Fc({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=zc({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}=Fc({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 Uc(e,t,n){let{asyncColumns:r}=e;n={...Ko,...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(`.`),Ds(t))}))).then(()=>{Xs(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 Wc=n((()=>{ec(),Rc(),qo(),Vc(),ns(),Os()})),Gc=r({parquetRead:()=>Zc,parquetReadObjects:()=>Qc});function Kc(e){if(!e.metadata)throw Error(`parquet requires metadata`);let t=js(e);return e.file=Ms(e.file,t),t.groups.map(n=>Hc(e,t,n))}function qc(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 Jc(e){let t=e.join(``),n=$c.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: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(`,
|
|
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
|
|
15
|
-
`,`\r`],!0,!1),qe=function(e){return e.join(``).replace(/^"/,``).replace(/"$/,``)},Je=
|
|
16
|
-
`,`\r`],!1,!1),
|
|
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=`#`,D=j(`#`,!1),ee=`;`,te=j(`;`,!1),ne=function(e,t,n){return{type:e,name:t,comment:n}},re=`[`,ie=j(`[`,!1),ae=`]`,oe=j(`]`,!1),se=function(e,t,n,r){return{type:e,size:t,name:n,comment:r}},ce=function(e,t,n,r){return{type:e,vals:t,name:n,comment:r}},le=`,`,ue=j(`,`,!1),de=function(e,t){return t.unshift(e),t},fe=`int`,pe=j(`int`,!1),me=`uint`,he=j(`uint`,!1),ge=`short`,_e=j(`short`,!1),ve=`ushort`,ye=j(`ushort`,!1),O=`byte`,be=j(`byte`,!1),xe=`ubyte`,Se=j(`ubyte`,!1),Ce=`float`,we=j(`float`,!1),Te=`char`,Ee=j(`char`,!1),De=`string`,Oe=j(`string`,!1),ke=`lstring`,Ae=j(`lstring`,!1),je=`enum`,Me=j(`enum`,!1),Ne=`double`,Pe=j(`double`,!1),Fe=`bigint`,Ie=j(`bigint`,!1),Le=`set`,Re=j(`set`,!1),ze=function(e,t){return e+` `+t},Be=/^[a-zA-Z_]/,Ve=st([[`a`,`z`],[`A`,`Z`],`_`],!1,!1),He=/^[a-zA-Z0-9_]/,Ue=st([[`a`,`z`],[`A`,`Z`],[`0`,`9`],`_`],!1,!1),We=function(e){return ot()},Ge=/^[^\n\r]/,Ke=st([`
|
|
15
|
+
`,`\r`],!0,!1),qe=function(e){return e.join(``).replace(/^"/,``).replace(/"$/,``)},Je=lt(`integer`),Ye=/^[0-9]/,Xe=st([[`0`,`9`]],!1,!1),Ze=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(D)),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=ee,k++):(d=n,A===0&&M(te)),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=ne(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=re,k++):(l=n,A===0&&M(ie)),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=ae,k++):(p=n,A===0&&M(oe)),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?(_=ee,k++):(_=n,A===0&&M(te)),_===n?(k=t,t=n):(v=F(),v===n?(k=t,t=n):(y=_t(),y===n?(k=t,t=n):(tt=t,r=se(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?(_=ee,k++):(_=n,A===0&&M(te)),_===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=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=le,k++):(o=n,A===0&&M(ue)),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=le,k++):(o=n,A===0&&M(ue)),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=de(r,i),t=r)}else k=t,t=n;return t}function Ct(){var t,r,i,a;return e.substr(k,3)===fe?(t=fe,k+=3):(t=n,A===0&&M(pe)),t===n&&(e.substr(k,4)===me?(t=me,k+=4):(t=n,A===0&&M(he)),t===n&&(e.substr(k,5)===ge?(t=ge,k+=5):(t=n,A===0&&M(_e)),t===n&&(e.substr(k,6)===ve?(t=ve,k+=6):(t=n,A===0&&M(ye)),t===n&&(e.substr(k,4)===O?(t=O,k+=4):(t=n,A===0&&M(be)),t===n&&(e.substr(k,5)===xe?(t=xe,k+=5):(t=n,A===0&&M(Se)),t===n&&(e.substr(k,5)===Ce?(t=Ce,k+=5):(t=n,A===0&&M(we)),t===n&&(e.substr(k,4)===Te?(t=Te,k+=4):(t=n,A===0&&M(Ee)),t===n&&(e.substr(k,6)===De?(t=De,k+=6):(t=n,A===0&&M(Oe)),t===n&&(e.substr(k,7)===ke?(t=ke,k+=7):(t=n,A===0&&M(Ae)),t===n&&(e.substr(k,4)===je?(t=je,k+=4):(t=n,A===0&&M(Me)),t===n&&(e.substr(k,6)===Ne?(t=Ne,k+=6):(t=n,A===0&&M(Pe)),t===n&&(e.substr(k,6)===Fe?(t=Fe,k+=6):(t=n,A===0&&M(Ie)),t===n&&(e.substr(k,3)===Le?(t=Le,k+=3):(t=n,A===0&&M(Re)),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=ze(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(Be.test(e.charAt(k))?(i=e.charAt(k),k++):(i=n,A===0&&M(Ve)),i!==n){for(a=[],He.test(e.charAt(k))?(o=e.charAt(k),k++):(o=n,A===0&&M(Ue));o!==n;)a.push(o),He.test(e.charAt(k))?(o=e.charAt(k),k++):(o=n,A===0&&M(Ue));a===n?(k=r,r=n):(i=[i,a],r=i)}else k=r,r=n;return r!==n&&(tt=t,r=We(r)),t=r,t}function Tt(){var t=k,r=[],i;for(Ge.test(e.charAt(k))?(i=e.charAt(k),k++):(i=n,A===0&&M(Ke));i!==n;)r.push(i),Ge.test(e.charAt(k))?(i=e.charAt(k),k++):(i=n,A===0&&M(Ke));return r!==n&&(tt=t,r=qe(r)),t=r,t}function P(){var t,r,i,a;if(A++,t=k,r=F(),r!==n){if(i=[],Ye.test(e.charAt(k))?(a=e.charAt(k),k++):(a=n,A===0&&M(Xe)),a!==n)for(;a!==n;)i.push(a),Ye.test(e.charAt(k))?(a=e.charAt(k),k++):(a=n,A===0&&M(Xe));else i=n;i===n?(k=t,t=n):(tt=t,r=Ze(),t=r)}else k=t,t=n;return A--,t===n&&(r=n,A===0&&M(Je)),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"
|
|
@@ -28,7 +28,7 @@ return groupData;`);return $c.set(t,i),i}function Yc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
28
28
|
uint qStart; "start of alignment on query sequence"
|
|
29
29
|
uint qEnd; "end of alignment on query sequence"
|
|
30
30
|
uint chainScore; "score from chain"
|
|
31
|
-
)`,
|
|
31
|
+
)`,fl=`table bigGenePred
|
|
32
32
|
"bigGenePred gene models"
|
|
33
33
|
(
|
|
34
34
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -51,7 +51,7 @@ return groupData;`);return $c.set(t,i),i}function Yc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
51
51
|
string geneName; "Primary identifier for gene"
|
|
52
52
|
string geneName2; "Alternative/human readable gene name"
|
|
53
53
|
string geneType; "Gene type"
|
|
54
|
-
)`,
|
|
54
|
+
)`,pl=`table interact
|
|
55
55
|
"interaction between two regions"
|
|
56
56
|
(
|
|
57
57
|
string chrom; "Chromosome (or contig, scaffold, etc.). For interchromosomal, use 2 records"
|
|
@@ -73,7 +73,7 @@ return groupData;`);return $c.set(t,i),i}function Yc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
73
73
|
string targetName; "Identifier of target/upper/this region"
|
|
74
74
|
string targetStrand; "Orientation of target/upper/this region: + or -. Use . if not applicable"
|
|
75
75
|
|
|
76
|
-
)`,
|
|
76
|
+
)`,ml=`table bigLink
|
|
77
77
|
"bigLink pairwise alignment"
|
|
78
78
|
(
|
|
79
79
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -81,14 +81,14 @@ return groupData;`);return $c.set(t,i),i}function Yc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
81
81
|
uint chromEnd; "End position in chromosome"
|
|
82
82
|
string name; "Name or ID of item, ideally both human readable and unique"
|
|
83
83
|
uint qStart; "start of alignment on query sequence"
|
|
84
|
-
)`,
|
|
84
|
+
)`,hl=`table bedMaf
|
|
85
85
|
"Bed3 with MAF block"
|
|
86
86
|
(
|
|
87
87
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
88
88
|
uint chromStart; "Start position in chromosome"
|
|
89
89
|
uint chromEnd; "End position in chromosome"
|
|
90
90
|
lstring mafBlock; "MAF block"
|
|
91
|
-
)`,
|
|
91
|
+
)`,gl=`table bigNarrowPeak
|
|
92
92
|
"BED6+4 Peaks of signal enrichment based on pooled, normalized (interpreted) data."
|
|
93
93
|
(
|
|
94
94
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -101,7 +101,7 @@ return groupData;`);return $c.set(t,i),i}function Yc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
101
101
|
float pValue; "Statistical significance of signal value (-log10). Set to -1 if not used."
|
|
102
102
|
float qValue; "Statistical significance with multiple-test correction applied (FDR -log10). Set to -1 if not used."
|
|
103
103
|
int peak; "Point-source called for this peak; 0-based offset from chromStart. Set to -1 if no point-source called."
|
|
104
|
-
)`,
|
|
104
|
+
)`,_l=`table bigPsl
|
|
105
105
|
"bigPsl pairwise alignment"
|
|
106
106
|
(
|
|
107
107
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -133,7 +133,7 @@ return groupData;`);return $c.set(t,i),i}function Yc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
133
133
|
uint repMatch; " Number of bases that match but are part of repeats "
|
|
134
134
|
uint nCount; " Number of 'N' bases "
|
|
135
135
|
uint seqType; "0=empty, 1=nucleotide, 2=amino_acid"
|
|
136
|
-
)`,
|
|
136
|
+
)`,vl=`table defaultBedSchema
|
|
137
137
|
"BED12"
|
|
138
138
|
(
|
|
139
139
|
string chrom; "The name of the chromosome (e.g. chr3, chrY, chr2_random) or scaffold (e.g. scaffold10671)."
|
|
@@ -148,7 +148,7 @@ return groupData;`);return $c.set(t,i),i}function Yc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
148
148
|
uint blockCount; " The number of blocks (exons) in the BED line."
|
|
149
149
|
uint[blockCount] blockSizes; " A comma-separated list of the block sizes. The number of items in this list should correspond to blockCount."
|
|
150
150
|
uint[blockCount] blockStarts; "A comma-separated list of block starts. All of the blockStart positions should be calculated relative to chromStart. The number of items in this list should correspond to blockCount."
|
|
151
|
-
)`,
|
|
151
|
+
)`,yl=`table mafFrames
|
|
152
152
|
"codon frame assignment for MAF components"
|
|
153
153
|
(
|
|
154
154
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -162,7 +162,7 @@ return groupData;`);return $c.set(t,i),i}function Yc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
162
162
|
int nextFramePos; "target position of the next base (in transcription direction) that continues this frame, or -1 if none, or frame not contiguous"
|
|
163
163
|
ubyte isExonStart; "does this start the CDS portion of an exon?"
|
|
164
164
|
ubyte isExonEnd; "does this end the CDS portion of an exon?"
|
|
165
|
-
)`,
|
|
165
|
+
)`,bl=`table mafSummary
|
|
166
166
|
"Positions and scores for alignment blocks"
|
|
167
167
|
(
|
|
168
168
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -172,16 +172,16 @@ return groupData;`);return $c.set(t,i),i}function Yc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
172
172
|
float score; "Floating point score."
|
|
173
173
|
char[1] leftStatus; "Gap/break annotation for preceding block"
|
|
174
174
|
char[1] rightStatus; "Gap/break annotation for following block"
|
|
175
|
-
)`})),
|
|
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}Co(`fasta`,ql);function Jl(e,t){return e.length==t.length&&e.every((n,r)=>e[r]===t[r])}function Yl(e){return Array.isArray(e)?e:e===void 0?[]:[e]}function Xl(e){return e[e.length-1]}function Zl(e,t,n){return n=(n-e)/(t-e),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}function Ql(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function $l(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 eu=Symbol(`implicit`);function tu(){var e=new mn,t=[],n=[],r=eu;function i(i){let a=e.get(i);if(a===void 0){if(r!==eu)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 mn;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 tu(t,n).unknown(r)},Ql.apply(i,arguments),i}function nu(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function ru(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function iu(){}var au=.7,ou=1/au,su=`\\s*([+-]?\\d+)\\s*`,cu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,lu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,uu=/^#([0-9a-f]{3,8})$/,du=RegExp(`^rgb\\(${su},${su},${su}\\)$`),fu=RegExp(`^rgb\\(${lu},${lu},${lu}\\)$`),pu=RegExp(`^rgba\\(${su},${su},${su},${cu}\\)$`),mu=RegExp(`^rgba\\(${lu},${lu},${lu},${cu}\\)$`),hu=RegExp(`^hsl\\(${cu},${lu},${lu}\\)$`),gu=RegExp(`^hsla\\(${cu},${lu},${lu},${cu}\\)$`),_u={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};nu(iu,Su,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:vu,formatHex:vu,formatHex8:yu,formatHsl:bu,formatRgb:xu,toString:xu});function vu(){return this.rgb().formatHex()}function yu(){return this.rgb().formatHex8()}function bu(){return Fu(this).formatHsl()}function xu(){return this.rgb().formatRgb()}function Su(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=uu.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Cu(t):n===3?new Du(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?wu(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?wu(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=du.exec(e))?new Du(t[1],t[2],t[3],1):(t=fu.exec(e))?new Du(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=pu.exec(e))?wu(t[1],t[2],t[3],t[4]):(t=mu.exec(e))?wu(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=hu.exec(e))?Pu(t[1],t[2]/100,t[3]/100,1):(t=gu.exec(e))?Pu(t[1],t[2]/100,t[3]/100,t[4]):_u.hasOwnProperty(e)?Cu(_u[e]):e===`transparent`?new Du(NaN,NaN,NaN,0):null}function Cu(e){return new Du(e>>16&255,e>>8&255,e&255,1)}function wu(e,t,n,r){return r<=0&&(e=t=n=NaN),new Du(e,t,n,r)}function Tu(e){return e instanceof iu||(e=Su(e)),e?(e=e.rgb(),new Du(e.r,e.g,e.b,e.opacity)):new Du}function Eu(e,t,n,r){return arguments.length===1?Tu(e):new Du(e,t,n,r??1)}function Du(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}nu(Du,Eu,ru(iu,{brighter(e){return e=e==null?ou:ou**+e,new Du(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?au:au**+e,new Du(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Du(Mu(this.r),Mu(this.g),Mu(this.b),ju(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:Ou,formatHex:Ou,formatHex8:ku,formatRgb:Au,toString:Au}));function Ou(){return`#${Nu(this.r)}${Nu(this.g)}${Nu(this.b)}`}function ku(){return`#${Nu(this.r)}${Nu(this.g)}${Nu(this.b)}${Nu((isNaN(this.opacity)?1:this.opacity)*255)}`}function Au(){let e=ju(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Mu(this.r)}, ${Mu(this.g)}, ${Mu(this.b)}${e===1?`)`:`, ${e})`}`}function ju(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Mu(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Nu(e){return e=Mu(e),(e<16?`0`:``)+e.toString(16)}function Pu(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Lu(e,t,n,r)}function Fu(e){if(e instanceof Lu)return new Lu(e.h,e.s,e.l,e.opacity);if(e instanceof iu||(e=Su(e)),!e)return new Lu;if(e instanceof Lu)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 Lu(o,s,c,e.opacity)}function Iu(e,t,n,r){return arguments.length===1?Fu(e):new Lu(e,t,n,r??1)}function Lu(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}nu(Lu,Iu,ru(iu,{brighter(e){return e=e==null?ou:ou**+e,new Lu(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?au:au**+e,new Lu(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 Du(Bu(e>=240?e-240:e+120,i,r),Bu(e,i,r),Bu(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Lu(Ru(this.h),zu(this.s),zu(this.l),ju(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=ju(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Ru(this.h)}, ${zu(this.s)*100}%, ${zu(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Ru(e){return e=(e||0)%360,e<0?e+360:e}function zu(e){return Math.max(0,Math.min(1,e||0))}function Bu(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 Vu=Math.PI/180,Hu=180/Math.PI,Uu=18,Wu=.96422,Gu=1,Ku=.82521,qu=4/29,Ju=6/29,Yu=3*Ju*Ju,Xu=Ju*Ju*Ju;function Zu(e){if(e instanceof $u)return new $u(e.l,e.a,e.b,e.opacity);if(e instanceof od)return sd(e);e instanceof Du||(e=Tu(e));var t=rd(e.r),n=rd(e.g),r=rd(e.b),i=ed((.2225045*t+.7168786*n+.0606169*r)/Gu),a,o;return t===n&&n===r?a=o=i:(a=ed((.4360747*t+.3850649*n+.1430804*r)/Wu),o=ed((.0139322*t+.0971045*n+.7141733*r)/Ku)),new $u(116*i-16,500*(a-i),200*(i-o),e.opacity)}function Qu(e,t,n,r){return arguments.length===1?Zu(e):new $u(e,t,n,r??1)}function $u(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}nu($u,Qu,ru(iu,{brighter(e){return new $u(this.l+Uu*(e??1),this.a,this.b,this.opacity)},darker(e){return new $u(this.l-Uu*(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=Wu*td(t),e=Gu*td(e),n=Ku*td(n),new Du(nd(3.1338561*t-1.6168667*e-.4906146*n),nd(-.9787684*t+1.9161415*e+.033454*n),nd(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}}));function ed(e){return e>Xu?e**(1/3):e/Yu+qu}function td(e){return e>Ju?e*e*e:Yu*(e-qu)}function nd(e){return 255*(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055)}function rd(e){return(e/=255)<=.04045?e/12.92:((e+.055)/1.055)**2.4}function id(e){if(e instanceof od)return new od(e.h,e.c,e.l,e.opacity);if(e instanceof $u||(e=Zu(e)),e.a===0&&e.b===0)return new od(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*Hu;return new od(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function ad(e,t,n,r){return arguments.length===1?id(e):new od(e,t,n,r??1)}function od(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function sd(e){if(isNaN(e.h))return new $u(e.l,0,0,e.opacity);var t=e.h*Vu;return new $u(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}nu(od,ad,ru(iu,{brighter(e){return new od(this.h,this.c,this.l+Uu*(e??1),this.opacity)},darker(e){return new od(this.h,this.c,this.l-Uu*(e??1),this.opacity)},rgb(){return sd(this).rgb()}}));var cd=-.14861,ld=1.78277,ud=-.29227,dd=-.90649,fd=1.97294,pd=fd*dd,md=fd*ld,hd=ld*ud-dd*cd;function gd(e){if(e instanceof vd)return new vd(e.h,e.s,e.l,e.opacity);e instanceof Du||(e=Tu(e));var t=e.r/255,n=e.g/255,r=e.b/255,i=(hd*r+pd*t-md*n)/(hd+pd-md),a=r-i,o=(fd*(n-i)-ud*a)/dd,s=Math.sqrt(o*o+a*a)/(fd*i*(1-i)),c=s?Math.atan2(o,a)*Hu-120:NaN;return new vd(c<0?c+360:c,s,i,e.opacity)}function _d(e,t,n,r){return arguments.length===1?gd(e):new vd(e,t,n,r??1)}function vd(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}nu(vd,_d,ru(iu,{brighter(e){return e=e==null?ou:ou**+e,new vd(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?au:au**+e,new vd(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*Vu,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),i=Math.sin(e);return new Du(255*(t+n*(cd*r+ld*i)),255*(t+n*(ud*r+dd*i)),255*(t+fd*r*n),this.opacity)}}));function yd(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 bd(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 yd((n-r/t)*t,o,i,a,s)}}function xd(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 yd((n-r/t)*t,i,a,o,s)}}var Sd=e=>()=>e;function Cd(e,t){return function(n){return e+n*t}}function wd(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Td(e,t){var n=t-e;return n?Cd(e,n>180||n<-180?n-360*Math.round(n/360):n):Sd(isNaN(e)?t:e)}function Ed(e){return(e=+e)==1?Dd:function(t,n){return n-t?wd(t,n,e):Sd(isNaN(t)?n:t)}}function Dd(e,t){var n=t-e;return n?Cd(e,n):Sd(isNaN(e)?t:e)}var Od=(function e(t){var n=Ed(t);function r(e,t){var r=n((e=Eu(e)).r,(t=Eu(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Dd(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 kd(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=Eu(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 Ad=kd(bd),jd=kd(xd);function Md(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 Nd(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Pd(e,t){return(Nd(t)?Md:Fd)(e,t)}function Fd(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]=Wd(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 Id(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Ld(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function Rd(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]=Wd(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var zd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Bd=new RegExp(zd.source,`g`);function Vd(e){return function(){return e}}function Hd(e){return function(t){return e(t)+``}}function Ud(e,t){var n=zd.lastIndex=Bd.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=zd.exec(e))&&(i=Bd.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:Ld(r,i)})),n=Bd.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Hd(c[0].x):Vd(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 Wd(e,t){var n=typeof t,r;return t==null||n===`boolean`?Sd(t):(n===`number`?Ld:n===`string`?(r=Su(t))?(t=r,Od):Ud:t instanceof Su?Od:t instanceof Date?Id:Nd(t)?Md:Array.isArray(t)?Fd:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?Rd:Ld)(e,t)}function Gd(e){var t=e.length;return function(n){return e[Math.max(0,Math.min(t-1,Math.floor(n*t)))]}}function Kd(e,t){var n=Td(+e,+t);return function(e){var t=n(e);return t-360*Math.floor(t/360)}}function qd(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}var Jd=180/Math.PI,Yd={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Xd(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)*Jd,skewX:Math.atan(c)*Jd,scaleX:o,scaleY:s}}var Zd;function Qd(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?Yd:Xd(t.a,t.b,t.c,t.d,t.e,t.f)}function $d(e){return e==null||(Zd||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Zd.setAttribute(`transform`,e),!(e=Zd.transform.baseVal.consolidate()))?Yd:(e=e.matrix,Xd(e.a,e.b,e.c,e.d,e.e,e.f))}function ef(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:Ld(e,i)},{i:c-2,x:Ld(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:Ld(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:Ld(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:Ld(e,n)},{i:s-2,x:Ld(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 tf=ef(Qd,`px, `,`px)`,`deg)`),nf=ef($d,`, `,`)`,`)`),rf=1e-12;function af(e){return((e=Math.exp(e))+1/e)/2}function of(e){return((e=Math.exp(e))-1/e)/2}function sf(e){return((e=Math.exp(2*e))-1)/(e+1)}var cf=(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<rf)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=af(y),c=s/(n*g)*(i*sf(t*r+y)-of(y));return[a+c*d,o+c*f,s*i/af(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 lf(e){return function(t,n){var r=e((t=Iu(t)).h,(n=Iu(n)).h),i=Dd(t.s,n.s),a=Dd(t.l,n.l),o=Dd(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 uf=lf(Td),df=lf(Dd);function ff(e,t){var n=Dd((e=Qu(e)).l,(t=Qu(t)).l),r=Dd(e.a,t.a),i=Dd(e.b,t.b),a=Dd(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 pf(e){return function(t,n){var r=e((t=ad(t)).h,(n=ad(n)).h),i=Dd(t.c,n.c),a=Dd(t.l,n.l),o=Dd(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 mf=pf(Td),hf=pf(Dd);function gf(e){return(function t(n){n=+n;function r(t,r){var i=e((t=_d(t)).h,(r=_d(r)).h),a=Dd(t.s,r.s),o=Dd(t.l,r.l),s=Dd(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 _f=gf(Td),vf=gf(Dd);function yf(e,t){t===void 0&&(t=e,e=Wd);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 bf(e,t){for(var n=Array(t),r=0;r<t;++r)n[r]=e(r/(t-1));return n}var xf=r({interpolate:()=>Wd,interpolateArray:()=>Pd,interpolateBasis:()=>bd,interpolateBasisClosed:()=>xd,interpolateCubehelix:()=>_f,interpolateCubehelixLong:()=>vf,interpolateDate:()=>Id,interpolateDiscrete:()=>Gd,interpolateHcl:()=>mf,interpolateHclLong:()=>hf,interpolateHsl:()=>uf,interpolateHslLong:()=>df,interpolateHue:()=>Kd,interpolateLab:()=>ff,interpolateNumber:()=>Ld,interpolateNumberArray:()=>Md,interpolateObject:()=>Rd,interpolateRgb:()=>Od,interpolateRgbBasis:()=>Ad,interpolateRgbBasisClosed:()=>jd,interpolateRound:()=>qd,interpolateString:()=>Ud,interpolateTransformCss:()=>tf,interpolateTransformSvg:()=>nf,interpolateZoom:()=>cf,piecewise:()=>yf,quantize:()=>bf});function Sf(e){return function(){return e}}function Cf(e){return+e}var wf=[0,1];function Tf(e){return e}function Ef(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:Sf(isNaN(t)?NaN:.5)}function Df(e,t){var n;return e>t&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function Of(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i<r?(r=Ef(i,r),a=n(o,a)):(r=Ef(r,i),a=n(a,o)),function(e){return a(r(e))}}function kf(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]=Ef(e[o],e[o+1]),a[o]=n(t[o],t[o+1]);return function(t){var n=un(e,t,1,r)-1;return a[n](i[n](t))}}function Af(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function jf(){var e=wf,t=wf,n=Wd,r,i,a,o=Tf,s,c,l;function u(){var n=Math.min(e.length,t.length);return o!==Tf&&(o=Df(e[0],e[n-1])),s=n>2?kf:Of,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),Ld))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,Cf),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=qd,u()},d.clamp=function(e){return arguments.length?(o=e?!0:Tf,u()):o!==Tf},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 Mf(){return jf()(Tf,Tf)}function Nf(e,t,n,r){var i=jn(e,t,n),a;switch(r=Jn(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=ur(i,o))&&(r.precision=a),sr(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=dr(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=lr(i))&&(r.precision=a-(r.type===`%`)*2);break}return or(r)}function Pf(e){var t=e.domain;return e.ticks=function(e){var n=t();return kn(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return Nf(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=An(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 Ff(){var e=Mf();return e.copy=function(){return Af(e,Ff())},Ql.apply(e,arguments),Pf(e)}function If(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,Cf),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return If(e).unknown(t)},e=arguments.length?Array.from(e,Cf):[0,1],Pf(n)}function Lf(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 Rf(e){return Math.log(e)}function zf(e){return Math.exp(e)}function Bf(e){return-Math.log(-e)}function Vf(e){return-Math.exp(-e)}function Hf(e){return isFinite(e)?+(`1e`+e):e<0?0:e}function Uf(e){return e===10?Hf:e===Math.E?Math.exp:t=>e**+t}function Wf(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 Gf(e){return(t,n)=>-e(-t,n)}function Kf(e){let t=e(Rf,zf),n=t.domain,r=10,i,a;function o(){return i=Wf(r),a=Uf(r),n()[0]<0?(i=Gf(i),a=Gf(a),e(Bf,Vf)):e(Rf,zf),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=kn(o,s,p))}else m=kn(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=Jn(n)).precision==null&&(n.trim=!0),n=or(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(Lf(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function qf(){let e=Kf(jf()).domain([1,10]);return e.copy=()=>Af(e,qf()).base(e.base()),Ql.apply(e,arguments),e}function Jf(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Yf(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Xf(e){var t=1,n=e(Jf(t),Yf(t));return n.constant=function(n){return arguments.length?e(Jf(t=+n),Yf(t)):t},Pf(n)}function Zf(){var e=Xf(jf());return e.copy=function(){return Af(e,Zf()).constant(e.constant())},Ql.apply(e,arguments)}function Qf(e){return function(t){return t<0?-((-t)**+e):t**+e}}function $f(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function ep(e){return e<0?-e*e:e*e}function tp(e){var t=e(Tf,Tf),n=1;function r(){return n===1?e(Tf,Tf):n===.5?e($f,ep):e(Qf(n),Qf(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},Pf(t)}function np(){var e=tp(jf());return e.copy=function(){return Af(e,np()).exponent(e.exponent())},Ql.apply(e,arguments),e}function rp(){return np.apply(null,arguments).exponent(.5)}function ip(){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]=Ln(e,r/i);return a}function a(e){return e==null||isNaN(e=+e)?r:t[un(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(nn),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 ip().domain(e).range(t).unknown(r)},Ql.apply(a,arguments)}function ap(){var e=0,t=1,n=1,r=[.5],i=[0,1],a;function o(e){return e!=null&&e<=e?i[un(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 ap().domain([e,t]).range(i).unknown(a)},Ql.apply(Pf(o),arguments)}function op(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[un(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 op().domain(e).range(t).unknown(n)},Ql.apply(i,arguments)}function sp(e){return new Date(e)}function cp(e){return e instanceof Date?+e:+new Date(+e)}function lp(e,t,n,r,i,a,o,s,c,l){var u=Mf(),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,cp)):f().map(sp)},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(Lf(n,e)):u},u.copy=function(){return Af(u,lp(e,t,n,r,i,a,o,s,c,l))},u}function up(){return Ql.apply(lp(ei,ti,Yr,qr,Mr,Or,Er,wr,Cr,Ha).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function dp(){return Ql.apply(lp(Qr,$r,Xr,Jr,Br,kr,Dr,Tr,Cr,Wa).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function fp(){var e=0,t=1,n,r,i,a,o=Tf,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(Wd),l.rangeRound=u(qd),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 pp(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function mp(){var e=Pf(fp()(Tf));return e.copy=function(){return pp(e,mp())},$l.apply(e,arguments)}function hp(){var e=Kf(fp()).domain([1,10]);return e.copy=function(){return pp(e,hp()).base(e.base())},$l.apply(e,arguments)}function gp(){var e=Xf(fp());return e.copy=function(){return pp(e,gp()).constant(e.constant())},$l.apply(e,arguments)}function _p(){var e=tp(fp());return e.copy=function(){return pp(e,_p()).exponent(e.exponent())},$l.apply(e,arguments)}function vp(){return _p.apply(null,arguments).exponent(.5)}function yp(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=Tf,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=yf(e,[n,r,i]),p):[l(0),l(.5),l(1)]}}return p.range=m(Wd),p.rangeRound=m(qd),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 bp(){var e=Pf(yp()(Tf));return e.copy=function(){return pp(e,bp())},$l.apply(e,arguments)}function xp(){var e=Kf(yp()).domain([.1,1,10]);return e.copy=function(){return pp(e,xp()).base(e.base())},$l.apply(e,arguments)}function Sp(){var e=Xf(yp());return e.copy=function(){return pp(e,Sp()).constant(e.constant())},$l.apply(e,arguments)}function Cp(){var e=tp(yp());return e.copy=function(){return pp(e,Cp()).exponent(e.exponent())},$l.apply(e,arguments)}function wp(){return Cp.apply(null,arguments).exponent(.5)}function Tp(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 Ep=Tp(`1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf`),Dp=Tp(`7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666`),Op=Tp(`1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666`),kp=Tp(`4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0`),Ap=Tp(`a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928`),jp=Tp(`fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2`),Mp=Tp(`b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc`),Np=Tp(`e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999`),Pp=Tp(`66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3`),Fp=Tp(`8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f`);function Ip(e,t,n){let r=e-t+n*2;return e?r>0?r:1:0}var Lp=`identity`,Rp=`linear`,zp=`sqrt`,Bp=`symlog`,Vp=`time`,Hp=`sequential`,Up=`diverging`,Wp=`quantile`,Gp=`quantize`,Kp=`threshold`,qp=`ordinal`,Jp=`point`,Yp=`band`,Xp=`bin-ordinal`,Zp=`continuous`,Qp=`discrete`,$p=`discretizing`,em=`interpolating`,tm=`temporal`;function nm(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 rm(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 im(){let e=tu().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=Ip(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=Bn(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,un(o,c)-1),d=c===l?u:un(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 im().domain(t()).range(r).round(o).paddingInner(s).paddingOuter(c).align(l)},u()}function am(e){let t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return am(t())},e}function om(){return am(im().paddingInner(1))}var sm=Array.prototype.map;function cm(e){return sm.call(e,$e)}var lm=Array.prototype.slice;function um(){let e=[],t=[];function n(n){return n==null||n!==n?void 0:t[(un(e,n)-1)%t.length]}return n.domain=function(t){return arguments.length?(e=cm(t),n):e.slice()},n.range=function(e){return arguments.length?(t=lm.call(e),n):t.slice()},n.tickFormat=function(t,n){return Nf(e[0],Qe(e),t??10,n)},n.copy=function(){return um().domain(n.domain()).range(n.range())},n}var dm=new Map,fm=Symbol(`vega_scale`);function pm(e){return e[fm]=!0,e}function mm(e,t,n){let r=function(){let n=t();return n.invertRange||=n.invert?nm(n):n.invertExtent?rm(n):void 0,n.type=e,pm(n)};return r.metadata=jt(N(n)),r}function R(e,t,n){return arguments.length>1?(dm.set(e,mm(e,t,n)),this):hm(e)?dm.get(e):void 0}R(Lp,If),R(Rp,Ff,Zp),R(`log`,qf,[Zp,`log`]),R(`pow`,np,Zp),R(zp,rp,Zp),R(Bp,Zf,Zp),R(Vp,up,[Zp,tm]),R(`utc`,dp,[Zp,tm]),R(Hp,mp,[Zp,em]),R(`${Hp}-${Rp}`,mp,[Zp,em]),R(`${Hp}-log`,hp,[Zp,em,`log`]),R(`${Hp}-pow`,_p,[Zp,em]),R(`${Hp}-${zp}`,vp,[Zp,em]),R(`${Hp}-${Bp}`,gp,[Zp,em]),R(`${Up}-${Rp}`,bp,[Zp,em]),R(`${Up}-log`,xp,[Zp,em,`log`]),R(`${Up}-pow`,Cp,[Zp,em]),R(`${Up}-${zp}`,wp,[Zp,em]),R(`${Up}-${Bp}`,Sp,[Zp,em]),R(Wp,ip,[$p,Wp]),R(Gp,ap,$p),R(Kp,op,$p),R(Xp,um,[Qp,$p]),R(qp,tu,Qp),R(Yp,im,Qp),R(Jp,om,Qp);function hm(e){return dm.has(e)}function gm(e,t){let n=dm.get(e);return n&&n.metadata[t]}function _m(e){return gm(e,Zp)}function vm(e){return gm(e,Qp)}function ym(e){return gm(e,$p)}function bm(e){return gm(e,`log`)}function xm(e){return gm(e,em)}function Sm(e,t){let n=t[0],r=Qe(t)-n;return function(t){return e(n+t*r)}}function Cm(e,t,n){return yf(Tm(t||`rgb`,n),e)}function wm(e,t){let n=Array(t),r=t+1;for(let i=0;i<t;)n[i]=e(++i/r);return n}function Tm(e,t){let n=xf[Em(e)];return t!=null&&n&&n.gamma?n.gamma(t):n}function Em(e){return`interpolate`+e.toLowerCase().split(`-`).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}var Dm={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`},Om={accent:Dp,category10:Ep,category20:`1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5`,category20b:`393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6`,category20c:`3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9`,dark2:Op,observable10:kp,paired:Ap,pastel1:jp,pastel2:Mp,set1:Np,set2:Pp,set3:Fp,tableau10:`4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac`,tableau20:`4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5`};function km(e){if(k(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 Am(e,t){for(let n in e)Mm(n,t(e[n]))}var jm={};Am(Om,km),Am(Dm,e=>Cm(km(e)));function Mm(e,t){return e&&=e.toLowerCase(),arguments.length>1?(jm[e]=t,this):jm[e]}function Nm(e,t,n){return P(t)&&n!=null&&(t=Math.min(t,~~(Tt(e.domain())/n)||1)),Ze(t)&&(t.step,t=t.interval),t}function Pm(e,t,n){var r=e.range(),i=Math.floor(r[0]),a=Math.ceil(Qe(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],Qe(t)];t.length>n&&t.length>=3;)t=t.filter(function(e,t){return!(t%2)});t.length<3&&(t=o)}return t}function Fm(e,t){return e.bins?Pm(e,Im(e.bins,t)):e.ticks?e.ticks(t):e.domain()}function Im(e,t){var n=e.length,r=~~(n/(t||n));return r<2?e.slice():e.filter(function(e,t){return!(t%r)})}function Lm(e,t,n){var r=e.tickFormat?e.tickFormat(t,n):n?or(n):String;if(bm(e.type)){var i=zm(n);r=e.bins?i:Rm(r,i)}return r}function Rm(e,t){return function(n){return e(n)?t(n):``}}function zm(e){var t=Jn(e||`,`);if(t.precision==null){switch(t.precision=12,t.type){case`%`:t.precision-=2;break;case`e`:--t.precision;break}return Bm(or(t),or(`.1f`)(1)[1])}else return or(t)}function Bm(e,t){return function(n){var r=e(n),i=r.indexOf(t),a,o;if(i<0)return r;for(a=Vm(r,i),o=a<r.length?r.slice(a):``;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Vm(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 Hm=[],Um=[];function Wm(e,t){Um.push({guard:e,Source:t})}function Gm(e,t){for(let n of Hm)if(n.guard(e))return new n.Source(e,t);for(let n of Um)if(n.guard(e))return new n.Source(e,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}var Km=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`,Bn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
|
|
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(`
|
|
177
177
|
`)+`return function propagate(datum) {
|
|
178
178
|
if (stats.count === 0) {
|
|
179
179
|
stats.first = structuredClone(datum);
|
|
180
180
|
}
|
|
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
|
|
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)?Be(Function(`validator`,`
|
|
185
185
|
let validated = !validator;
|
|
186
186
|
return function accessField(datum) {
|
|
187
187
|
if (!validated) {
|
|
@@ -189,9 +189,9 @@ return groupData;`);return $c.set(t,i),i}function Yc(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||uh(t,e)}),[e],t):Je(e)}function uh(e,t){throw Error(`Invalid field "${t}". Available fields or properties: ${Object.keys(e).join(`, `)}`)}function dh(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=mh(t),r.scaleChannel=((Ah(t)&&t.resolutionChannel)??(Yh(e)&&e))||void 0,r.scaleChannel!==void 0&&(r.domainKeyBase=hh({scaleChannel:r.scaleChannel,source:ph(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(B(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(Oh(t))try{return r(z(t.field))}catch(e){throw Error(`Invalid field definition: ${e.message}`,{cause:e})}else if(Ph(t))return r(n.createExpression(t.expr));else if(kh(t))return i(t.datum);else if(Dh(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 fh(e){return e.scaleChannel!==void 0}function ph(e){if(Oh(e))return{kind:`field`,value:e.field};if(Ph(e))return{kind:`expr`,value:e.expr};if(kh(e))return{kind:`datum`,value:e.datum};if(Dh(e))return{kind:`value`,value:e.value};throw Error(`Cannot derive a domain key from channel definition: `+JSON.stringify(e))}function mh(e){let t=ph(e);return t.kind===`datum`||t.kind===`value`?`constant|`+vh(t.value):t.kind+`|`+_h(t)}function hh({scaleChannel:e,source:t,type:n}){if(!e)throw Error(`Cannot build a domain key without a scale channel.`);let r=e+`|`+t.kind+`|`+_h(t);return{domainKeyBase:r,domainKey:n?n+`|`+r:void 0}}function gh(e,t){let{domainKey:n,domainKeyBase:r}=hh({scaleChannel:e.scaleChannel,source:ph(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 _h(e){switch(e.kind){case`field`:case`expr`:return e.value;case`datum`:case`value`:return vh(e.value);default:throw Error(`Unknown domain key source.`)}}function vh(e){return B(e)?`expr:`+e.expr:e===void 0?`undefined`:JSON.stringify(e)}function yh(e,t,n,r){let i,a=vg(!1),o=()=>{if(i)return i;let o=n.findValue(e);if(!o)return a;let s={};if(rg(o)){let n=Object.keys(o.intervals);for(let r of n){let n=t[r];if(Oh(n)){s[r]=n.field;continue}else if(n&&`condition`in n){let e=n.condition;if(Oh(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=ng({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 bh(e,t,n,r){let i=Fh(t)||Ih(t)?Array.isArray(t.condition)?t.condition:[t.condition]:[],a=[...i,t],o=a.map((t,o)=>{let s=i[o];return{accessor:dh(e,t,r),predicate:s?.param?yh(s.param,n,r,s.empty):Object.assign(vg(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 xh(e,t){let n={},r=t=>e.getScaleResolution(t)?.getScale();for(let[i,a]of Object.entries(t)){if(!a)continue;let o=i;Sh(o)||(n[o]=Th(bh(o,a,t,e.paramRuntime),r))}return n}function Sh(e){return e===`key`||e===`search`}function Ch(e){return e.branches.map(e=>e.accessor)}function wh(e){return e.branches.find(e=>!e.accessor.constant)?.accessor}function Th(e,t){if(e.length===1){let n=Eh(e[0].accessor,t);return Object.assign(n,{branches:e})}let n=e.map(e=>e.predicate),r=e.map(e=>Eh(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 Eh(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:vg(!0)}],channelDef:i})}function Dh(e){return e&&`value`in e}function Oh(e){return e&&`field`in e}function kh(e){return e&&`datum`in e}function Ah(e){return Oh(e)||kh(e)||Ph(e)||Nh(e)}function jh(e){if(Ih(e)){let t=e.condition;if(!Array.isArray(t)&&Ah(t))return t}else if(Ah(e))return e}function Mh(e,t){let n=e.mark.encoding[t];if(Array.isArray(n))throw Error(`Not a channel def with scale!`);{let e=jh(n);if(e)return e}throw Error(`Not a channel def with scale!`)}function Nh(e){return e&&`chrom`in e}function Ph(e){return e&&`expr`in e}function Fh(e){return(Oh(e)||kh(e))&&`condition`in e}function Ih(e){return Dh(e)&&`condition`in e}var Lh=[`x`,`y`],Rh=[`x2`,`y2`],zh=[...Lh,...Rh];function Bh(e){return Lh.includes(e)}function Vh(e){return zh.includes(e)}var Hh={x:`x2`,y:`y2`},Uh=Object.fromEntries(Object.entries(Hh).map(e=>[e[1],e[0]]));function Wh(e){return e in Uh}function Gh(e){let t=Hh[e];if(t)return t;throw Error(`${e} has no secondary channel!`)}function Kh(e){return Uh[e]??e}function qh(e){return[`color`,`fill`,`stroke`].includes(Kh(e))}function Jh(e){return[`shape`].includes(e)}function Yh(e){return[`x`,`y`,`x2`,`y2`,`color`,`fill`,`stroke`,`opacity`,`fillOpacity`,`strokeOpacity`,`strokeWidth`,`size`,`shape`,`angle`,`dx`,`dy`,`sample`].includes(e)}function Xh(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 Zh(e){if(!Jh(e))throw Error(`Not a discrete channel: `+e);let t=new Map(Xh(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 Qh(e){return{type:`single`,datum:e,uniqueId:e?.[oh]}}function $h(e){return e??=[],{type:`multi`,data:new Map(e.map(e=>[e[oh],e]))}}function eg(e){return{type:`interval`,intervals:Object.fromEntries(e.map(e=>[e,null]))}}function tg(e,{add:t,remove:n,toggle:r}){let i=e.data;for(let e of t??[])i.set(e[oh],e);for(let e of n??[])i.delete(e[oh]);for(let e of r??[]){let t=e[oh];i.has(t)?i.delete(t):i.set(t,e)}return{type:`multi`,data:i}}function ng(e,t){let n=!!(e.empty??!0),r=hg(e.param),i=e.fields??{};if(ig(t))return`${r}.uniqueId == null ? ${n} : ${r}.uniqueId === datum[${JSON.stringify(oh)}]`;if(ag(t))return`${r}.data.size == 0 ? ${n} : mapHasKey(${r}.data, datum[${JSON.stringify(oh)}])`;if(rg(t)){let a=Object.keys(t.intervals),o=Object.keys(i).filter(Bh);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=Gh(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 rg(e){return e.type===`interval`}function ig(e){return e.type===`single`}function ag(e){return e.type===`multi`}function og(e){let t=typeof e==`string`?{type:e}:{...e};return t.on=t.on?dg(t.on):sg(t)?{type:`click`}:void 0,t.clear=t.clear===!1?void 0:t.clear===!0||t.clear==null?{type:`dblclick`}:dg(t.clear),sg(t)&&t.on.type===`click`&&(t.toggle=!0),t}function sg(e){return e&&e.type==`point`}function cg(e){return e&&e.type==`interval`}function lg(e){return Object.values(e.intervals).some(e=>e&&e.length===2)}function ug(e,t){return Object.entries(e.intervals).every(([e,n])=>(e==`x`||e==`y`)&&n&&n[0]<=t[e]&&n[1]>=t[e])}function dg(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 B(e){return typeof e==`object`&&!!e&&`expr`in e&&F(e.expr)}function fg(e){if(B(e))throw Error(`ExprRef `+JSON.stringify(e)+` not allowed here. Expected a scalar value.`);return e}function pg(e){return(`expr`in e||`bind`in e)&&!(`select`in e)}function mg(e){return!(`expr`in e||`bind`in e)&&`select`in e}function hg(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 gg(e,t,n){if(`select`in e){let t=og(e.select);if(sg(t))return t.toggle?$h():Qh(null);if(cg(t)){if(!t.encodings)throw Error(`Interval selection "`+e.name+`" must have encodings defined!`);return eg(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 _g(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(B(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 vg(e){return Object.assign(()=>e,{subscribe:()=>()=>void 0,invalidate:()=>void 0,identifier:()=>`constant`,fields:[],globals:[],code:JSON.stringify(e)})}function yg(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 bg=class extends Zm{#e=new AbortController;#t=[0,0];#n=[0,0];#r=0;params;setupDebouncing(e){let t=()=>fg(e.debounce),n=e.debounceMode;if(n==`domain`)this.onDomainChanged=yg(this.onDomainChanged.bind(this),t,!1);else if(n==`window`)this.loadInterval=yg(this.loadInterval.bind(this),t,!1);else throw Error(`Invalid debounceMode: `+n)}onDomainChanged(e){this.#n=e;let t=fg(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);try{let i=await Promise.all(r.map(async e=>t(e,n)));if(!n.aborted)return this.setLoadingStatus(`complete`),this._lastLoadedDomain=Array.from(e),i}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))}},xg=n((()=>{})),Sg,Cg=n((()=>{Sg=class{constructor(e){this.blob=e}async read(e,t=0){if(!e)return new Uint8Array;let n=t,r=n+e,i=this.blob.slice(n,r);return i.bytes?i.bytes():new Uint8Array(await i.arrayBuffer())}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 this.blob.bytes?this.blob.bytes():new Uint8Array(await this.blob.arrayBuffer())}async stat(){return{size:this.blob.size}}async close(){}}}));function wg(e){return(typeof e==`object`&&e&&`message`in e?e.message:`${e}`).replace(/\.$/,``)}var Tg,Eg=n((()=>{Tg=class{constructor(e,t={}){this.baseOverrides={},this.url=e;let n=t.fetch||globalThis.fetch.bind(globalThis);t.overrides&&(this.baseOverrides=t.overrides),this.fetchImplementation=n}async fetch(e,t){let n=t=>Error(`${wg(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;let{headers:r={},signal:i,overrides:a={}}=n;e<1/0?r.range=`bytes=${t}-${t+e-1}`:e===1/0&&t!==0&&(r.range=`bytes=${t}-`);let o=await this.fetch(this.url,{...this.baseOverrides,...a,headers:{...this.baseOverrides.headers,...a.headers,...r},method:`GET`,redirect:`follow`,mode:`cors`,signal:i});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${this.url}`);if(o.status===200&&t===0||o.status===206){let t=o.headers.get(`content-range`),n=/\/(\d+)$/.exec(t||``);n?.[1]&&(this._stat={size:parseInt(n[1],10)});let r=o.bytes?await o.bytes():new Uint8Array(await o.arrayBuffer());return r.byteLength<=e?r:r.subarray(0,e)}throw Error(o.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${o.status} fetching ${this.url}`)}async readFile(e={}){let t,n;if(typeof e==`string`)t=e,n={};else{t=e.encoding;let{encoding:r,...i}=e;n=i}let{headers:r={},signal:i,overrides:a={}}=n,o=await this.fetch(this.url,{...this.baseOverrides,...a,headers:{...this.baseOverrides.headers,...a.headers,...r},method:`GET`,redirect:`follow`,mode:`cors`,signal:i});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${this.url}`);if(t===`utf8`)return o.text();if(t)throw Error(`unsupported encoding: ${t}`);return o.bytes?o.bytes():new Uint8Array(await o.arrayBuffer())}async stat(){if(!this._stat&&(await this.read(10,0),!this._stat))throw Error(`unable to determine size of file at ${this.url}`);return this._stat}async close(){}}})),Dg=r({BlobFile:()=>Sg,LocalFile:()=>Og,RemoteFile:()=>Tg}),Og,kg=n((()=>{xg(),Cg(),Eg(),Og=class{readFile(){throw Error(`unimplemented`)}read(){throw Error(`unimplemented`)}close(){throw Error(`unimplemented`)}}}));function Ag(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)*Mg+(n>>>0)}var jg,Mg,Ng=n((()=>{jg=65536,Mg=jg*jg}));function Pg(e,t,n){let r=t[Fg],i=n?n[Fg]:1/0;return r<=e&&i>e?0:r<e?-1:1}var Fg,Ig,Lg=n((()=>{Ng(),Fg=1,Ig=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=Ag(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=Ag(r,n*16),i=Ag(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=Pg(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=Pg(t,r[s],r[s+1]);i.push(r[s]);let l=s+1;for(;l<r.length&&(i.push(r[l]),!(r[l][Fg]>=n));l+=1);return i[i.length-1][Fg]<n&&i.push([]),i}}})),Rg=n((()=>{}));function zg(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Bg(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)zg(n,r)&&(e[r]=n[r])}}return e}function Vg(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)}var Hg,Ug,Wg,Gg,Kg,qg,Jg,Yg,Xg=n((()=>{Hg={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)}},Ug={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)}},Wg=()=>{let e=typeof Uint8Array<`u`&&typeof Uint16Array<`u`&&typeof Int32Array<`u`;return Wg=()=>e,e},Gg=(e,t,n,r,i)=>(Gg=Wg()?Hg.arraySet:Ug.arraySet,Gg(e,t,n,r,i)),Kg=e=>(Kg=Wg()?Hg.flattenChunks:Ug.flattenChunks,Kg(e)),qg=e=>(qg=Wg()?Hg.Buf8:Ug.Buf8,qg(e)),Jg=e=>(Jg=Wg()?Hg.Buf16:Ug.Buf16,Jg(e)),Yg=e=>(Yg=Wg()?Hg.Buf32:Ug.Buf32,Yg(e))}));function Zg(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 Qg(e,t){if(t<65534&&(e.subarray&&r_()||!e.subarray&&n_()))return String.fromCharCode.apply(null,Vg(e,t));for(var n=``,r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n}function $g(e){for(var t=new Uint8Array(e.length),n=0,r=t.length;n<r;n++)t[n]=e.charCodeAt(n);return t}function e_(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=i_(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 Qg(s,r)}function t_(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+i_(e[n])>t?n:t}var n_,r_,i_,a_=n((()=>{Xg(),n_=function(){let e=!0;try{String.fromCharCode.apply(null,[0])}catch{e=!1}return n_=()=>e,e},r_=function(){let e=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{e=!1}return r_=()=>e,e},i_=function(e){for(var t=qg(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,i_=e=>t[e],t[e]}}));function o_(){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 s_=n((()=>{}));function c_(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 l_=n((()=>{}));function u_(){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 d_(e,t,n,r){var i=f_(),a=r+n;e^=-1;for(var o=r;o<a;o++)e=e>>>8^i[(e^t[o])&255];return e^-1}var f_,p_=n((()=>{f_=function(){let e=u_();return f_=()=>e,e}}));function m_(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=h_;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=h_;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=h_;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=g_;break top}else{e.msg=`invalid literal/length code`,n.mode=h_;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 h_,g_,__=n((()=>{h_=30,g_=12}));function v_(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=Jg(y_+1),ee=Jg(y_+1),te=null,ne=0,re,ie,ae;for(l=0;l<=y_;l++)D[l]=0;for(u=0;u<r;u++)D[t[n+u]]++;for(p=c,f=y_;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<=y_;l++)if(g<<=1,g-=D[l],g<0)return-1;if(g>0&&(e===S_||f!==1))return-1;for(ee[1]=0,l=1;l<y_;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===S_?(w=te=o,E=19):e===C_?(w=T_,T-=257,te=E_,ne-=257,E=256):(w=D_,te=O_,E=-1),v=0,u=0,l=d,C=a,m=p,h=0,x=-1,_=1<<p,S=_-1,e===C_&&_>b_||e===w_&&_>x_)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===C_&&_>b_||e===w_&&_>x_)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 y_,b_,x_,S_,C_,w_,T_,E_,D_,O_,k_=n((()=>{Xg(),y_=15,b_=852,x_=592,S_=0,C_=1,w_=2,T_=[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],E_=[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],D_=[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],O_=[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 A_(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function j_(){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=Jg(320),this.work=Jg(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function M_(e){var t;return!e||!e.state?Z_:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=``,t.wrap&&(e.adler=t.wrap&1),t.mode=nv,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=Yg(Nv),t.distcode=t.distdyn=Yg(Pv),t.sane=1,t.back=-1,J_)}function N_(e){var t;return!e||!e.state?Z_:(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,M_(e))}function P_(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))?Z_:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,N_(e))}function F_(e,t){var n,r;return e?(r=new j_,e.state=r,r.window=null,n=P_(e,t),n!==J_&&(e.state=null),n):Z_}function I_(e){if(Fv){var t;for(Iv=Yg(512),Lv=Yg(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(v_(U_,e.lens,0,288,Iv,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;v_(W_,e.lens,0,32,Lv,0,e.work,{bits:5}),Fv=!1}e.lencode=Iv,e.lenbits=9,e.distcode=Lv,e.distbits=5}function L_(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=qg(a.wsize)),r>=a.wsize?(Gg(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),Gg(a.window,t,n-r,i,a.wnext),r-=i,r?(Gg(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 R_(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=qg(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 Z_;n=e.state,n.mode===pv&&(n.mode=mv),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=J_;inf_leave:for(;;)switch(n.mode){case nv:if(n.wrap===0){n.mode=mv;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=d_(n.check,T,2,0),l=0,u=0,n.mode=rv;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=V;break}if((l&15)!==tv){e.msg=`unknown compression method`,n.mode=V;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=V;break}n.dmax=1<<C,e.adler=n.check=1,n.mode=l&512?dv:pv,l=0,u=0;break;case rv:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.flags=l,(n.flags&255)!==tv){e.msg=`unknown compression method`,n.mode=V;break}if(n.flags&57344){e.msg=`unknown header flags set`,n.mode=V;break}n.head&&(n.head.text=l>>8&1),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=d_(n.check,T,2,0)),l=0,u=0,n.mode=iv;case iv: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=d_(n.check,T,4,0)),l=0,u=0,n.mode=av;case av: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=d_(n.check,T,2,0)),l=0,u=0,n.mode=ov;case ov: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=d_(n.check,T,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=sv;case sv: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)),Gg(n.head.extra,r,a,p,C)),n.flags&512&&(n.check=d_(n.check,r,p,a)),s-=p,a+=p,n.length-=p),n.length))break inf_leave;n.length=0,n.mode=cv;case cv: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=d_(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=lv;case lv: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=d_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.comment=null);n.mode=uv;case uv: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=V;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=pv;break;case dv:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}e.adler=n.check=A_(l),l=0,u=0,n.mode=fv;case fv: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,X_;e.adler=n.check=1,n.mode=pv;case pv:if(t===K_||t===q_)break inf_leave;case mv:if(n.last){l>>>=u&7,u-=u&7,n.mode=Ov;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=hv;break;case 1:if(I_(n),n.mode=xv,t===q_){l>>>=2,u-=2;break inf_leave}break;case 2:n.mode=vv;break;case 3:e.msg=`invalid block type`,n.mode=V}l>>>=2,u-=2;break;case hv: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=V;break}if(n.length=l&65535,l=0,u=0,n.mode=gv,t===q_)break inf_leave;case gv:n.mode=_v;case _v:if(p=n.length,p){if(p>s&&(p=s),p>c&&(p=c),p===0)break inf_leave;Gg(i,r,a,p,o),s-=p,a+=p,c-=p,o+=p,n.length-=p;break}n.mode=pv;break;case vv: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=V;break}n.have=0,n.mode=yv;case yv: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=v_(H_,n.lens,0,19,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid code lengths set`,n.mode=V;break}n.have=0,n.mode=bv;case bv: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=V;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=V;break}for(;p--;)n.lens[n.have++]=C}}if(n.mode===V)break;if(n.lens[256]===0){e.msg=`invalid code -- missing end-of-block`,n.mode=V;break}if(n.lenbits=9,E={bits:n.lenbits},w=v_(U_,n.lens,0,n.nlen,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid literal/lengths set`,n.mode=V;break}if(n.distbits=6,n.distcode=n.distdyn,E={bits:n.distbits},w=v_(W_,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,E),n.distbits=E.bits,w){e.msg=`invalid distances set`,n.mode=V;break}if(n.mode=xv,t===q_)break inf_leave;case xv:n.mode=Sv;case Sv: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,m_(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===pv&&(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=Dv;break}if(v&32){n.back=-1,n.mode=pv;break}if(v&64){e.msg=`invalid literal/length code`,n.mode=V;break}n.extra=v&15,n.mode=Cv;case Cv: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=wv;case wv: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=V;break}n.offset=y,n.extra=v&15,n.mode=Tv;case Tv: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=V;break}n.mode=Ev;case Ev: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=V;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=Sv);break;case Dv:if(c===0)break inf_leave;i[o++]=n.length,c--,n.mode=Sv;break;case Ov: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?d_(n.check,i,f,o-f):c_(n.check,i,f,o-f)),f=c,(n.flags?l:A_(l))!==n.check){e.msg=`incorrect data check`,n.mode=V;break}l=0,u=0}n.mode=kv;case kv: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=V;break}l=0,u=0}n.mode=Av;case Av:w=Y_;break inf_leave;case V:w=Q_;break inf_leave;case jv:return $_;case Mv:default:return Z_}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<V&&(n.mode<Ov||t!==G_))&&L_(e,e.output,e.next_out,f-e.avail_out)?(n.mode=jv,$_):(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?d_(n.check,i,f,e.next_out-f):c_(n.check,i,f,e.next_out-f)),e.data_type=n.bits+(n.last?64:0)+(n.mode===pv?128:0)+(n.mode===xv||n.mode===gv?256:0),(d===0&&f===0||t===G_)&&w===J_&&(w=ev),w)}function z_(e){if(!e||!e.state)return Z_;var t=e.state;return t.window&&=null,e.state=null,J_}function B_(e,t){var n;return!e||!e.state||(n=e.state,!(n.wrap&2))?Z_:(n.head=t,t.done=!1,J_)}function V_(e,t){var n=t.length,r,i,a;return!e||!e.state||(r=e.state,r.wrap!==0&&r.mode!==fv)?Z_:r.mode===fv&&(i=1,i=c_(i,t,n,0),i!==r.check)?Q_:(a=L_(e,t,n,n),a?(r.mode=jv,$_):(r.havedict=1,J_))}var H_,U_,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,V,jv,Mv,Nv,Pv,Fv,Iv,Lv,Rv=n((()=>{l_(),p_(),__(),k_(),Xg(),H_=0,U_=1,W_=2,G_=4,K_=5,q_=6,J_=0,Y_=1,X_=2,Z_=-2,Q_=-3,$_=-4,ev=-5,tv=8,nv=1,rv=2,iv=3,av=4,ov=5,sv=6,cv=7,lv=8,uv=9,dv=10,fv=11,pv=12,mv=13,hv=14,gv=15,_v=16,vv=17,yv=18,bv=19,xv=20,Sv=21,Cv=22,wv=23,Tv=24,Ev=25,Dv=26,Ov=27,kv=28,Av=29,V=30,jv=31,Mv=32,Nv=852,Pv=592,Fv=!0})),zv,Bv=n((()=>{zv={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 Vv(){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 Hv=n((()=>{}));function Uv(e,t){var n=new Gv(t);if(n.push(e,!0),n.err)throw n.msg||zv[n.err];return n.result}var Wv,Gv,Kv,qv=n((()=>{Xg(),a_(),Rg(),s_(),Rv(),Bv(),Hv(),Wv=Object.prototype.toString,Gv=class e{constructor(t){if(!(this instanceof e))return new e(t);this.options=Bg({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 Vv,this.strm.avail_out=0;var r=F_(this.strm,n.windowBits);if(r!==0||(this.header=new o_,B_(this.strm,this.header),n.dictionary&&(typeof n.dictionary==`string`?n.dictionary=Zg(n.dictionary):Wv.call(n.dictionary)===`[object ArrayBuffer]`&&(n.dictionary=new Uint8Array(n.dictionary)),n.raw&&(r=V_(this.strm,n.dictionary),r!==0))))throw Error(zv[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=$g(e):Wv.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=qg(r),n.next_out=0,n.avail_out=r),a=R_(n,0),a===2&&i&&(u=typeof i==`string`?Zg(i):Wv.call(i)===`[object ArrayBuffer]`?new Uint8Array(i):i,a=V_(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=t_(n.output,n.next_out),c=n.next_out-s,l=e_(n.output,s),n.next_out=c,n.avail_out=r-c,c&&Gg(n.output,n.output,s,c,0),this.onData(l)):this.onData(Vg(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=z_(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=Kg(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}},Kv=Uv})),Jv=n((()=>{})),Yv=n((()=>{Rg(),qv(),Jv()}));function Xv(e){try{let a=H.__wbindgen_add_to_stack_pointer(-16),o=uy(e,H.__wbindgen_export2),s=My;H.decompress_all(a,o,s);var t=ay().getInt32(a+0,!0),n=ay().getInt32(a+4,!0),r=ay().getInt32(a+8,!0);if(ay().getInt32(a+12,!0))throw dy(r);var i=iy(t,n).slice();return H.__wbindgen_export(t,n*1,1),i}finally{H.__wbindgen_add_to_stack_pointer(16)}}function Zv(e){try{let r=H.__wbindgen_add_to_stack_pointer(-16),i=uy(e,H.__wbindgen_export2),a=My;H.decompress_block(r,i,a);var t=ay().getInt32(r+0,!0),n=ay().getInt32(r+4,!0);if(ay().getInt32(r+8,!0))throw dy(n);return xy.__wrap(t)}finally{H.__wbindgen_add_to_stack_pointer(16)}}function Qv(e,t,n,r,i){try{let s=H.__wbindgen_add_to_stack_pointer(-16),c=uy(e,H.__wbindgen_export2),l=My;H.decompress_chunk_slice(s,c,l,t,n,r,i);var a=ay().getInt32(s+0,!0),o=ay().getInt32(s+4,!0);if(ay().getInt32(s+8,!0))throw dy(o);return by.__wrap(a)}finally{H.__wbindgen_add_to_stack_pointer(16)}}function $v(e,t){return ty(Error(sy(e,t)))}function ey(e,t){throw Error(sy(e,t))}function ty(e){Oy===Dy.length&&Dy.push(Dy.length+1);let t=Oy;return Oy=Dy[t],Dy[t]=e,t}function ny(e){e<132||(Dy[e]=Oy,Oy=e)}function ry(e,t){return e>>>=0,oy().subarray(e/8,e/8+t)}function iy(e,t){return e>>>=0,cy().subarray(e/1,e/1+t)}function ay(){return(wy===null||wy.buffer.detached===!0||wy.buffer.detached===void 0&&wy.buffer!==H.memory.buffer)&&(wy=new DataView(H.memory.buffer)),wy}function oy(){return(Ty===null||Ty.byteLength===0)&&(Ty=new Float64Array(H.memory.buffer)),Ty}function sy(e,t){return e>>>=0,fy(e,t)}function cy(){return(Ey===null||Ey.byteLength===0)&&(Ey=new Uint8Array(H.memory.buffer)),Ey}function ly(e){return Dy[e]}function uy(e,t){let n=t(e.length*1,1)>>>0;return cy().set(e,n/1),My=e.length,n}function dy(e){let t=ly(e);return ny(e),t}function fy(e,t){return jy+=t,jy>=Ay&&(ky=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),ky.decode(),jy=t),ky.decode(cy().subarray(e,e+t))}function py(e){H=e}async function my(){return Ny||(Py||=(async()=>{let e=await(await fetch(yy)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":vy});return Ny=t.exports,py(Ny),Ny})(),Py)}async function hy(e){return await my(),Xv(e)}async function gy(e,t,n,r,i){await my();let a=Qv(e,t,n,r,i),o=a.buffer,s=[...a.cpositions],c=[...a.dpositions];return a.free(),{buffer:o,cpositions:s,dpositions:c}}var _y,vy,yy,by,xy,Sy,Cy,wy,Ty,Ey,Dy,Oy,ky,Ay,jy,My,H,Ny,Py,Fy=n((()=>{_y={},_y.d=(e,t)=>{for(var n in t)_y.o(t,n)&&!_y.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},_y.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),_y.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},vy={},_y.r(vy),_y.d(vy,{ChunkSliceResult:()=>by,DecompressResult:()=>xy,__wbg_Error_8c4e43fe74559d73:()=>$v,__wbg___wbindgen_throw_be289d5034ed271b:()=>ey,__wbg_set_wasm:()=>py,decompress_all:()=>Xv,decompress_block:()=>Zv,decompress_chunk_slice:()=>Qv}),yy=`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`,by=class e{static __wrap(t){t>>>=0;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();H.__wbg_chunksliceresult_free(e,0)}get buffer(){try{let r=H.__wbindgen_add_to_stack_pointer(-16);H.chunksliceresult_buffer(r,this.__wbg_ptr);var e=ay().getInt32(r+0,!0),t=ay().getInt32(r+4,!0),n=iy(e,t).slice();return H.__wbindgen_export(e,t*1,1),n}finally{H.__wbindgen_add_to_stack_pointer(16)}}get cpositions(){try{let r=H.__wbindgen_add_to_stack_pointer(-16);H.chunksliceresult_cpositions(r,this.__wbg_ptr);var e=ay().getInt32(r+0,!0),t=ay().getInt32(r+4,!0),n=ry(e,t).slice();return H.__wbindgen_export(e,t*8,8),n}finally{H.__wbindgen_add_to_stack_pointer(16)}}get dpositions(){try{let r=H.__wbindgen_add_to_stack_pointer(-16);H.chunksliceresult_dpositions(r,this.__wbg_ptr);var e=ay().getInt32(r+0,!0),t=ay().getInt32(r+4,!0),n=ry(e,t).slice();return H.__wbindgen_export(e,t*8,8),n}finally{H.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(by.prototype[Symbol.dispose]=by.prototype.free),xy=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Cy.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Cy.unregister(this),e}free(){let e=this.__destroy_into_raw();H.__wbg_decompressresult_free(e,0)}get bytes_read(){return H.decompressresult_bytes_read(this.__wbg_ptr)>>>0}get data(){try{let r=H.__wbindgen_add_to_stack_pointer(-16);H.decompressresult_data(r,this.__wbg_ptr);var e=ay().getInt32(r+0,!0),t=ay().getInt32(r+4,!0),n=iy(e,t).slice();return H.__wbindgen_export(e,t*1,1),n}finally{H.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(xy.prototype[Symbol.dispose]=xy.prototype.free),Sy=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>H.__wbg_chunksliceresult_free(e>>>0,1)),Cy=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>H.__wbg_decompressresult_free(e>>>0,1)),wy=null,Ty=null,Ey=null,Dy=Array(128).fill(void 0),Dy.push(void 0,null,!0,!1),Oy=Dy.length,ky=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),ky.decode(),Ay=2146435072,jy=0,My=0,Ny=null,Py=null}));function Iy(e){return e.length>=2&&e[0]===31&&e[1]===139}async function Ly(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 Kv(e,void 0)}async function Ry(e){try{return await hy(e)}catch(t){if(/invalid bgzf header/.exec(`${t}`)){if(Iy(e))return Ly(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 zy(e,t,n){try{let{minv:n,maxv:r}=t,i=await gy(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 By=n((()=>{Yv(),Fy()}));function Vy(e){let t=0;for(let n of e)t+=n.length;return t}function Hy(e,t){let n=new Uint8Array(t??Vy(e)),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Uy=n((()=>{})),Wy,Gy=n((()=>{Lg(),By(),Uy(),Wy=class{filehandle;gzi;constructor({filehandle:e,gziFilehandle:t}){this.filehandle=e,this.gzi=new Ig({filehandle:t})}async _readAndUncompressBlock(e,t){let n=t;n||=(await this.filehandle.stat()).size;let r=n-e;return Ry(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 Hy(r)}}})),Ky=n((()=>{Gy(),By()}));function qy(e,t,n,r){return e+t*Math.floor(r/n)+r%n}async function Jy(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 tb,nb=n((()=>{kg(),Qy(),Xy(),tb=class{constructor({fasta:e,path:t}){if(e)this.fasta=e;else if(t)this.fasta=new Og(t);else throw Error(`Need to pass fasta or path`);this.data=this.fasta.readFile().then(e=>eb(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)}}})),rb=class extends bg{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(()=>(nb(),$y)),Promise.resolve().then(()=>(kg(),Dg))]).then(([{IndexedFasta:t},{RemoteFile:n}])=>{let r=e=>new n(rh(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 ib(e){return e?.type==`indexedFasta`}Wm(ib,rb);function ab(e,t,n){let r=Number(!!n),i=Number(!n);return BigInt(e.getInt32(t,n)*i+e.getInt32(t+4,n)*r)<<sb|BigInt(e.getUint32(t,n)*r+e.getUint32(t+4,n)*i)}function ob(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)<<sb|BigInt(r*a+i*o)}var sb,cb=n((()=>{sb=BigInt(32)})),lb=n((()=>{cb(),`getBigInt64`in DataView||(DataView.prototype.getBigInt64=function(e,t){return ab(this,e,t)}),`getBigUint64`in DataView||(DataView.prototype.getBigUint64=function(e,t){return ob(this,e,t)})})),ub,db,fb=n((()=>{ub=class{},db=class{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(e=new ub){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()}}})),pb,mb=n((()=>{pb=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)}}})),hb,gb=n((()=>{fb(),mb(),hb=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 db,a=new pb;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}}})),_b=n((()=>{gb()})),vb,U,W,yb,G,bb,xb,Sb,Cb,wb,Tb,Eb,Db,Ob,kb,Ab,jb,Mb,Nb=n((()=>{vb=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},U=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)},Mb=class extends Map{constructor(e={}){if(super(),W.add(this),yb.set(this,0),G.set(this,new Map),bb.set(this,new Map),xb.set(this,void 0),Sb.set(this,void 0),Cb.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");vb(this,xb,e.maxSize,`f`),vb(this,Sb,e.maxAge||1/0,`f`),vb(this,Cb,e.onEviction,`f`)}get __oldCache(){return U(this,bb,`f`)}get(e){if(U(this,G,`f`).has(e)){let t=U(this,G,`f`).get(e);return U(this,W,`m`,Db).call(this,e,t)}if(U(this,bb,`f`).has(e)){let t=U(this,bb,`f`).get(e);if(!U(this,W,`m`,Tb).call(this,e,t))return U(this,W,`m`,Ab).call(this,e,t),t.value}}set(e,t,{maxAge:n=U(this,Sb,`f`)}={}){let r=typeof n==`number`&&n!==1/0?Date.now()+n:void 0;return U(this,G,`f`).has(e)?U(this,G,`f`).set(e,{value:t,expiry:r}):U(this,W,`m`,kb).call(this,e,{value:t,expiry:r}),this}has(e){return U(this,G,`f`).has(e)?!U(this,W,`m`,Tb).call(this,e,U(this,G,`f`).get(e)):U(this,bb,`f`).has(e)?!U(this,W,`m`,Tb).call(this,e,U(this,bb,`f`).get(e)):!1}peek(e){if(U(this,G,`f`).has(e))return U(this,W,`m`,Ob).call(this,e,U(this,G,`f`));if(U(this,bb,`f`).has(e))return U(this,W,`m`,Ob).call(this,e,U(this,bb,`f`))}expiresIn(e){let t=U(this,G,`f`).get(e)??U(this,bb,`f`).get(e);if(t)return t.expiry?t.expiry-Date.now():1/0}delete(e){var t;let n=U(this,G,`f`).delete(e);return n&&vb(this,yb,(t=U(this,yb,`f`),t--,t),`f`),U(this,bb,`f`).delete(e)||n}clear(){U(this,G,`f`).clear(),U(this,bb,`f`).clear(),vb(this,yb,0,`f`)}resize(e){if(!(e&&e>0))throw TypeError("`maxSize` must be a number greater than 0");let t=[...U(this,W,`m`,jb).call(this)],n=t.length-e;n<0?(vb(this,G,new Map(t),`f`),vb(this,bb,new Map,`f`),vb(this,yb,t.length,`f`)):(n>0&&U(this,W,`m`,wb).call(this,t.slice(0,n)),vb(this,bb,new Map(t.slice(n)),`f`),vb(this,G,new Map,`f`),vb(this,yb,0,`f`)),vb(this,xb,e,`f`)}evict(e=1){let t=e;if(!t||t<=0)return;let n=[...U(this,W,`m`,jb).call(this)],r=Math.trunc(Math.min(t,Math.max(n.length-1,0)));r<=0||(U(this,W,`m`,wb).call(this,n.slice(0,r)),vb(this,bb,new Map(n.slice(r)),`f`),vb(this,G,new Map,`f`),vb(this,yb,0,`f`))}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[(yb=new WeakMap,G=new WeakMap,bb=new WeakMap,xb=new WeakMap,Sb=new WeakMap,Cb=new WeakMap,W=new WeakSet,wb=function(e){if(typeof U(this,Cb,`f`)==`function`)for(let[t,n]of e)U(this,Cb,`f`).call(this,t,n.value)},Tb=function(e,t){return typeof t.expiry==`number`&&t.expiry<=Date.now()?(typeof U(this,Cb,`f`)==`function`&&U(this,Cb,`f`).call(this,e,t.value),this.delete(e)):!1},Eb=function(e,t){if(!U(this,W,`m`,Tb).call(this,e,t))return t.value},Db=function(e,t){return t.expiry?U(this,W,`m`,Eb).call(this,e,t):t.value},Ob=function(e,t){let n=t.get(e);return U(this,W,`m`,Db).call(this,e,n)},kb=function(e,t){var n;U(this,G,`f`).set(e,t),vb(this,yb,(n=U(this,yb,`f`),n++,n),`f`),U(this,yb,`f`)>=U(this,xb,`f`)&&(vb(this,yb,0,`f`),U(this,W,`m`,wb).call(this,U(this,bb,`f`)),vb(this,bb,U(this,G,`f`),`f`),vb(this,G,new Map,`f`))},Ab=function(e,t){U(this,bb,`f`).delete(e),U(this,W,`m`,kb).call(this,e,t)},jb=function*(){for(let e of U(this,bb,`f`)){let[t,n]=e;U(this,G,`f`).has(t)||U(this,W,`m`,Tb).call(this,t,n)||(yield e)}for(let e of U(this,G,`f`)){let[t,n]=e;U(this,W,`m`,Tb).call(this,t,n)||(yield e)}},Symbol.iterator)](){for(let e of U(this,G,`f`)){let[t,n]=e;U(this,W,`m`,Tb).call(this,t,n)||(yield[t,n.value])}for(let e of U(this,bb,`f`)){let[t,n]=e;U(this,G,`f`).has(t)||U(this,W,`m`,Tb).call(this,t,n)||(yield[t,n.value])}}*entriesDescending(){let e=[...U(this,G,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];U(this,W,`m`,Tb).call(this,n,r)||(yield[n,r.value])}e=[...U(this,bb,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];U(this,G,`f`).has(n)||U(this,W,`m`,Tb).call(this,n,r)||(yield[n,r.value])}}*entriesAscending(){for(let[e,t]of U(this,W,`m`,jb).call(this))yield[e,t.value]}get size(){if(!U(this,yb,`f`))return U(this,bb,`f`).size;let e=0;for(let t of U(this,bb,`f`).keys())U(this,G,`f`).has(t)||e++;return Math.min(U(this,yb,`f`)+e,U(this,xb,`f`))}get maxSize(){return U(this,xb,`f`)}get maxAge(){return U(this,Sb,`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 Pb(e){let t=[...e].sort((e,t)=>e.min===t.min?e.max-t.max: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 Fb=n((()=>{}));function Ib(e,t,n,r,i,a){try{let u=K.__wbindgen_add_to_stack_pointer(-16),d=$b(e,K.__wbindgen_export),f=bx,p=Qb(t,K.__wbindgen_export),m=bx,h=Qb(n,K.__wbindgen_export),g=bx;K.decompress_and_parse_bigwig(u,d,f,p,m,h,g,r,i,a);var o=qb().getInt32(u+0,!0),s=qb().getInt32(u+4,!0),c=qb().getInt32(u+8,!0);if(qb().getInt32(u+12,!0))throw ex(c);var l=Kb(o,s).slice();return K.__wbindgen_export2(o,s*1,1),l}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Lb(e,t,n,r,i,a,o){try{let d=K.__wbindgen_add_to_stack_pointer(-16),f=$b(e,K.__wbindgen_export),p=bx,m=Qb(t,K.__wbindgen_export),h=bx,g=Qb(n,K.__wbindgen_export),_=bx;K.decompress_and_parse_summary(d,f,p,m,h,g,_,r,i,a,o);var s=qb().getInt32(d+0,!0),c=qb().getInt32(d+4,!0),l=qb().getInt32(d+8,!0);if(qb().getInt32(d+12,!0))throw ex(l);var u=Kb(s,c).slice();return K.__wbindgen_export2(s,c*1,1),u}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Rb(e,t){try{let o=K.__wbindgen_add_to_stack_pointer(-16),s=$b(e,K.__wbindgen_export),c=bx;K.inflate_raw(o,s,c,t);var n=qb().getInt32(o+0,!0),r=qb().getInt32(o+4,!0),i=qb().getInt32(o+8,!0);if(qb().getInt32(o+12,!0))throw ex(i);var a=Kb(n,r).slice();return K.__wbindgen_export2(n,r*1,1),a}finally{K.__wbindgen_add_to_stack_pointer(16)}}function zb(e,t,n,r){try{let c=K.__wbindgen_add_to_stack_pointer(-16),l=$b(e,K.__wbindgen_export),u=bx,d=Qb(t,K.__wbindgen_export),f=bx,p=Qb(n,K.__wbindgen_export),m=bx;K.inflate_raw_batch(c,l,u,d,f,p,m,r);var i=qb().getInt32(c+0,!0),a=qb().getInt32(c+4,!0),o=qb().getInt32(c+8,!0);if(qb().getInt32(c+12,!0))throw ex(o);var s=Kb(i,a).slice();return K.__wbindgen_export2(i,a*1,1),s}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Bb(e){try{let a=K.__wbindgen_add_to_stack_pointer(-16),o=$b(e,K.__wbindgen_export),s=bx;K.inflate_raw_unknown_size(a,o,s);var t=qb().getInt32(a+0,!0),n=qb().getInt32(a+4,!0),r=qb().getInt32(a+8,!0);if(qb().getInt32(a+12,!0))throw ex(r);var i=Kb(t,n).slice();return K.__wbindgen_export2(t,n*1,1),i}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Vb(e,t,n){try{let o=K.__wbindgen_add_to_stack_pointer(-16),s=$b(e,K.__wbindgen_export),c=bx;K.parse_bigwig_block(o,s,c,t,n);var r=qb().getInt32(o+0,!0),i=qb().getInt32(o+4,!0),a=Kb(r,i).slice();return K.__wbindgen_export2(r,i*1,1),a}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Hb(e,t,n,r){try{let s=K.__wbindgen_add_to_stack_pointer(-16),c=$b(e,K.__wbindgen_export),l=bx;K.parse_summary_block(s,c,l,t,n,r);var i=qb().getInt32(s+0,!0),a=qb().getInt32(s+4,!0),o=Kb(i,a).slice();return K.__wbindgen_export2(i,a*1,1),o}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Ub(e,t){return Wb(Error(Jb(e,t)))}function Wb(e){gx===hx.length&&hx.push(hx.length+1);let t=gx;return gx=hx[t],hx[t]=e,t}function Gb(e){e<1028||(hx[e]=gx,gx=e)}function Kb(e,t){return e>>>=0,Xb().subarray(e/1,e/1+t)}function qb(){return(fx===null||fx.buffer.detached===!0||fx.buffer.detached===void 0&&fx.buffer!==K.memory.buffer)&&(fx=new DataView(K.memory.buffer)),fx}function Jb(e,t){return e>>>=0,tx(e,t)}function Yb(){return(px===null||px.byteLength===0)&&(px=new Uint32Array(K.memory.buffer)),px}function Xb(){return(mx===null||mx.byteLength===0)&&(mx=new Uint8Array(K.memory.buffer)),mx}function Zb(e){return hx[e]}function Qb(e,t){let n=t(e.length*4,4)>>>0;return Yb().set(e,n/4),bx=e.length,n}function $b(e,t){let n=t(e.length*1,1)>>>0;return Xb().set(e,n/1),bx=e.length,n}function ex(e){let t=Zb(e);return Gb(e),t}function tx(e,t){return yx+=t,yx>=vx&&(_x=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),_x.decode(),yx=t),_x.decode(Xb().subarray(e,e+t))}function nx(e){K=e}async function rx(){return xx||(Sx||=(async()=>{let e=await(await fetch(dx)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./inflate_wasm_bg.js":ux});return xx=t.exports,nx(xx),xx})(),Sx)}async function ix(e,t,n,r){await rx();let i=zb(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 ax(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 ox(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 sx(e,t,n,r,i,a){return await rx(),ax(Ib(e,t,n,r,i,a))}async function cx(e,t,n,r,i,a,o){return await rx(),ox(Lb(e,t,n,r,i,a,o))}var lx,ux,dx,fx,px,mx,hx,gx,_x,vx,yx,bx,K,xx,Sx,Cx=n((()=>{lx={},lx.d=(e,t)=>{for(var n in t)lx.o(t,n)&&!lx.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},lx.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),lx.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},ux={},lx.r(ux),lx.d(ux,{__wbg_Error_83742b46f01ce22d:()=>Ub,__wbg_set_wasm:()=>nx,decompress_and_parse_bigwig:()=>Ib,decompress_and_parse_summary:()=>Lb,inflate_raw:()=>Rb,inflate_raw_batch:()=>zb,inflate_raw_unknown_size:()=>Bb,parse_bigwig_block:()=>Vb,parse_summary_block:()=>Hb}),dx=`data:application/wasm;base64,AGFzbQEAAAABoAEUYAAAYAABf2ABfwBgAX8Bf2ACf38AYAJ/fwF/YAN/f38AYAN/f38Bf2ADf39/AX1gBH9/f38AYAR/f39/AX9gBX9/f39/AGAFf39/f38Bf2AGf39/f39/AGAGf39/f39/AX9gB39/f39/f38Bf2AIf39/f39/f38AYAh/f39/f39/fwF/YAp/f39/f39/f39/AGALf39/f39/f39/f38AAjUBFC4vaW5mbGF0ZV93YXNtX2JnLmpzHF9fd2JnX0Vycm9yXzgzNzQyYjQ2ZjAxY2UyMmQABQN1dAMPExIRCw0QBQoOAgcKBwQGBQQGBAkFBQkECQYLDQ0TEhAICwcHBgQGCQINAgYGCwMEDQYLBwUHAwUEBgUFDAICBgQCBQQFAwIBBQQCAgIEBAQGBg4CBwUKAgUEBQYEBwcAAwUFBAQEBQUFAgICAgQEBQAABAUBcAEgIAUDAQARBgkBfwFBgIDAAAsH+gELBm1lbW9yeQIAG2RlY29tcHJlc3NfYW5kX3BhcnNlX2JpZ3dpZwAhHGRlY29tcHJlc3NfYW5kX3BhcnNlX3N1bW1hcnkAIAtpbmZsYXRlX3JhdwAbEWluZmxhdGVfcmF3X2JhdGNoACIYaW5mbGF0ZV9yYXdfdW5rbm93bl9zaXplABwScGFyc2VfYmlnd2lnX2Jsb2NrADUTcGFyc2Vfc3VtbWFyeV9ibG9jawAzH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIAYxFfX3diaW5kZ2VuX2V4cG9ydAA9El9fd2JpbmRnZW5fZXhwb3J0MgBUCSUBAEEBCx9HSE9wRTJGcU02F2BbO1xnRD4aKFBRTjgYYWk6alhdCraTAnTOJAIJfwF+IwBBEGsiASQAAkACQAJAAkACQAJAIABB9QFJDQACQCAAQcz/e00NAEEAIQAMBgsgAEELaiICQXhxIQNBACgCnJ9AIgRFDQRBHyEFAkAgAEH0//8HSw0AIANBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohBQtBACADayECAkAgBUECdEGAnMAAaigCACIGDQBBACEHQQAhAAwCC0EAIQcgA0EAQRkgBUEBdmsgBUEfRht0IQhBACEAA0ACQCAGIgYoAgRBeHEiCSADSQ0AIAkgA2siCSACTw0AIAYhByAJIQIgCQ0AQQAhAiAGIQAgBiEHDAQLIAYoAhQiCSAAIAkgBiAIQR12QQRxaigCECIGRxsgACAJGyEAIAhBAXQhCCAGRQ0CDAALCwJAAkACQAJAAkACQEEAKAKYn0AiBkEQIABBC2pB+ANxIABBC0kbIgNBA3YiAnYiAEEDcUUNACAAQX9zQQFxIAJqIghBA3QiA0GQncAAaiIAIANBmJ3AAGooAgAiAigCCCIHRg0BIAcgADYCDCAAIAc2AggMAgsgA0EAKAKgn0BNDQggAA0CQQAoApyfQCIARQ0IIABoQQJ0QYCcwABqKAIAIgYoAgRBeHEgA2shAiAGIQcDQAJAIAcoAhAiAA0AIAcoAhQiAA0AIAYoAhghBQJAAkACQCAGKAIMIgAgBkcNACAGQRRBECAGKAIUIgAbaigCACIHDQFBACEADAILIAYoAggiByAANgIMIAAgBzYCCAwBCyAGQRRqIAZBEGogABshCANAIAghCSAHIgBBFGogAEEQaiAAKAIUIgcbIQggAEEUQRAgBxtqKAIAIgcNAAsgCUEANgIACyAFRQ0GAkACQCAGIAYoAhxBAnRBgJzAAGoiBygCAEYNAAJAIAUoAhAgBkYNACAFIAA2AhQgAA0CDAkLIAUgADYCECAADQEMCAsgByAANgIAIABFDQYLIAAgBTYCGAJAIAYoAhAiB0UNACAAIAc2AhAgByAANgIYCyAGKAIUIgdFDQYgACAHNgIUIAcgADYCGAwGCyAAKAIEQXhxIANrIgcgAiAHIAJJIgcbIQIgACAGIAcbIQYgACEHDAALC0EAIAZBfiAId3E2ApifQAsgAkEIaiEAIAIgA0EDcjYCBCACIANqIgMgAygCBEEBcjYCBAwHCwJAAkAgACACdEECIAJ0IgBBACAAa3JxaCIJQQN0IgJBkJ3AAGoiByACQZidwABqKAIAIgAoAggiCEYNACAIIAc2AgwgByAINgIIDAELQQAgBkF+IAl3cTYCmJ9ACyAAIANBA3I2AgQgACADaiIGIAIgA2siB0EBcjYCBCAAIAJqIAc2AgACQEEAKAKgn0AiAkUNAEEAKAKon0AhAwJAAkBBACgCmJ9AIghBASACQQN2dCIJcQ0AQQAgCCAJcjYCmJ9AIAJBeHFBkJ3AAGoiAiEIDAELIAJBeHEiAkGQncAAaiEIIAJBmJ3AAGooAgAhAgsgCCADNgIIIAIgAzYCDCADIAg2AgwgAyACNgIICyAAQQhqIQBBACAGNgKon0BBACAHNgKgn0AMBgtBAEEAKAKcn0BBfiAGKAIcd3E2ApyfQAsCQAJAAkAgAkEQSQ0AIAYgA0EDcjYCBCAGIANqIgcgAkEBcjYCBCAHIAJqIAI2AgBBACgCoJ9AIghFDQFBACgCqJ9AIQACQAJAQQAoApifQCIJQQEgCEEDdnQiBXENAEEAIAkgBXI2ApifQCAIQXhxQZCdwABqIgghCQwBCyAIQXhxIghBkJ3AAGohCSAIQZidwABqKAIAIQgLIAkgADYCCCAIIAA2AgwgACAJNgIMIAAgCDYCCAwBCyAGIAIgA2oiAEEDcjYCBCAGIABqIgAgACgCBEEBcjYCBAwBC0EAIAc2AqifQEEAIAI2AqCfQAsgBkEIaiIARQ0DDAQLAkAgACAHcg0AQQAhB0ECIAV0IgBBACAAa3IgBHEiAEUNAyAAaEECdEGAnMAAaigCACEACyAARQ0BCwNAIAAoAgRBeHEiBiADayIIIAIgCCACSSIJGyEFIAYgA0khCCAAIAcgCRshCQJAIAAoAhAiBg0AIAAoAhQhBgsgAiAFIAgbIQIgByAJIAgbIQcgBiEAIAYNAAsLIAdFDQACQEEAKAKgn0AiACADSQ0AIAIgACADa08NAQsgBygCGCEFAkACQAJAIAcoAgwiACAHRw0AIAdBFEEQIAcoAhQiABtqKAIAIgYNAUEAIQAMAgsgBygCCCIGIAA2AgwgACAGNgIIDAELIAdBFGogB0EQaiAAGyEIA0AgCCEJIAYiAEEUaiAAQRBqIAAoAhQiBhshCCAAQRRBECAGG2ooAgAiBg0ACyAJQQA2AgALAkAgBUUNAAJAAkACQCAHIAcoAhxBAnRBgJzAAGoiBigCAEYNAAJAIAUoAhAgB0YNACAFIAA2AhQgAA0CDAQLIAUgADYCECAADQEMAwsgBiAANgIAIABFDQELIAAgBTYCGAJAIAcoAhAiBkUNACAAIAY2AhAgBiAANgIYCyAHKAIUIgZFDQEgACAGNgIUIAYgADYCGAwBC0EAQQAoApyfQEF+IAcoAhx3cTYCnJ9ACwJAAkAgAkEQSQ0AIAcgA0EDcjYCBCAHIANqIgAgAkEBcjYCBCAAIAJqIAI2AgACQCACQYACSQ0AIAAgAhAVDAILAkACQEEAKAKYn0AiBkEBIAJBA3Z0IghxDQBBACAGIAhyNgKYn0AgAkH4AXFBkJ3AAGoiAiEGDAELIAJB+AFxIgJBkJ3AAGohBiACQZidwABqKAIAIQILIAYgADYCCCACIAA2AgwgACAGNgIMIAAgAjYCCAwBCyAHIAIgA2oiAEEDcjYCBCAHIABqIgAgACgCBEEBcjYCBAsgB0EIaiIADQELAkACQAJAAkACQAJAQQAoAqCfQCIAIANPDQACQEEAKAKkn0AiACADSw0AIAFBBGpBxJ/AACADQa+ABGpBgIB8cRAuAkAgASgCBCIGDQBBACEADAgLIAEoAgwhBUEAQQAoArCfQCABKAIIIglqIgA2ArCfQEEAIABBACgCtJ9AIgIgACACSxs2ArSfQAJAAkACQEEAKAKsn0AiAkUNAEGAncAAIQADQCAGIAAoAgAiByAAKAIEIghqRg0CIAAoAggiAA0ADAMLCwJAAkBBACgCvJ9AIgBFDQAgBiAATw0BC0EAIAY2AryfQAtBAEH/HzYCwJ9AQQAgBTYCjJ1AQQAgCTYChJ1AQQAgBjYCgJ1AQQBBkJ3AADYCnJ1AQQBBmJ3AADYCpJ1AQQBBkJ3AADYCmJ1AQQBBoJ3AADYCrJ1AQQBBmJ3AADYCoJ1AQQBBqJ3AADYCtJ1AQQBBoJ3AADYCqJ1AQQBBsJ3AADYCvJ1AQQBBqJ3AADYCsJ1AQQBBuJ3AADYCxJ1AQQBBsJ3AADYCuJ1AQQBBwJ3AADYCzJ1AQQBBuJ3AADYCwJ1AQQBByJ3AADYC1J1AQQBBwJ3AADYCyJ1AQQBB0J3AADYC3J1AQQBByJ3AADYC0J1AQQBB0J3AADYC2J1AQQBB2J3AADYC5J1AQQBB2J3AADYC4J1AQQBB4J3AADYC7J1AQQBB4J3AADYC6J1AQQBB6J3AADYC9J1AQQBB6J3AADYC8J1AQQBB8J3AADYC/J1AQQBB8J3AADYC+J1AQQBB+J3AADYChJ5AQQBB+J3AADYCgJ5AQQBBgJ7AADYCjJ5AQQBBgJ7AADYCiJ5AQQBBiJ7AADYClJ5AQQBBiJ7AADYCkJ5AQQBBkJ7AADYCnJ5AQQBBmJ7AADYCpJ5AQQBBkJ7AADYCmJ5AQQBBoJ7AADYCrJ5AQQBBmJ7AADYCoJ5AQQBBqJ7AADYCtJ5AQQBBoJ7AADYCqJ5AQQBBsJ7AADYCvJ5AQQBBqJ7AADYCsJ5AQQBBuJ7AADYCxJ5AQQBBsJ7AADYCuJ5AQQBBwJ7AADYCzJ5AQQBBuJ7AADYCwJ5AQQBByJ7AADYC1J5AQQBBwJ7AADYCyJ5AQQBB0J7AADYC3J5AQQBByJ7AADYC0J5AQQBB2J7AADYC5J5AQQBB0J7AADYC2J5AQQBB4J7AADYC7J5AQQBB2J7AADYC4J5AQQBB6J7AADYC9J5AQQBB4J7AADYC6J5AQQBB8J7AADYC/J5AQQBB6J7AADYC8J5AQQBB+J7AADYChJ9AQQBB8J7AADYC+J5AQQBBgJ/AADYCjJ9AQQBB+J7AADYCgJ9AQQBBiJ/AADYClJ9AQQBBgJ/AADYCiJ9AQQAgBkEPakF4cSIAQXhqIgI2AqyfQEEAQYifwAA2ApCfQEEAIAYgAGsgCUFYaiIAakEIaiIHNgKkn0AgAiAHQQFyNgIEIAYgAGpBKDYCBEEAQYCAgAE2ArifQAwICyACIAZPDQAgByACSw0AIAAoAgwiB0EBcQ0AIAdBAXYgBUYNAwtBAEEAKAK8n0AiACAGIAAgBkkbNgK8n0AgBiAJaiEHQYCdwAAhAAJAAkACQANAIAAoAgAiCCAHRg0BIAAoAggiAA0ADAILCyAAKAIMIgdBAXENACAHQQF2IAVGDQELQYCdwAAhAAJAA0ACQCAAKAIAIgcgAksNACACIAcgACgCBGoiB0kNAgsgACgCCCEADAALC0EAIAZBD2pBeHEiAEF4aiIINgKsn0BBACAGIABrIAlBWGoiAGpBCGoiBDYCpJ9AIAggBEEBcjYCBCAGIABqQSg2AgRBAEGAgIABNgK4n0AgAiAHQWBqQXhxQXhqIgAgACACQRBqSRsiCEEbNgIEQQApAoCdQCEKIAhBEGpBACkCiJ1ANwIAIAhBCGoiACAKNwIAQQAgBTYCjJ1AQQAgCTYChJ1AQQAgBjYCgJ1AQQAgADYCiJ1AIAhBHGohAANAIABBBzYCACAAQQRqIgAgB0kNAAsgCCACRg0HIAggCCgCBEF+cTYCBCACIAggAmsiAEEBcjYCBCAIIAA2AgACQCAAQYACSQ0AIAIgABAVDAgLAkACQEEAKAKYn0AiB0EBIABBA3Z0IgZxDQBBACAHIAZyNgKYn0AgAEH4AXFBkJ3AAGoiACEHDAELIABB+AFxIgBBkJ3AAGohByAAQZidwABqKAIAIQALIAcgAjYCCCAAIAI2AgwgAiAHNgIMIAIgADYCCAwHCyAAIAY2AgAgACAAKAIEIAlqNgIEIAZBD2pBeHFBeGoiByADQQNyNgIEIAhBD2pBeHFBeGoiAiAHIANqIgBrIQMgAkEAKAKsn0BGDQMgAkEAKAKon0BGDQQCQCACKAIEIgZBA3FBAUcNACACIAZBeHEiBhATIAYgA2ohAyACIAZqIgIoAgQhBgsgAiAGQX5xNgIEIAAgA0EBcjYCBCAAIANqIAM2AgACQCADQYACSQ0AIAAgAxAVDAYLAkACQEEAKAKYn0AiAkEBIANBA3Z0IgZxDQBBACACIAZyNgKYn0AgA0H4AXFBkJ3AAGoiAyECDAELIANB+AFxIgNBkJ3AAGohAiADQZidwABqKAIAIQMLIAIgADYCCCADIAA2AgwgACACNgIMIAAgAzYCCAwFC0EAIAAgA2siAjYCpJ9AQQBBACgCrJ9AIgAgA2oiBzYCrJ9AIAcgAkEBcjYCBCAAIANBA3I2AgQgAEEIaiEADAYLQQAoAqifQCECAkACQCAAIANrIgdBD0sNAEEAQQA2AqifQEEAQQA2AqCfQCACIABBA3I2AgQgAiAAaiIAIAAoAgRBAXI2AgQMAQtBACAHNgKgn0BBACACIANqIgY2AqifQCAGIAdBAXI2AgQgAiAAaiAHNgIAIAIgA0EDcjYCBAsgAkEIaiEADAULIAAgCCAJajYCBEEAQQAoAqyfQCIAQQ9qQXhxIgJBeGoiBzYCrJ9AQQAgACACa0EAKAKkn0AgCWoiAmpBCGoiBjYCpJ9AIAcgBkEBcjYCBCAAIAJqQSg2AgRBAEGAgIABNgK4n0AMAwtBACAANgKsn0BBAEEAKAKkn0AgA2oiAzYCpJ9AIAAgA0EBcjYCBAwBC0EAIAA2AqifQEEAQQAoAqCfQCADaiIDNgKgn0AgACADQQFyNgIEIAAgA2ogAzYCAAsgB0EIaiEADAELQQAhAEEAKAKkn0AiAiADTQ0AQQAgAiADayICNgKkn0BBAEEAKAKsn0AiACADaiIHNgKsn0AgByACQQFyNgIEIAAgA0EDcjYCBCAAQQhqIQALIAFBEGokACAAC7wdARZ/IAEgAmoiByACQREgAkERSRtrIQggAyAEaiIJIARBlwIgBEGXAkkbayEKIABBpNoAaiELIABBmMkAaiEMIABB4NUAaiENIABBzANqIQ5BACEPQQAhEEEAIQIgASERIAMhBAJAAkADQAJAAkAgByARa0EDSw0AIAIhEiAQQf8BcSICQRdLDQEDQAJAAkAgESAHRg0AIBEtAAAgAnQgEnIhEiARQQFqIREMAQtBASETIA9BAWoiD0EESw0FCyAQQQhqIhBB/wFxIgJBGEkNAAwCCwsgESgAACAQQf8BcXQgAnIhEiARIBBBA3ZBB3FrQQNqIREgEEEYciEQC0EBIRMCQAJAAkACQAJAAkAgEkEBdkEDcQ4EBAEABwQLQQAhFCAAQQA6AKBaIBBBb2ohAiASQRF2IRUgEkENdiIWQQ9xIhdBBGohECASQQh2QR9xQQFqIRggEkEDdkEfcUGBAmohGQNAAkACQCACQf8BcSITQQJNDQAgAiEaDAELAkAgByARa0EDSw0AIAIhGgNAAkACQCARIAdGDQAgES0AACATdCAVciEVIBFBAWohEQwBC0EBIRMgD0EBaiIPQQRLDQsLIBpBCGoiGkH/AXEiE0EYSQ0ADAILCyACQRhyIRogESgAACATdCAVciEVIBEgAkEDdkEHcWtBA2ohEQsgACAUQZCLwABqLQAAaiAVQQdxOgAAIBpBfWohAiAVQQN2IRUgFEEBaiIUIBBHDQALAkAgF0EPRg0AAkAgFkEDcSIaQQNGDQBBBCEQA0AgACAXIBBqQZCLwABqLQAAakEAOgAAIBBBfWohFCAQQQFqIhMhECAaIBRzQQNHDQALIBcgE2ohEAsgF0F0akEDSQ0AA0AgACAQQZCLwABqLQAAakEAOgAAIAAgEEGRi8AAai0AAGpBADoAACAAIBBBkovAAGotAABqQQA6AAAgACAQQZOLwABqLQAAakEAOgAAIBBBBGoiEEETRw0ACwsCQCAOIABBE0Gwi8AAQQdBByANQQAQBQ0AQQEPCyAZIBhqIRdBACEQA0ACQAJAIAJB/wFxIhRBDU0NACACIRoMAQsCQCAHIBFrQQNLDQAgAiEaA0ACQAJAIBEgB0YNACARLQAAIBR0IBVyIRUgEUEBaiERDAELQQEhEyAPQQFqIg9BBEsNCwsgGkEIaiIaQf8BcSIUQRhJDQAMAgsLIAJBGHIhGiARKAAAIBR0IBVyIRUgESACQQN2QQdxa0EDaiERCyAOIBVB/wBxQQJ0aigCACIUQRB2IRMgGiAUayECIBUgFEH/AXF2IRUCQAJAIBRB//8/Sw0AIAAgEGogEzoAACAQQQFqIRAMAQsCQAJAAkACQCATQXBqDgIAAQILAkAgEA0AQQEPCyAAIBBqIhRBBWogFEF/ai0AACIaOgAAIBRBBGogGjoAACAUQQNqIBo6AAAgFEECaiAaOgAAIBRBAWogGjoAACAUIBo6AAAgAkF+aiECIBVBA3FBA2ohFCAVQQJ2IRUMAgsgACAQaiIUQgA3AAAgFEEIakEAOwAAIAJBfWohAiAVQQdxQQNqIRQgFUEDdiEVDAELAkAgFUH/AHFBC2oiFEUNACAAIBBqQQAgFPwLAAsgAkF5aiECIBVBB3YhFQsgFCAQaiEQCyAQIBdJDQALIBAgF0YNAUEBDwsgEEF9aiECIBJBA3YhFSAALQCgWg0BIABBAToAoFpBACEQA0AgACAQaiIUQoiQoMCAgYKECDcAACAUQQhqQQg6AAAgEEEJaiIQQZABRw0AC0GQfyEQA0AgACAQakGAAmpCiZKkyJChwoQJNwAAIBBBCGoiEA0ACyAAQoWKlKjQoMGCBTcAuAIgAEKFipSo0KDBggU3ALACIABChYqUqNCgwYIFNwCoAiAAQoWKlKjQoMGCBTcAoAIgAEKIkKDAgIGChAg3AJgCIABCh46cuPDgwYMHNwCQAiAAQoeOnLjw4MGDBzcAiAIgAEKHjpy48ODBgwc3AIACQSAhGEGgAiEZCwJAIAwgACAZaiAYQYCMwABBCEEPIA1BABAFDQBBAQ8LIAAgACAZQYCNwABBC0EPIA0gCxAFDQBBAQ8LQX8gCygCAHRBf3MhFwJAAkAgESAITw0AIAQgCk8NACACQRhyIRAgESACQQN2QQdxa0EDaiEUIAAgESgAACACQf8BcXQgFXIiFSAXcUECdGooAgAhGANAIBAgGGshECAVIBhB/wFxIhN2IQICQAJAAkACQCAYQQBIDQACQCAYQYCAAnENACACIREMAwsCQCAYQYDAAHFFDQAgFCERDAkLIBAgACACQX8gGEEIdnRBf3NxIBhBEHZqQQJ0aigCACIYayEQIAIgGEH/AXEiE3YhESAYQQBODQEgESECCyAEIBhBEHY6AAAgBEEBaiEEIBQoAAAgEEH/AXF0IAJyIRUgFCAQQQN2QQdxa0EDaiEUIAAgAiAXcUECdGooAgAhGAwCCyACIRUgGEGAwABxRQ0AIBEhAiAUIREMBgsgEEEYciEZIBQoAAAgEEH/AXF0IBFyIRogFCAQQQN2QQdxa0EDaiEUAkAgDCARQf8BcUECdGooAgAiEUGAgAJxRQ0AIBQoAAAgGUF4aiICQfcBcXQgGkEIdiIQciEaIAwgEEF/IBFBCHZBP3F0QX9zcSARQRB2akECdGooAgAhESACQRhyIRkgFCACQQN2QQZxa0EDaiEUCwJAIBpBfyARQf8BcSIWdEF/c3EgEUEIdkH/AXF2IhsgEUEQdiIcaiICIAQgA2tNDQBBAQ8LIBVBfyATdEF/c3EhEyAUKAAAIBkgEWsiEEH/AXF0IBogFnYiGXIhFSAEIAJrIRogBCAYQRB2aiATIBhBCHZB/wFxdmohESAUIBBBA3ZBB3FrQQNqIRQgACAZIBdxQQJ0aigCACEYAkACQCACQQRJDQAgBCAaKAAANgAAIAQgGigABDYABCAEIBooAAg2AAggBCAaKAAMNgAMIAQgGigAEDYAECAEQRRqIBFPDQFBACACayETA0AgBEEUaiIaIAQgE2oiAkEUaigAADYAACAEQRhqIAJBGGooAAA2AAAgBEEcaiACQRxqKAAANgAAIARBIGogAkEgaigAADYAACAEQSRqIAJBJGooAAA2AAAgBEEoaiECIBohBCACIBFJDQAMAgsLAkAgAkEBRw0AIAQgGi0AAEGBgoQIbCIaNgAMIAQgGjYACCAEIBo2AAQgBCAaNgAAIARBEGoiAiARTw0BA0AgAiAaNgAAIAJBDGogGjYAACACQQhqIBo2AAAgAkEEaiAaNgAAIAJBEGoiAiARSQ0ADAILCyAEIBooAAAiGjYAACAEIAJqIBo2AAAgG0EBdCAcQQF0aiEaIAJBA2whFgNAIAQgGmogBCACaiITKAAAIhk2AAAgBCAWaiAZNgAAIBMgAmoiBCAaaiARSQ0ACwsgESEECyAQQRhyIRAgFCAITw0CIAQgCkkNAAwCCwsgAiEQIBEhFAsDQAJAAkAgByAUa0EDSw0AIBBB/wFxIgJBF0sNAQNAAkACQCAUIAdGDQAgFC0AACACdCAVciEVIBRBAWohFAwBC0EBIRMgD0EBaiIPQQRLDQgLIBBBCGoiEEH/AXEiAkEYSQ0ADAILCyAUKAAAIBBB/wFxdCAVciEVIBQgEEEDdkEHcWtBA2ohFCAQQRhyIRALIBAgACAVIBdxQQJ0aigCACICayEQIBUgAkH/AXF2IRECQAJAIAJBgIABcQ0AIBUhGiARIRUMAQsgECAAIBFBfyACQQh2QT9xdEF/c3EgAkEQdmpBAnRqKAIAIgJrIRAgESACQf8BcXYhFSARIRoLIAJBEHYhEQJAIAJBf0oNAAJAIAQgCUcNAEEDDwsgBCAROgAAIARBAWohBAwBCwJAIAJBgMAAcUUNACAVIQIgFCERDAMLAkAgGkF/IAJB/wFxdEF/c3EgAkEIdkHfAXF2IBFqIhogCSAEa00NAEEDDwsCQAJAIAcgFGtBA0sNACAQQf8BcSICQRdLDQEDQAJAAkAgFCAHRg0AIBQtAAAgAnQgFXIhFSAUQQFqIRQMAQtBASETIA9BAWoiD0EESw0ICyAQQQhqIhBB/wFxIgJBGEkNAAwCCwsgFCgAACAQQf8BcXQgFXIhFSAUIBBBA3ZBB3FrQQNqIRQgEEEYciEQCwJAIAwgFUH/AXFBAnRqKAIAIgJBgIACcUUNACAMIBVBCHYiFUF/IAJBCHZBP3F0QX9zcSACQRB2akECdGooAgAhAiAQQXhqIRECQAJAIAcgFGtBA0sNACARQf8BcSITQRdNDQEgESEQDAILIBFBGHIhECAUKAAAIBFB/wFxdCAVciEVIBQgEUEDdkEHcWtBA2ohFAwBCwNAAkACQCAUIAdGDQAgFC0AACATdCAVciEVIBRBAWohFAwBC0EBIRMgD0EBaiIPQQRLDQcLIBBB/wFxIRMgEEEIaiIRIRAgE0EYSQ0ACyARQXhqIRALAkAgFUF/IAJB/wFxIhN0QX9zcSACQQh2Qf8BcXYgAkEQdmoiESAEIANrTQ0AQQEPCyAQIAJrIRAgFSATdiEVIAQgBCARayICLQAAOgAAIAQgAi0AAToAASAEQQJqIQIgBCAaaiEEQQAgEWshEQNAIAIgAiARai0AADoAACACQQFqIgIgBEkNAAwBCwsLAkAgDyAQQf0BakEDdkEfcSICTQ0AQQEPCwJAIAcgESAPIAJraiIRa0EETg0AQQEPCwJAIBEvAAIgES8AACICc0H//wNxQf//A0YNAEEBDwsCQCAJIARrIAJODQBBAw8LAkAgByARQQRqIhFrIAJODQBBAQ8LAkAgAkUNACAEIBEgAvwKAAALIAQgAmohBCARIAJqIRFBACEPQQAhEEEAIQILIBJBAXFFDQALQQEhEyAPIBBBA3ZBH3EiAksNAAJAIAVFDQAgBSARIA8gAmtqIAFrNgIACwJAIAZFDQAgBiAEIANrNgIADAILIAQgCUYNAUECIRMLIBMPC0EAC9UZAhx/AX0jAEHgAGsiCyQAIAsQSjYCAEEAIQwCQAJAAkACQAJAAkACQAJAIAdBAEgNAAJAAkAgBw0AQQEhDQwBCxBzQQEhDCAHQQEQZSINRQ0BCyAEQZADbCEMQQAhDgJAIARB5ABsIg9B/////wNLDQAgDEH8////B0sNAAJAAkACQAJAAkAgDEUNABBzQQQhDiAMQQQQZCIQRQ0FIAtBADYCDCALIBA2AgggCyAPNgIEEHMgDEEEEGQiDkUNBCALQQA2AhggCyAONgIUIAsgDzYCEBBzIAxBBBBkIg5FDQMgC0EANgIkIAsgDjYCICALIA82AhwQcyAMQQQQZCIORQ0CIAtBADYCMCALIA42AiwgCyAPNgIoEHMgDEEEEGQiEQ0BQQQgDBBSAAsgC0EANgIMIAtCgICAgMAANwIEIAtBADYCGCALQoCAgIDAADcCECALQQA2AiQgC0KAgICAwAA3AhwgC0EANgIwIAtCgICAgMAANwIoQQQhEQtBACEQIAtBADYCPCALIBE2AjggCyAPNgI0AkAgBA0AQQQhDEEAIQ8MBgsgCiAJciESQQAhEwNAAkACQAJAIBMgBkYNACAFIBNBAnQiDGooAgAiDiADIAxqKAIAIg9qIgwgD0ECaiIPSQ0BIAwgAksNASALQcAAaiALIAEgD2ogDkF+aiANIAcQLCALLQBARQ0CIAsgCy0AQToASyALQQGtQiCGIAtBywBqrYQ3A1ggC0HMAGpBz4HAACALQdgAahARIAsoAkwhDCALKAJQIg4gCygCVBBrIQ8CQCAMRQ0AIA4gDEEBEF4LIABBADYCACAAIA82AgQCQCALKAI0IgxFDQAgCygCOCAMQQJ0QQQQXgsCQCALKAIoIgxFDQAgCygCLCAMQQJ0QQQQXgsCQCALKAIcIgxFDQAgCygCICAMQQJ0QQQQXgsCQCALKAIQIgxFDQAgCygCFCAMQQJ0QQQQXgsCQCALKAIEIgxFDQAgCygCCCAMQQJ0QQQQXgsgBw0NDA4LIAYgBkHIiMAAEDQACyAPIAwgAkHoiMAAEBYACwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCALKAJEIg8gB0sNACAPQSBJDR0gD0EFdiEUQQAhDANAIAwgD08NAiAMQQFqIA9PDQMgDEECaiAPTw0EIAxBA2ogD08NBSAMQQRqIA9PDQYgDEEFaiAPTw0HIAxBBmogD08NCCAMQQdqIA9PDQkgDEEIaiAPTw0KIAxBCWogD08NCyAMQQpqIA9PDQwgDEELaiAPTw0NIAxBDGogD08NDiAMQQ1qIA9PDQ8gDEEOaiAPTw0QIAxBD2ogD08NESAMQRBqIA9PDRIgDEERaiAPTw0TIAxBEmogD08NFCAMQRNqIA9PDRUgDEEUaiAPTw0WIAxBFWogD08NFyAMQRZqIA9PDRggDEEXaiAPTw0ZIAxBGGogD08NGiAMQRlqIA9PDRsgDEEaaiAPTw0cIAxBG2ogD08NHSANIAxqIg5BBWotAABBCHQgDkEEai0AAHIgDkEGai0AAEEQdHIgDkEHai0AAEEYdHIhFSAOQQlqLQAAQQh0IA5BCGotAAByIA5BCmotAABBEHRyIA5BC2otAABBGHRyIRYgDkEMai0AACEXIA5BDWotAAAhGCAOQQ5qLQAAIRkgDkEPai0AACEaIA5BEGotAAAhGyAOQRFqLQAAIRwgDkESai0AACEdIA5BE2otAAAhHiAOQRRqLQAAIR8gDkEVai0AACEgIA5BFmotAAAhISAOQRdqLQAAISIgDkEYai0AACEjIA5BGWotAAAhJCAOQRpqLQAAISUgDkEbai0AACEmAkACQCASRQ0AIA5BAWotAABBCHQgDi0AAHIgDkECai0AAEEQdHIgDkEDai0AAEEYdHIgCEcNASAVIApODQEgFiAJTA0BCyAYQQh0IBdyIBlBEHRyIRcgGkEYdCEYICRBCHQgI3IgJUEQdHIhGSAmQRh0IRoCQCALKAIMIg4gCygCBEcNACALQQRqEC0LIBxBCHQhHCAZIBpyIRkgFyAYciEXIAsoAgggDkECdGogFTYCACALIA5BAWo2AgwCQCALKAIYIg4gCygCEEcNACALQRBqEC0LICBBCHQhFSAcIBtyIRggHUEQdCEaIBm+IScgCygCFCAOQQJ0aiAWNgIAIAsgDkEBajYCGAJAIBdFDQAgJyAXs5UhJwsgFSAfciEVICFBEHQhFiAYIBpyIRcgHkEYdCEYAkAgCygCJCIOIAsoAhxHDQAgC0EcahAtCyAVIBZyIRUgIkEYdCEWIBcgGHIhFyALKAIgIA5BAnRqICc4AgAgCyAOQQFqNgIkAkAgCygCMCIOIAsoAihHDQAgC0EoahAtCyAVIBZyIRUgCygCLCAOQQJ0aiAXNgIAIAsgDkEBajYCMAJAIBAgCygCNEcNACALQTRqEC0gCygCOCERCyARIBBBAnRqIBU2AgAgCyAQQQFqIhA2AjwLIAxBIGohDCAUQX9qIhRFDR4MAAsLQQAgDyAHQdiIwAAQFgALIAwgD0HIhsAAEDQACyAMQQFqIA9B2IbAABA0AAsgDEECaiAPQeiGwAAQNAALIAxBA2ogD0H4hsAAEDQACyAMQQRqIA9ByIbAABA0AAsgDEEFaiAPQdiGwAAQNAALIAxBBmogD0HohsAAEDQACyAMQQdqIA9B+IbAABA0AAsgDEEIaiAPQciGwAAQNAALIAxBCWogD0HYhsAAEDQACyAMQQpqIA9B6IbAABA0AAsgDEELaiAPQfiGwAAQNAALIAxBDGogD0HIhsAAEDQACyAMQQ1qIA9B2IbAABA0AAsgDEEOaiAPQeiGwAAQNAALIAxBD2ogD0H4hsAAEDQACyAMQRBqIA9ByIXAABA0AAsgDEERaiAPQdiFwAAQNAALIAxBEmogD0HohcAAEDQACyAMQRNqIA9B+IXAABA0AAsgDEEUaiAPQciFwAAQNAALIAxBFWogD0HYhcAAEDQACyAMQRZqIA9B6IXAABA0AAsgDEEXaiAPQfiFwAAQNAALIAxBGGogD0HIhcAAEDQACyAMQRlqIA9B2IXAABA0AAsgDEEaaiAPQeiFwAAQNAALIAxBG2ogD0H4hcAAEDQACyATQQFqIhMgBEcNAAtBACEOIAsoAgwiD0EUbEEEaiIMQQBIDQYgDA0FIAtBADYCVCALQoCAgIAQNwJMIAtBzABqQQBBBBAnIAsoAkwhDCALKAJQIRAgCygCVCEODAgLQQQgDBBSAAtBBCAMEFIAC0EEIAwQUgALIA4gDBBSAAsgDCAHEFIACxBzQQEhDiAMQQEQZCIQDQELIA4gDBBSAAsgCyAQNgJQIAsgDDYCTEEAIQ4LIBAgDmogDzYAACALIA5BBGoiDjYCVCALKAIIIRUCQCAPQQJ0Ig8gDCAOa00NACALQcwAaiAOIA8QJyALKAJQIRAgCygCVCEOCwJAIA9FDQAgECAOaiAVIA/8CgAACyALIA4gD2oiDDYCVCALKAIUIRYCQCALKAIYQQJ0Ig8gCygCTCIOIAxrTQ0AIAtBzABqIAwgDxAnIAsoAkwhDiALKAJUIQwLIAsoAlAhEAJAIA9FDQAgECAMaiAWIA/8CgAACyALIAwgD2oiDDYCVCALKAIgIRQCQCALKAIkQQJ0Ig8gDiAMa00NACALQcwAaiAMIA8QJyALKAJMIQ4gCygCUCEQIAsoAlQhDAsCQCAPRQ0AIBAgDGogFCAP/AoAAAsgCyAMIA9qIgw2AlQgCygCLCEXAkAgCygCMEECdCIPIA4gDGtNDQAgC0HMAGogDCAPECcgCygCUCEQIAsoAlQhDAsCQCAPRQ0AIBAgDGogFyAP/AoAAAsgCyAMIA9qIgw2AlQgCygCOCEYAkAgCygCPEECdCIPIAsoAkwiDiAMa00NACALQcwAaiAMIA8QJyALKAJMIQ4gCygCVCEMCyALKAJQIRACQCAPRQ0AIBAgDGogGCAP/AoAAAsgCyAMIA9qIgw2AlQCQAJAIA4gDEsNACAQIQ8MAQsCQCAMDQBBASEPIBAgDkEBEF4MAQsgECAOQQEgDBBZIg9FDQMLIAAgDDYCBCAAIA82AgACQCALKAI0IgxFDQAgGCAMQQJ0QQQQXgsCQCALKAIoIgxFDQAgFyAMQQJ0QQQQXgsCQCALKAIcIgxFDQAgFCAMQQJ0QQQQXgsCQCALKAIQIgxFDQAgFiAMQQJ0QQQQXgsCQCALKAIEIgxFDQAgFSAMQQJ0QQQQXgsgB0UNAQsgDSAHQQEQXgsgCxBsIAtB4ABqJAAPC0EBIAwQUgALghMCE38BfSMAQdAAayIKJAAgChBKNgIIQQAhCwJAAkACQAJAAkACQAJAAkACQCAHQQBIDQACQAJAIAcNAEEBIQwMAQsQc0EBIQsgB0EBEGUiDEUNAQsgBEGgH2whC0EAIQ0CQCAEQegHbCIOQf////8DSw0AIAtB/P///wdLDQACQAJAAkAgC0UNABBzQQQhDSALQQQQZCIPRQ0DIApBADYCFCAKIA82AhAgCiAONgIMEHMgC0EEEGQiDUUNAiAKQQA2AiAgCiANNgIcIAogDjYCGBBzIAtBBBBkIhANAUEEIAsQUgALIApBADYCFCAKQoCAgIDAADcCDCAKQQA2AiAgCkKAgICAwAA3AhhBBCEQC0EAIQsgCkEANgIsIAogEDYCKCAKIA42AiQCQCAEDQBBBCELQQAhDgwFCyAJIAhyIRFBACESA0ACQAJAAkAgEiAGRg0AIAUgEkECdCIOaigCACIPIAMgDmooAgAiDWoiDiANQQJqIg1JDQEgDiACSw0BIApBMGogCkEIaiABIA1qIA9BfmogDCAHECwgCi0AMEUNAiAKIAotADE6ADsgCkEBrUIghiAKQTtqrYQ3A0ggCkE8akHPgcAAIApByABqEBEgCigCPCELIAooAkAiDSAKKAJEEGshDgJAIAtFDQAgDSALQQEQXgsgAEEANgIAIAAgDjYCBAJAIAooAiQiC0UNACAKKAIoIAtBAnRBBBBeCwJAIAooAhgiC0UNACAKKAIcIAtBAnRBBBBeCwJAIAooAgwiC0UNACAKKAIQIAtBAnRBBBBeCyAHDQwMDQsgBiAGQZiIwAAQNAALIA0gDiACQbiIwAAQFgALAkACQAJAIAooAjQiDiAHSw0AIA5BGEkNAiAMLQASQRB0IRMgDC0AEUEIdCEUIAwtABAhFSAMLQATQRh0IRYgDC0AF0EIdCIPIAwtABYiF3IhDQJAAkAgDC0AFEF/ag4DAwEABAsgDUUNAyAMKAAMIRggDCgABCEZAkAgEUUNACAPIBdqIRcgGSAWIBNqIBRqIBVqaiEaQRghD0EAIQ0DQCAMIA4gDxAjIR0CQCAZIA1qIhMgCU4NACAaIA1qIhsgCEwNAAJAIAooAhQiHCAKKAIMRw0AIApBDGoQLQsgCigCECAcQQJ0aiATNgIAIAogHEEBajYCFAJAIAooAiAiEyAKKAIYRw0AIApBGGoQLQsgCigCHCATQQJ0aiAbNgIAIAogE0EBajYCIAJAIAsgCigCJEcNACAKQSRqEC0gCigCKCEQCyAQIAtBAnRqIB04AgAgCiALQQFqIgs2AiwLIA9BBGohDyANIBhqIQ0gF0F/aiIXDQAMBQsLIA8gF2ohHCAKKAIUIhdBAnQhGyALQQJ0IRogGSAWaiATaiAUaiAVaiEUQRghDUEAIQ8DQCAMIA4gDRAjIR0CQCAXIAooAgxHDQAgCkEMahAtCyAKKAIQIBtqIA1qQWhqIBkgD2o2AgAgCiAXQQFqIhc2AhQCQCAKKAIgIhMgCigCGEcNACAKQRhqEC0LIAooAhwgE0ECdGogFCAPajYCACAKIBNBAWo2AiACQCALIAooAiRHDQAgCkEkahAtIAooAighEAsgECAaaiANakFoaiAdOAIAIAogC0EBaiILNgIsIA1BBGohDSAPIBhqIQ8gHEF/aiIcDQAMBAsLIA1FDQIgFCAVciATciAWciEYIA8gF2ohE0EYIQ0DQCAMIA4gDRAlIg8gGGohFyAMIA4gDUEEaiIZECMhHQJAAkAgEUUNACAPIAlODQEgFyAITA0BCwJAIAooAhQiDSAKKAIMRw0AIApBDGoQLQsgCigCECANQQJ0aiAPNgIAIAogDUEBajYCFAJAIAooAiAiDSAKKAIYRw0AIApBGGoQLQsgCigCHCANQQJ0aiAXNgIAIAogDUEBajYCIAJAIAsgCigCJEcNACAKQSRqEC0gCigCKCEQCyAQIAtBAnRqIB04AgAgCiALQQFqIgs2AiwLIBlBBGohDSATQX9qIhMNAAwDCwtBACAOIAdBqIjAABAWAAsgDUUNACAPIBdqIRNBGCENA0AgDCAOIA0QJSEPIAwgDiANQQRqECUhFyAMIA4gDUEIaiIZECMhHQJAAkAgEUUNACAPIAlODQEgFyAITA0BCwJAIAooAhQiDSAKKAIMRw0AIApBDGoQLQsgCigCECANQQJ0aiAPNgIAIAogDUEBajYCFAJAIAooAiAiDSAKKAIYRw0AIApBGGoQLQsgCigCHCANQQJ0aiAXNgIAIAogDUEBajYCIAJAIAsgCigCJEcNACAKQSRqEC0gCigCKCEQCyAQIAtBAnRqIB04AgAgCiALQQFqIgs2AiwLIBlBBGohDSATQX9qIhMNAAsLIBJBAWoiEiAERg0EDAALC0EEIAsQUgALIA0gCxBSAAsgCyAHEFIAC0EAIQ0gCigCFCIOQQxsQQRqIgtBAEgNASALDQAgCkEANgJEIApCgICAgBA3AjwgCkE8akEAQQQQJyAKKAI8IQsgCigCQCEPIAooAkQhDQwDCxBzQQEhDSALQQEQZCIPDQELIA0gCxBSAAsgCiAPNgJAIAogCzYCPEEAIQ0LIA8gDWogDjYAACAKIA1BBGoiDTYCRCAKKAIQIRACQCAOQQJ0Ig4gCyANa00NACAKQTxqIA0gDhAnIAooAkAhDyAKKAJEIQ0LAkAgDkUNACAPIA1qIBAgDvwKAAALIAogDSAOaiILNgJEIAooAhwhFwJAIAooAiBBAnQiDSAKKAI8Ig4gC2tNDQAgCkE8aiALIA0QJyAKKAI8IQ4gCigCRCELCyAKKAJAIQ8CQCANRQ0AIA8gC2ogFyAN/AoAAAsgCiALIA1qIgs2AkQgCigCKCEJAkAgCigCLEECdCINIA4gC2tNDQAgCkE8aiALIA0QJyAKKAI8IQ4gCigCQCEPIAooAkQhCwsCQCANRQ0AIA8gC2ogCSAN/AoAAAsgCiALIA1qIgs2AkQCQAJAIA4gC0sNACAPIQ0MAQsCQCALDQBBASENIA8gDkEBEF4MAQsgDyAOQQEgCxBZIg1FDQMLIAAgCzYCBCAAIA02AgACQCAKKAIkIgtFDQAgCSALQQJ0QQQQXgsCQCAKKAIYIgtFDQAgFyALQQJ0QQQQXgsCQCAKKAIMIgtFDQAgECALQQJ0QQQQXgsgB0UNAQsgDCAHQQEQXgsgCkEIahBsIApB0ABqJAAPC0EBIAsQUgALlQ8BD38jAEGAAWshCCAFQQFqIglBB3EhCiAJQQJ0QWBxIQtBACEMA0AgCEHAAGogDGoiCUIANwMAIAlBGGpCADcDACAJQRBqQgA3AwAgCUEIakIANwMAIAsgDEEgaiIMRw0ACwJAIApFDQAgCEHAAGogDGohCQNAIAlBADYCACAJQQRqIQkgCkF/aiIKDQALCwJAIAJFDQAgAkEDcSEKQQAhDAJAIAJBBEkNACACQXxxIQ1BACEMA0AgCEHAAGogASAMaiIJLQAAQQJ0aiILIAsoAgBBAWo2AgAgCEHAAGogCUEBai0AAEECdGoiCyALKAIAQQFqNgIAIAhBwABqIAlBAmotAABBAnRqIgsgCygCAEEBajYCACAIQcAAaiAJQQNqLQAAQQJ0aiIJIAkoAgBBAWo2AgAgDSAMQQRqIgxHDQALCyAKRQ0AIAEgDGohCQNAIAhBwABqIAktAABBAnRqIgwgDCgCAEEBajYCACAJQQFqIQkgCkF/aiIKDQALCyAIQcAAaiAFQQJ0aiEJAkADQAJAIAkoAgBFDQAgBSEKDAILIAlBfGohCUEBIQogBUF/aiIFQQFLDQALCwJAIAdFDQAgByAEIAogBCAKSRsiBDYCAAtBACEOIAhBADYCACAIIAgoAkAiCzYCBEEBIQlBACEMAkAgCkECSQ0AQQEhCSAKQX9qIgxBAXEhDwJAAkAgCkECRw0AQQAhDAwBCyAMQX5xIRAgCEHAAGpBCHIhCSAIQQxyIQxBACEFQQAhDQNAIAxBfGogCUF8aigCACIHIAtqIgs2AgAgDCAJKAIAIhEgC2oiCzYCACARIAVBAnQgB0EBdGpqIQUgCUEIaiEJIAxBCGohDCAQIA1BAmoiDUcNAAsgDUEBaiEJIAVBAXQhDAsCQCAPRQ0AIAlBAnQiCSAIakEEaiAIQcAAaiAJaigCACIJIAtqNgIAIAkgDGohBQsgBUEBdCEMIAohCQsgCEHAAGogCUECdGooAgAgDGohEQJAIAJFDQAgAkEBcSEHQQAhCQJAIAJBAUYNACACQX5xIQ1BACEJA0AgBiAIIAEgCWoiDC0AAEECdGoiBSgCACILQQF0aiAJOwEAIAUgC0EBajYCACAIIAxBAWotAABBAnRqIgwgDCgCACIMQQFqNgIAIAYgDEEBdGogCUEBajsBACANIAlBAmoiCUcNAAsLAkAgB0UNACAIIAEgCWotAABBAnRqIgwgDCgCACIMQQFqNgIAIAYgDEEBdGogCTsBAAsgCCgCACEOCwJAAkAgEUEBIAp0IglNDQBBACEFDAELIAYgDkEBdGohBwJAAkACQCARIAlJDQAgCEHAAGpBBHIhCUEAIQ0DQCANQQFqIQ0gCSgCACEGIAlBBGohCSAGRQ0AC0EAIQ8gDSAETQ0BQQAhAQwCCwJAAkAgEQ0AQQAhCQwBC0EAIQUgEUEBIApBf2p0Rw0DIAgoAkRBAUcNAyAHLwEAIQkLIAMgCUECdGooAgBBgQJqIQxBASEFQQEhCQNAIAAgDDYCACAAQQRqIQAgCSAEdiEIIAlBAWohCSAIRQ0ADAMLC0EBIA10IQwgCEHAAGpBBHIhC0EAIQEDQCAMQX9qIQkgDUGBAmwhBQNAIAAgAUECdGogBSADIAcvAQBBAnRqKAIAajYCAAJAIAEgCUcNAEEBIQUgBCANTQ0EIA1BAWohCQJAIAQgDWtBAXFFDQACQCAMQQJ0IghFDQAgACAIaiAAIAj8CgAACyANQQFqIQ0gDEEBdCEMCyAEIAlGDQQgBCANayEIA0ACQCAMQQJ0IglFDQAgACAJaiAAIAn8CgAACwJAIAxBA3QiDEUNACAAIAxqIAAgDPwKAAALIAkhDCAIQX5qIghFDQUMAAsLQYCAgIB4IAEgCXNndiIKQX9qIAFxIApyIQEgB0ECaiEHIAZBf2oiBg0ACyALIA1BAnRqIQkDQAJAIA1BAWoiDSAESw0AAkAgDEECdCIKRQ0AIAAgCmogACAK/AoAAAsgDEEBdCEMCyAJKAIAIQYgCUEEaiEJIAZFDQALIA0gBE0NAAsLIARBgIADciESQQEgBHQiEEF/aiETIAhBwABqQQRyIRRBfyEJA0AgFCANQQJ0aiERQX8gDXRBf3MhDiANIARrIhVBgQJsIRZBASAVdCIKQQJ0IQsDQAJAAkAgASATcSICIAlHDQAgECEMIAkhAgwBCyAVIQggCiEFAkAgBiAKTw0AIBEhCSAVIQggBiEMA0AgCSgCACEFIAlBBGohCSAFIAxBAXRqIgxBASAIQQFqIgh0IgVJDQALCyAAIAJBAnRqIBBBEHQgCEEIdHIgEnI2AgAgBSAQaiEMIBAhDwsgACAPIAEgBHZqIghBAnRqIQkgFiADIAcvAQBBAnRqKAIAaiEFA0AgCSAFNgIAIAkgC2ohCSAIIApqIgggDEkNAAsCQCABIA5HDQBBAQ8LQYCAgIB4IAEgDnNndiIJQX9qIAFxIAlyIQEgB0ECaiEHIAwhECACIQkgBkF/aiIGDQALA0AgDUEBaiENIBEoAgAhBiARQQRqIREgBkUNAAsgDCEQIAIhCQwACwsgBQuJDwINfwF9IwBBMGsiBSQAAkACQAJAAkACQAJAAkACQAJAAkACQCACQRhJDQAgAS0AEiEGIAEtABEhByABLQAQIQggAS0AEyEJIAEtABQhCiABKAAMIQsgASgABCEMIAEvABYiDUUNAhBzIA1BAnQiDkEEEGQiDw0BQQQgDhBSAAsQc0EEIQJBBEEBEGUiBg0EQQFBBBBSAAsgBUEANgIIIAUgDzYCBCAFIA02AgAQcyAOQQQQZCIPRQ0CIAVBADYCFCAFIA82AhAgBSANNgIMEHMgDkEEEGQiDw0BQQQgDhBSAAsgBUEANgIIIAVCgICAgMAANwIAIAVBADYCFCAFQoCAgIDAADcCDEEEIQ8LIAZBEHQhECAHQQh0IQcgCUEYdCEJQQAhESAFQQA2AiAgBSAPNgIcIAUgDTYCGCAEIANyIQ5BACEGAkACQCAKQX9qDgMEAQAFC0EAIQYgDUUNBAJAIA5FDQAgDCAJIBBqIAdqIAhqaiEQQRghCUEAIQdBACEGA0AgASACIAkQIyESAkAgDCAHaiIOIARODQAgECAHaiIIIANMDQACQCAFKAIIIgogBSgCAEcNACAFEC0LIAUoAgQgCkECdGogDjYCACAFIApBAWo2AggCQCAFKAIUIg4gBSgCDEcNACAFQQxqEC0LIAUoAhAgDkECdGogCDYCACAFIA5BAWo2AhQCQCAGIAUoAhhHDQAgBUEYahAtIAUoAhwhDwsgDyAGQQJ0aiASOAIAIAUgBkEBaiIGNgIgCyAJQQRqIQkgByALaiEHIA1Bf2oiDQ0ADAYLCyAMIAlqIBBqIAdqIAhqIQ5BGCEHQQAhBEEAIQYDQCABIAIgBxAjIRICQCAFKAIIIgkgBSgCAEcNACAFEC0LIAUoAgQgCUECdGogDCAEajYCACAFIAlBAWo2AggCQCAFKAIUIgkgBSgCDEcNACAFQQxqEC0LIAUoAhAgCUECdGogDiAEajYCACAFIAlBAWo2AhQCQCAGIAUoAhhHDQAgBUEYahAtIAUoAhwhDwsgDyAHakFoaiASOAIAIAUgBkEBaiIGNgIgIAdBBGohByAEIAtqIQQgDSAGRw0ADAULC0EAIQYgDUUNAyAHIAhyIBByIAlyIQpBGCEHQQAhBgNAIAEgAiAHECUiCSAKaiEMIAEgAiAHQQRqIgsQIyESAkACQCAORQ0AIAkgBE4NASAMIANMDQELAkAgBSgCCCIHIAUoAgBHDQAgBRAtCyAFKAIEIAdBAnRqIAk2AgAgBSAHQQFqNgIIAkAgBSgCFCIHIAUoAgxHDQAgBUEMahAtCyAFKAIQIAdBAnRqIAw2AgAgBSAHQQFqNgIUAkAgBiAFKAIYRw0AIAVBGGoQLSAFKAIcIQ8LIA8gBkECdGogEjgCACAFIAZBAWoiBjYCIAsgC0EEaiEHIA1Bf2oiDUUNBAwACwtBBCAOEFIACyAGQQA2AAAMAgtBACEGIA1FDQBBGCEHQQAhBgNAIAEgAiAHECUhCSABIAIgB0EEahAlIQwgASACIAdBCGoiCxAjIRICQAJAIA5FDQAgCSAETg0BIAwgA0wNAQsCQCAFKAIIIgcgBSgCAEcNACAFEC0LIAUoAgQgB0ECdGogCTYCACAFIAdBAWo2AggCQCAFKAIUIgcgBSgCDEcNACAFQQxqEC0LIAUoAhAgB0ECdGogDDYCACAFIAdBAWo2AhQCQCAGIAUoAhhHDQAgBUEYahAtIAUoAhwhDwsgDyAGQQJ0aiASOAIAIAUgBkEBaiIGNgIgCyALQQRqIQcgDUF/aiINDQALCyAFKAIIIgJBDGxBBGoiAUEASA0CAkACQCABDQAgBUEANgIsIAVCgICAgBA3AiQgBUEkakEAQQQQJyAFKAIkIQEgBSgCKCEHIAUoAiwhDQwBCxBzQQEhESABQQEQZCIHRQ0DIAUgBzYCKCAFIAE2AiRBACENCyAHIA1qIAI2AAAgBSANQQRqIg02AiwgBSgCBCEPAkAgAkECdCICIAEgDWtNDQAgBUEkaiANIAIQJyAFKAIkIQEgBSgCKCEHIAUoAiwhDQsCQCACRQ0AIAcgDWogDyAC/AoAAAsgBSANIAJqIgI2AiwgBSgCECEEAkAgBSgCFEECdCINIAEgAmtNDQAgBUEkaiACIA0QJyAFKAIkIQEgBSgCLCECCyAFKAIoIQcCQCANRQ0AIAcgAmogBCAN/AoAAAsgBSACIA1qIgI2AiwgBSgCHCENAkAgBkECdCIGIAEgAmtNDQAgBUEkaiACIAYQJyAFKAIkIQEgBSgCKCEHIAUoAiwhAgsCQCAGRQ0AIAcgAmogDSAG/AoAAAsgBSACIAZqIgI2AiwCQAJAIAEgAksNACAHIQYMAQsCQCACDQBBASEGIAcgAUEBEF4MAQsgByABQQEgAhBZIgZFDQILAkAgBSgCGCIBRQ0AIA0gAUECdEEEEF4LAkAgBSgCDCIBRQ0AIAQgAUECdEEEEF4LIAUoAgAiAUUNACAPIAFBAnRBBBBeCyAAIAI2AgQgACAGNgIAIAVBMGokAA8LQQEgAhBSAAsgESABEFIAC98MAgt/A30jAEHQAGsiBiQAAkACQAJAAkACQAJAAkACQAJAAkAgAkEgSQ0AEHMgAkEFdiIHQQJ0IghBBBBkIglFDQMgBkEANgIQIAYgCTYCDCAGIAc2AggQcyAIQQQQZCIJRQ0EIAZBADYCHCAGIAk2AhggBiAHNgIUEHMgCEEEEGQiCUUNBSAGQQA2AiggBiAJNgIkIAYgBzYCIBBzIAhBBBBkIglFDQkgBkEANgI0IAYgCTYCMCAGIAc2AiwQcyAIQQQQZCIKRQ0GQQAhCCAGQQA2AkAgBiAKNgI8IAUgBHIhCyAGIAc2AjggB0EFdCEMQQAhBwNAIAEgAiAHECYhDSABIAIgB0EEahAmIQkgASACIAdBCGoQJiEOIAEgAiAHQQxqECYhDyABIAIgB0EQahAjIREgASACIAdBFGoQIyESIAEgAiAHQRhqIhAQIyETAkACQCALRQ0AIA0gA0cNASAJIAVODQEgDiAETA0BCwJAIAYoAhAiDSAGKAIIRw0AIAZBCGoQLQsgBigCDCANQQJ0aiAJNgIAIAYgDUEBajYCEAJAIAYoAhwiCSAGKAIURw0AIAZBFGoQLQsgBigCGCAJQQJ0aiAONgIAIAYgCUEBajYCHAJAIA9FDQAgEyAPs5UhEwsCQCAGKAIoIgkgBigCIEcNACAGQSBqEC0LIAYoAiQgCUECdGogEzgCACAGIAlBAWo2AigCQCAGKAI0IgkgBigCLEcNACAGQSxqEC0LIAYoAjAgCUECdGogETgCACAGIAlBAWo2AjQCQCAIIAYoAjhHDQAgBkE4ahAtIAYoAjwhCgsgCiAIQQJ0aiASOAIAIAYgCEEBaiIINgJACyAHQSBqIQkgEEEIaiEHIAwgCUcNAAtBACEOIAYoAhAiAUEUbEEEaiIHQQBIDQcgCEECdCECIAcNASAGQQA2AkwgBkKAgICAEDcCRCAGQcQAakEAQQQQJyAGKAJEIQcgBigCSCEJIAYoAkwhCAwCC0EAIQIgBkEANgIQIAZCgICAgMAANwIIIAZBADYCHCAGQoCAgIDAADcCFCAGQQA2AiggBkKAgICAwAA3AiAgBkEANgI0IAZCgICAgMAANwIsIAZBADYCQCAGQoCAgIDAADcCOEEEIQdBACEBCxBzQQEhDiAHQQEQZCIJRQ0FIAYgCTYCSCAGIAc2AkRBACEICyAJIAhqIAE2AAAgBiAIQQRqIgg2AkwgBigCDCEOAkAgAUECdCIBIAcgCGtNDQAgBkHEAGogCCABECcgBigCRCEHIAYoAkghCSAGKAJMIQgLAkAgAUUNACAJIAhqIA4gAfwKAAALIAYgCCABaiIBNgJMIAYoAhghDwJAIAYoAhxBAnQiCCAHIAFrTQ0AIAZBxABqIAEgCBAnIAYoAkQhByAGKAJMIQELIAYoAkghCQJAIAhFDQAgCSABaiAPIAj8CgAACyAGIAEgCGoiATYCTCAGKAIkIQ0CQCAGKAIoQQJ0IgggByABa00NACAGQcQAaiABIAgQJyAGKAJEIQcgBigCSCEJIAYoAkwhAQsCQCAIRQ0AIAkgAWogDSAI/AoAAAsgBiABIAhqIgE2AkwgBigCMCEQAkAgBigCNEECdCIIIAcgAWtNDQAgBkHEAGogASAIECcgBigCRCEHIAYoAkghCSAGKAJMIQELAkAgCEUNACAJIAFqIBAgCPwKAAALIAYgASAIaiIBNgJMIAYoAjwhCQJAIAIgByABa00NACAGQcQAaiABIAIQJyAGKAJEIQcgBigCTCEBCyAGKAJIIQgCQCACRQ0AIAggAWogCSAC/AoAAAsgBiABIAJqIgI2AkwCQAJAIAcgAksNACAIIQEMAQsCQCACDQBBASEBIAggB0EBEF4MAQsgCCAHQQEgAhBZIgFFDQYLAkAgBigCOCIHRQ0AIAkgB0ECdEEEEF4LAkAgBigCLCIHRQ0AIBAgB0ECdEEEEF4LAkAgBigCICIHRQ0AIA0gB0ECdEEEEF4LAkAgBigCFCIHRQ0AIA8gB0ECdEEEEF4LAkAgBigCCCIHRQ0AIA4gB0ECdEEEEF4LIAAgAjYCBCAAIAE2AgAgBkHQAGokAA8LQQQgCBBSAAtBBCAIEFIAC0EEIAgQUgALQQQgCBBSAAsgDiAHEFIAC0EBIAIQUgALQQQgCBBSAAvQCAELfyMAQTBrIggkACAIEEo2AgBBACEJQQAhCgJAIARFDQACQAJAIAYgBEF/ak0NACAEQQNxIQsCQCAEQQRPDQBBACEKQQAhDAwCCyAEQfz///8BcSENQQAhCiAFIQ5BACEMA0AgDkEMaigCACAOQQhqKAIAIA5BBGooAgAgDigCACAKampqaiEKIA5BEGohDiANIAxBBGoiDEcNAAwCCwsgBiAGQeiHwAAQNAALIAtFDQAgBSAMQQJ0aiEOA0AgDigCACAKaiEKIA5BBGohDiALQX9qIgsNAAsLAkACQAJAAkACQAJAAkAgCiAEakECdEEIaiIOQQBIDQAgBEECdCIPQQhqIRACQAJAAkAgDg0AIAhBADYCDCAIQoCAgIAQNwIEDAELEHNBASEJIA5BARBkIgpFDQJBACELIAhBADYCDCAIIAo2AgggCCAONgIEIBAgDk0NAQsgCEEEakEAIBAQJyAIKAIIIQogCCgCDCELCwJAIA9BB2oiDkUNACAKIAtqQQAgDvwLAAsgCiALIA5qIg5qQQA6AAAgCCAOQQFqIg42AgwgDkEDTQ0BIAogBDYAAEEAIQ4gB0EASA0CAkACQCAHDQBBASEJDAELEHNBASEOIAdBARBlIglFDQMLAkAgBA0AQQAhCyAIKAIMIQwMBQsgBEECdCERIAZBAnQhEkEAIQ5BACELA0ACQAJAAkAgEiAORg0AIAUgDmooAgAiDSADIA5qKAIAIgxqIgogDEECaiIMSQ0BIAogAksNASAOQQhqIAgoAgwiBE0NAiAOQQRqIA5BCGogBEHIh8AAEBYACyAGIAZBqIfAABA0AAsgDCAKIAJB2IfAABAWAAsgCCgCCCIKIA5qQQRqIAs2AAAgCEEQaiAIIAEgDGogDUF+aiAJIAcQLAJAIAgtABBBAUcNACAIIAgtABE6ABsgCEEBrUIghiAIQRtqrYQ3AyggCEEcakHPgcAAIAhBKGoQESAIKAIcIQ4gCCgCICIMIAgoAiQQayELAkAgDkUNACAMIA5BARBeCyAAQQA2AgAgACALNgIEAkAgB0UNACAJIAdBARBeCyAIKAIEIg5FDQcgCiAOQQEQXgwHCyAIKAIUIgogB0sNBAJAIAogCCgCBCAEa00NACAIQQRqIAQgChAnCyAIKAIMIQwCQCAKRQ0AIAgoAgggDGogCSAK/AoAAAsgCCAMIApqIgw2AgwgCiALaiELIBEgDkEEaiIORg0FDAALCyAJIA4QUgALQQBBBCAOQYiHwAAQFgALIA4gBxBSAAtBACAKIAdBuIfAABAWAAsgD0EEaiEKAkAgECAMTQ0AIAogECAMQZiHwAAQFgALIAgoAggiDiAKaiALNgAAAkAgCCgCBCIKIAxNDQAgDiAKQQEgDBBZIg5FDQILIAAgDDYCBCAAIA42AgAgB0UNACAJIAdBARBeCyAIEGwgCEEwaiQADwtBASAMEFIAC/QGAQh/AkACQCABIABBA2pBfHEiAiAAayIDSQ0AIAEgA2siBEEESQ0AIARBA3EhBUEAIQZBACEBAkAgAiAARg0AQQAhB0EAIQECQCAAIAJrIghBfEsNAEEAIQdBACEBA0AgASAAIAdqIgIsAABBv39KaiACQQFqLAAAQb9/SmogAkECaiwAAEG/f0pqIAJBA2osAABBv39KaiEBIAdBBGoiBw0ACwsgACAHaiECA0AgASACLAAAQb9/SmohASACQQFqIQIgCEEBaiIIDQALCyAAIANqIQgCQCAFRQ0AIAggBEH8////B3FqIgIsAABBv39KIQYgBUEBRg0AIAYgAiwAAUG/f0pqIQYgBUECRg0AIAYgAiwAAkG/f0pqIQYLIARBAnYhAyAGIAFqIQcDQCAIIQQgA0UNAiADQcABIANBwAFJGyIGQQNxIQUCQAJAIAZBAnQiCUHwB3EiAQ0AQQAhAgwBCyAEIAFqIQBBACECIAQhAQNAIAFBDGooAgAiCEF/c0EHdiAIQQZ2ckGBgoQIcSABQQhqKAIAIghBf3NBB3YgCEEGdnJBgYKECHEgAUEEaigCACIIQX9zQQd2IAhBBnZyQYGChAhxIAEoAgAiCEF/c0EHdiAIQQZ2ckGBgoQIcSACampqaiECIAFBEGoiASAARw0ACwsgAyAGayEDIAQgCWohCCACQQh2Qf+B/AdxIAJB/4H8B3FqQYGABGxBEHYgB2ohByAFRQ0ACyAEIAZB/AFxQQJ0aiICKAIAIgFBf3NBB3YgAUEGdnJBgYKECHEhAQJAIAVBAUYNACACKAIEIghBf3NBB3YgCEEGdnJBgYKECHEgAWohASAFQQJGDQAgAigCCCICQX9zQQd2IAJBBnZyQYGChAhxIAFqIQELIAFBCHZB/4EccSABQf+B/AdxakGBgARsQRB2IAdqIQcMAQsCQCABDQBBAA8LIAFBA3EhCAJAAkAgAUEETw0AQQAhAkEAIQcMAQsgAUF8cSEDQQAhAkEAIQcDQCAHIAAgAmoiASwAAEG/f0pqIAFBAWosAABBv39KaiABQQJqLAAAQb9/SmogAUEDaiwAAEG/f0pqIQcgAyACQQRqIgJHDQALCyAIRQ0AIAAgAmohAQNAIAcgASwAAEG/f0pqIQcgAUEBaiEBIAhBf2oiCA0ACwsgBwv1BgEGfwJAAkACQAJAAkACQAJAAkAgAEF8aiIEKAIAIgVBeHEiBkEEQQggBUEDcSIHGyABakkNACABQSdqIQgCQCAHRQ0AIAYgCEsNAgsCQAJAIAJBCUkNACACIAMQEiICDQFBAA8LQQAhAiADQcz/e0sNCEEQIANBC2pBeHEgA0ELSRshASAAQXhqIQgCQCAHDQAgAUGAAkkNByAIRQ0HIAYgAU0NByAGIAFrQYCACEsNByAADwsgCCAGaiEHAkACQCAGIAFPDQAgB0EAKAKsn0BGDQECQCAHQQAoAqifQEYNACAHKAIEIgVBAnENCSAFQXhxIgkgBmoiBSABSQ0JIAcgCRATAkAgBSABayIHQRBJDQAgBCABIAQoAgBBAXFyQQJyNgIAIAggAWoiASAHQQNyNgIEIAggBWoiBSAFKAIEQQFyNgIEIAEgBxAQDAkLIAQgBSAEKAIAQQFxckECcjYCACAIIAVqIgEgASgCBEEBcjYCBAwIC0EAKAKgn0AgBmoiByABSQ0IAkACQCAHIAFrIgZBD0sNACAEIAVBAXEgB3JBAnI2AgAgCCAHaiIBIAEoAgRBAXI2AgRBACEGQQAhAQwBCyAEIAEgBUEBcXJBAnI2AgAgCCABaiIBIAZBAXI2AgQgCCAHaiIHIAY2AgAgByAHKAIEQX5xNgIEC0EAIAE2AqifQEEAIAY2AqCfQAwHCyAGIAFrIgZBD00NBiAEIAEgBUEBcXJBAnI2AgAgCCABaiIBIAZBA3I2AgQgByAHKAIEQQFyNgIEIAEgBhAQDAYLQQAoAqSfQCAGaiIHIAFLDQQMBgsCQCADIAEgAyABSRsiA0UNACACIAAgA/wKAAALIAQoAgAiA0F4cSIHQQRBCCADQQNxIgMbIAFqSQ0CIANFDQYgByAITQ0GQdyXwABBLkGMmMAAEFMAC0Gcl8AAQS5BzJfAABBTAAtB3JfAAEEuQYyYwAAQUwALQZyXwABBLkHMl8AAEFMACyAEIAEgBUEBcXJBAnI2AgAgCCABaiIFIAcgAWsiAUEBcjYCBEEAIAE2AqSfQEEAIAU2AqyfQAsgCEUNACAADwsgAxABIgFFDQECQCADQXxBeCAEKAIAIgJBA3EbIAJBeHFqIgIgAyACSRsiA0UNACABIAAgA/wKAAALIAEhAgsgABAMCyACC/EFAgh/AX4CQAJAIAENACAFQQFqIQYgACgCCCEHQS0hCAwBC0ErQYCAxAAgACgCCCIHQYCAgAFxIgEbIQggAUEVdiAFaiEGCwJAAkAgB0GAgIAEcQ0AQQAhAgwBCwJAAkAgA0EQSQ0AIAIgAxAJIQEMAQsCQCADDQBBACEBDAELIANBA3EhCQJAAkAgA0EETw0AQQAhCkEAIQEMAQsgA0EMcSELQQAhCkEAIQEDQCABIAIgCmoiDCwAAEG/f0pqIAxBAWosAABBv39KaiAMQQJqLAAAQb9/SmogDEEDaiwAAEG/f0pqIQEgCyAKQQRqIgpHDQALCyAJRQ0AIAIgCmohDANAIAEgDCwAAEG/f0pqIQEgDEEBaiEMIAlBf2oiCQ0ACwsgASAGaiEGCwJAAkAgBiAALwEMIgtPDQACQAJAAkAgB0GAgIAIcQ0AIAsgBmshDUEAIQFBACELAkACQAJAIAdBHXZBA3EOBAIAAQACCyANIQsMAQsgDUH+/wNxQQF2IQsLIAdB////AHEhBiAAKAIEIQkgACgCACEKA0AgAUH//wNxIAtB//8DcU8NAkEBIQwgAUEBaiEBIAogBiAJKAIQEQUARQ0ADAULCyAAIAApAggiDqdBgICA/3lxQbCAgIACcjYCCEEBIQwgACgCACIKIAAoAgQiCSAIIAIgAxA/DQNBACEBIAsgBmtB//8DcSECA0AgAUH//wNxIAJPDQJBASEMIAFBAWohASAKQTAgCSgCEBEFAEUNAAwECwtBASEMIAogCSAIIAIgAxA/DQIgCiAEIAUgCSgCDBEHAA0CQQAhASANIAtrQf//A3EhAANAIAFB//8DcSICIABJIQwgAiAATw0DIAFBAWohASAKIAYgCSgCEBEFAEUNAAwDCwtBASEMIAogBCAFIAkoAgwRBwANASAAIA43AghBAA8LQQEhDCAAKAIAIgEgACgCBCIKIAggAiADED8NACABIAQgBSAKKAIMEQcAIQwLIAwLjgYBBX8gAEF4aiIBIABBfGooAgAiAkF4cSIAaiEDAkACQCACQQFxDQAgAkECcUUNASABKAIAIgIgAGohAAJAIAEgAmsiAUEAKAKon0BHDQAgAygCBEEDcUEDRw0BQQAgADYCoJ9AIAMgAygCBEF+cTYCBCABIABBAXI2AgQgAyAANgIADwsgASACEBMLAkACQAJAAkACQAJAIAMoAgQiAkECcQ0AIANBACgCrJ9ARg0CIANBACgCqJ9ARg0DIAMgAkF4cSICEBMgASACIABqIgBBAXI2AgQgASAAaiAANgIAIAFBACgCqJ9ARw0BQQAgADYCoJ9ADwsgAyACQX5xNgIEIAEgAEEBcjYCBCABIABqIAA2AgALIABBgAJJDQIgASAAEBVBACEBQQBBACgCwJ9AQX9qIgA2AsCfQCAADQQCQEEAKAKInUAiAEUNAEEAIQEDQCABQQFqIQEgACgCCCIADQALC0EAIAFB/x8gAUH/H0sbNgLAn0APC0EAIAE2AqyfQEEAQQAoAqSfQCAAaiIANgKkn0AgASAAQQFyNgIEAkAgAUEAKAKon0BHDQBBAEEANgKgn0BBAEEANgKon0ALIABBACgCuJ9AIgRNDQNBACgCrJ9AIgBFDQNBACECQQAoAqSfQCIFQSlJDQJBgJ3AACEBA0ACQCABKAIAIgMgAEsNACAAIAMgASgCBGpJDQQLIAEoAgghAQwACwtBACABNgKon0BBAEEAKAKgn0AgAGoiADYCoJ9AIAEgAEEBcjYCBCABIABqIAA2AgAPCwJAAkBBACgCmJ9AIgNBASAAQQN2dCICcQ0AQQAgAyACcjYCmJ9AIABB+AFxQZCdwABqIgAhAwwBCyAAQfgBcSIAQZCdwABqIQMgAEGYncAAaigCACEACyADIAE2AgggACABNgIMIAEgAzYCDCABIAA2AggPCwJAQQAoAoidQCIBRQ0AQQAhAgNAIAJBAWohAiABKAIIIgENAAsLQQAgAkH/HyACQf8fSxs2AsCfQCAFIARNDQBBAEF/NgK4n0ALC4oFAQd/AkACQCAAKAIIIgNBgICAwAFxRQ0AAkACQAJAAkACQCADQYCAgIABcUUNACAALwEOIgQNAUEAIQIMAgsCQCACQRBJDQAgASACEAkhBQwECwJAIAINAEEAIQUMBAsgAkEDcSEGAkACQCACQQRPDQBBACEHQQAhBQwBCyACQQxxIQRBACEHQQAhBQNAIAUgASAHaiIILAAAQb9/SmogCEEBaiwAAEG/f0pqIAhBAmosAABBv39KaiAIQQNqLAAAQb9/SmohBSAEIAdBBGoiB0cNAAsLIAZFDQMgASAHaiEIA0AgBSAILAAAQb9/SmohBSAIQQFqIQggBkF/aiIGDQAMBAsLIAEgAmohBkEAIQIgASEIIAQhBwNAIAgiBSAGRg0CAkACQCAFLAAAIghBf0wNACAFQQFqIQgMAQsCQCAIQWBPDQAgBUECaiEIDAELAkAgCEFwTw0AIAVBA2ohCAwBCyAFQQRqIQgLIAggBWsgAmohAiAHQX9qIgcNAAsLQQAhBwsgBCAHayEFCyAFIAAvAQwiCE8NACAIIAVrIQlBACEFQQAhBAJAAkACQCADQR12QQNxDgQCAAECAgsgCSEEDAELIAlB/v8DcUEBdiEECyADQf///wBxIQYgACgCBCEHIAAoAgAhAAJAA0AgBUH//wNxIARB//8DcU8NAUEBIQggBUEBaiEFIAAgBiAHKAIQEQUADQMMAAsLQQEhCCAAIAEgAiAHKAIMEQcADQFBACEFIAkgBGtB//8DcSECA0AgBUH//wNxIgQgAkkhCCAEIAJPDQIgBUEBaiEFIAAgBiAHKAIQEQUADQIMAAsLIAAoAgAgASACIAAoAgQoAgwRBwAhCAsgCAvABAEIfyMAQRBrIgQkAAJAAkACQCADQQFxDQAgAi0AACIFDQFBACEFDAILIAAgAiADQQF2IAEoAgwRBwAhBQwBCyABKAIMIQZBACEHA0AgAkEBaiEIAkACQAJAAkACQCAFwEF/Sg0AIAVB/wFxIglBgAFGDQEgCUHAAUcNAyAEIAE2AgQgBCAANgIAIARCoICAgAY3AgggAyAHQQN0aiIFKAIAIAQgBSgCBBEFAEUNAkEBIQUMBgsCQCAAIAggBUH/AXEiBSAGEQcADQAgCCAFaiECDAQLQQEhBQwFCwJAIAAgAkEDaiIFIAIvAAEiAiAGEQcADQAgBSACaiECDAMLQQEhBQwECyAHQQFqIQcgCCECDAELQaCAgIAGIQoCQCAFQQFxRQ0AIAJBBWohCCACKAABIQoLQQAhCQJAAkAgBUECcQ0AQQAhCyAIIQIMAQsgCEECaiECIAgvAAAhCwsCQAJAIAVBBHENACACIQgMAQsgAkECaiEIIAIvAAAhCQsCQAJAIAVBCHENACAIIQIMAQsgCEECaiECIAgvAAAhBwsCQCAFQRBxRQ0AIAMgC0H//wNxQQN0ai8BBCELCwJAIAVBIHFFDQAgAyAJQf//A3FBA3RqLwEEIQkLIAQgCTsBDiAEIAs7AQwgBCAKNgIIIAQgATYCBCAEIAA2AgACQCADIAdBA3RqIgUoAgAgBCAFKAIEEQUARQ0AQQEhBQwDCyAHQQFqIQcLIAItAAAiBQ0AC0EAIQULIARBEGokACAFC5MEAQl/IAAhAyACIQQCQCAAQegHSQ0AIAFBfGohBUEAIQYgACEHAkACQANAIAcgB0GQzgBuIgNBkM4AbGsiCEH//wNxQeQAbiEJAkACQCACIAZqIgRBfGogAk8NACAFIAJqIgogCUEBdCILLQDomUA6AAAgBEF9aiACSQ0BIARBfWogAkGwm8AAEDQACyAEQXxqIAJBsJvAABA0AAsgCkEBaiALQemZwABqLQAAOgAAAkAgBEF+aiACTw0AIApBAmogCCAJQeQAbGtBAXRB/v8HcSIJLQDomUA6AAAgBEF/aiACTw0CIApBA2ogCUHpmcAAai0AADoAACAFQXxqIQUgBkF8aiEGIAdB/6ziBEshBCADIQcgBEUNAwwBCwsgBEF+aiACQbCbwAAQNAALIARBf2ogAkGwm8AAEDQACyACIAZqIQQLAkACQCADQQlLDQAgAyEKIAQhBwwBCyADQf//A3FB5ABuIQoCQAJAIARBfmoiByACTw0AIAEgB2ogAyAKQeQAbGtB//8DcUEBdCIGLQDomUA6AAAgBEF/aiIEIAJPDQEgASAEaiAGQemZwABqLQAAOgAADAILIAcgAkGwm8AAEDQACyAEIAJBsJvAABA0AAsCQAJAIABFDQAgCkUNAQsCQCAHQX9qIgcgAkkNACAHIAJBsJvAABA0AAsgASAHaiAKQQF0LQDpmUA6AAALIAcLhQQBAn8gACABaiECAkACQCAAKAIEIgNBAXENACADQQJxRQ0BIAAoAgAiAyABaiEBAkAgACADayIAQQAoAqifQEcNACACKAIEQQNxQQNHDQFBACABNgKgn0AgAiACKAIEQX5xNgIEIAAgAUEBcjYCBCACIAE2AgAMAgsgACADEBMLAkACQAJAAkAgAigCBCIDQQJxDQAgAkEAKAKsn0BGDQIgAkEAKAKon0BGDQMgAiADQXhxIgMQEyAAIAMgAWoiAUEBcjYCBCAAIAFqIAE2AgAgAEEAKAKon0BHDQFBACABNgKgn0APCyACIANBfnE2AgQgACABQQFyNgIEIAAgAWogATYCAAsCQCABQYACSQ0AIAAgARAVDwsCQAJAQQAoApifQCICQQEgAUEDdnQiA3ENAEEAIAIgA3I2ApifQCABQfgBcUGQncAAaiIBIQIMAQsgAUH4AXEiAUGQncAAaiECIAFBmJ3AAGooAgAhAQsgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtBACAANgKsn0BBAEEAKAKkn0AgAWoiATYCpJ9AIAAgAUEBcjYCBCAAQQAoAqifQEcNAUEAQQA2AqCfQEEAQQA2AqifQA8LQQAgADYCqJ9AQQBBACgCoJ9AIAFqIgE2AqCfQCAAIAFBAXI2AgQgACABaiABNgIADwsLlwMBBn8jAEEQayIDJAACQAJAAkACQAJAAkACQCACQQFxRQ0AIAJBAXYhBAwBCyABLQAAIgRFDQFBACEFIAEhBkEAIQcDQCAGQQFqIQYCQAJAIATAQX9KDQACQCAEQf8BcUGAAUcNACAHIAYvAAAiBGohByAGIARqQQJqIQYMAgsgBiAEQQNxQRh3IghBBXRBgICAgARxIAhBgICACHFBB3QgCEGAgICAAnFyckEddmogBEEBdkECcWogBEECdkECcWohBiAHRSAFciEFDAELIAYgBEH/AXEiBGohBiAHIARqIQcLIAYtAAAiBA0AC0EAIQQgBSAHQRBJcQ0AQQAhCCAHQQF0IgRBAEgNBAsgBA0BC0EBIQZBACEEDAELEHNBASEIIARBARBkIgZFDQELIANBADYCCCADIAY2AgQgAyAENgIAIANBtJjAACABIAIQDkUNAUHcmMAAQdYAIANBD2pBzJjAAEG0mcAAEDAACyAIIAQQUgALIAAgAykCADcCACAAQQhqIANBCGooAgA2AgAgA0EQaiQAC+8CAQV/QQAhAgJAIAFBzf97IABBECAAQRBLGyIAa08NACAAQRAgAUELakF4cSABQQtJGyIDakEMahABIgFFDQAgAUF4aiECAkACQCAAQX9qIgQgAXENACACIQAMAQsgAUF8aiIFKAIAIgZBeHEgBCABakEAIABrcUF4aiIBQQAgACABIAJrQRBLG2oiACACayIBayEEAkAgBkEDcUUNACAAIAQgACgCBEEBcXJBAnI2AgQgACAEaiIEIAQoAgRBAXI2AgQgBSABIAUoAgBBAXFyQQJyNgIAIAIgAWoiBCAEKAIEQQFyNgIEIAIgARAQDAELIAIoAgAhAiAAIAQ2AgQgACACIAFqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgA0EQak0NACAAIAMgAUEBcXJBAnI2AgQgACADaiIBIAIgA2siA0EDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAMQEAsgAEEIaiECCyACC4kDAQR/IAAoAgwhAgJAAkACQAJAIAFBgAJJDQAgACgCGCEDAkACQAJAIAIgAEcNACAAQRRBECAAKAIUIgIbaigCACIBDQFBACECDAILIAAoAggiASACNgIMIAIgATYCCAwBCyAAQRRqIABBEGogAhshBANAIAQhBSABIgJBFGogAkEQaiACKAIUIgEbIQQgAkEUQRAgARtqKAIAIgENAAsgBUEANgIACyADRQ0CAkACQCAAIAAoAhxBAnRBgJzAAGoiASgCAEYNACADKAIQIABGDQEgAyACNgIUIAINAwwECyABIAI2AgAgAkUNBAwCCyADIAI2AhAgAg0BDAILAkAgAiAAKAIIIgRGDQAgBCACNgIMIAIgBDYCCA8LQQBBACgCmJ9AQX4gAUEDdndxNgKYn0APCyACIAM2AhgCQCAAKAIQIgFFDQAgAiABNgIQIAEgAjYCGAsgACgCFCIBRQ0AIAIgATYCFCABIAI2AhgPCw8LQQBBACgCnJ9AQX4gACgCHHdxNgKcn0AL6AIBBH8jAEEwayIDJAAgAxBKNgIMQQAhBAJAAkACQAJAIAJBAnQiBUEASA0AAkADQEEBIQYCQCAFRQ0AEHNBASEEIAVBARBlIgZFDQMLIANBEGogA0EMaiABIAIgBiAFECwCQCADLQAQQQFHDQAgAy0AEUUNAiAFQYCAgMAASw0EAkAgBUUNACAGIAVBARBeCyAFQQF0IQUMAQsLIAAgBjYCBCAAIAU2AgAgACADKAIUIgYgBSAGIAVJGzYCCAwECyADQQA6ABsgA0EBrUIghiADQRtqrYQ3AyggA0EcakHPgcAAIANBKGoQESADKAIcIQIgAygCICIEIAMoAiQQayEBIABBgICAgHg2AgAgACABNgIEAkAgAkUNACAEIAJBARBeCyAFRQ0DDAILIAQgBRBSAAtB+IfAAEEeEGshAiAAQYCAgIB4NgIAIAAgAjYCBAsgBiAFQQEQXgsgA0EMahBsIANBMGokAAvIAgEEf0EAIQICQCABQYACSQ0AQR8hAiABQf///wdLDQAgAUEmIAFBCHZnIgJrdkEBcSACQQF0a0E+aiECCyAAQgA3AhAgACACNgIcIAJBAnRBgJzAAGohAwJAQQAoApyfQEEBIAJ0IgRxDQAgAyAANgIAIAAgAzYCGCAAIAA2AgwgACAANgIIQQBBACgCnJ9AIARyNgKcn0APCwJAAkACQCADKAIAIgQoAgRBeHEgAUcNACAEIQIMAQsgAUEAQRkgAkEBdmsgAkEfRht0IQMDQCAEIANBHXZBBHFqIgUoAhAiAkUNAiADQQF0IQMgAiEEIAIoAgRBeHEgAUcNAAsLIAIoAggiAyAANgIMIAIgADYCCCAAQQA2AhggACACNgIMIAAgAzYCCA8LIAVBEGogADYCACAAIAQ2AhggACAANgIMIAAgADYCCAulAgIBfwF+IwBBIGsiBCQAAkACQAJAIAAgAksNACABIAJLDQFBHK1CIIYhBSAAIAFNDQIgBCAANgIIIAQgATYCDCAEIAUgBEEMaq2ENwMYIAQgBSAEQQhqrYQ3AxBBgIDAACAEQRBqIAMQPAALIAQgADYCCCAEIAI2AgwgBEEcrUIghiIFIARBDGqthDcDGCAEIAUgBEEIaq2ENwMQQd+AwAAgBEEQaiADEDwACyAEIAE2AgggBCACNgIMIARBHK1CIIYiBSAEQQxqrYQ3AxggBCAFIARBCGqthDcDEEGYgcAAIARBEGogAxA8AAsgBCABNgIIIAQgAjYCDCAEIAUgBEEMaq2ENwMYIAQgBSAEQQhqrYQ3AxBBmIHAACAEQRBqIAMQPAALpQIBBn8gACgCCCECAkACQCABQYABTw0AQQEhAwwBCwJAIAFBgBBPDQBBAiEDDAELQQNBBCABQYCABEkbIQMLIAIhBAJAIAMgACgCACACa00NACAAIAIgA0EBQQEQJCAAKAIIIQQLIAAoAgQgBGohBAJAAkAgAUGAAUkNACABQT9xQYB/ciEFIAFBBnYhBgJAIAFBgBBPDQAgBCAFOgABIAQgBkHAAXI6AAAMAgsgAUEMdiEHIAZBP3FBgH9yIQYCQCABQf//A0sNACAEIAU6AAIgBCAGOgABIAQgB0HgAXI6AAAMAgsgBCAFOgADIAQgBjoAAiAEIAdBP3FBgH9yOgABIAQgAUESdkFwcjoAAAwBCyAEIAE6AAALIAAgAyACajYCCEEAC6ECAQZ/IAAoAgghAgJAAkAgAUGAAU8NAEEBIQMMAQsCQCABQYAQTw0AQQIhAwwBC0EDQQQgAUGAgARJGyEDCyACIQQCQCADIAAoAgAgAmtNDQAgACACIAMQKSAAKAIIIQQLIAAoAgQgBGohBAJAAkAgAUGAAUkNACABQT9xQYB/ciEFIAFBBnYhBgJAIAFBgBBPDQAgBCAFOgABIAQgBkHAAXI6AAAMAgsgAUEMdiEHIAZBP3FBgH9yIQYCQCABQf//A0sNACAEIAU6AAIgBCAGOgABIAQgB0HgAXI6AAAMAgsgBCAFOgADIAQgBjoAAiAEIAdBP3FBgH9yOgABIAQgAUESdkFwcjoAAAwBCyAEIAE6AAALIAAgAyACajYCCEEAC4MCAQN/IwBBMGsiBCQAIAQQSjYCDEEAIQUCQCADQQBIDQBBASEGAkAgA0UNABBzQQEhBSADQQEQZSIGRQ0BCyAEQRBqIARBDGogASACIAYgAxAsAkACQCAELQAQQQFHDQAgBCAELQAROgAbIARBAa1CIIYgBEEbaq2ENwMoIARBHGpBz4HAACAEQShqEBEgBCgCHCEFIAQoAiAiASAEKAIkEGshAgJAIAVFDQAgASAFQQEQXgsgAEGAgICAeDYCACAAIAI2AgQgA0UNASAGIANBARBeDAELIAAgAzYCCCAAIAY2AgQgACADNgIACyAEQQxqEGwgBEEwaiQADwsgBSADEFIAC4gCAgN/AX4jAEEwayICJAACQCABKAIAQYCAgIB4Rw0AIAEoAgwhAyACQSRqQQhqIgRBADYCACACQoCAgIAQNwIkIAJBJGpBvJbAACADKAIAIgMoAgAgAygCBBAOGiACQRhqQQhqIAQoAgAiAzYCACACIAIpAiQiBTcDGCABQQhqIAM2AgAgASAFNwIACyABKQIAIQUgAUKAgICAEDcCACACQQhqQQhqIgMgAUEIaiIBKAIANgIAIAFBADYCACACIAU3AwgQcwJAQQxBBBBkIgENAEEEQQwQaAALIAEgAikDCDcCACABQQhqIAMoAgA2AgAgAEGcmMAANgIEIAAgATYCACACQTBqJAALzgEBAn8jAEEQayIEJAAgBEEEaiABIAIgAxAZAkAgAkUNACABIAJBARBeCwJAAkACQCAEKAIEIgNBgICAgHhHDQBBASEDQQAhASAEKAIIIQVBACECDAELIAQoAgghBQJAAkAgAyAEKAIMIgJLDQAgBSEBDAELAkAgAg0AQQEhASAFIANBARBeDAELIAUgA0EBIAIQWSIBRQ0CC0EAIQVBACEDCyAAIAM2AgwgACAFNgIIIAAgAjYCBCAAIAE2AgAgBEEQaiQADwtBASACEFIAC8wBAQN/IwBBEGsiAyQAIANBBGogASACEBQCQCACRQ0AIAEgAkEBEF4LAkACQAJAIAMoAgQiBEGAgICAeEcNAEEBIQRBACEBIAMoAgghBUEAIQIMAQsgAygCCCEFAkACQCAEIAMoAgwiAksNACAFIQEMAQsCQCACDQBBASEBIAUgBEEBEF4MAQsgBSAEQQEgAhBZIgFFDQILQQAhBUEAIQQLIAAgBDYCDCAAIAU2AgggACACNgIEIAAgATYCACADQRBqJAAPC0EBIAIQUgAL3AEBAn8jAEEgayIFJAACQAJAQQEQOUH/AXEiBkECRg0AIAZBAXFFDQEgBUEIaiAAIAEoAhgRBAAMAQtBACgC2J9AIgZBf0wNAEEAIAZBAWo2AtifQAJAAkBBACgC3J9ARQ0AIAUgACABKAIUEQQAIAUgBDoAHSAFIAM6ABwgBSACNgIYIAUgBSkDADcCEEEAKALcn0AgBUEQakEAKALgn0AoAhQRBAAMAQtBgICAgHggBRBMC0EAQQAoAtifQEF/ajYC2J9AQQBBADoA0J9AIANFDQAgACABEF8ACwALtgECAn8BfkEBIQZBBCEHAkACQCAEIAVqQX9qQQAgBGtxrSADrX4iCEIgiKdFDQBBACEDDAELAkAgCKciA0GAgICAeCAEa00NAEEAIQMMAQsCQAJAAkACQCABRQ0AIAIgBSABbCAEIAMQWSEHDAELAkAgAw0AIAQhBwwCCxBzIAMgBBBkIQcLIAcNACAAIAQ2AgQMAQsgACAHNgIEQQAhBgtBCCEHCyAAIAdqIAM2AgAgACAGNgIAC7YBAgJ/AX5BASEGQQQhBwJAAkAgBCAFakF/akEAIARrca0gA61+IghCIIinRQ0AQQAhAwwBCwJAIAinIgNBgICAgHggBGtNDQBBACEDDAELAkACQAJAAkAgAUUNACACIAUgAWwgBCADEFkhBwwBCwJAIAMNACAEIQcMAgsQcyADIAQQZCEHCyAHDQAgACAENgIEDAELIAAgBzYCBEEAIQYLQQghBwsgACAHaiADNgIAIAAgBjYCAAu0AQEBfyMAQRBrIgskACALQQhqIAEgAiADIAQgBSAGIAcgCCAJIAoQAwJAIAZFDQAgBSAGQQJ0QQQQXgsCQCAERQ0AIAMgBEECdEEEEF4LAkAgAkUNACABIAJBARBeCwJAAkAgCygCCCIGDQBBASEEQQAhBiALKAIMIQJBACEFDAELQQAhAiALKAIMIQVBACEECyAAIAQ2AgwgACACNgIIIAAgBTYCBCAAIAY2AgAgC0EQaiQAC7IBAQF/IwBBEGsiCiQAIApBCGogASACIAMgBCAFIAYgByAIIAkQBAJAIAZFDQAgBSAGQQJ0QQQQXgsCQCAERQ0AIAMgBEECdEEEEF4LAkAgAkUNACABIAJBARBeCwJAAkAgCigCCCIGDQBBASEEQQAhBiAKKAIMIQJBACEFDAELQQAhAiAKKAIMIQVBACEECyAAIAQ2AgwgACACNgIIIAAgBTYCBCAAIAY2AgAgCkEQaiQAC64BAQF/IwBBEGsiCCQAIAhBCGogASACIAMgBCAFIAYgBxAIAkAgBkUNACAFIAZBAnRBBBBeCwJAIARFDQAgAyAEQQJ0QQQQXgsCQCACRQ0AIAEgAkEBEF4LAkACQCAIKAIIIgYNAEEBIQRBACEGIAgoAgwhAkEAIQUMAQtBACECIAgoAgwhBUEAIQQLIAAgBDYCDCAAIAI2AgggACAFNgIEIAAgBjYCACAIQRBqJAALmAEBA38CQAJAAkACQCACIAFPDQAgAkEBaiIDIAFPDQEgAkECaiIEIAFPDQIgAkEDaiIFIAFJDQMgBSABQfiFwAAQNAALIAIgAUHIhcAAEDQACyADIAFB2IXAABA0AAsgBCABQeiFwAAQNAALIAAgA2otAABBCHQgACACai0AAHIgACAEai0AAEEQdHIgACAFai0AAEEYdHK+C5UBAQF/IwBBEGsiBSQAAkAgAiABaiIBIAJPDQBBAEEAEFIACyAFQQRqIAAoAgAiAiAAKAIEIAEgAkEBdCICIAEgAksbIgJBCEEEIARBAUYbIgEgAiABSxsiAiADIAQQHwJAIAUoAgRBAUcNACAFKAIIIAUoAgwQUgALIAUoAgghBCAAIAI2AgAgACAENgIEIAVBEGokAAuXAQEDfwJAAkACQAJAIAIgAU8NACACQQFqIgMgAU8NASACQQJqIgQgAU8NAiACQQNqIgUgAUkNAyAFIAFBuIbAABA0AAsgAiABQYiGwAAQNAALIAMgAUGYhsAAEDQACyAEIAFBqIbAABA0AAsgACADai0AAEEIdCAAIAJqLQAAciAAIARqLQAAQRB0ciAAIAVqLQAAQRh0cguXAQEDfwJAAkACQAJAIAIgAU8NACACQQFqIgMgAU8NASACQQJqIgQgAU8NAiACQQNqIgUgAUkNAyAFIAFB+IbAABA0AAsgAiABQciGwAAQNAALIAMgAUHYhsAAEDQACyAEIAFB6IbAABA0AAsgACADai0AAEEIdCAAIAJqLQAAciAAIARqLQAAQRB0ciAAIAVqLQAAQRh0cguLAQEBfyMAQRBrIgMkAAJAIAIgAWoiASACTw0AQQBBABBSAAsgA0EEaiAAKAIAIgIgACgCBCABIAJBAXQiAiABIAJLGyICQQggAkEISxsiAkEBQQEQHgJAIAMoAgRBAUcNACADKAIIIAMoAgwQUgALIAMoAgghASAAIAI2AgAgACABNgIEIANBEGokAAukAQIDfwF+IwBBIGsiAiQAAkAgASgCAEGAgICAeEcNACABKAIMIQMgAkEUakEIaiIEQQA2AgAgAkKAgICAEDcCFCACQRRqQbyWwAAgAygCACIDKAIAIAMoAgQQDhogAkEIakEIaiAEKAIAIgM2AgAgAiACKQIUIgU3AwggAUEIaiADNgIAIAEgBTcCAAsgAEGcmMAANgIEIAAgATYCACACQSBqJAALhwEBAX8jAEEQayIDJAACQCACIAFqIgEgAk8NAEEAQQAQUgALIANBBGogACgCACICIAAoAgQgASACQQF0IgIgASACSxsiAkEIIAJBCEsbIgIQKgJAIAMoAgRBAUcNACADKAIIIAMoAgwQUgALIAMoAgghASAAIAI2AgAgACABNgIEIANBEGokAAuEAQACQAJAIANBAE4NAEEBIQFBBCECQQAhAwwBCwJAAkACQAJAIAFFDQAgAiABQQEgAxBZIQEMAQsCQCADDQBBASEBDAILEHMgA0EBEGQhAQsgAQ0AQQEhASAAQQE2AgQMAQsgACABNgIEQQAhAQtBCCECCyAAIAJqIAM2AgAgACABNgIAC4gBAQN/IwBBEGsiASQAAkAgACgCACICKAIEIgNBAXFFDQAgAigCACECIAEgA0EBdjYCBCABIAI2AgAgAUHUlsAAIAAoAgQgACgCCCIALQAIIAAtAAkQHQALIAFBgICAgHg2AgAgASAANgIMIAFB8JbAACAAKAIEIAAoAggiAC0ACCAALQAJEB0AC4QBAQJ/IwBBEGsiBiQAQQAhByAGQQA2AgwCQAJAAkACQAJAIAEoAgAgAiADIAQgBSAGQQxqEFUOBAECAAMAC0GwicAAQewAQZyKwAAQQgALIAAgBigCDDYCBAwCCyAAQQA6AAFBASEHDAELQQEhByAAQQE6AAELIAAgBzoAACAGQRBqJAALawEDfyMAQRBrIgEkACABQQRqIAAoAgAiAiAAKAIEIAJBAXQiAkEEIAJBBEsbIgJBBEEEEB4CQCABKAIEQQFHDQAgASgCCCABKAIMEFIACyABKAIIIQMgACACNgIAIAAgAzYCBCABQRBqJAALYAECfwJAAkAgAkEQdiACQf//A3FBAEdqIgJAACIDQX9HDQBBACECQQAhBAwBCyACQRB0IgRBcGogBCADQRB0IgJBACAEa0YbIQQLIABBADYCCCAAIAQ2AgQgACACNgIAC2ABAn8CQAJAIABBfGooAgAiA0F4cSIEQQRBCCADQQNxIgMbIAFqSQ0AAkAgA0UNACAEIAFBJ2pLDQILIAAQDA8LQZyXwABBLkHMl8AAEFMAC0Hcl8AAQS5BjJjAABBTAAtZAQF/IwBBIGsiBSQAIAUgATYCBCAFIAA2AgAgBSADNgIMIAUgAjYCCCAFQR6tQiCGIAVBCGqthDcDGCAFQR+tQiCGIAWthDcDEEHogcAAIAVBEGogBBA8AAtoAQJ/QQAhAQJAIAAoAgBBDEcNAEEAIQFBrNoAIAAoAgQiAkEAKAL4m0AgAhsRAwAiAkUNAAJAQazaAEUNACACQQBBrNoA/AsACyACIAAoAggiAEEAKAL8m0AgABs2AqhaIAIhAQsgAQtZAQJ/IAEoAgAhAiABQQA2AgACQAJAIAJFDQAgASgCBCEDEHNBCEEEEGQiAUUNASABIAM2AgQgASACNgIAIABBjJfAADYCBCAAIAE2AgAPCwALQQRBCBBoAAtRAQF/IwBBEGsiBiQAIAZBCGogASACIAMgBCAFEAcgBigCDCEFIAYoAgghBAJAIAJFDQAgASACQQEQXgsgACAENgIAIAAgBTYCBCAGQRBqJAALTgIBfwF+IwBBIGsiAyQAIAMgATYCDCADIAA2AgggA0EcrUIghiIEIANBCGqthDcDGCADIAQgA0EMaq2ENwMQQaiAwAAgA0EQaiACEDwAC08BAX8jAEEQayIFJAAgBUEIaiABIAIgAyAEEAYgBSgCDCEEIAUoAgghAwJAIAJFDQAgASACQQEQXgsgACADNgIAIAAgBDYCBCAFQRBqJAALUAEBfwJAIAIgACgCACAAKAIIIgNrTQ0AIAAgAyACQQFBARAkIAAoAgghAwsCQCACRQ0AIAAoAgQgA2ogASAC/AoAAAsgACADIAJqNgIIQQALRQACQAJAIAFBCUkNACABIAAQEiEBDAELIAAQASEBCwJAIAFFDQAgAUF8ai0AAEEDcUUNACAARQ0AIAFBACAA/AsACyABC0wBAX8CQCACIAAoAgAgACgCCCIDa00NACAAIAMgAhApIAAoAgghAwsCQCACRQ0AIAAoAgQgA2ogASAC/AoAAAsgACADIAJqNgIIQQALUgECf0EAIQFBAEEAKALUn0AiAkEBajYC1J9AAkAgAkEASA0AQQEhAUEALQDQn0ANAEEAIAA6ANCfQEEAQQAoAsyfQEEBajYCzJ9AQQIhAQsgAQs9AQF/IwBBEGsiAiQAIAFBAUEBQQAgAkEGaiAAKAIAIAJBBmpBChAPIgBqQQogAGsQCyEAIAJBEGokACAAC0cBAn8gASgCBCECIAEoAgAhAxBzAkBBCEEEEGQiAQ0AQQRBCBBoAAsgASACNgIEIAEgAzYCACAAQYyXwAA2AgQgACABNgIACzsBAX8jAEEgayIDJAAgAyABNgIQIAMgADYCDCADQQE7ARwgAyACNgIYIAMgA0EMajYCFCADQRRqEEAACzQAAkAgAWlBAUcNACAAQYCAgIB4IAFrSw0AAkAgAEUNABBzIAAgARBkIgFFDQELIAEPCwALQAACQCAAKAIAQYCAgIB4Rg0AIAEgACgCBCAAKAIIEFcPCyABKAIAIAEoAgQgACgCDCgCACIAKAIAIAAoAgQQDgs5AAJAIAJBgIDEAEYNACAAIAIgASgCEBEFAEUNAEEBDwsCQCADDQBBAA8LIAAgAyAEIAEoAgwRBwALLAIBfwF+IwBBEGsiASQAIAApAgAhAiABIAA2AgwgASACNwIEIAFBBGoQbQALLQEBfyMAQRBrIgEkACABIAApAgA3AgggAUEIakGglsAAIAAoAghBAUEAEB0ACyoBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADIAA2AgQgA0EEahBvAAsjAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkEIahBuAAspAQF/AkAgACgCACIBQYCAgIB4ckGAgICAeEYNACAAKAIEIAFBARBeCwseAQF/AkAgACgCACICRQ0AIAEgAiAAKAIEEFcPCwALIAACQCABKAIARQ0AIABBjJfAADYCBCAAIAE2AgAPCwALHwAgAUH/iMAAQfiIwAAgAC0AACIAG0ERQQcgABsQVwsbAQF/EHMgAEEEakEEEGQiASAANgIAIAFBBGoLHgAgACgCACAAKAIEQQAoAsifQCIAQQQgABsRBAAACyMBAX8CQEH4isAAEDEiAA0AQayKwABBOkHoisAAEEIACyAACxcAAkAgAUEJSQ0AIAEgABASDwsgABABCx8AAkAgAEGAgICAeHJBgICAgHhGDQAgASAAQQEQXgsLHAEBfwJAIAAoAgAiAUUNACAAKAIEIAFBARBeCwscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEF4LCxUAIABBfGoiACAAKAIAQQRqQQQQXgsdACAAQQhqQQApAoiWQDcCACAAQQApAoCWQDcCAAsdACAAQQhqQQApApiWQDcCACAAQQApApCWQDcCAAsUAAJAIABFDQAgACABEGgACxBiAAsRACAAIAFBAXRBAXIgAhA8AAsSAAJAIAFFDQAgACABIAIQXgsLEgAgACABIAIgAyAEQQAgBRACCxUAAkAgAEUNACAAIAAoAqhaEQIACwsWACAAKAIAIAEgAiAAKAIEKAIMEQcACxQAIAAoAgAgASAAKAIEKAIMEQUACw0AIAAgASACIAMQCg8LFABBACAANgLgm0BBAEEBNgLcm0ALEAAgASAAKAIAIAAoAgQQVwsTACAAQYyXwAA2AgQgACABNgIACxAAIAEgACgCACAAKAIEEA0LCwAgACABIAIQLw8LCgAgACABEHIaAAsPACAAQbyWwAAgASACEA4LDwAgAEG0mMAAIAEgAhAOCxEAQcSZwABBI0HYmcAAEDwACwsAIAAjAGokACMACwkAIAAgARBLDwsJACAAIAEQNw8LCQAgASAAEEMACwwAIAAgASkCADcDAAsJACABIAAQZgALDQAgAUGsmMAAQQUQVwsNACABQcCbwABBGBANCwgAIAAgARAACwkAIAAoAgAQVgsHACAAECsACwcAIAAQSQALBwAgABBBAAsLAEEAQQE6AMSfQAsJACAAQQA2AgALBQAQdAALAwAPCwMAAAsL7hsCAEGAgMAAC9gbFnNsaWNlIGluZGV4IHN0YXJ0cyBhdCDADSBidXQgZW5kcyBhdCDAACBpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzIMASIGJ1dCB0aGUgaW5kZXggaXMgwAAScmFuZ2Ugc3RhcnQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAFmRlY29tcHJlc3Npb24gZmFpbGVkOiDAAMACOiDAAC9ydXN0Yy80YTRlZjQ5M2UzYTE0ODhjNmUzMjE1NzAyMzgwODRiMzg5NDhmNmRiL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwAvcnVzdGMvNGE0ZWY0OTNlM2ExNDg4YzZlMzIxNTcwMjM4MDg0YjM4OTQ4ZjZkYi9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9udW0ucnMAL2hvbWUvY2RpZXNoLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTQvc3JjL2V4dGVybnJlZi5ycwAvcnVzdGMvNGE0ZWY0OTNlM2ExNDg4YzZlMzIxNTcwMjM4MDg0YjM4OTQ4ZjZkYi9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMS9zcmMvZGxtYWxsb2MucnMAL2hvbWUvY2RpZXNoLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbGliZGVmbGF0ZXItMS4yNS4yL3NyYy9saWIucnMAALwCEAAKAAAAbAAAABkAAAC8AhAACgAAAGwAAAAnAAAAvAIQAAoAAABsAAAAOQAAALwCEAAKAAAAbAAAAEsAAAC8AhAACgAAAGAAAAAZAAAAvAIQAAoAAABgAAAAJwAAALwCEAAKAAAAYAAAADkAAAC8AhAACgAAAGAAAABLAAAAvAIQAAoAAABkAAAAGQAAALwCEAAKAAAAZAAAACcAAAC8AhAACgAAAGQAAAA5AAAAvAIQAAoAAABkAAAASwAAALwCEAAKAAAAQAAAAAsAAAC8AhAACgAAAFgAAAALAAAAvAIQAAoAAABJAAAAEwAAALwCEAAKAAAAUwAAACsAAAC8AhAACgAAAE0AAAAPAAAAvAIQAAoAAABKAAAAHAAAALwCEAAKAAAAOQAAAB0AAABkZWNvbXByZXNzaW9uIG91dHB1dCB0b28gbGFyZ2UAALwCEAAKAAAAJgEAABMAAAC8AhAACgAAAC0BAAAdAAAAvAIQAAoAAAAnAQAAHAAAALwCEAAKAAAAoAEAABMAAAC8AhAACgAAAKcBAAAdAAAAvAIQAAoAAAChAQAAHAAAAEJhZERhdGFJbnN1ZmZpY2llbnRTcGFjZYMBEABnAAAAfwAAABEAAACDARAAZwAAAIwAAAARAAAAbGliZGVmbGF0ZV9kZWZsYXRlX2RlY29tcHJlc3MgcmV0dXJuZWQgYW4gdW5rbm93biBlcnJvciB0eXBlOiB0aGlzIGlzIGFuIGludGVybmFsIGJ1ZyB0aGF0ICoqbXVzdCoqIGJlIGZpeGVkZwIQAF8AAAANAQAAFQAAAGxpYmRlZmxhdGVfYWxsb2NfZGVjb21wcmVzc29yIHJldHVybmVkIE5VTEw6IG91dCBvZiBtZW1vcnkAAGcCEABfAAAAnQAAABEAAAAMAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAQERIACAcJBgoFCwQMAw0CDgEPAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAAAAAAAABAAAAAgAAAAMAAAAEAAEABQABAAcAAgAJAAIADQADABEAAwAZAAQAIQAEADEABQBBAAUAYQAGAIEABgDBAAcAAQEHAIEBCAABAggAAQMJAAEECQABBgoAAQgKAAEMCwABEAsAARgMAAEgDAABMA0AAUANAAFgDQABYA0AAWAAAACAAAABgAAAAoAAAAOAAAAEgAAABYAAAAaAAAAHgAAACIAAAAmAAAAKgAAAC4AAAAyAAAANgAAADoAAAA+AAAAQgAAAEYAAABKAAAATgAAAFIAAABWAAAAWgAAAF4AAABiAAAAZgAAAGoAAABuAAAAcgAAAHYAAAB6AAAAfgAAAIIAAACGAAAAigAAAI4AAACSAAAAlgAAAJoAAACeAAAAogAAAKYAAACqAAAArgAAALIAAAC2AAAAugAAAL4AAADCAAAAxgAAAMoAAADOAAAA0gAAANYAAADaAAAA3gAAAOIAAADmAAAA6gAAAO4AAADyAAAA9gAAAPoAAAD+AAABAgAAAQYAAAEKAAABDgAAARIAAAEWAAABGgAAAR4AAAEiAAABJgAAASoAAAEuAAABMgAAATYAAAE6AAABPgAAAUIAAAFGAAABSgAAAU4AAAFSAAABVgAAAVoAAAFeAAABYgAAAWYAAAFqAAABbgAAAXIAAAF2AAABegAAAX4AAAGCAAABhgAAAYoAAAGOAAABkgAAAZYAAAGaAAABngAAAaIAAAGmAAABqgAAAa4AAAGyAAABtgAAAboAAAG+AAABwgAAAcYAAAHKAAABzgAAAdIAAAHWAAAB2gAAAd4AAAHiAAAB5gAAAeoAAAHuAAAB8gAAAfYAAAH6AAAB/gAAAgIAAAIGAAACCgAAAg4AAAISAAACFgAAAhoAAAIeAAACIgAAAiYAAAIqAAACLgAAAjIAAAI2AAACOgAAAj4AAAJCAAACRgAAAkoAAAJOAAACUgAAAlYAAAJaAAACXgAAAmIAAAJmAAACagAAAm4AAAJyAAACdgAAAnoAAAJ+AAACggAAAoYAAAKKAAACjgAAApIAAAKWAAACmgAAAp4AAAKiAAACpgAAAqoAAAKuAAACsgAAArYAAAK6AAACvgAAAsIAAALGAAACygAAAs4AAALSAAAC1gAAAtoAAALeAAAC4gAAAuYAAALqAAAC7gAAAvIAAAL2AAAC+gAAAv4AAAMCAAADBgAAAwoAAAMOAAADEgAAAxYAAAMaAAADHgAAAyIAAAMmAAADKgAAAy4AAAMyAAADNgAAAzoAAAM+AAADQgAAA0YAAANKAAADTgAAA1IAAANWAAADWgAAA14AAANiAAADZgAAA2oAAANuAAADcgAAA3YAAAN6AAADfgAAA4IAAAOGAAADigAAA44AAAOSAAADlgAAA5oAAAOeAAADogAAA6YAAAOqAAADrgAAA7IAAAO2AAADugAAA74AAAPCAAADxgAAA8oAAAPOAAAD0gAAA9YAAAPaAAAD3gAAA+IAAAPmAAAD6gAAA+4AAAPyAAAD9gAAA/oAAAP+AAKAAAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAQALAAEADQABAA8AAQARAAIAEwACABcAAgAbAAIAHwADACMAAwArAAMAMwADADsABABDAAQAUwAEAGMABABzAAUAgwAFAKMABQDDAAUA4wAAAAIBAAACAQAAAgFtXcvWLFDrY3hBpldxG4u5I8o7SqZ3fJNCY0mvl2+yhAAAAAAIAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAADAAAAAQAAAAKAAAACwAAAAwAAAAAAAAACAAAAAQAAAANAAAADgAAAA8AAAAQAAAAEQAAABAAAAAEAAAAEgAAABMAAAAUAAAACAAAAAAAAAAIAAAABAAAABUAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAAA8AhAAKgAAALEEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAPAIQACoAAAC3BAAADQAAAAkAAAAMAAAABAAAABYAAABFcnJvcgAAABcAAAAMAAAABAAAABgAAAAZAAAAGgAAAAAAAAAAAAAAAQAAABsAAABhIGZvcm1hdHRpbmcgdHJhaXQgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3Igd2hlbiB0aGUgdW5kZXJseWluZyBzdHJlYW0gZGlkIG5vdAAA7gAQAEgAAACKAgAADgAAAGNhcGFjaXR5IG92ZXJmbG93AAAA6wEQAFAAAAAcAAAABQAAADAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5NwEQAEsAAABXAgAABQAAAFJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZABB2JvAAAsEBAAAAAApBG5hbWUBIgFjH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIAPAlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMjUuMgx3YXNtLWJpbmRnZW4HMC4yLjExNA==`,fx=null,px=null,mx=null,hx=Array(1024).fill(void 0),hx.push(void 0,null,!0,!1),gx=hx.length,_x=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),_x.decode(),vx=2146435072,yx=0,bx=0,xx=null,Sx=null}));async function wx(e,t,n){let r=new Uint32Array(t.length),i=new Uint32Array(t.length);for(let e=0;e<t.length;e++){let n=t[e];r[e]=n.offset,i[e]=n.length}return ix(e,r,i,n)}async function Tx(e,t,n,r,i){let a=new Uint32Array(t.length),o=new Uint32Array(t.length);for(let e=0;e<t.length;e++){let n=t[e];a[e]=n.offset,o[e]=n.length}return sx(e,a,o,n,r,i)}async function Ex(e,t,n,r,i,a){let o=new Uint32Array(t.length),s=new Uint32Array(t.length);for(let e=0;e<t.length;e++){let n=t[e];o[e]=n.offset,s[e]=n.length}return cx(e,o,s,n,r,i,a)}var Dx=n((()=>{Cx()}));function Ox(e){e.sort((e,t)=>e.offset-t.offset);let t=[],n,r;for(let i of e)n&&r&&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 kx=n((()=>{}));function Ax(e,t,n,r){return e<r&&t>=n}function jx(e,t,n){let r=[],i=t,a=new DataView(e.buffer,e.byteOffset,e.length);for(;i<e.byteLength;){let e=a.getUint32(i,!0);i+=4;let t=a.getUint32(i,!0);i+=4;let o=a.getUint32(i,!0);i+=4;let s=a.getUint32(i,!0);i+=4;let c=a.getFloat32(i,!0);i+=4;let l=a.getFloat32(i,!0);i+=4;let u=a.getFloat32(i,!0);i+=8,(!n||e===n.chrId&&Ax(t,o,n.start,n.end))&&r.push({start:t,end:o,maxScore:l,minScore:c,summary:!0,score:u/(s||1)})}return r}function Mx(e,t,n,r){let i=[],a=t,o=new DataView(e.buffer,e.byteOffset,e.length);for(;a<e.byteLength;){let t=a,s=o.getUint32(a,!0);a+=4;let c=o.getInt32(a,!0);a+=4;let l=o.getInt32(a,!0);a+=4;let u=a;for(;u<e.length&&e[u]!==0;u++);let d=e.subarray(a,u),f=Fx.decode(d);a=u+1,(!r||s===r.chrId&&Ax(c,l,r.start,r.end))&&i.push({start:c,end:l,rest:f,uniqueId:`bb-${n+t}`})}return i}function Nx(e,t,n){let r=e.subarray(t),i=new DataView(r.buffer,r.byteOffset,r.length),a=i.getInt32(4,!0),o=i.getUint32(12,!0),s=i.getUint32(16,!0),c=i.getUint8(20),l=i.getUint16(22,!0),u=24,d=[];switch(c){case 1:for(let e=0;e<l;e++){let e=i.getInt32(u,!0);u+=4;let t=i.getInt32(u,!0);u+=4;let r=i.getFloat32(u,!0);u+=4,(!n||Ax(e,t,n.start,n.end))&&d.push({start:e,end:t,score:r})}break;case 2:for(let e=0;e<l;e++){let e=i.getInt32(u,!0);u+=4;let t=i.getFloat32(u,!0);u+=4;let r=e+s;(!n||Ax(e,r,n.start,n.end))&&d.push({score:t,start:e,end:r})}break;case 3:for(let e=0;e<l;e++){let t=i.getFloat32(u,!0);u+=4;let r=a+e*o,c=r+s;(!n||Ax(r,c,n.start,n.end))&&d.push({score:t,start:r,end:c})}break}return d}function Px(e,t,n){let r=new DataView(e.buffer,e.byteOffset+t,e.length-t),i=r.getInt32(4,!0),a=r.getUint32(12,!0),o=r.getUint32(16,!0),s=r.getUint8(20),c=r.getUint16(22,!0),l=new Int32Array(c),u=new Int32Array(c),d=new Float32Array(c);if(!n){switch(s){case 1:{let e=24;for(let t=0;t<c;t++)l[t]=r.getInt32(e,!0),u[t]=r.getInt32(e+4,!0),d[t]=r.getFloat32(e+8,!0),e+=12;return{starts:l,ends:u,scores:d}}case 2:{let e=24;for(let t=0;t<c;t++){let n=r.getInt32(e,!0);l[t]=n,u[t]=n+o,d[t]=r.getFloat32(e+4,!0),e+=8}return{starts:l,ends:u,scores:d}}case 3:{let e=24;for(let t=0;t<c;t++){let n=i+t*a;l[t]=n,u[t]=n+o,d[t]=r.getFloat32(e,!0),e+=4}return{starts:l,ends:u,scores:d}}}return{starts:l,ends:u,scores:d}}let f=n.start,p=n.end,m=0;switch(s){case 1:{let e=24;for(let t=0;t<c;t++){let t=r.getInt32(e,!0),n=r.getInt32(e+4,!0);t<p&&n>=f&&(l[m]=t,u[m]=n,d[m]=r.getFloat32(e+8,!0),m++),e+=12}break}case 2:{let e=24;for(let t=0;t<c;t++){let t=r.getInt32(e,!0),n=t+o;t<p&&n>=f&&(l[m]=t,u[m]=n,d[m]=r.getFloat32(e+4,!0),m++),e+=8}break}case 3:{let e=24;for(let t=0;t<c;t++){let n=i+t*a,s=n+o;n<p&&s>=f&&(l[m]=n,u[m]=s,d[m]=r.getFloat32(e,!0),m++),e+=4}break}}return m<c?{starts:l.subarray(0,m),ends:u.subarray(0,m),scores:d.subarray(0,m)}:{starts:l,ends:u,scores:d}}var Fx,Ix,Lx,Rx=n((()=>{_b(),Nb(),Fb(),Dx(),kx(),Fx=new TextDecoder(`utf8`),Ix=610839776,Lx=class{bbi;refsByName;rTreeOffset;uncompressBufSize;blockType;rTreePromise;featureCache=new hb({cache:new Mb({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);let a=await this.rTreePromise,o=new DataView(a.buffer,a.byteOffset,a.length),s=o.getUint32(0,!0);if(s!==Ix)throw Error(`invalid cirTree magic: 0x${s.toString(16)} (expected 0x${Ix.toString(16)}) at offset ${this.rTreeOffset}, file may be corrupt or unsupported`);let c=4+o.getUint32(4,!0)*32,l=(e,r,a,o)=>(e<i||e===i&&r<=n)&&(a>i||a===i&&o>=t),u=[],d=[this.rTreeOffset+48];for(;d.length>0;){let e=Pb(d.map(e=>({min:e,max:e+c}))),t=[];for(let{min:n,max:i}of e){let e=i-n,a=n,o=await this.featureCache.get(`${e}_${a}`,{length:e,offset:a},r?.signal);for(let e of d)if(n<=e&&e<=i){let n=o.subarray(e-a),r=new DataView(n.buffer,n.byteOffset,n.length),i=r.getUint8(0),s=r.getUint16(2,!0),c=4;if(i===1)for(let e=0;e<s;e++){let e=r.getUint32(c,!0),t=r.getUint32(c+4,!0),n=r.getUint32(c+8,!0),i=r.getUint32(c+12,!0),a=Number(r.getBigUint64(c+16,!0)),o=Number(r.getBigUint64(c+24,!0));c+=32,l(e,t,n,i)&&u.push({offset:a,length:o})}else if(i===0)for(let e=0;e<s;e++){let e=r.getUint32(c,!0),n=r.getUint32(c+4,!0),i=r.getUint32(c+8,!0),a=r.getUint32(c+12,!0),o=Number(r.getBigUint64(c+16,!0));c+=24,l(e,n,i,a)&&t.push(o)}}}d=t}return{blocks:u,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 readWigDataAsArrays(e,t,n,r){let i=await this._collectBlocks(e,t,n,r),a=i?.blocks??[],o=i?{chrId:i.chrId,start:t,end:n}:void 0,s={...r,request:o};return this.blockType===`summary`?this._readSummaryFeaturesAsArrays(a,s):this._readBigWigFeaturesAsArrays(a,s)}async readFeatures(e,t={}){let{blockType:n,uncompressBufSize:r}=this,{signal:i,request:a}=t,o=Ox(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,l,u;if(r>0){let e=[];for(let t of c)e.push({offset:t.offset-o,length:t.length});let n=await wx(t,e,r);l=n.data,u=n.offsets}else{l=t,u=[];for(let e of c)u.push(e.offset-o);u.push(t.length)}for(let e=0;e<c.length;e++){let t=u[e],r=u[e+1],i=l.subarray(t,r),o;switch(n){case`summary`:o=jx(i,0,a);break;case`bigwig`:o=Nx(i,0,a);break;case`bigbed`:o=Mx(i,0,c[e].offset*256,a);break;default:o=[],console.warn(`Don't know what to do with ${n}`)}for(let e of o)s.push(e)}}return s}async _readBigWigFeaturesAsArrays(e,t={}){let{uncompressBufSize:n}=this,{signal:r,request:i}=t,a=Ox(e),o=[],s=[],c=[],l=0;for(let e of a){let{length:t,offset:a}=e,u=await this.bbi.read(t,a,{signal:r}),d=e.blocks.map(t=>({offset:t.offset-e.offset,length:t.length}));if(n>0){let e=await Tx(u,d,n,i?.start??0,i?.end??0);e.starts.length>0&&(o.push(e.starts),s.push(e.ends),c.push(e.scores),l+=e.starts.length)}else for(let e of d){let t=Px(u.subarray(e.offset,e.offset+e.length),0,i);t.starts.length>0&&(o.push(t.starts),s.push(t.ends),c.push(t.scores),l+=t.starts.length)}}if(o.length===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,isSummary:!1};if(o.length===1)return{starts:o[0],ends:s[0],scores:c[0],isSummary:!1};let u=new Int32Array(l),d=new Int32Array(l),f=new Float32Array(l),p=0;for(let e=0;e<o.length;e++)u.set(o[e],p),d.set(s[e],p),f.set(c[e],p),p+=o[e].length;return{starts:u,ends:d,scores:f,isSummary:!1}}async _readSummaryFeaturesAsArrays(e,t={}){let{uncompressBufSize:n}=this,{signal:r,request:i}=t,a=Ox(e),o=[],s=[],c=[],l=[],u=[],d=0;for(let e of a){let{length:t,offset:a}=e,f=await this.bbi.read(t,a,{signal:r}),p=e.blocks.map(t=>({offset:t.offset-e.offset,length:t.length}));if(n>0){let e=await Ex(f,p,n,i?.chrId??0,i?.start??0,i?.end??0);e.starts.length>0&&(o.push(e.starts),s.push(e.ends),c.push(e.scores),l.push(e.minScores),u.push(e.maxScores),d+=e.starts.length)}else for(let e of p){let t=jx(f.subarray(e.offset,e.offset+e.length),0,i);if(t.length>0){let e=new Int32Array(t.length),n=new Int32Array(t.length),r=new Float32Array(t.length),i=new Float32Array(t.length),a=new Float32Array(t.length);for(let o=0;o<t.length;o++){let s=t[o];e[o]=s.start,n[o]=s.end,r[o]=s.score??0,i[o]=s.minScore??0,a[o]=s.maxScore??0}o.push(e),s.push(n),c.push(r),l.push(i),u.push(a),d+=t.length}}}if(o.length===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array,isSummary:!0};if(o.length===1)return{starts:o[0],ends:s[0],scores:c[0],minScores:l[0],maxScores:u[0],isSummary:!0};let f=new Int32Array(d),p=new Int32Array(d),m=new Float32Array(d),h=new Float32Array(d),g=new Float32Array(d),_=0;for(let e=0;e<o.length;e++)f.set(o[e],_),p.set(s[e],_),m.set(c[e],_),h.set(l[e],_),g.set(u[e],_),_+=o[e].length;return{starts:f,ends:p,scores:m,minScores:h,maxScores:g,isSummary:!0}}}}));function zx(e){return new DataView(e.buffer,e.byteOffset,e.length)}var Bx,Vx,Hx,Ux,Wx=n((()=>{kg(),Rx(),Bx=-2003829722,Vx=-2021002517,Hx=new TextDecoder(`utf8`),Ux=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 Tg(i);else if(r)this.bbi=new Og(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=zx(n),i=0,a=r.getInt32(i,!0);if(i+=4,a!==Bx&&a!==Vx)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;let t=r.getUint32(i,!0);i+=4;let n=Number(r.getBigUint64(i,!0));i+=8;let a=Number(r.getBigUint64(i,!0));i+=8,_.push({reductionLevel:e,reserved:t,dataOffset:n,indexOffset:a})}let v=a===Vx?`bigbed`:`bigwig`;if(p>t||m>t-40)return this._getMainHeader(e,t*2);let y;if(m){let e=n.subarray(m),t=0,r=zx(e),i=Number(r.getBigUint64(t,!0));t+=8;let a=r.getFloat64(t,!0);t+=8;let o=r.getFloat64(t,!0);t+=8;let s=r.getFloat64(t,!0);t+=8,y={scoreMin:a,scoreMax:o,scoreSum:s,scoreSumSquares:r.getFloat64(t,!0),basesCovered:i}}else throw Error(`no stats`);return{zoomLevels:_,magic:a,extHeaderOffset:g,numZoomLevels:s,fieldCount:d,totalSummary:y,definedFieldCount:f,uncompressBufSize:h,asOffset:p,chromosomeTreeOffset:c,totalSummaryOffset:m,unzoomedDataOffset:l,unzoomedIndexOffset:u,fileType:v,version:o,autoSql:p?Hx.decode(n.subarray(p,n.indexOf(0,p))):``}}async _readChromosomeTree(e,t){let n=[],r={},i=e.chromosomeTreeOffset,a=zx(await this.bbi.read(32,i,t)),o=a.getUint32(8,!0),s=a.getUint32(12,!0),c=async e=>{let t=zx(await this.bbi.read(4,e)),i=t.getUint8(0),a=t.getUint16(2,!0);if(i){let t=await this.bbi.read(a*(o+s),e+4),i=zx(t),c=0;for(let e=0;e<a;e++){let e=t.indexOf(0,c),a=e!==-1&&e<c+o?e:c+o,s=Hx.decode(t.subarray(c,a));c+=o;let l=i.getUint32(c,!0);c+=4;let u=i.getUint32(c,!0);c+=4,r[this.renameRefSeqs(s)]=l,n[l]={name:s,id:l,length:u}}}else{let t=zx(await this.bbi.read(a*(o+8),e+4)),n=[],r=0;for(let e=0;e<a;e++){r+=o;let e=Number(t.getBigUint64(r,!0));r+=8,n.push(c(e))}await Promise.all(n)}};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 Lx(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 getFeaturesAsArrays(e,t,n,r){return(await this._getView(r)).readWigDataAsArrays(this.renameRefSeqs(e),t,n,r)}}})),Gx,Kx=n((()=>{Wx(),Gx=class extends Ux{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&&t.reductionLevel<=2*a)return this.getOrCreateBlockView(r,t.indexOffset,i,`summary`)}return this.getUnzoomedView(t)}}}));function qx(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)}function Jx(e,t,n){let r=e.indexOf(0,t),i=r!==-1&&r<t+n?r:t+n;return Xx.decode(e.subarray(t,i))}async function Yx(e,t,n,r,i,a,o,s){let c=4+n*(r+i),l=await e.read(c,t,s),u=new DataView(l.buffer,l.byteOffset,l.length),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=Jx(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=t.length-1;for(;c<=d;){let e=Math.floor((c+d)/2);a.localeCompare(t[e].key)<0?(m=e-1,d=e-1):c=e+1}return Yx(e,m>=0?t[m].offset:t[0].offset,n,r,i,a,o,s)}else if(d===1){let e=[];for(let t=0;t<f;t++){let t=Jx(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 Xx,Zx,Qx=n((()=>{_b(),Nb(),Wx(),Xx=new TextDecoder(`utf8`),Zx=class extends Ux{readIndicesCache=new hb({cache:new Mb({maxSize:1}),fill:(e,t)=>this._readIndices({...e,signal:t})});readIndices(e={}){let{signal:t,...n}=e;return this.readIndicesCache.get(JSON.stringify(n),e,t)}async getView(e,t){return this.getUnzoomedView(t)}async _readIndices(e){let{extHeaderOffset:t}=await this.getHeader(e),n=await this.bbi.read(64,t),r=new DataView(n.buffer,n.byteOffset,n.length),i=r.getUint16(2,!0),a=Number(r.getBigUint64(4,!0));if(i===0)return[];let o=20*i,s=await this.bbi.read(o,a),c=[];for(let e=0;e<i;e+=1){let t=s.subarray(e*20),n=new DataView(t.buffer,t.byteOffset,t.length),r=n.getInt16(0,!0),i=n.getInt16(2,!0),a=Number(n.getBigUint64(4,!0)),o=n.getInt16(16,!0);c.push({type:r,fieldcount:i,offset:a,field:o})}return c}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=await this.bbi.read(32,r,t),o=new DataView(a.buffer,a.byteOffset,a.length),s=o.getInt32(4,!0),c=o.getInt32(8,!0),l=o.getInt32(12,!0);return Yx(this.bbi,r+32,s,c,l,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 qx(t.rest,n)===e})}}}));async function $x(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 eS=n((()=>{})),tS,nS=n((()=>{tS=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}get source(){return this._source}get refName(){return this._refName}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}}}})),rS=r({ArrayFeatureView:()=>tS,BigBed:()=>Zx,BigWig:()=>Gx,parseBigWig:()=>$x}),iS=n((()=>{lb(),Kx(),Qx(),eS(),nS()})),aS=class extends bg{#e=[];#t;constructor(e,t){let n={pixelsPerBin:2,channel:`x`,debounce:200,debounceMode:`window`,...e},r=fg(n.channel);if(super(t,r),this.params=_g(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(()=>(iS(),rS)),Promise.resolve().then(()=>(kg(),Dg))]).then(([{BigWig:n},{RemoteFile:r}])=>{this.#t=new n({filehandle:new r(rh(fg(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`,`${fg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async onDomainChanged(e){await this.initializedPromise;let t=this.scaleResolution.getAxisLength()||700,n=sS(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/fg(this.params.pixelsPerBin),r=await this.discretizeAndLoad(e,(e,t)=>this.#t.getFeatures(e.chrom,e.startPos,e.endPos,{scale:n,signal:t}).then(t=>t.map(t=>({chrom:e.chrom,start:t.start,end:t.end,score:t.score}))));r&&this.publishData(r)}};function oS(e){return e?.type==`bigwig`}Wm(oS,aS);function sS(e,t,n){let r=(e[1]-e[0])/t;return n.find(e=>e<r)??n.at(-1)}var cS=class extends bg{parser;bbi;parseLine;constructor(e,t){let n={channel:`x`,windowSize:1e6,debounce:200,debounceMode:`window`,...e},r=fg(n.channel);if(super(t,r),this.params=_g(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(()=>(Al(),kl)),Promise.resolve().then(()=>(iS(),rS)),Promise.resolve().then(()=>(kg(),Dg))]).then(([n,{BigBed:r},{RemoteFile:i}])=>{let a=n.default;this.bbi=new r({filehandle:new i(rh(fg(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=lS(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`,`${fg(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 lS(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):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 Qy,$y=n((()=>{Mg(),Qy=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||=Zy(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=Xy(e,t,n,i),l=Xy(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}}})),eb,tb=n((()=>{Yy(),Mg(),$y(),eb=class extends Qy{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 qy({filehandle:e,gziFilehandle:i}):t&&a&&(this.fasta=new qy({filehandle:new jg(t),gziFilehandle:new jg(a)}))}}})),nb=r({BgzipIndexedFasta:()=>eb,FetchableSmallFasta:()=>ib,IndexedFasta:()=>Qy,parseSmallFasta:()=>rb});function rb(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 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+RoWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABJyYW5nZSBzdGFydCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAABByYW5nZSBlbmQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAWZGVjb21wcmVzc2lvbiBmYWlsZWQ6IMAAwAI6IMAAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9yd2xvY2svbm9fdGhyZWFkcy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjEyMi9zcmMvZXh0ZXJucmVmLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9saWJkZWZsYXRlci0xLjI1LjIvc3JjL2xpYi5ycwAAAADOAhAACgAAAEAAAAALAAAAzgIQAAoAAABYAAAACwAAAM4CEAAKAAAASQAAABMA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`,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(`
|
|
195
195
|
const emptyString = "";
|
|
196
196
|
return function makeTemplate(chrom, chromStart, chromEnd) {
|
|
197
197
|
return {
|
|
@@ -201,17 +201,17 @@ return groupData;`);return $c.set(t,i),i}function Yc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
201
201
|
${c.join(`,
|
|
202
202
|
`)}
|
|
203
203
|
}
|
|
204
|
-
};`)(),u=
|
|
204
|
+
};`)(),u=bS(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 uS(e){return e?.type==`bigbed`}Wm(uS,cS);function dS(e,t){return Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,r*t+t))}var fS,pS=n((()=>{fS=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 mS(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)*gS+(n>>>0)}var hS,gS,_S=n((()=>{hS=65536,gS=hS*hS}));function vS(e={}){return`aborted`in e?{signal:e}:e}function yS(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 bS(e,t){return{lineCount:mS(e,t)}}function xS(e,t){return e?e.compareTo(t)>0?t:e:t}function SS(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 CS(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 wS(e,t,n){return!!((e&t)!==t||e&n)}function TS(e,t){return t===`*`?e===void 0:`${e}`!=`${t}`}function ES(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 DS=n((()=>{_S()})),OS,kS=n((()=>{DS(),OS=class{constructor({filehandle:e,renameRefSeq:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async estimatedBytesForRegions(e,t){let n=yS((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 AS(e,t=0,n=!1){if(n)throw Error(`big-endian virtual file offsets not implemented`);return new jS(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 jS,MS=n((()=>{jS=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 NS(e,t){return e-e%t}function PS(e,t){return e-e%t+t}function FS(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 IS,LS,RS=n((()=>{Nb(),pS(),kS(),DS(),MS(),IS=21578050,LS=class extends OS{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)!==IS)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=AS(t,a);a+=8,o=xS(o,n),c[e]=n}}let c=new Mb({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=bS(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=AS(t,r);r+=8;let s=AS(t,r);r+=8,o=xS(o,i),a[n]=new fS(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=AS(t,r);r+=8,o=xS(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:PS(n,i),u=t===void 0?0:NS(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=FS(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 yS(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}}})),zS,BS,VS=n((()=>{zS=[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`&&(zS=new Int32Array(zS)),BS=(e,t)=>{let n=t===0?0:~~t^-1;for(let t=0;t<e.length;t++)n=zS[(n^e[t])&255]^n>>>8;return n^-1}}));function HS(e,t){return e*2**t}function US(e,t){return Math.floor(e/2**t)}var WS,GS,KS,qS=n((()=>{Ky(),Nb(),pS(),kS(),DS(),MS(),WS=21582659,GS=38359875,KS=class extends OS{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,...SS(e.subarray(t+28,t+28+u),this.renameRefSeq)}}async _parse(e){let t=await Ry(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r,i=n.getUint32(0,!0);if(i===WS)r=1;else if(i===GS)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=AS(t,l);l+=8,l+=8,u=xS(u,e)}}}}let f=new Mb({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=bS(t,r+28),r+=44;else{u=xS(u,AS(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=AS(t,r);r+=8;let o=AS(t,r);r+=8,a[n]=new fS(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 yS(o,new jS(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+=HS(1,n*3),n+=1){let n=r+US(e,i),o=r+US(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}}})),JS,YS=n((()=>{JS=class{read(){throw Error(`never called`)}stat(){throw Error(`never called`)}readFile(){throw Error(`never called`)}close(){throw Error(`never called`)}}})),XS=n((()=>{})),ZS,QS=n((()=>{ZS={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}})),$S,eC,tC,nC,rC,iC=n((()=>{XS(),QS(),$S=`=ACMGRSVTWYHKDBN`.split(``),eC=`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(`.`),tC=[77,73,68,78,83,72,80,61,88,63,63,63,63,63,63,63],nC=461,rC=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&ZS.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&ZS.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&ZS.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&ZS.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&ZS.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&ZS.BAM_FMREVERSE)}isRead1(){return!!(this.flags&ZS.BAM_FREAD1)}isRead2(){return!!(this.flags&ZS.BAM_FREAD2)}isSecondary(){return!!(this.flags&ZS.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&ZS.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&ZS.BAM_FDUP)}isSupplementary(){return!!(this.flags&ZS.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)*(nC>>(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)*(nC>>(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=tC[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++]=$S[(i&240)>>4],n[r++]=$S[i&15]}return r<t&&(n[r]=$S[(e[i]&240)>>4]),n.join(``)}get pair_orientation(){let e=this.flags;if(!(e&12||this.ref_id!==this.next_refid))return eC[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?$S[(n&240)>>4]:$S[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 aC(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 oC=n((()=>{})),sC,cC,lC=n((()=>{Ky(),Nb(),VS(),kg(),RS(),qS(),YS(),iC(),oC(),DS(),sC=65536,cC=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 Mb({maxSize:100}),this.renameRefSeq=u,this.RecordClass=d??rC,e)this.bam=e;else if(t)this.bam=new Og(t);else if(n)this.bam=new Tg(n);else if(l)this.htsget=!0,this.bam=new JS;else throw Error(`unable to initialize bam`);if(s)this.index=new KS({filehandle:s});else if(o)this.index=new KS({filehandle:new Og(o)});else if(c)this.index=new KS({filehandle:new Tg(c)});else if(i)this.index=new LS({filehandle:i});else if(r)this.index=new LS({filehandle:new Og(r)});else if(a)this.index=new LS({filehandle:new Tg(a)});else if(t)this.index=new LS({filehandle:new Og(`${t}.bai`)});else if(n)this.index=new LS({filehandle:new Tg(`${n}.bai`)});else if(l)this.htsget=!0;else throw Error(`unable to infer index format`)}async getHeaderPre(e){let t=vS(e);if(!this.index)return;let n=await this.index.parse(t),r=n.firstDataLine===void 0?void 0:n.firstDataLine.blockPosition+sC,i=await Ry(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,aC(this.header)}if(r===void 0)throw Error(`Insufficient data for reference sequences in ${i.length} bytes`);r*=2,i=await Ry(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}${ES(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];wS(t.flags,s,c)||l&&TS(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 zy(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:BS(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 uC(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 CS(await Promise.all(n.map(e=>Ry(e))))}var dC,fC=n((()=>{Ky(),lC(),oC(),DS(),dC=class extends cC{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 uC((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 uC((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=aC(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}}})),pC=r({BAI:()=>LS,BamFile:()=>cC,BamRecord:()=>rC,CSI:()=>KS,HtsgetFile:()=>dC}),mC=n((()=>{RS(),lC(),qS(),iC(),fC()})),hC=class extends bg{#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(()=>(mC(),pC)),Promise.resolve().then(()=>(kg(),Dg))]).then(([{BamFile:t},{RemoteFile:n}])=>{let r=e=>new n(rh(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 gC(e){return e?.type==`bam`}Wm(gC,hC);function _C(e){return`values`in e}var vC=class extends Xm{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=DC(e[0]));else if(typeof e==`object`)t=[e];else if(typeof e==`string`)t=wo(e,SC(xC(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()}},yC=new Set([`csv`,`tsv`,`dsv`]),bC=new Set([`gz`,`bgz`,`bgzf`]);function xC(e,t=[]){if(!_C(e)&&!MC(e))return;let n={...e.format};if(n.type??=MC(e)&&wC(t),n.parse===void 0&&NC(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 SC(e){let t={...e};return(AC(t)||jC(t))&&t.columns&&!(`header`in t)&&(t.header=t.columns),t}function CC(e){return Co(e)?.responseType??`text`}function wC(e){if(Array.isArray(e)&&(e=e[0]),e){let t=EC(e).split(`/`).pop()?.toLowerCase();if(!t)return;let n=t.split(`.`);for(;n.length>1&&bC.has(n.at(-1));)n.pop();let r=n.at(-1);if(r&&Co(r))return r}}function TC(e){let t=EC(e).split(`/`).pop()?.toLowerCase();if(!t)return!1;let n=t.split(`.`).at(-1);return!!n&&bC.has(n)}function EC(e){return e.replace(/[?#].*$/,``)}var DC=e=>typeof e==`object`?kC:OC,OC=e=>({data:e}),kC=e=>e;function AC(e){return e.type==`csv`||e.type==`tsv`}function jC(e){return e.type==`dsv`}function MC(e){return`url`in e}function NC(e){return yC.has(e)}var PC,FC=n((()=>{PC=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}}})),IC,LC=n((()=>{IC=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 RC(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)*BC+(n>>>0)}var zC,BC,VC=n((()=>{zC=65536,BC=zC*zC}));function HC(e,t){return t.minv.blockPosition-e.maxv.blockPosition<65e3&&t.maxv.blockPosition-e.minv.blockPosition<5e6}function UC(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):HC(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i));return n}var WC=n((()=>{}));function GC(e,t=0){return new KC(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 KC,qC=n((()=>{KC=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 JC(e,t){return e*2**t}function YC(e,t){return Math.floor(e/2**t)}var XC,ZC,QC,$C,ew=n((()=>{Ky(),FC(),LC(),VC(),WC(),qC(),XC=21582659,ZC=38359875,QC={0:`generic`,1:`SAM`,2:`VCF`},$C=class extends IC{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=QC[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 Ry(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r;if(n.getUint32(0,!0)===XC)r=1;else if(n.getUint32(0,!0)===ZC)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=GC(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=GC(t,l),i=GC(t,l+8);l+=16,o[n]=new PC(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:RC(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 PC(e.minv,e.maxv,n));return UC(c,new KC(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+=JC(1,n*3),n+=1){let n=r+YC(e,i),o=r+YC(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 tw(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 nw,rw,iw,aw=n((()=>{Ky(),FC(),LC(),VC(),WC(),qC(),nw=21578324,rw=14,iw=class extends IC{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 Ry(await this.filehandle.readFile(e)),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==nw)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=GC(t,g),i=GC(t,g+8);g+=16,_=this._findFirstData(_,r),a[n]=new PC(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]=GC(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:RC(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>>rw>=o.linearIndex.length?o.linearIndex.length-1:t>>rw]:new KC(0,0))||console.warn(`querying outside of possible tabix range`);let s=tw(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 PC(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 UC(c,u)}}})),ow,sw=n((()=>{_b(),Ky(),Nb(),kg(),ew(),aw(),ow=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 Mb({maxSize:1e3});let d=l??(e=>e);if(t)this.filehandle=t;else if(e)this.filehandle=new Og(e);else if(n)this.filehandle=new Tg(n);else throw TypeError(`must provide either filehandle or path`);if(a)this.index=new iw({filehandle:a,renameRefSeqs:d});else if(c)this.index=new $C({filehandle:c,renameRefSeqs:d});else if(r)this.index=new iw({filehandle:new Og(r),renameRefSeqs:d});else if(o)this.index=new $C({filehandle:new Og(o),renameRefSeqs:d});else if(e)this.index=new iw({filehandle:new Og(`${e}.tbi`),renameRefSeqs:d});else if(s)this.index=new $C({filehandle:new Tg(s)});else if(i)this.index=new iw({filehandle:new Tg(i)});else if(n)this.index=new iw({filehandle:new Tg(`${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 hb({cache:new Mb({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 Bw(e){return e?.type==`gff3`}Wm(Bw,zw);function Vw(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 Hw=n((()=>{}));function Uw(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 Ww=n((()=>{}));function Gw(e){try{return decodeURIComponent(e)}catch{return e}}var Kw,qw=n((()=>{Hw(),Ww(),Kw=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=Gw(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 Vw(this.FORMAT??``,this.rest,this.sampleNames)}processGenotypes(e){Uw(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 Jw(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 Yw(e,t){let n=e.indexOf(t);return[e.slice(0,n),e.slice(n+1)]}function Xw(e){let t=Jw(e.slice(1,-1)),n=[];for(let e=0;e<t.length;e++){let r=t[e],[i,a]=Yw(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 Zw=n((()=>{})),Qw,$w=n((()=>{Qw={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`}}}})),eT,tT=n((()=>{qw(),Zw(),$w(),eT=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:{...Qw.InfoFields},FORMAT:{...Qw.GenotypeFields},ALT:{...Qw.AltTypes},FILTER:{...Qw.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=Xw(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 Kw(e,this.metadata.INFO,this.metadata.FORMAT,this.samples,this.strict)}}}));function nT(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=rT.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=iT.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 rT,iT,aT=n((()=>{rT=/<(.*)>(.*)/,iT=/(.*)<(.*)>/})),oT=r({Variant:()=>Kw,default:()=>eT,parseBreakend:()=>nT}),sT=n((()=>{qw(),tT(),aT()})),cT=class extends uw{#e;get label(){return`vcfSource`}async _handleHeader(e){let t=(await Promise.resolve().then(()=>(sT(),oT))).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 lT(e){return e?.type==`vcf`}Wm(lT,cT);var uT=`
|
|
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 Vy(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 Hy(await this.filehandle.read(e.fetchedSize(),e.minv.blockPosition,t),e,this.cache)}}})),_w=r({CSI:()=>cw,TBI:()=>pw,TabixIndexedFile:()=>hw}),vw=n((()=>{gw(),lw(),mw()}));Yy();var yw=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(()=>(vw(),_w)),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 Vy(await this.#e.filehandle.read(e,0));return new TextDecoder(`utf-8`).decode(t)}_parseFeatures(e){return[]}};function bw(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 xw(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 Sw(e,t,n){if(e.length==0)return[];let r={type:`tsv`,columns:t,parse:n??`auto`},i=To(e.join(`
|
|
209
|
+
`),jC(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 Cw=class extends yw{#e;get label(){return`tabixSource`}async _handleHeader(e){let t=this.params;if(this.#e=pg(t.columns)??bw(e),this.#e?.length||(this.#e=xw(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 Sw(e,this.#e??[],pg(t.parse))}};function ww(e){return e?.type==`tabix`}Gm(ww,Cw);function Tw(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=Lw[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 Ew(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(Tw(n))}s=t+1}}}r=i+1}return t}function Dw(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 Ow(e){return e.length===0||e===`.`?null:Tw(e)}function kw(e){return e.length===0||e===`.`?null:e}function Aw(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:Ow(n),source:Ow(r),type:Ow(i),start:a.length===0||a===`.`?null:+a,end:o.length===0||o===`.`?null:+o,score:s.length===0||s===`.`?null:+s,strand:kw(c),phase:kw(l),attributes:u.length===0||u===`.`?null:Ew(u)}}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:kw(c),phase:kw(l),attributes:u.length===0||u===`.`?null:Dw(u)}}function Mw(e){if(e===`+`)return 1;if(e===`-`)return-1;if(e===`.`)return 0}function Nw(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();Rw.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(Tw(n))}c=t+1}t[o]=s.length===1?s[0]:s}}r=i+1}}function Pw(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();Rw.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 Fw(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===`.`?``:Tw(n),source:r.length===0||r===`.`?null:Tw(r),type:i.length===0||i===`.`?null:Tw(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:Mw(c),phase:l.length===0||l===`.`?void 0:+l,subfeatures:[]};return Nw(u,d),d}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===`.`?``: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:Mw(c),phase:l.length===0||l===`.`?void 0:+l,subfeatures:[]};return Pw(u,d),d}var Lw,Rw,zw=n((()=>{Lw={};for(let e=0;e<256;e++){let t=e.toString(16).toUpperCase().padStart(2,`0`);Lw[t]=String.fromCharCode(e),Lw[t.toLowerCase()]=String.fromCharCode(e)}Rw=new Set([`start`,`end`,`seq_id`,`score`,`type`,`source`,`phase`,`strand`])}));function Bw(e){return Uw(Hw(e))}function Vw(e){return Ww(Hw(e))}function Hw(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 Uw(e){let t=[],n=new Map,r=new Map;for(let i=0;i<e.length;i++){let a=e[i],o=a.hasEscapes?Aw(a.line):jw(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 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?Fw(a.line):Iw(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 Gw=n((()=>{zw()})),Kw=r({parseRecords:()=>Uw,parseRecordsJBrowse:()=>Ww,parseStringSync:()=>Bw,parseStringSyncJBrowse:()=>Vw}),qw=n((()=>{Gw()})),Jw=class extends yw{#e;get label(){return`gff3Source`}async _handleHeader(e){this.#e=await Promise.resolve().then(()=>(qw(),Kw))}_parseFeatures(e){return this.#e?.parseStringSync(e.join(`
|
|
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=`
|
|
215
215
|
@scope {
|
|
216
216
|
:scope {
|
|
217
217
|
--genome-spy-basic-spacing: 10px;
|
|
@@ -391,6 +391,14 @@ background-color: #e0e0e0;
|
|
|
391
391
|
}
|
|
392
392
|
}
|
|
393
393
|
|
|
394
|
+
.autoscroll-container {
|
|
395
|
+
max-height: min(40em, 50vh);
|
|
396
|
+
overflow-x: hidden;
|
|
397
|
+
overflow-y: auto;
|
|
398
|
+
padding-right: var(--genome-spy-basic-spacing);
|
|
399
|
+
margin-right: calc(-1 * var(--genome-spy-basic-spacing));
|
|
400
|
+
}
|
|
401
|
+
|
|
394
402
|
.na {
|
|
395
403
|
color: #aaa;
|
|
396
404
|
font-style: italic;
|
|
@@ -464,34 +472,34 @@ background: #fff0f0;
|
|
|
464
472
|
}
|
|
465
473
|
}
|
|
466
474
|
}
|
|
467
|
-
`;function
|
|
475
|
+
`;function bT(e,t){var n=e.getBoundingClientRect();return[t.clientX-n.left-e.clientLeft,t.clientY-n.top-e.clientTop]}var xT=class{#e=!1;#t=!0;#n=void 0;#r=0;#i=void 0;#a=0;#o;#s;#c=[!0];constructor(e){this.#s=e,this.#o=document.createElement(`div`),this.#o.className=`tooltip`,this.#s.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.#t=e)}get visible(){return this.#t}get enabled(){return Zl(this.#c)??!0}pushEnabledState(e){this.#c.push(e),e||(this.visible=!1)}popEnabledState(){this.#c.pop()}handleMouseMove(e){if(this.#e)return;this.mouseCoords=bT(this.#s,e);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+20;n>this.#s.clientWidth-this.#o.offsetWidth&&(n=e-20-this.#o.offsetWidth),this.#o.style.left=n+`px`,this.#o.style.top=Math.min(t+20,this.#s.clientHeight-this.#o.offsetHeight)+`px`}setContent(e){if(!this.#e){if(!e||!this.enabled||this._isPenalty()){this.visible&&=(Ie(``,this.#o),!1),this.#n=void 0;return}Ie(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(O` ${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()}};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=yT,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 be}}),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(O`<div style=${MT(t)}>
|
|
468
476
|
<div class=${i.status}>
|
|
469
477
|
${i.status==`error`?O`<span
|
|
470
478
|
>Loading
|
|
471
479
|
failed${i.detail?O`: ${i.detail}`:xe}</span
|
|
472
480
|
>`:O`
|
|
473
|
-
<img src="${
|
|
481
|
+
<img src="${NT}" alt="" />
|
|
474
482
|
<span>Loading...</span>
|
|
475
483
|
`}
|
|
476
484
|
</div>
|
|
477
|
-
</div>`)}}n&&!r&&e.push(O`<div style=${
|
|
485
|
+
</div>`)}}n&&!r&&e.push(O`<div style=${MT({left:`0px`,top:`0px`,width:`100%`,height:`100%`})}>
|
|
478
486
|
<div class=${n.status}>
|
|
479
487
|
${n.status==`error`?O`<span
|
|
480
488
|
>Loading
|
|
481
489
|
failed${n.detail?O`: ${n.detail}`:xe}</span
|
|
482
490
|
>`:O`
|
|
483
|
-
<img src="${
|
|
491
|
+
<img src="${NT}" alt="" />
|
|
484
492
|
<span>Loading...</span>
|
|
485
493
|
`}
|
|
486
494
|
</div>
|
|
487
|
-
</div>`),t()?this.#e.style.display=`block`:setTimeout(()=>{t()||(this.#e.style.display=`none`)},3e3),Ie(e,this.#e)}},
|
|
495
|
+
</div>`),t()?this.#e.style.display=`block`:setTimeout(()=>{t()||(this.#e.style.display=`none`)},3e3),Ie(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(O`<label for=${u}>${c}</label>
|
|
488
496
|
<div>
|
|
489
497
|
<input
|
|
490
498
|
id=${u}
|
|
491
499
|
type="range"
|
|
492
500
|
min=${i.min??0}
|
|
493
501
|
max=${i.max??100}
|
|
494
|
-
step=${i.step??
|
|
502
|
+
step=${i.step??Mn(i.min,i.max,100)}
|
|
495
503
|
.value=${s}
|
|
496
504
|
@input=${e=>{l(e.target.valueAsNumber),e.target.nextElementSibling.textContent=e.target.valueAsNumber}}
|
|
497
505
|
/><span>${s}</span>
|
|
@@ -534,15 +542,15 @@ background: #fff0f0;
|
|
|
534
542
|
@focus=${e=>e.target.select()}
|
|
535
543
|
@input=${e=>{l(i.input==`number`?e.target.valueAsNumber:e.target.value)}}
|
|
536
544
|
/>
|
|
537
|
-
</div>`);else throw Error(`Unsupported input type: `+i.input);i.description&&n.push(O`<div class="description">${i.description}</div>`)}return n}var AT=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(...kT(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 jT=5120,MT=5121,NT=5122,PT=5123,FT=5124,IT=5125,LT=5126,RT=32819,zT=32820,BT=33635,VT=5131,HT=33640,UT=35899,WT=35902,GT=36269,KT=34042,qT={};{let e=qT;e[jT]=Int8Array,e[MT]=Uint8Array,e[NT]=Int16Array,e[PT]=Uint16Array,e[FT]=Int32Array,e[IT]=Uint32Array,e[LT]=Float32Array,e[RT]=Uint16Array,e[zT]=Uint16Array,e[BT]=Uint16Array,e[VT]=Uint16Array,e[HT]=Uint32Array,e[UT]=Uint32Array,e[WT]=Uint32Array,e[GT]=Uint32Array,e[KT]=Uint32Array}function JT(e){if(e instanceof Int8Array)return jT;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)return MT;if(e instanceof Int16Array)return NT;if(e instanceof Uint16Array)return PT;if(e instanceof Int32Array)return FT;if(e instanceof Uint32Array)return IT;if(e instanceof Float32Array)return LT;throw Error(`unsupported typed array type`)}function YT(e){if(e===Int8Array)return jT;if(e===Uint8Array||e===Uint8ClampedArray)return MT;if(e===Int16Array)return NT;if(e===Uint16Array)return PT;if(e===Int32Array)return FT;if(e===Uint32Array)return IT;if(e===Float32Array)return LT;throw Error(`unsupported typed array type`)}function XT(e){let t=qT[e];if(!t)throw Error(`unknown gl type`);return t}var ZT=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 QT(...e){console.error(...e)}function $T(...e){console.warn(...e)}function eE(e,t){return typeof WebGLBuffer<`u`&&t instanceof WebGLBuffer}function tE(e,t){return typeof WebGLRenderbuffer<`u`&&t instanceof WebGLRenderbuffer}function nE(e,t){return typeof WebGLTexture<`u`&&t instanceof WebGLTexture}function rE(e,t){return typeof WebGLSampler<`u`&&t instanceof WebGLSampler}var iE=35044,aE=34962,oE=34963,sE=34660,cE=5120,lE=5121,uE=5122,dE=5123,fE=5124,pE=5125,mE=5126,hE={attribPrefix:``};function gE(e,t,n,r,i){e.bindBuffer(t,n),e.bufferData(t,r,i||iE)}function _E(e,t,n,r){if(eE(e,t))return t;n||=aE;let i=e.createBuffer();return gE(e,n,i,t,r),i}function vE(e){return e===`indices`}function yE(e){return e instanceof Int8Array||e instanceof Uint8Array}function bE(e){return e===Int8Array||e===Uint8Array}function xE(e){return e.length?e:e.data}var SE=/coord|texture/i,CE=/color|colour/i;function wE(e,t){let n;if(n=SE.test(e)?2:CE.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 TE(e,t){return e.numComponents||e.size||wE(t,xE(e).length)}function EE(e,t){if(ZT(e))return e;if(ZT(e.data))return e.data;Array.isArray(e)&&(e={data:e});let n=e.type;return n||=vE(t)?Uint16Array:Float32Array,new n(e.data)}function DE(e,t){let n={};return Object.keys(t).forEach(function(r){if(!vE(r)){let i=t[r],a=i.attrib||i.name||i.attribName||hE.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!ZT(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=YT(a),s=i.normalize===void 0?bE(a):i.normalize,c=i.numComponents||i.size||wE(r,n),t=e.createBuffer(),e.bindBuffer(aE,t),e.bufferData(aE,l,i.drawType||iE)}else{let n=EE(i,r);t=_E(e,n,void 0,i.drawType),o=JT(n),s=i.normalize===void 0?yE(n):i.normalize,c=TE(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(aE,null),n}function OE(e,t,n,r){n=EE(n),r===void 0?gE(e,aE,t.buffer,n,t.drawType):(e.bindBuffer(aE,t.buffer),e.bufferSubData(aE,r,n))}function kE(e,t){return t===cE||t===lE?1:t===uE||t===dE?2:t===fE||t===pE||t===mE?4:0}var AE=[`position`,`positions`,`a_position`];function jE(e,t){let n,r;for(r=0;r<AE.length&&(n=AE[r],!(n in t||(n=hE.attribPrefix+n,n in t)));++r);r===AE.length&&(n=Object.keys(t)[0]);let i=t[n];if(!i.buffer)return 1;e.bindBuffer(aE,i.buffer);let a=e.getBufferParameter(aE,sE);e.bindBuffer(aE,null);let o=a/kE(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 ME(e,t,n){let r=DE(e,t),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);let a=t.indices;if(a){let t=EE(a,`indices`);i.indices=_E(e,t,oE),i.numElements=t.length,i.elementType=JT(t)}else i.numElements||=jE(e,i.attribs);return i}function NE(e){return!!e.texStorage2D}var PE=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)}}(),FE={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},IE=ZT,LE=function(){let e;return function(){return e||=typeof document<`u`&&document.createElement?document.createElement(`canvas`).getContext(`2d`):null,e}}(),RE=6406,zE=6407,q=6408,BE=6409,VE=6410,HE=6402,UE=34041,WE=33071,GE=9728,KE=9729,qE=3553,JE=34067,YE=32879,XE=35866,ZE=34069,QE=34070,$E=34071,eD=34072,tD=34073,nD=34074,rD=10241,iD=10240,aD=10242,oD=10243,sD=32882,cD=33082,lD=33083,uD=33084,dD=33085,fD=3317,pD=3314,mD=32878,hD=3316,gD=3315,_D=32877,vD=37443,yD=37441,bD=37440,xD=33321,SD=36756,CD=33325,wD=33326,TD=33330,ED=33329,DD=33338,OD=33337,kD=33340,AD=33339,jD=33323,MD=36757,ND=33327,PD=33328,FD=33336,ID=33335,LD=33332,RD=33331,zD=33334,BD=33333,VD=32849,HD=35905,UD=36194,WD=36758,GD=35898,KD=35901,qD=34843,JD=34837,YD=36221,XD=36239,ZD=36215,QD=36233,$D=36209,eO=36227,tO=32856,nO=35907,rO=36759,iO=32855,aO=32854,oO=32857,sO=34842,cO=34836,lO=36220,uO=36238,dO=36975,fO=36214,pO=36232,mO=36226,hO=36208,gO=33189,_O=33190,vO=36012,yO=36013,bO=35056,xO=5120,SO=5121,CO=5122,wO=5123,TO=5124,EO=5125,DO=5126,OO=32819,kO=32820,AO=33635,jO=5131,MO=36193,NO=33640,PO=35899,FO=35902,IO=36269,LO=34042,RO=33319,zO=33320,BO=6403,VO=36244,HO=36248,UO=36249,WO={};{let e=WO;e[RE]={numColorComponents:1},e[BE]={numColorComponents:1},e[VE]={numColorComponents:2},e[zE]={numColorComponents:3},e[q]={numColorComponents:4},e[BO]={numColorComponents:1},e[VO]={numColorComponents:1},e[RO]={numColorComponents:2},e[zO]={numColorComponents:2},e[zE]={numColorComponents:3},e[HO]={numColorComponents:3},e[q]={numColorComponents:4},e[UO]={numColorComponents:4},e[HE]={numColorComponents:1},e[UE]={numColorComponents:2}}var GO;function KO(e){if(!GO){let e={};e[RE]={textureFormat:RE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[SO,jO,MO,DO]},e[BE]={textureFormat:BE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[SO,jO,MO,DO]},e[VE]={textureFormat:VE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[SO,jO,MO,DO]},e[zE]={textureFormat:zE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[SO,jO,MO,DO,AO]},e[q]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[SO,jO,MO,DO,OO,kO]},e[HE]={textureFormat:HE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[EO,wO]},e[xD]={textureFormat:BO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[SO]},e[SD]={textureFormat:BO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[xO]},e[CD]={textureFormat:BO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[DO,jO]},e[wD]={textureFormat:BO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[DO]},e[TD]={textureFormat:VO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[SO]},e[ED]={textureFormat:VO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[xO]},e[LD]={textureFormat:VO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[wO]},e[RD]={textureFormat:VO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[CO]},e[zD]={textureFormat:VO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[EO]},e[BD]={textureFormat:VO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[TO]},e[jD]={textureFormat:RO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[SO]},e[MD]={textureFormat:RO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[xO]},e[ND]={textureFormat:RO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[DO,jO]},e[PD]={textureFormat:RO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[DO]},e[FD]={textureFormat:zO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[SO]},e[ID]={textureFormat:zO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[xO]},e[DD]={textureFormat:zO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[wO]},e[OD]={textureFormat:zO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[CO]},e[kD]={textureFormat:zO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[EO]},e[AD]={textureFormat:zO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[TO]},e[VD]={textureFormat:zE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[SO]},e[HD]={textureFormat:zE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[SO]},e[UD]={textureFormat:zE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[SO,AO]},e[WD]={textureFormat:zE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[xO]},e[GD]={textureFormat:zE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[DO,jO,PO]},e[KD]={textureFormat:zE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[DO,jO,FO]},e[qD]={textureFormat:zE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[DO,jO]},e[JD]={textureFormat:zE,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[DO]},e[YD]={textureFormat:HO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[SO]},e[XD]={textureFormat:HO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[xO]},e[ZD]={textureFormat:HO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[wO]},e[QD]={textureFormat:HO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[CO]},e[$D]={textureFormat:HO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[EO]},e[eO]={textureFormat:HO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[TO]},e[tO]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[SO]},e[nO]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[SO]},e[rO]={textureFormat:q,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[xO]},e[iO]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[SO,kO,NO]},e[aO]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[SO,OO]},e[oO]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[NO]},e[sO]={textureFormat:q,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[DO,jO]},e[cO]={textureFormat:q,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[DO]},e[lO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[SO]},e[uO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[xO]},e[dO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[NO]},e[fO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[wO]},e[pO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[CO]},e[mO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[TO]},e[hO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[EO]},e[gO]={textureFormat:HE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[wO,EO]},e[_O]={textureFormat:HE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[EO]},e[vO]={textureFormat:HE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[DO]},e[bO]={textureFormat:UE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[LO]},e[yO]={textureFormat:UE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[IO]},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})}),GO=e}return GO[e]}function qO(e,t){let n=KO(e);if(!n)throw`unknown internal format`;let r=n.bytesPerElementMap[t];if(r===void 0)throw`unknown internal format`;return r}function JO(e){let t=KO(e);if(!t)throw`unknown internal format`;return{format:t.textureFormat,type:t.type[0]}}function YO(e){return(e&e-1)==0}function XO(e,t,n,r){if(!NE(e))return YO(t)&&YO(n);let i=KO(r);if(!i)throw`unknown internal format`;return i.colorRenderable&&i.textureFilterable}function ZO(e){let t=KO(e);if(!t)throw`unknown internal format`;return t.textureFilterable}function QO(e,t,n){return IE(t)?JT(t):n||SO}function $O(e,t,n,r,i){if(i%1!=0)throw`can't guess dimensions`;if(!n&&!r){let e=Math.sqrt(i/(t===JE?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 ek(e,t){t.colorspaceConversion!==void 0&&e.pixelStorei(vD,t.colorspaceConversion),t.premultiplyAlpha!==void 0&&e.pixelStorei(yD,t.premultiplyAlpha),t.flipY!==void 0&&e.pixelStorei(bD,t.flipY)}function tk(e){e.pixelStorei(fD,4),NE(e)&&(e.pixelStorei(pD,0),e.pixelStorei(mD,0),e.pixelStorei(hD,0),e.pixelStorei(gD,0),e.pixelStorei(_D,0))}function nk(e,t,n,r){r.minMag&&(n.call(e,t,rD,r.minMag),n.call(e,t,iD,r.minMag)),r.min&&n.call(e,t,rD,r.min),r.mag&&n.call(e,t,iD,r.mag),r.wrap&&(n.call(e,t,aD,r.wrap),n.call(e,t,oD,r.wrap),(t===YE||rE(e,t))&&n.call(e,t,sD,r.wrap)),r.wrapR&&n.call(e,t,sD,r.wrapR),r.wrapS&&n.call(e,t,aD,r.wrapS),r.wrapT&&n.call(e,t,oD,r.wrapT),r.minLod&&n.call(e,t,cD,r.minLod),r.maxLod&&n.call(e,t,lD,r.maxLod),r.baseLevel&&n.call(e,t,uD,r.baseLevel),r.maxLevel&&n.call(e,t,dD,r.maxLevel)}function rk(e,t,n){let r=n.target||qE;e.bindTexture(r,t),nk(e,r,e.texParameteri,n)}function ik(e){return e||=FE.textureColor,IE(e)?e:new Uint8Array([e[0]*255,e[1]*255,e[2]*255,e[3]*255])}function ak(e,t,n,r,i,a){n||=FE.textureOptions,a||=q;let o=n.target||qE;if(r||=n.width,i||=n.height,e.bindTexture(o,t),XO(e,r,i,a))e.generateMipmap(o);else{let t=ZO(a)?KE:GE;e.texParameteri(o,rD,t),e.texParameteri(o,iD,t),e.texParameteri(o,aD,WE),e.texParameteri(o,oD,WE)}}function ok(e){return e.auto===!0||e.auto===void 0&&e.level===void 0}function sk(e,t){return t||={},t.cubeFaceOrder||[ZE,QE,$E,eD,tD,nD]}function ck(e,t){let n=sk(e,t).map(function(e,t){return{face:e,ndx:t}});return n.sort(function(e,t){return e.face-t.face}),n}function lk(e,t,n,r){r||=FE.textureOptions;let i=r.target||qE,a=r.level||0,o=n.width,s=n.height,c=r.internalFormat||r.format||q,l=JO(c),u=r.format||l.format,d=r.type||l.type;if(ek(e,r),e.bindTexture(i,t),i===JE){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=LE();h?(h.canvas.width=p,h.canvas.height=p,o=p,s=p,ck(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,ck(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){ek(e,r),e.bindTexture(i,t),e.texImage2D(l.face,a,c,u,d,n),ok(r)&&ak(e,t,r,o,s,c)})}))}else if(i===YE||i===XE){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(fD,1),e.pixelStorei(pD,n.width),e.pixelStorei(mD,0),e.pixelStorei(_D,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(hD,o),e.pixelStorei(gD,c),e.texSubImage3D(i,a,0,0,r,t,t,1,u,d,n)}tk(e)}else e.texImage2D(i,a,c,u,d,n);ok(r)&&ak(e,t,r,o,s,c),rk(e,t,r)}function uk(){}function dk(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 fk(e,t){return t===void 0&&!dk(e)?`anonymous`:t}function pk(e,t,n){n||=uk;let r;if(t=t===void 0?FE.crossOrigin:t,t=fk(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;QT(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 mk(e){return typeof ImageBitmap<`u`&&e instanceof ImageBitmap||typeof ImageData<`u`&&e instanceof ImageData||typeof HTMLElement<`u`&&e instanceof HTMLElement}function hk(e,t,n){return mk(e)?(setTimeout(function(){n(null,e)}),e):pk(e,t,n)}function gk(e,t,n){n||=FE.textureOptions;let r=n.target||qE;if(e.bindTexture(r,t),n.color===!1)return;let i=ik(n.color);if(r===JE)for(let t=0;t<6;++t)e.texImage2D(ZE+t,0,q,1,1,0,q,SO,i);else r===YE||r===XE?e.texImage3D(r,0,q,1,1,1,0,q,SO,i):e.texImage2D(r,0,q,1,1,0,q,SO,i)}function _k(e,t,n,r){return r||=uk,n||=FE.textureOptions,gk(e,t,n),n=Object.assign({},n),hk(n.src,n.crossOrigin,function(i,a){i?r(i,t,a):(lk(e,t,a,n),r(null,t,a))})}function vk(e,t,n,r){r||=uk;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||q,s=JO(o),c=n.format||s.format,l=n.type||SO,u=n.target||qE;if(u!==JE)throw`target must be TEXTURE_CUBE_MAP`;gk(e,t,n),n=Object.assign({},n);let d=6,f=[],p=sk(e,n),m;function h(i){return function(s,p){--d,s?f.push(s):p.width===p.height?(ek(e,n),e.bindTexture(u,t),d===5?sk().forEach(function(t){e.texImage2D(t,a,o,c,l,p)}):e.texImage2D(i,a,o,c,l,p),ok(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 hk(e,n.crossOrigin,h(p[t]))})}function yk(e,t,n,r){r||=uk;let i=n.src,a=n.internalFormat||n.format||q,o=JO(a),s=n.format||o.format,c=n.type||SO,l=n.target||XE;if(l!==YE&&l!==XE)throw`target must be TEXTURE_3D or TEXTURE_2D_ARRAY`;gk(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(ek(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=LE(),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)}ok(n)&&e.generateMipmap(l)}u===0&&r(d.length?d:void 0,t,f)}}f=i.map(function(e,t){return hk(e,n.crossOrigin,v(t))})}function bk(e,t,n,r){r||=FE.textureOptions;let i=r.target||qE;e.bindTexture(i,t);let a=r.width,o=r.height,s=r.depth,c=r.level||0,l=r.internalFormat||r.format||q,u=JO(l),d=r.format||u.format,f=r.type||QO(e,n,u.type);IE(n)?n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer)):n=new(XT(f))(n);let p=qO(l,f),m=n.byteLength/p;if(m%1)throw`length wrong size for format: `+PE(e,d);let h;if(i===YE||i===XE)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=$O(e,i,o,s,m/a),o=h.width,s=h.height):o&&(!a||!s)?(h=$O(e,i,a,s,m/o),a=h.width,s=h.height):(h=$O(e,i,a,o,m/s),a=h.width,o=h.height);else h=$O(e,i,a,o,m),a=h.width,o=h.height;if(tk(e),e.pixelStorei(fD,r.unpackAlignment||1),ek(e,r),i===JE){let t=p/n.BYTES_PER_ELEMENT,i=m/6*t;ck(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===YE||i===XE?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 xk(e,t,n){let r=n.target||qE;e.bindTexture(r,t);let i=n.level||0,a=n.internalFormat||n.format||q,o=JO(a),s=n.format||o.format,c=n.type||o.type;if(ek(e,n),r===JE)for(let t=0;t<6;++t)e.texImage2D(ZE+t,i,a,n.width,n.height,0,s,c,null);else r===YE||r===XE?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 Sk(e,t,n){n||=uk,t||=FE.textureOptions;let r=e.createTexture(),i=t.target||qE,a=t.width||1,o=t.height||1,s=t.internalFormat||q;e.bindTexture(i,r),i===JE&&(e.texParameteri(i,aD,WE),e.texParameteri(i,oD,WE));let c=t.src;if(c)if(typeof c==`function`&&(c=c(e,t)),typeof c==`string`)_k(e,r,t,n);else if(IE(c)||Array.isArray(c)&&(typeof c[0]==`number`||Array.isArray(c[0])||IE(c[0]))){let n=bk(e,r,c,t);a=n.width,o=n.height}else Array.isArray(c)&&(typeof c[0]==`string`||mk(c[0]))?i===JE?vk(e,r,t,n):yk(e,r,t,n):(lk(e,r,c,t),a=c.width,o=c.height);else xk(e,r,t);return ok(t)&&ak(e,r,t,a,o,s),rk(e,r,t),r}function Ck(e,t,n,r,i,a){r||=n.width,i||=n.height,a||=n.depth;let o=n.target||qE;e.bindTexture(o,t);let s=n.level||0,c=n.internalFormat||n.format||q,l=JO(c),u=n.format||l.format,d,f=n.src;if(d=f&&(IE(f)||Array.isArray(f)&&typeof f[0]==`number`)?n.type||QO(e,f,l.type):n.type||l.type,o===JE)for(let t=0;t<6;++t)e.texImage2D(ZE+t,s,c,r,i,0,u,d,null);else o===YE||o===XE?e.texImage3D(o,s,c,r,i,a,0,u,d,null):e.texImage2D(o,s,c,r,i,0,u,d,null)}var wk=$T,Tk=33984,Ek=35048,Dk=34962,Ok=34963,kk=35345,Ak=35718,jk=35721,Mk=35971,Nk=35382,Pk=35396,Fk=35398,Ik=35392,Lk=35395,Rk=5126,zk=35664,Bk=35665,Vk=35666,Hk=5124,Uk=35667,Wk=35668,Gk=35669,Kk=35670,qk=35671,Jk=35672,Yk=35673,Xk=35674,Zk=35675,Qk=35676,$k=35678,eA=35680,tA=35679,nA=35682,rA=35685,iA=35686,aA=35687,oA=35688,sA=35689,cA=35690,lA=36289,uA=36292,dA=36293,fA=5125,pA=36294,mA=36295,hA=36296,gA=36298,_A=36299,vA=36300,yA=36303,bA=36306,xA=36307,SA=36308,CA=36311,wA=3553,TA=34067,EA=32879,DA=35866,J={};function OA(e,t){return J[t].bindPoint}function kA(e,t){return function(n){e.uniform1f(t,n)}}function AA(e,t){return function(n){e.uniform1fv(t,n)}}function jA(e,t){return function(n){e.uniform2fv(t,n)}}function MA(e,t){return function(n){e.uniform3fv(t,n)}}function NA(e,t){return function(n){e.uniform4fv(t,n)}}function PA(e,t){return function(n){e.uniform1i(t,n)}}function FA(e,t){return function(n){e.uniform1iv(t,n)}}function IA(e,t){return function(n){e.uniform2iv(t,n)}}function LA(e,t){return function(n){e.uniform3iv(t,n)}}function RA(e,t){return function(n){e.uniform4iv(t,n)}}function zA(e,t){return function(n){e.uniform1ui(t,n)}}function BA(e,t){return function(n){e.uniform1uiv(t,n)}}function VA(e,t){return function(n){e.uniform2uiv(t,n)}}function HA(e,t){return function(n){e.uniform3uiv(t,n)}}function UA(e,t){return function(n){e.uniform4uiv(t,n)}}function WA(e,t){return function(n){e.uniformMatrix2fv(t,!1,n)}}function GA(e,t){return function(n){e.uniformMatrix3fv(t,!1,n)}}function KA(e,t){return function(n){e.uniformMatrix4fv(t,!1,n)}}function qA(e,t){return function(n){e.uniformMatrix2x3fv(t,!1,n)}}function JA(e,t){return function(n){e.uniformMatrix3x2fv(t,!1,n)}}function YA(e,t){return function(n){e.uniformMatrix2x4fv(t,!1,n)}}function XA(e,t){return function(n){e.uniformMatrix4x2fv(t,!1,n)}}function ZA(e,t){return function(n){e.uniformMatrix3x4fv(t,!1,n)}}function QA(e,t){return function(n){e.uniformMatrix4x3fv(t,!1,n)}}function $A(e,t,n,r){let i=OA(e,t);return NE(e)?function(t){let a,o;nE(e,t)?(a=t,o=null):(a=t.texture,o=t.sampler),e.uniform1i(r,n),e.activeTexture(Tk+n),e.bindTexture(i,a),e.bindSampler(n,o)}:function(t){e.uniform1i(r,n),e.activeTexture(Tk+n),e.bindTexture(i,t)}}function ej(e,t,n,r,i){let a=OA(e,t),o=new Int32Array(i);for(let e=0;e<i;++e)o[e]=n+e;return NE(e)?function(t){e.uniform1iv(r,o),t.forEach(function(t,r){e.activeTexture(Tk+o[r]);let i,s;nE(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(Tk+o[n]),e.bindTexture(a,t)})}}J[Rk]={Type:Float32Array,size:4,setter:kA,arraySetter:AA},J[zk]={Type:Float32Array,size:8,setter:jA,cols:2},J[Bk]={Type:Float32Array,size:12,setter:MA,cols:3},J[Vk]={Type:Float32Array,size:16,setter:NA,cols:4},J[Hk]={Type:Int32Array,size:4,setter:PA,arraySetter:FA},J[Uk]={Type:Int32Array,size:8,setter:IA,cols:2},J[Wk]={Type:Int32Array,size:12,setter:LA,cols:3},J[Gk]={Type:Int32Array,size:16,setter:RA,cols:4},J[fA]={Type:Uint32Array,size:4,setter:zA,arraySetter:BA},J[pA]={Type:Uint32Array,size:8,setter:VA,cols:2},J[mA]={Type:Uint32Array,size:12,setter:HA,cols:3},J[hA]={Type:Uint32Array,size:16,setter:UA,cols:4},J[Kk]={Type:Uint32Array,size:4,setter:PA,arraySetter:FA},J[qk]={Type:Uint32Array,size:8,setter:IA,cols:2},J[Jk]={Type:Uint32Array,size:12,setter:LA,cols:3},J[Yk]={Type:Uint32Array,size:16,setter:RA,cols:4},J[Xk]={Type:Float32Array,size:32,setter:WA,rows:2,cols:2},J[Zk]={Type:Float32Array,size:48,setter:GA,rows:3,cols:3},J[Qk]={Type:Float32Array,size:64,setter:KA,rows:4,cols:4},J[rA]={Type:Float32Array,size:32,setter:qA,rows:2,cols:3},J[iA]={Type:Float32Array,size:32,setter:YA,rows:2,cols:4},J[aA]={Type:Float32Array,size:48,setter:JA,rows:3,cols:2},J[oA]={Type:Float32Array,size:48,setter:ZA,rows:3,cols:4},J[sA]={Type:Float32Array,size:64,setter:XA,rows:4,cols:2},J[cA]={Type:Float32Array,size:64,setter:QA,rows:4,cols:3},J[$k]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:wA},J[eA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:TA},J[tA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:EA},J[nA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:wA},J[lA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:DA},J[uA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:DA},J[dA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:TA},J[gA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:wA},J[_A]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:EA},J[vA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:TA},J[yA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:DA},J[bA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:wA},J[xA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:EA},J[SA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:TA},J[CA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:DA};function tj(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(Dk,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,n.numComponents||n.size,n.type||Rk,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function nj(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(Dk,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||Hk,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function rj(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(Dk,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||fA,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function ij(e,t,n){let r=n.size,i=n.count;return function(n){e.bindBuffer(Dk,n.buffer);let a=n.size||n.numComponents||r,o=a/i,s=n.type||Rk,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 aj={};aj[Rk]={size:4,setter:tj},aj[zk]={size:8,setter:tj},aj[Bk]={size:12,setter:tj},aj[Vk]={size:16,setter:tj},aj[Hk]={size:4,setter:nj},aj[Uk]={size:8,setter:nj},aj[Wk]={size:12,setter:nj},aj[Gk]={size:16,setter:nj},aj[fA]={size:4,setter:rj},aj[pA]={size:8,setter:rj},aj[mA]={size:12,setter:rj},aj[hA]={size:16,setter:rj},aj[Kk]={size:4,setter:nj},aj[qk]={size:8,setter:nj},aj[Jk]={size:12,setter:nj},aj[Yk]={size:16,setter:nj},aj[Xk]={size:4,setter:ij,count:2},aj[Zk]={size:9,setter:ij,count:3},aj[Qk]={size:16,setter:ij,count:4};function oj(e){let t=e.name;return t.startsWith(`gl_`)||t.startsWith(`webgl_`)}var sj=/(\.|\[|]|\w+)/g,cj=e=>e>=`0`&&e<=`9`;function lj(e,t,n,r){let i=e.split(sj).filter(e=>e!==``),a=0,o=``;for(;;){let e=i[a++];o+=e;let s=cj(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){xj(e,t)}}(s),o+=e}}}function uj(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,Ak);for(let n=0;n<o;++n){let o=e.getActiveUniform(t,n);if(oj(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,lj(s,e,a,i)}}return i}function dj(e,t){let n={},r=e.getProgramParameter(t,Mk);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 fj(e,t){let n=e.getProgramParameter(t,Ak),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,Nk);for(let n=0;n<o;++n){let r=e.getActiveUniformBlockName(t,n),i={index:e.getUniformBlockIndex(t,r),usedByVertexShader:e.getActiveUniformBlockParameter(t,n,Pk),usedByFragmentShader:e.getActiveUniformBlockParameter(t,n,Fk),size:e.getActiveUniformBlockParameter(t,n,Ik),uniformIndices:e.getActiveUniformBlockParameter(t,n,Lk)};i.used=i.usedByVertexShader||i.usedByFragmentShader,a[r]=i}return{blockSpecs:a,uniformData:r}}var pj=/\[\d+\]\.$/,mj=(e,t)=>((e+(t-1))/t|0)*t;function hj(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 gj(e,t,n,r){let i=n.blockSpecs,a=n.uniformData,o=i[r];if(!o)return wk(`no uniform block object named:`,r),{name:r,uniforms:{}};let s=new ArrayBuffer(o.size),c=e.createBuffer(),l=o.index;e.bindBuffer(kk,c),e.uniformBlockBinding(t,o.index,l);let u=r+`.`;pj.test(u)&&(u=u.replace(pj,`.`));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?mj(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=hj(l,r,i.rows,i.cols);f[n]=m,lj(n,m,p,f)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:d,setters:f}}function _j(e,t,n){return gj(e,t.program,t.uniformBlockSpec,n)}function vj(e,t,n){let r=(t.uniformBlockSpec||t).blockSpecs[n.name];if(r){let t=r.index;return e.bindBufferRange(kk,t,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function yj(e,t,n){vj(e,t,n)&&e.bufferData(kk,n.array,Ek)}function bj(e,t){let n=e.setters;for(let e in t){let r=n[e];if(r){let n=t[e];r(n)}}}function xj(e,t){for(let n in t){let r=e[n];typeof r==`function`?r(t[n]):xj(e[n],t[n])}}function Sj(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)Sj(n,r[t])}else for(let e in r){let t=n[e];t&&t(r[e])}}}function Cj(e,t){let n={},r=e.getProgramParameter(t,jk);for(let i=0;i<r;++i){let r=e.getActiveAttrib(t,i);if(oj(r))continue;let a=e.getAttribLocation(t,r.name),o=aj[r.type],s=o.setter(e,a,o);s.location=a,n[r.name]=s}return n}function wj(e,t){for(let n in t){let r=e[n];r&&r(t[n])}}function Tj(e,t,n){n.vertexArrayObject?e.bindVertexArray(n.vertexArrayObject):(wj(t.attribSetters||t,n.attribs),n.indices&&e.bindBuffer(Ok,n.indices))}function Ej(e,t){let n={program:t,uniformSetters:uj(e,t),attribSetters:Cj(e,t)};return NE(e)&&(n.uniformBlockSpec=fj(e,t),n.transformFeedbackInfo=dj(e,t)),n}var Dj=4,Oj=5123;function kj(e,t,n,r,i,a){n=n===void 0?Dj: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?Oj:t.elementType,i):e.drawElementsInstanced(n,c,s===void 0?Oj:t.elementType,i,a):a===void 0?e.drawArrays(n,i,c):e.drawArraysInstanced(n,i,c,a)}var Aj=36160,jj=36161,Mj=3553,Nj=5121,Pj=6402,Fj=6408,Ij=33190,Lj=36012,Rj=35056,zj=36013,Bj=32854,Vj=32855,Hj=36194,Uj=33189,Wj=6401,Gj=36168,Kj=34041,qj=36064,Jj=36096,Yj=36128,Xj=33306,Zj=33071,Qj=9729,$j=[{format:Fj,type:Nj,min:Qj,wrap:Zj},{format:Kj}],eM={};eM[Kj]=Xj,eM[Wj]=Yj,eM[Gj]=Yj,eM[Pj]=Jj,eM[Uj]=Jj,eM[Ij]=Jj,eM[Lj]=Jj,eM[Rj]=Xj,eM[zj]=Xj;function tM(e,t){return eM[e]||eM[t]}var nM={};nM[Bj]=!0,nM[Vj]=!0,nM[Hj]=!0,nM[Kj]=!0,nM[Uj]=!0,nM[Wj]=!0,nM[Gj]=!0;function rM(e){return nM[e]}var iM=32;function aM(e){return e>=qj&&e<qj+iM}function oM(e,t,n,r){let i=Aj,a=e.createFramebuffer();e.bindFramebuffer(i,a),n||=e.drawingBufferWidth,r||=e.drawingBufferHeight,t||=$j;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||tM(u,t.internalFormat);if(d||=qj+a,aM(d)&&o.push(d),!c)if(l!==void 0||rM(u))c=e.createRenderbuffer(),e.bindRenderbuffer(jj,c),l>1?e.renderbufferStorageMultisample(jj,l,u,n,r):e.renderbufferStorage(jj,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||Qj,i.mag=i.mag||i.minMag||Qj,i.wrapS=i.wrapS||i.wrap||Zj,i.wrapT=i.wrapT||i.wrap||Zj),c=Sk(e,i)}if(tE(e,c))e.framebufferRenderbuffer(i,d,jj,c);else if(nE(e,c))t.layer===void 0?e.framebufferTexture2D(i,d,t.target||Mj,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 sM(e,t,n,r,i){r||=e.drawingBufferWidth,i||=e.drawingBufferHeight,t.width=r,t.height=i,n||=$j,n.forEach(function(n,a){let o=t.attachments[a],s=n.format,c=n.samples;if(c!==void 0||tE(e,o))e.bindRenderbuffer(jj,o),c>1?e.renderbufferStorageMultisample(jj,c,s,r,i):e.renderbufferStorage(jj,s,r,i);else if(nE(e,o))Ck(e,o,n,r,i);else throw Error(`unknown attachment type`)})}function cM(e,t,n){let r=e.createVertexArray();return e.bindVertexArray(r),t.length||(t=[t]),t.forEach(function(t){Tj(e,t,n)}),e.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}var lM={addExtensionsToContext:!0},uM=/^(.*?)_/;function dM(e,t){PE(e,0);let n=e.getExtension(t);if(n){let r={},i=uM.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&&$T(l,e[l],o,t)}r.constructor={name:n.constructor.name},PE(r,0)}return n}var fM=[`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 pM(e){for(let t=0;t<fM.length;++t)dM(e,fM[t])}function mM(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){lM.addExtensionsToContext&&pM(r);break}return r}function hM(e,t){return mM(e,t)}var gM=`flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
|
|
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;
|
|
538
546
|
#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
|
|
539
547
|
out vec2 vPosInPixels;
|
|
540
548
|
#endif
|
|
541
|
-
flat out vec2 vHalfSizeInPixels;/***Adjusts the vertex position to ensure that the rectangle is at least \`minSpan\`*wide or high. Returns a value that reflects the amount of clamping and can be*used to adjust the opacity of the rectangle.**pos: vertex position*frac: vertex position within the rectangle,[0,1]*size: width or height of the rectangle*minSize: minimum width or height of the rectangle*/float clampMinSize(inout float pos,float frac,float size,float minSize){if(minSize>0.0&&size<minSize){pos+=(frac-0.5)*(minSize-size);return size/minSize;}return 1.0;}void sort(inout float a,inout float b){if(a>b){float tmp=b;b=a;a=tmp;}}/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/vec2 getVertexPos(){int index=gl_VertexID % 6;return vec2(index==0||index==1||index==3 ? 0.0 : 1.0,index==0||index==1||index==2 ? 0.0 : 1.0);}void main(void){vec2 frac=getVertexPos();vec2 normalizedMinSize=vec2(uMinWidth,uMinHeight)/uViewportSize;vec4 cornerRadii=vec4(uCornerRadiusTopRight,uCornerRadiusBottomRight,uCornerRadiusTopLeft,uCornerRadiusBottomLeft);float x=getScaled_x();float x2=getScaled_x2();float y=getScaled_y();float y2=getScaled_y2();sort(x,x2);sort(y,y2);float clampMargin=1.0;vec2 pos1=vec2(clamp(x,0.0-clampMargin,1.0+clampMargin),y);vec2 pos2=vec2(clamp(x2,0.0-clampMargin,1.0+clampMargin),y2);vec2 size=pos2-pos1;if(size.x
|
|
549
|
+
flat out vec2 vHalfSizeInPixels;/***Adjusts the vertex position to ensure that the rectangle is at least \`minSpan\`*wide or high. Returns a value that reflects the amount of clamping and can be*used to adjust the opacity of the rectangle.**pos: vertex position*frac: vertex position within the rectangle,[0,1]*size: width or height of the rectangle*minSize: minimum width or height of the rectangle*/float clampMinSize(inout float pos,float frac,float size,float minSize){if(minSize>0.0&&size<minSize){pos+=(frac-0.5)*(minSize-size);return size/minSize;}return 1.0;}void sort(inout float a,inout float b){if(a>b){float tmp=b;b=a;a=tmp;}}/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/vec2 getVertexPos(){int index=gl_VertexID % 6;return vec2(index==0||index==1||index==3 ? 0.0 : 1.0,index==0||index==1||index==2 ? 0.0 : 1.0);}void main(void){vec2 frac=getVertexPos();vec2 normalizedMinSize=vec2(uMinWidth,uMinHeight)/uViewportSize;vec4 cornerRadii=vec4(uCornerRadiusTopRight,uCornerRadiusBottomRight,uCornerRadiusTopLeft,uCornerRadiusBottomLeft);float x=getScaled_x();float x2=getScaled_x2();float y=getScaled_y();float y2=getScaled_y2();sort(x,x2);sort(y,y2);float clampMargin=1.0;vec2 pos1=vec2(clamp(x,0.0-clampMargin,1.0+clampMargin),y);vec2 pos2=vec2(clamp(x2,0.0-clampMargin,1.0+clampMargin),y2);vec2 size=pos2-pos1;if(size.x<0.0||size.y<0.0){gl_Position=vec4(0.0,0.0,0.0,1.0);return;}vec2 pos=pos1+frac*size;size.y*=getSampleFacetHeight(pos);float opaFactor=uViewOpacity*max(uMinOpacity,clampMinSize(pos.x,frac.x,size.x,normalizedMinSize.x)*clampMinSize(pos.y,frac.y,size.y,normalizedMinSize.y));size=max(size,normalizedMinSize);pos=applySampleFacet(pos);
|
|
542
550
|
#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
|
|
543
551
|
float aaPadding=1.0/uDevicePixelRatio;float shadowPadding=uShadowBlur+max(abs(uShadowOffsetX),abs(uShadowOffsetY));float strokeWidth=getScaled_strokeWidth();float strokeOpacity=getScaled_strokeOpacity()*opaFactor;vec2 centeredFrac=frac-0.5;vec2 expand=centeredFrac*(strokeWidth+aaPadding+shadowPadding*2.0)/uViewportSize;pos+=expand;vec2 sizeInPixels=size*uViewportSize;vPosInPixels=(centeredFrac+expand/size)*sizeInPixels;vHalfSizeInPixels=sizeInPixels/2.0;vCornerRadii=min(cornerRadii,min(vHalfSizeInPixels.x,vHalfSizeInPixels.y));vHalfStrokeWidth=strokeWidth/2.0;vStrokeColor=vec4(getScaled_stroke()*strokeOpacity,strokeOpacity);
|
|
544
552
|
#endif
|
|
545
|
-
gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,
|
|
553
|
+
gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,EM=`#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
|
|
546
554
|
in vec2 vPosInPixels;
|
|
547
555
|
#endif
|
|
548
556
|
flat in vec2 vHalfSizeInPixels;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in float vHalfStrokeWidth;flat in vec4 vCornerRadii;out lowp vec4 fragColor;
|
|
@@ -568,54 +576,54 @@ if(vHalfStrokeWidth>0.0&&uHatchPattern>0){d=max(d,-pattern());}fragColor=distanc
|
|
|
568
576
|
#else
|
|
569
577
|
fragColor=vFillColor;if(uPickingEnabled){fragColor=vPickingColor;}
|
|
570
578
|
#endif
|
|
571
|
-
}`,
|
|
579
|
+
}`,DM=`layout(std140)uniform Mark{uniform float uMinWidth;uniform float uMinHeight;uniform float uMinOpacity;uniform float uCornerRadiusTopRight;uniform float uCornerRadiusBottomRight;uniform float uCornerRadiusTopLeft;uniform float uCornerRadiusBottomLeft;uniform int uHatchPattern;uniform vec3 uShadowColor;uniform float uShadowOpacity;uniform float uShadowBlur;uniform float uShadowOffsetX;uniform float uShadowOffsetY;
|
|
572
580
|
#pragma markUniforms
|
|
573
|
-
};`,
|
|
581
|
+
};`,OM=1e4,kM=class{#e=!1;constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}configure(){if(this.#e)throw Error(`Already configured!`);this.#t(),this.#n(),this.#e=!0}addConverter(e,t){let n=this.createUpdater(e,t.numComponents||1,t.targetArrayType??Float32Array,t.arrayReference),r=t.f;this.dataUpdaters.push((t.arrayReference,e=>n(r(e))))}createUpdater(e,t,n=Float32Array,r=void 0){if(!N(this.size))throw Error(`The number of vertices must be defined!`);let i,a,o=0,s=new n(this.size*t);if(this.arrays[e]={data:s,numComponents:t},t==1){let e=0;i=()=>{s[o++]=e},a=t=>{e=+t}}else{let e=r??[0],n=r?e=>{}:t=>{e=t};switch(t){case 1:break;case 2:i=()=>{s[o++]=e[0],s[o++]=e[1]},a=n;break;case 3:i=()=>{s[o++]=e[0],s[o++]=e[1],s[o++]=e[2]},a=n;break;case 4:i=()=>{s[o++]=e[0],s[o++]=e[1],s[o++]=e[2],s[o++]=e[3]},a=n;break;default:throw Error(`Invalid numComponents: `+t)}}return this.pushers.push(i),a}pushAll(){throw Error(`Call configure() first!`)}updateFromDatum(e){throw Error(`Call configure() first!`)}#t(){if(this.size>OM){let e=this.pushers.map((e,t)=>`const p${t} = that.pushers[${t}];`).join(`
|
|
574
582
|
`),t=this.pushers.map((e,t)=>` p${t}();`).join(`
|
|
575
583
|
`);this.pushAll=Function(`that`,`${e}
|
|
576
584
|
return function unrolledPushAll() {
|
|
577
585
|
${t}
|
|
578
586
|
that.vertexCount++;
|
|
579
|
-
};`)(this)}else this.pushAll=()=>{for(let e=0;e<this.pushers.length;e++)this.pushers[e]();this.vertexCount++}}#n(){if(this.size>
|
|
587
|
+
};`)(this)}else this.pushAll=()=>{for(let e=0;e<this.pushers.length;e++)this.pushers[e]();this.vertexCount++}}#n(){if(this.size>OM){let e=this.dataUpdaters.map((e,t)=>`const u${t} = that.dataUpdaters[${t}];`).join(`
|
|
580
588
|
`),t=this.dataUpdaters.map((e,t)=>` u${t}(datum);`).join(`
|
|
581
589
|
`);this.updateFromDatum=Function(`that`,`datum`,`${e}
|
|
582
590
|
return function unrolledUpdateFromDatum(datum) {
|
|
583
591
|
${t}
|
|
584
|
-
};`)(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()}},
|
|
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){Ze(t)&&(t=t.join(`
|
|
585
593
|
|
|
586
594
|
`));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(`
|
|
587
595
|
|
|
588
|
-
`);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,
|
|
596
|
+
`);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(`
|
|
589
597
|
`).map((e,t)=>{let r=i.get(t);return`${t+1+n}: ${e}${r?`\n\n^^^ ${r}`:``}`}).join(`
|
|
590
|
-
`)}function
|
|
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(Ze(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:`
|
|
591
599
|
${r.type} ${i}() {
|
|
592
600
|
// Constant value
|
|
593
601
|
return ${r};
|
|
594
|
-
}`,accessorFunctionName:i}}function
|
|
602
|
+
}`,accessorFunctionName:i}}function pN(e,t){let n=`float`,r=e=>e;Jh(e)&&(n=`vec3`,r=e=>$M(e));let i=`u${PN(e)}_${t}`,a=` // Dynamic value\n uniform ${n} ${i};`,o=dN(e,t);return{channel:e,uniformName:i,uniformGlsl:a,accessorGlsl:`
|
|
595
603
|
${n} ${o}() {
|
|
596
604
|
// Dynamic value
|
|
597
605
|
return ${i};
|
|
598
|
-
}`,accessorFunctionName:o,adjuster:r}}function
|
|
606
|
+
}`,accessorFunctionName:o,adjuster:r}}function mN(e,t,n,r=[e]){let{attributeType:i}=TN(t,e),a=NN(r),o=`in highp ${i} ${a};`,s=dN(e,n);return{channel:e,attributeName:a,attributeGlsl:o,accessorGlsl:`
|
|
599
607
|
${i} ${s}() {
|
|
600
608
|
return ${a};
|
|
601
|
-
}`,accessorFunctionName:s}}function
|
|
609
|
+
}`,accessorFunctionName:s}}function hN(e,t,n){let{attributeType:r}=TN(t,e),i=NN(e),a=` uniform highp ${r} ${i};`,o=dN(e,n);return{channel:e,uniformName:i,uniformGlsl:a,accessorGlsl:`
|
|
602
610
|
${r} ${o}() {
|
|
603
611
|
return ${i};
|
|
604
|
-
}`,accessorFunctionName:o}}function
|
|
605
|
-
${g} ${
|
|
612
|
+
}`,accessorFunctionName:o}}function gN(e,t,n){t??=MM();let r=qh(e),i=tN+r,a=nN+r,{hp:o,attributeType:s}=TN(t,e),c=t.domain?t.domain().length:void 0,l,u=[];u.push(``),u.push(`/`.repeat(70)),u.push(`// Channel: ${e}`),u.push(``);let{transform:d}=uN(t.type),f=(e,...t)=>wN.apply(null,[e,`value`,...t]),p;switch(d){case`linear`:p=f(`scaleLinear`,`domain`,a);break;case`log`:p=f(`scaleLog`,`domain`,a,t.base());break;case`symlog`:p=f(`scaleSymlog`,`domain`,a,t.constant());break;case`pow`:case`sqrt`:p=f(`scalePow`,`domain`,a,t.exponent());break;case`index`:case`locus`:p=f(`scaleBandHp`,`domain`,a,t.paddingInner(),t.paddingOuter(),t.align(),n.band??.5);break;case`point`:case`band`:p=f(`scaleBand`,`domain`,a,t.paddingInner(),t.paddingOuter(),t.align(),n.band??.5);break;case`ordinal`:case`null`:case`identity`:p=f(`scaleIdentity`);break;case`threshold`:break;default:throw Error(`Unsupported scale type: ${t.type}! ${e}: ${JSON.stringify(n)}`)}let m=FN(t,e),h;if(m&&e==r){let e=t.props.range??[];if(z(e)||e.some(z)){if(m.length<1||m.length>4)throw Error(`A range with ExprRefs must have 1-4 elements, not ${m.length}! Range: ${JSON.stringify(m)}`);h=` uniform ${bN(m.length)} ${a};`}else if(m.length&&m.every(N)){let e=CN(m);u.push(`const ${e.type} ${a} = ${e};`)}}let g=xN(e),_;if(Jh(e)){let n=oN+r;if(e==r&&u.push(`uniform sampler2D ${n};`),vm(t.type))_=`getInterpolatedColor(${n}, transformed)`;else if(ym(t.type)||bm(t.type))_=`getDiscreteColor(${n}, int(transformed))`;else throw Error(`Problem with color scale!`)}else if(t.type===`ordinal`||bm(t.type)){let t=oN+r;e==r&&u.push(`uniform sampler2D ${t};`),_=`getDiscreteColor(${t}, int(transformed)).r`}let v=[],y=vm(t.type)&&c>2,b=bm(t.type)||y;if(v.push(`int slot = 0;`),b){let e=i;v.push(y?`while (slot < ${e}.length() - 2 && value >= ${e}[slot + 1]) { slot++; }`:`while (slot < ${e}.length() && value >= ${e}[slot]) { slot++; }`)}let x=vm(t.type)||bm(t.type)||[`band`,`point`].includes(t.type);if(p){let e=i;x&&(o?v.push(`vec3 domain = ${e};`):v.push(`vec2 domain = vec2(${e}[slot], ${e}[slot + 1]);`)),v.push(`float transformed = ${p};`),y&&v.push(`transformed = (float(slot) + transformed) / (float(${e}.length() - 1));`)}else v.push(`float transformed = float(slot);`);`clamp`in t&&t.clamp()&&v.push(`transformed = clampToRange(transformed, ${CN(m)});`),v.push(`return ${_??`transformed`};`),u.push(`
|
|
613
|
+
${g} ${iN}${e}(${s} value) {
|
|
606
614
|
${v.map(e=>` ${e}\n`).join(``)}
|
|
607
615
|
}`);let S=u.join(`
|
|
608
|
-
`);if(x&&e==r){let e=
|
|
609
|
-
${
|
|
616
|
+
`);if(x&&e==r){let e=vm(t.type)||bm(t.type)?c:2;l=o?` highp vec3 ${i};`:` mediump float ${i}[${e}];`}return{glsl:S,domainUniformName:i,domainUniform:l,rangeUniformName:a,rangeUniform:h}}function _N(e,t){let n=xN(e),r=[],i=[];for(let n=0;n<t.length;n++){let{accessor:a,predicate:o}=t[n],s=dN(e,n),{param:c,empty:l}=o;r.push(c?`${cN}${c}(${!!l})`:null),i.push(a.scaleChannel?`return ${iN}${e}(${s}());`:`return ${s}();`)}return`${n} ${aN}${e}() {
|
|
617
|
+
${IN(r,i)}
|
|
610
618
|
}
|
|
611
619
|
|
|
612
|
-
#define ${e}_DEFINED`}function
|
|
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)):Ze(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} {
|
|
613
621
|
${t[i]}
|
|
614
622
|
}`)}return r.join(`
|
|
615
|
-
`)}function
|
|
623
|
+
`)}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() {
|
|
616
624
|
pushAll(); pushAll(); pushAll(); pushAll(); pushAll(); pushAll();
|
|
617
|
-
};`)(r):function(){r(),r(),r(),r(),r(),r()}}addBatch(e,t,n=0,r=t.length){if(!(r<=n)){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.updateFromDatum(n),this.pushAllSixTimes()}this.registerBatch(e)}}},
|
|
618
|
-
uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}const highp uint HASH_EMPTY_KEY=0xffffffffu;highp uint hash32(highp uint key){highp uint v=key;v ^=v>>16u;v*=0x7feb352du;v ^=v>>15u;v*=0x846ca68bu;v ^=v>>16u;return v;}bool isEmptyHashTexture(highp usampler2D s){ivec2 texSize=textureSize(s,0);return texSize.x==1&&texSize.y==1&&texelFetch(s,ivec2(0,0),0).r==HASH_EMPTY_KEY;}bool hashContainsTexture(highp usampler2D s,highp uint value){ivec2 texSize=textureSize(s,0);highp uint width=uint(texSize.x);highp uint size=width*uint(texSize.y);highp uint mask=size-1u;highp uint index=hash32(value)&mask;for(highp uint probe=0u;probe<size;probe+=1u){ivec2 coord=ivec2(int(index % width),int(index/width));highp uint entry=texelFetch(s,coord,0).r;if(entry==value){return true;}if(entry==HASH_EMPTY_KEY){return false;}index=(index+1u)&mask;}return false;}/***Calculates a gamma for antialiasing opacity based on the color.*/float getGammaForColor(vec3 rgb){return mix(1.25,0.75,smoothstep(0.0,1.0,dot(rgb,vec3(0.299,0.587,0.114))));}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,vec4 background,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : background,distanceToRatio(sd));}else{return mix(background,fill,distanceToRatio(-d));}}`,
|
|
625
|
+
};`)(r):function(){r(),r(),r(),r(),r(),r()}}addBatch(e,t,n=0,r=t.length){if(!(r<=n)){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.updateFromDatum(n),this.pushAllSixTimes()}this.registerBatch(e)}}},WN=class extends HN{constructor({encoders:e,attributes:t,tessellationThreshold:n=1/0,visibleRange:r=[-1/0,1/0],numItems:i}){super({encoders:e,attributes:t,numVertices:n==1/0?i*6:void 0}),this.visibleRange=r,this.tessellationThreshold=n||1/0,this.updateSide=this.variableBuilder.createUpdater(`side`,1),this.updatePos=this.variableBuilder.createUpdater(`pos`,1),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.updateFromDatum(n),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();for(let e=0;e<=1;e++)this.updatePos(e/1),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll()}this.registerBatch(e)}},GN=class extends HN{constructor({encoders:e,attributes:t,numItems:n=void 0}){super({encoders:e,attributes:t,numVertices:n}),this.variableBuilder.configure()}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)}},KN=class extends HN{constructor({encoders:e,attributes:t,numItems:n=void 0}){super({encoders:e,attributes:t,numVertices:n}),this.variableBuilder.configure()}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)}toArrays(){let e=this.variableBuilder.arrays;for(let t of Object.values(e))t.divisor=1;return super.toArrays()}},qN=class extends HN{constructor({encoders:e,attributes:t,fontMetrics:n,properties:r,numCharacters:i=void 0}){super({encoders:e,attributes:t,numVertices:i*6}),this.metadata=n,this.metrics=n,this.properties=r;let a=e.text.channelDef;this.numberFormat=!Oh(a)&&`format`in a&&a.format?sr(a.format):e=>e,this.updateVertexCoord=this.variableBuilder.createUpdater(`vertexCoord`,2),this.updateTextureCoord=this.variableBuilder.createUpdater(`textureCoord`,2),this.updateWidth=this.variableBuilder.createUpdater(`width`,1),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){let i=this.properties.align||`left`,a=this.properties.logoLetters??!1,o=this.metadata.common.base,s=this.metadata.common.scaleH,c=-5;switch(this.properties.baseline){case`top`:c+=this.metrics.capHeight;break;case`middle`:c+=this.metrics.capHeight/2;break;case`bottom`:c-=this.metrics.descent;break;default:}let l=this.encoders.text,u=[0,0];this.updateVertexCoord(u);let d=[0,0];this.updateTextureCoord(d);for(let e=n;e<r;e++){let n=t[e],r=this.numberFormat(l(n)),f=P(r)?r:r===null?``:``+r;if(f.length==0)continue;this.variableBuilder.updateFromDatum(n);let p=a?f.length:this.metrics.measureWidth(f);this.updateWidth(p);let m=i==`right`?-p:i==`center`?-p/2:0;if(!a){let e=this.metrics.getCharByCode(f.charCodeAt(0));m-=(e.width-e.xadvance)/o/2}let h,g,_;for(let e=0;e<f.length;e++){let t=this.metrics.getCharByCode(f.charCodeAt(e)),n=a?1:t.xadvance/o;if(t.id==32){m+=n;continue}a?(_=(t.width+10)/t.width,m=-_/2,g=(t.height+10)/t.height,h=-.5-5/t.height):(g=t.height/o,h=-(t.height+t.yoffset+c)/o,_=t.width/o);let r=t.x,i=t.y;u[0]=m,u[1]=h+g,d[0]=r/s,d[1]=i/s,this.variableBuilder.pushAll(),u[0]=m+_,u[1]=h+g,d[0]=(r+t.width)/s,d[1]=i/s,this.variableBuilder.pushAll(),u[0]=m,u[1]=h,d[0]=r/s,d[1]=(i+t.height)/s,this.variableBuilder.pushAll(),u[0]=m+_,u[1]=h+g,d[0]=(r+t.width)/s,d[1]=i/s,this.variableBuilder.pushAll(),u[0]=m,u[1]=h,d[0]=r/s,d[1]=(i+t.height)/s,this.variableBuilder.pushAll(),u[0]=m+_,u[1]=h,d[0]=(r+t.width)/s,d[1]=(i+t.height)/s,this.variableBuilder.pushAll(),m+=n}}this.registerBatch(e)}},JN=`#define PI 3.141593
|
|
626
|
+
uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}const highp uint HASH_EMPTY_KEY=0xffffffffu;highp uint hash32(highp uint key){highp uint v=key;v ^=v>>16u;v*=0x7feb352du;v ^=v>>15u;v*=0x846ca68bu;v ^=v>>16u;return v;}bool isEmptyHashTexture(highp usampler2D s){ivec2 texSize=textureSize(s,0);return texSize.x==1&&texSize.y==1&&texelFetch(s,ivec2(0,0),0).r==HASH_EMPTY_KEY;}bool hashContainsTexture(highp usampler2D s,highp uint value){ivec2 texSize=textureSize(s,0);highp uint width=uint(texSize.x);highp uint size=width*uint(texSize.y);highp uint mask=size-1u;highp uint index=hash32(value)&mask;for(highp uint probe=0u;probe<size;probe+=1u){ivec2 coord=ivec2(int(index % width),int(index/width));highp uint entry=texelFetch(s,coord,0).r;if(entry==value){return true;}if(entry==HASH_EMPTY_KEY){return false;}index=(index+1u)&mask;}return false;}/***Calculates a gamma for antialiasing opacity based on the color.*/float getGammaForColor(vec3 rgb){return mix(1.25,0.75,smoothstep(0.0,1.0,dot(rgb,vec3(0.299,0.587,0.114))));}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,vec4 background,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : background,distanceToRatio(sd));}else{return mix(background,fill,distanceToRatio(-d));}}`,YN=`uniform highp float uZero;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleIdentity(uint value){return float(value);}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(uint value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(float(value)-domainExtent[0])*step+bandwidth*band;}const int lowBits=12;const float lowDivisor=pow(2.0,float(lowBits));const uint lowMask=uint(lowDivisor-1.0);vec2 splitUint(uint value){uint valueLo=value&lowMask;uint valueHi=value-valueLo;return vec2(float(valueHi),float(valueLo));}/***High precision variant of scaleBand for index/locus scales*/float scaleBandHp(uint value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);vec2 splitValue=splitUint(value);float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}/***High precision variant of scaleBand for index/locus scales for large*domains where 32bit uints are not sufficient to represent the domain.*/float scaleBandHp(uvec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);vec2 splitValue=vec2(float(value[0])*lowDivisor,float(value[1]));float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}`,XN=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
|
|
619
627
|
#if !defined(SAMPLE_FACET_UNIFORM) && !defined(SAMPLE_FACET_TEXTURE)
|
|
620
628
|
SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1.0);}
|
|
621
629
|
#elif defined(SAMPLE_FACET_UNIFORM)
|
|
@@ -623,30 +631,30 @@ SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1
|
|
|
623
631
|
#elif defined(SAMPLE_FACET_TEXTURE)
|
|
624
632
|
uniform sampler2D uSampleFacetTexture;SampleFacetPosition getSampleFacetPos(){vec4 texel=texelFetch(uSampleFacetTexture,ivec2(int(attr_facetIndex),0),0);return SampleFacetPosition(1.0-texel.r-texel.g,texel.g,1.0-texel.r-texel.g,texel.g);}
|
|
625
633
|
#endif
|
|
626
|
-
bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,
|
|
634
|
+
bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,ZN=`/**Based on concepts presented at:*https:*https:*/out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
|
|
627
635
|
#ifdef uniqueId_DEFINED
|
|
628
636
|
uint id=attr_uniqueId;vPickingColor=vec4(ivec4(id>>0,id>>8,id>>16,id>>24)&0xFF)/float(0xFF);
|
|
629
637
|
#else
|
|
630
638
|
vPickingColor=vec4(1.0);
|
|
631
639
|
#endif
|
|
632
|
-
return true;}return false;}`,
|
|
640
|
+
return true;}return false;}`,QN=`in highp vec4 vPickingColor;`,$N=Symbol(`cacheMap`);function eP(e,t,n){let r=iP(e).get(t);return r===void 0&&(r=n(t),iP(e).set(t,r)),r}function tP(e,t){iP(e).delete(t)}function nP(e,t){let n=iP(e);for(let e of n.keys())e.startsWith(t)&&n.delete(e);iP(e).delete(t)}function rP(e){e[$N]=new Map}function iP(e){return e[$N]||rP(e),e[$N]}function aP(...e){return new Proxy({},{get(t,n,r){for(let t of e){let e=t()[n];if(e!==void 0)return e}},has(t,n,r){for(let t of e)if(n in t())return!0;return!1}})}function oP(e){return P(e)||N(e)||St(e)}var sP=class extends Error{constructor(e,t){super(e),this.name=`ViewError`,this.view=t}};function cP(e){return Qe(e)&&!Array.isArray(e)}function lP(e){let t={};for(let[n,r]of Object.entries(e))t[n]=uP(r);return t}function uP(e){return Array.isArray(e)?e.map(uP):cP(e)?lP(e):e}function dP(e,t){for(let[n,r]of Object.entries(t)){if(r===void 0)continue;let t=e[n];cP(r)&&cP(t)?dP(t,r):e[n]=uP(r)}return e}function fP(e){let t={};for(let n of e)n&&dP(t,n);return t}function pP(e){return e?Array.isArray(e)?e:[e]:[]}function mP(e,t,n){let r=[t,...pP(n)],i=e.map(e=>e.mark),a=e.map(e=>e[t]);return fP([...i,...a,...e.flatMap(e=>r.map(t=>e.style?.[t]))])}var hP=`SAMPLE_FACET_UNIFORM`,gP=`SAMPLE_FACET_TEXTURE`,_P=`uSelectionTexture_`,vP=class{#e=[];constructor(e){this.unitView=e;let t=this;this.encoders=void 0,this.bufferInfo=void 0,this.bytesPerElement=new Map,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.viewUniformInfo=void 0,this.markUniformInfo=void 0,this.markUniformsAltered=!0,this.selectionTextureOps=[],this.rangeMap=new yP,this.defaultProperties={get clip(){return eP(t,`defaultClip`,()=>{for(let t of[`x`,`y`])if(e.getScaleResolution(t)?.isZoomable())return!0;return!1})},xOffset:0,yOffset:0,minBufferSize:0,...mP(this.unitView.getConfigScopes(),this.unitView.getMarkType(),typeof this.unitView.spec.mark==`object`?this.unitView.spec.mark.style:void 0)},this.properties=aP(typeof this.unitView.spec.mark==`object`?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}augmentDefaultProperties(e){Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors(e))}getCursorSpec(){return this.properties.cursor}getCursor(){let e=this.getCursorSpec();return z(e)?this.unitView.paramRuntime.evaluateAndGet(e.expr):e}watchCursor(e,t){let n=this.getCursorSpec();z(n)&&this.unitView.paramRuntime.watchExpression(n.expr,e,{scopeOwned:!1,registerDisposer:t})}get opaque(){return!1}get defaultHitTestMode(){return`intersects`}getAttributes(){throw Error(`Not implemented!`)}getSupportedChannels(){return[`sample`,`facetIndex`,`x`,`y`,`color`,`opacity`,`search`,`uniqueId`]}getDefaultEncoding(){let e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:sh}),e}fixEncoding(e){return e}setupExprRefsNeedingGraphicsUpdate(e){let t=this.getSupportedChannels(),n={};for(let r of e){let e=this.properties[r];if(e&&z(e)){let i=this.unitView.paramRuntime.watchExpression(e.expr,()=>{this.updateGraphicsData(),this.unitView.context.animator.requestRender()});t.includes(r)||Object.defineProperty(n,r,{get(){return i()}})}}let r=this.properties;this.properties=aP(()=>n,()=>r)}get encoding(){return eP(this,`encoding`,()=>{let e=this.getDefaultEncoding(),t=this.unitView.getEncoding(),n=e=>{let t=this.properties[e];return oP(t)||z(t)?{value:t}:void 0},r=Object.fromEntries(this.getSupportedChannels().map(e=>[e,n(e)]).filter(e=>Oh(e[1]))),i=this.fixEncoding({...e,...r,...t});for(let e of Object.keys(i))this.getSupportedChannels().includes(e)||delete i[e];return i.x&&(i.x.buildIndex??=this.properties.buildIndex??!0),i})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=Sh(this.unitView,this.encoding)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return gP;if(this.unitView.getLayoutAncestors().find(e=>`samples`in e.spec))return hP}createAndLinkShaders(e,t,n=[]){let r=this.getAttributes(),i=this.encoders,a=this.getSampleFacetMode();a&&n.push(`#define ${a}`);let o=`// view: `+this.unitView.getPathString(),s=[],c=new Set,l=MN(i),u=[],d=Object.values(i).flatMap(e=>e.branches??[]).map(e=>e.predicate).filter(e=>e.param),f=new Map;for(let e of d){let t=e.param,n=this.unitView.paramRuntime,r=n.findValue(t);if(!r)throw Error(`Cannot infer selection type as the parameter "${t}" has no value. Please ensure that the parameter is properly defined!`);let i=NN(`uniqueId`);if(ag(r)){if(!f.has(t)){f.set(t,`single`);let e=sN+gg(t);u.push(` // Selection parameter`),u.push(` uniform highp uint ${e};`),this.#e.push(()=>{this.registerMarkUniformValue(e,{expr:t},e=>e.uniqueId??0)}),s.push(`bool ${cN}${t}(bool empty) {\n return ${sN}${t} == ${i} || (empty && ${sN}${t} == 0u);\n}`)}}else if(og(r)){if(!f.has(t)){f.set(t,`multi`);let e=_P+gg(t);s.push(`// Selection texture\nuniform highp usampler2D ${e};`);let a=this.getContext().glHelper,o=a.selectionTextures;this.selectionTextureOps.push(()=>{let r=n.getValue(t),i=o.get(r);if(!i)throw Error(`Bug: no selection texture found for "${t}"!`);jj(this.programInfo,{[e]:i})});let c=_P+t;s.push(`bool ${cN}${t}(bool empty) {\n return hashContainsTexture(${c}, ${i}) || (empty && isEmptyHashTexture(${c}));\n}`),a.createSelectionTexture(r),n.watchExpression(t,()=>{let e=n.getValue(t);a.createSelectionTexture(e),this.getContext().animator.requestRender()})}}else if(ig(r)&&!f.has(t)){f.set(t,`interval`);let e=[],n=[];for(let i of Object.keys(r.intervals)){if(![`x`,`y`].includes(i))continue;let r=sN+gg(t)+`_${i}`,{attributeType:a}=TN(this.unitView.getScaleResolution(i).getScale(),i);u.push(` // Selection parameter`),u.push(` uniform highp ${a}[2] ${r};`),this.#e.push(()=>{this.registerMarkUniformValue(r,{expr:t},e=>e.intervals[i]??[1,0])});let o=e=>{for(let[t,n]of l.entries())if(t[1]&&n.includes(e))return NN(n);return NN(e)},s=o(i),c=r+`[0]`,d=r+`[1]`,f=Kh(i);if(this.encoding[f]){let t=o(f),n=this.defaultHitTestMode;if(n==`endpoints`)e.push(`((${c} <= ${s} && ${s} <= ${d}) || (${c} <= ${t} && ${t} <= ${d}))`);else if(n==`encloses`)e.push(`(${c} <= ${s} && ${t} <= ${d})`);else if(n==`intersects`)e.push(`(${c} <= ${t} && ${s} <= ${d})`);else throw new sP(`Unsupported hit test mode "${n}" for interval selection!`,this.unitView)}else e.push(`(${c} <= ${s} && ${s} <= ${d})`);n.push(`${c} > ${d}`)}s.push(`bool ${cN}${t}(bool empty) {\n return ${e.join(` && `)} || (empty && (${n.join(` || `)}));\n}`)}}let p=(e,t,n,r)=>{let i=t.channelDef;if(Oh(i))if(z(i.value)){let{uniformName:t,uniformGlsl:r,accessorGlsl:a,adjuster:o}=pN(e,n);s.push(a),u.push(r),this.#e.push(()=>{this.registerMarkUniformValue(t,i.value,o)})}else s.push(fN(e,n,i.value).accessorGlsl);else if(Ah(i)){let{uniformName:t,uniformGlsl:a,accessorGlsl:o}=hN(e,r,n);u.push(a),s.push(o);let{largeHp:c,discrete:l}=TN(r,e),d=l&&`domain`in r?e=>r.domain().indexOf(e):c?kN:e=>+e;this.#e.push(()=>{this.registerMarkUniformValue(t,i.datum,d)})}else if(kh(i)){let t=l.get([i.field,!0]),{attributeGlsl:a,accessorGlsl:o}=mN(e,r,n,t?.includes(e)?t:void 0);c.add(a),s.push(o)}else if(Fh(i)){let{attributeGlsl:t,accessorGlsl:i}=mN(e,r,n);c.add(t),s.push(i)}else throw new sP(`Unsupported channel definition: ${JSON.stringify(i)}`,this.unitView)};for(let[e,t]of Object.entries(i)){if(!r.includes(e))continue;let{branches:n,channelDef:i,scale:a}=t;for(let t=0;t<n.length;t++)p(e,n[t].accessor,t,a);if(a){let t=Mh(i),n=t&&t.resolutionChannel||e,r=Xh(n)?this.unitView.getScaleResolution(n):null,{glsl:o,domainUniform:c,domainUniformName:l,rangeUniform:d,rangeUniformName:f}=gN(e,a,i);s.push(o),u.push(c),u.push(d),d&&this.#e.push(()=>{let t=this.createMarkUniformSetter(f),n=()=>t(FN(a,e));r.addEventListener(`range`,n),n()}),c&&this.#e.push(()=>{let e=this.createMarkUniformSetter(l),t=()=>{let t=ym(a.type)?[0,a.domain().length]:a.domain();e(EN(a.type)?jN(t):t)};r.addEventListener(`domain`,t),t()})}s.push(_N(e,n))}let m=[...f.keys()].map(e=>`${cN}${e}(false)`);s.push(`bool isPointSelected() {
|
|
633
641
|
`+(this.encoders.uniqueId&&m.length>0?` return ${m.join(` || `)};`:` return false;`)+`
|
|
634
642
|
}`);let h=`precision highp float;
|
|
635
643
|
precision highp int;`,g=e=>e.replace(`#pragma markUniforms`,u.join(`
|
|
636
|
-
`));n=n.map(g),e=g(e),t=g(t);let _=[h,o,...n,
|
|
637
|
-
`),...s,VN,HN,e],v=[h,o,...n,zN,UN,t],y=this.gl;this.programStatus=PM(y,this.glHelper.compileShader(y.VERTEX_SHADER,_),this.glHelper.compileShader(y.FRAGMENT_SHADER,v))}finalizeGraphicsInitialization(){if(this.programInfo)return;if(!this.programStatus)throw Error(`No program status found! `+this.unitView.getPathString());let e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);let t=Error(`Cannot create shader program: `+e.message);throw t.view=this.unitView,t}this.programInfo=Ej(this.gl,this.programStatus.program),delete this.programStatus,this.viewUniformInfo=_j(this.gl,this.programInfo,`View`),this.markUniformInfo=_j(this.gl,this.programInfo,`Mark`),this.gl.useProgram(this.programInfo.program),Sj(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0,uZero:0});for(let e of this.#e)e();this.#e=void 0}createMarkUniformSetter(e){let t=this.markUniformInfo.setters[e];if(!t)throw Error(`Uniform "${e}" not found int the Mark block!`);return e=>{t(e),this.markUniformsAltered=!0,this.unitView.context.animator.requestRender()}}registerMarkUniformValue(e,t,n=e=>e){let r=this.createMarkUniformSetter(e),i=n=>{if(n==null)throw Error(`Trying to set null/undefined value for uniform: ${e}${B(t)?`Expr: ${t.expr}`:``}`);r(n)};if(B(t)){let e,r=()=>i(n(e(null)));e=this.unitView.paramRuntime.watchExpression(t.expr,r),r()}else i(n(t))}deleteGraphicsData(){let e=this.glHelper;if(!e){this.vertexArrayInfo=void 0,this.bufferInfo=void 0;return}let t=e.gl;if(this.vertexArrayInfo&&=(this.gl.bindVertexArray(null),t.deleteVertexArray(this.vertexArrayInfo.vertexArrayObject),void 0),this.bufferInfo){for(let e=0;e<8;e++)t.disableVertexAttribArray(e);Object.values(this.bufferInfo.attribs).forEach(e=>this.gl.deleteBuffer(e.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}dispose(){this.deleteGraphicsData()}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(let[t,n]of Object.entries(e.arrays))n.data&&OE(this.gl,this.bufferInfo.attribs[t],n.data,0);else{this.deleteGraphicsData(),this.bufferInfo=ME(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices;for(let[t,n]of Object.entries(e.arrays))this.bytesPerElement.set(t,n.data.BYTES_PER_ELEMENT)}}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null&&!this.unitView.paramRuntime.hasPointSelections())return!1;for(let e of this.unitView.getLayoutAncestors())if(!e.isPickingSupported())return!1;return!0}bindOrSetMarkUniformBlock(){this.markUniformsAltered?(yj(this.gl,this.programInfo,this.markUniformInfo),this.markUniformsAltered=!1):vj(this.gl,this.programInfo,this.markUniformInfo)}prepareRender(e){let t=this.glHelper,n=this.gl,r=[];r.push(()=>{this.vertexArrayInfo||=cM(this.gl,this.programInfo,this.bufferInfo),n.useProgram(this.programInfo.program)});for(let[e,n]of Object.entries(this.encoders)){let i=t.rangeTextures.get(n.scale);i&&r.push(()=>Sj(this.programInfo,{[ZM+e]:i}))}r.push(...this.selectionTextureOps),this.getSampleFacetMode()==`SAMPLE_FACET_TEXTURE`&&r.push(()=>{let e;for(let t of this.unitView.getLayoutAncestors())if(e=t.getSampleFacetTexture(),e)break;if(!e)throw Error(`No facet texture available. This is bug.`);Sj(this.programInfo,{uSampleFacetTexture:e})});let i=(e.picking??!1)&&this.isPickingParticipant();return r.push(()=>bj(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:i})),this.opaque||e.picking?r.push(()=>n.disable(n.BLEND)):r.push(()=>n.enable(n.BLEND)),r}prepareSampleFacetRendering(e){let t=e.sampleFacetRenderingOptions,n=this.programInfo.uniformSetters.uSampleFacet;if(t&&n){let e=t.pixelToUnit,r=t.locSize.location*e,i=t.locSize.size*e;if(r>1||r+i<0)return!1;this.gl.uniform4f(n.location,r,i,r,i)}return!0}render(e){}createRenderCallback(e,t){if(!this.bufferInfo)return()=>void 0;let n=this,r,i=this.unitView.getScaleResolution(`x`)?.getScale(),a=i&&_m(i.type),o=[`index`,`locus`].includes(i?.type)?-1:0,s=[0,0];r=t=>{if(a&&t.xIndex){let n=i.domain(),r=t.xIndex(n[0]+o,n[1],s),a=r[0],c=r[1]-a;c>0&&e(a,c)}else e(t.offset,t.count)};let c=this.rangeMap.get(void 0).count==0?t.facetId:void 0,l=this.rangeMap.get(c);return t.sampleFacetRenderingOptions?function(){l.count&&n.prepareSampleFacetRendering(t)&&r(l)}:function(){l.count&&r(l)}}setViewport(e,t,n,r){n=n.flatten();let i=this.gl,a=this.properties,o=.5,s=(a.xOffset??0)+o,c=(a.yOffset??0)+o,l,u=n;if(a.clip!==`never`&&(a.clip||r)){let a=0,o=0,d;if(r){if(u=n.intersect(r).flatten(),!u.isDefined())return!1;d=[n.width/u.width,n.height/u.height],o=Math.max(0,n.y2-r.y2),a=Math.min(0,n.x-r.x)}else d=[1,1];let f=[u.x,e.height-u.y2,u.width,u.height].map(e=>e*t),p=f.map(e=>Math.floor(e)),m=f[0]-p[0],h=f[1]-p[1];i.viewport(...p),i.scissor(...p),i.enable(i.SCISSOR_TEST),l={uViewOffset:[(s+a+m/t)/u.width,-(c+o-h/t)/u.height],uViewScale:d}}else{if(!n.isDefined())return!1;i.viewport(0,0,Math.round(e.width*t),Math.round(e.height*t)),i.disable(i.SCISSOR_TEST),l={uViewOffset:[(n.x+s)/e.width,(e.height-n.y-c-n.height)/e.height],uViewScale:[n.width/e.width,n.height/e.height]}}return bj(this.viewUniformInfo,{...l,uViewportSize:[n.width,n.height],uDevicePixelRatio:t}),yj(this.gl,this.programInfo,this.viewUniformInfo),!0}findDatumAt(e,t){}},uP=class extends mn{constructor(){super([],JSON.stringify)}get(e){let t=super.get(e);return t===void 0&&(t={offset:0,count:0,xIndex:void 0},super.set(e,t)),t}migrateEntries(e){for(let[t,n]of this.entries())e.has(t)||(n.offset=0,n.count=0,n.xIndex=void 0);for(let[t,n]of e.entries())Object.assign(this.get(t),n)}};function dP(e,t){let n=Gh(t),r=e[t]&&{...e[t]},i=e[n]&&{...e[n]};if(!(Dh(r)||Dh(i))){if(r){if(!Ah(e[t]))return;if(!i)if(r.type==`quantitative`)i={datum:0,domainInert:!0};else{i={...r};let e=(1-(r.band??1))/2;r.band=0+e,i.band=1-e}else if(r.type!=`quantitative`){let e=(1-(r.band||1))/2;r.band=e,i.band=-e}}else r={value:0},i={value:1};e[t]=r,e[n]=i}}function fP(e,t){let n=Gh(t),r=e[t],i=e[n];if(!r||!i||Dh(r)||Dh(i)||!Ah(r)||!Ah(i)||![`index`,`locus`].includes(r.type))return;let a=r.band,o=i.band,s=a??o??0;e[t]={...r,band:s},e[n]={...i,band:o??s}}function pP(e,t){let n=jh(e);n&&(n.resolutionChannel=t)}function mP(e,t){e.stroke||(t?e.stroke={value:null}:(e.stroke=structuredClone(e.color),pP(e.stroke,`color`))),Dh(e.stroke)&&e.stroke.value===null&&(e.strokeWidth={value:0}),e.strokeOpacity||(e.strokeOpacity=structuredClone(e.opacity),pP(e.strokeOpacity,`opacity`))}function hP(e,t){Dh(e.fill)&&e.fill.value===null?e.fillOpacity={value:0}:e.fill||(e.fill=structuredClone(e.color),pP(e.fill,`color`),!t&&!e.fillOpacity&&(e.fillOpacity={value:0})),e.fillOpacity||(t?(e.fillOpacity=structuredClone(e.opacity),pP(e.fillOpacity,`opacity`)):e.fillOpacity={value:0})}var gP=[`none`,`diagonal`,`antiDiagonal`,`cross`,`vertical`,`horizontal`,`grid`,`dots`,`rings`,`ringsLarge`],_P=class extends lP{constructor(e){super(e)}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`strokeWidth`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`strokeWidth`]}get opaque(){return GN(this,`opaque`,()=>!this.#e()&&!this.#t()&&!this.properties.shadowOpacity&&Dh(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return dP(e,`x`),dP(e,`y`),mP(e,this.properties.filled),hP(e,this.properties.filled),delete e.color,delete e.opacity,e}#e(){let e=this.properties;return e.cornerRadius||e.cornerRadiusBottomLeft||e.cornerRadiusBottomRight||e.cornerRadiusTopLeft||e.cornerRadiusTopRight}#t(){let e=this.encoding.strokeWidth;return!(Dh(e)&&!e.value)||`condition`in e}async initializeGraphics(){await super.initializeGraphics();let e=[];this.#e()&&e.push(`ROUNDED_CORNERS`),this.#t()&&e.push(`STROKED`),this.properties.shadowOpacity&&e.push(`SHADOW`),this.createAndLinkShaders(gM,_M,[vM,...e.map(e=>`#define `+e)])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uMinWidth`,e.minWidth),this.registerMarkUniformValue(`uMinHeight`,e.minHeight),this.registerMarkUniformValue(`uMinOpacity`,e.minOpacity),this.registerMarkUniformValue(`uCornerRadiusTopRight`,e.cornerRadiusTopRight??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusBottomRight`,e.cornerRadiusBottomRight??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusTopLeft`,e.cornerRadiusTopLeft??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusBottomLeft`,e.cornerRadiusBottomLeft??e.cornerRadius??0),this.registerMarkUniformValue(`uHatchPattern`,e.hatch,e=>Math.max(0,gP.indexOf(e??`none`))),this.registerMarkUniformValue(`uShadowBlur`,e.shadowBlur??0),this.registerMarkUniformValue(`uShadowOpacity`,e.shadowOpacity??0),this.registerMarkUniformValue(`uShadowOffsetX`,e.shadowOffsetX??0),this.registerMarkUniformValue(`uShadowOffsetY`,e.shadowOffsetY??0),this.registerMarkUniformValue(`uShadowColor`,e.shadowColor??`black`,WM)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new PN({encoders:this.encoders,attributes:this.getAttributes(),numItems:t});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>Tj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>{kj(t,this.vertexArrayInfo,t.TRIANGLE_STRIP,n,e)},e)}findDatumAt(e,t){e=Yl(e);let n=this.unitView.getCollector().facetBatches.get(e);if(!n)return;let r=this.encoders,i=r.x.scale.type;if(vm(i)){let e=wh(r.x);return e?n.find(n=>t==e(n)):void 0}else{let e=wh(r.x),i=wh(r.x2);return!e||!i?void 0:n.find(n=>t>=e(n)&&t<i(n))}}},vP=`flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}vec2 getDxDy(){
|
|
644
|
+
`));n=n.map(g),e=g(e),t=g(t);let _=[h,o,...n,JN,YN,[...c].join(`
|
|
645
|
+
`),...s,XN,ZN,e],v=[h,o,...n,JN,QN,t],y=this.gl;this.programStatus=UM(y,this.glHelper.compileShader(y.VERTEX_SHADER,_),this.glHelper.compileShader(y.FRAGMENT_SHADER,v))}finalizeGraphicsInitialization(){if(this.programInfo)return;if(!this.programStatus)throw Error(`No program status found! `+this.unitView.getPathString());let e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);let t=Error(`Cannot create shader program: `+e.message);throw t.view=this.unitView,t}this.programInfo=Fj(this.gl,this.programStatus.program),delete this.programStatus,this.viewUniformInfo=Ej(this.gl,this.programInfo,`View`),this.markUniformInfo=Ej(this.gl,this.programInfo,`Mark`),this.gl.useProgram(this.programInfo.program),jj(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0,uZero:0});for(let e of this.#e)e();this.#e=void 0}createMarkUniformSetter(e){let t=this.markUniformInfo.setters[e];if(!t)throw Error(`Uniform "${e}" not found int the Mark block!`);return e=>{t(e),this.markUniformsAltered=!0,this.unitView.context.animator.requestRender()}}registerMarkUniformValue(e,t,n=e=>e){let r=this.createMarkUniformSetter(e),i=n=>{if(n==null)throw Error(`Trying to set null/undefined value for uniform: ${e}${z(t)?`Expr: ${t.expr}`:``}`);r(n)};if(z(t)){let e,r=()=>i(n(e(null)));e=this.unitView.paramRuntime.watchExpression(t.expr,r),r()}else i(n(t))}deleteGraphicsData(){let e=this.glHelper;if(!e){this.vertexArrayInfo=void 0,this.bufferInfo=void 0;return}let t=e.gl;this.vertexArrayInfo&&=(this.gl.bindVertexArray(null),t.deleteVertexArray(this.vertexArrayInfo.vertexArrayObject),void 0),this.bufferInfo&&=(Object.values(this.bufferInfo.attribs).forEach(e=>this.gl.deleteBuffer(e.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),void 0)}dispose(){this.deleteGraphicsData()}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(let[t,n]of Object.entries(e.arrays))n.data&&RE(this.gl,this.bufferInfo.attribs[t],n.data,0);else{this.deleteGraphicsData(),this.bufferInfo=HE(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices;for(let[t,n]of Object.entries(e.arrays))this.bytesPerElement.set(t,n.data.BYTES_PER_ELEMENT)}}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null&&!this.unitView.paramRuntime.hasPointSelections())return!1;for(let e of this.unitView.getLayoutAncestors())if(!e.isPickingSupported())return!1;return!0}bindOrSetMarkUniformBlock(){this.markUniformsAltered?(Oj(this.gl,this.programInfo,this.markUniformInfo),this.markUniformsAltered=!1):Dj(this.gl,this.programInfo,this.markUniformInfo)}prepareRender(e){let t=this.glHelper,n=this.gl,r=[];r.push(()=>{this.vertexArrayInfo||=_M(this.gl,this.programInfo,this.bufferInfo),n.useProgram(this.programInfo.program)});for(let[e,n]of Object.entries(this.encoders)){let i=t.rangeTextures.get(n.scale);i&&r.push(()=>jj(this.programInfo,{[oN+e]:i}))}r.push(...this.selectionTextureOps),this.getSampleFacetMode()==`SAMPLE_FACET_TEXTURE`&&r.push(()=>{let e;for(let t of this.unitView.getLayoutAncestors())if(e=t.getSampleFacetTexture(),e)break;if(!e)throw Error(`No facet texture available. This is bug.`);jj(this.programInfo,{uSampleFacetTexture:e})});let i=(e.picking??!1)&&this.isPickingParticipant();return r.push(()=>kj(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:i})),this.opaque||e.picking?r.push(()=>n.disable(n.BLEND)):r.push(()=>n.enable(n.BLEND)),r}prepareSampleFacetRendering(e){let t=e.sampleFacetRenderingOptions,n=this.programInfo.uniformSetters.uSampleFacet;if(t&&n){let e=t.pixelToUnit,r=t.locSize.location*e,i=t.locSize.size*e;if(r>1||r+i<0)return!1;this.gl.uniform4f(n.location,r,i,r,i)}return!0}render(e){}createRenderCallback(e,t){if(!this.bufferInfo)return()=>void 0;let n=this,r,i=this.unitView.getScaleResolution(`x`)?.getScale(),a=i&&vm(i.type),o=[`index`,`locus`].includes(i?.type)?-1:0,s=[0,0];r=t=>{if(a&&t.xIndex){let n=i.domain(),r=t.xIndex(n[0]+o,n[1],s),a=r[0],c=r[1]-a;c>0&&e(a,c)}else e(t.offset,t.count)};let c=this.rangeMap.get(void 0).count==0?t.facetId:void 0,l=this.rangeMap.get(c);return t.sampleFacetRenderingOptions?function(){l.count&&n.prepareSampleFacetRendering(t)&&r(l)}:function(){l.count&&r(l)}}setViewport(e,t,n,r){n=n.flatten();let i=this.gl,a=this.properties,o=.5,s=(a.xOffset??0)+o,c=(a.yOffset??0)+o,l,u=n;if(a.clip!==`never`&&(a.clip||r)){let a=0,o=0,d;if(r){if(u=n.intersect(r).flatten(),!u.isDefined())return!1;d=[n.width/u.width,n.height/u.height],o=Math.max(0,n.y2-r.y2),a=Math.min(0,n.x-r.x)}else d=[1,1];let f=[u.x,e.height-u.y2,u.width,u.height].map(e=>e*t),p=f.map(e=>Math.floor(e)),m=f[0]-p[0],h=f[1]-p[1];i.viewport(...p),i.scissor(...p),i.enable(i.SCISSOR_TEST),l={uViewOffset:[(s+a+m/t)/u.width,-(c+o-h/t)/u.height],uViewScale:d}}else{if(!n.isDefined())return!1;i.viewport(0,0,Math.round(e.width*t),Math.round(e.height*t)),i.disable(i.SCISSOR_TEST),l={uViewOffset:[(n.x+s)/e.width,(e.height-n.y-c-n.height)/e.height],uViewScale:[n.width/e.width,n.height/e.height]}}return kj(this.viewUniformInfo,{...l,uViewportSize:[n.width,n.height],uDevicePixelRatio:t}),Oj(this.gl,this.programInfo,this.viewUniformInfo),!0}findDatumAt(e,t){}},yP=class extends hn{constructor(){super([],JSON.stringify)}get(e){let t=super.get(e);return t===void 0&&(t={offset:0,count:0,xIndex:void 0},super.set(e,t)),t}migrateEntries(e){for(let[t,n]of this.entries())e.has(t)||(n.offset=0,n.count=0,n.xIndex=void 0);for(let[t,n]of e.entries())Object.assign(this.get(t),n)}};function bP(e,t){let n=Kh(t),r=e[t]&&{...e[t]},i=e[n]&&{...e[n]};if(!(Oh(r)||Oh(i))){if(r){if(!jh(e[t]))return;if(!i)if(r.type==`quantitative`)i={datum:0,domainInert:!0};else{i={...r};let e=(1-(r.band??1))/2;r.band=0+e,i.band=1-e}else if(r.type!=`quantitative`){let e=(1-(r.band||1))/2;r.band=e,i.band=-e}}else r={value:0},i={value:1};e[t]=r,e[n]=i}}function xP(e,t){let n=Kh(t),r=e[t],i=e[n];if(!r||!i||Oh(r)||Oh(i)||!jh(r)||!jh(i)||![`index`,`locus`].includes(r.type))return;let a=r.band,o=i.band,s=a??o??0;e[t]={...r,band:s},e[n]={...i,band:o??s}}function SP(e,t){let n=Mh(e);n&&(n.resolutionChannel=t)}function CP(e,t){e.stroke||(t?e.stroke={value:null}:(e.stroke=structuredClone(e.color),SP(e.stroke,`color`))),Oh(e.stroke)&&e.stroke.value===null&&(e.strokeWidth={value:0}),e.strokeOpacity||(e.strokeOpacity=structuredClone(e.opacity),SP(e.strokeOpacity,`opacity`))}function wP(e,t){Oh(e.fill)&&e.fill.value===null?e.fillOpacity={value:0}:e.fill||(e.fill=structuredClone(e.color),SP(e.fill,`color`),!t&&!e.fillOpacity&&(e.fillOpacity={value:0})),e.fillOpacity||(t?(e.fillOpacity=structuredClone(e.opacity),SP(e.fillOpacity,`opacity`)):e.fillOpacity={value:0})}var TP=[`none`,`diagonal`,`antiDiagonal`,`cross`,`vertical`,`horizontal`,`grid`,`dots`,`rings`,`ringsLarge`],EP=class extends vP{constructor(e){super(e)}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`strokeWidth`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`strokeWidth`]}get opaque(){return eP(this,`opaque`,()=>!this.#e()&&!this.#t()&&!this.properties.shadowOpacity&&Oh(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return bP(e,`x`),bP(e,`y`),CP(e,this.properties.filled),wP(e,this.properties.filled),delete e.color,delete e.opacity,e}#e(){let e=this.properties;return e.cornerRadius||e.cornerRadiusBottomLeft||e.cornerRadiusBottomRight||e.cornerRadiusTopLeft||e.cornerRadiusTopRight}#t(){let e=this.encoding.strokeWidth;return!(Oh(e)&&!e.value)||`condition`in e}async initializeGraphics(){await super.initializeGraphics();let e=[];this.#e()&&e.push(`ROUNDED_CORNERS`),this.#t()&&e.push(`STROKED`),this.properties.shadowOpacity&&e.push(`SHADOW`),this.createAndLinkShaders(TM,EM,[DM,...e.map(e=>`#define `+e)])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uMinWidth`,e.minWidth),this.registerMarkUniformValue(`uMinHeight`,e.minHeight),this.registerMarkUniformValue(`uMinOpacity`,e.minOpacity),this.registerMarkUniformValue(`uCornerRadiusTopRight`,e.cornerRadiusTopRight??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusBottomRight`,e.cornerRadiusBottomRight??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusTopLeft`,e.cornerRadiusTopLeft??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusBottomLeft`,e.cornerRadiusBottomLeft??e.cornerRadius??0),this.registerMarkUniformValue(`uHatchPattern`,e.hatch,e=>Math.max(0,TP.indexOf(e??`none`))),this.registerMarkUniformValue(`uShadowBlur`,e.shadowBlur??0),this.registerMarkUniformValue(`uShadowOpacity`,e.shadowOpacity??0),this.registerMarkUniformValue(`uShadowOffsetX`,e.shadowOffsetX??0),this.registerMarkUniformValue(`uShadowOffsetY`,e.shadowOffsetY??0),this.registerMarkUniformValue(`uShadowColor`,e.shadowColor??`black`,$M)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new UN({encoders:this.encoders,attributes:this.getAttributes(),numItems:t});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return 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.TRIANGLE_STRIP,n,e)},e)}findDatumAt(e,t){e=Xl(e);let n=this.unitView.getCollector().facetBatches.get(e);if(!n)return;let r=this.encoders,i=r.x.scale.type;if(ym(i)){let e=Th(r.x);return e?n.find(n=>t==e(n)):void 0}else{let e=Th(r.x),i=Th(r.x2);return!e||!i?void 0:n.find(n=>t>=e(n)&&t<i(n))}}},DP=`flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}vec2 getDxDy(){
|
|
638
646
|
#if defined(dx_DEFINED) || defined(dy_DEFINED)
|
|
639
647
|
return vec2(getScaled_dx(),getScaled_dy())/uViewportSize;
|
|
640
648
|
#else
|
|
641
649
|
return vec2(0.0,0.0);
|
|
642
650
|
#endif
|
|
643
|
-
}void main(void){float shapeAngle=0.0;float semanticThresholdFactor=isPointSelected()? 1.0: computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor;float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;if(vShape>TICK_UP&&vShape<=TICK_LEFT){shapeAngle=(vShape-TICK_UP)*90.0;vShape=TICK_UP;}else if(vShape>TRIANGLE_UP&&vShape<=TRIANGLE_LEFT){shapeAngle=(vShape-TRIANGLE_UP)*90.0;vShape=TRIANGLE_UP;}float angleInDegrees=getScaled_angle();float angle=-(shapeAngle+angleInDegrees)*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=max((diameter+padding),uPickingEnabled ? uMinPickingSize : 0.0)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,
|
|
651
|
+
}void main(void){float shapeAngle=0.0;float semanticThresholdFactor=isPointSelected()? 1.0: computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor;float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;if(vShape>TICK_UP&&vShape<=TICK_LEFT){shapeAngle=(vShape-TICK_UP)*90.0;vShape=TICK_UP;}else if(vShape>TRIANGLE_UP&&vShape<=TRIANGLE_LEFT){shapeAngle=(vShape-TRIANGLE_UP)*90.0;vShape=TRIANGLE_UP;}float angleInDegrees=getScaled_angle();float angle=-(shapeAngle+angleInDegrees)*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=max((diameter+padding),uPickingEnabled ? uMinPickingSize : 0.0)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,OP=`const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);flat in float vRadius;flat in float vRadiusWithPadding;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in lowp float vShape;flat in lowp float vHalfStrokeWidth;flat in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TICK_UP=8.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float tickUp(vec2 p,float r){float halfR=r*0.5;p.y+=halfR;p=abs(p);return max(p.x-r*0.15,p.y-halfR);}float equilateralTriangle(vec2 p,float r){p.y=-p.y;float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r);}else if(vShape==TICK_UP){d=tickUp(p,r);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vec4(0.0),vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}`,kP=`layout(std140)uniform Mark{/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform float uMinPickingSize;uniform mediump float uScaleFactor;uniform mediump float uZoomLevel;uniform highp float uSemanticThreshold;uniform mediump float uGradientStrength;
|
|
644
652
|
#pragma markUniforms
|
|
645
|
-
};`,
|
|
653
|
+
};`,AP=class extends oh{constructor(e){super(e),this.params=e,this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(let e of this.reservoir)this._propagate(e);super.complete()}};function jP(e,t,n){let r=new AP({type:`sample`,size:e});for(let e of t)r.handle(n(e));return r.complete(),r.reservoir}var MP={},NP=class extends vP{#e=()=>0;constructor(e){super(e);let t=this.properties.semanticZoomFraction;t!=null&&(z(t)?this.#e=this.unitView.paramRuntime.watchExpression(t.expr,()=>this.getContext().animator.requestRender()):this.#e=()=>t),`geometricZoomBound`in this.properties&&console.warn(`geometricZoomBound is deprecated. Use something like the following instead: "size": { "expr": "min(0.5 * pow(zoomLevel, 2), 200)" }.`)}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`y`,`size`,`semanticScore`,`shape`,`strokeWidth`,`dx`,`dy`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`angle`]}getSupportedChannels(){return[...super.getSupportedChannels(),`size`,`semanticScore`,`shape`,`strokeWidth`,`dx`,`dy`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`angle`]}getDefaultEncoding(){return{...super.getDefaultEncoding(),...MP}}fixEncoding(e){return CP(e,this.properties.filled),wP(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();let e=this.encoders.semanticScore?Th(this.encoders.semanticScore)?.asNumberAccessor():void 0;e&&(this.sampledSemanticScores=Float32Array.from(jP(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((e,t)=>e-t))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(DP,OP,[kP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uInwardStroke`,e.inwardStroke,e=>!!e),this.registerMarkUniformValue(`uGradientStrength`,e.fillGradientStrength),this.registerMarkUniformValue(`uMinPickingSize`,e.minPickingSize)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new GN({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(t,this.properties.minBufferSize||0)});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}#t(){let e=2**(this.properties.geometricZoomBound||0);return Math.min(1,this.unitView.getZoomLevel()/e)**(1/3)}getSemanticThreshold(){if(this.sampledSemanticScores){let e=Math.max(0,1-this.#e()*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{let t=this.sampledSemanticScores;return Rn(t,e)}}else return-1}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>{kj(this.markUniformInfo,{uScaleFactor:this.#t(),uSemanticThreshold:this.getSemanticThreshold()}),this.markUniformsAltered=!0}),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)=>{n&&Rj(t,this.vertexArrayInfo,t.POINTS,n,e)},e)}},PP=`const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}`,FP=`const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;flat in vec4 vColor;flat in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}`,IP=`layout(std140)uniform Mark{uniform mediump float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;uniform mediump float uStrokeDashOffset;
|
|
646
654
|
#pragma markUniforms
|
|
647
|
-
};`,
|
|
655
|
+
};`,LP=`horizontal`,RP=`vertical`,zP=class extends vP{constructor(e){super(e),this.dashTextureSize=0}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`size`,`color`,`opacity`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`size`]}fixEncoding(e){if(this.getType()==`tick`)return this.fixTickEncoding(e);if(!(e.x&&e.y&&e.x2&&e.y2))if(e.x&&e.x2&&!e.y)e.y={value:.5},e.y2=e.y;else if(e.y&&e.y2&&!e.x)e.x={value:.5},e.x2=e.x;else if(e.x&&!e.y)e.y={value:0},e.y2={value:1},e.x2=e.x;else if(e.y&&!e.x)e.x={value:0},e.x2={value:1},e.y2=e.y;else if(e.x&&e.y&&e.y2)e.x2=e.x;else if(e.y&&e.x&&e.x2)e.y2=e.y;else if(e.y&&e.x)if(!e.x2&&jh(e.y)&&e.y.type==`quantitative`)e.x2=e.x,e.y2={datum:0};else if(!e.y2&&jh(e.x)&&e.x.type==`quantitative`)e.y2=e.y,e.x2={datum:0};else throw Error(`A bug!`);else throw Error(`At a minimum, either the x or y channel must be defined in the rule mark's encoding: `+JSON.stringify(e));return e}fixTickEncoding(e){let t=this.properties;e.x??={value:.5},e.y??={value:.5},e.size={value:t.thickness};let n=t.orient??VP(e);if(!n)throw Error(`Cannot infer tick orientation from the encoding. Specify the tick mark's orient explicitly.`);return HP(e,n),e}async initializeGraphics(){await super.initializeGraphics();let e=this.gl,t=BP(this.properties.strokeDash);this.dashTexture=jk(e,{level:0,mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:t,height:1}),this.dashTextureSize=t.length,this.createAndLinkShaders(PP,FP,[IP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uMinLength`,e.minLength),this.registerMarkUniformValue(`uStrokeCap`,e.strokeCap??`butt`,e=>[`butt`,`square`,`round`].indexOf(e)),kj(this.markUniformInfo,{uDashTextureSize:+this.dashTextureSize}),this.markUniformsAltered=!0}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new WN({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(t,this.properties.minBufferSize||0)});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>jj(this.programInfo,{uDashTexture:this.dashTexture})),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.TRIANGLE_STRIP,n,e),e)}};function BP(e){if(!e)return new Uint8Array;if(e.length==0||e.length%2||e.findIndex(e=>Math.round(e)!=e||e<1||e>1e3)>=0)throw Error(`Invalid stroke dash pattern: `+JSON.stringify(e));let t=e.reduce((e,t)=>e+t),n=new Uint8Array(t),r=!0,i=0;for(let t of e){for(;t;)n[i++]=r&&255||0,t--;r=!r}return n}function VP(e){if(!e.y)return RP;if(!e.x)return LP;let t=UP(e.x),n=UP(e.y);if(!t&&n)return RP;if(t&&!n)return LP}function HP(e,t){if(t==RP)if(e.x2=e.x,UP(e.y)){let[t,n]=GP(e.y);e.y=t,e.y2=n}else e.y={value:0},e.y2={value:1};else if(e.y2=e.y,UP(e.x)){let[t,n]=GP(e.x);e.x=t,e.x2=n}else e.x={value:0},e.x2={value:1}}function UP(e){return jh(e)&&(e.type==`ordinal`||e.type==`nominal`)}function WP(e,t){return{...e,band:t}}function GP(e){let t=(1-(e.band??1))/2;return[WP(e,t),WP(e,1-t)]}var KP=`flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;flat out float vGamma;const int SHAPE_ARC=0;const int SHAPE_DOME=1;const int SHAPE_DIAGONAL=2;const int SHAPE_LINE=3;const int ORIENT_VERTICAL=0;const int ORIENT_HORIZONTAL=1;float distanceFromLine(vec2 pointOnLine1,vec2 pointOnLine2,vec2 point){vec2 a=point-pointOnLine1;vec2 b=pointOnLine2-pointOnLine1;vec2 proj=dot(a,b)/dot(b,b)*b;return length(a-proj);}bool isInsideViewport(vec2 point,float marginFactor){vec2 margin=uViewportSize*vec2(marginFactor);return point.x>=-margin.x&&point.x<=uViewportSize.x+margin.x&&point.y>=-margin.y&&point.y<=uViewportSize.y+margin.y;}float inverseSmoothstep(float t){t=clamp(t,0.0,1.0);return 0.5-sin(asin(1.0-2.0*t)/3.0);}/***Remaps the parameter t to concentrate vertices to the part that is visible in the viewport.*This keeps the tightly bent endpoints smooth even when zooming in very close.*/float remapVisibleChordParameter(float stripT,float chordStart,float chordEnd,float viewportLength){float chordMin=min(chordStart,chordEnd);float chordMax=max(chordStart,chordEnd);float chordSpan=chordMax-chordMin;if(chordSpan<=0.0){return 0.0;}float visibleChordMin=max(chordMin,0.0);float visibleChordMax=min(chordMax,viewportLength);if(visibleChordMax<=visibleChordMin){return stripT;}float visibleTMin=inverseSmoothstep((visibleChordMin-chordMin)/chordSpan);float visibleTMax=inverseSmoothstep((visibleChordMax-chordMin)/chordSpan);float visibleTSpan=visibleTMax-visibleTMin;float offscreenTSpan=visibleTMin+(1.0-visibleTMax);if(offscreenTSpan<=0.0){return stripT;}float visibleShare=clamp(0.75+(1.0-visibleTSpan)*0.2,0.75,0.95);float offscreenShare=1.0-visibleShare;float leftShare=offscreenShare*visibleTMin/offscreenTSpan;float rightShare=offscreenShare*(1.0-visibleTMax)/offscreenTSpan;if(stripT<=leftShare){return leftShare>0.0 ? mix(0.0,visibleTMin,stripT/leftShare): visibleTMin;}float visibleStart=leftShare;float visibleEnd=visibleStart+visibleShare;if(stripT<=visibleEnd){return visibleShare>0.0? mix(visibleTMin,visibleTMax,(stripT-visibleStart)/visibleShare): visibleTMin;}return rightShare>0.0? mix(visibleTMax,1.0,(stripT-visibleEnd)/rightShare): visibleTMax;}void clampChordToViewport(inout vec2 p1,inout vec2 p4,inout float chordLength){if(chordLength>uMaxChordLength){vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);if(isInsideViewport(p1,2.0)){chordLength=uMaxChordLength;p4=p1+unitChordVector*uMaxChordLength;}else if(isInsideViewport(p4,2.0)){chordLength=uMaxChordLength;p1=p4-unitChordVector*uMaxChordLength;}}}void clampDomeApex(inout vec2 p1,inout vec2 p4,int orient){if(orient==ORIENT_VERTICAL){if(p4.x>0.0){p1.x=max(p1.x,-p4.x);}if(p1.x<uViewportSize.x){p4.x=min(p4.x,2.0*uViewportSize.x-p1.x);}}else{if(p4.y>0.0){p1.y=max(p1.y,-p4.y);}if(p1.y<uViewportSize.y){p4.y=min(p4.y,2.0*uViewportSize.y-p1.y);}}}void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 p1,p2,p3,p4;vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()))*uViewportSize;vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()))*uViewportSize;if(uShape<=SHAPE_DOME){if(uShape==SHAPE_DOME){vec2 height=vec2(0.0);if(uOrient==ORIENT_VERTICAL){p1=vec2(min(a.x,b.x),b.y);p4=vec2(max(a.x,b.x),b.y);height=vec2(0.0,a.y-b.y);float chordLength=length(p4-p1);clampChordToViewport(p1,p4,chordLength);if(uClampApex){clampDomeApex(p1,p4,ORIENT_VERTICAL);}}else{p1=vec2(b.x,min(a.y,b.y));p4=vec2(b.x,max(a.y,b.y));height=vec2(a.x-b.x,0.0);float chordLength=length(p4-p1);clampChordToViewport(p1,p4,chordLength);if(uClampApex){clampDomeApex(p1,p4,ORIENT_HORIZONTAL);}}vec2 controlOffset=height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}if(uShape==SHAPE_ARC){p1=a;p4=b;vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float chordLength=length(chordVector);clampChordToViewport(p1,p4,chordLength);float height=max(chordLength/2.0*uArcHeightFactor,uMinArcHeight);vec2 controlOffset=chordNormal*height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}}else if(uShape==SHAPE_DIAGONAL){if(uOrient==ORIENT_VERTICAL){p1=a;p2=vec2(a.x,(a.y+b.y)/2.0);p3=vec2(b.x,(a.y+b.y)/2.0);p4=b;}else{p1=a;p2=vec2((a.x+b.x)/2.0,a.y);p3=vec2((a.x+b.x)/2.0,b.y);p4=b;}}else if(uShape==SHAPE_LINE){p1=a;p2=(a+b)/2.0;p3=p2;p4=b;}vec2 strip=vec2(float(gl_VertexID/2)/float(uSegmentBreaks),float(gl_VertexID % 2)-0.5);float t=strip.x;if(uShape==SHAPE_DOME){if(uOrient==ORIENT_VERTICAL){t=remapVisibleChordParameter(strip.x,p1.x,p4.x,uViewportSize.x);}else{t=remapVisibleChordParameter(strip.x,p1.y,p4.y,uViewportSize.y);}}else if(uShape==SHAPE_ARC){if(a.y==b.y){t=remapVisibleChordParameter(strip.x,p1.x,p4.x,uViewportSize.x);}else if(a.x==b.x){t=remapVisibleChordParameter(strip.x,p1.y,p4.y,uViewportSize.y);}}vec2 p;vec2 tangent;vec2 q1=mix(p1,p2,t);vec2 q2=mix(p2,p3,t);vec2 q3=mix(p3,p4,t);vec2 r1=mix(q1,q2,t);vec2 r2=mix(q2,q3,t);p=mix(r1,r2,t);tangent=3.0*(r2-r1);tangent=normalize(tangent);vec2 normal=vec2(-tangent.y,tangent.x);float size=getScaled_size();if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}float paddedSize=uPickingEnabled? max(size,uMinPickingSize): size+pixelSize;vNormalLengthInPixels=strip.y*paddedSize;if(uShape==SHAPE_ARC&&uArcFadingDistance[0]>0.0&&uArcFadingDistance[1]>0.0&&(!uNoFadingOnPointSelection||!isPointSelected())){float d=distanceFromLine(p1,p4,p);float distanceOpacity=smoothstep(uArcFadingDistance[1],uArcFadingDistance[0],d);opacity*=distanceOpacity;if(distanceOpacity<=0.0){vNormalLengthInPixels=0.0;}}p+=normal*vNormalLengthInPixels;gl_Position=pixelsToNdc(p);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vSize=paddedSize;setupPicking();}`,qP=`flat in vec4 vColor;flat in float vSize;in float vNormalLengthInPixels;flat in float vGamma;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);opacity=pow(opacity,vGamma);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}`,JP=`layout(std140)uniform Mark{uniform float uArcHeightFactor;uniform float uMinArcHeight;uniform float uMinPickingSize;uniform int uShape;uniform int uOrient;uniform bool uClampApex;uniform float uMaxChordLength;uniform vec2 uArcFadingDistance;uniform bool uNoFadingOnPointSelection;uniform int uSegmentBreaks;
|
|
648
656
|
#pragma markUniforms
|
|
649
|
-
};`,
|
|
657
|
+
};`,YP=[`arc`,`dome`,`diagonal`,`line`],XP=[`vertical`,`horizontal`],ZP=class extends vP{constructor(e){super(e),this._baseInstanceExt=void 0}get defaultHitTestMode(){return`endpoints`}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`size`,`color`,`opacity`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`size`]}fixEncoding(e){return e.x2||(jh(e.x)?e.x2={datum:0}:e.x2=e.x),e.y2||(jh(e.y)?e.y2={datum:0}:e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this._baseInstanceExt=this.gl.getExtension(`WEBGL_draw_instanced_base_vertex_base_instance`),this.createAndLinkShaders(KP,qP,[JP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uArcFadingDistance`,e.arcFadingDistance,e=>e||[0,0]),this.registerMarkUniformValue(`uArcHeightFactor`,e.arcHeightFactor),this.registerMarkUniformValue(`uMinArcHeight`,e.minArcHeight),this.registerMarkUniformValue(`uMinPickingSize`,e.minPickingSize),this.registerMarkUniformValue(`uShape`,e.linkShape,e=>YP.indexOf(e)),this.registerMarkUniformValue(`uOrient`,e.orient,e=>XP.indexOf(e)),this.registerMarkUniformValue(`uClampApex`,e.clampApex,e=>!!e),this.registerMarkUniformValue(`uMaxChordLength`,e.maxChordLength),this.registerMarkUniformValue(`uSegmentBreaks`,e.segments,e=>e),this.registerMarkUniformValue(`uNoFadingOnPointSelection`,e.noFadingOnPointSelection,e=>!!e)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new KN({encoders:this.encoders,attributes:this.getAttributes(),numItems:t});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.arrays=Object.fromEntries(Object.entries(r.arrays).map(([e,t])=>[e,{...t,data:void 0}])),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),this._baseInstanceExt?t.push(()=>Pj(this.gl,this.programInfo,this.vertexArrayInfo)):t.push(()=>this.gl.bindVertexArray(null)),t}render(e){let t=this.gl,n=()=>(this.markUniformInfo.uniforms.uSegmentBreaks[0]+1)*2;return this._baseInstanceExt?this.createRenderCallback((e,r)=>{this._baseInstanceExt.drawArraysInstancedBaseInstanceWEBGL(t.TRIANGLE_STRIP,0,n(),r,e)},e):this.createRenderCallback((e,r)=>{for(let t of Object.entries(this.bufferInfo.attribs)){let[n,r]=t;r.buffer&&r.numComponents&&r.divisor&&(r.offset=e*this.arrays[n].numComponents*this.bytesPerElement.get(n))}Pj(t,this.programInfo,this.bufferInfo),t.drawArraysInstanced(t.TRIANGLE_STRIP,0,n(),r)},e)}},QP=`in mediump vec2 vertexCoord;in lowp vec2 textureCoord;in float width;out vec2 vTexCoord;out float vEdgeFadeOpacity;flat out vec4 vColor;flat out float vSlope;flat out float vGamma;struct RangeResult{float pos;float scale;};float minValue(vec4 v){return min(min(v.x,v.y),min(v.z,v.w));}float maxValue(vec4 v){return max(max(v.x,v.y),max(v.z,v.w));}/***All measures are in[0,1]*/RangeResult positionInsideRange(float a,float b,float width,float padding,int align,bool flush){float span=b-a;float paddedWidth=width+2.0*padding;if(a>1.0||b<0.0){return RangeResult(0.0,0.0);}float extra=max(0.0,span-paddedWidth);float pos;if(align==0){float centre=a+b;if(flush){float leftOver=max(0.0,paddedWidth-centre);centre+=min(leftOver,extra);float rightOver=max(0.0,paddedWidth+centre-2.0);centre-=min(rightOver,extra);}pos=centre/2.0;}else if(align<0){float edge=a;if(flush){float over=max(0.0,-edge);edge+=min(over,extra);}pos=edge+padding;}else{float edge=b;if(flush){float over=max(0.0,edge-1.0);edge-=min(over,extra);}pos=edge-padding;}float scale=clamp((span-padding)/paddedWidth,0.0,1.0);return RangeResult(pos,scale);}vec2 calculateRotatedDimensions(float width,mat2 rotationMatrix){vec2 a=abs(rotationMatrix*vec2(width/2.0,0.5));vec2 b=abs(rotationMatrix*vec2(width/2.0,-0.5));return vec2(max(a.x,b.x),max(a.y,b.y))*2.0;}ivec2 fixAlignForAngle(ivec2 align,float angleInDegrees){float a=mod(angleInDegrees+45.0,360.0);int x=align.x;int y=-align.y;if(a<90.0){return ivec2(x,y);}else if(a<180.0){return ivec2(y,-x);}else if(a<270.0){return ivec2(-x,y);}else{return ivec2(-y,x);}}void main(void){float opacity=getScaled_opacity()*uViewOpacity;vec2 size=vec2(getScaled_size());float x=getScaled_x();float y=getScaled_y();float scale=1.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);mat2 rotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);vec2 flushSize=calculateRotatedDimensions(width,rotationMatrix);
|
|
650
658
|
#if defined(x2_DEFINED) || defined(y2_DEFINED)
|
|
651
659
|
ivec2 align=fixAlignForAngle(uAlign,angleInDegrees);
|
|
652
660
|
#else
|
|
@@ -659,21 +667,21 @@ vec2 pos=applySampleFacet(vec2(x,y));
|
|
|
659
667
|
#ifdef y2_DEFINED
|
|
660
668
|
float y2=getScaled_y2();vec2 pos2=applySampleFacet(vec2(x,y2));if(uLogoLetter){size.y=(pos2.y-pos.y)*uViewportSize.y;pos.y+=(pos2.y-pos.y)/2.0;}else{RangeResult result=positionInsideRange(min(pos.y,pos2.y),max(pos.y,pos2.y),size.y*scale*flushSize.y/uViewportSize.y,uPaddingY/uViewportSize.y,align.y,uFlushY);pos.y=result.pos;scale*=result.scale;}
|
|
661
669
|
#endif
|
|
662
|
-
if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator*uDevicePixelRatio);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}
|
|
670
|
+
if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator*uDevicePixelRatio);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,$P=`uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;flat in vec4 vColor;flat in float vSlope;flat in float vGamma;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}float getDist(vec2 uv){vec3 c=texture(uTexture,uv).rgb;return 1.0-median(c.r,c.g,c.b);}/***Calculates the super-sampled distance to the edge.*This is used to avoid aliasing when rendering small text,*as mip-mapping cannot be used here.*The distance is averaged over a grid of n x n samples.*/float getSuperDist(vec2 uv){vec2 dx=dFdx(uv);vec2 dy=dFdy(uv);float n=2.0;float sum=0.0;for(float x=0.5;x<n;x++){for(float y=0.5;y<n;y++){sum+=getDist(uv+x/n*dx+y/n*dy);}}return sum/(n*n);}void main(){float sigDist=getSuperDist(vTexCoord);float slope=vSlope;if(uLogoLetter){slope=0.7/length(vec2(dFdy(sigDist),dFdx(sigDist)));}float opa=clamp((sigDist-0.5)*slope+0.5,0.0,1.0);opa*=clamp(vEdgeFadeOpacity,0.0,1.0);opa=pow(opa,vGamma);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}`,eF=`layout(std140)uniform Mark{uniform mediump float uSdfNumerator;uniform mediump vec2 uD;uniform mediump vec4 uViewportEdgeFadeWidth;uniform mediump vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;uniform lowp ivec2 uAlign;uniform mediump float uPaddingX;uniform bool uFlushX;uniform mediump float uPaddingY;uniform bool uFlushY;
|
|
663
671
|
#pragma markUniforms
|
|
664
|
-
};`,KP={left:-1,center:0,right:1},qP={top:-1,middle:0,bottom:1,alphabetic:1,baseline:1},JP=class extends lP{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 Lh)this.properties.fitToBand?dP(e,t):fP(e,t);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(UP,WP,[GP])}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),bj(this.markUniformInfo,{uAlign:[KP[e.align],qP[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?or(n.text.format):e=>e;for(let e of t){let t=a(r(e)),n=F(t)?t:t===null?``:``+t;i+=n&&n.length||0}let o=new RN({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(()=>{Sj(this.programInfo,{uTexture:this.font.texture})}),t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>Tj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>kj(t,this.vertexArrayInfo,t.TRIANGLES,n,e),e)}};function YP(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+=tF(t.px)+(eF(t)?0:n),s+=tF(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&&eF(e[0]))return[{location:p,size:0}];for(let t=0;t<e.length;t++){let r=e[t];if(eF(r))u.push(r);else{f(d.length>0);let e=tF(r.px)+(s?tF(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 XP(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 ZP=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)}},QP=Object.freeze({px:0,grow:0}),$P=new ZP(QP,QP);function eF(e){return!e.px&&!e.grow}function tF(e){return e||0}function nF(e){return e&&(P(e.px)||P(e.grow))}function rF(e){if(eR(e))throw Error(`parseSizeDef does not accept step-based sizes.`);if(nF(e))return e;if(P(e))return{px:e,grow:0};if(e===`container`||!e)return{px:0,grow:1};throw Error(`Invalid sizeDef: ${e}`)}var iF=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):aF}static createFromRecord(t){return new e(t.top,t.right,t.bottom,t.left)}static zero(){return aF}static createUniformPadding(t){return new e(t,t,t,t)}},aF=iF.createUniformPadding(0);Object.freeze(aF);var oF=/^([A-Za-z]+:)?\/\//;function sF(e,t){if(t&&oF.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 lF(n)+t}function cF(e,t,n=uF()){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 sF(r,t)}function lF(e){let t=e.replace(/[^/]*$/,``);return t===``?void 0:t.endsWith(`://`)?e+`/`:t}function uF(){if(typeof document<`u`&&document.baseURI)return document.baseURI;if(typeof window<`u`&&window.location?.href)return window.location.href}var dF=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}},fF=Symbol(`runtimeNode`),pF=1e6;function mF(e){return e?(t,n)=>{e.addDisposer(t,n)}:()=>void 0}function hF(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,fF,{enumerable:!1,configurable:!1,writable:!1,value:e}),t?Object.assign(n,{set(e){t(e)}}):n}function gF(e){let t=e[fF];if(!t)throw Error(`ParamRef is not bound to this graph runtime. Expected runtime-created ref.`);return t}function _F(e){return typeof e.rank==`number`?e.rank:gF(e).rank}function vF(e){for(let t of e)t()}var yF=class{#e=1;#t=1;#n=0;#r=!1;#i=!1;#a=new Set;#o=new Set;#s=new dF;#c=new dF;#l=new Set;#u;constructor(e={}){this.#u=mF(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()}),hF(s,e=>{if(s.disposed)throw Error(`Cannot set disposed parameter "`+t+`" (`+a+`).`);e!==s.value&&(s.value=e,o&&(vF(s.listeners),this.#m()))})}computed(e,t,n,r){let i=n.reduce((e,t)=>Math.max(e,_F(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))}),hF(a)}effect(e,t,n){let r=t.reduce((e,t)=>Math.max(e,_F(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,vF(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%pF;return this.#t+=1,e*pF+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()}}},bF=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)}}},xF=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){hg(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){hg(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}}},SF=`RawCode`,CF=`Literal`,wF=`Property`,TF=`Identifier`,EF=`ArrayExpression`,DF=`BinaryExpression`,OF=`CallExpression`,kF=`ConditionalExpression`,AF=`LogicalExpression`,jF=`MemberExpression`,MF=`ObjectExpression`,NF=`UnaryExpression`;function PF(e){this.type=e}PF.prototype.visit=function(e){let t,n,r;if(e(this))return 1;for(t=FF(this),n=0,r=t.length;n<r;++n)if(t[n].visit(e))return 1};function FF(e){switch(e.type){case EF:return e.elements;case DF:case AF:return[e.left,e.right];case OF:return[e.callee].concat(e.arguments);case kF:return[e.test,e.consequent,e.alternate];case jF:return[e.object,e.property];case MF:return e.properties;case wF:return[e.key,e.value];case NF:return[e.argument];case TF:case CF:case SF:default:return[]}}var IF,Y,X,LF,Z,RF=1,zF=2,BF=3,VF=4,HF=5,UF=6,WF=7,GF=8,KF=9;IF={},IF[RF]=`Boolean`,IF[zF]=`<end>`,IF[BF]=`Identifier`,IF[VF]=`Keyword`,IF[HF]=`Null`,IF[UF]=`Numeric`,IF[WF]=`Punctuator`,IF[GF]=`String`,IF[KF]=`RegularExpression`;var qF=`ArrayExpression`,JF=`BinaryExpression`,YF=`CallExpression`,XF=`ConditionalExpression`,ZF=`Identifier`,QF=`Literal`,$F=`LogicalExpression`,eI=`MemberExpression`,tI=`ObjectExpression`,nI=`Property`,rI=`UnaryExpression`,iI=`Unexpected token %0`,aI=`Unexpected number`,oI=`Unexpected string`,sI=`Unexpected identifier`,cI=`Unexpected reserved word`,lI=`Unexpected end of input`,uI=`Invalid regular expression`,dI=`Invalid regular expression: missing /`,fI=`Octal literals are not allowed in strict mode.`,pI=`Duplicate data property in object literal not allowed in strict mode`,mI=`ILLEGAL`,hI=`Disabled.`,gI=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]`),_I=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 vI(e,t){if(!e)throw Error(`ASSERT: `+t)}function yI(e){return e>=48&&e<=57}function bI(e){return`0123456789abcdefABCDEF`.includes(e)}function xI(e){return`01234567`.includes(e)}function SI(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 CI(e){return e===10||e===13||e===8232||e===8233}function wI(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&gI.test(String.fromCharCode(e))}function TI(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&_I.test(String.fromCharCode(e))}var EI={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 DI(){for(;X<LF;){let e=Y.charCodeAt(X);if(SI(e)||CI(e))++X;else break}}function OI(e){var t,n,r,i=0;for(n=e===`u`?4:2,t=0;t<n;++t)X<LF&&bI(Y[X])?(r=Y[X++],i=i*16+`0123456789abcdef`.indexOf(r.toLowerCase())):Q({},iI,mI);return String.fromCharCode(i)}function kI(){var e=Y[X],t=0,n,r;for(e===`}`&&Q({},iI,mI);X<LF&&(e=Y[X++],bI(e));)t=t*16+`0123456789abcdef`.indexOf(e.toLowerCase());return(t>1114111||e!==`}`)&&Q({},iI,mI),t<=65535?String.fromCharCode(t):(n=(t-65536>>10)+55296,r=(t-65536&1023)+56320,String.fromCharCode(n,r))}function AI(){var e=Y.charCodeAt(X++),t=String.fromCharCode(e);for(e===92&&(Y.charCodeAt(X)!==117&&Q({},iI,mI),++X,e=OI(`u`),(!e||e===`\\`||!wI(e.charCodeAt(0)))&&Q({},iI,mI),t=e);X<LF&&(e=Y.charCodeAt(X),TI(e));)++X,t+=String.fromCharCode(e),e===92&&(t=t.substr(0,t.length-1),Y.charCodeAt(X)!==117&&Q({},iI,mI),++X,e=OI(`u`),(!e||e===`\\`||!TI(e.charCodeAt(0)))&&Q({},iI,mI),t+=e);return t}function jI(){for(var e=X++,t;X<LF;){if(t=Y.charCodeAt(X),t===92)return X=e,AI();if(TI(t))++X;else break}return Y.slice(e,X)}function MI(){var e=X,t=Y.charCodeAt(X)===92?AI():jI();return{type:t.length===1?BF:EI.hasOwnProperty(t)?VF:t===`null`?HF:t===`true`||t===`false`?RF:BF,value:t,start:e,end:X}}function NI(){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:WF,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:WF,value:String.fromCharCode(t)+String.fromCharCode(n),start:e,end:X};case 33:case 61:return X+=2,Y.charCodeAt(X)===61&&++X,{type:WF,value:Y.slice(e,X),start:e,end:X}}}if(o=Y.substr(X,4),o===`>>>=`)return X+=4,{type:WF,value:o,start:e,end:X};if(a=o.substr(0,3),a===`>>>`||a===`<<=`||a===`>>=`)return X+=3,{type:WF,value:a,start:e,end:X};if(i=a.substr(0,2),r===i[1]&&`+-<>&|`.includes(r)||i===`=>`)return X+=2,{type:WF,value:i,start:e,end:X};if(i===`//`&&Q({},iI,mI),`<>=!+-*%&|^/`.includes(r))return++X,{type:WF,value:r,start:e,end:X};Q({},iI,mI)}function PI(e){let t=``;for(;X<LF&&bI(Y[X]);)t+=Y[X++];return t.length===0&&Q({},iI,mI),wI(Y.charCodeAt(X))&&Q({},iI,mI),{type:UF,value:parseInt(`0x`+t,16),start:e,end:X}}function FI(e){let t=`0`+Y[X++];for(;X<LF&&xI(Y[X]);)t+=Y[X++];return(wI(Y.charCodeAt(X))||yI(Y.charCodeAt(X)))&&Q({},iI,mI),{type:UF,value:parseInt(t,8),octal:!0,start:e,end:X}}function II(){var e,t,n=Y[X];if(vI(yI(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,PI(t);if(xI(n))return FI(t);n&&yI(n.charCodeAt(0))&&Q({},iI,mI)}for(;yI(Y.charCodeAt(X));)e+=Y[X++];n=Y[X]}if(n===`.`){for(e+=Y[X++];yI(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++]),yI(Y.charCodeAt(X)))for(;yI(Y.charCodeAt(X));)e+=Y[X++];else Q({},iI,mI);return wI(Y.charCodeAt(X))&&Q({},iI,mI),{type:UF,value:parseFloat(e),start:t,end:X}}function LI(){var e=``,t,n,r,i,a=!1;for(t=Y[X],vI(t===`'`||t===`"`,`String literal must starts with a quote`),n=X,++X;X<LF;)if(r=Y[X++],r===t){t=``;break}else if(r===`\\`)if(r=Y[X++],!r||!CI(r.charCodeAt(0)))switch(r){case`u`:case`x`:Y[X]===`{`?(++X,e+=kI()):e+=OI(r);break;case`n`:e+=`
|
|
665
|
-
`;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:
|
|
666
|
-
`&&++X;else if(CI(r.charCodeAt(0)))break;else e+=r;return t!==``&&Q({},iI,mI),{type:GF,value:e,octal:a,start:n,end:X}}function RI(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({},uI)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,`x`));try{new RegExp(n)}catch{Q({},uI)}try{return new RegExp(e,t)}catch{return null}}function zI(){var e=Y[X],t,n,r,i;for(vI(e===`/`,`Regular expression literal must start with a slash`),t=Y[X++],n=!1,r=!1;X<LF;)if(e=Y[X++],t+=e,e===`\\`)e=Y[X++],CI(e.charCodeAt(0))&&Q({},dI),t+=e;else if(CI(e.charCodeAt(0)))Q({},dI);else if(n)e===`]`&&(n=!1);else if(e===`/`){r=!0;break}else e===`[`&&(n=!0);return r||Q({},dI),i=t.substr(1,t.length-2),{value:i,literal:t}}function BI(){for(var e,t=``,n=``;X<LF&&(e=Y[X],TI(e.charCodeAt(0)));)++X,e===`\\`&&X<LF?Q({},iI,mI):(n+=e,t+=e);return n.search(/[^gimuy]/g)>=0&&Q({},uI,n),{value:n,literal:t}}function VI(){var e,t,n,r;return Z=null,DI(),e=X,t=zI(),n=BI(),r=RI(t.value,n.value),{literal:t.literal+n.literal,value:r,regex:{pattern:t.value,flags:n.value},start:e,end:X}}function HI(e){return e.type===BF||e.type===VF||e.type===RF||e.type===HF}function UI(){if(DI(),X>=LF)return{type:zF,start:X,end:X};let e=Y.charCodeAt(X);return wI(e)?MI():e===40||e===41||e===59?NI():e===39||e===34?LI():e===46?yI(Y.charCodeAt(X+1))?II():NI():yI(e)?II():NI()}function WI(){let e=Z;return X=e.end,Z=UI(),X=e.end,e}function GI(){let e=X;Z=UI(),X=e}function KI(e){let t=new PF(qF);return t.elements=e,t}function qI(e,t,n){let r=new PF(e===`||`||e===`&&`?$F:JF);return r.operator=e,r.left=t,r.right=n,r}function JI(e,t){let n=new PF(YF);return n.callee=e,n.arguments=t,n}function YI(e,t,n){let r=new PF(XF);return r.test=e,r.consequent=t,r.alternate=n,r}function XI(e){let t=new PF(ZF);return t.name=e,t}function ZI(e){let t=new PF(QF);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 QI(e,t,n){let r=new PF(eI);return r.computed=e===`[`,r.object=t,r.property=n,r.computed||(n.member=!0),r}function $I(e){let t=new PF(tI);return t.properties=e,t}function eL(e,t,n){let r=new PF(nI);return r.key=t,r.value=n,r.kind=e,r}function tL(e,t){let n=new PF(rI);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)=>(vI(t<r.length,`Message reference must be in range`),r[t]));throw n=Error(i),n.index=X,n.description=i,n}function nL(e){e.type===zF&&Q(e,lI),e.type===UF&&Q(e,aI),e.type===GF&&Q(e,oI),e.type===BF&&Q(e,sI),e.type===VF&&Q(e,cI),Q(e,iI,e.value)}function rL(e){let t=WI();(t.type!==WF||t.value!==e)&&nL(t)}function $(e){return Z.type===WF&&Z.value===e}function iL(e){return Z.type===VF&&Z.value===e}function aL(){let e=[];for(X=Z.start,rL(`[`);!$(`]`);)$(`,`)?(WI(),e.push(null)):(e.push(xL()),$(`]`)||rL(`,`));return WI(),KI(e)}function oL(){X=Z.start;let e=WI();return e.type===GF||e.type===UF?(e.octal&&Q(e,fI),ZI(e)):XI(e.value)}function sL(){var e,t,n,r;if(X=Z.start,e=Z,e.type===BF)return n=oL(),rL(`:`),r=xL(),eL(`init`,n,r);if(e.type===zF||e.type===WF)nL(e);else return t=oL(),rL(`:`),r=xL(),eL(`init`,t,r)}function cL(){var e=[],t,n,r,i={},a=String;for(X=Z.start,rL(`{`);!$(`}`);)t=sL(),n=t.key.type===ZF?t.key.name:a(t.key.value),r=`$`+n,Object.prototype.hasOwnProperty.call(i,r)?Q({},pI):i[r]=!0,e.push(t),$(`}`)||rL(`,`);return rL(`}`),$I(e)}function lL(){rL(`(`);let e=SL();return rL(`)`),e}var uL={if:1};function dL(){var e,t,n;if($(`(`))return lL();if($(`[`))return aL();if($(`{`))return cL();if(e=Z.type,X=Z.start,e===BF||uL[Z.value])n=XI(WI().value);else if(e===GF||e===UF)Z.octal&&Q(Z,fI),n=ZI(WI());else if(e===VF)throw Error(hI);else e===RF?(t=WI(),t.value=t.value===`true`,n=ZI(t)):e===HF?(t=WI(),t.value=null,n=ZI(t)):$(`/`)||$(`/=`)?(n=ZI(VI()),GI()):nL(WI());return n}function fL(){let e=[];if(rL(`(`),!$(`)`))for(;X<LF&&(e.push(xL()),!$(`)`));)rL(`,`);return rL(`)`),e}function pL(){X=Z.start;let e=WI();return HI(e)||nL(e),XI(e.value)}function mL(){return rL(`.`),pL()}function hL(){rL(`[`);let e=SL();return rL(`]`),e}function gL(){for(var e=dL(),t,n;;)if($(`.`))n=mL(),e=QI(`.`,e,n);else if($(`(`))t=fL(),e=JI(e,t);else if($(`[`))n=hL(),e=QI(`[`,e,n);else break;return e}function _L(){let e=gL();if(Z.type===WF&&($(`++`)||$(`--`)))throw Error(hI);return e}function vL(){var e,t;if(Z.type!==WF&&Z.type!==VF)t=_L();else if($(`++`)||$(`--`))throw Error(hI);else if($(`+`)||$(`-`)||$(`~`)||$(`!`))e=WI(),t=vL(),t=tL(e.value,t);else if(iL(`delete`)||iL(`void`)||iL(`typeof`))throw Error(hI);else t=_L();return t}function yL(e){let t=0;if(e.type!==WF&&e.type!==VF)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 bL(){var e=Z,t,n,r,i,a,o,s,c=vL(),l;if(r=Z,i=yL(r),i===0)return c;for(r.prec=i,WI(),t=[e,Z],o=vL(),a=[c,r,o];(i=yL(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=qI(s,c,o),a.push(n);r=WI(),r.prec=i,a.push(r),t.push(Z),n=vL(),a.push(n)}for(l=a.length-1,n=a[l],t.pop();l>1;)t.pop(),n=qI(a[l-1].value,a[l-2],n),l-=2;return n}function xL(){var e=bL(),t,n;return $(`?`)&&(WI(),t=xL(),rL(`:`),n=xL(),e=YI(e,t,n)),e}function SL(){let e=xL();if($(`,`))throw Error(hI);return e}function CL(e){Y=e,X=0,LF=Y.length,Z=null,GI();let t=SL();if(Z.type!==zF)throw Error(`Unexpect token after expression.`);return t}var wL={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 TL(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 EL(e){let t=e&&e.length-1;return t&&(e[0]===`"`&&e[t]===`"`||e[0]===`'`&&e[t]===`'`)?e.slice(1,-1):e}function DL(e){e||={};let t=e.allowed?jt(e.allowed):{},n=e.forbidden?jt(e.forbidden):{},r=e.constants||wL,i=(e.functions||TL)(d),a=e.globalvar,o=e.fieldvar,s=ft(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(F(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:bt(n,i)?Ke(`Illegal identifier: `+i):bt(r,i)?r[i]:bt(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[EL(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=bt(i,t)&&i[t];return r||Ke(`Unrecognized function: `+t),ft(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 OL(e,t,n){return kN((n-e)/(t-e),0,1)}function kL(e){return k(e)||ArrayBuffer.isView(e)?e:null}function AL(e){return kL(e)||(F(e)?e:null)}var jL={clamp:kN,format(e,t){return or(t)(e)},join(e,t){return kL(e).join(t)},indexof(e,t,n){return AL(e).indexOf(t,n)},lastindexof(e,t,n){return AL(e).lastIndexOf(t,n)},reverse(e){return kL(e).slice().reverse()},slice(e,t,n){return AL(e).slice(t,n)},mapHasKey(e,t){return e.has(t)},isArray:k,isBoolean:xt,isDefined(e){return e!==void 0},isNumber:P,isObject:Ze,isRegExp:wt,isString:F,isValid(e){return e!=null&&e===e},lerp:I,linearstep:OL,replace(e,t,n){return String(e).replace(t,n)},sort(e){return kL(e).slice().sort(ht)},center(e){let t=kL(e);return(t[0]+t[t.length-1])/2},span(e){return Tt(e)},smoothstep:Zl};function ML(e,t){let n=TL(e);for(let e in jL)n[e]=`this.${e}`;for(let r of[`scale`,`invert`,`domain`,`range`])n[r]=n=>NL(e,t,r,n);return n}function NL(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=PL(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 PL(e){return e?.type===`Literal`&&typeof e.value==`string`?e.value:void 0}function FL(e,t){let n=n=>LL(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 IL=new WeakSet;function LL(e,t,n){if(IL.has(e))throw Error(`Scale helper cycle detected while evaluating ${t}("${e.channel}").`);IL.add(e);try{return n()}finally{IL.delete(e)}}function RL(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 zL(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=RL(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]=FL(e,o),d}},s=DL({forbidden:[],allowed:[`datum`,`undefined`],globalvar:`globalObject`,fieldvar:`datum`,functions:e=>ML(e,o)})(CL(e)),c=Function(`datum`,`globalObject`,`"use strict";
|
|
672
|
+
};`,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
|
+
`;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";
|
|
667
675
|
try {
|
|
668
676
|
return (${s.code});
|
|
669
677
|
} catch (e) {
|
|
670
678
|
throw new Error("Error evaluating expression: " + ${JSON.stringify(e)} + ", " + e.message, e);
|
|
671
|
-
}`).bind(
|
|
679
|
+
}`).bind(BL),l=e=>c(e,t);return l.fields=s.fields,l.globals=s.globals,l.code=s.code,l.scaleDependencies=Array.from(r.values()),l}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}var YL=IL({forbidden:[],allowed:[`event`],globalvar:`globalObject`});function XL(e){try{let t=YL(ML(e));return Function(`event`,`globalObject`,`"use strict";
|
|
672
680
|
try {
|
|
673
681
|
return !!(${t.code});
|
|
674
682
|
} catch (e) {
|
|
675
683
|
throw new Error("Error evaluating expression: " + ${JSON.stringify(e)} + ", " + e.message, e);
|
|
676
|
-
}`)}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}function HL(e,t={},n={}){return zL(e,t,n)}function UL(e,t,n={}){let r={},i=HL(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 WL=class{#e=new bF;#t=new yF({lifecycleRegistry:this.#e});#n=new xF;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}=UL(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}=UL(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)}},GL=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 WL,this.#t=this.#e.createScope())}registerParam(e){let t=e.name;if(hg(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=gg(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=gg(e,this),n=this.#c(t,r);if(`select`in e){if(r??=gg(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(hg(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){hg(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){hg(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 hg(e),this.#r.has(e)}hasConfiguredParamInScopeChain(e){return hg(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(mg(e)){let t=e.select;if(F(t)){if(t==`point`)return!0}else if(t.type==`point`)return!0}return!1}},KL=`VISIT_SKIP`,qL=`VISIT_STOP`,JL=e=>e,YL=class{spec;#e;#t;#n={};#r={};#i={};#a;#o;#s=!1;opacityFunction=JL;#c=[];#l=`none`;facetCoords=new mn([],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:{}},JN(this),this.options={blockEncodingInheritance:!1,layoutSizeParams:`own`,...a},this.flowHandle=void 0,this.needsAxes={x:!1,y:!1},this.paramRuntime=new GL(()=>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 rP(this.#e)}getCursorSpec(){return this.spec.cursor}getCursor(){let e=this.getCursorSpec();return B(e)?this.paramRuntime.evaluateAndGet(e.expr):e}watchCursor(e,t){let n=this.getCursorSpec();B(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`,()=>iF.createFromConfig(this.spec.padding))}getOverhang(){return iF.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache(`size/size`,()=>this.isConfiguredVisible()?new ZP(this.#d(`width`),this.#d(`height`)):$P)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return $P;let e=this.getSize();return new ZP(this.#d(`viewportWidth`)??e.width,this.#d(`viewportHeight`)??e.height)}#d(e){let t=this.spec[e],n=eR(t),r=e==`viewportWidth`||e==`viewportHeight`;if(n){if(r)throw new QN(`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(vm(i.type))e=i.domain().length;else if([`locus`,`index`].includes(i.type)){let t=i.domain();e=Xl(t)-t[0]}else throw new QN(`Cannot use step-based size with "${i.type}" scale!`,this);let t=i;return e=Ip(e,t.paddingInner(),t.paddingOuter()),{px:e*n,grow:0}}else throw new QN(`Cannot use step-based size with "${e}"!`,this)}else return(t&&rF(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(!eR(n))return;let r=this.getScaleResolution(t);if(!r)throw new QN(`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===JL)&&(this.opacityFunction=ZL(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 Oh(t)?[t.field]:this.layoutParent?.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(e){let t=Kh(e);return this.getDataAncestors().map(e=>e.resolutions.scale[t]).find(e=>e)}getAxisResolution(e){let t=Kh(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 sF(()=>this.dataParent?.getBaseUrl(),ih(this.spec.baseUrl))}isPickingSupported(){return!0}getTitleText(){let e=this.spec.title;if(e)return F(e)?e:B(e.text)?this.paramRuntime.evaluateAndGet(e.text.expr):e.text}_cache(e,t){return GN(this,e,t)}_invalidateCacheByPrefix(e,t=`self`){switch(t){case`self`:qN(this,e);break;case`ancestors`:for(let t of this.getLayoutAncestors())qN(t,e);break;case`progeny`:this.visit(t=>qN(t,e));break;default:}}invalidateSizeCache(){qN(this,`size`),this._invalidateCacheByPrefix(`size`,`ancestors`)}propagateInteraction(e){}};function XL(e){return`unitsPerPixel`in e}function ZL(e){let t=`opacity`in e.spec?e.spec.opacity:void 0;if(t!==void 0){if(P(t))return e=>e*t;if(XL(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=$L(t.values,`opacity.values`,e);if(!k(t.unitsPerPixel))throw new QN(`"opacity.unitsPerPixel" must be an array.`,e);let i=()=>1,a=[],o=()=>{let t=QL($L(a.map(e=>e()),`opacity.unitsPerPixel`,e),r,e),n=qf().domain(t.unitsPerPixel).range(t.values).clamp(!0);i=e=>n(e)};a=t.unitsPerPixel.map(t=>{if(B(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 Tt(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 QN(`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 QN(`Cannot find a resolved quantitative scale for dynamic opacity!`,e);c=()=>s(r)}return e=>i(c())*e}else if(B(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>e.context.animator.requestRender());return e=>n(null)*e}}return e=>e}function QL(e,t,n){if(!e.length)throw new QN(`"opacity.unitsPerPixel" must contain at least one stop.`,n);if(e.length!==t.length)throw new QN(`"opacity.unitsPerPixel" and "opacity.values" must have the same length.`,n);e.forEach((e,t)=>{if(e<=0)throw new QN(`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 QN(`"opacity.unitsPerPixel" must be strictly decreasing.`,n);return{unitsPerPixel:i,values:a}}function $L(e,t,n){if(!k(e))throw new QN(`"`+t+`" must evaluate to an array.`,n);return e.map((e,r)=>{if(!P(e)||!Number.isFinite(e))throw new QN(`Invalid `+t+` value at index `+r+`. Expected a finite number.`,n);return e})}var eR=e=>!!e?.step;function tR(e){return nR(e?.search,`search`)}function nR(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 rR=1;function iR(){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=pn(t),n=e[1]-e[0];let r=e[0]===0&&e[0]===0;if(n<rR&&!r){n=rR;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 kn(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=jn(e[0],e[1],Math.min(t,Math.ceil(n)))<1e5?or(`,`):or(`.3s`);return e=>i(e+s)},c.copy=()=>iR().domain(e).range(t).paddingInner(i).paddingOuter(a).numberingOffset(s),c}var aR=or(`,d`);function oR(e){return e.chrom+`:`+aR(Math.floor(e.pos+1))}function sR(e,t){return e.chrom+`:`+aR(Math.floor(e.pos+1))+`-`+(e.chrom==t.chrom?``:t.chrom+`:`)+aR(Math.ceil(t.pos))}var cR={dm6:`chr3R 32079331
|
|
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
|
|
677
685
|
chr3L 28110227
|
|
678
686
|
chr2R 25286936
|
|
679
687
|
chrX 23542271
|
|
@@ -794,21 +802,21 @@ chr18 90702639
|
|
|
794
802
|
chr19 61431566
|
|
795
803
|
chrX 171031299
|
|
796
804
|
chrY 91744698
|
|
797
|
-
chrM 16299`};function
|
|
798
|
-
`).map(e=>{let t=e.split(` `);return{name:t[0],size:parseInt(t[1])}})}var uR=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(!hR(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,_R(this.config))this.setChromSizes(this.config.contigs);else if(!gR(this.config)){let e=lR(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(gR(this.config))try{let t=sF(e,this.config.url),n=await fetch(t);if(!n.ok)throw Error(`${n.status} ${n.statusText}`);this.setChromSizes(dR(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=un(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 sR(...this.toChromosomalInterval(e))}formatLocus(e){let t=this.toChromosomal(e);if(t)return oR(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 dR(e){return Gt(e).map(([e,t])=>({name:e,size:parseInt(t)}))}function fR(e){return Ze(e)&&`chrom`in e}function pR(e){return e.every(fR)}function mR(e){return pR(e)&&(e[1]??e[0]).pos!==void 0}function hR(e){return Ze(e)&&(`name`in e||gR(e)||_R(e))}function gR(e){return hR(e)&&`url`in e}function _R(e){return hR(e)&&`contigs`in e}var vR=1e6,yR=.65;function bR(){let e=iR().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=jn(r[0],r[1],c);l<vR&&(l=jn(r[0],r[1],c*yR)),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=jn(i[0],i[1],Math.max(1,Math.min(n??10,Math.floor(a))))<vR?or(`,`):or(`.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 xR(e){return e.type==`locus`}function SR(e,t){let n=DR(e);return n?n.toChromosomal(t):t}function CR(e,t){let n=DR(e);return n&&fR(t)?n.toContinuous(t.chrom,t.pos):t}function wR(e,t){let n=DR(e);return n&&pR(t)?n.toContinuousInterval(t):t}function TR(e,t){let n=DR(e);return n?n.toChromosomalInterval(t):t}function ER(e){let t=DR(e);if(!t)throw Error(`No genome has been defined!`);return t.getExtent()}function DR(e){if(e&&`toChromosomal`in e)return e;if(e&&`genome`in e)return e.genome()}var OR=`locus`,kR=`index`,AR=5;function jR(e){let t=e.type;return!e.bins&&(t===`linear`||t===`pow`||t===`sqrt`)}function MR(e){return _m(e)&&![`sequential`,kR,OR].includes(e)}function NR(e){return e||{warn:(e,...t)=>console.warn(e,...t)}}var PR=jt(`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 FR(e,t,n){n=NR(n);for(let r in e)if(!PR[r]){if(r===`padding`&&MR(t.type))continue;ft(t[r])?t[r](e[r]):n.warn(`Unsupported scale property: `+r)}let r=BR(t,e,n);r.domain&&t.domain(r.domain),r.applyOrdinalUnknown&&t.unknown(r.ordinalUnknown),GR(t,e,WR(t,e,r.count))}function IR(e,t){let n=!e.domain&&_m(e.type)?{...e,domain:[0,0]}:e,r=LR(n),i=R(r);if(!i)throw Error(`Unknown scale type: `+r);let a=i();return FR(n,a,t),a}function LR(e){var t=e.type,n=``,r;return t===`sequential`?Hp+`-`+Rp:(RR(e)&&(r=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(e.domainMid!=null):0,n=r===2?Hp+`-`:r===3?Up+`-`:``),(n+t||`linear`).toLowerCase())}function RR(e){let t=e.type;return _m(t)&&t!==`time`&&t!==`utc`&&(e.scheme||e.range&&e.range.length&&e.range.every(F))}function zR(e){if(!e.copy)return e;let t=e.copy();return t.type==null&&e.type!=null&&(t.type=e.type),t}function BR(e,t,n){if(!e.domain)return{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1};n=NR(n);let r=zR(e);var i=VR(r,t.domainRaw,n);if(i>-1)return{domain:r.domain(),count:i,ordinalUnknown:r.type===`ordinal`&&t.domainImplicit?eu:void 0,applyOrdinalUnknown:!1};var a=t.domain,o=r.type,s=t.zero||t.zero===void 0&&jR(r),c,l;return a?(MR(o)&&t.padding&&a[0]!==Qe(a)&&(a=HR(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(UR(o,a,n)),t.nice&&r.nice&&r.nice(t.nice!==!0&&Nm(r,t.nice)||null),{domain:r.domain(),count:a.length,ordinalUnknown:o===`ordinal`&&t.domainImplicit?eu:void 0,applyOrdinalUnknown:o===qp}):{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1}}function VR(e,t,n){return t?(e.domain(UR(e.type,t,n)),t.length):-1}function HR(e,t,n,r,i,a){n??=[0,1];var o=Math.abs(Qe(n)-n[0]),s=o/(o-2*r),c=e===`log`?ct(t,null,s):e===`sqrt`?lt(t,null,s,.5):e===`pow`?lt(t,null,s,i||1):e===`symlog`?ut(t,null,s,a||1):st(t,null,s);return t=t.slice(),t[0]=c[0],t[t.length-1]=c[1],t}function UR(e,t,n){return bm(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: `+Et(t)),t}function WR(e,t,n){let r=t.bins;if(r&&!k(r)){let t=(r.start==null||r.stop==null)&&e.domain(),n=r.start==null?t[0]:r.start,i=r.stop==null?Qe(t):r.stop,a=r.step;a||Ke(`Scale bins parameter missing step property.`),r=Bn(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 GR(e,t,n){var r=e.type,i=t.round||!1,a=t.range;if(t.rangeStep!=null)a=KR(r,t,n);else if(t.scheme&&(a=qR(r,t,n),ft(a))){if(e.interpolator)return e.interpolator(a);Ke(`Scale type ${r} does not support interpolating color schemes.`)}if(a&&xm(r))return e.interpolator(Cm(YR(a,t.reverse),t.interpolate,t.interpolateGamma));a&&t.interpolate&&e.interpolate?e.interpolate(Tm(t.interpolate,t.interpolateGamma)):ft(e.round)?e.round(i):ft(e.rangeRound)&&e.interpolate(i?qd:Wd),a&&e.range(YR(a,t.reverse))}function KR(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*Ip(n,i,r)]}function qR(e,t,n){var r=t.schemeExtent,i=t.schemeCount,a,o;return k(t.scheme)?o=Cm(t.scheme,t.interpolate,t.interpolateGamma):(F(t.scheme)?a=t.scheme.toLowerCase():(a=t.scheme.name.toLowerCase(),r=t.scheme.extent??r,i=t.scheme.count??i),o=Mm(a),o||Ke(`Unrecognized scheme name: ${t.scheme}`)),n=e===`threshold`?n+1:e===`bin-ordinal`?n-1:e===`quantile`||e===`quantize`?+i||AR:n,xm(e)?JR(o,r,t.reverse):ft(o)?wm(JR(o,r),n):e===`ordinal`?o:o.slice(0,n)}function JR(e,t,n){return ft(e)&&(t||n)?Sm(e,YR(t||[0,1],n)):e}function YR(e,t){return t?e.slice().reverse():e}var XR=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=IR({...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||!xR(t)||t.genome(this.getLocusGenome(e.assembly))}reconfigureScale(e){let t=this.#e;!t||t.type==`null`||(FR({...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=QR({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?.();ZR(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 ZR(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 QR({range:e,reverse:t,createExpression:n,registerExpr:r}){if(!e||!k(e))return null;let i=(e,t)=>t?e.slice().reverse():e;if(e.some(B)){let a;return{dynamic:!0,evaluate:()=>i(a.map(e=>e()),t),setup:t=>{a=e.map(e=>{if(B(e)){let i=n(e.expr);return i.subscribe(t),r(i),()=>i(null)}return()=>e})}}}return{dynamic:!1,values:i(e,t)}}function $R(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||ez(e)&&ez(t)||ez(e)&&t===!0||e===!0&&Ze(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(ez(e))ez(o)&&(r[a]=$R([e,o],a));else if(ez(o)){if(!(e===!0||e===void 0))throw Error(`Bug in merge! Target is: `+e);r[a]=$R([{},o],a)}else r[a]=o}}};for(let t of e)a(t);return r}function ez(e){return Ze(e)&&!Array.isArray(e)}var tz={nominal:`nominalColorScheme`,ordinal:`ordinalColorScheme`,quantitative:`quantitativeColorScheme`},nz=new Set([`rect`]),rz=new Set([`shape`,`size`,`angle`,`heatmap`,`ramp`,`diverging`]);function iz(e){return typeof e==`string`||typeof e==`object`&&!!e}function az(e){return rz.has(e)}function oz(e,t){if(az(t))return uz(e)[t]}function sz(e){if([`nominal`,`ordinal`,`quantitative`,`index`,`locus`].includes(e))return e}function cz(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 lz(e,t){let n=sz(t);return rP(e.flatMap(e=>{let t=e.scale;return[t,t&&n?t[n]:void 0]}))}function uz(e){return rP(e.map(e=>e.range))}function dz(e,{channel:t,dataType:n,isExplicitDomain:r,markTypes:i,hasDomainMid:a}){let o=lz(e,n),s=uz(e),c={...cz(o)};if(r?c.zero=!1:c.zero===void 0&&o.zero!==void 0&&(c.zero=o.zero),Vh(t)&&c.nice===void 0&&(c.nice=o.nice===void 0?!r:o.nice),qh(t)&&c.scheme===void 0)if(n==`quantitative`){let e=a||o.domainMid!==void 0?s.diverging:i?.length&&i.every(e=>nz.has(e))?s.heatmap:s.ramp,t=iz(e)?e:o.quantitativeColorScheme;iz(t)&&(c.scheme=t)}else{let e=o[tz[n]??tz.quantitative];iz(e)&&(c.scheme=e)}else Jh(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 fz=`quantitative`,pz=`ordinal`,mz=`nominal`;function hz(e,t){if(t==`index`||t==`locus`){if(Bh(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][[mz,pz,fz].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 gz(e,t){Vh(t)&&e.type!==`ordinal`&&(e.range=[0,1]),t==`opacity`&&_m(e.type)&&e.clamp===void 0&&(e.clamp=!0)}function _z({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=$R(a.map(e=>e.channelDef.scale).filter(e=>e!==void 0),`scale`,[`domain`]);if(s===null||s.type==`null`)return{type:`null`};let c={...dz(i,{channel:e,dataType:t,isExplicitDomain:r,markTypes:o,hasDomainMid:s.domainMid!==void 0}),...s};if(c.type||=hz(e,t),typeof c.range==`string`){if(!az(c.range))throw Error(`Unknown named scale range "`+c.range+`". Supported names: shape, size, angle, heatmap, ramp, diverging.`);let t=oz(i,c.range);if(t===void 0)throw Error(`Named scale range "`+c.range+`" is not configured in config.range.`);qh(e)&&(typeof t==`string`||typeof t==`object`&&t&&!Array.isArray(t))?(c.scheme=t,delete c.range):c.range=t}if(e==`y`&&vm(c.type)&&c.reverse==null&&(c.reverse=!0),c.range&&c.scheme&&delete c.scheme,c.domainTransition===void 0&&(c.domainTransition=!a.some(e=>B(e.channelDef.scale?.domain))),Array.isArray(c.range)&&c.range.some(B)&&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=lz(i,t);e.zoom===void 0?[`index`,`locus`].includes(c.type)&&(c.zoom=!0):c.zoom=e.zoom}return gz(c,e),c}function vz(e){return e===`index`||e===`locus`}function yz(e,t){return vz(e)?Sz(t):t}function bz(e,t){return vz(e)?Cz(t):t}function xz(e,t){return t&&vz(e)?Sz(t):t}function Sz(e){return[e[0],e[1]+wz(e)]}function Cz(e){return[e[0],e[1]-wz(e)]}function wz(e){return e[1]>=e[0]?1:-1}function Tz(e,t){let n=e.findRuntimeForParam(t);if(!n)throw Error(`Selection domain parameter "${t}" was not found.`);return n}function Ez(e,t){if(e){if(!rg(e))throw Error(`Selection domain parameter "${t}" must be an interval selection.`);return e}}function Dz(e,t,n){let r=e.paramRuntime.findRuntimeForParam?Tz(e.paramRuntime,t):e.paramRuntime;return{runtime:r,selection:Ez(r.getValue?r.getValue(t):e.paramRuntime.findValue(t),t)}}function Oz(e,t,n,r){let i=[];return e.visit(e=>{let a=e.paramRuntime?.paramConfigs?.get(n);if(!a||!mg(a))return;let o=og(a.select);!cg(o)||!o.encodings?.includes(r)||e.paramRuntime.findRuntimeForParam(n)===t&&i.push({view:e,param:a})}),i}function kz(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||!mg(e))continue;let o=og(e.select);if(!(!cg(o)||!o.encodings?.includes(r))&&a.paramRuntime.findRuntimeForParam?.(n)===t)return!0}return!1}function Az(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 jz=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}},Mz=class extends jz{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)}},Nz=class extends jz{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}},Pz=class extends Nz{constructor(){super(),this.type=`nominal`}},Fz=class extends jz{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!`)}},Iz={quantitative:Mz,index:Mz,locus:Mz,nominal:Pz,ordinal:Nz};function Lz(e,t){if(e==`quantitative`&&Rz(t)){let n=new Fz(t);return n.type=e,n}else if(Iz[e]){let n=new Iz[e];return n.type=e,t&&n.extendAll(t),n}throw Error(`Unknown type: `+e)}function Rz(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=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 Zz(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=Bz(this.#e(),this.#a,t);return qz(this.#t(),n.selectionRef),this.#s=n.selectionRef,this.#l.set(t,n.domain),this.#c=!1,n.domain}getDataDomain(){return Xz(this.#n(),this.#r,e=>this.#d(e))}captureInitialDomain(e,t,n){if(!this.#o&&_m(e.type)){let t=n??e.domain();Tt(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=Ch(r);if(i.length===0)return[];let a=i.filter(fh).filter(e=>!e.channelDef.domainInert);return this.#u.set(e,a),a}};function Bz(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=Vz(e,t,n);if(r.kind===`selection`){Hz(i,r);continue}Uz(i,r)}return Wz(i)}function Vz(e,t,n){let r=e.channelDef.scale.domain;return Yz(r)?{kind:`selection`,...Gz(e,r,t,n)}:B(r)?{kind:`literal`,domain:Kz(e.channelDef.type,e.view.paramRuntime.createExpression(r.expr)(),t)}:{kind:`literal`,domain:Kz(e.channelDef.type,r,t)}}function Hz(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 Uz(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 Wz(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 Gz(e,t,n,r){let i=t.param,a=Jz(e.channel,t,i),o=Dz(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?Kz(e.channelDef.type,t.initial,n):void 0,description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}:{domain:Lz(e.channelDef.type,n(c)),description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}}function Kz(e,t,n){let r=n(t);return Lz(e,e===`locus`&&pR(t)&&!mR(t)?r:yz(e,r))}function qz(e,t){if(!t||e.size<2||!Array.from(e).some(e=>kz(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 Jz(e,t,n){if(t.encoding)return t.encoding;let r=Kh(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 Yz(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.param==`string`}function Xz(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=gh(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=Lz(r),s.extend(t({}));else continue;o.set(e,s)}}if(i.size===0)return;let a=Lz(r);for(let e of i.values())for(let t of e.values())a.extendAll(t);return a}function Zz(e,t,n,r){return e==`locus`?t(r):e==`index`?xz(e,n)??[]:n??[]}function Qz(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}function $z(e,t,n){return e*(t/e)**+n}var eB=e=>new Promise(t=>setTimeout(t,e));function tB(){return{canceled:!1}}function nB(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`):eB(e.delay).then(i):i()}function rB(e,t,n,r,i={}){let a=i.onUnsupported??`throw`;switch(e.type){case`linear`:case`index`:case`locus`:return st(t,n,r);case`log`:return ct(t,n,r);case`pow`:case`sqrt`:return lt(t,n,r,e.exponent());case`symlog`:return ut(t,n,r,e.constant());default:if(a===`identity`)return t;throw Error(`Zooming is not implemented for: `+e.type)}}var iB=class{#e;#t;#n;#r;#i;#a;#o=null;constructor({getScale:e,getAnimator:t,getInitialDomainSnapshot:n,getResetDomain:r,fromComplexInterval:i,getGenomeExtent:a}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a}getZoomExtent(){let e=this.#e(),t=e.props.zoom;return aB(e,t,this.#i,this.#a,this.#n)}isZoomable(){return this.isZoomingSupported()&&!!this.#e().props.zoom}isZoomingSupported(){let e=this.#e().type;return _m(e)&&!vm(e)}getDomainChangeAction(e,t){return Jl(t,e)?`none`:this.isZoomable()?`restore`:this.isZoomingSupported()?`animate`:`notify`}isZoomed(){return this.isZoomingSupported()&&!Jl(this.#r(),this.#e().domain())}zoom(e,t,n){if(!this.isZoomingSupported())return!1;let r=this.#e(),i=r.domain(),a=oB(r,i,e,t,n),o=this.getZoomExtent();return a=dt(a,o[0],o[1]),[0,1].some(e=>a[e]!=i[e])?(r.domain(a),!0):!1}async zoomTo(e,t=!1){if(xt(t)&&(t=t?700:0),!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let n=this.#e(),r=sB(n.type,e,this.#i),i=this.#t(),a=n.domain();if(t>0&&a.length==2){let e=a[1]-a[0],o=r[1]-r[0],s=a[0]+e/2,c=r[0]+o/2,l=a[0]==r[0],u=a[1]==r[1];this.#s();let d=tB();this.#o=d,await i.transition({duration:t,easingFunction:Qz,cancelToken:d,onUpdate:t=>{let r=$z(e,o,t),i=e==o?t:(e-r)/(e-o),d=i*c+(1-i)*s,f=[l?a[0]:d-r/2,u?a[1]:d+r/2];n.domain(f)}}),this.#o===d&&(this.#o=null),n.domain(r)}else this.#s(),n.domain(r),i?.requestRender()}#s(){this.#o&&=(this.#o.canceled=!0,null)}resetZoom(){if(!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let e=this.#e(),t=e.domain(),n=this.#r();return[0,1].some(e=>n[e]!=t[e])?(e.domain(n),!0):!1}getZoomLevel(){return this.isZoomable()?Tt(this.getZoomExtent())/Tt(this.#e().domain()):1}};function aB(e,t,n,r,i){return cB(t)&&k(t.extent)?sB(e.props.type,t.extent,n):t&&e.props.type==`locus`?r():i()}function oB(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=it(a,i||0);break;case`log`:a=at(a,i||0);break;case`pow`:case`sqrt`:a=M(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 rB(e,a,o,n)}function sB(e,t,n){let r=e===`locus`?n(t):t;return e===`locus`&&pR(t)&&!mR(t)?r:yz(e,r)}function cB(e){return Ze(e)}function lB(e){let t=e.view.getPathString(),n=e.channel??``;return t+`|`+n}function uB(e){return Array.from(e).sort((e,t)=>lB(e).localeCompare(lB(t)))}R(`index`,iR,[`continuous`]),R(`locus`,bR,[`continuous`]),R(`null`,CM,[]);var dB=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 zz({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 XR({getParamRuntime:()=>this.#y.paramRuntime,onRangeChange:()=>this.#w(`range`),onDomainChange:()=>this.#w(`domain`),getGenomeStore:()=>this.#x.genomeStore}),this.#o=new iB({getScale:()=>this.getScale(),getAnimator:()=>this.#x.animator,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&&_m(this.#i.scale.type)&&this.#o.getZoomExtent())??[-1/0,1/0]}#S(e){return ER(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=Ez(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&&Jl(n,r)?null:n;fB(t.intervals[e.encoding]??null,i)||e.runtime.setValue(e.param,{...t,type:`interval`,intervals:{...t.intervals,[e.encoding]:i}})}#E(e){return Az(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=Ez(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=pB(e),{channel:n,channelDef:r}=t,i=r.type==null&&this.type;if(n!=`sample`&&!r.type&&!Wh(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)&&!Bh(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&&!Wh(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(!B(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(gh(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 _m(e.type)?t.length>2||t.length==2&&(t[0]!==0||t[1]!==0):t.length>0}#V(){return GN(this,`mergedScaleProps`,()=>{let e=_z({channel:this.channel,dataType:this.type,orderedMembers:this.#W(),isExplicitDomain:this.isDomainDefinedExplicitly(),configScopes:this.#y.getConfigScopes()});return this.#K(e),e})}#H(){KN(this,`mergedScaleProps`)}#U(){this.#n=void 0}#W(){return this.#n||=uB(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=_m(e.type)&&!vm(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(vm(n.type)){let t=this.isDomainDefinedExplicitly(),i=this.#J(t);if(r!=null){if(t&&i.domain().length>0&&!Jl(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 Pz}else{let e=i.domain();n.domain=e.length>0?e:new Pz}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=ON(),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&&Jl(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=BR(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 TR(this.#C(),bz(this.type,this.getDomain()))}getLinkedSelectionDomainInfo(){let e=this.#D();if(!e)return;let t=this.#y.getLayoutAncestors().at(-1),n=t?Oz(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:_m(e.type)&&!vm(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 SR(this.#C(),e)}fromComplex(e){return CR(this.#C(),e)}fromComplexInterval(e){return this.type==`locus`?wR(this.#C(),e):e}};function fB(e,t){return e===t?!0:!e||!t?!1:e.length===t.length&&Jl(e,t)}function pB(e){let t=e.channelDef.scale,n=t?.assembly;if(!t||!n||typeof n!=`object`||!(`url`in n))return e;let r=cF(e.view.getBaseUrl(),n.url);return r===n.url?e:{...e,channelDef:{...e.channelDef,scale:{...t,assembly:{...n,url:r}}}}}function mB(...e){for(let t of e)if(t!==void 0)return t}var hB=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),KN(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&&KN(this,`axisProps`),t}getAxisProps(){return GN(this,`axisProps`,()=>{let e=uB(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:$R(e.filter(e=>e!==void 0),`axis`,[`title`])})}getTitle(){let e=uB(this.#e).map(e=>{let t=Mh(e.view,e.channel);if(!Dh(t))return{member:e,axisTitle:`axis`in t?t.axis?.title:void 0,explicitTitle:mB(`axis`in t?t.axis?.title:void 0,t.title),implicitTitle:mB(Oh(t)?t.field:void 0,Ph(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(Wh(t.member.channel)&&!t.explicitTitle){let n=Kh(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=>mB(e.explicitTitle,e.implicitTitle)).filter(F));return r.size?[...r].join(`, `):null}},gB=e=>{if(Ah(e))return e;if(Ih(e)){let t=e.condition;if(!Array.isArray(t)&&Ah(t))return t}},_B=(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},vB=(e,t,n)=>{if(!t.resolutions.scale[n]){let r=new dB(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]},yB=(e,t,n,r)=>{let i=gB(r);if(!i)return;let a=Kh(i.resolutionChannel??n);if(Yh(a)&&!(t==`axis`&&!Vh(a)))return{view:_B(e,t,a),channel:n,channelDef:i,targetChannel:a}},bB=(e,t)=>{for(let[n,r]of Object.entries(e.mark.encoding))!r||Array.isArray(r)||t(n,r)},xB=e=>{let t=[];return bB(e,(n,r)=>{let i=yB(e,`axis`,n,r);i&&Vh(i.channel)&&t.push(i)}),t},SB=e=>{let t=new Map;return bB(e,(n,r)=>{let i=yB(e,`scale`,n,r);if(!i)return;let a=vB(e,i.view,i.targetChannel),o=t.get(a);o?o.push(i):t.set(a,[i])}),t},CB=(e,t)=>{for(let{view:n,channel:r,channelDef:i,targetChannel:a}of t){if(!Vh(r)||!Bh(a))continue;n.resolutions.axis[a]||(n.resolutions.axis[a]=new hB(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]})}},wB=(e,t)=>{dB.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])})}})},TB=(e,t)=>{if(!t){TB(e,`scale`),TB(e,`axis`);return}t==`axis`?CB(e,xB(e)):wB(e,SB(e))},EB={point:wP,rect:_P,rule:AP,tick:AP,link:HP,text:JP},DB=class extends YL{#e;#t=!1;#n=null;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e;let o=EB[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 Lh)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=og(t.select),r=n.on,i=n.clear;if(sg(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?VL(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[oh]:0,l;n.toggle?r.mouseEvent.shiftKey?i&&(l=tg(this.paramRuntime.getValue(e),{toggle:[i]})):l=$h(i?[i]:null):c!=t&&(t=c,l=Qh(i)),l!==void 0&&a(l)}),i){let e=i.filter?VL(i.filter):()=>!0;this.addInteractionListener(i.type,r=>{e(r.proxiedMouseEvent)&&(t=0,a(n.toggle?$h():Qh(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}TB(this,e)}dispose(){super.dispose(),this.mark.dispose()}getDataAccessor(e){let t=this.mark.encoders;if(t)return t[e]?wh(t[e]):void 0}getSearchAccessors(){return this.#n||=(tR(this.getEncoding())??[]).map(e=>z(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=qm(e),r=new Map;for(let e of Object.values(t)){if(!e)continue;let t=Ch(e);if(t.length!==0)for(let e of t){if(!fh(e))continue;let t=this.getScaleResolution(e.scaleChannel);if(!t)throw Error(`Missing scale resolution for channel: `+e.scaleChannel);if(e.channelDef.domainInert||OB(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 Lh.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 OB(e,t,n){return!t.isDomainDefinedExplicitly()&&n.has(Kh(e.scaleChannel))}var kB=class extends Error{constructor(e,t){super(t),this.kind=e}};async function AB(e,t={}){let n;try{n=await fetch(e,{signal:t.signal})}catch(e){throw new kB(`network`,String(e))}if(!n.ok)throw new kB(`http`,String(n.status)+` `+n.statusText);try{return await n.json()}catch(e){throw new kB(`json`,String(e))}}function jB(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 MB(e){for(let t of Lh){let n=e.getScaleResolution(t);n&&!n.name&&n.isZoomable()&&(n.name=`${t}_at_root`)}}function NB(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 PB(e,t,n){let r=e.import;if(!(`url`in r))throw Error(`Not an url import: `+JSON.stringify(r));let i=sF(t,r.url),a;try{a=await AB(i)}catch(e){throw Error(`Could not load imported view spec: ${i}. Reason: ${e.message}`,{cause:e})}if(n.isViewSpec(a))return a.baseUrl=sF(lF(r.url),a.baseUrl),a;throw Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(e)}`)}function FB(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*IB(e,t=[]){for(let[n,r]of e.entries())if(r instanceof Map)for(let e of IB(r,[...t,n]))yield e;else yield[[...t,n],r]}var LB=2147483647,RB=BB([LB]);function zB(e){for(let t=1;t<e.length;t++)if(e[t]<e[t-1])return!1;return!0}function BB(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 VB(e){let t=BB(e),n=Array.from({length:e.length},(e,t)=>t);if(zB(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>=RB?i>LB?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 HB=`|`,UB=`\\`,WB=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+=HB);let r=i[n],a=GB(t[n],r);e+=qB(a)}a=e}else{let e=i[0];a=GB(t[0],e)}return this.#e.get(a)}#r(e,t){let n=e.map(e=>z(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+=HB);let r=e[t],i=GB(n[t](o),r);s+=qB(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=GB(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 GB(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 KB(e){if(!(e.indexOf(UB)!==-1||e.indexOf(HB)!==-1))return e;let t=``;for(let n=0;n<e.length;n++){let r=e[n];(r===UB||r===HB)&&(t+=UB),t+=r}return t}function qB(e){return typeof e==`string`?KB(e):String(e)}var JB=class extends Km{#e=[];#t=z(oh);#n=[];#r=new WB;#i;#a;#o=new YB;get behavior(){return 4}get label(){return`collect`}constructor(e){super(),this.params=e??{type:`collect`},this.observers=new Set,this.facetBatches=new mn([],JSON.stringify),this.#a=ZB(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(),Ym(e)&&(this.#e=[],this.facetBatches.set(Yl(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=>z(e)),n=t.length>1?bn(e,...t):XB(e,t[0]);this.facetBatches.clear();for(let[e,t]of IB(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=Lz(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=VB(n)}findDatumByUniqueId(e){if(!this.#n.length)return;let t=an(e=>e.start).right,n=this.#t,r=an(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())}},YB=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 XB(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 ZB(e){if(e?.field){let t=Yl(e.field);if(t.length==1&&!t[0].includes(`.`)){let n=Yl(e.order)[0]??`ascending`,r=JSON.stringify(t[0]);return Function(`a`,`b`,`return a[${r}] ${n===`ascending`?`-`:`+`} b[${r}];`)}return mt(e.field,e.order)}}var QB=class extends ah{get behavior(){return 1}constructor(e){super(e),this.params=e,this.startAccessor=z(e.start),this.endAccessor=z(e.end),this.chromAccessor=e.chrom?z(e.chrom):e=>void 0,this.weightAccessor=e.weight?z(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 dF}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 $B(e,t,n=e=>+e,r=0,i=e.length){let a=new dF,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 eV=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}},tV=class extends ah{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=z(this.params.pos),this.endPosAccessor=z(this.params.pos2??this.params.pos),this.startPosBisector=an(this.startPosAccessor),this.endPosBisector=an(this.endPosAccessor),this.scoreAccessor=z(this.params.score),this.widthAccessor=z(this.params.width),this.laneAccessor=this.params.lane?z(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.schedule();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 eV(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=$B(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)}},nV=class extends ah{constructor(e,t){super(e,t),this.params=e,this.predicate=void 0}initialize(){let e;if(rV(this.params))e=this.params.expr;else if(iV(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=ng(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 rV(e){return`expr`in e}function iV(e){return`param`in e}var aV=class extends ah{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=e.index;if(e.fields){let n=Yl(e.fields).map(e=>z(e)),r=Yl(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)}}}},oV=48;function*sV(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-oV}yield r}var cV=class extends ah{get behavior(){return 1}constructor(e){super(e);let t=z(e.exons??`exons`),n=z(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 sV(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}}}},lV=class extends ah{get behavior(){return 1}constructor(e){super(e);let t=Yl(e.field).map(e=>z(e)),n=Yl(e.separator),r=Yl(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]));uV(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 uV(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 dV=class extends ah{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)}},fV=class extends ah{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=z(e.chrom),o=Yl(e.pos).map(e=>z(e)),s=Yl(e.as);if(o.length!=s.length)throw Error(`The number of "pos" and "as" elements must be equal!`);let c=Yl(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(`
|
|
799
|
-
`)),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)}}},
|
|
805
|
+
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)}}},CV=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()}},wV=65536,TV=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(wV),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)}}}},EV=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(Ve);this.handle=e=>{let r={};for(let i=0;i<t.length;i++)r[n[i]]=t[i](e);this._propagate(r)}}},DV=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)}}},OV=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 {
|
|
800
808
|
`+u.join(`,
|
|
801
809
|
`)+`
|
|
802
|
-
};`)},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=>{
|
|
803
|
-
`)+` };`);return n.properties=t,n}function VV(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 HV=class extends ah{get behavior(){return 1}#e;#t=e=>e;constructor(){super({type:`clone`});let e=e=>{let t=VV(e);(!this.#e||!Jl(t,this.#e))&&(this.#e=t,this.#t=BV(e));let n=this.#t;this.handle=e=>this._propagate(n(e)),this.handle(e)};this.handle=e,this.beginBatch=t=>{Jm(t)&&(this.handle=e),super.beginBatch(t)}}};function UV(e){return`name`in e}var WV=class extends Xm{#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=DC(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()}},GV=class{#e;#t;loadingStatusRegistry;constructor(){this.#e=new Set,this.#t=new Set,this.loadingStatusRegistry=new TT}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 Xm?this.removeDataSource(e):e.dispose()}}findNamedDataSource(e){let t;for(let n of this.#e.values())if(n instanceof WV&&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 KV(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 qV(e,t,n){let r=t.preOrder?.(e);if(r)return r;for(let r of n(e)){let e=qV(r,t,n);if(e===`stop`)return e}return t.postOrder?.(e)}function JV(e,t){return qV(e,t,e=>e.children)}function YV(e,t,n,r){let i=[],a=[],o,s=t??new GV,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=CV(n,t)}catch(e){throw console.warn(e),Error(`Cannot initialize "${n.type}" transform: ${e}`,{cause:e})}e.behavior&2&&d(new HV),d(e)}}function p(){return i.findLastIndex(e=>e instanceof lh)>i.findLastIndex(e=>e instanceof Xm)}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 DB)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=UV(e.spec.data)?new WV(e.spec.data,e,e.context.getNamedDataFromProvider):RV(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 DB){if(!o)throw Error(`A unit view (${e.getPathString()}) has no (inherited) data source`);let t=ZV(e);if(t){c.push(t.rewrite);for(let e of t.transforms)d(e)}e.mark.isPickingParticipant()&&!p()&&(d(new HV),d(new lh({type:`identifier`})));let n=new JB({type:`collect`,groupby:e.getFacetFields(),sort:QV(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=KV(XV(e,n),e=>e.dataParent);for(let e of h)JV(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 XV(e,t){if(!t)return e.getDescendants();let n=[];return e.visit(e=>{if(!t(e))return KL;n.push(e)}),n}function ZV(e){let t=[],n={},r=e.mark.encoding,i=e.getEncoding(),a=[];for(let[e,t]of Object.entries(r)){let n=e;Kh(n)!==n&&!(n in i)||Vh(n)&&!Array.isArray(t)&&Nh(t)&&a.push({channel:n,chromPosDef:t})}let o=bn(a,e=>Kh(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 HV),t.push(new fV({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},KN(e.mark,`encoding`)}}:void 0}function QV(e,t){let n={...e.getEncoding(),...t}.x;if(Ah(n)&&e.getScaleResolution(`x`)?.isZoomable()){if(Oh(n))return`buildIndex`in n&&n.buildIndex?{field:n.field}:null;if(!kh(n)&&Ph(n))throw Error(`A zoomable x channel must be mapped to a field.`)}}function $V(e,t=void 0){if(e.parent!==t)return!1;for(let t of e.children)if(!$V(t,e))return!1;return!0}function eH(e,t=!1){if(e.behavior&4&&(t=!0),e instanceof HV)if(t)t=!1;else{let n=e.children[0];e.excise(),n&&eH(n,t);return}e.behavior&1&&(t=!1);for(let n=0,r=e.children.length;n<r;n++)eH(e.children[n],t||r>1)}function tH(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 nH(e){if(eH(e),!$V(e))throw Error(`Encountered a bug! There's a problem in the data flow structure.`)}function rH(e){let t=tH(e);for(let t of e.dataSources)nH(t);return t}var iH=new WeakMap,aH=new WeakMap;function oH(e,t){let n=iH.get(e);if(n){if(!t?.queueReload)return n;let r=aH.get(e);if(r)return r;let i=n.catch(()=>{}).then(()=>oH(e)).finally(()=>{aH.delete(e)});return aH.set(e,i),i}let r=Promise.resolve().then(()=>e.load()).finally(()=>{iH.delete(e)});return iH.set(e,r),r}function sH(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 cH(e,t,n,r){let i=r??(()=>!0),a=fH(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=YV(e,t,n,e=>o.has(e)),sH(e,rH(s))}catch(e){for(let e of a)e._setDataInitializationState(`none`);throw e}let c=lH(a);for(let e of c)e.visit(e=>e.initializeOnce());let l=a.filter(e=>e instanceof DB),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 lH(e,t){let n=Array.isArray(e)?e:fH(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 uH(e,t){let n=new Set;return e.visit(e=>{if(t&&!t(e))return KL;if(e.flowHandle?.dataSource)return n.add(e.flowHandle.dataSource),KL}),n}function dH(e,t,n,r){return t||=uH(e,n),Promise.all(Array.from(t).map(e=>oH(e,r))).then(t=>(pH(e),t))}function fH(e,t){let n=[];return t?(e.visit(e=>{if(!t(e))return KL;n.push(e)}),n):e.getDescendants()}function pH(e){let t={type:`subtreeDataReady`,payload:{subtreeRoot:e}};e.visit(e=>e.handleBroadcast(t))}async function mH(e,t,n,r){let i=e=>e.isConfiguredVisible(),{dataFlow:a,graphicsPromises:o}=cH(e,t,i);return r(a),await n.waitUntilReady(),await dH(e,new Set(a.dataSources),i),await NB(o),a}async function hH(e,t,n){let r=e=>e.isConfiguredVisible(),i=gH(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=vH(e);t?s.add(t):c.push(e)}let{dataFlow:l,graphicsPromises:u}=cH(e,t,r,o);await n.waitUntilReady();for(let e of s)e.repropagate();if(c.length){let e=_H(c);await Promise.all(Array.from(e.entries()).map(([e,t])=>dH(e,t,void 0,{queueReload:!0})))}return await NB(u),l}function gH(e,t){let n=[];return e.visit(e=>{if(!t(e))return KL;n.push(e)}),n}function _H(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 vH(e){let t=e.dataParent;for(;t;){let e=t.flowHandle?.collector;if(e)return e.completed?e:void 0;t=t.dataParent}}var yH=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 nB({requestAnimationFrame:e=>this.requestTransition(e),...e})}};function bH(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 xH=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=SH(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 uR({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 uR({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 uR({name:t,contigs:e.contigs});return this.genomes.set(t,n),n}let r=new uR({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 uR({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 SH(e){return typeof e==`string`?`name:${e}`:`inline:${JSON.stringify(e)}`}var CH={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:[]},wH=`data:image/png;base64,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`,TH={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900},EH=class{constructor(e){this._webGLHelper=e,this.fontRepository=`https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/`,this._fonts=new mn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:SM(CH),texture:e?this._createTextureNow(wH):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,t=`normal`,n=`regular`){if(F(n)&&(n=TH[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=kH(await this._loadMetadata(t.family),t),r=this.fontRepository+DH(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=>SM(e)),this._fontPromises.set(e,t)),t}_loadMetadata(e){let t=DH(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=>OH(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)=>{Sk(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=Sk(t,{src:e,min:t.LINEAR},(e,t,n)=>{e?i(e):r(t)})});return this._promises.push(r),n}};function DH(e){return e.toLowerCase().replaceAll(/[^\w]/g,``)}function OH(e){let t=e.split(`
|
|
804
|
-
`),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
|
|
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)}}},kV=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()}},AV=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)}}}},jV={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},MV={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=jV[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=>jV.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 KB(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:iV,coverage:cV,filterScoredLabels:dV,filter:fV,flatten:hV,flattenCompressedExons:vV,flattenDelimited:yV,flattenSequence:AV,formula:xV,identifier:uh,linearizeGenomicCoordinate:SV,measureText:CV,pileup:TV,project:EV,regexExtract:DV,regexFold:OV,sample:AP,stack:kV};function NV(e,t){let n=MV[e.type];if(n)return new n(e,t);throw Error(`Unknown transform: `+e.type)}var PV=new Set([`application/gzip`,`application/x-gzip`]),FV=new TextDecoder,IV=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 UV(r,t,MC(n.type)),jC(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=AC(this.params,t),r=MC(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 UV(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,jC(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 LV(e){return`url`in e}function RV(e){return e.length>=10&&e[0]==31&&e[1]==139&&e[2]==8&&(e[3]&224)==0}function zV(e){return e?PV.has(e.split(`;`)[0].trim().toLowerCase()):!1}function BV(e){return e?e.toLowerCase().split(`,`).some(e=>e.trim()==`gzip`):!1}function VV(e){return new Uint8Array(e).buffer}async function HV(e){if(typeof DecompressionStream!=`function`)throw Error(`Gzip-compressed URL data requires DecompressionStream support.`);let t=new Response(VV(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 UV(e,t,n){if(!(PC(t)||zV(e.headers.get(`content-type`))||BV(e.headers.get(`content-encoding`))))return WV(e,n);let r=new Uint8Array(await e.arrayBuffer());return GV(RV(r)?await HV(r):r,n)}function WV(e,t){return typeof e[t]==`function`?e[t]():e.text()}function GV(e,t){return t==`arrayBuffer`?VV(e):FV.decode(e)}function KV(e){return`sequence`in e}var qV=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 JV(e,t){if(EC(e))return new DC(e,t);if(LV(e))return new IV(e,t);if(KV(e))return new qV(e,t);if(YV(e))return Km(e.lazy,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}function YV(e){return`lazy`in e}function XV(e){let t=ZV(e).filter(e=>typeof e==`string`),n=Function(`source`,`return { `+t.map(e=>JSON.stringify(e)).map(e=>`${e}: source[${e}]`).join(`,
|
|
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 zH(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 BH=new Map,VH={Organism:`Homo sapiens`};async function HH(e,t,n={}){let r=e.symbol,i={...VH,GENE:r};for(let[e,t]of Object.entries(n))typeof t==`string`&&(i[e]=t);let a=BH.get(r)??await GH(i);return a?(BH.set(r,a),O`
|
|
805
813
|
<div class="title">
|
|
806
814
|
<strong>${a.name}</strong>
|
|
807
815
|
${a.description}
|
|
808
816
|
</div>
|
|
809
817
|
<p class="summary">${a.summary}</p>
|
|
810
818
|
<p class="source">Source: NCBI RefSeq Gene</p>
|
|
811
|
-
`):null}async function
|
|
819
|
+
`):null}async function UH(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:KH(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 WH=bg(UH,500);function GH(e){return WH(e)}function KH(e){return Object.entries(e).filter(([e,t])=>t&&t.length>0).map(([e,t])=>`("${t}"[${e}])`).join(` AND `)}var qH=sr(`.4~r`),JH=sr(`.4~e`);function YH(e){return e==null?O` <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?JH(e):qH(e):St(e)?e?`True`:`False`:Ze(e)?O`${e.map((t,n)=>[YH(t),n<e.length-1?`, `:xe])}`:`?`+typeof e+` `+e}function XH(e){let t=[];return ZH(Object.entries(e),t),t}function ZH(e,t,n){for(let[r,i]of e)r.startsWith(`_`)||(typeof i==`object`&&i&&!Array.isArray(i)?ZH(Object.entries(i),t,(n||``)+r+`.`):t.push({key:(n||``)+r,value:i}))}var QH={x:`x2`,y:`y2`},$H=new Set([`auto`,`locus`,`interval`,`endpoints`,`disabled`]),eU=new WeakMap;function tU(e,t,n){let r=nU(t),i=iU(`x`,e,t,r,gU(n,`x`)),a=iU(`y`,e,t,r,gU(n,`y`)),o=i.rows.length>0&&a.rows.length>0,s=[...o?rU(`x`,i.rows):i.rows,...o?rU(`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||_U(e,i,n,t)&&(c.add(n.chrom),c.add(n.pos))}return{hiddenRowKeys:[...c],genomicRows:s,flattenDatumRows:()=>XH(e),formatGenomicLocus:(e,n)=>pU(t,e,n),formatGenomicInterval:(e,n)=>mU(t,e,n)}}function nU(e){let t=eU.get(e);if(t)return t;let n=dU(e);return eU.set(e,n),n}function rU(e,t){let n=e.toUpperCase()+` `;return t.map(e=>({key:n+e.key,value:e.value}))}function iU(e,t,n,r,i){let a=new Set;if(i===`disabled`)return{rows:[],usedLinearizedFields:a};let o=uU(n,e,t);if(!o)return{rows:[],usedLinearizedFields:a};o.field&&a.add(o.field);let s=uU(n,QH[e],t);s?.field&&a.add(s.field);let c=i===`auto`?aU(o,s,r):i;if(c===`endpoints`&&s){let[t,i]=sU(o,s,r);return{rows:[{key:`Endpoint 1`,value:pU(n,e,t.value)??String(t.value)},{key:`Endpoint 2`,value:pU(n,e,i.value)??String(i.value)}],usedLinearizedFields:a}}return c===`interval`&&s?{rows:[{key:`Interval`,value:mU(n,e,[o.value,s.value])??o.value+` - `+s.value}],usedLinearizedFields:a}:{rows:[{key:`Coordinate`,value:pU(n,e,o.value)??String(o.value)}],usedLinearizedFields:a}}function aU(e,t,n){if(!t)return`locus`;let r=oU(e.field,n),i=oU(t.field,n);return r&&i&&r!==i?`endpoints`:`interval`}function oU(e,t){let n=e?t.get(e):void 0;return n&&!n.ambiguous?n.groupId:void 0}function sU(e,t,n){let r=cU(e.field,n),i=cU(t.field,n);return r===2&&i!==2||i===1&&r!==1||r===2&&i===1?[t,e]:[e,t]}function cU(e,t){let n=e?t.get(e):void 0,r=[n?.pos,n?.chrom,e],i;for(let e of r){let t=lU(e);if(t!==void 0){if(i===void 0)i=t;else if(i!==t)return}}return i}function lU(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 uU(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 dU(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=fU(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 fU(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 pU(e,t,n){return hU(e,t)?.formatLocus(n)}function mU(e,t,n){return hU(e,t)?.formatInterval(n)}function hU(e,t){let n=e.encoders?.[t]?.scale;return n?.type===`locus`&&`genome`in n?n.genome():void 0}function gU(e,t){let n=e?.genomicCoordinates?.[t],r=typeof n==`string`?n:n?.mode??`auto`;if(!$H.has(r))throw Error(`Unknown genomic coordinate display mode: "`+r+`"`);return r}function _U(e,t,n,r){let i=hU(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 vU(e,t,n,r){let i=e=>qe(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)?O`
|
|
812
820
|
<span
|
|
813
821
|
class="color-legend color-legend-unmapped"
|
|
814
822
|
></span>
|
|
@@ -817,9 +825,9 @@ chrM 16299`};function lR(e){if(!(e in cR))throw Error(`Unknown assembly: ${e}`);
|
|
|
817
825
|
class="color-legend"
|
|
818
826
|
style=${`background-color: `+String(e)}
|
|
819
827
|
></span>
|
|
820
|
-
`}default:}}return``},s=r??
|
|
828
|
+
`}default:}}return``},s=r??tU(e,t,n),c=s.flattenDatumRows?s.flattenDatumRows():XH(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=O`
|
|
821
829
|
<table class="attributes">
|
|
822
|
-
${f.map(t=>{let n=
|
|
830
|
+
${f.map(t=>{let n=YH(t.value),r=o(t.key,t.value,e);return O`
|
|
823
831
|
<tr>
|
|
824
832
|
<th>${t.key}</th>
|
|
825
833
|
<td>${n} ${r}</td>
|
|
@@ -830,4 +838,4 @@ chrM 16299`};function lR(e){if(!(e in cR))throw Error(`Unknown assembly: ${e}`);
|
|
|
830
838
|
<div class="title">
|
|
831
839
|
<strong>${m}</strong>
|
|
832
840
|
</div>
|
|
833
|
-
`:``}${p}`}var lU=class e extends YL{#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,qL}),t}getDefaultResolution(e,t){return`shared`}};function uU(e){jB(e),MB(e)}function dU(e){e.getDescendants().forEach(e=>e.configureViewOpacity())}var fU=new WeakMap,pU=new WeakMap,mU=new WeakMap;function hU(e,t){if(t!==null&&typeof t!=`string`)throw Error(`Import scope name must be a string or null.`);fU.set(e,{name:t})}function gU(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;pU.set(e,n)}function _U(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;mU.set(e,n)}function vU(e){let t=e.getDataAncestors(),n=[];for(let e=t.length-1;e>=0;--e){let r=fU.get(t[e]);r&&typeof r.name==`string`&&n.push(r.name)}return n}function yU(e,t){e.visit(e=>{let n=pU.get(e);if(n===`excludeSubtree`)return KL;if(n!==`exclude`)return t(e)})}function bU(e){let t=[];for(let n of SU(e)){let r=CU(n);TU(e,r,t),EU(e,r,t)}return t}function xU(e){return e.persist===!1?!1:mg(e)?!0:pg(e)?!!e.bind:!1}function SU(e){let t=new Set([e]);return e.visit(e=>{let n=fU.get(e);n&&typeof n.name==`string`&&t.add(e)}),Array.from(t)}function CU(e){return vU(e)}function wU(e){return e.length?`import scope [`+e.join(` / `)+`]`:`import scope (root)`}function TU(e,t,n){let r=new Map;kU(e,t,e=>{for(let[t,n]of e.paramRuntime.paramConfigs){if(!xU(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 `+wU(t)+`. Found in: `+r+`.`,scope:t})}}function EU(e,t,n){let r=DU(e,t);if(!r.length)return;let i=r.filter(e=>OU(e));if(i.length<=1)return;let a=new Map;for(let e of i){let t=fU.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 `+wU(t)+`.`,scope:t})}function DU(e,t){let n=[];return kU(e,t,e=>{if(vU(e).length!==t.length+1)return;let r=fU.get(e);!r||typeof r.name!=`string`||n.push(e)},{includeNamedImportRoots:!0}),n}function OU(e){let t=!1;return e.visit(e=>{let n=pU.get(e);if(n===`excludeSubtree`)return KL;if(n!==`exclude`){for(let n of e.paramRuntime.paramConfigs.values())if(xU(n))return t=!0,qL}}),t}function kU(e,t,n,r={}){let i=r.includeNamedImportRoots??!1;e.visit(e=>{let r=fU.get(e),a=pU.get(e);if(a===`excludeSubtree`)return KL;if(a!==`exclude`&&AU(e,t,r,i))return n(e)})}function AU(e,t,n,r){let i=vU(e);return jU(i,t)?!0:!r||!n||typeof n.name!=`string`||i.length!==t.length+1?!1:MU(t,i)}function jU(e,t){return e.length===t.length?MU(e,t):!1}function MU(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 NU(e){let t=[],n=!1,r=FU(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 PU(e,t){let{assemblies:n,needsDefaultAssembly:r}=NU(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 FU(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),yU(e,r),t}var IU=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 PU(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),dU(o);let{dataSources:c,graphicsPromises:l}=cH(o,this.container.context.dataFlow,e=>e.isConfiguredVisible());return await dH(o,c),await NB(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())}},LU=.5;function RU(e){return`multiscale`in e&&k(e.multiscale)}function zU(e){if(!e.multiscale.length)throw Error(`"multiscale" must contain at least one child view.`);let t=BU(e.stops,e.multiscale.length),n=e.multiscale.map((n,r)=>e.multiscale.length===1?n:{opacity:HU(r,e.multiscale.length,t),layer:[n]}),r={...e};return delete r.multiscale,delete r.stops,{...r,layer:n}}function BU(e,t){let n=`unitsPerPixel`,r,i=`auto`,a=LU;if(k(e))r=VU(e,t,`stops`);else if(Ze(e))n=e.metric??`unitsPerPixel`,r=VU(e.values,t,`stops.values`),i=e.channel??`auto`,a=e.fade??LU;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(!B(e)&&(!Number.isFinite(e)||e<=0))throw Error(`Invalid stop value at index `+t+`. Stop values must be positive finite numbers.`)}),!r.some(B)){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 VU(e,t,n){if(!k(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(!B(t)&&!Number.isFinite(t))throw Error(`"`+n+`" must contain only numbers or ExprRefs.`);return e}function HU(e,t,n){let r,i,a=n.values.map(e=>({hi:UU(e,1+n.fade),lo:UU(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 UU(e,t){return B(e)?{expr:`(`+e.expr+`) * `+t}:e*t}function WU(e){return`mark`in e&&(F(e.mark)||Ze(e.mark))}function GU(e){return`layer`in e&&Ze(e.layer)}function KU(e){return`import`in e}function qU(e){return`vconcat`in e&&k(e.vconcat)}function JU(e){return`hconcat`in e&&k(e.hconcat)}function YU(e){return`concat`in e&&k(e.concat)}var XU=class extends lU{#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(!GU(e)&&!WU(e)&&!RU(e))throw new QN(`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 IU(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)}},ZU=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 QU(e){return()=>e}var $U=class e{static create(t,n,r,i){return new e(QU(t),QU(n),QU(r),QU(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`?QU(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(QU(this.x),QU(this.y),QU(this.width),QU(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)}`}},eW={x:`axisX`,y:`axisY`},tW={top:`axisTop`,bottom:`axisBottom`,left:`axisLeft`,right:`axisRight`},nW={nominal:`axisNominal`,ordinal:`axisOrdinal`,quantitative:`axisQuantitative`,index:`axisIndex`,locus:`axisLocus`};function rW(e,{channel:t,orient:n,type:r,style:i}){let a=iP(i);return rP(e.flatMap(e=>{let i=eW[t],o=n?tW[n]:void 0,s=r?nW[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=>iP(e?.style)).map(t=>e.style?.[t]),...c,...a.map(t=>e.style?.[t])]}))}var iW=`chromosome_ticks_and_labels`,aW=`labels_main`,oW=`ticks_and_labels`,sW=`axisExtent`,cW=`_labelWidth`,lW=10,uW=2;function dW(e){return e==`x`?`y`:`x`}var fW={x:[`bottom`,`top`],y:[`left`,`right`]},pW=Object.fromEntries(Object.entries(fW).map(([e,t])=>t.map(t=>[t,e])).flat(1));function mW(e){return pW[e]}var hW=class extends XU{#e;#t;#n;#r=!1;#i=!1;constructor(e,t,n,r,i,a){let o=mW(e.orient),s=rW(i.getConfigScopes(),{channel:o,orient:e.orient,type:t,style:e.style}),c={...s,...e},l={...s,...xW(t,c),...e};super(t==`locus`?CW(l,t):SW(l,t),n,r,i,`axis_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=l,this.#e=gW(l),this.#t=this.paramRuntime.allocateSetter(sW,this.#e),gU(this,{skipSubtree:!0}),_U(this,{skipSubtree:!0})}async initializeChildren(){await super.initializeChildren();let e=this.getDescendants().find(e=>e instanceof DB&&e.name===aW);e instanceof DB&&(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 pW[this.axisProps.orient]==`x`?new ZP(t,e):new ZP(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=mW(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=gW(this.axisProps,n);r>=this.#e+uW&&(this.#e=r,this.#t(r),this.invalidateSizeCache(),this.context.requestLayoutReflow())}};function gW(e,t){let n=_W(e);return e.labels&&(n+=t??vW(e)),yW(e,n)}function _W(e){let t=e.ticks&&e.tickSize||0;return e.labels&&(t+=e.labelPadding),e.title&&(t+=e.titlePadding+e.titleFontSize),t}function vW(e){return mW(e.orient)==`x`?e.labelFontSize:lW}function yW(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[cW])||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=mW(e.orient)==`x`?i*c+o*l:i*l+o*c;return Math.ceil(u)}function xW(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 SW(e,t){let n=e,r=mW(n.orient),i=dW(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:aW,transform:[{type:`measureText`,field:`label`,as:cW,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} / ${sW} * ${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:oW,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 CW(e,t){let n=e,r=mW(n.orient),i=dW(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} / ${sW} * ${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=SW({...e,...c},t);if(e.chromTicks||e.chromLabels){let i={name:iW,data:{lazy:{type:`axisGenome`,channel:mW(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==oW).forEach(t=>t.layer.filter(e=>e.name==aW).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 TW(e,t,n,r){return t()?(n(),e.stopped||r?.(),!0):!1}var EW=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 DW(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 OW(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 kW(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 AW(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 jW=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}},MW=0,NW=new WeakMap,PW=UW(),FW=6;function IW(){MW=performance.now()}function LW(){return performance.now()-MW<50}function RW(e){return function(...t){return IW(),e(...t)}}function zW(e,t,n,r,i){n=RW(n);let a=WW(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=BW(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=VW(e.x,r.datum)*t.width+t.x),e.y&&!e.y2&&!e.y.constant&&(c=(1-VW(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 EW(30),r=e.mouseEvent;r.preventDefault(),e.target?.context.suspendHoverTracking();let o=jW.fromMouseEvent(r),s=e=>{let r=jW.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),KW(a,t,o,n,i,{minSampleCount:5})};document.addEventListener(`mouseup`,c,!1),document.addEventListener(`mousemove`,s,!1)}else if(e.type==`touchgesture`){if(!DW(e.uiEvent))return;let t=e.uiEvent,{xDelta:r,yDelta:o,zDelta:s}=t;if(t.phase===`end`){t.pointerCount===1&&KW(a,a.touchPanEventBuffer,a.touchPanLastPoint,n,i,{minSampleCount:2,minVelocityPxPerMs:.03}),GW(a);return}a.touchPanPointerCount!==t.pointerCount&&(GW(a),a.touchPanPointerCount=t.pointerCount);let c=new jW(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 BW(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=VW(r.x,n.datum)*t.width+t.x,s=(1-VW(r.y,n.datum))*t.height+t.y,c=VW(r.x2,n.datum)*t.width+t.x,l=(1-VW(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,FW):FW,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 VW(e,t){let n=+e(t),r=e.scale;if(!r)return n;let i=HW(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 HW(e){return e&&`band`in e?e.band??.5:.5}function UW(){return{smoother:void 0,touchPanEventBuffer:new EW(30),touchPanLastPoint:void 0,touchPanPointerCount:0}}function WW(e){if(!e)return PW;let t=NW.get(e);return t||(t=UW(),NW.set(e,t)),t}function GW(e){e.touchPanEventBuffer=new EW(30),e.touchPanLastPoint=void 0,e.touchPanPointerCount=0}function KW(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&&qW(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=bH(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 qW(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 JW=class extends XU{constructor(e,t,n,r,i,a){super(QW(e,t),n,r,i,`axisGrid_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=e,gU(this,{skipSubtree:!0}),_U(this,{skipSubtree:!0})}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}};function YW(e,t){let n=e,r=mW(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 XW(e,t){let n=e,r=mW(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 ZW(e,t){let n=e,r=mW(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 QW(e,t){let n={...e},r=[];return n.chromGrid&&(n.chromGridFillOdd||n.chromGridFillEven)&&r.push(ZW(n,t)),n.chromGrid&&n.chromGridOpacity>0&&r.push(XW(n,t)),n.grid&&n.gridOpacity>0&&r.push(YW(n,t)),{name:`grid_layers`,resolve:{scale:{[mW(e.orient)]:`forced`,fill:`independent`,opacity:`independent`}},domainInert:!0,layer:r}}function $W(e){return rP(e.map(e=>e.title))}function eG(e,t){let n=iP(t);return n.length==0?{}:rP(e.flatMap(e=>n.map(t=>e.style?.[t])))}var tG={start:0,middle:.5,end:1},nG={start:`left`,middle:`center`,end:`right`},rG=`group-title`;function iG(e){let t={},n={x:0,y:0},r=tG[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 aG(e,t=[]){if(!e)return;let n=F(e)?{text:e}:e;if(!n.text||n.orient==`none`)return;let r=$W(t),i=eG(t,n.style??rG),{orientConfig:a}=iG({...r,...i,...n});return{...r,...a,...i,...n}}function oG(e,t=[]){let n=aG(e,t);if(!n)return;let{xy:r}=iG(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??nG[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 sG=class extends DB{#e;#t=$U.ZERO;#n=$U.ZERO;#r=$U.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}),gU(this,{skipSubtree:!0}),_U(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 $U(()=>this.#n.x+this.#n.width-i-r,()=>this.#n.y+r+this.scrollOffset,()=>i,()=>this.#s()):new $U(()=>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=kN(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=kN(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=bH(this.context.animator,e=>{this.setViewportOffset(e.x,{notify:!0,syncSmoother:!1})},35,.4,{x:e})}},cG=`intervalDragActive`,lG=class extends XU{constructor(e,t,n={}){let r=t(),i=Object.keys(r.intervals),{zindex:a=1,...o}=n;if(Lh.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:cG,value:!1}],resolve:{scale:{x:`forced`,y:`forced`}},data:{values:uG(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,gU(this,{skipSubtree:!0}),_U(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(uG(e))}))}getZindex(){return this._zindex}};function uG(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 dG(e,t){let n=[`cell`,...iP(t?.style)];return rP(e.flatMap(e=>[e.view,...n.map(t=>e.style?.[t])]).concat([t]))}var fG=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=$U.ZERO,e.needsAxes.x||e.needsAxes.y){let r=e.spec,i=dG(e.getConfigScopes(),`view`in r?r.view:void 0);this.backgroundZindex=i?.zindex??0,this.backgroundStrokeZindex=i?.strokeZindex;let a=hG(i);a&&(this.background=new DB(a,t.context,t,e,`background`+n,{blockEncodingInheritance:!0}),gU(this.background,{skipSubtree:!0}),_U(this.background,{skipSubtree:!0}));let o=gG(i);o&&(this.backgroundStroke=new DB(o,t.context,t,e,`backgroundStroke`+n,{blockEncodingInheritance:!0}),gU(this.backgroundStroke,{skipSubtree:!0}),_U(this.backgroundStroke,{skipSubtree:!0}));let s=aG(e.spec.title,e.getConfigScopes());this.titleZindex=s?.zindex??1;let c=oG(s);c&&(this.title=new DB(c,t.context,t,e,`title`+n,{blockEncodingInheritance:!0}),gU(this.title,{skipSubtree:!0}),_U(this.title,{skipSubtree:!0}))}e.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new sG(this,`horizontal`)),e.spec.viewportHeight!=null&&(this.scrollbars.vertical=new sG(this,`vertical`)),this.#e()}#e(){let e=this.view;for(let[t,n]of e.paramRuntime.paramConfigs){if(!(`select`in n))continue;let r=og(n.select);if(!cg(r))continue;let i=r.encodings,a=Object.fromEntries(i.map(e=>{let n=this.view.getScaleResolution(e),r=n?.getResolvedScaleType();if(!n||!r||!_m(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?VL(s.filter):()=>!0,l=pG(r.zoom,o,t),u=l?.filter?VL(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=()=>{_(eg(i))};this.selectionRect=new lG(this,g,r.mark);let y=e=>{this.selectionRect.paramRuntime.setValue(cG,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 $U.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(lg(g())&&(f=!0),c(t.proxiedMouseEvent))v(),p=!0;else if(lg(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=jW.fromMouseEvent(t.mouseEvent).subtract(n),o=e=>{let t=jW.fromMouseEvent(e).subtract(r),o;if(m){let e=t.subtract(n),r=m.translate(e.x,e.y);o=h(b(new jW(r.x,r.y)),b(new jW(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=mG(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=>ug(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(AW(t))||Math.abs(t.deltaX)>=Math.abs(t.deltaY)||!S(e.point))return;let n=g();if(!lg(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=mG(n,rB(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 fW[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(),!fW[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 hW(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={...rW(i.getConfigScopes(),{channel:t,orient:a.orient,type:e.scaleResolution.type,style:a.style}),...a};if(o.grid||o.chromGrid){let t=new JW(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 XU){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 DB&&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 iF(e(`top`),e(`right`),e(`bottom`),e(`left`)).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}};function pG(e,t,n){let r=e===void 0?!t:e;if(r===!1)return;if(r===!0)return{type:`wheel`};let i=dg(r);if(i.type!==`wheel`)throw Error(`Interval selection param "${n}" currently supports only "wheel" in "zoom".`);return i}function mG(e,t){let n=e.getScale();return Az(t,e.zoomExtent,{roundToIntegers:n.type===`index`||n.type===`locus`})}function hG(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 gG(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 _G={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}},vG=class{#e;#t;#n;#r;#i;constructor(e=_G){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=yG(this.#e.KeyD,this.#e.KeyA),n=yG(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 yG(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=xG(e.velocity,a,n,r.pressHalfLifeMs)}else e.holdMs=0,e.velocity=xG(e.velocity,0,n,r.releaseHalfLifeMs),Math.abs(e.velocity)<r.stopVelocity&&(e.velocity=0);return e.direction=t,e.velocity}function xG(e,t,n,r){return t+(e-t)*2**(-n/r)}function SG(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 CG(e){let t=SG(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 vG;#i=!1;#a=0;#o=e=>{if(!this.#i)return;let t=CG(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)&&(IW(),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=>{TG(e)||this.#r.isNavigationKey(e.code)&&CG(this.#t)&&this.#r.handleKeyDown(e.code)&&(e.preventDefault(),this.#c())}),e(`keyup`,e=>{this.#r.isNavigationKey(e.code)&&this.#r.handleKeyUp(e.code)&&CG(this.#t)&&(e.preventDefault(),this.#c())}))}#c(){this.#i||(this.#i=!0,this.#a=performance.now(),this.#e.animator.requestTransition(this.#o))}};function TG(e){return!!(e.altKey||e.ctrlKey||e.metaKey||EG(e.target))}function EG(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 DG=Object.freeze({size:1,color:`#ccc`,opacity:1,strokeDash:[4,4],strokeCap:`butt`}),OG=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 DB(AG(e),t,n,r,this.#e===`horizontal`?i(`separatorHorizontal`):i(`separatorVertical`),{blockEncodingInheritance:!0});return gU(a,{skipSubtree:!0}),_U(a,{skipSubtree:!0}),a}};function kG(e){if(!e)return null;let t=e===!0?{...DG}:{...DG,...e};return t.strokeDash===DG.strokeDash&&(t.strokeDash=DG.strokeDash.slice()),t}function AG(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 jG=Object.freeze({background:0,separator:10,grid:20,backgroundStroke:30,axis:40,selectionRect:80,scrollbar:90,title:100}),MG=10,NG=class extends lU{#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=kG(e.separator);if(s)for(let t of zG(e))this.#a[t]=new OG({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 fG(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 ZU(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 Lh){let n=this.resolutions.axis[t];if(!n)continue;let r=n.getAxisProps();if(!r)continue;let i=new hW({title:n.getTitle(),orient:fW[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:XP(e.map(e=>this.#s[e].view.getViewportSize()[t]))})))}#d(e){let t=this.#u(e),n=[];n.push(QP);for(let[e,r]of t.entries())e>0&&n.push({px:this.#t,grow:0}),(e==0||this.wrappingFacet)&&n.push(QP),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(QP);return n}#f(e){let t=0,n=0,r=e==`row`?this.spec.height:this.spec.width;if(r||r===0)return rF(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?iF.zero():new iF(t.at(0).axisBefore,e.at(-1).axisAfter,t.at(-1).axisAfter,e.at(0).axisBefore)}#h(){let e=e=>{let t=pW[e],n=this.#r[t];return n?.axisProps.orient===e?Math.max(n.getPerpendicularSize()+(n.axisProps.offset??0),0):0};return new iF(e(`top`),e(`right`),e(`bottom`),e(`left`))}getSize(){return this._cache(`size`,()=>new ZP(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=YP(this.#d(`column`),t.width,i),o=YP(this.#d(`row`),t.height,i),s=new ZU(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 $U(()=>t.x+C,()=>t.y+w,()=>E,()=>D),se=i.isScrollable(),ce=se?new $U(()=>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,jG.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(),jG.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(),jG.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=IG(i)||v;for(let t of Object.values(o))h(t.axisProps.zindex??0,jG.grid,()=>t.render(e,d,n));p.push(()=>i.render(e,f,S?{...n,clipRect:m}:n)),c&&h(VG(y.backgroundStrokeZindex,S),jG.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=HG(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(BG(r.axisProps.zindex,S),jG.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(BG(t.axisProps.zindex,S),jG.axis,()=>t.render(e,HG(d.shrink(y.view.getOverhang()),r,t),n))}u&&h(u.getZindex(),jG.selectionRect,()=>u?.render(e,f,n));for(let r of Object.values(y.scrollbars))h(1,jG.scrollbar,()=>{r.updateScrollbar(d,f),r.render(e,t,n)});l&&h(y.titleZindex,jG.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}RG(n)?LG(n)&&e.claimWheel():n.propagateInteraction(e);return}this.#o?.handlePointerEvent(t,e);for(let n of Object.values(t?.scrollbars??{}))if(TW(e,()=>n.coords.containsPoint(e.point.x,e.point.y),()=>n.propagateInteraction(e)),e.stopped)return;if(!n){r&&this.#y(e,r);return}TW(e,()=>!0,()=>n.propagateInteraction(e),RG(n)?()=>zW(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:PG(t,n)}}#_(){if(qU(this.spec))return`x`;if(JU(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 $U.create(i,a,o-i,s-a)}#y(e,t){e.target=this,zW(e,t.coords,e=>FG(t.coords,e,t.zoomableResolutions,this.context.animator),this.context.getCurrentHover(),this.context.animator)}#b(e,t,n){return FG(e,n,SG(t),this.context.animator)}getDefaultResolution(e,t){return`independent`}};function PG(e,t){let n={x:new Set,y:new Set};return n[e].add(t),n}function FG(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 IG(e){let t=!0;return e.visit(e=>{e instanceof DB&&(t&&=e.mark.properties.clip===!0)}),t}function LG(e){let t=SG(e);return t.x.size>0||t.y.size>0}function RG(e){return e instanceof DB||e instanceof XU}function zG(e){return`vconcat`in e?[`horizontal`]:`hconcat`in e?[`vertical`]:[`horizontal`,`vertical`]}function BG(e,t){return e??(t?MG:0)}function VG(e,t){return e??(t?MG:0)}function HG(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 UG=class extends NG{constructor(e,t,n,r,i,a){super(e,t,n,r,i,YU(e)?e.columns:qU(e)?1:1/0,a),this.spec=e}async initializeChildren(){let e=this.spec,t=YU(e)?e.concat:qU(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`:qU(this.spec)&&e===`x`||JU(this.spec)&&e===`y`?`shared`:`independent`}#e(){let e=this.spec,t;return t=YU(e)?e.concat:qU(e)?e.vconcat:e.hconcat,{specs:t,insertAt:(e,n)=>{t.splice(e,0,n)},removeAt:e=>{t.splice(e,1)}}}#t(){return new IU(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 WG({defaultConfig:e,builtInTheme:t,theme:n}){return rP([e,t,n])}function GG(e,t){if(!(!e&&!t))return rP([e,t])}var KG=`viewRoot`,qG=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(GU,t(XU)),this.addViewType(RU,((e,t,n,r,i,a)=>new XU(zU(e),t,n,r,i,a))),this.addViewType(WU,t(DB)),this.addViewType(qU,t(UG)),this.addViewType(JU,t(UG)),this.addViewType(YU,t(UG))}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 XG(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=KU(e)?e.name??null:void 0;if(KU(e)){let i;if(`url`in e.import)if(this.options.allowImport)i=await PB(e,r.getBaseUrl(),t);else throw new QN(`Importing views is not allowed!`,n);else if(`template`in e.import)i=JG(e.import.template,r);else throw Error(`Invalid import: `+JSON.stringify(e));a?.(i),YG(i,e),s=i}else s=e;let l=e=>e?.params?.some(e=>mg(e)&&og(e.select).type==`interval`),u=!1;if(!r&&this.options.wrapRoot&&(WU(s)||GU(s)||RU(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&&hU(d,c),u&&gU(d),d instanceof lU&&await d.initializeChildren(),d.registerStepSizeInvalidation(),d}};function JG(e,t){let n=t.spec?.templates?.[e];if(n)return structuredClone(n);if(t.dataParent)return JG(e,t.dataParent);throw Error(`Cannot find template "${e}" in current view or its ancestors!`)}function YG(e,t){t.name!=null&&(e.name=t.name),t.visible!=null&&(e.visible=t.visible),e.config=GG(t.config,e.config);let n=k(t.params)?t.params:Ze(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 XG(e){return`samples`in e&&Ze(e.samples)&&`spec`in e&&Ze(e.spec)}var ZG=class{constructor(e,t){this.animator=e,this.disabled=!!t,this.maxDistance=500,this.callback=null,this.targetValue=0,this.lastValue=0,this.smoother=bH(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=I([this.lastValue,this.targetValue],.3),this.smoother({x:this.targetValue}))}setMomentum(e,t){if(this.disabled){t(e);return}this.callback=t;let n=kN(this.targetValue+e-this.lastValue,-this.maxDistance,this.maxDistance);this.targetValue=this.lastValue+n,this.smoother({x:this.targetValue})}};function QG(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 $G=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(!OW(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||=AW(this.mouseEvent),this.#e}get mouseEvent(){if(this.uiEvent instanceof MouseEvent)return this.uiEvent;throw Error(`Not a MouseEvent!`)}get wheelEvent(){if(!OW(this.uiEvent))throw Error(`Not a WheelEvent!`);return this.#i?(this.#t||=kW(this.uiEvent,this.#i.deltaX,this.#i.deltaY),this.#t):this.uiEvent}},eK=class{#e;#t;#n;#r=[];constructor({viewRoot:e}){this.#e=e}dispatch(e,t){this.#t=e;let n=new $G(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 $G(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 $G(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 $G(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)}},tK=class{#e;#t;#n;constructor({canvas:e}){this.#e=e}update({target:e,hover:t}){this.#r(nK(e,t))}clear(){this.#r(void 0)}#r(e){if(rK(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 nK(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 rK(e,t){return!e||!t?e===t:e.owner===t.owner&&e.raw===t.raw}var iK=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 eK({viewRoot:e}),this.#l=new tK({canvas:t.canvas}),this.#u=void 0,this.#d=new ZG(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&&!LW()&&(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`)&&!LW())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=QG(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(jW.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=jW.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 jW(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:aK(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?oK(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 jW(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){LW()||(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=IM(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 DB){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 qL}}),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=GH(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 aK(e,t){let n=t.clientX-e.clientX,r=t.clientY-e.clientY;return Math.hypot(n,r)}function oK(e,t){return e<=0||t<=0?0:Math.log2(e/t)}var sK=class{constructor(e){this.globalOptions=e}pushView(e,t){}popView(e){}renderMark(e,t){}getDevicePixelRatio(){return 1}},cK=class extends sK{#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=Su(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=bn(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}}}},lK=class extends sK{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)}},uK=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 cK({picking:!1},{...n,clearColor:this.#n()}),this.#o=new cK({picking:!0},{...n,framebufferInfo:this.#t._pickingBufferInfo}),e.render(new lK(this.#a,this.#o),$U.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 dK(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`,`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 fK={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 pK(e){uU(e),dU(e)}function mK({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=oM(o,[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],s,c),u=new cK({picking:!1},{webGLHelper:e,canvasSize:{width:n,height:r},devicePixelRatio:i,clearColor:a,framebufferInfo:l});return t.render(u,$U.create(0,0,n,r)),u.render(),LM(o,l,`image/png`)}function hK(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)&&_K(t)?new Map:new Map([[t,n]]),defaultAssembly:t,deprecationWarning:gK()}}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)&&!_K(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 gK(){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 _K(e){try{return lR(e),!0}catch{return!1}}function vK(e,t,n){let r=bK(e,n);if(!r.size)return!0;for(let e of r)if(!xK(e,t))return!1;return!0}function yK(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=()=>{vK(t,n,a)&&(u(),i())},f=()=>{t.visit(e=>{if(!(e instanceof DB)||!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 bK(e,t){let n=t??(e=>e.isConfiguredVisible()),r=new Set;return e.visit(e=>{if(!(e instanceof DB)||!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 Zm&&r.add(i)}),r}function xK(e,t){let n=t??{[e.channel]:Array.from(e.scaleResolution.getDomain())};return e.isDataReadyForDomain(n)}var SK={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`}},CK={genomespy:{mark:{color:`#4c78a8`},rule:{color:`black`},text:{color:`black`},link:{color:`black`}},vegalite:SK,quartz:rP([SK,{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:rP([SK,{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:rP([SK,{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:rP([SK,{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`}}])},wK=Object.keys(CK);function TK(e){let t={...CK[e]};return delete t.background,t}function EK(e){if(!e)return[];let t=Array.isArray(e)?e:[e],n=t.filter(e=>!(e in CK));if(n.length>0)throw Error(`Unknown theme "`+n[0]+`". Available themes: `+wK.join(`, `));return t}var DK=`genomespy`;function OK(e){return CK[e].background}function kK(e){let t=EK(e);if(t.length!=0)return rP(t.map(e=>TK(e)))}var AK=class{#e=[];#t;#n;#r;#i;#a;#o;#s=new DT;#c=new OT;#l=new OT;constructor(e,t,n={}){this.container=e,this.options=n,n.inputBindingContainer??=`default`,this.spec=t,this.viewFactory=new qG,this.namedDataProviders=[],this.animator=new yH(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=e=>e.isVisibleInSpec(),this.tooltipHandlers={default:cU,refseqgene:MH,...n.tooltipHandlers??{}},this.viewRoot=void 0,this.#i=new AT(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()}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}=mT(this.container);this.#o=new MM(e,()=>this.viewRoot?FB(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 TT,this.#n=new wT(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 mH(this.viewRoot,e.dataFlow,e.fontManager,e=>this.broadcast(`dataFlowBuilt`,e)),this.#b(e)}async#h(){this.genomeStore=new xH(this.spec.baseUrl);let{genomesByName:e,defaultAssembly:t,deprecationWarning:n}=hK(this.spec);this.genomeStore.configureGenomes(e,t),n&&console.warn(n)}#g(){let e=new GV;e.loadingStatusRegistry=this.#r;let t=WG({defaultConfig:fK,builtInTheme:kK(DK),theme:rP([this.options.theme,kK(this.spec.theme)])});return dK({dataFlow:e,glHelper:this.#o,animator:this.animator,genomeStore:this.genomeStore,fontManager:new EH(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),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:ET(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,KG),await PU(this.viewRoot,this.genomeStore),this.#r.set(this.viewRoot,`loading`),this.#u.style.flexGrow=this.viewRoot.getSize().height.grow>0?`1`:`0`,this.#d(),pK(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 uK({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=OK(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=bU(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=>qN(e,`size`)),this.#o.invalidateSize(),this.#a=new iK({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)||hT(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 hH(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 yK(this.viewRoot.context,this.viewRoot,void 0,e,e=>e.isConfiguredVisible()&&jK(e))}updateTooltip(e,t){this.#a.updateTooltip(e,t)}exportCanvas(e,t,n,r=`white`){let i=mK({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 DB&&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 jK(e){let t=e;for(;t;){let e=t.flowHandle?.dataSource;if(e)return e instanceof bg;t=t.dataParent}return!1}var MK=`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`,NK=`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`,PK=[[`/docs/examples/`,`/docs/examples/`],[`/examples/core/`,`/examples/`],[`/examples/docs/`,`/examples/`],[`/examples/app/`,`/examples/`]],FK=/^(?:[a-z]+:)?\/\//i,IK=`https://example.invalid`;function LK(e){return FK.test(e)?`external`:e.startsWith(`/`)?`root`:`relative`}function RK(e){let t=new URL(e,IK),n=PK.find(([e])=>t.pathname.startsWith(e));if(n)return BK(n[1],t,LK(e))}function zK(e){let t=RK(e);if(t)return t;let n=new URL(e,IK);return BK(new URL(`./`,n).pathname,n,LK(e))}function BK(e,t,n){return n===`external`?t.origin+e:n===`root`?e:e.slice(1)}function VK(e){return async function(t,n,r={}){let i;if(F(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=Ze(n)?n:await UK(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),HK(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)},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 HK(e,t){t.namedDataProvider&&e.registerNamedDataProvider(t.namedDataProvider)}async function UK(e){let t;try{t=await AB(e)}catch(t){throw Error(`Could not load or parse configuration: ${e}, reason: ${t.message}`,{cause:t})}return t.baseUrl||=zK(e),t}var WK=VK(AK);e.GenomeSpy=AK,e.embed=WK,e.favIcon=NK,e.html=O,e.icon=MK,e.loadSpec=UK});
|
|
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});
|