jbrowse-plugin-graphgenomeviewer 7.4.2 → 7.4.3
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/README.md +45 -19
- package/dist/chunks/{GbzBaseSyntenyAdapter-BVLBK4OO.js → GbzBaseSyntenyAdapter-EKLUEECW.js} +2 -2
- package/dist/chunks/{GbzBaseSyntenyAdapter-BVLBK4OO.js.map → GbzBaseSyntenyAdapter-EKLUEECW.js.map} +1 -1
- package/dist/chunks/{GraphGenomeView-UCOAMRF7.js → GraphGenomeView-P3XMSKUQ.js} +2 -2
- package/dist/chunks/{GraphTrackSettingsDialog-MR7X75EY.js → GraphTrackSettingsDialog-UTYH6HEC.js} +2 -2
- package/dist/chunks/{HighlightColorDialog-ZBAZDYIR.js → HighlightColorDialog-G6AFRYUD.js} +2 -2
- package/dist/chunks/{LinearGraphDisplay-AJ5OZN27.js → LinearGraphDisplay-O4SQSXJJ.js} +2 -2
- package/dist/chunks/{MinigraphBubbleAdapter-PEQK5NII.js → MinigraphBubbleAdapter-3NJ2VLN2.js} +2 -2
- package/dist/chunks/{RgfaTabixAdapter-Q63YLPK4.js → RgfaTabixAdapter-55DGDID2.js} +2 -2
- package/dist/chunks/{WalkTabixSyntenyAdapter-N5PFI4LS.js → WalkTabixSyntenyAdapter-NHNSZZBX.js} +2 -2
- package/dist/chunks/{chunk-S75MFZDE.js → chunk-4I3K4RHE.js} +2 -2
- package/dist/chunks/{chunk-S75MFZDE.js.map → chunk-4I3K4RHE.js.map} +2 -2
- package/dist/chunks/{chunk-MEMUEG5Z.js → chunk-6OXXT2YP.js} +2 -2
- package/dist/chunks/{chunk-MEMUEG5Z.js.map → chunk-6OXXT2YP.js.map} +1 -1
- package/dist/chunks/{chunk-U5PIXAF2.js → chunk-CNNZDE6I.js} +2 -2
- package/dist/chunks/{chunk-U5PIXAF2.js.map → chunk-CNNZDE6I.js.map} +1 -1
- package/dist/chunks/{chunk-2XZYJLCE.js → chunk-CXOMX2I6.js} +1 -1
- package/dist/chunks/{chunk-2XZYJLCE.js.map → chunk-CXOMX2I6.js.map} +1 -1
- package/dist/chunks/{chunk-LFTZNUXB.js → chunk-DUPBXBYE.js} +2 -2
- package/dist/chunks/{chunk-LFTZNUXB.js.map → chunk-DUPBXBYE.js.map} +1 -1
- package/dist/chunks/{chunk-HI3YK2SO.js → chunk-F2DMEJEK.js} +2 -2
- package/dist/chunks/{chunk-RCXOOBLX.js → chunk-K4TFAHGC.js} +1 -1
- package/dist/chunks/{chunk-RCXOOBLX.js.map → chunk-K4TFAHGC.js.map} +1 -1
- package/dist/chunks/{chunk-DXNE2CFX.js → chunk-MCE6STZR.js} +2 -2
- package/dist/chunks/{chunk-DXNE2CFX.js.map → chunk-MCE6STZR.js.map} +1 -1
- package/dist/chunks/{chunk-SFYSQ52W.js → chunk-MNCPMOHJ.js} +2 -2
- package/dist/chunks/chunk-NFH2U74B.js +2 -0
- package/dist/chunks/{chunk-PUREF4BM.js → chunk-NPV7SRJD.js} +2 -2
- package/dist/chunks/{chunk-PUREF4BM.js.map → chunk-NPV7SRJD.js.map} +1 -1
- package/dist/chunks/{chunk-62AHPP6H.js → chunk-OKRGO7XA.js} +2 -2
- package/dist/chunks/{chunk-62AHPP6H.js.map → chunk-OKRGO7XA.js.map} +1 -1
- package/dist/chunks/{chunk-FWVXBJ64.js → chunk-P7VMOTUM.js} +2 -2
- package/dist/chunks/{chunk-FWVXBJ64.js.map → chunk-P7VMOTUM.js.map} +2 -2
- package/dist/chunks/{chunk-AWGMTI73.js → chunk-RU4WSKBO.js} +2 -2
- package/dist/chunks/{chunk-ZG2CQXOW.js → chunk-TGSDXZXI.js} +1 -1
- package/dist/chunks/{chunk-ZG2CQXOW.js.map → chunk-TGSDXZXI.js.map} +1 -1
- package/dist/chunks/{chunk-JSRGX4TC.js → chunk-UOFWYS6T.js} +1 -1
- package/dist/chunks/{chunk-JSRGX4TC.js.map → chunk-UOFWYS6T.js.map} +1 -1
- package/dist/chunks/{chunk-Q3BXNKEL.js → chunk-WGTLNVST.js} +2 -2
- package/dist/chunks/{chunk-Q3BXNKEL.js.map → chunk-WGTLNVST.js.map} +3 -3
- package/dist/chunks/{chunk-WJGCVNGH.js → chunk-XQFBLJU5.js} +2 -2
- package/dist/chunks/chunk-Y5DNBFDY.js +3 -0
- package/dist/chunks/chunk-Y5DNBFDY.js.map +7 -0
- package/dist/chunks/{chunk-WY5W5X62.js → chunk-ZAYC5OMQ.js} +2 -2
- package/dist/chunks/{chunk-WY5W5X62.js.map → chunk-ZAYC5OMQ.js.map} +1 -1
- package/dist/chunks/{renderSvg-Z7YIXVQ5.js → renderSvg-7G6NWBXF.js} +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +4 -4
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
- package/package.json +2 -2
- package/src/GraphGenomeView/pane/loadActions.ts +1 -1
- package/src/version.ts +1 -1
- package/dist/chunks/chunk-55DIX25J.js +0 -3
- package/dist/chunks/chunk-55DIX25J.js.map +0 -7
- package/dist/chunks/chunk-J3AXN7JQ.js +0 -2
- /package/dist/chunks/{GraphGenomeView-UCOAMRF7.js.map → GraphGenomeView-P3XMSKUQ.js.map} +0 -0
- /package/dist/chunks/{GraphTrackSettingsDialog-MR7X75EY.js.map → GraphTrackSettingsDialog-UTYH6HEC.js.map} +0 -0
- /package/dist/chunks/{HighlightColorDialog-ZBAZDYIR.js.map → HighlightColorDialog-G6AFRYUD.js.map} +0 -0
- /package/dist/chunks/{LinearGraphDisplay-AJ5OZN27.js.map → LinearGraphDisplay-O4SQSXJJ.js.map} +0 -0
- /package/dist/chunks/{MinigraphBubbleAdapter-PEQK5NII.js.map → MinigraphBubbleAdapter-3NJ2VLN2.js.map} +0 -0
- /package/dist/chunks/{RgfaTabixAdapter-Q63YLPK4.js.map → RgfaTabixAdapter-55DGDID2.js.map} +0 -0
- /package/dist/chunks/{WalkTabixSyntenyAdapter-N5PFI4LS.js.map → WalkTabixSyntenyAdapter-NHNSZZBX.js.map} +0 -0
- /package/dist/chunks/{chunk-HI3YK2SO.js.map → chunk-F2DMEJEK.js.map} +0 -0
- /package/dist/chunks/{chunk-SFYSQ52W.js.map → chunk-MNCPMOHJ.js.map} +0 -0
- /package/dist/chunks/{chunk-J3AXN7JQ.js.map → chunk-NFH2U74B.js.map} +0 -0
- /package/dist/chunks/{chunk-AWGMTI73.js.map → chunk-RU4WSKBO.js.map} +0 -0
- /package/dist/chunks/{chunk-WJGCVNGH.js.map → chunk-XQFBLJU5.js.map} +0 -0
- /package/dist/chunks/{renderSvg-Z7YIXVQ5.js.map → renderSvg-7G6NWBXF.js.map} +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{b as Jt}from"./chunk-MVVXRZXV.js";import{d as Rt,g as be,h as WA}from"./chunk-RCXOOBLX.js";import{a as Lt,b as _t}from"./chunk-OGQ6OQDN.js";import{g as Gt}from"./chunk-NDRLCGPC.js";var lA=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"],Mt=t=>lA!=null&&t in Object(lA)?lA[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/core/data_adapters/BaseAdapter' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var Eo=Mt("BaseFeatureDataAdapter");var Ut=Mt("cachedSetup");var fo=lA&&lA.__esModule?lA.default:lA;var IA=class extends Error{constructor(e,A,n,i,r){super(e),this.regionTooLarge=!0,this.name="NodeLimitError",this.limit=A,this.windowBp=n,this.fitsBp=i,this.zoomHelps=r===void 0,r&&(this.bytes=r.bytes)}},yA="#";function Se(t){return t.split(yA)[0]}function Fe(t){let e=t.split(yA);return e.length>=3?e.slice(2).join(yA):e.length===2?e[1]:t}function GA(t){let e=t.split(yA);return e.length>=3?`${e[0]}${yA}${e[1]}`:void 0}function VA(t,e){return e!==void 0&&(t===e||t.startsWith(e+yA))}var Yt=t=>Number.parseFloat(t.toPrecision(3));function LA(t){let e=Yt(t/1e6);return e>=1?`${e.toLocaleString("en-US")}Mbp`:t>=1e3?`${Yt(t/1e3).toLocaleString("en-US")}Kbp`:`${Math.floor(t)}bp`}var Z=t=>(t-(t&1))/2,nA=t=>t&1?t-1:t+1;function _A(t,e,A){if(t===".")return A;let n=0,i=!1;for(let r=0;r<=t.length;r++){let o=r<t.length?t.charCodeAt(r):44;if(o===44){let s=i?-n:n,I=s&1;e.id+=(s-I)/2,A.push(e.id*2+I),n=0,i=!1}else o===45?i=!0:n=n*10+(o-48)}return A}function MA(t){return t==="."?[]:t.split(",").map(Number)}function Kt(t,e){return t>nA(e)?[nA(e),nA(t)]:[t,e]}function ve(t,e){let A=t.lastIndexOf(":");return{refName:t[3]==="Z"?t.slice(5,A):e,start:+t.slice(A+1)}}function Re(t,e,A){let n={};for(let i=e;i<t.length;i++){let r=t[i],o=r.slice(0,2);if(o==="pv")n.prev=ve(r,A);else if(o==="nx")n.next=ve(r,A);else if(o==="pg"||o==="ng"){let s=o==="pg"?"prevRecord":"nextRecord";n[s]={...n[s],bp:+r.slice(5)}}else if(o==="pr"||o==="nr"){let s=o==="pr"?"prevRecord":"nextRecord";n[s]={bp:0,...n[s],chunk:ve(r,A)}}}return n}var Je=class{constructor(){this.handles=[],this.before=[0],this.occurrences=new Map}add(e,A){for(let n=0;n<e.length;n++){let i=e[n],r=this.handles.length;this.handles.push(i),this.before.push(this.before[r]+A[n]);let o=Z(i),s=this.occurrences.get(o);s?s.push(r):this.occurrences.set(o,[r])}}bp(e){return this.before[e]}first(e){var A;return(A=this.occurrences.get(Z(e)))===null||A===void 0?void 0:A[0]}nearest(e,A){let n=this.occurrences.get(Z(e));if(!n)return;let i=0,r=n.length;for(;i<r;){let I=i+r>>1;n[I]<=A?i=I+1:r=I}let o=n[i-1],s=n[i];return o===void 0||s===void 0?o??s:s-A<=A-o?s:o}reach(e,A,n){var i;let r=this.handles[e]===A,o;for(let s of(i=this.occurrences.get(Z(n)))!==null&&i!==void 0?i:[])r&&s>=e&&this.handles[s]===n?(o===void 0||s<o)&&(o=s):!r&&s<=e&&nA(this.handles[s])===n&&(o===void 0||s>o)&&(o=s);return o}handleAt(e,A){return A?this.handles[e]:nA(this.handles[e])}},W=class extends Error{},Ge=(t,e)=>e?t.exit===-1?-1:nA(t.exit):t.entry,Tt=(t,e)=>e?t.entry===-1?-1:nA(t.entry):t.exit,$A=(t,e,A)=>e?nA(t.interior[t.interior.length-1-A]):t.interior[A];function Ki(t){let e=[];if(t!=="."){let A=0,n=0,i=!1,r=0,o=!1;for(let s=0;s<=t.length;s++){let I=s<t.length?t.charCodeAt(s):44;if(I===44){let a=i?-n:n,g=o?r:a,h=g&1;A+=(g-h)/2,e.push(A,h,o?a:0),n=0,i=!1,o=!1}else I===58?(r=i?-n:n,n=0,i=!1,o=!0):I===45?i=!0:n=n*10+(I-48)}}return e}function qt(t,e,A,n,i,r){let o=n.indexOf(":"),s=A+ +(o<0?n:n.slice(0,o)),I=o>=0,a=I?+n.slice(o+1):0,g=D=>{let u=e[D];if(!u)throw new W(`route ${D} is not in the chunk`);return u},h=0;if(i.length>0&&Ge(g(i[0]),i[1]===1)===-1){if(!r.route(i[0],i[1]===1))return;h=3}let E=A,Q=t.first(E);if(Q===void 0)throw new W("a walk row starts off its chunk");r.step(E);let B=(D,u)=>{let d=t.handles[Q]===E,w=I?Q+(d?u:-u):t.reach(Q,E,D);if(w===void 0||w<0||w>=t.handles.length)throw new W("a walk row runs off its chunk");w!==Q&&r.stretch(Q,w,d),Q=w,E=t.handleAt(w,d)};for(;h<i.length;h+=3){let D=i[h],u=i[h+1]===1,d=g(D),w=Ge(d,u);if(w===-1)throw new W("an open route after the first choice");if(B(w,i[h+2]),!r.route(D,u))return;let m=Tt(d,u);if(m===-1)return;if(E=m,Q=t.nearest(E,Q),Q===void 0)throw new W("a route lands off its chunk");r.step(E)}if(B(s,a),E!==s)throw new W("a walk row misses its last handle")}function Ti(t,e,A,n,i){let r=new Int32Array(i),o=new Uint8Array(i),s=0,I=a=>{if(s>=i)throw new W("a walk row decodes to more steps than it states");r[s]=Z(a),o[s++]=a&1};if(qt(t,e,+A[9],A[10],n,{step:I,stretch(a,g,h){if(h)for(let E=a+1;E<=g;E++)I(t.handles[E]);else for(let E=a-1;E>=g;E--)I(nA(t.handles[E]))},route(a,g){let h=e[a];for(let E=0;E<h.interior.length;E++)I($A(h,g,E));return!0}}),s!==i)throw new W(`a walk row decodes to ${s} steps, not ${i}`);return{ids:r,rev:o}}function Ht(t,e,A,n,i){let r=t.slice(e).find(s=>s.startsWith("SQ:Z:"));if(r===void 0)return;let o=5;for(let s=0;s<A.length;s++){let I=n[s];i.set(A[s],r.slice(o,o+I)),o+=I}}var qi=16384;function Zi(t){let e=t[0],A=[+t[10],+t[11]],n=MA(t[7]);for(let i=1;i<n.length;i++)n[i]+=n[i-1];return{chunkStart:+t[1],name:t[4],fragStart:+t[5],hapOffset:+t[6],piece:n[0],n:A.length,steps:{ids:Int32Array.from(A,Z),rev:Uint8Array.from(A,i=>i&1)},...Re(t,13,e),abridged:{pieces:n,steps:+t[8],bp:+t[9],detail:{refName:`${e}~${t[1]}`,start:+t[12]*qi}}}}function Le(t,e,A=!1){var n,i,r;let o=new Je,s=new Map,I=[],a={sequences:new Map,rows:[],nodes:new Map,ends:[],chunk:{path:o,routes:I,walks:[],lengths:s}},g={id:0},h=t.filter(Q=>Q[3]==="ref").sort((Q,B)=>+Q[6]-+B[6]);for(let Q of h){let B=Q[0],D=_A(Q[9],{id:0},[]),u=MA(Q[10]),d=+Q[6];o.add(D,u),A&&Ht(Q,11,D.map(Z),u,a.sequences);let w=d;for(let m=0;m<D.length;m++){let c=Z(D[m]),y=u[m];s.set(c,y),a.nodes.has(c)||a.nodes.set(c,{refName:Q[4],start:w,end:w+y,rank:0}),w+=y}a.ends.push({name:Q[4],fragStart:+Q[5],piece:+Q[7],first:D[0],last:D.at(-1)}),(e===void 0||e(Q[4]))&&a.rows.push({chunkStart:+Q[1],name:Q[4],fragStart:+Q[5],hapOffset:d,piece:+Q[7],n:D.length,steps:{ids:Int32Array.from(D,Z),rev:Uint8Array.from(D,m=>m&1)},...Re(Q,11,B)})}for(let Q of t)if(Q[3]==="nodes"){let B=MA(Q[4]),D=MA(Q[5]),u=0;for(let d=0;d<B.length;d++)u+=B[d],B[d]=u,s.set(u,D[d]);A&&Ht(Q,6,B,D,a.sequences)}else if(Q[3]==="route"){let B=_A(Q[4],g,[]),D=_A(Q[5],g,[]),u=_A(Q[6],g,[]);I.push({entry:(n=B[0])!==null&&n!==void 0?n:-1,interior:D,exit:(i=u[0])!==null&&i!==void 0?i:-1})}let E=Q=>{let B=I[Q];if(!B)throw new W(`route ${Q} is not in the chunk`);return B};for(let Q of t){if(Q[3]==="abridged"){let y=Q[4];(e===void 0||e(y))&&a.rows.push(Zi(Q));continue}if(Q[3]!=="walk")continue;let B=Ki(Q[11]);a.chunk.walks.push({cols:Q,choices:B});let D=Q[4],u=+Q[9],d=Q[10],w=d.indexOf(":"),m=u,c=u+ +(w<0?d:d.slice(0,w));if(B.length>0){let y=E(B[0]),f=B[1]===1;Ge(y,f)===-1&&(m=$A(y,f,0));let C=B.length-3,N=E(B[C]),x=B[C+1]===1;Tt(N,x)===-1&&(c=$A(N,x,N.interior.length-1))}if(a.ends.push({name:D,fragStart:+Q[5],piece:+Q[7],first:m,last:c}),e===void 0||e(D)){let y=+Q[8],f=0;for(let C=0;C<B.length;C+=3){f+=E(B[C]).interior.length;for(let N of E(B[C]).interior){let x=Z(N);if(!a.nodes.has(x)){let p=(r=s.get(x))!==null&&r!==void 0?r:0;a.nodes.set(x,{refName:D,start:0,end:p,rank:1})}}}a.rows.push({chunkStart:+Q[1],name:D,fragStart:+Q[5],hapOffset:+Q[6],piece:+Q[7],n:y,interior:f,steps:Ti(o,I,Q,B,y),...Re(Q,12,Q[0])})}}return a}function Zt(t,e,A,n){let i=new Set;for(let s of e)t.some(({path:I})=>I.occurrences.has(s))||i.add(s);let r=(s,I)=>{let[a,g]=Kt(s,I);n(a,g)},o=new Map;for(let{path:s,routes:I,walks:a,lengths:g}of t){let h=s.handles;for(let d=1;d<h.length;d++)e.has(Z(h[d-1]))&&e.has(Z(h[d]))&&r(h[d-1],h[d]);let E=new Uint8Array(I.length);for(let d=0;d<I.length;d++){let{entry:w,interior:m,exit:c}=I[d],y=!1,f=w;for(let C of m){let N=e.has(Z(C));y||(y=i.has(Z(C))),N&&f!==-1&&e.has(Z(f))&&r(f,C),f=C}f!==-1&&c!==-1&&e.has(Z(f))&&e.has(Z(c))&&r(f,c),E[d]=y?1:0}let Q=d=>{var w;return(w=g.get(Z(d)))!==null&&w!==void 0?w:0},B=new Float64Array(I.length).fill(-1),D=d=>(B[d]<0&&(B[d]=I[d].interior.reduce((w,m)=>w+Q(m),0)),B[d]),u=new Uint8Array(I.length);for(let{cols:d,choices:w}of a){let m=0;for(let f=0;f<w.length;f+=3){let C=w[f];E[C]&&!u[C]&&m++}if(m===0)continue;let c=d[4],y=+d[6];qt(s,I,+d[9],d[10],w,{step(f){y+=Q(f)},stretch(f,C,N){y+=N?s.bp(C+1)-s.bp(f+1):s.bp(f)-s.bp(C)},route(f,C){if(!E[f]||u[f])return y+=D(f),!0;u[f]=1;let N=I[f];for(let x=0;x<N.interior.length;x++){let p=$A(N,C,x),F=Z(p),J=Q(p);if(i.has(F)){let l=o.get(F);(!l||c<l.refName||c===l.refName&&y<l.start)&&o.set(F,{refName:c,start:y,end:y+J,rank:1})}y+=J}return m--,m>0}})}}for(let[s,I]of o)A(s,I)}function Oi(t){let e=[];for(let A of t){if(A[3]!=="ref")continue;let n=_A(A[9],{id:0},[]),i=MA(A[10]),r=+A[6];for(let o=0;o<n.length;o++){let s=i[o];e.push({id:Z(n[o]),refName:A[4],start:r,end:r+s,rank:0}),r+=s}}return e}function Ot(t){let e=new Map;for(let n of t){let i=`${n.name} ${n.fragStart}`,r=e.get(i);r||(r=new Map,e.set(i,r)),r.set(n.piece,n)}let A=[];for(let n of e.values())for(let[i,r]of n){let o=n.get(i+1);o&&A.push(Kt(r.last,o.first))}return A}var Xt=["elsewhere","break","end"];function _e(t,e){let A=new RegExp(`(?:^|\\t)${e}:i:(\\d+)`).exec(t);return A?+A[1]:void 0}function Me(t){var e,A,n;let i={references:[],haplotypes:[],long:[]};for(let r of t){let[o,s="",I="",a=""]=r.split(" ");o==="#reference"?i.references.push(s):o==="#haplotype"?i.haplotypes.push(s):o==="#long"?i.long.push({refName:s,start:+I,end:+a}):((e=i.format)!==null&&e!==void 0||(i.format=_e(r,"format")),(A=i.chunk)!==null&&A!==void 0||(i.chunk=_e(r,"chunk")),(n=i.maxNode)!==null&&n!==void 0||(i.maxNode=_e(r,"maxnode")))}return i}function Wt(t,e){return t===void 0?1:Math.max(1,Math.ceil(t/e))}function Ae(t,e,A=1){return Math.max(0,(Math.floor(t/e)-A)*e)}function ee(t,e,A,n){let{chunk:i,long:r}=t;if(r.length===0)return Ae(A,i,Wt(t.maxNode,i));let o=Ae(A,i);for(let s of r)s.refName===e&&s.start<n&&s.end>A&&(o=Math.min(o,Ae(s.start,i)));return o}function Vt(t,e){return t===void 0||t.length===0?void 0:A=>VA(A,e)||t.some(n=>VA(A,n))}function Ue(t,e){var A;return Vt(t,(A=GA(e))!==null&&A!==void 0?A:e)}function Ye(t){let e=new Map,A=[];for(let n of t){if(n.abridged){A.push(Pt([n]));continue}let i=`${n.name} ${n.fragStart}`,r=e.get(i);r?r.push(n):e.set(i,[n])}for(let n of e.values()){n.sort((r,o)=>r.piece-o.piece);let i=0;for(let r=1;r<=n.length;r++)(r===n.length||n[r].piece!==n[r-1].piece+1)&&(A.push(Pt(n.slice(i,r))),i=r)}return A}function Pt(t){let e=t.reduce((s,I)=>s+I.n,0),A=new Int32Array(e),n=new Uint8Array(e),i=0;for(let s of t)A.set(s.steps.ids,i),n.set(s.steps.rev,i),i+=s.n;let r=t[0],o=t.at(-1);return{name:r.name,fragStart:r.fragStart,hapOffset:r.hapOffset,firstPiece:r.piece,ids:A,rev:n,prev:r.prev,next:o.next,prevRecord:r.prevRecord,nextRecord:o.nextRecord,...r.abridged?{abridged:r.abridged}:{}}}function He(t,e,A,{contained:n=!1,context:i=0}={}){let r=l=>{var k;return((k=e.get(l))===null||k===void 0?void 0:k.onWindow)===!0},o=l=>{let k=e.get(l);return k?.rank===0?k:void 0},s=new Map,I=l=>{l&&s.set(`${l.refName}:${l.start}`,l)},a=(l,k,b)=>{let{ids:S}=l,v=k+b;for(;v>=0&&v<S.length&&o(S[v])===void 0;)v+=b;if(v<0||v>=S.length)return I(b<0?l.prev:l.next),v-b;let L=o(S[k]),_=o(S[v]);return _.refName!==A?v-b:v===k+b&&(_.start===L.end||_.end===L.start)?k:v},g=1/0,h=-1/0,E=[],Q=l=>{let k=e.get(l);return k===void 0?0:k.end-k.start},B=l=>{let{ids:k}=l,b=0,S=-1,v=-1;for(let L=0;L<=k.length;L++){let _=L<k.length?e.get(k[L]):void 0;if(L===k.length||_?.rank===0&&!_.onWindow){if(S>=0){for(let q=0;S>b&&q<i;)q+=Q(k[--S]);for(let q=0;v<L-1&&q<i;)q+=Q(k[++v]);S===0&&I(l.prev),v===k.length-1&&I(l.next),E.push({run:l,first:S,last:v})}b=L+1,S=-1}else _?.onWindow&&(S<0&&(S=L),v=L)}},D=l=>{let{ids:k}=l,b=-1,S=-1;for(let v=0;v<k.length;v++)r(k[v])&&(b<0&&(b=v),S=v);if(b>=0){if(l.name!==A){b=a(l,b,-1),S=a(l,S,1);for(let v of[b,S]){let L=o(k[v]);L&&(g=Math.min(g,L.start),h=Math.max(h,L.end))}}E.push({run:l,first:b,last:S})}},u=1/0,d=-1/0;for(let l of e.values())l.onWindow&&(u=Math.min(u,l.start),d=Math.max(d,l.end));let w=l=>{let k=o(l.ids[0]),b=o(l.ids.at(-1));k?.refName!==A||b?.refName!==A||Math.max(k.end,b.end)>u&&Math.min(k.start,b.start)<d&&E.push({run:l,first:0,last:l.ids.length-1})};for(let l of t)l.abridged?w(l):n?B(l):D(l);let m=l=>{let k=o(l);return r(l)||k?.refName===A&&k.end>g&&k.start<h},c=new Set;for(let[l,k]of e)k.onWindow&&c.add(l);for(let l of E){let{ids:k}=l.run;if(l.run.name===A){for(;l.first>0&&m(k[l.first-1]);)l.first--;for(;l.last<k.length-1&&m(k[l.last+1]);)l.last++}for(let b=l.first;b<=l.last;b++)c.add(k[b])}let y=new Set(E.filter(l=>l.run.abridged).map(l=>l.run)),f=(l,k,b)=>{let S=0;for(let v=k;v<b;v++)S+=Q(l[v]);return S},C=new Map;for(let l of t){let k=`${l.name} ${l.fragStart}`,b=C.get(k);b?b.push(l):C.set(k,[l])}let N=new Map;for(let l of C.values())l.sort((k,b)=>k.firstPiece-b.firstPiece),l.forEach((k,b)=>{N.set(k,[l[b-1],l[b+1]])});let x=new Map,p=l=>{var k,b;let S=x.get(l);return S===void 0&&(S=l.hapOffset+((b=(k=l.abridged)===null||k===void 0?void 0:k.bp)!==null&&b!==void 0?b:f(l.ids,0,l.ids.length)),x.set(l,S)),S},F=(l,k,b)=>{var S;let v=b>0?{trimmed:b}:{},L=k?l.next:l.prev;if(L){let q=(S=N.get(l))===null||S===void 0?void 0:S[k?1:0];return q?{kind:"elsewhere",chunk:L,bp:k?q.hapOffset-p(l):l.hapOffset-p(q),...v}:{kind:"elsewhere",chunk:L,...v}}let _=k?l.nextRecord:l.prevRecord;return _?{kind:"break",..._,...v}:{kind:"end",...v}},J=[];for(let{run:l,first:k,last:b}of E){let{ids:S,rev:v}=l;if(y.has(l)){J.push({name:l.name,fragStart:l.fragStart,hapStart:l.hapOffset,hapEnd:p(l),ids:S,rev:v,before:F(l,!1,0),after:F(l,!0,0),abridged:l.abridged});continue}let L=k,_=b;for(;L>0&&c.has(S[L-1]);)L--;for(;_<S.length-1&&c.has(S[_+1]);)_++;let q=l.hapOffset+f(S,0,L),R=q+f(S,L,_+1);J.push({name:l.name,fragStart:l.fragStart,hapStart:q,hapEnd:R,ids:S.subarray(L,_+1),rev:v.subarray(L,_+1),before:F(l,!1,q-l.hapOffset),after:F(l,!0,p(l)-R)})}return{kept:c,fragments:J,open:[...s.values()]}}function Ke(t,e,A,n){var i;for(let r of t.nodes.keys())!((i=e.get(r))===null||i===void 0)&&i.onWindow&&n.add(r);for(let{steps:r}of t.rows){let{ids:o}=r,s=-1;for(let I=0;I<o.length;I++){let a=e.get(o[I]);if(a?.onWindow){for(let g=s+1;s>=0&&g<I;g++)n.add(o[g]);s=I}else A&&a?.rank===0&&(s=-1)}}}function zt(t){let e=[],A=new Map,n={kinds:new Uint8Array(t.length),kindNames:[...Xt],bp:new Float64Array(t.length).fill(Number.NaN),trimmed:new Float64Array(t.length),chunkRefs:new Int32Array(t.length).fill(-1),chunkStarts:new Float64Array(t.length).fill(Number.NaN),chunkRefNames:e};return t.forEach((i,r)=>{var o;if(n.kinds[r]=Xt.indexOf(i.kind),n.trimmed[r]=(o=i.trimmed)!==null&&o!==void 0?o:0,"bp"in i&&i.bp!==void 0&&(n.bp[r]=i.bp),"chunk"in i&&i.chunk){let{refName:s,start:I}=i.chunk,a=A.get(s);a===void 0&&(a=e.length,A.set(s,a),e.push(s)),n.chunkRefs[r]=a,n.chunkStarts[r]=I}}),n}var Xi=(t,e)=>t.rank===0&&(e.rank!==0||t.refName<e.refName||t.refName===e.refName&&t.start<e.start),UA=class{constructor(e){this.nodes=new Map,this.sequences=new Map,this.links=[],this.chunks=[],this.window=e}placeNode(e,A){let n=this.nodes.get(e);if(n&&!Xi(A,n))return;let{window:i}=this;this.nodes.set(e,{...A,onWindow:A.rank===0&&A.refName===i.refName&&A.end>i.start-i.context&&A.start<i.end+i.context})}addLinkEnds(e,A){this.links.push(e,A)}addChunk(e){this.chunks.push(e)}addSequences(e){if(this.window.sequences)for(let[A,n]of e)this.sequences.set(A,n)}tables(e,A){this.chunks.length>0&&Zt(this.chunks,e,(f,C)=>{let N=this.nodes.get(f);N&&this.nodes.set(f,{...N,...C})},(f,C)=>{this.links.push(f,C)});let n=[];for(let f of e){let C=this.nodes.get(f);C&&n.push({...C,id:f})}n.sort((f,C)=>f.refName<C.refName?-1:f.refName>C.refName?1:f.start-C.start||f.id-C.id);let i=new Map,r=[],o=[],s=new Map,I=new Int32Array(n.length),a=new Int32Array(n.length),g=new Float64Array(n.length),h=new Int32Array(n.length);n.forEach(({id:f,refName:C,start:N,end:x,rank:p},F)=>{i.set(f,F),r.push(String(f));let J=s.get(C);J===void 0&&(J=o.length,s.set(C,J),o.push(C)),I[F]=x-N,a[F]=J,g[F]=N,h[F]=p});let E=f=>{let C=i.get(f);return C===void 0&&(C=r.length,i.set(f,C),r.push(String(f))),C},Q=new Map;for(let f=0;f<this.links.length;f+=2){let C=this.links[f],N=this.links[f+1],x=Math.floor(C/2),p=Math.floor(N/2);e.has(x)&&e.has(p)&&Q.set(`${x} ${C%2?"-":"+"} ${p} ${N%2?"-":"+"}`,f)}let B=[...Q.keys()].sort(),D=new Int32Array(B.length),u=new Int32Array(B.length),d=new Uint8Array(B.length);B.forEach((f,C)=>{let N=Q.get(f),x=this.links[N],p=this.links[N+1];D[C]=E(Math.floor(x/2)),u[C]=E(Math.floor(p/2)),d[C]=x%2|p%2<<1});let w=this.referenceFirst(A),m=new Int32Array(w.length+1);w.forEach(({ids:f},C)=>{m[C+1]=m[C]+f.length});let c=new Int32Array(m[w.length]),y=new Uint8Array(c.length);return w.forEach(({ids:f,rev:C},N)=>{let x=m[N];for(let p=0;p<f.length;p++)c[x+p]=E(f[p]);y.set(C,x)}),{nodes:{names:r,lengths:I,refs:a,starts:g,ranks:h,refNames:o},links:{from:D,to:u,strands:d},walks:{names:w.map(f=>f.name),starts:Float64Array.from(w,f=>f.hapStart),ends:Float64Array.from(w,f=>f.hapEnd),offsets:m,steps:c,reversed:y,before:zt(w.map(f=>f.before)),after:zt(w.map(f=>f.after)),abridgedSteps:Float64Array.from(w,f=>{var C,N;return(N=(C=f.abridged)===null||C===void 0?void 0:C.steps)!==null&&N!==void 0?N:NaN}),abridgedBp:Float64Array.from(w,f=>{var C,N;return(N=(C=f.abridged)===null||C===void 0?void 0:C.bp)!==null&&N!==void 0?N:NaN})}}}referenceFirst(e){let{refName:A}=this.window;return[...e].sort((n,i)=>+(i.name===A)-+(n.name===A)||(n.name<i.name?-1:n.name>i.name?1:n.hapStart-i.hapStart))}},Te={steps:"the step budget",bytes:"a byte budget of"},Pi=4,zi=t=>{var e;let A=(e=t.interior)!==null&&e!==void 0?e:0;return A+(t.n-A)/Pi};function qe(t,e,A,n,i,r,o=Te){var s;let I=0,a=new Map,g=new Set;for(let u of t){let d=zi(u);I+=d,a.set(u.chunkStart,((s=a.get(u.chunkStart))!==null&&s!==void 0?s:0)+d),g.add(u.name)}let h=e*A;if(I<=h)return;let E=n.end-n.start,Q=0,B=0;for(let u of[...a.keys()].sort((d,w)=>d-w)){if(Q+=a.get(u),Q>h)break;B=Math.max(B,u+i-n.start)}let D=!r&&g.size>2&&2*I/g.size<=h;return new IA(B>0?`Zoom in to about ${LA(B)}${D?", or choose fewer haplotypes,":""} to see the graph`:`Too many haplotype steps here to draw ${r?"these haplotypes":"every haplotype"} (${Math.round(Q).toLocaleString()} steps read, a step along the reference counting a quarter, over ${A} \xD7 ${o.steps} of ${e.toLocaleString()}); choose fewer haplotypes`,h,E,Math.max(B,1))}function Ze(t,e,A,n){let i=t.reduce((r,o)=>r+o.ids.length,0);return $t(i,e,A,n)}function te(t,e,A,n,i=A.end){return $t(t,e,A,n,i)}function $t(t,e,A,n,i=A.end){if(t<=e)return;let r=A.end-A.start,o=Math.min(i,A.end)-A.start,s=Math.max(1,Math.floor(o*e/t));return new IA(`Zoom in to about ${LA(s)}${n?"":", or choose fewer haplotypes,"} to see the graph`,e,r,s)}async function Oe(t,e,A,n,i=Te){let r=await t(A.end);if(r<=e)return;let o=0,s;for(let a=Math.floor(A.start/n)*n;a<A.end;a+=n){let g=await t(a+1);if(s??(s=g),g>e)break;o=a+n-A.start}let I=A.end-A.start;return o>0?new IA(`Zoom in to about ${LA(o)} to see the graph`,e,I,o):new IA(`Too much graph here to fetch, even zoomed in (${jt(s??r)} against ${i.bytes} ${jt(e)}). A satellite or rDNA array usually causes this: the graph folds the repeat into a few nodes that each haplotype loops through many times`,e,I,1,{bytes:r})}var jt=t=>`${(t/1e6).toFixed(1)} MB`;function Xe(t){var e;let A=t.split(" "),n=A.length>=8,i=n?5:0;return{anchored:n,segment:{refName:A[i],start:+A[i+1],end:+A[i+2],id:A[3],rank:+A[4],tags:(e=A[n?8:5])!==null&&e!==void 0?e:""}}}function ji(t){let e=t.tags.split(" ").find(n=>n.startsWith("SM:Z:"));if(e===void 0)return;let A=e.slice(5).split(",").map(n=>n.trim()).filter(Boolean);return A.length>0?A:void 0}function An(t){return{id:t.slice(0,-1),strand:t.slice(-1)}}function Pe(t){var e,A;let n=t.split(" "),i=An(n[3]),r=An(n[4]);return{source:i.id,sourceStrand:i.strand,target:r.id,targetStrand:r.strand,sourceSegment:{id:i.id,refName:n[5],start:+n[6],end:+n[7],rank:+n[8],tags:(e=n[13])!==null&&e!==void 0?e:""},targetSegment:{id:r.id,refName:n[9],start:+n[10],end:+n[11],rank:+n[12],tags:(A=n[14])!==null&&A!==void 0?A:""}}}function ze(t){return`${t.source}${t.sourceStrand}${t.target}${t.targetStrand}`}function YA(t,e,A){e.set(ze(A),A);let n=[];for(let i of[A.sourceSegment,A.targetSegment])t.has(i.id)||(t.set(i.id,i),n.push(i));return n}function tn(t,e,A){let n=o=>o.rank!==0||o.refName!==A.refName?0:o.end<=A.start?-1:o.start>=A.end?1:0,i=new Map(t),r=new Map;for(let o of e)(t.has(o.source)||t.has(o.target)||n(o.sourceSegment)*n(o.targetSegment)===-1)&&YA(i,r,o);for(let o of e)i.has(o.source)&&i.has(o.target)&&r.set(ze(o),o);return{segments:i,links:r}}function nn(t,e,A){let n=i=>i.refName!==A.refName||i.end<=A.start||i.start>=A.end;return[...en(t.filter(i=>i.rank>0),i=>e.has(i.id),A.end-A.start),...en(t.filter(i=>i.rank===0&&n(i)),()=>!0,0)]}function en(t,e,A){let n=[...t].sort((r,o)=>ne(r.refName,o.refName)||r.start-o.start),i=[];for(let r of n){let o=i.at(-1);o?.refName===r.refName&&r.start-o.end<=A?(o.needed||(o.needed=r.start>o.end||e(r)),o.end=Math.max(o.end,r.end)):i.push({refName:r.refName,start:r.start,end:r.end,needed:e(r)})}return i.filter(r=>r.needed).map(({refName:r,start:o,end:s})=>({refName:r,start:o,end:s}))}function rn(t,e,A){let n=i=>e.has(i.id)||A.some(r=>r.refName===i.refName&&i.start>=r.start&&i.end<=r.end);return t.filter(i=>n(i.sourceSegment)&&n(i.targetSegment))}var Wi=/^[A-Za-z][A-Za-z0-9]:[AifZJHB]:/;function Vi(t){let{id:e,refName:A,start:n,end:i,rank:r,tags:o}=t,s=o.split(" ").filter(a=>Wi.test(a)),I=s.length===0?"":` ${s.join(" ")}`;return`S ${e} * LN:i:${i-n} SN:Z:${A} SO:i:${n} SR:i:${r}${I}`}function $i(t){let{source:e,sourceStrand:A,target:n,targetStrand:i}=t;return`L ${e} ${A} ${n} ${i} 0M`}function ne(t,e){return t<e?-1:t>e?1:0}function ie(t,e){let A=[...t.values()].sort((i,r)=>ne(i.refName,r.refName)||i.start-r.start||ne(i.id,r.id)),n=[...e.keys()].sort((i,r)=>ne(i,r));return["H VN:Z:1.0",...A.map(i=>Vi(i)),...n.map(i=>$i(e.get(i)))].join(`
|
|
1
|
+
import{b as Jt}from"./chunk-MVVXRZXV.js";import{d as Rt,g as be,h as WA}from"./chunk-K4TFAHGC.js";import{a as Lt,b as _t}from"./chunk-OGQ6OQDN.js";import{g as Gt}from"./chunk-NDRLCGPC.js";var lA=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"],Mt=t=>lA!=null&&t in Object(lA)?lA[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/core/data_adapters/BaseAdapter' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var Eo=Mt("BaseFeatureDataAdapter");var Ut=Mt("cachedSetup");var fo=lA&&lA.__esModule?lA.default:lA;var IA=class extends Error{constructor(e,A,n,i,r){super(e),this.regionTooLarge=!0,this.name="NodeLimitError",this.limit=A,this.windowBp=n,this.fitsBp=i,this.zoomHelps=r===void 0,r&&(this.bytes=r.bytes)}},yA="#";function Se(t){return t.split(yA)[0]}function Fe(t){let e=t.split(yA);return e.length>=3?e.slice(2).join(yA):e.length===2?e[1]:t}function GA(t){let e=t.split(yA);return e.length>=3?`${e[0]}${yA}${e[1]}`:void 0}function VA(t,e){return e!==void 0&&(t===e||t.startsWith(e+yA))}var Yt=t=>Number.parseFloat(t.toPrecision(3));function LA(t){let e=Yt(t/1e6);return e>=1?`${e.toLocaleString("en-US")}Mbp`:t>=1e3?`${Yt(t/1e3).toLocaleString("en-US")}Kbp`:`${Math.floor(t)}bp`}var Z=t=>(t-(t&1))/2,nA=t=>t&1?t-1:t+1;function _A(t,e,A){if(t===".")return A;let n=0,i=!1;for(let r=0;r<=t.length;r++){let o=r<t.length?t.charCodeAt(r):44;if(o===44){let s=i?-n:n,I=s&1;e.id+=(s-I)/2,A.push(e.id*2+I),n=0,i=!1}else o===45?i=!0:n=n*10+(o-48)}return A}function MA(t){return t==="."?[]:t.split(",").map(Number)}function Kt(t,e){return t>nA(e)?[nA(e),nA(t)]:[t,e]}function ve(t,e){let A=t.lastIndexOf(":");return{refName:t[3]==="Z"?t.slice(5,A):e,start:+t.slice(A+1)}}function Re(t,e,A){let n={};for(let i=e;i<t.length;i++){let r=t[i],o=r.slice(0,2);if(o==="pv")n.prev=ve(r,A);else if(o==="nx")n.next=ve(r,A);else if(o==="pg"||o==="ng"){let s=o==="pg"?"prevRecord":"nextRecord";n[s]={...n[s],bp:+r.slice(5)}}else if(o==="pr"||o==="nr"){let s=o==="pr"?"prevRecord":"nextRecord";n[s]={bp:0,...n[s],chunk:ve(r,A)}}}return n}var Je=class{constructor(){this.handles=[],this.before=[0],this.occurrences=new Map}add(e,A){for(let n=0;n<e.length;n++){let i=e[n],r=this.handles.length;this.handles.push(i),this.before.push(this.before[r]+A[n]);let o=Z(i),s=this.occurrences.get(o);s?s.push(r):this.occurrences.set(o,[r])}}bp(e){return this.before[e]}first(e){var A;return(A=this.occurrences.get(Z(e)))===null||A===void 0?void 0:A[0]}nearest(e,A){let n=this.occurrences.get(Z(e));if(!n)return;let i=0,r=n.length;for(;i<r;){let I=i+r>>1;n[I]<=A?i=I+1:r=I}let o=n[i-1],s=n[i];return o===void 0||s===void 0?o??s:s-A<=A-o?s:o}reach(e,A,n){var i;let r=this.handles[e]===A,o;for(let s of(i=this.occurrences.get(Z(n)))!==null&&i!==void 0?i:[])r&&s>=e&&this.handles[s]===n?(o===void 0||s<o)&&(o=s):!r&&s<=e&&nA(this.handles[s])===n&&(o===void 0||s>o)&&(o=s);return o}handleAt(e,A){return A?this.handles[e]:nA(this.handles[e])}},W=class extends Error{},Ge=(t,e)=>e?t.exit===-1?-1:nA(t.exit):t.entry,Tt=(t,e)=>e?t.entry===-1?-1:nA(t.entry):t.exit,$A=(t,e,A)=>e?nA(t.interior[t.interior.length-1-A]):t.interior[A];function Ki(t){let e=[];if(t!=="."){let A=0,n=0,i=!1,r=0,o=!1;for(let s=0;s<=t.length;s++){let I=s<t.length?t.charCodeAt(s):44;if(I===44){let a=i?-n:n,g=o?r:a,h=g&1;A+=(g-h)/2,e.push(A,h,o?a:0),n=0,i=!1,o=!1}else I===58?(r=i?-n:n,n=0,i=!1,o=!0):I===45?i=!0:n=n*10+(I-48)}}return e}function qt(t,e,A,n,i,r){let o=n.indexOf(":"),s=A+ +(o<0?n:n.slice(0,o)),I=o>=0,a=I?+n.slice(o+1):0,g=D=>{let u=e[D];if(!u)throw new W(`route ${D} is not in the chunk`);return u},h=0;if(i.length>0&&Ge(g(i[0]),i[1]===1)===-1){if(!r.route(i[0],i[1]===1))return;h=3}let E=A,Q=t.first(E);if(Q===void 0)throw new W("a walk row starts off its chunk");r.step(E);let B=(D,u)=>{let d=t.handles[Q]===E,w=I?Q+(d?u:-u):t.reach(Q,E,D);if(w===void 0||w<0||w>=t.handles.length)throw new W("a walk row runs off its chunk");w!==Q&&r.stretch(Q,w,d),Q=w,E=t.handleAt(w,d)};for(;h<i.length;h+=3){let D=i[h],u=i[h+1]===1,d=g(D),w=Ge(d,u);if(w===-1)throw new W("an open route after the first choice");if(B(w,i[h+2]),!r.route(D,u))return;let m=Tt(d,u);if(m===-1)return;if(E=m,Q=t.nearest(E,Q),Q===void 0)throw new W("a route lands off its chunk");r.step(E)}if(B(s,a),E!==s)throw new W("a walk row misses its last handle")}function Ti(t,e,A,n,i){let r=new Int32Array(i),o=new Uint8Array(i),s=0,I=a=>{if(s>=i)throw new W("a walk row decodes to more steps than it states");r[s]=Z(a),o[s++]=a&1};if(qt(t,e,+A[9],A[10],n,{step:I,stretch(a,g,h){if(h)for(let E=a+1;E<=g;E++)I(t.handles[E]);else for(let E=a-1;E>=g;E--)I(nA(t.handles[E]))},route(a,g){let h=e[a];for(let E=0;E<h.interior.length;E++)I($A(h,g,E));return!0}}),s!==i)throw new W(`a walk row decodes to ${s} steps, not ${i}`);return{ids:r,rev:o}}function Ht(t,e,A,n,i){let r=t.slice(e).find(s=>s.startsWith("SQ:Z:"));if(r===void 0)return;let o=5;for(let s=0;s<A.length;s++){let I=n[s];i.set(A[s],r.slice(o,o+I)),o+=I}}var qi=16384;function Zi(t){let e=t[0],A=[+t[10],+t[11]],n=MA(t[7]);for(let i=1;i<n.length;i++)n[i]+=n[i-1];return{chunkStart:+t[1],name:t[4],fragStart:+t[5],hapOffset:+t[6],piece:n[0],n:A.length,steps:{ids:Int32Array.from(A,Z),rev:Uint8Array.from(A,i=>i&1)},...Re(t,13,e),abridged:{pieces:n,steps:+t[8],bp:+t[9],detail:{refName:`${e}~${t[1]}`,start:+t[12]*qi}}}}function Le(t,e,A=!1){var n,i,r;let o=new Je,s=new Map,I=[],a={sequences:new Map,rows:[],nodes:new Map,ends:[],chunk:{path:o,routes:I,walks:[],lengths:s}},g={id:0},h=t.filter(Q=>Q[3]==="ref").sort((Q,B)=>+Q[6]-+B[6]);for(let Q of h){let B=Q[0],D=_A(Q[9],{id:0},[]),u=MA(Q[10]),d=+Q[6];o.add(D,u),A&&Ht(Q,11,D.map(Z),u,a.sequences);let w=d;for(let m=0;m<D.length;m++){let c=Z(D[m]),y=u[m];s.set(c,y),a.nodes.has(c)||a.nodes.set(c,{refName:Q[4],start:w,end:w+y,rank:0}),w+=y}a.ends.push({name:Q[4],fragStart:+Q[5],piece:+Q[7],first:D[0],last:D.at(-1)}),(e===void 0||e(Q[4]))&&a.rows.push({chunkStart:+Q[1],name:Q[4],fragStart:+Q[5],hapOffset:d,piece:+Q[7],n:D.length,steps:{ids:Int32Array.from(D,Z),rev:Uint8Array.from(D,m=>m&1)},...Re(Q,11,B)})}for(let Q of t)if(Q[3]==="nodes"){let B=MA(Q[4]),D=MA(Q[5]),u=0;for(let d=0;d<B.length;d++)u+=B[d],B[d]=u,s.set(u,D[d]);A&&Ht(Q,6,B,D,a.sequences)}else if(Q[3]==="route"){let B=_A(Q[4],g,[]),D=_A(Q[5],g,[]),u=_A(Q[6],g,[]);I.push({entry:(n=B[0])!==null&&n!==void 0?n:-1,interior:D,exit:(i=u[0])!==null&&i!==void 0?i:-1})}let E=Q=>{let B=I[Q];if(!B)throw new W(`route ${Q} is not in the chunk`);return B};for(let Q of t){if(Q[3]==="abridged"){let y=Q[4];(e===void 0||e(y))&&a.rows.push(Zi(Q));continue}if(Q[3]!=="walk")continue;let B=Ki(Q[11]);a.chunk.walks.push({cols:Q,choices:B});let D=Q[4],u=+Q[9],d=Q[10],w=d.indexOf(":"),m=u,c=u+ +(w<0?d:d.slice(0,w));if(B.length>0){let y=E(B[0]),f=B[1]===1;Ge(y,f)===-1&&(m=$A(y,f,0));let C=B.length-3,N=E(B[C]),x=B[C+1]===1;Tt(N,x)===-1&&(c=$A(N,x,N.interior.length-1))}if(a.ends.push({name:D,fragStart:+Q[5],piece:+Q[7],first:m,last:c}),e===void 0||e(D)){let y=+Q[8],f=0;for(let C=0;C<B.length;C+=3){f+=E(B[C]).interior.length;for(let N of E(B[C]).interior){let x=Z(N);if(!a.nodes.has(x)){let p=(r=s.get(x))!==null&&r!==void 0?r:0;a.nodes.set(x,{refName:D,start:0,end:p,rank:1})}}}a.rows.push({chunkStart:+Q[1],name:D,fragStart:+Q[5],hapOffset:+Q[6],piece:+Q[7],n:y,interior:f,steps:Ti(o,I,Q,B,y),...Re(Q,12,Q[0])})}}return a}function Zt(t,e,A,n){let i=new Set;for(let s of e)t.some(({path:I})=>I.occurrences.has(s))||i.add(s);let r=(s,I)=>{let[a,g]=Kt(s,I);n(a,g)},o=new Map;for(let{path:s,routes:I,walks:a,lengths:g}of t){let h=s.handles;for(let d=1;d<h.length;d++)e.has(Z(h[d-1]))&&e.has(Z(h[d]))&&r(h[d-1],h[d]);let E=new Uint8Array(I.length);for(let d=0;d<I.length;d++){let{entry:w,interior:m,exit:c}=I[d],y=!1,f=w;for(let C of m){let N=e.has(Z(C));y||(y=i.has(Z(C))),N&&f!==-1&&e.has(Z(f))&&r(f,C),f=C}f!==-1&&c!==-1&&e.has(Z(f))&&e.has(Z(c))&&r(f,c),E[d]=y?1:0}let Q=d=>{var w;return(w=g.get(Z(d)))!==null&&w!==void 0?w:0},B=new Float64Array(I.length).fill(-1),D=d=>(B[d]<0&&(B[d]=I[d].interior.reduce((w,m)=>w+Q(m),0)),B[d]),u=new Uint8Array(I.length);for(let{cols:d,choices:w}of a){let m=0;for(let f=0;f<w.length;f+=3){let C=w[f];E[C]&&!u[C]&&m++}if(m===0)continue;let c=d[4],y=+d[6];qt(s,I,+d[9],d[10],w,{step(f){y+=Q(f)},stretch(f,C,N){y+=N?s.bp(C+1)-s.bp(f+1):s.bp(f)-s.bp(C)},route(f,C){if(!E[f]||u[f])return y+=D(f),!0;u[f]=1;let N=I[f];for(let x=0;x<N.interior.length;x++){let p=$A(N,C,x),F=Z(p),J=Q(p);if(i.has(F)){let l=o.get(F);(!l||c<l.refName||c===l.refName&&y<l.start)&&o.set(F,{refName:c,start:y,end:y+J,rank:1})}y+=J}return m--,m>0}})}}for(let[s,I]of o)A(s,I)}function Oi(t){let e=[];for(let A of t){if(A[3]!=="ref")continue;let n=_A(A[9],{id:0},[]),i=MA(A[10]),r=+A[6];for(let o=0;o<n.length;o++){let s=i[o];e.push({id:Z(n[o]),refName:A[4],start:r,end:r+s,rank:0}),r+=s}}return e}function Ot(t){let e=new Map;for(let n of t){let i=`${n.name} ${n.fragStart}`,r=e.get(i);r||(r=new Map,e.set(i,r)),r.set(n.piece,n)}let A=[];for(let n of e.values())for(let[i,r]of n){let o=n.get(i+1);o&&A.push(Kt(r.last,o.first))}return A}var Xt=["elsewhere","break","end"];function _e(t,e){let A=new RegExp(`(?:^|\\t)${e}:i:(\\d+)`).exec(t);return A?+A[1]:void 0}function Me(t){var e,A,n;let i={references:[],haplotypes:[],long:[]};for(let r of t){let[o,s="",I="",a=""]=r.split(" ");o==="#reference"?i.references.push(s):o==="#haplotype"?i.haplotypes.push(s):o==="#long"?i.long.push({refName:s,start:+I,end:+a}):((e=i.format)!==null&&e!==void 0||(i.format=_e(r,"format")),(A=i.chunk)!==null&&A!==void 0||(i.chunk=_e(r,"chunk")),(n=i.maxNode)!==null&&n!==void 0||(i.maxNode=_e(r,"maxnode")))}return i}function Wt(t,e){return t===void 0?1:Math.max(1,Math.ceil(t/e))}function Ae(t,e,A=1){return Math.max(0,(Math.floor(t/e)-A)*e)}function ee(t,e,A,n){let{chunk:i,long:r}=t;if(r.length===0)return Ae(A,i,Wt(t.maxNode,i));let o=Ae(A,i);for(let s of r)s.refName===e&&s.start<n&&s.end>A&&(o=Math.min(o,Ae(s.start,i)));return o}function Vt(t,e){return t===void 0||t.length===0?void 0:A=>VA(A,e)||t.some(n=>VA(A,n))}function Ue(t,e){var A;return Vt(t,(A=GA(e))!==null&&A!==void 0?A:e)}function Ye(t){let e=new Map,A=[];for(let n of t){if(n.abridged){A.push(Pt([n]));continue}let i=`${n.name} ${n.fragStart}`,r=e.get(i);r?r.push(n):e.set(i,[n])}for(let n of e.values()){n.sort((r,o)=>r.piece-o.piece);let i=0;for(let r=1;r<=n.length;r++)(r===n.length||n[r].piece!==n[r-1].piece+1)&&(A.push(Pt(n.slice(i,r))),i=r)}return A}function Pt(t){let e=t.reduce((s,I)=>s+I.n,0),A=new Int32Array(e),n=new Uint8Array(e),i=0;for(let s of t)A.set(s.steps.ids,i),n.set(s.steps.rev,i),i+=s.n;let r=t[0],o=t.at(-1);return{name:r.name,fragStart:r.fragStart,hapOffset:r.hapOffset,firstPiece:r.piece,ids:A,rev:n,prev:r.prev,next:o.next,prevRecord:r.prevRecord,nextRecord:o.nextRecord,...r.abridged?{abridged:r.abridged}:{}}}function He(t,e,A,{contained:n=!1,context:i=0}={}){let r=l=>{var k;return((k=e.get(l))===null||k===void 0?void 0:k.onWindow)===!0},o=l=>{let k=e.get(l);return k?.rank===0?k:void 0},s=new Map,I=l=>{l&&s.set(`${l.refName}:${l.start}`,l)},a=(l,k,b)=>{let{ids:S}=l,v=k+b;for(;v>=0&&v<S.length&&o(S[v])===void 0;)v+=b;if(v<0||v>=S.length)return I(b<0?l.prev:l.next),v-b;let L=o(S[k]),_=o(S[v]);return _.refName!==A?v-b:v===k+b&&(_.start===L.end||_.end===L.start)?k:v},g=1/0,h=-1/0,E=[],Q=l=>{let k=e.get(l);return k===void 0?0:k.end-k.start},B=l=>{let{ids:k}=l,b=0,S=-1,v=-1;for(let L=0;L<=k.length;L++){let _=L<k.length?e.get(k[L]):void 0;if(L===k.length||_?.rank===0&&!_.onWindow){if(S>=0){for(let q=0;S>b&&q<i;)q+=Q(k[--S]);for(let q=0;v<L-1&&q<i;)q+=Q(k[++v]);S===0&&I(l.prev),v===k.length-1&&I(l.next),E.push({run:l,first:S,last:v})}b=L+1,S=-1}else _?.onWindow&&(S<0&&(S=L),v=L)}},D=l=>{let{ids:k}=l,b=-1,S=-1;for(let v=0;v<k.length;v++)r(k[v])&&(b<0&&(b=v),S=v);if(b>=0){if(l.name!==A){b=a(l,b,-1),S=a(l,S,1);for(let v of[b,S]){let L=o(k[v]);L&&(g=Math.min(g,L.start),h=Math.max(h,L.end))}}E.push({run:l,first:b,last:S})}},u=1/0,d=-1/0;for(let l of e.values())l.onWindow&&(u=Math.min(u,l.start),d=Math.max(d,l.end));let w=l=>{let k=o(l.ids[0]),b=o(l.ids.at(-1));k?.refName!==A||b?.refName!==A||Math.max(k.end,b.end)>u&&Math.min(k.start,b.start)<d&&E.push({run:l,first:0,last:l.ids.length-1})};for(let l of t)l.abridged?w(l):n?B(l):D(l);let m=l=>{let k=o(l);return r(l)||k?.refName===A&&k.end>g&&k.start<h},c=new Set;for(let[l,k]of e)k.onWindow&&c.add(l);for(let l of E){let{ids:k}=l.run;if(l.run.name===A){for(;l.first>0&&m(k[l.first-1]);)l.first--;for(;l.last<k.length-1&&m(k[l.last+1]);)l.last++}for(let b=l.first;b<=l.last;b++)c.add(k[b])}let y=new Set(E.filter(l=>l.run.abridged).map(l=>l.run)),f=(l,k,b)=>{let S=0;for(let v=k;v<b;v++)S+=Q(l[v]);return S},C=new Map;for(let l of t){let k=`${l.name} ${l.fragStart}`,b=C.get(k);b?b.push(l):C.set(k,[l])}let N=new Map;for(let l of C.values())l.sort((k,b)=>k.firstPiece-b.firstPiece),l.forEach((k,b)=>{N.set(k,[l[b-1],l[b+1]])});let x=new Map,p=l=>{var k,b;let S=x.get(l);return S===void 0&&(S=l.hapOffset+((b=(k=l.abridged)===null||k===void 0?void 0:k.bp)!==null&&b!==void 0?b:f(l.ids,0,l.ids.length)),x.set(l,S)),S},F=(l,k,b)=>{var S;let v=b>0?{trimmed:b}:{},L=k?l.next:l.prev;if(L){let q=(S=N.get(l))===null||S===void 0?void 0:S[k?1:0];return q?{kind:"elsewhere",chunk:L,bp:k?q.hapOffset-p(l):l.hapOffset-p(q),...v}:{kind:"elsewhere",chunk:L,...v}}let _=k?l.nextRecord:l.prevRecord;return _?{kind:"break",..._,...v}:{kind:"end",...v}},J=[];for(let{run:l,first:k,last:b}of E){let{ids:S,rev:v}=l;if(y.has(l)){J.push({name:l.name,fragStart:l.fragStart,hapStart:l.hapOffset,hapEnd:p(l),ids:S,rev:v,before:F(l,!1,0),after:F(l,!0,0),abridged:l.abridged});continue}let L=k,_=b;for(;L>0&&c.has(S[L-1]);)L--;for(;_<S.length-1&&c.has(S[_+1]);)_++;let q=l.hapOffset+f(S,0,L),R=q+f(S,L,_+1);J.push({name:l.name,fragStart:l.fragStart,hapStart:q,hapEnd:R,ids:S.subarray(L,_+1),rev:v.subarray(L,_+1),before:F(l,!1,q-l.hapOffset),after:F(l,!0,p(l)-R)})}return{kept:c,fragments:J,open:[...s.values()]}}function Ke(t,e,A,n){var i;for(let r of t.nodes.keys())!((i=e.get(r))===null||i===void 0)&&i.onWindow&&n.add(r);for(let{steps:r}of t.rows){let{ids:o}=r,s=-1;for(let I=0;I<o.length;I++){let a=e.get(o[I]);if(a?.onWindow){for(let g=s+1;s>=0&&g<I;g++)n.add(o[g]);s=I}else A&&a?.rank===0&&(s=-1)}}}function zt(t){let e=[],A=new Map,n={kinds:new Uint8Array(t.length),kindNames:[...Xt],bp:new Float64Array(t.length).fill(Number.NaN),trimmed:new Float64Array(t.length),chunkRefs:new Int32Array(t.length).fill(-1),chunkStarts:new Float64Array(t.length).fill(Number.NaN),chunkRefNames:e};return t.forEach((i,r)=>{var o;if(n.kinds[r]=Xt.indexOf(i.kind),n.trimmed[r]=(o=i.trimmed)!==null&&o!==void 0?o:0,"bp"in i&&i.bp!==void 0&&(n.bp[r]=i.bp),"chunk"in i&&i.chunk){let{refName:s,start:I}=i.chunk,a=A.get(s);a===void 0&&(a=e.length,A.set(s,a),e.push(s)),n.chunkRefs[r]=a,n.chunkStarts[r]=I}}),n}var Xi=(t,e)=>t.rank===0&&(e.rank!==0||t.refName<e.refName||t.refName===e.refName&&t.start<e.start),UA=class{constructor(e){this.nodes=new Map,this.sequences=new Map,this.links=[],this.chunks=[],this.window=e}placeNode(e,A){let n=this.nodes.get(e);if(n&&!Xi(A,n))return;let{window:i}=this;this.nodes.set(e,{...A,onWindow:A.rank===0&&A.refName===i.refName&&A.end>i.start-i.context&&A.start<i.end+i.context})}addLinkEnds(e,A){this.links.push(e,A)}addChunk(e){this.chunks.push(e)}addSequences(e){if(this.window.sequences)for(let[A,n]of e)this.sequences.set(A,n)}tables(e,A){this.chunks.length>0&&Zt(this.chunks,e,(f,C)=>{let N=this.nodes.get(f);N&&this.nodes.set(f,{...N,...C})},(f,C)=>{this.links.push(f,C)});let n=[];for(let f of e){let C=this.nodes.get(f);C&&n.push({...C,id:f})}n.sort((f,C)=>f.refName<C.refName?-1:f.refName>C.refName?1:f.start-C.start||f.id-C.id);let i=new Map,r=[],o=[],s=new Map,I=new Int32Array(n.length),a=new Int32Array(n.length),g=new Float64Array(n.length),h=new Int32Array(n.length);n.forEach(({id:f,refName:C,start:N,end:x,rank:p},F)=>{i.set(f,F),r.push(String(f));let J=s.get(C);J===void 0&&(J=o.length,s.set(C,J),o.push(C)),I[F]=x-N,a[F]=J,g[F]=N,h[F]=p});let E=f=>{let C=i.get(f);return C===void 0&&(C=r.length,i.set(f,C),r.push(String(f))),C},Q=new Map;for(let f=0;f<this.links.length;f+=2){let C=this.links[f],N=this.links[f+1],x=Math.floor(C/2),p=Math.floor(N/2);e.has(x)&&e.has(p)&&Q.set(`${x} ${C%2?"-":"+"} ${p} ${N%2?"-":"+"}`,f)}let B=[...Q.keys()].sort(),D=new Int32Array(B.length),u=new Int32Array(B.length),d=new Uint8Array(B.length);B.forEach((f,C)=>{let N=Q.get(f),x=this.links[N],p=this.links[N+1];D[C]=E(Math.floor(x/2)),u[C]=E(Math.floor(p/2)),d[C]=x%2|p%2<<1});let w=this.referenceFirst(A),m=new Int32Array(w.length+1);w.forEach(({ids:f},C)=>{m[C+1]=m[C]+f.length});let c=new Int32Array(m[w.length]),y=new Uint8Array(c.length);return w.forEach(({ids:f,rev:C},N)=>{let x=m[N];for(let p=0;p<f.length;p++)c[x+p]=E(f[p]);y.set(C,x)}),{nodes:{names:r,lengths:I,refs:a,starts:g,ranks:h,refNames:o},links:{from:D,to:u,strands:d},walks:{names:w.map(f=>f.name),starts:Float64Array.from(w,f=>f.hapStart),ends:Float64Array.from(w,f=>f.hapEnd),offsets:m,steps:c,reversed:y,before:zt(w.map(f=>f.before)),after:zt(w.map(f=>f.after)),abridgedSteps:Float64Array.from(w,f=>{var C,N;return(N=(C=f.abridged)===null||C===void 0?void 0:C.steps)!==null&&N!==void 0?N:NaN}),abridgedBp:Float64Array.from(w,f=>{var C,N;return(N=(C=f.abridged)===null||C===void 0?void 0:C.bp)!==null&&N!==void 0?N:NaN})}}}referenceFirst(e){let{refName:A}=this.window;return[...e].sort((n,i)=>+(i.name===A)-+(n.name===A)||(n.name<i.name?-1:n.name>i.name?1:n.hapStart-i.hapStart))}},Te={steps:"the step budget",bytes:"a byte budget of"},Pi=4,zi=t=>{var e;let A=(e=t.interior)!==null&&e!==void 0?e:0;return A+(t.n-A)/Pi};function qe(t,e,A,n,i,r,o=Te){var s;let I=0,a=new Map,g=new Set;for(let u of t){let d=zi(u);I+=d,a.set(u.chunkStart,((s=a.get(u.chunkStart))!==null&&s!==void 0?s:0)+d),g.add(u.name)}let h=e*A;if(I<=h)return;let E=n.end-n.start,Q=0,B=0;for(let u of[...a.keys()].sort((d,w)=>d-w)){if(Q+=a.get(u),Q>h)break;B=Math.max(B,u+i-n.start)}let D=!r&&g.size>2&&2*I/g.size<=h;return new IA(B>0?`Zoom in to about ${LA(B)}${D?", or choose fewer haplotypes,":""} to see the graph`:`Too many haplotype steps here to draw ${r?"these haplotypes":"every haplotype"} (${Math.round(Q).toLocaleString()} steps read, a step along the reference counting a quarter, over ${A} \xD7 ${o.steps} of ${e.toLocaleString()}); choose fewer haplotypes`,h,E,Math.max(B,1))}function Ze(t,e,A,n){let i=t.reduce((r,o)=>r+o.ids.length,0);return $t(i,e,A,n)}function te(t,e,A,n,i=A.end){return $t(t,e,A,n,i)}function $t(t,e,A,n,i=A.end){if(t<=e)return;let r=A.end-A.start,o=Math.min(i,A.end)-A.start,s=Math.max(1,Math.floor(o*e/t));return new IA(`Zoom in to about ${LA(s)}${n?"":", or choose fewer haplotypes,"} to see the graph`,e,r,s)}async function Oe(t,e,A,n,i=Te){let r=await t(A.end);if(r<=e)return;let o=0,s;for(let a=Math.floor(A.start/n)*n;a<A.end;a+=n){let g=await t(a+1);if(s??(s=g),g>e)break;o=a+n-A.start}let I=A.end-A.start;return o>0?new IA(`Zoom in to about ${LA(o)} to see the graph`,e,I,o):new IA(`Too much graph here to fetch, even zoomed in (${jt(s??r)} against ${i.bytes} ${jt(e)}). A satellite or rDNA array usually causes this: the graph folds the repeat into a few nodes that each haplotype loops through many times`,e,I,1,{bytes:r})}var jt=t=>`${(t/1e6).toFixed(1)} MB`;function Xe(t){var e;let A=t.split(" "),n=A.length>=8,i=n?5:0;return{anchored:n,segment:{refName:A[i],start:+A[i+1],end:+A[i+2],id:A[3],rank:+A[4],tags:(e=A[n?8:5])!==null&&e!==void 0?e:""}}}function ji(t){let e=t.tags.split(" ").find(n=>n.startsWith("SM:Z:"));if(e===void 0)return;let A=e.slice(5).split(",").map(n=>n.trim()).filter(Boolean);return A.length>0?A:void 0}function An(t){return{id:t.slice(0,-1),strand:t.slice(-1)}}function Pe(t){var e,A;let n=t.split(" "),i=An(n[3]),r=An(n[4]);return{source:i.id,sourceStrand:i.strand,target:r.id,targetStrand:r.strand,sourceSegment:{id:i.id,refName:n[5],start:+n[6],end:+n[7],rank:+n[8],tags:(e=n[13])!==null&&e!==void 0?e:""},targetSegment:{id:r.id,refName:n[9],start:+n[10],end:+n[11],rank:+n[12],tags:(A=n[14])!==null&&A!==void 0?A:""}}}function ze(t){return`${t.source}${t.sourceStrand}${t.target}${t.targetStrand}`}function YA(t,e,A){e.set(ze(A),A);let n=[];for(let i of[A.sourceSegment,A.targetSegment])t.has(i.id)||(t.set(i.id,i),n.push(i));return n}function tn(t,e,A){let n=o=>o.rank!==0||o.refName!==A.refName?0:o.end<=A.start?-1:o.start>=A.end?1:0,i=new Map(t),r=new Map;for(let o of e)(t.has(o.source)||t.has(o.target)||n(o.sourceSegment)*n(o.targetSegment)===-1)&&YA(i,r,o);for(let o of e)i.has(o.source)&&i.has(o.target)&&r.set(ze(o),o);return{segments:i,links:r}}function nn(t,e,A){let n=i=>i.refName!==A.refName||i.end<=A.start||i.start>=A.end;return[...en(t.filter(i=>i.rank>0),i=>e.has(i.id),A.end-A.start),...en(t.filter(i=>i.rank===0&&n(i)),()=>!0,0)]}function en(t,e,A){let n=[...t].sort((r,o)=>ne(r.refName,o.refName)||r.start-o.start),i=[];for(let r of n){let o=i.at(-1);o?.refName===r.refName&&r.start-o.end<=A?(o.needed||(o.needed=r.start>o.end||e(r)),o.end=Math.max(o.end,r.end)):i.push({refName:r.refName,start:r.start,end:r.end,needed:e(r)})}return i.filter(r=>r.needed).map(({refName:r,start:o,end:s})=>({refName:r,start:o,end:s}))}function rn(t,e,A){let n=i=>e.has(i.id)||A.some(r=>r.refName===i.refName&&i.start>=r.start&&i.end<=r.end);return t.filter(i=>n(i.sourceSegment)&&n(i.targetSegment))}var Wi=/^[A-Za-z][A-Za-z0-9]:[AifZJHB]:/;function Vi(t){let{id:e,refName:A,start:n,end:i,rank:r,tags:o}=t,s=o.split(" ").filter(a=>Wi.test(a)),I=s.length===0?"":` ${s.join(" ")}`;return`S ${e} * LN:i:${i-n} SN:Z:${A} SO:i:${n} SR:i:${r}${I}`}function $i(t){let{source:e,sourceStrand:A,target:n,targetStrand:i}=t;return`L ${e} ${A} ${n} ${i} 0M`}function ne(t,e){return t<e?-1:t>e?1:0}function ie(t,e){let A=[...t.values()].sort((i,r)=>ne(i.refName,r.refName)||i.start-r.start||ne(i.id,r.id)),n=[...e.keys()].sort((i,r)=>ne(i,r));return["H VN:Z:1.0",...A.map(i=>Vi(i)),...n.map(i=>$i(e.get(i)))].join(`
|
|
2
2
|
`)}function je(t,e){return`${t} ${e}`}function HA(t){let e=new Map;for(let A of t){e.set(A,A);let n=Se(A);if(n!==A){let i=Fe(A);e.set(je(n,i),A);let r=GA(A);r!==void 0&&e.set(je(r,i),A)}}return e}function KA(t,e,A){var n;return(n=t.get(je(e,A)))!==null&&n!==void 0?n:t.get(A)}var Ar=8,er=3,tr=4,nr=1e3,ir={stepBudget:4e6,byteBudget:8e6},re=class extends Error{constructor(){super(...arguments),this.name="WalkFormatError"}};function iA(t,e,A){if(!Number.isFinite(e)||!Number.isFinite(A))throw new Error(`${t}:${e}-${A} is not a finite range to query the graph's index for`)}function on(t){return t.filter(e=>!e.includes("~"))}function sn(t,e){return e?(e.throwIfAborted(),new Promise((A,n)=>{let i=()=>{n(e.reason instanceof Error?e.reason:new Error(String(e.reason)))};e.addEventListener("abort",i,{once:!0}),t.then(A,n).finally(()=>{e.removeEventListener("abort",i)})})):t}var We=class{constructor(e){this.walks=e}header(e={}){if(!this.headerRead){let A=this.walks.getHeaderLines().then(n=>{var i,r;let o=Me(n);if(o.format!==5)throw new re(`This walk file is format ${(i=o.format)!==null&&i!==void 0?i:1}; @jbrowse/graph-walks reads format 5, so rebuild it with gfa-to-tabix 1.4 or later`);return{...o,chunk:(r=o.chunk)!==null&&r!==void 0?r:65536}});A.catch(()=>{this.headerRead===A&&(this.headerRead=void 0)}),this.headerRead=A}return sn(this.headerRead,e.signal)}async referenceSequences(e={}){return on(await this.walks.getReferenceSequenceNames(e))}async sequenceFor(e,A,n={}){if(!this.lookupRead){let r=this.walks.getReferenceSequenceNames().then(o=>HA(on(o)));r.catch(()=>{this.lookupRead===r&&(this.lookupRead=void 0)}),this.lookupRead=r}let i=await sn(this.lookupRead,n.signal);return KA(i,e,A)}async queryStart(e,A={}){let{refName:n="",end:i=e+1}=A;return ee(await this.header(A),n,e,i)}async cut(e,A,n={}){var i,r;let{signal:o,keep:s,context:I=nr,stepBudget:a=1/0,byteBudget:g=1/0,links:h=!0,contained:E=!1,nodeLimit:Q=1/0,expand:B}=n,D=await this.header({signal:o}),{chunk:u}=D,d=ee(D,e,A.start,A.end),w=(i=this.walks.bytesForRegions)===null||i===void 0?void 0:i.bind(this.walks),m=Number.isFinite(g)&&w!==void 0,c=async R=>m?w(R.map(U=>({refName:e,...U})),{signal:o}):0,y=m?await Oe(async R=>(iA(e,d,R),c([{start:d,end:R}])),g,A,u,n.budgetNames):void 0;if(y)throw y;let f=new AbortController,C=()=>{f.abort(o?.reason)};o?.throwIfAborted(),o?.addEventListener("abort",C,{once:!0});let N=[],x,p=new UA({refName:e,start:A.start,end:A.end,context:I,sequences:n.sequences}),F=new Set,J=[],l=new Set,k=s!==void 0,b=[],S=(R,U)=>{if(F.has(R))return;F.add(R);let G=Le(U,s,n.sequences),Y;for(let K of G.rows)K.abridged&&B?.(K.name)?(Y??(Y=U.filter(X=>X[3]==="ref")),b.push({refRows:Y,row:K})):N.push(K);L(G,R)},v=async({refRows:R,row:U})=>{let{refName:G,start:Y}=U.abridged.detail;iA(G,Y,Y+1);let K=[];await this.walks.getLines(G,Y,Y+1,{signal:f.signal,lineCallback:O=>{let V=O.split(" ");V[0]=e,V[1]=String(U.chunkStart),K.push(V)}});let X=Le([...R,...K],O=>O===U.name,n.sequences);for(let O of X.rows)O.name===U.name&&N.push(O);L(X,U.chunkStart)},L=(R,U)=>{for(let[G,Y]of R.nodes)p.placeNode(G,Y);p.addSequences(R.sequences),p.addChunk(R.chunk);for(let G of R.ends)J.push(G);if(Number.isFinite(Q)){Ke(R,p.nodes,E,l),l.size>Q&&(l.clear(),Ke({nodes:p.nodes,rows:N},p.nodes,E,l));let G=te(l.size,Q,A,k,U+u);if(G)throw G}},_=async(R,U)=>{iA(e,R,U);let G,Y=[];await this.walks.getLines(e,R,U,{signal:f.signal,lineCallback:X=>{let O=X.split(" "),V=+O[1];V!==G&&(G!==void 0&&S(G,Y),G=V,Y=[]),Y.push(O)}}),G!==void 0&&S(G,Y);let K=b;b=[];for(let X of K)await v(X);if(h)for(let[X,O]of Ot(J))p.addLinkEnds(X,O)};try{await _(d,A.end);let R=qe(N,a,Ar,A,u,k,n.budgetNames);if(R)throw R;let U=d,G=Math.floor((A.end-1)/u)*u,Y=tr*u,[K,X]=E?[Math.floor((A.start-I)/u)*u,Math.floor((A.end+I-1)/u)*u]:[U-Y,G+Y],O=()=>He(Ye(N),p.nodes,e,{contained:E,context:I});x=O();let V=await c([{start:d,end:A.end}]);for(let JA=0;JA<er;JA++){let fA=U,eA=G;for(let T of x.open)T.refName===e&&T.start>=K&&T.start<=X&&(fA=Math.min(fA,T.start),eA=Math.max(eA,T.start));let tA=[{start:fA,end:U},{start:G+u,end:eA+1}].filter(T=>T.end>T.start);if(tA.length===0||(V+=await c(tA),V>g))break;U=fA,G=eA,await Promise.all(tA.map(({start:T,end:DA})=>_(T,DA))),x=O()}}catch(R){throw f.abort(),R}finally{o?.removeEventListener("abort",C)}let q=(r=Ze(x.fragments,a,A,k))!==null&&r!==void 0?r:te(x.kept.size,Q,A,k);if(q)throw q;return{graph:p,...x}}async cutRegion(e,A={}){var n;let{haplotypes:i,referenceSample:r,...o}=A,{signal:s}=A,I=await this.header({signal:s}),a=(n=r??I.references[0])!==null&&n!==void 0?n:"",g=await this.sequenceFor(a,e.refName,{signal:s});if(g===void 0){let B=await this.referenceSequences({signal:s});throw new Error(`The walk file has no sequence ${e.refName} on ${a}; it holds ${B.slice(0,5).join(", ")}${B.length>5?", \u2026":""}`)}let{graph:h,kept:E,fragments:Q}=await this.cut(g,e,{...o,keep:Ue(i,g)});return{tables:h.tables(E,Q),refName:g,sample:a}}};function an(t){return t.filter(e=>e.rank>0)}function gn(t,e,A,n,i){return iA(e,A,n),t.getLines(e,A,n,i)}async function Ve(t,e,A){let n=[];return await gn(t,e.refName,e.start,e.end,{signal:A,lineCallback:i=>{n.push(Pe(i))}}),n}async function rr(t,e,{hops:A=0,signal:n}={}){let i=new Map,r=new Map,o={anchored:!1},[,s]=await Promise.all([gn(t.segments,e.refName,e.start,e.end,{signal:n,lineCallback:g=>{let h=Xe(g);o.anchored||(o.anchored=h.anchored),i.set(h.segment.id,h.segment)}}),Ve(t.links,e,n)]);if(o.anchored){let g=tn(i,s,e);return ie(g.segments,g.links)}let I=async g=>(await Ve(t.links,g,n)).flatMap(h=>YA(i,r,h)),a=an(s.flatMap(g=>YA(i,r,g)));for(let g=0;g<A;g++){let h=await Promise.all(a.map(I));a=an(h.flat())}if(A>0){let g=nn([...i.values()],new Set(a.map(E=>E.id)),e),h=await Promise.all(g.map(E=>Ve(t.links,E,n)));for(let E of rn(h.flat(),i,g))YA(i,r,E)}return ie(i,r)}async function qo(t,e,A,n,i){return iA(e,A,n),t.getLines(e,A,n,i)}async function In(t,e,A){for(let{refName:n,start:i,end:r}of e)iA(n,i,r);return t.bytesForRegions(e,A)}var $e=0;var At=2;var TA=4;var QA=0,qA=1,Qn=2;var Cn=-5;function or(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function cn(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var A=e.shift();if(A){if(typeof A!="object")throw new TypeError(A+"must be non-object");for(var n in A)or(A,n)&&(t[n]=A[n])}}return t}function se(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)}var ZA={arraySet:function(t,e,A,n,i){if(e.subarray&&t.subarray){t.set(e.subarray(A,A+n),i);return}for(var r=0;r<n;r++)t[i+r]=e[A+r]},flattenChunks:function(t){var e,A,n,i,r,o;for(n=0,e=0,A=t.length;e<A;e++)n+=t[e].length;for(o=new Uint8Array(n),i=0,e=0,A=t.length;e<A;e++)r=t[e],o.set(r,i),i+=r.length;return o},Buf8:function(t){return new Uint8Array(t)},Buf16:function(t){return new Uint16Array(t)},Buf32:function(t){return new Int32Array(t)}},OA={arraySet:function(t,e,A,n,i){for(var r=0;r<n;r++)t[i+r]=e[A+r]},flattenChunks:function(t){return[].concat.apply([],t)},Buf8:function(t){return new Array(t)},Buf16:function(t){return new Array(t)},Buf32:function(t){return new Array(t)}},xA=()=>{let t=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return xA=()=>t,t},$=(t,e,A,n,i)=>($=xA()?ZA.arraySet:OA.arraySet,$(t,e,A,n,i)),oe=t=>(oe=xA()?ZA.flattenChunks:OA.flattenChunks,oe(t)),rA=t=>(rA=xA()?ZA.Buf8:OA.Buf8,rA(t)),CA=t=>(CA=xA()?ZA.Buf16:OA.Buf16,CA(t)),hA=t=>(hA=xA()?ZA.Buf32:OA.Buf32,hA(t));var Bn=function(){let t=!0;try{String.fromCharCode.apply(null,[0])}catch{t=!1}return Bn=()=>t,t},En=function(){let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{t=!1}return En=()=>t,t},et=function(t){for(var e=rA(256),A=0;A<256;A++)e[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;return e[254]=e[254]=1,et=n=>e[n],e[t]};function tt(t){var e,A,n,i,r,o=t.length,s=0;for(i=0;i<o;i++)A=t.charCodeAt(i),(A&64512)===55296&&i+1<o&&(n=t.charCodeAt(i+1),(n&64512)===56320&&(A=65536+(A-55296<<10)+(n-56320),i++)),s+=A<128?1:A<2048?2:A<65536?3:4;for(e=new Uint8Array(s),r=0,i=0;r<s;i++)A=t.charCodeAt(i),(A&64512)===55296&&i+1<o&&(n=t.charCodeAt(i+1),(n&64512)===56320&&(A=65536+(A-55296<<10)+(n-56320),i++)),A<128?e[r++]=A:A<2048?(e[r++]=192|A>>>6,e[r++]=128|A&63):A<65536?(e[r++]=224|A>>>12,e[r++]=128|A>>>6&63,e[r++]=128|A&63):(e[r++]=240|A>>>18,e[r++]=128|A>>>12&63,e[r++]=128|A>>>6&63,e[r++]=128|A&63);return e}function sr(t,e){if(e<65534&&(t.subarray&&En()||!t.subarray&&Bn()))return String.fromCharCode.apply(null,se(t,e));for(var A="",n=0;n<e;n++)A+=String.fromCharCode(t[n]);return A}function fn(t){for(var e=new Uint8Array(t.length),A=0,n=e.length;A<n;A++)e[A]=t.charCodeAt(A);return e}function ln(t,e){var A,n,i,r,o=e||t.length,s=new Array(o*2);for(n=0,A=0;A<o;){if(i=t[A++],i<128){s[n++]=i;continue}if(r=et(i),r>4){s[n++]=65533,A+=r-1;continue}for(i&=r===2?31:r===3?15:7;r>1&&A<o;)i=i<<6|t[A++]&63,r--;if(r>1){s[n++]=65533;continue}i<65536?s[n++]=i:(i-=65536,s[n++]=55296|i>>10&1023,s[n++]=56320|i&1023)}return sr(s,n)}function hn(t,e){var A;for(e=e||t.length,e>t.length&&(e=t.length),A=e-1;A>=0&&(t[A]&192)===128;)A--;return A<0||A===0?e:A+et(t[A])>e?A:e}function nt(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function XA(t,e,A,n){for(var i=t&65535|0,r=t>>>16&65535|0,o=0;A!==0;){o=A>2e3?2e3:A,A-=o;do i=i+e[n++]|0,r=r+i|0;while(--o);i%=65521,r%=65521}return i|r<<16|0}function ar(){for(var t,e=[],A=0;A<256;A++){t=A;for(var n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;e[A]=t}return e}var dn=function(){let t=ar();return dn=()=>t,t};function z(t,e,A,n){var i=dn(),r=n+A;t^=-1;for(var o=n;o<r;o++)t=t>>>8^i[(t^e[o])&255];return t^-1}var ae=30,gr=12;function it(t,e){var A,n,i,r,o,s,I,a,g,h,E,Q,B,D,u,d,w,m,c,y,f,C,N,x,p;A=t.state,n=t.next_in,x=t.input,i=n+(t.avail_in-5),r=t.next_out,p=t.output,o=r-(e-t.avail_out),s=r+(t.avail_out-257),I=A.dmax,a=A.wsize,g=A.whave,h=A.wnext,E=A.window,Q=A.hold,B=A.bits,D=A.lencode,u=A.distcode,d=(1<<A.lenbits)-1,w=(1<<A.distbits)-1;A:do{B<15&&(Q+=x[n++]<<B,B+=8,Q+=x[n++]<<B,B+=8),m=D[Q&d];e:for(;;){if(c=m>>>24,Q>>>=c,B-=c,c=m>>>16&255,c===0)p[r++]=m&65535;else if(c&16){y=m&65535,c&=15,c&&(B<c&&(Q+=x[n++]<<B,B+=8),y+=Q&(1<<c)-1,Q>>>=c,B-=c),B<15&&(Q+=x[n++]<<B,B+=8,Q+=x[n++]<<B,B+=8),m=u[Q&w];t:for(;;){if(c=m>>>24,Q>>>=c,B-=c,c=m>>>16&255,c&16){if(f=m&65535,c&=15,B<c&&(Q+=x[n++]<<B,B+=8,B<c&&(Q+=x[n++]<<B,B+=8)),f+=Q&(1<<c)-1,f>I){t.msg="invalid distance too far back",A.mode=ae;break A}if(Q>>>=c,B-=c,c=r-o,f>c){if(c=f-c,c>g&&A.sane){t.msg="invalid distance too far back",A.mode=ae;break A}if(C=0,N=E,h===0){if(C+=a-c,c<y){y-=c;do p[r++]=E[C++];while(--c);C=r-f,N=p}}else if(h<c){if(C+=a+h-c,c-=h,c<y){y-=c;do p[r++]=E[C++];while(--c);if(C=0,h<y){c=h,y-=c;do p[r++]=E[C++];while(--c);C=r-f,N=p}}}else if(C+=h-c,c<y){y-=c;do p[r++]=E[C++];while(--c);C=r-f,N=p}for(;y>2;)p[r++]=N[C++],p[r++]=N[C++],p[r++]=N[C++],y-=3;y&&(p[r++]=N[C++],y>1&&(p[r++]=N[C++]))}else{C=r-f;do p[r++]=p[C++],p[r++]=p[C++],p[r++]=p[C++],y-=3;while(y>2);y&&(p[r++]=p[C++],y>1&&(p[r++]=p[C++]))}}else if((c&64)===0){m=u[(m&65535)+(Q&(1<<c)-1)];continue t}else{t.msg="invalid distance code",A.mode=ae;break A}break}}else if((c&64)===0){m=D[(m&65535)+(Q&(1<<c)-1)];continue e}else if(c&32){A.mode=gr;break A}else{t.msg="invalid literal/length code",A.mode=ae;break A}break}}while(n<i&&r<s);y=B>>3,n-=y,B-=y<<3,Q&=(1<<B)-1,t.next_in=n,t.next_out=r,t.avail_in=n<i?5+(i-n):5-(n-i),t.avail_out=r<s?257+(s-r):257-(r-s),A.hold=Q,A.bits=B}var bA=15,un=852,wn=592,pn=0,rt=1,kn=2,Ir=[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],Qr=[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],Cr=[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],cr=[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 dA(t,e,A,n,i,r,o,s){var I=s.bits,a=0,g=0,h=0,E=0,Q=0,B=0,D=0,u=0,d=0,w=0,m,c,y,f,C,N=null,x=0,p,F=CA(bA+1),J=CA(bA+1),l=null,k=0,b,S,v;for(a=0;a<=bA;a++)F[a]=0;for(g=0;g<n;g++)F[e[A+g]]++;for(Q=I,E=bA;E>=1&&F[E]===0;E--);if(Q>E&&(Q=E),E===0)return i[r++]=1<<24|64<<16|0,i[r++]=1<<24|64<<16|0,s.bits=1,0;for(h=1;h<E&&F[h]===0;h++);for(Q<h&&(Q=h),u=1,a=1;a<=bA;a++)if(u<<=1,u-=F[a],u<0)return-1;if(u>0&&(t===pn||E!==1))return-1;for(J[1]=0,a=1;a<bA;a++)J[a+1]=J[a]+F[a];for(g=0;g<n;g++)e[A+g]!==0&&(o[J[e[A+g]]++]=g);if(t===pn?(N=l=o,p=19):t===rt?(N=Ir,x-=257,l=Qr,k-=257,p=256):(N=Cr,l=cr,p=-1),w=0,g=0,a=h,C=r,B=Q,D=0,y=-1,d=1<<Q,f=d-1,t===rt&&d>un||t===kn&&d>wn)return 1;for(;;){b=a-D,o[g]<p?(S=0,v=o[g]):o[g]>p?(S=l[k+o[g]],v=N[x+o[g]]):(S=96,v=0),m=1<<a-D,c=1<<B,h=c;do c-=m,i[C+(w>>D)+c]=b<<24|S<<16|v|0;while(c!==0);for(m=1<<a-1;w&m;)m>>=1;if(m!==0?(w&=m-1,w+=m):w=0,g++,--F[a]===0){if(a===E)break;a=e[A+o[g]]}if(a>Q&&(w&f)!==y){for(D===0&&(D=Q),C+=h,B=a-D,u=1<<B;B+D<E&&(u-=F[B+D],!(u<=0));)B++,u<<=1;if(d+=1<<B,t===rt&&d>un||t===kn&&d>wn)return 1;y=w&f,i[y]=Q<<24|B<<16|C-r|0}}return w!==0&&(i[C+w]=a-D<<24|64<<16|0),s.bits=Q,0}var Br=0,zn=1,jn=2,mn=4,Er=5,ge=6,uA=0,fr=1,lr=2,j=-2,Wn=-3,Qt=-4,hr=-5,Nn=8,Vn=1,Dn=2,yn=3,xn=4,bn=5,Sn=6,Fn=7,vn=8,Rn=9,Jn=10,Ce=11,oA=12,ot=13,Gn=14,st=15,Ln=16,_n=17,Mn=18,Un=19,Ie=20,Qe=21,Yn=22,Hn=23,Kn=24,Tn=25,qn=26,at=27,Zn=28,On=29,H=30,Ct=31,dr=32,ur=852,wr=592;function Xn(t){return(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24)}function pr(){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=CA(320),this.work=CA(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function kr(t){var e;return!t||!t.state?j:(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=Vn,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=hA(ur),e.distcode=e.distdyn=hA(wr),e.sane=1,e.back=-1,uA)}function mr(t){var e;return!t||!t.state?j:(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,kr(t))}function Nr(t,e){var A,n;return!t||!t.state||(n=t.state,e<0?(A=0,e=-e):(A=(e>>4)+1,e<48&&(e&=15)),e&&(e<8||e>15))?j:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=A,n.wbits=e,mr(t))}function $n(t,e){var A,n;return t?(n=new pr,t.state=n,n.window=null,A=Nr(t,e),A!==uA&&(t.state=null),A):j}var Pn=!0,gt,It;function Dr(t){if(Pn){var e;for(gt=hA(512),It=hA(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(dA(zn,t.lens,0,288,gt,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;dA(jn,t.lens,0,32,It,0,t.work,{bits:5}),Pn=!1}t.lencode=gt,t.lenbits=9,t.distcode=It,t.distbits=5}function Ai(t,e,A,n){var i,r=t.state;return r.window===null&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=rA(r.wsize)),n>=r.wsize?($(r.window,e,A-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(i=r.wsize-r.wnext,i>n&&(i=n),$(r.window,e,A-n,i,r.wnext),n-=i,n?($(r.window,e,A-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=i,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=i))),0}function ei(t,e){var A,n,i,r,o,s,I,a,g,h,E,Q,B,D,u=0,d,w,m,c,y,f,C,N,x=rA(4),p,F,J=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&t.avail_in!==0)return j;A=t.state,A.mode===oA&&(A.mode=ot),o=t.next_out,i=t.output,I=t.avail_out,r=t.next_in,n=t.input,s=t.avail_in,a=A.hold,g=A.bits,h=s,E=I,N=uA;A:for(;;)switch(A.mode){case Vn:if(A.wrap===0){A.mode=ot;break}for(;g<16;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(A.wrap&2&&a===35615){A.check=0,x[0]=a&255,x[1]=a>>>8&255,A.check=z(A.check,x,2,0),a=0,g=0,A.mode=Dn;break}if(A.flags=0,A.head&&(A.head.done=!1),!(A.wrap&1)||(((a&255)<<8)+(a>>8))%31){t.msg="incorrect header check",A.mode=H;break}if((a&15)!==Nn){t.msg="unknown compression method",A.mode=H;break}if(a>>>=4,g-=4,C=(a&15)+8,A.wbits===0)A.wbits=C;else if(C>A.wbits){t.msg="invalid window size",A.mode=H;break}A.dmax=1<<C,t.adler=A.check=1,A.mode=a&512?Jn:oA,a=0,g=0;break;case Dn:for(;g<16;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(A.flags=a,(A.flags&255)!==Nn){t.msg="unknown compression method",A.mode=H;break}if(A.flags&57344){t.msg="unknown header flags set",A.mode=H;break}A.head&&(A.head.text=a>>8&1),A.flags&512&&(x[0]=a&255,x[1]=a>>>8&255,A.check=z(A.check,x,2,0)),a=0,g=0,A.mode=yn;case yn:for(;g<32;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.head&&(A.head.time=a),A.flags&512&&(x[0]=a&255,x[1]=a>>>8&255,x[2]=a>>>16&255,x[3]=a>>>24&255,A.check=z(A.check,x,4,0)),a=0,g=0,A.mode=xn;case xn:for(;g<16;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.head&&(A.head.xflags=a&255,A.head.os=a>>8),A.flags&512&&(x[0]=a&255,x[1]=a>>>8&255,A.check=z(A.check,x,2,0)),a=0,g=0,A.mode=bn;case bn:if(A.flags&1024){for(;g<16;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.length=a,A.head&&(A.head.extra_len=a),A.flags&512&&(x[0]=a&255,x[1]=a>>>8&255,A.check=z(A.check,x,2,0)),a=0,g=0}else A.head&&(A.head.extra=null);A.mode=Sn;case Sn:if(A.flags&1024&&(Q=A.length,Q>s&&(Q=s),Q&&(A.head&&(C=A.head.extra_len-A.length,A.head.extra||(A.head.extra=new Array(A.head.extra_len)),$(A.head.extra,n,r,Q,C)),A.flags&512&&(A.check=z(A.check,n,Q,r)),s-=Q,r+=Q,A.length-=Q),A.length))break A;A.length=0,A.mode=Fn;case Fn:if(A.flags&2048){if(s===0)break A;Q=0;do C=n[r+Q++],A.head&&C&&A.length<65536&&(A.head.name+=String.fromCharCode(C));while(C&&Q<s);if(A.flags&512&&(A.check=z(A.check,n,Q,r)),s-=Q,r+=Q,C)break A}else A.head&&(A.head.name=null);A.length=0,A.mode=vn;case vn:if(A.flags&4096){if(s===0)break A;Q=0;do C=n[r+Q++],A.head&&C&&A.length<65536&&(A.head.comment+=String.fromCharCode(C));while(C&&Q<s);if(A.flags&512&&(A.check=z(A.check,n,Q,r)),s-=Q,r+=Q,C)break A}else A.head&&(A.head.comment=null);A.mode=Rn;case Rn:if(A.flags&512){for(;g<16;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(a!==(A.check&65535)){t.msg="header crc mismatch",A.mode=H;break}a=0,g=0}A.head&&(A.head.hcrc=A.flags>>9&1,A.head.done=!0),t.adler=A.check=0,A.mode=oA;break;case Jn:for(;g<32;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}t.adler=A.check=Xn(a),a=0,g=0,A.mode=Ce;case Ce:if(A.havedict===0)return t.next_out=o,t.avail_out=I,t.next_in=r,t.avail_in=s,A.hold=a,A.bits=g,lr;t.adler=A.check=1,A.mode=oA;case oA:if(e===Er||e===ge)break A;case ot:if(A.last){a>>>=g&7,g-=g&7,A.mode=at;break}for(;g<3;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}switch(A.last=a&1,a>>>=1,g-=1,a&3){case 0:A.mode=Gn;break;case 1:if(Dr(A),A.mode=Ie,e===ge){a>>>=2,g-=2;break A}break;case 2:A.mode=_n;break;case 3:t.msg="invalid block type",A.mode=H}a>>>=2,g-=2;break;case Gn:for(a>>>=g&7,g-=g&7;g<32;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if((a&65535)!==(a>>>16^65535)){t.msg="invalid stored block lengths",A.mode=H;break}if(A.length=a&65535,a=0,g=0,A.mode=st,e===ge)break A;case st:A.mode=Ln;case Ln:if(Q=A.length,Q){if(Q>s&&(Q=s),Q>I&&(Q=I),Q===0)break A;$(i,n,r,Q,o),s-=Q,r+=Q,I-=Q,o+=Q,A.length-=Q;break}A.mode=oA;break;case _n:for(;g<14;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(A.nlen=(a&31)+257,a>>>=5,g-=5,A.ndist=(a&31)+1,a>>>=5,g-=5,A.ncode=(a&15)+4,a>>>=4,g-=4,A.nlen>286||A.ndist>30){t.msg="too many length or distance symbols",A.mode=H;break}A.have=0,A.mode=Mn;case Mn:for(;A.have<A.ncode;){for(;g<3;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.lens[J[A.have++]]=a&7,a>>>=3,g-=3}for(;A.have<19;)A.lens[J[A.have++]]=0;if(A.lencode=A.lendyn,A.lenbits=7,p={bits:A.lenbits},N=dA(Br,A.lens,0,19,A.lencode,0,A.work,p),A.lenbits=p.bits,N){t.msg="invalid code lengths set",A.mode=H;break}A.have=0,A.mode=Un;case Un:for(;A.have<A.nlen+A.ndist;){for(;u=A.lencode[a&(1<<A.lenbits)-1],d=u>>>24,w=u>>>16&255,m=u&65535,!(d<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(m<16)a>>>=d,g-=d,A.lens[A.have++]=m;else{if(m===16){for(F=d+2;g<F;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(a>>>=d,g-=d,A.have===0){t.msg="invalid bit length repeat",A.mode=H;break}C=A.lens[A.have-1],Q=3+(a&3),a>>>=2,g-=2}else if(m===17){for(F=d+3;g<F;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}a>>>=d,g-=d,C=0,Q=3+(a&7),a>>>=3,g-=3}else{for(F=d+7;g<F;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}a>>>=d,g-=d,C=0,Q=11+(a&127),a>>>=7,g-=7}if(A.have+Q>A.nlen+A.ndist){t.msg="invalid bit length repeat",A.mode=H;break}for(;Q--;)A.lens[A.have++]=C}}if(A.mode===H)break;if(A.lens[256]===0){t.msg="invalid code -- missing end-of-block",A.mode=H;break}if(A.lenbits=9,p={bits:A.lenbits},N=dA(zn,A.lens,0,A.nlen,A.lencode,0,A.work,p),A.lenbits=p.bits,N){t.msg="invalid literal/lengths set",A.mode=H;break}if(A.distbits=6,A.distcode=A.distdyn,p={bits:A.distbits},N=dA(jn,A.lens,A.nlen,A.ndist,A.distcode,0,A.work,p),A.distbits=p.bits,N){t.msg="invalid distances set",A.mode=H;break}if(A.mode=Ie,e===ge)break A;case Ie:A.mode=Qe;case Qe:if(s>=6&&I>=258){t.next_out=o,t.avail_out=I,t.next_in=r,t.avail_in=s,A.hold=a,A.bits=g,it(t,E),o=t.next_out,i=t.output,I=t.avail_out,r=t.next_in,n=t.input,s=t.avail_in,a=A.hold,g=A.bits,A.mode===oA&&(A.back=-1);break}for(A.back=0;u=A.lencode[a&(1<<A.lenbits)-1],d=u>>>24,w=u>>>16&255,m=u&65535,!(d<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(w&&(w&240)===0){for(c=d,y=w,f=m;u=A.lencode[f+((a&(1<<c+y)-1)>>c)],d=u>>>24,w=u>>>16&255,m=u&65535,!(c+d<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}a>>>=c,g-=c,A.back+=c}if(a>>>=d,g-=d,A.back+=d,A.length=m,w===0){A.mode=qn;break}if(w&32){A.back=-1,A.mode=oA;break}if(w&64){t.msg="invalid literal/length code",A.mode=H;break}A.extra=w&15,A.mode=Yn;case Yn:if(A.extra){for(F=A.extra;g<F;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.length+=a&(1<<A.extra)-1,a>>>=A.extra,g-=A.extra,A.back+=A.extra}A.was=A.length,A.mode=Hn;case Hn:for(;u=A.distcode[a&(1<<A.distbits)-1],d=u>>>24,w=u>>>16&255,m=u&65535,!(d<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if((w&240)===0){for(c=d,y=w,f=m;u=A.distcode[f+((a&(1<<c+y)-1)>>c)],d=u>>>24,w=u>>>16&255,m=u&65535,!(c+d<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}a>>>=c,g-=c,A.back+=c}if(a>>>=d,g-=d,A.back+=d,w&64){t.msg="invalid distance code",A.mode=H;break}A.offset=m,A.extra=w&15,A.mode=Kn;case Kn:if(A.extra){for(F=A.extra;g<F;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.offset+=a&(1<<A.extra)-1,a>>>=A.extra,g-=A.extra,A.back+=A.extra}if(A.offset>A.dmax){t.msg="invalid distance too far back",A.mode=H;break}A.mode=Tn;case Tn:if(I===0)break A;if(Q=E-I,A.offset>Q){if(Q=A.offset-Q,Q>A.whave&&A.sane){t.msg="invalid distance too far back",A.mode=H;break}Q>A.wnext?(Q-=A.wnext,B=A.wsize-Q):B=A.wnext-Q,Q>A.length&&(Q=A.length),D=A.window}else D=i,B=o-A.offset,Q=A.length;Q>I&&(Q=I),I-=Q,A.length-=Q;do i[o++]=D[B++];while(--Q);A.length===0&&(A.mode=Qe);break;case qn:if(I===0)break A;i[o++]=A.length,I--,A.mode=Qe;break;case at:if(A.wrap){for(;g<32;){if(s===0)break A;s--,a|=n[r++]<<g,g+=8}if(E-=I,t.total_out+=E,A.total+=E,E&&(t.adler=A.check=A.flags?z(A.check,i,E,o-E):XA(A.check,i,E,o-E)),E=I,(A.flags?a:Xn(a))!==A.check){t.msg="incorrect data check",A.mode=H;break}a=0,g=0}A.mode=Zn;case Zn:if(A.wrap&&A.flags){for(;g<32;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(a!==(A.total&4294967295)){t.msg="incorrect length check",A.mode=H;break}a=0,g=0}A.mode=On;case On:N=fr;break A;case H:N=Wn;break A;case Ct:return Qt;case dr:default:return j}return t.next_out=o,t.avail_out=I,t.next_in=r,t.avail_in=s,A.hold=a,A.bits=g,(A.wsize||E!==t.avail_out&&A.mode<H&&(A.mode<at||e!==mn))&&Ai(t,t.output,t.next_out,E-t.avail_out)?(A.mode=Ct,Qt):(h-=t.avail_in,E-=t.avail_out,t.total_in+=h,t.total_out+=E,A.total+=E,A.wrap&&E&&(t.adler=A.check=A.flags?z(A.check,i,E,t.next_out-E):XA(A.check,i,E,t.next_out-E)),t.data_type=A.bits+(A.last?64:0)+(A.mode===oA?128:0)+(A.mode===Ie||A.mode===st?256:0),(h===0&&E===0||e===mn)&&N===uA&&(N=hr),N)}function ti(t){if(!t||!t.state)return j;var e=t.state;return e.window&&(e.window=null),t.state=null,uA}function ni(t,e){var A;return!t||!t.state||(A=t.state,(A.wrap&2)===0)?j:(A.head=e,e.done=!1,uA)}function ct(t,e){var A=e.length,n,i,r;return!t||!t.state||(n=t.state,n.wrap!==0&&n.mode!==Ce)?j:n.mode===Ce&&(i=1,i=XA(i,e,A,0),i!==n.check)?Wn:(r=Ai(t,e,A,A),r?(n.mode=Ct,Qt):(n.havedict=1,uA))}var ce={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 Bt(){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 Et=Object.prototype.toString,ft=class t{constructor(e){if(!(this instanceof t))return new t(e);this.options=cn({chunkSize:16384,windowBits:0,to:""},e||{});var A=this.options;A.raw&&A.windowBits>=0&&A.windowBits<16&&(A.windowBits=-A.windowBits,A.windowBits===0&&(A.windowBits=-15)),A.windowBits>=0&&A.windowBits<16&&!(e&&e.windowBits)&&(A.windowBits+=32),A.windowBits>15&&A.windowBits<48&&(A.windowBits&15)===0&&(A.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Bt,this.strm.avail_out=0;var n=$n(this.strm,A.windowBits);if(n!==QA)throw new Error(ce[n]);if(this.header=new nt,ni(this.strm,this.header),A.dictionary&&(typeof A.dictionary=="string"?A.dictionary=tt(A.dictionary):Et.call(A.dictionary)==="[object ArrayBuffer]"&&(A.dictionary=new Uint8Array(A.dictionary)),A.raw&&(n=ct(this.strm,A.dictionary),n!==QA)))throw new Error(ce[n])}push(e,A){var n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,o,s,I,a,g,h,E=!1;if(this.ended)return!1;s=A===~~A?A:A===!0?TA:$e,typeof e=="string"?n.input=fn(e):Et.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=rA(i),n.next_out=0,n.avail_out=i),o=ei(n,$e),o===Qn&&r&&(typeof r=="string"?h=tt(r):Et.call(r)==="[object ArrayBuffer]"?h=new Uint8Array(r):h=r,o=ct(this.strm,h)),o===Cn&&E===!0&&(o=QA,E=!1),o!==qA&&o!==QA)return this.onEnd(o),this.ended=!0,!1;n.next_out&&(n.avail_out===0||o===qA||n.avail_in===0&&(s===TA||s===At))&&(this.options.to==="string"?(I=hn(n.output,n.next_out),a=n.next_out-I,g=ln(n.output,I),n.next_out=a,n.avail_out=i-a,a&&$(n.output,n.output,I,a,0),this.onData(g)):this.onData(se(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(E=!0)}while((n.avail_in>0||n.avail_out===0)&&o!==qA);return o===qA&&(s=TA),s===TA?(o=ti(this.strm),this.onEnd(o),this.ended=!0,o===QA):(s===At&&(this.onEnd(QA),n.avail_out=0),!0)}onData(e){this.chunks.push(e)}onEnd(e){e===QA&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=oe(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}};function yr(t,e){var A=new ft(e);if(A.push(t,!0),A.err)throw A.msg||ce[A.err];return A.result}var ii=yr;function lt(t,e,A){let n=[],i=0,r=e;for(;i+26<=t.length&&!(t[i]!==31||t[i+1]!==139||t[i+2]!==8||t[i+3]!==4||t[i+10]!==6||t[i+12]!==66||t[i+13]!==67);){let o=(t[i+16]|t[i+17]<<8)+1;if(o<26||i+o>t.length)break;let s=i+o-8,I=(t[s+4]|t[s+5]<<8|t[s+6]<<16|t[s+7]<<24)>>>0;if(n.push({inputOffset:i,compressedSize:o,decompressedSize:I,filePosition:r}),r>=A)break;i+=o,r+=o}return n}function ri(t){let e=0;for(let i of t)e+=i.length;let A=new Uint8Array(e),n=0;for(let i of t)A.set(i,n),n+=i.length;return A}var cA={};cA.d=(t,e)=>{if(Array.isArray(e))for(var A=0;A<e.length;){var n=e[A++],i=e[A++];cA.o(t,n)?i===0&&A++:i===0?Object.defineProperty(t,n,{enumerable:!0,value:e[A++]}):Object.defineProperty(t,n,{enumerable:!0,get:i})}else for(var n in e)cA.o(e,n)&&!cA.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})};cA.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);cA.r=t=>{Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var dt={};cA.r(dt);cA.d(dt,{ChunkSliceResult:()=>FA,__wbg_Error_92b29b0548f8b746:()=>br,__wbg___wbindgen_throw_344f42d3211c4765:()=>Sr,__wbg_set_wasm:()=>Bi,decompress_all:()=>ai,decompress_chunk_slice:()=>gi});var xr="data:application/wasm;base64,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AyABNgIEIAMgADYCACADQRmtQiCGIAOthDcDCEGWgcAAIANBCGogAhAwAAs8AAJAIAAoAgBBf0YNACABIAAoAgQgACgCCBBLDwsgASgCACABKAIEIAAoAgwoAgAiACgCACAAKAIEEAwLNgACQCACQX9GDQAgACACIAEoAhARBQBFDQBBAQ8LAkAgAw0AQQAPCyAAIAMgBCABKAIMEQcACzIAAkACQCABaUEBRw0AIABBgICAgHggAWtLDQAgAEUNARBpIAAgARBXIgENAQsACyABCzUBAX8CQCAARQ0AAkAgASgCACICRQ0AIAAgAhECAAsgASgCBCICRQ0AIAAgAiABKAIIEFELCysBAX8jAEEQayIBJAAgAUEYrUIghiABQQ9qrYQ3AwBBloHAACABIAAQMAALKgEBfyMAQRBrIgMkACADIAI2AgwgAyABNgIIIAMgADYCBCADQQRqEGMACy0BAX8jAEEQayIBJAAgASAAKQIANwIIIAFBCGpBwJPAACAAKAIIQQFBABAVAAssAgF/AX4jAEEQayIBJAAgACkCACECIAEgADYCDCABIAI3AgQgAUEEahBlAAsjAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkEIahBkAAslAQF/AkBBvIjAABAsIgBFDQAgAA8LQfCHwABBOkGsiMAAEDcACyAAAkAgASgCAEUNACAAQYiWwAA2AgQgACABNgIADwsACx4BAX8CQCAAKAIAIgJFDQAgASACIAAoAgQQSw8LAAsbAQF/EGkgAEEEakEEEFciASAANgIAIAFBBGoLHgEBfwJAIAAoAgAiAUEBSA0AIAAoAgQgAUEBEFELCx4AIAAoAgAgACgCBEEAKAKgnUAiAEEEIAAbEQQAAAscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEFELCxcAAkAgAUEJSQ0AIAEgABAODwsgABACCxUAIABBfGoiACAAKAIAQQRqQQQQUQsUAAJAIABFDQAgACABEF4ACxBUAAsRACAAIAFBAXRBAXIgAhAwAAsSAAJAIAFFDQAgACABIAIQUQsLEgAgACABIAIgAyAEQQAgBRADCxUAAkAgAEUNACAAIAAoAqhaEQIACwsaACAAQQApAsSUQDcCCCAAQQApAryUQDcCAAsaACAAQQApArSUQDcCCCAAQQApAqyUQDcCAAsW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AA2AAAAOgAAAD4AAABCAAAARgAAAEoAAABOAAAAUgAAAFYAAABaAAAAXgAAAGIAAABmAAAAagAAAG4AAAByAAAAdgAAAHoAAAB+AAAAggAAAIYAAACKAAAAjgAAAJIAAACWAAAAmgAAAJ4AAACiAAAApgAAAKoAAACuAAAAsgAAALYAAAC6AAAAvgAAAMIAAADGAAAAygAAAM4AAADSAAAA1gAAANoAAADeAAAA4gAAAOYAAADqAAAA7gAAAPIAAAD2AAAA+gAAAP4AAAECAAABBgAAAQoAAAEOAAABEgAAARYAAAEaAAABHgAAASIAAAEmAAABKgAAAS4AAAEyAAABNgAAAToAAAE+AAABQgAAAUYAAAFKAAABTgAAAVIAAAFWAAABWgAAAV4AAAFiAAABZgAAAWoAAAFuAAABcgAAAXYAAAF6AAABfgAAAYIAAAGGAAABigAAAY4AAAGSAAABlgAAAZoAAAGeAAABogAAAaYAAAGqAAABrgAAAbIAAAG2AAABugAAAb4AAAHCAAABxgAAAcoAAAHOAAAB0gAAAdYAAAHaAAAB3gAAAeIAAAHmAAAB6gAAAe4AAAHyAAAB9gAAAfoAAAH+AAACAgAAAgYAAAIKAAACDgAAAhIAAAIWAAACGgAAAh4AAAIiAAACJgAAAioAAAIuAAACMgAAAjYAAAI6AAACPgAAAkIAAAJGAAACSgAAAk4AAAJSAAACVgAAAloAAAJeAAACYgAAAmYAAAJqAAACbgAAAnIAAAJ2AAACegAAAn4AAAKCAAAChgAAAooAAAKOAAACkgAAApYAAAKaAAACngAAAqIAAAKmAAACqgAAAq4AAAKyAAACtgAAAroAAAK+AAACwgAAAsYAAALKAAACzgAAAtIAAALWAAAC2gAAAt4AAALiAAAC5gAAAuoAAALuAAAC8gAAAvYAAAL6AAAC/gAAAwIAAAMGAAADCgAAAw4AAAMSAAADFgAAAxoAAAMeAAADIgAAAyYAAAMqAAADLgAAAzIAAAM2AAADOgAAAz4AAANCAAADRgAAA0oAAANOAAADUgAAA1YAAANaAAADXgAAA2IAAANmAAADagAAA24AAANyAAADdgAAA3oAAAN+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAA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",FA=class t{static __wrap(e){let A=Object.create(t.prototype);return A.__wbg_ptr=e,oi.register(A,A.__wbg_ptr,A),A}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,oi.unregister(this),e}free(){let e=this.__destroy_into_raw();M.__wbg_chunksliceresult_free(e,0)}take_buffer(){try{let i=M.__wbindgen_add_to_stack_pointer(-16);M.chunksliceresult_take_buffer(i,this.__wbg_ptr);var e=P().getInt32(i+0,!0),A=P().getInt32(i+4,!0),n=Ii(e,A).slice();return M.__wbindgen_export(e,A*1,1),n}finally{M.__wbindgen_add_to_stack_pointer(16)}}take_cpositions(){try{let i=M.__wbindgen_add_to_stack_pointer(-16);M.chunksliceresult_take_cpositions(i,this.__wbg_ptr);var e=P().getInt32(i+0,!0),A=P().getInt32(i+4,!0),n=si(e,A).slice();return M.__wbindgen_export(e,A*8,8),n}finally{M.__wbindgen_add_to_stack_pointer(16)}}take_dpositions(){try{let i=M.__wbindgen_add_to_stack_pointer(-16);M.chunksliceresult_take_dpositions(i,this.__wbg_ptr);var e=P().getInt32(i+0,!0),A=P().getInt32(i+4,!0),n=si(e,A).slice();return M.__wbindgen_export(e,A*8,8),n}finally{M.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(FA.prototype[Symbol.dispose]=FA.prototype.free);function ai(t){try{let o=M.__wbindgen_add_to_stack_pointer(-16),s=Ci(t,M.__wbindgen_export2),I=wt;M.decompress_all(o,s,I);var e=P().getInt32(o+0,!0),A=P().getInt32(o+4,!0),n=P().getInt32(o+8,!0),i=P().getInt32(o+12,!0);if(i)throw ci(n);var r=Ii(e,A).slice();return M.__wbindgen_export(e,A*1,1),r}finally{M.__wbindgen_add_to_stack_pointer(16)}}function gi(t,e,A,n,i){try{let I=M.__wbindgen_add_to_stack_pointer(-16),a=Ci(t,M.__wbindgen_export2),g=wt;M.decompress_chunk_slice(I,a,g,e,A,n,i);var r=P().getInt32(I+0,!0),o=P().getInt32(I+4,!0),s=P().getInt32(I+8,!0);if(s)throw ci(o);return FA.__wrap(r)}finally{M.__wbindgen_add_to_stack_pointer(16)}}function br(t,e){let A=Error(Qi(t,e));return Fr(A)}function Sr(t,e){throw new Error(Qi(t,e))}var oi=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(t=>M.__wbg_chunksliceresult_free(t,1));function Fr(t){PA===sA.length&&sA.push(sA.length+1);let e=PA;return PA=sA[e],sA[e]=t,e}function vr(t){t<1028||(sA[t]=PA,PA=t)}function si(t,e){return t=t>>>0,Rr().subarray(t/8,t/8+e)}function Ii(t,e){return t=t>>>0,ut().subarray(t/1,t/1+e)}var SA=null;function P(){return(SA===null||SA.buffer.detached===!0||SA.buffer.detached===void 0&&SA.buffer!==M.memory.buffer)&&(SA=new DataView(M.memory.buffer)),SA}var Be=null;function Rr(){return(Be===null||Be.byteLength===0)&&(Be=new Float64Array(M.memory.buffer)),Be}function Qi(t,e){return Lr(t>>>0,e)}var Ee=null;function ut(){return(Ee===null||Ee.byteLength===0)&&(Ee=new Uint8Array(M.memory.buffer)),Ee}function Jr(t){return sA[t]}var sA=new Array(1024).fill(void 0);sA.push(void 0,null,!0,!1);var PA=sA.length;function Ci(t,e){let A=e(t.length*1,1)>>>0;return ut().set(t,A/1),wt=t.length,A}function ci(t){let e=Jr(t);return vr(t),e}var le=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});le.decode();var Gr=2146435072,ht=0;function Lr(t,e){return ht+=e,ht>=Gr&&(le=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),le.decode(),ht=e),le.decode(ut().subarray(t,t+e).slice())}var wt=0,M;function Bi(t){M=t}var wA=null,fe=null;async function Ei(){return wA||(fe||(fe=(async()=>{let e=await(await fetch(xr)).arrayBuffer(),{instance:A}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":dt});return wA=A.exports,Bi(wA),wA})().catch(t=>{throw fe=null,t})),fe)}async function fi(t){return wA||await Ei(),ai(t)}async function li(t,e,A,n,i){wA||await Ei();let r=gi(t,e,A,n,i),o=r.take_buffer(),s=r.take_cpositions(),I=r.take_dpositions();return r.free(),{buffer:o,cpositions:s,dpositions:I}}var _r=26;function di(t){return t[0]===31&&t[1]===139}function Mr(t){return t.length>=_r&&di(t)&&t[2]===8&&t[3]===4&&t[10]===6&&t[12]===66&&t[13]===67}function ui(t){return t instanceof Error?t.message:`${t}`}async function hi(t){if(typeof DecompressionStream<"u"){let e=new Blob([t]).stream().pipeThrough(new DecompressionStream("gzip"));return new Uint8Array(await new Response(e).arrayBuffer())}else return ii(t,void 0)}function wi(t){return ui(t).includes("invalid gzip header")?new Error("problem decompressing block: incorrect gzip header check",{cause:t}):t}async function zA(t){if(t.length===0)return new Uint8Array(0);if(!Mr(t)){if(di(t))return hi(t);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}try{return await fi(t)}catch(e){if(ui(e).includes("invalid bgzf header"))return hi(t);throw wi(e)}}function pi(t,e,A,n){let i=[],r=[],o=[],s=A.dataPosition;for(let I=0;I<t.length;I++){let a=t[I],g=e[I],h=g.filePosition>=n.blockPosition;i.push(g.filePosition),r.push(s);let E=I===0?A.dataPosition:0,Q=h?Math.min(n.dataPosition+1,a.length):a.length;if(E<Q&&o.push(a.subarray(E,Q)),s+=a.length-E,h){i.push(g.filePosition+g.compressedSize),r.push(s);break}}return{slices:o,cpositions:Float64Array.from(i),dpositions:Float64Array.from(r)}}function Ur(t,e,A,n){let{slices:i,cpositions:r,dpositions:o}=pi(t,e,A,n);return{buffer:ri(i),cpositions:r,dpositions:o}}function Yr(t){let e=[],A;for(let n of t)A?.buffer===n.buffer&&A.byteOffset+A.length===n.byteOffset?A=new Uint8Array(A.buffer,A.byteOffset,A.length+n.length):(A&&e.push(A),A=n);return A&&e.push(A),e}async function pt(t,e,A){let{minv:n,maxv:i}=e;if(A){let I=lt(t,n.blockPosition,i.blockPosition);if(ki(I)>=kt){let a=await A.decompressBlocks(t,I),{slices:g,cpositions:h,dpositions:E}=pi(a.blocks,I,n,i);return{segments:Yr(g),cpositions:h,dpositions:E}}}let{buffer:r,cpositions:o,dpositions:s}=await mi(t,e);return{segments:[r],cpositions:o,dpositions:s}}var kt=4e5;function ki(t){let e=0;for(let A of t)e+=A.decompressedSize;return e}async function mi(t,e,A){let{minv:n,maxv:i}=e;if(A){let r=lt(t,n.blockPosition,i.blockPosition);if(ki(r)>=kt){let o=await A.decompressBlocks(t,r);return Ur(o.blocks,r,n,i)}}try{let r=await li(t,n.blockPosition,n.dataPosition,i.blockPosition,i.dataPosition);return{buffer:r.buffer,cpositions:r.cpositions,dpositions:r.dpositions}}catch(r){throw wi(r)}}function pA(t){if(t?.aborted)throw mt(t)}function mt(t){let e=t.reason;return e===void 0?new DOMException("This operation was aborted","AbortError"):e}function Ni(t){return typeof t?.addEventListener=="function"}var BA=class{entries=new Map;total=0;settledCount=0;limit;shared;fill;sizeOf;toCacheKey;idleTimeoutMs;sweepTimer;constructor({fill:e,maxSize:A=1/0,sizeOf:n=()=>1,cacheKey:i=s=>String(s),idleTimeoutMs:r=0,budget:o}={}){this.fill=e,this.limit=A,this.shared=o&&{budget:o,membership:o.register(this)},this.sizeOf=n,this.toCacheKey=i,this.idleTimeoutMs=r>0&&Number.isFinite(r)?r:void 0}get size(){return this.entries.size}get totalSize(){return this.total}get maxSize(){return this.limit}set maxSize(e){this.limit=e,this.evict()}waiterCount(e){return this.entries.get(this.toCacheKey(e))?.pending?.signals.size??0}async get(e,A,n){pA(A);let i=this.toCacheKey(e),r=this.entries.get(i);r&&this.isDoomed(r)&&(this.release(i),r=void 0),r?this.touch(i,r):r=this.start(i,e,n),r.pending&&this.join(r.pending,A);try{return await this.settleFor(r,A)}finally{pA(A)}}settleFor(e,A){if(!e.pending||!Ni(A))return e.promise;let n,i=new Promise((o,s)=>{n=s}),r=()=>{n(mt(A))};return A.addEventListener("abort",r,{once:!0}),Promise.race([e.promise,i]).finally(()=>{A.removeEventListener("abort",r)})}getIfCached(e){let A=this.toCacheKey(e),n=this.entries.get(A);if(n){if(this.isDoomed(n)){this.release(A);return}return this.touch(A,n),n.promise}}has(e){let A=this.entries.get(this.toCacheKey(e));return A!==void 0&&!this.isDoomed(A)}delete(e){this.release(this.toCacheKey(e))}clear(){this.entries.clear(),this.shared?.budget.charge(this.shared.membership,-this.total),this.total=0,this.settledCount=0,this.stopSweep()}touch(e,A){this.entries.delete(e),this.entries.set(e,A),A.lastTouched=Date.now(),A.seq=this.stamp()}stamp(){return this.shared?.budget.nextSeq()??0}isDoomed(e){return e.pending?.controller.signal.aborted===!0}sweepIdle(){let e=this.idleTimeoutMs;if(e===void 0)return;let A=Date.now()-e;for(let[n,i]of this.entries)!i.pending&&i.lastTouched<=A&&this.release(n);this.settledCount===0&&this.stopSweep()}startSweep(){let e=this.idleTimeoutMs;if(e===void 0||this.sweepTimer!==void 0)return;let A=Math.min(2**31-1,Math.max(1e3,Math.floor(e/4))),n=new WeakRef(this),i=setInterval(()=>{let r=n.deref();r?r.sweepIdle():clearInterval(i)},A);this.sweepTimer=i,i.unref?.()}stopSweep(){this.sweepTimer!==void 0&&(clearInterval(this.sweepTimer),this.sweepTimer=void 0)}start(e,A,n){let i=n??(this.fill&&(a=>this.fill(A,a)));if(!i)throw new Error("SharedReadCache needs a fill, either on the cache or on the get() call");let r={signals:new Map,pinned:!1,controller:new AbortController},o={promise:Promise.resolve(i(r.controller.signal)),pending:r,size:0,lastTouched:Date.now(),seq:this.stamp()};this.entries.set(e,o);let s=()=>this.entries.get(e)===o,I=()=>{for(let[a,g]of r.signals)a.removeEventListener("abort",g);o.pending=void 0};return o.promise.then(a=>{let g=s()?this.weigh(a):void 0,h=s();I(),h&&(g===void 0?this.entries.delete(e):(o.lastTouched=Date.now(),o.size=g,this.settledCount++,this.total+=g,this.shared?.budget.charge(this.shared.membership,g),this.startSweep())),this.evict(),this.shared?.budget.evict()},()=>{s()&&this.release(e),I()}),o}weigh(e){try{let A=this.sizeOf(e);return Number.isFinite(A)&&A>=0?A:void 0}catch{return}}join(e,A){if(!Ni(A))e.pinned=!0;else if(!A.aborted&&!e.signals.has(A)){let n=()=>{e.signals.delete(A),!e.pinned&&e.signals.size===0&&e.controller.abort(A.reason)};e.signals.set(A,n),A.addEventListener("abort",n,{once:!0})}}release(e){let A=this.entries.get(e);A&&(this.entries.delete(e),A.pending||this.settledCount--,this.total-=A.size,this.shared?.budget.charge(this.shared.membership,-A.size))}lruSpare(e=!1){if(!(this.settledCount<=(e?0:1))){for(let[A,n]of this.entries)if(!n.pending)return{cacheKey:A,seq:n.seq,last:this.settledCount===1}}}evict(){if(!(this.total<=this.limit))for(let[e,A]of this.entries){if(this.total<=this.limit||this.settledCount<=1)break;A.pending||this.release(e)}}};async function he(t){return t.bytes?t.bytes():new Uint8Array(await t.arrayBuffer())}async function Di(t,e,A){if(e==="utf8"||e==="utf-8")return t.text();if(e)throw new Error(`unsupported encoding: ${e}`);return A&&"body"in t?Nt(t,A):he(t)}function yi(t){return typeof t=="string"?{encoding:t,opts:{}}:{encoding:t?.encoding,opts:t??{}}}function xi(t){let e=/\/(\d+)$/.exec(t??"")?.[1];return e===void 0?void 0:parseInt(e,10)}function Hr(t){let e=t.headers.get("content-length"),A=e===null?Number.NaN:Number(e);return Number.isSafeInteger(A)&&A>=0?A:void 0}var Kr=50;async function Nt(t,e){let A=Hr(t),n=t.body;if(!n||A===void 0){let I=await he(t);return e(I.byteLength,A??I.byteLength),I}let i=n.getReader(),r=new Uint8Array(A),o=0,s=Date.now();e(0,A);for(let I=await i.read();!I.done;I=await i.read()){if(o+I.value.byteLength>r.length){let g=new Uint8Array(Math.max(o+I.value.byteLength,r.length*2));g.set(r.subarray(0,o)),r=g}r.set(I.value,o),o+=I.value.byteLength;let a=Date.now();a-s>=Kr&&(s=a,e(o,A))}return e(o,A),o===r.length?r:r.slice(0,o)}function Tr(...t){let e=new Map;for(let A of t)for(let[n,i]of Object.entries(A??{}))e.set(n.toLowerCase(),[n,i]);return Object.fromEntries(e.values())}function Dt(t){let e=t.body;typeof e?.cancel=="function"&&e.cancel().catch(()=>{})}function bi(t){return Number.isSafeInteger(t)&&t>=0}function qr(t){return typeof t=="object"&&t!==null&&"name"in t&&t.name==="TypeError"}function Zr(t){return(typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"?t.message:`${t}`).replace(/\.$/,"")}var aA=class{url;get source(){return this.url}_stat;statProbe;fetchImplementation;baseHeaders;baseOverrides;baseSignal;constructor(e,A={}){this.url=e,this.baseHeaders=A.headers??{},this.baseOverrides=A.overrides??{},this.baseSignal=A.signal,this.fetchImplementation=A.fetch??globalThis.fetch.bind(globalThis)}buildRequest(e,A){let n=e.signal??this.baseSignal;return{method:"GET",redirect:"follow",mode:"cors",...this.baseOverrides,...e.overrides,headers:Tr(this.baseHeaders,e.headers,A),...n?{signal:n}:{}}}async fetch(e,A){let n=r=>qr(r)&&!A?.signal?.aborted?new Error(`${Zr(r)} fetching ${e}`,{cause:r}):r,i;try{i=await this.fetchImplementation(e,A)}catch(r){if(`${r}`.includes("Failed to fetch")){console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{i=await this.fetchImplementation(e,{...A,cache:"reload"})}catch(o){throw n(o)}}else throw n(r)}return i}async read(e,A,n={}){if(!bi(e)||!bi(A))throw new TypeError(`read() called with an invalid length or position (length=${e}, position=${A}). The index file may be corrupt.`);return e===0?new Uint8Array(0):this.fetchBytes(e,A,n)}async fetchBytes(e,A,n){let i=await this.fetch(this.url,this.buildRequest(n,{range:`bytes=${A}-${A+e-1}`}));if(i.status===416)return Dt(i),new Uint8Array(0);if(this.checkOk(i),i.status===200&&A===0||i.status===206){let r=xi(i.headers.get("content-range"));r!==void 0&&(this._stat={size:r});let o=n.onProgress?await Nt(i,n.onProgress):await he(i);return!this._stat&&i.status===200&&(this._stat={size:o.byteLength}),o.byteLength<=e?o:o.slice(0,e)}throw Dt(i),new Error(i.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${i.status} fetching ${this.url}`)}checkOk(e){if(!e.ok)throw Dt(e),new Error(`HTTP ${e.status} fetching ${this.url}`)}async readFile(e){let{encoding:A,opts:n}=yi(e),i=await this.fetch(this.url,this.buildRequest(n));this.checkOk(i);let r=await this.readFileBody(i,A,n.onProgress);return i.status===200&&typeof r!="string"&&(this._stat={size:r.byteLength}),r}readFileBody(e,A,n){return Di(e,A,n)}async stat(){return this._stat||(this.statProbe??=this.read(10,0).finally(()=>{this.statProbe=void 0}),await this.statProbe),this._stat??{size:0}}close(){return Promise.resolve()}};var kA=class{source;constructor(e,A={}){this.source=e}unimplemented(){return Promise.reject(new Error(`LocalFile is unimplemented in the browser (${this.source})`))}readFile(e){return this.unimplemented()}read(e,A,n){return this.unimplemented()}stat(){return this.unimplemented()}close(){return this.unimplemented()}};var AA=class{minv;maxv;bin;endPosition;constructor(e,A,n,i=A.blockPosition+65536){this.minv=e,this.maxv=A,this.bin=n,this.endPosition=i}toString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}fetchedSize(){return this.endPosition-this.minv.blockPosition}};function yt(t,e){if(!(e>0))throw new TypeError(`\`${t}\` must be a number greater than 0`)}var jA=class{#A=new Map;#e=new Map;#t;#i;#r;constructor(e){let A=e.maxAge??Number.POSITIVE_INFINITY;yt("maxSize",e.maxSize),yt("maxAge",A),this.#t=e.maxSize,this.#i=A,this.#r=e.onEviction}#o(e){let A=this.#r;if(A)for(let[n,i]of e)A(n,i.value)}#n(e,A){return A.expiry!==void 0&&A.expiry<=Date.now()?(this.#r?.(e,A.value),this.delete(e),!0):!1}#a(e,A){return this.#n(e,A)?void 0:A.value}#g(e,A){if(this.#e.delete(e),this.#A.set(e,A),this.#A.size>=this.#t){let n=this.#e;this.#e=this.#A,this.#A=new Map,this.#o(n)}}#I(e){this.#e=new Map(e),this.#A=new Map}*#s(){for(let e of[this.#e,this.#A])for(let A of e)this.#n(...A)||(yield A)}get(e){let A=this.#A.get(e);if(A)return this.#a(e,A);let n=this.#e.get(e);if(n&&!this.#n(e,n))return this.#g(e,n),n.value}set(e,A,{maxAge:n=this.#i}={}){let i={value:A,expiry:n===Number.POSITIVE_INFINITY?void 0:Date.now()+n};return this.#A.has(e)?this.#A.set(e,i):this.#g(e,i),this}has(e){let A=this.#A.get(e)??this.#e.get(e);return A!==void 0&&!this.#n(e,A)}peek(e){let A=this.#A.get(e)??this.#e.get(e);return A?this.#a(e,A):void 0}expiresIn(e){let A=this.#A.get(e)??this.#e.get(e);if(A)return A.expiry===void 0?Number.POSITIVE_INFINITY:A.expiry-Date.now()}delete(e){return this.#A.delete(e)||this.#e.delete(e)}clear(){this.#A.clear(),this.#e.clear()}resize(e){yt("maxSize",e);let A=[...this.#s()],n=A.length-e;n<0?(this.#A=new Map(A),this.#e=new Map):(this.#o(A.slice(0,n)),this.#I(A.slice(n))),this.#t=e}evict(e=1){if(!(e>0))return;let A=[...this.#s()],n=Math.trunc(Math.min(e,A.length-1));n>0&&(this.#o(A.slice(0,n)),this.#I(A.slice(n)))}get size(){return Math.min(this.#A.size+this.#e.size,this.#t)}get maxSize(){return this.#t}get maxAge(){return this.#i}*entriesAscending(){for(let[e,A]of this.#s())yield[e,A.value]}*entriesDescending(){for(let e of[this.#A,this.#e])for(let[A,n]of[...e].reverse())this.#n(A,n)||(yield[A,n.value])}entries(){return this.entriesAscending()}[Symbol.iterator](){return this.entriesAscending()}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}forEach(e,A=this){for(let[n,i]of this)e.call(A,i,n,this)}get[Symbol.toStringTag](){return"QuickLRU"}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}};function Si(t,e=0){let A=t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24;return((t[e+4]|t[e+5]<<8|t[e+6]<<16|t[e+7]<<24)>>>0)*4294967296+(A>>>0)}var vA=class{blockPosition;dataPosition;constructor(e,A){this.blockPosition=e,this.dataPosition=A}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}};function EA(t,e=0){return new vA(t[e+7]*1099511627776+t[e+6]*4294967296+t[e+5]*16777216+t[e+4]*65536+t[e+3]*256+t[e+2],t[e+1]<<8|t[e])}function de(t,e){let A=t.length;if(A===0)return t;let n;if(e){let s=e.blockPosition,I=e.dataPosition;n=[];for(let a=0;a<A;a++){let g=t[a];(g.maxv.blockPosition-s||g.maxv.dataPosition-I)>0&&n.push(g)}if(n.length===0)return n}else n=t;n.sort((s,I)=>{let a=s.minv.blockPosition-I.minv.blockPosition;return a===0?s.minv.dataPosition-I.minv.dataPosition:a});let i=[n[0]],r=n[0].minv.blockPosition,o=n[0].maxv.blockPosition;for(let s=1;s<n.length;s++){let I=n[s],a=I.minv.blockPosition,g=I.maxv.blockPosition;if(a-o<65e3&&g-r<5e6){let h=i.at(-1);(g-o||I.maxv.dataPosition-h.maxv.dataPosition)>0&&(i[i.length-1]=new AA(h.minv,I.maxv,h.bin,I.endPosition),o=g)}else i.push(I),r=a,o=g}return Or(i)}function Or(t){let e=[t[0]];for(let A=1;A<t.length;A++){let n=t[A],i=e.at(-1).maxv;if((n.minv.blockPosition-i.blockPosition||n.minv.dataPosition-i.dataPosition)>=0){e.push(n);continue}(n.maxv.blockPosition-i.blockPosition||n.maxv.dataPosition-i.dataPosition)>0&&e.push(new AA(i,n.maxv,n.bin,n.endPosition))}return e}function ue(t,e=[]){let A=[...e];for(let n of t)A.push(n.minv.blockPosition,n.maxv.blockPosition);A.sort((n,i)=>n-i);for(let n of t){let i=n.maxv.blockPosition,r=0,o=A.length;for(;r<o;){let s=r+o>>>1;A[s]>i?o=s:r=s+1}r<A.length&&(n.endPosition=Math.min(n.endPosition,A[r]))}}function we(t,e,A,n){let i=n?n.blockPosition:1/0,r=n?n.dataPosition:0,o=!1;for(let s=0;s<A;s++){let I=e+s*8,a=t[I+7]*1099511627776+t[I+6]*4294967296+t[I+5]*16777216+t[I+4]*65536+t[I+3]*256+t[I+2],g=t[I+1]<<8|t[I];(a<i||a===i&&g<r)&&(i=a,r=g,o=!0)}return o?new vA(i,r):n}function Xr(t){let e=new TextDecoder("utf-8"),A=[],n={},i=0,r=0;for(;r<t.length;){let o=t.indexOf(0,r);if(o===-1)break;if(o>r){let s=e.decode(t.subarray(r,o));A[i]=s,n[s]=i}r=o+1,i++}return{refNameToId:n,refIdToName:A}}var Pr={0:"generic",1:"SAM",2:"VCF",3:"GAF"};function pe(t,e){let A=new DataView(t.buffer,t.byteOffset,t.byteLength),n=A.getInt32(e,!0),i=n&65536?"zero-based-half-open":"1-based-closed",r=Pr[n&15];if(!r)throw new Error(`invalid Tabix preset format flags ${n}`);let o={ref:A.getInt32(e+4,!0),start:A.getInt32(e+8,!0),end:A.getInt32(e+12,!0)},s=A.getInt32(e+16,!0),I=s?String.fromCharCode(s):void 0,a=A.getInt32(e+20,!0),g=A.getInt32(e+24,!0),{refIdToName:h,refNameToId:E}=Xr(t.subarray(e+28,e+28+g));return{refIdToName:h,refNameToId:E,skipLines:a,metaChar:I,columnNumbers:o,format:r,coordinateType:i}}function ke(t,e){return{lineCount:Si(t,e)}}function me(t,e=5){let A=new jA({maxSize:e});return n=>{let i=A.get(n);if(i!==void 0)return i;let r=t(n);return r!==void 0&&A.set(n,r),r}}function Fi(t){let e=0;for(let i of t)e+=i.length;let A=new Uint8Array(e),n=0;for(let i of t)A.set(i,n),n+=i.length;return A}var vi=10;function xt(t,e){let A=0,n,i=0;for(let r of t){let o=0;if(n){let a=r.indexOf(vi);if(a===-1){n=Fi([n,r]),A+=r.length;continue}if(e(Fi([n,r.subarray(0,a+1)]),i))return!0;o=a+1,n=void 0}let s=r.lastIndexOf(vi);if(s>=o&&e(r.subarray(o,s+1),A+o))return!0;let I=Math.max(o,s+1);I<r.length&&(n=r.slice(I),i=A+I),A+=r.length}return!1}function zr(t,e,A,n){if(e>2**(A+n*3))return;let i=(8**(n+1)-1)/7,r=(8**n-1)/7+Math.floor((e-1)/2**A)+1;for(r>=i&&(r=0);;){for(;r%8===1;)r=(r-1)/8;if(r===0)return;let o=t[r];if(o?.length){let s=o[0].minv;for(let I=1;I<o.length;I++){let a=o[I].minv;a.compareTo(s)<0&&(s=a)}return s}r++}}function Ri(t,e){return t.format==="GAF"?0:t.refNameToId[e]}var mA=class{filehandle;parseCache=new BA({});constructor({filehandle:e}){this.filehandle=e}async readIndexBytes(e){let A=await this.filehandle.readFile({signal:e.signal,onProgress:e.onProgress}),n=await zA(A);return{bytes:n,dataView:new DataView(n.buffer,n.byteOffset,n.byteLength)}}async lineCount(e,A={}){let n=await this.parse(A),i=Ri(n,e);return i===void 0?-1:n.indices(i)?.stats?.lineCount??-1}async getMetadata(e={}){let{indices:A,...n}=await this.parse(e);return n}async blocksForRange(e,A,n,i={}){let r=await this.parse(i),o=Ri(r,e);if(o===void 0)return[];let s=r.indices(o);if(!s)return[];r.format==="GAF"&&(A=Math.max(A-1,0));let I=[];for(let[h,E]of this.reg2bins(A,n,r))for(let Q=h;Q<=E;Q++){let B=s.binIndex[Q];if(B)for(let D of B)I.push(D)}let a=de(I,this.lowestOffset(s,A,r)),g=zr(s.binIndex,n,r.minShift,r.depth);if(g){let h=a.length;for(;h>0&&a[h-1].minv.compareTo(g)>=0;)h--;a.length=h}return a}parse(e={}){return this.parseCache.get("index",e.signal,A=>this._parse({...e,signal:A}))}async hasRefSeq(e,A={}){return!!(await this.parse(A)).indices(e)?.binIndex}};var jr=21582659,Wr=38359875;function Ji(t,e){return t*2**e}function bt(t,e){return Math.floor(t/2**e)}var NA=class extends mA{async _parse(e={}){let{bytes:A,dataView:n}=await this.readIndexBytes(e),i=n.getUint32(0,!0),r;if(i===jr)r=1;else if(i===Wr)r=2;else throw new Error(`Not a CSI file (magic=${i})`);let o=n.getInt32(4,!0),s=n.getInt32(8,!0),I=(8**(s+1)-1)/7,a=2**(o+s*3),g=n.getInt32(12,!0),h=g>=28&&(n.getInt32(16,!0)&15)===3;if(g<30&&!h)throw new Error("CSI index has no tabix header, so it names no references; it may be a BAM or BCF index");let E=pe(A,16),Q=n.getInt32(16+g,!0),B=16+g+4,D,u=[];for(let w=0;w<Q;w++){u.push(B);let m=n.getInt32(B,!0);B+=4;for(let c=0;c<m;c++){let y=n.getUint32(B,!0);if(B+=4,y>I)B+=44;else{D=we(A,B,1,D),B+=8;let f=n.getInt32(B,!0);B+=4+16*f}}}function d(w){let m=u[w];if(m===void 0)return;let c=m,y=n.getInt32(c,!0);c+=4;let f={},C={},N;for(let x=0;x<y;x++){let p=n.getUint32(c,!0);if(c+=4,p>I)N=ke(A,c+28),c+=44;else{C[p]=EA(A,c),c+=8;let F=n.getInt32(c,!0);c+=4;let J=Array.from({length:F});for(let l=0;l<F;l++)J[l]=new AA(EA(A,c),EA(A,c+8),p),c+=16;f[p]=J}}return ue(Object.values(f).flat()),{binIndex:f,loffsets:C,stats:N}}return{...E,csi:!0,refCount:Q,maxBlockSize:65536,firstDataLine:D,csiVersion:r,indices:me(d),minShift:o,depth:s,maxBinNumber:I,maxRefLength:a}}lowestOffset(e,A,{minShift:n,depth:i}){let{loffsets:r}=e,o;if(r){let s=(Ji(1,3*i)-1)/7+bt(Math.max(A,0),n);for(;o===void 0&&s>0;)if(o=r[s],o===void 0){let I=Math.floor((s-1)/8),a=I*8+1;s=s>a?s-1:I}o??=r[0]}return o}reg2bins(e,A,{minShift:n,depth:i,maxBinNumber:r}){e=Math.max(e,0);let o=2**(n+i*3);A>o&&(A=o),A-=1;let s=0,I=0,a=n+i*3,g=[];for(;s<=i;a-=3,I+=Ji(1,s*3),s+=1){let h=I+bt(e,a),E=I+bt(A,a);if(E-h+g.length>r)throw new Error(`query ${e}-${A} is too large for current binning scheme (shift ${n}, depth ${i}), try a smaller query or a coarser index binning scheme`);g.push([h,E])}return g}};var Vr=21578324,St=5,Ft=14,Ne=2**(Ft+St*3);function Gi(t){return Math.min(Math.max(t,0),Ne)}var gA=class extends mA{reg2bins(e,A){e>Ne&&console.warn("querying outside of possible tabix range");let n=Gi(e),i=Math.min(A,Ne)-1,r=[];return n<=i&&r.push([0,0],[1+(n>>26),1+(i>>26)],[9+(n>>23),9+(i>>23)],[73+(n>>20),73+(i>>20)],[585+(n>>17),585+(i>>17)],[4681+(n>>14),4681+(i>>14)]),r}lowestOffset(e,A){let n=e.linearIndex;return n?.[Math.min(Gi(A)>>Ft,n.length-1)]}async _parse(e={}){let{bytes:A,dataView:n}=await this.readIndexBytes(e);if(n.getUint32(0,!0)!==Vr)throw new Error("Not a TBI file");let i=n.getUint32(4,!0),r=((1<<(St+1)*3)-1)/7,{refNameToId:o,refIdToName:s,coordinateType:I,format:a,columnNumbers:g,metaChar:h,skipLines:E}=pe(A,8),B=36+n.getInt32(32,!0),D,u=[];for(let w=0;w<i;w++){u.push(B);let m=n.getInt32(B,!0);B+=4;for(let y=0;y<m;y++){let f=n.getUint32(B,!0);B+=4;let C=n.getInt32(B,!0);if(B+=4,f>r+1)throw new Error("tabix index contains too many bins, please use a CSI index");B+=16*C}let c=n.getInt32(B,!0);B+=4,D=we(A,B,c,D),B+=8*c}function d(w){let m=u[w];if(m===void 0)return;let c=m,y=n.getInt32(c,!0);c+=4;let f={},C;for(let p=0;p<y;p++){let F=n.getUint32(c,!0);if(c+=4,F>r+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(F===r+1){let J=n.getInt32(c,!0);c+=4,J===2&&(C=ke(A,c+16)),c+=16*J}else{let J=n.getInt32(c,!0);c+=4;let l=Array.from({length:J});for(let k=0;k<J;k++)l[k]=new AA(EA(A,c),EA(A,c+8),F),c+=16;f[F]=l}}let N=n.getInt32(c,!0);c+=4;let x=Array.from({length:N});for(let p=0;p<N;p++)x[p]=EA(A,c),c+=8;return ue(Object.values(f).flat(),x.map(p=>p.blockPosition)),{binIndex:f,linearIndex:x,stats:C}}return{indices:me(d),metaChar:h,minShift:Ft,depth:St,maxBinNumber:r,maxRefLength:Ne,skipLines:E,firstDataLine:D,columnNumbers:g,coordinateType:I,format:a,refIdToName:s,refNameToId:o,maxBlockSize:65536}}};var vt=9,ye=10,Mi=13,$r=59,Ao=60,eo=62,to=6,no=1024*2**20,io=180*1e3;function ro(t,e,A){if(t)return t;if(e)return new kA(e);if(A)return new aA(A);throw new TypeError("must provide either filehandle, path, or url")}function oo({tbiFilehandle:t,csiFilehandle:e,tbiPath:A,csiPath:n,tbiUrl:i,csiUrl:r,path:o,url:s}){if(t)return new gA({filehandle:t});if(e)return new NA({filehandle:e});if(A)return new gA({filehandle:new kA(A)});if(n)return new NA({filehandle:new kA(n)});if(r)return new NA({filehandle:new aA(r)});if(i)return new gA({filehandle:new aA(i)});if(o)return new gA({filehandle:new kA(`${o}.tbi`)});if(s)return new gA({filehandle:new aA(`${s}.tbi`)});throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl")}function Ui(t,e,A,n,i){return t[A]*256+(n-e[A])+i+1}function so(t,e,A,n,i,r,o){let s=n-A,I=e+s,a=0;if(t[i]===46)return I;let g=i;for(let h=i;h<=r;h++)if(h===r||t[h]===$r){let E=h-g;if(E>=10&&t[g]===83&&t[g+1]===86&&t[g+2]===84&&t[g+3]===89&&t[g+4]===80&&t[g+5]===69&&t[g+6]===61&&t[g+7]===84&&t[g+8]===82&&t[g+9]===65)return e+1;if(E>=4&&t[g]===69&&t[g+1]===78&&t[g+2]===68&&t[g+3]===61){let Q=De(t,g+4,h);Q>e&&(I=Q)}else E>=6&&t[g]===83&&t[g+1]===86&&t[g+2]===76&&t[g+3]===69&&t[g+4]===78&&t[g+5]===61&&(a=go(t,g+6,h,n+1,o));g=h+1}return Math.max(I,e+a)}var Li=44;function ao(t,e,A){if(A-e<5||t[e]!==60||t[A-1]!==62)return!1;let n=t[e+4];if(n!==62&&n!==58)return!1;let i=t[e+1],r=t[e+2],o=t[e+3];return i===67&&r===78&&o===86||i===68&&r===69&&o===76||i===68&&r===85&&o===80||i===73&&r===78&&o===86}function go(t,e,A,n,i){let r=0,o=e,s=n;for(;o<A&&s<i;){let I=t.indexOf(Li,o);(I===-1||I>A)&&(I=A);let a=t.indexOf(Li,s);if((a===-1||a>i)&&(a=i),ao(t,s,a)){let g=De(t,t[o]===45?o+1:o,I);g>r&&(r=g)}o=I+1,s=a+1}return r}var Yi=new TextDecoder;function _i(t,e){let A=-1,n=e.charCodeAt(0);for(let i=0,r=t.length;i<r;i++){let o=t[i];if(i===A+1&&o!==n)break;o===ye&&(A=i)}return t.subarray(0,A+1)}function Io(t,e){let A=0;for(let n=0;n<e;n++){let i=t.indexOf(ye,A);if(i===-1){A=t.length;break}A=i+1}return Yi.decode(t.subarray(0,A)).split(/\r?\n/).slice(0,e)}function De(t,e,A){let n=0;for(let i=e;i<A;i++){let r=t[i];if(r>=48&&r<=57)n=n*10+(r-48);else break}return n}function Qo(t,e,A,n,i,{start:r,end:o,pathCol:s,metaCharCode:I,decoder:a,callback:g}){let h=0,E=0;for(;h<t.length;){let Q=t.indexOf(ye,h);if(Q===-1)break;let B=h;h=Q+1;let D=B+e+i;for(;E<n.length&&D>=n[E];)E++;if(t[B]===I)continue;let u=B;for(let f=1;f<s;f++){let C=t.indexOf(vt,u);if(C===-1||C>=Q){u=Q;break}u=C+1}let d=t[u];if(d!==eo&&d!==Ao)continue;let w=t.indexOf(vt,u);(w===-1||w>Q)&&(w=Q);let m=1/0,c=-1,y=u;for(;y<w;){let f=0,C=y+1;for(;C<w;C++){let N=t[C]-48;if(N<0||N>9)break;f=f*10+N}f<m&&(m=f),f>c&&(c=f),y=C}if(m>=o)return!0;if(c>=r){let f=t[Q-1]===Mi?Q-1:Q;g(a.decode(t.subarray(B,f)),Ui(A,n,E,B+e,i),m,c+1)}}return!1}var RA=class{filehandle;index;chunkCache;headerCache=new BA({});bgzfWorkerPool;constructor({path:e,filehandle:A,url:n,tbiPath:i,tbiUrl:r,tbiFilehandle:o,csiPath:s,csiUrl:I,csiFilehandle:a,chunkCacheSize:g=no,chunkCacheIdleTimeoutMs:h=io,chunkCacheBudget:E,bgzfWorkerPool:Q}){this.bgzfWorkerPool=Q,this.filehandle=ro(A,e,n),this.index=oo({tbiFilehandle:o,csiFilehandle:a,tbiPath:i,csiPath:s,tbiUrl:r,csiUrl:I,path:e,url:n}),this.chunkCache=new BA({maxSize:g,sizeOf:B=>{let D=0;for(let u of B.segments)D+=u.byteLength;return D},cacheKey:B=>B.toString(),idleTimeoutMs:h,budget:E,fill:(B,D)=>this.readChunk(B,{signal:D})})}clearChunkCache(){this.chunkCache.clear()}async bytesForRegions(e,A={}){let n=[];for(let{refName:r,start:o,end:s}of e){let I=await this.index.blocksForRange(r,o,s,A);for(let a of I)n.push(a)}let i=0;for(let r of de(n))i+=r.fetchedSize();return i}async getLines(e,A,n,i){let r,o={},s,I;typeof i=="function"?s=i:(o=i,s=i.lineCallback,r=i.signal,I=i.onProgress);let a=await this.index.getMetadata(o),g=A??0,h=n??a.maxRefLength;if(g>h)throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(g===h)return;let E=await this.index.blocksForRange(e,g,h,o),Q=a.format==="VCF",B=a.columnNumbers.ref||0,D=a.columnNumbers.start||0,u=Q?8:a.columnNumbers.end||0,d=Math.max(B,D,u),w=a.metaChar?.charCodeAt(0),m=a.coordinateType==="1-based-closed"?-1:0,c=new TextEncoder,y=new TextDecoder,f=c.encode(e),C=new Int32Array(d+1),N=a.format==="GAF"?{start:g,end:h,pathCol:D,metaCharCode:w,decoder:y,callback:s}:void 0,x=0;for(let k of E)x+=k.fetchedSize();let p=0;I?.(0,x);let F=1,J=[],l=k=>{for(;J.length<Math.min(k,E.length);){let b=E[J.length],S=this.chunkCache.get(b,r);S.catch(()=>{}),J.push(S)}};l(1);for(let k=0,b=E.length;k<b;k++){let S=E[k],{segments:v,cpositions:L,dpositions:_}=await J[k];p+=S.fetchedSize(),I?.(p,x);let q=S.minv.dataPosition;if(N){if(xt(v,(R,U)=>Qo(R,U,L,_,q,N)))return}else if(xt(v,(R,U)=>{let G=0,Y=0;for(;G<R.length;){let K=R.indexOf(ye,G);if(K===-1)break;let X=G+U+q;for(;Y<_.length&&X>=_[Y];)Y++;if(w!==void 0&&R[G]===w){G=K+1;continue}C[0]=G-1;for(let T=0;T<d;T++){let DA=C[T],xe=DA<K?R.indexOf(vt,DA+1):-1;C[T+1]=xe===-1||xe>=K?K:xe}let O=C[B-1]+1,JA=C[B]-O;if(JA!==f.length){G=K+1;continue}let fA=!0;for(let T=0;T<JA;T++)if(R[O+T]!==f[T]){fA=!1;break}if(!fA){G=K+1;continue}let eA=De(R,C[D-1]+1,C[D])+m;if(eA>=h)return!0;let tA;if(u===0||u===D?tA=eA+1:Q?tA=so(R,eA,C[3]+1,C[4],C[u-1]+1,C[u],C[5]):tA=De(R,C[u-1]+1,C[u]),tA>g){let T=R[K-1]===Mi?K-1:K,DA=y.decode(R.subarray(G,T));s(DA,Ui(L,_,Y,G+U,q),eA,tA)}G=K+1}return!1}))return;F=Math.min(F*2,to),l(k+1+F)}}async getMetadata(e={}){return this.index.getMetadata(e)}async readHeaderBytes(e){let{firstDataLine:A,maxBlockSize:n}=await this.getMetadata(e),i=(A?.blockPosition??0)+n,r=await this.filehandle.read(i,0,e);return zA(r)}async parseHeader(e){let{metaChar:A,skipLines:n=0}=await this.getMetadata(e),i=await this.readHeaderBytes(e);return{header:Yi.decode(A?_i(i,A):i),skippedLines:n>0?Io(i,n):[]}}getParsedHeader(e={}){return this.headerCache.get("header",e.signal,A=>this.parseHeader({...e,signal:A}))}async getHeaderBuffer(e={}){let{metaChar:A}=await this.getMetadata(e),n=await this.readHeaderBytes(e);return A?_i(n,A):n}async getSkippedLines(e={}){let{skipLines:A=0}=await this.getMetadata(e);return A<=0?[]:(await this.getParsedHeader(e)).skippedLines}async getHeader(e={}){return(await this.getParsedHeader(e)).header}async getHeaderLines(e={}){let{header:A,skippedLines:n}=await this.getParsedHeader(e);return(A?A.split(/\r?\n/):n).filter(Boolean)}async getReferenceSequenceNames(e={}){return(await this.getMetadata(e)).refIdToName}async lineCount(e,A={}){return this.index.lineCount(e,A)}async readChunk(e,A={}){let n=await this.filehandle.read(e.fetchedSize(),e.minv.blockPosition,A);pA(A.signal);let i=await this.bgzfWorkerPool;return pt(n,e,i)}};var Co=t=>({type:"fileLocation",defaultValue:{uri:t,locationType:"UriLocation"}}),ya=(t,e="")=>Jt(t,{indexType:{model:Gt.enumeration("IndexType",["TBI","CSI"]),type:"stringEnum",defaultValue:"TBI"},location:Co(e)});function co(t,e,A){return{indexType:A?"CSI":"TBI",location:{uri:`${t}.${A?"csi":"tbi"}`,baseUri:e}}}function xa(t){let{walksUri:e,baseUri:A,csi:n}=t;if(typeof e!="string")return t;let i=`${e}.walks.bed.gz`;return{...t,walksLocation:{uri:i,baseUri:A},walksIndex:co(i,A,n)}}function ba(t,e,A){let n=t.pluginManager;return new RA({filehandle:Lt(t.getConf(e),n),..._t(t.getConf([...A,"location"]),t.getConf([...A,"indexType"]),n)})}function Bo(t){return`${t.assemblyName} ${t.refName} is not in this graph's index; a graph with PanSN names (GRCh38#0#chr1) needs ${t.assemblyName} mapped to its prefix in assemblyNameToPanSN`}var Hi=class{constructor(e,A){this.file=e;this.adapter=A;this.lookup=Ut({setup:async e=>HA(await this.file.getReferenceSequenceNames(e))})}async assemblyRefNames(e={}){let A=await this.file.getReferenceSequenceNames(e),n=WA(this.adapter,e.assemblyName),i=A.filter(r=>be(r,n)).map(r=>Rt(r));return i.length>0?[...new Set(i)]:A}async resolve(e,A){let n=await this.lookup(A);return KA(n,WA(this.adapter,e.assemblyName),e.refName)}async resolveMapped(e,A){let n=await this.resolve(e,A);if(n===void 0&&e.assemblyName){let i=await this.file.getReferenceSequenceNames(A),r=WA(this.adapter,e.assemblyName);if(i.every(o=>o.includes("#"))&&!i.some(o=>be(o,r)))throw new Error(Bo(e))}return n}async regionBytes(e,A={},n=async(i,r)=>r.start){let i=[];for(let r of e){let o=await this.resolve(r,A);o!==void 0&&i.push({refName:o,start:await n(o,r),end:r.end})}return In(this.file,i,A)}};export{zA as a,Eo as b,Ut as c,Oi as d,Ue as e,ir as f,We as g,Xe as h,ji as i,rr as j,qo as k,Co as l,ya as m,co as n,xa as o,ba as p,Bo as q,Hi as r};
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
3
|
+
//# sourceMappingURL=chunk-RU4WSKBO.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{e as g}from"./chunk-MVVXRZXV.js";import{e as C}from"./chunk-IKJZPPOA.js";function A(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function ne(e){let t=g(e,"assemblyNames"),n=A(t)?t.slice(1):[];return n.length>0?n:void 0}function M(e){return e.type==="WalkTabixSyntenyAdapter"||e.type==="RgfaTabixAdapter"&&(typeof e.walksUri=="string"&&e.walksUri!==""||C(e.walksLocation))}function te(e){return e.type==="GbzBaseSyntenyAdapter"||M(e)}function re(e){let{defaultHaplotypes:t}=e;return M(e)&&A(t)&&t.length>0?t:void 0}function se(e){let t=g(e,"assemblyNames");return A(t)?t[0]:void 0}function oe(e,t){return e===void 0||e===t?void 0:`The graph is cut on its reference, ${e}: open it from a view of ${e}`}function i(e,t){return typeof e.get=="function"?e.get(t):e[t]}function y(e,t){return e.find(n=>n.trackId===t)}function h(e){return`${e.trackId} ${e.name??""}`}var $=new Set(["BedAdapter","BedTabixAdapter","BigBedAdapter","VcfAdapter","VcfTabixAdapter"]),R=/repeat|tandem|\bstr\b|vntr|trf|trgt|vamos|expansion|microsat/i;function je(e,t){let n=t?y(e,t):void 0;return n||e.filter(s=>$.has(s.adapterType)).find(s=>R.test(h(s)))}var O=/^\w+=[^;]*(;\w+=[^;]*)*$/;function G(e){let t=i(e,"name");if(!(typeof t!="string"||!O.test(t)))return Object.fromEntries(t.split(";").map(n=>{let r=n.indexOf("=");return[n.slice(0,r),n.slice(r+1)]}))}function d(e,t){let n=i(e,t);return n!==void 0?n:i(e,"INFO")?.[t]??G(e)?.[t]}var P=["RUS","MOTIFS","RU","motifs","motif","sequence","consensus"],U=["RUL","period","PERIOD","consensusSize","unit","unitLength"],H=["TRID","REPID","VARID","ID","name","id"];function T(e,t){for(let n of t){let r=d(e,n),s=String((Array.isArray(r)?r[0]:r)??"").split(",")[0].trim();if(s!==""&&s!==".")return s}}var D=/^[ACGTURYSWKMBDHVN]+$/i;function v(e){let t=Number(T(e,U));if(Number.isFinite(t)&&t>0)return Math.round(t);let n=T(e,P);return n&&D.test(n)?n.length:void 0}function m(e){return(Array.isArray(e)?e:String(e??"").split(",")).map(n=>{let r=n===""||n===null||n===void 0?NaN:Number(n);return Number.isFinite(r)?r:void 0})}function N(e){return(Array.isArray(e)?e:String(e??"").split(",")).map(n=>{let r=String(n??"").trim();return r===""||r==="."?void 0:r})}var w="<CNV:TR>";function j(e){let t=N(i(e,"ALT"));if(!t.includes(w))return;let n=m(d(e,"RN")),r=N(d(e,"RUS")),s=m(d(e,"RUL")),o=m(d(e,"RUC")),a=m(d(e,"RB")),c=0;return t.map((u,f)=>{let p=n[f]??(u===w?1:0),b=0,S=0;for(let F=0;F<p;F++,c++){let x=r[c],L=s[c]??(x&&D.test(x)?x.length:void 0),_=o[c],I=a[c]??(L&&_!==void 0?Math.round(L*_):void 0);I!==void 0&&(b+=I,S++)}return u===w&&p>0&&S===p?b:void 0})}function V(e,t,n){let r=e?.includes("|");return(e??"").split(/[/|]/).flatMap((s,o)=>{let a=s===""?NaN:Number(s),c=a>0?t[a-1]:n;return!Number.isInteger(a)||c===void 0?[]:[{bp:c,...r?{haplotype:o+1}:{}}]})}function W(e,t,n){let r=i(e,"samples"),s={};for(let[o,a]of Object.entries(r??{})){let c=m(a.SD),u=m(a.AL).flatMap((p,b)=>p!==void 0&&p>0?[c[b]===void 0?{bp:p}:{bp:p,spanningReads:c[b]}]:[]),f=u.length>0||!t?u:V(N(a.GT)[0],t,n);f.length>0&&(s[o]=f)}return Object.keys(s).length>0?s:void 0}function Y(e,t){let n=d(e,"start"),r=d(e,"end"),s=m(d(e,"SVLEN"))[0];return t&&s!==void 0?{start:n+1,end:n+1+s}:{start:n,end:r}}function Ve(e){let t=[];for(let n of e){let r=j(n),{start:s,end:o}=Y(n,r!==void 0),a=v(n);if(!(o>s)||a===void 0)continue;let c=d(n,"refName"),u=T(n,P),f=T(n,H);t.push({key:`${c}:${s}-${o}`,name:(f&&!O.test(f)?f:void 0)??(u&&u.length<=12?`(${u})n`:`${c}:${(s+1).toLocaleString("en-US")}-${o.toLocaleString("en-US")}`),refName:c,start:s,end:o,unit:a,motif:u,calls:W(n,r,o-s)})}return t.sort((n,r)=>n.start-r.start)}function k(e){let t=[];for(let n of[...e].sort((r,s)=>r.start-s.start)){let r=t.at(-1);r&&n.start<=r.end?r.end=Math.max(r.end,n.end):t.push({...n})}return t}function E(e){let t=[],n=new Map;for(let r of[...e].sort((s,o)=>s.start-o.start)){let s=`${r.refName} ${r.strand} ${r.name}`,o=n.get(s);if(o&&r.start<o.end)o.end=Math.max(o.end,r.end),o.exons=k([...o.exons,...r.exons]);else{let a={...r,exons:k(r.exons)};t.push(a),n.set(s,a)}}return t}var K=new Set(["Gff3TabixAdapter","Gff3Adapter","BedTabixAdapter","BedAdapter","GtfTabixAdapter","GtfAdapter","BigBedAdapter","NCListAdapter"]),J=/gene|refseq|gencode|ensembl|annotation/i,q=new Set(["BedTabixAdapter","BedAdapter"]);function tn(e,t){let n=t?y(e,t):void 0;if(n)return n;let r=e.filter(s=>K.has(s.adapterType)&&!R.test(h(s)));return r.find(s=>J.test(h(s)))??r.find(s=>!q.has(s.adapterType))}function rn(e,t){let n=e.tracks?.find(r=>g(r.configuration,"trackId")===t)?.displays[0];return n?g(n.configuration,"filter")??[]:[]}var z=new Set(["chromosome","region","contig","supercontig","scaffold"]),X=new Set(["exon","CDS","five_prime_UTR","three_prime_UTR","UTR"]);function B(e,t){let n=i(e,"type");typeof n=="string"&&X.has(n)&&t.push({start:i(e,"start"),end:i(e,"end")});let r=i(e,"subfeatures");for(let s of r??[])B(s,t)}function sn(e){let t=[];for(let n of e){let r=i(n,"gene_name")??i(n,"name")??i(n,"gene")??i(n,"gene_id"),s=i(n,"start"),o=i(n,"end");if(!r||!(o>s)||z.has(i(n,"type")))continue;let a=[];B(n,a),t.push({name:r,refName:i(n,"refName"),start:s,end:o,strand:i(n,"strand")??0,exons:a.length?k(a):[{start:s,end:o}]})}return E(t)}var l=JBrowseExports["tss-react/mui"],Q=e=>l!=null&&e in Object(l)?l[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from 'tss-react/mui' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var an=Q("makeStyles"),cn=l&&l.__esModule?l.default:l;export{ne as a,M as b,te as c,re as d,se as e,oe as f,$ as g,je as h,Ve as i,K as j,tn as k,rn as l,sn as m,an as n};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-TGSDXZXI.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/graphTrackConfig.ts", "../../src/GraphGenomeView/trackFeatures.ts", "../../src/GraphGenomeView/repeats/repeatFeatures.ts", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.
|
|
3
|
+
"sources": ["../../src/graphTrackConfig.ts", "../../src/GraphGenomeView/trackFeatures.ts", "../../src/GraphGenomeView/repeats/repeatFeatures.ts", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.3/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-EQDQ7P4Y.js", "../../src/GraphGenomeView/genes/geneFeatures.ts", "host:tss-react/mui"],
|
|
4
4
|
"sourcesContent": ["import { readConfObject } from '@jbrowse/core/configuration'\n\nimport { snapshotNamesFile } from './locationName.ts'\n\nimport type { AnyConfigurationModel } from '@jbrowse/core/configuration'\n\nfunction isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(item => typeof item === 'string')\n}\n\n// The assemblies the track names after its reference, which is what core's\n// MultiWaySyntenyDisplay opens a lane-declaring source on.\nexport function trackLanes(track: AnyConfigurationModel) {\n const assemblyNames: unknown = readConfObject(track, 'assemblyNames')\n const lanes = isStringArray(assemblyNames) ? assemblyNames.slice(1) : []\n return lanes.length > 0 ? lanes : undefined\n}\n\n// Whether a track names a walk file, by the `walksUri` shorthand as written\n// or the location it expands to: an rGFA track may, and a\n// WalkTabixSyntenyAdapter one does\nexport function walkIndexed(adapterConfig: Record<string, unknown>) {\n return (\n adapterConfig.type === 'WalkTabixSyntenyAdapter' ||\n (adapterConfig.type === 'RgfaTabixAdapter' &&\n ((typeof adapterConfig.walksUri === 'string' &&\n adapterConfig.walksUri !== '') ||\n snapshotNamesFile(adapterConfig.walksLocation)))\n )\n}\n\n// Whether a track's cut reads `haplotypes`: a GBZ cut does, and so does an\n// rGFA one with a walk file\nexport function cutsByHaplotype(adapterConfig: Record<string, unknown>) {\n return (\n adapterConfig.type === 'GbzBaseSyntenyAdapter' || walkIndexed(adapterConfig)\n )\n}\n\n// The haplotypes a walk-indexed track's config names to cut for until the\n// user picks others\nexport function configHaplotypes(adapterConfig: Record<string, unknown>) {\n const { defaultHaplotypes } = adapterConfig\n return walkIndexed(adapterConfig) &&\n isStringArray(defaultHaplotypes) &&\n defaultHaplotypes.length > 0\n ? defaultHaplotypes\n : undefined\n}\n\n// A graph is cut on the first assembly its track names, the rule\n// GbzBaseSyntenyAdapter states for its anchor. Every other assembly the track\n// names holds its sequence as rank>0 alleles off that reference's backbone, so\n// a window on one has no reference coordinates to frame the cut by.\nexport function graphReferenceAssembly(track: AnyConfigurationModel) {\n const assemblyNames: unknown = readConfObject(track, 'assemblyNames')\n return isStringArray(assemblyNames) ? assemblyNames[0] : undefined\n}\n\nexport function offReferenceProblem(\n referenceAssembly: string | undefined,\n assemblyName: string,\n) {\n return referenceAssembly === undefined || referenceAssembly === assemblyName\n ? undefined\n : `The graph is cut on its reference, ${referenceAssembly}: open it from a view of ${referenceAssembly}`\n}\n", "import type { Feature } from '@jbrowse/core/util'\n\nexport type FeatureLike = Feature | Record<string, unknown>\n\nexport function ownField(f: FeatureLike, name: string): unknown {\n return typeof (f as Feature).get === 'function'\n ? (f as Feature).get(name)\n : (f as Record<string, unknown>)[name]\n}\n\nexport interface TrackChoice {\n trackId: string\n name?: string\n adapterType: string\n}\n\nexport function namedTrack<T extends TrackChoice>(tracks: T[], named: string) {\n return tracks.find(t => t.trackId === named)\n}\n\n// what a track-name hint such as /repeat|tandem/ is matched against\nexport function trackLabel(t: TrackChoice) {\n return `${t.trackId} ${t.name ?? ''}`\n}\n", "import { namedTrack, ownField, trackLabel } from '../trackFeatures'\n\nimport type { FeatureLike, TrackChoice } from '../trackFeatures'\n\nexport interface RepeatCall {\n bp: number\n // TRGT's `SD`. Zero means the allele is a copy of the one the reads did\n // support, so its length states nothing about a second haplotype; absent\n // where the genotyper writes no such field.\n spanningReads?: number\n // the PanSN haplotype a phased genotype puts this allele on\n haplotype?: number\n}\n\n// A tandem repeat array as the walk rows need it: its span on the reference,\n// which is what the bars measure between, and its unit length, which is what\n// they tile by. Read off whatever repeat annotation the session has, since the\n// tools all state the same two facts under different names: VCF 4.5's\n// `<CNV:TR>` allele gives `RUL` and `RUS` (one entry per repeat sequence,\n// grouped by `RN`), UCSC simpleRepeat and TRF give `period` and the consensus\n// `sequence`, TRGT gives `MOTIFS` and `TRID`, ExpansionHunter `RU` and `REPID`,\n// HipSTR and GangSTR `PERIOD`, vamos its `motifs`. A VCF record's INFO is\n// searched as well as its top level, and a list's first entry is the unit the\n// bars tile by: for a compound array that is the first repeat sequence, which\n// is the expanding one at every such locus in the common catalogues.\nexport interface RepeatArray {\n key: string\n name: string\n refName: string\n start: number\n end: number\n unit: number\n motif?: string\n // Each sample's genotyped alleles, from a genotyper's per-sample `AL`\n // (TRGT) or a genotype over VCF 4.5 <CNV:TR> alleles; absent from a\n // catalogue.\n calls?: Record<string, RepeatCall[]>\n}\n\nexport const REPEAT_ADAPTER_TYPES = new Set([\n 'BedAdapter',\n 'BedTabixAdapter',\n 'BigBedAdapter',\n 'VcfAdapter',\n 'VcfTabixAdapter',\n])\n\nexport const REPEAT_TRACK_HINT =\n /repeat|tandem|\\bstr\\b|vntr|trf|trgt|vamos|expansion|microsat/i\n\nexport function pickRepeatTrack<T extends TrackChoice>(\n tracks: T[],\n named: string,\n) {\n const chosen = named ? namedTrack(tracks, named) : undefined\n if (chosen) {\n return chosen\n }\n const candidates = tracks.filter(t => REPEAT_ADAPTER_TYPES.has(t.adapterType))\n return candidates.find(t => REPEAT_TRACK_HINT.test(trackLabel(t)))\n}\n\n// A TRGT repeat catalogue is a BED whose name column packs the record:\n// `ID=HTT;MOTIFS=CAG,CCG;STRUC=(CAG)nCAACAG(CCG)n`. Read as fields when it\n// has that shape.\nconst PACKED_NAME = /^\\w+=[^;]*(;\\w+=[^;]*)*$/\n\nfunction packedName(f: FeatureLike) {\n const name = ownField(f, 'name')\n if (typeof name !== 'string' || !PACKED_NAME.test(name)) {\n return undefined\n }\n return Object.fromEntries(\n name.split(';').map(pair => {\n const i = pair.indexOf('=')\n return [pair.slice(0, i), pair.slice(i + 1)]\n }),\n )\n}\n\n// A field at the feature's top level, in a VCF record's INFO, or in a packed\n// name column, in that order.\nfunction field(f: FeatureLike, name: string): unknown {\n const top = ownField(f, name)\n if (top !== undefined) {\n return top\n }\n const info = ownField(f, 'INFO') as Record<string, unknown> | undefined\n return info?.[name] ?? packedName(f)?.[name]\n}\n\nconst MOTIF_FIELDS = [\n 'RUS',\n 'MOTIFS',\n 'RU',\n 'motifs',\n 'motif',\n 'sequence',\n 'consensus',\n]\nconst PERIOD_FIELDS = [\n 'RUL',\n 'period',\n 'PERIOD',\n 'consensusSize',\n 'unit',\n 'unitLength',\n]\nconst NAME_FIELDS = ['TRID', 'REPID', 'VARID', 'ID', 'name', 'id']\n\n// The first entry of a list-valued field, whether it arrived parsed or as\n// the comma-joined text a VCF INFO or a BED column holds; VCF's missing \".\"\n// counts as absent.\nfunction first(f: FeatureLike, names: string[]) {\n for (const name of names) {\n const value = field(f, name)\n const one = String((Array.isArray(value) ? value[0] : value) ?? '')\n .split(',')[0]!\n .trim()\n if (one !== '' && one !== '.') {\n return one\n }\n }\n return undefined\n}\n\nconst IUPAC = /^[ACGTURYSWKMBDHVN]+$/i\n\n// The unit in bp: a stated period, else the length of the first motif.\nexport function repeatUnitOf(f: FeatureLike) {\n const period = Number(first(f, PERIOD_FIELDS))\n if (Number.isFinite(period) && period > 0) {\n return Math.round(period)\n }\n const motif = first(f, MOTIF_FIELDS)\n return motif && IUPAC.test(motif) ? motif.length : undefined\n}\n\n// A per-sample list field, parsed or as the comma-joined text a VCF column\n// holds. A missing entry stays missing: read as 0, an absent `SD` would make\n// every allele of every genotyper that writes no such field unspanned.\nfunction numbers(value: unknown) {\n const raw: unknown[] = Array.isArray(value)\n ? value\n : String(value ?? '').split(',')\n return raw.map(one => {\n const n =\n one === '' || one === null || one === undefined ? NaN : Number(one)\n return Number.isFinite(n) ? n : undefined\n })\n}\n\nfunction strings(value: unknown) {\n const raw: unknown[] = Array.isArray(value)\n ? value\n : String(value ?? '').split(',')\n return raw.map(one => {\n const text = String(one ?? '').trim()\n return text === '' || text === '.' ? undefined : text\n })\n}\n\nconst TANDEM_REPEAT = '<CNV:TR>'\n\n// Each ALT allele's length, off VCF 4.5's flattened list-of-lists: RN says how\n// many RUS/RUL/RUC/RB entries each allele takes, and the allele's bases are\n// its runs' RB, or unit length times count where RB is missing. An allele that\n// is not <CNV:TR>, or has a run stating neither, has none.\nfunction tandemAlleleBp(f: FeatureLike) {\n const alts = strings(ownField(f, 'ALT'))\n if (!alts.includes(TANDEM_REPEAT)) {\n return undefined\n }\n const rn = numbers(field(f, 'RN'))\n const rus = strings(field(f, 'RUS'))\n const rul = numbers(field(f, 'RUL'))\n const ruc = numbers(field(f, 'RUC'))\n const rb = numbers(field(f, 'RB'))\n let k = 0\n return alts.map((alt, i) => {\n const n = rn[i] ?? (alt === TANDEM_REPEAT ? 1 : 0)\n let bp = 0\n let known = 0\n for (let j = 0; j < n; j++, k++) {\n const motif = rus[k]\n const unitLength =\n rul[k] ?? (motif && IUPAC.test(motif) ? motif.length : undefined)\n const count = ruc[k]\n const runBp =\n rb[k] ??\n (unitLength && count !== undefined\n ? Math.round(unitLength * count)\n : undefined)\n if (runBp !== undefined) {\n bp += runBp\n known++\n }\n }\n return alt === TANDEM_REPEAT && n > 0 && known === n ? bp : undefined\n })\n}\n\n// A sample's alleles through its genotype: 0 is the reference's, an index\n// past it the ALT allele's. A phased genotype's k-th allele is PanSN\n// haplotype k, the order vg deconstruct writes an assembly's haplotypes in.\nfunction genotyped(\n gt: string | undefined,\n alleleBp: (number | undefined)[],\n referenceBp: number,\n) {\n const phased = gt?.includes('|')\n return (gt ?? '').split(/[/|]/).flatMap((index, k): RepeatCall[] => {\n const i = index === '' ? NaN : Number(index)\n const bp = i > 0 ? alleleBp[i - 1] : referenceBp\n if (!Number.isInteger(i) || bp === undefined) {\n return []\n }\n return [{ bp, ...(phased ? { haplotype: k + 1 } : {}) }]\n })\n}\n\nfunction callsOf(\n f: FeatureLike,\n alleleBp: (number | undefined)[] | undefined,\n referenceBp: number,\n) {\n const samples = ownField(f, 'samples') as\n Record<string, Record<string, unknown>> | undefined\n const called: Record<string, RepeatCall[]> = {}\n for (const [sample, fields] of Object.entries(samples ?? {})) {\n const reads = numbers(fields.SD)\n const lengths = numbers(fields.AL).flatMap((bp, i) =>\n bp !== undefined && bp > 0\n ? [reads[i] === undefined ? { bp } : { bp, spanningReads: reads[i] }]\n : [],\n )\n const calls =\n lengths.length > 0 || !alleleBp\n ? lengths\n : genotyped(strings(fields.GT)[0], alleleBp, referenceBp)\n if (calls.length > 0) {\n called[sample] = calls\n }\n }\n return Object.keys(called).length > 0 ? called : undefined\n}\n\n// A <CNV:TR> record's POS is the base before the array and SVLEN the\n// reference allele's length, while a VCF feature starts at that padding base.\nfunction spanOf(f: FeatureLike, tandem: boolean) {\n const start = field(f, 'start') as number\n const end = field(f, 'end') as number\n const svlen = numbers(field(f, 'SVLEN'))[0]\n return tandem && svlen !== undefined\n ? { start: start + 1, end: start + 1 + svlen }\n : { start, end }\n}\n\nexport function repeatArraysFrom(features: FeatureLike[]): RepeatArray[] {\n const arrays: RepeatArray[] = []\n for (const f of features) {\n const alleleBp = tandemAlleleBp(f)\n const { start, end } = spanOf(f, alleleBp !== undefined)\n const unit = repeatUnitOf(f)\n if (!(end > start) || unit === undefined) {\n continue\n }\n const refName = field(f, 'refName') as string\n const motif = first(f, MOTIF_FIELDS)\n const stated = first(f, NAME_FIELDS)\n arrays.push({\n key: `${refName}:${start}-${end}`,\n name:\n (stated && !PACKED_NAME.test(stated) ? stated : undefined) ??\n (motif && motif.length <= 12\n ? `(${motif})n`\n : `${refName}:${(start + 1).toLocaleString('en-US')}-${end.toLocaleString('en-US')}`),\n refName,\n start,\n end,\n unit,\n motif,\n calls: callsOf(f, alleleBp, end - start),\n })\n }\n return arrays.sort((a, b) => a.start - b.start)\n}\n", "// src/genes/geneFiles.ts\nvar GENE_TYPE = /(gene|gene_segment|RNA|transcript)$/i;\nvar isGene = (type) => GENE_TYPE.test(type) || type === \"CDS\" || type === \"exon\";\nfunction mergedIntervals(intervals) {\n const out = [];\n for (const iv of [...intervals].sort((a, b) => a.start - b.start)) {\n const last = out.at(-1);\n if (last && iv.start <= last.end) {\n last.end = Math.max(last.end, iv.end);\n } else {\n out.push({ ...iv });\n }\n }\n return out;\n}\nfunction strandOf(s) {\n return s === \"+\" ? 1 : s === \"-\" ? -1 : 0;\n}\nfunction unescape(value) {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n}\nfunction attributes(column) {\n const out = /* @__PURE__ */ new Map();\n for (const pair of column.split(\";\")) {\n const eq = pair.indexOf(\"=\");\n if (eq > 0) {\n out.set(pair.slice(0, eq).trim(), unescape(pair.slice(eq + 1).trim()));\n }\n }\n return out;\n}\nfunction gff3Row(line) {\n const cols = line.split(\"\t\");\n const start = Number(cols[3]);\n const end = Number(cols[4]);\n if (cols.length < 9 || !Number.isInteger(start) || !Number.isInteger(end)) {\n return void 0;\n }\n return {\n refName: cols[0],\n type: cols[2],\n start: start - 1,\n end,\n strand: strandOf(cols[6]),\n attrs: attributes(cols[8])\n };\n}\nfunction genesFromGff3Lines(lines) {\n const rows = [];\n for (const line of lines) {\n if (line.startsWith(\"##FASTA\")) {\n break;\n }\n const row = line.startsWith(\"#\") ? void 0 : gff3Row(line);\n if (row) {\n rows.push(row);\n }\n }\n const parentOf = /* @__PURE__ */ new Map();\n for (const { attrs } of rows) {\n const id = attrs.get(\"ID\");\n const parent = attrs.get(\"Parent\")?.split(\",\")[0];\n if (id && parent) {\n parentOf.set(id, parent);\n }\n }\n const rootOf = (row) => {\n let id = row.attrs.get(\"Parent\")?.split(\",\")[0] ?? row.attrs.get(\"ID\");\n if (!id) {\n return row.attrs.get(\"gene_id\");\n }\n const seen = /* @__PURE__ */ new Set();\n while (id && parentOf.has(id) && !seen.has(id)) {\n seen.add(id);\n id = parentOf.get(id);\n }\n return id;\n };\n const groups = /* @__PURE__ */ new Map();\n rows.forEach((row, i) => {\n const root = rootOf(row) ?? `#${i}`;\n const key = `${row.refName}\t${root}`;\n const group = groups.get(key) ?? groups.set(key, { rows: [] }).get(key);\n group.rows.push(row);\n if (!row.attrs.has(\"Parent\") && !group.top) {\n group.top = row;\n }\n });\n const genes = [];\n for (const [key, { top, rows: rows2 }] of groups) {\n if (top && !isGene(top.type)) {\n continue;\n }\n const first = top ?? rows2[0];\n const start = top?.start ?? Math.min(...rows2.map((r) => r.start));\n const end = top?.end ?? Math.max(...rows2.map((r) => r.end));\n const a = first.attrs;\n const spans = (type) => rows2.filter((r) => r.type === type).map((r) => ({ start: r.start, end: r.end }));\n const exons = spans(\"exon\");\n const coding = spans(\"CDS\");\n const transcribed = rows2.some(\n (r) => r !== top && r.type !== \"exon\" && r.type !== \"CDS\"\n );\n genes.push({\n name: a.get(\"Name\") ?? a.get(\"gene_name\") ?? a.get(\"gene\") ?? a.get(\"gene_id\") ?? key.split(\"\t\")[1],\n refName: first.refName,\n start,\n end,\n strand: first.strand,\n // A range read holds only the rows over its window, so a gene with\n // transcripts but no exon or CDS there is intronic in it. Only a gene\n // with no transcripts, as a bacterium's gene and CDS, is one exon.\n exons: exons.length ? mergedIntervals(exons) : transcribed ? mergedIntervals(coding) : [{ start, end }]\n });\n }\n return genes;\n}\nfunction mergeOverlappingByName(genes) {\n const out = [];\n const open = /* @__PURE__ */ new Map();\n for (const g of [...genes].sort((a, b) => a.start - b.start)) {\n const key = `${g.refName}\t${g.strand}\t${g.name}`;\n const last = open.get(key);\n if (last && g.start < last.end) {\n last.end = Math.max(last.end, g.end);\n last.exons = mergedIntervals([...last.exons, ...g.exons]);\n } else {\n const gene = { ...g, exons: mergedIntervals(g.exons) };\n out.push(gene);\n open.set(key, gene);\n }\n }\n return out;\n}\nvar BED_HEADER = /^(#|track\\s|browser\\s)/;\nfunction genesFromBed(text) {\n const rows = [];\n for (const line of text.split(\"\\n\")) {\n const cols = line.replace(/\\r$/, \"\").split(\"\t\");\n const start = Number(cols[1]);\n const end = Number(cols[2]);\n if (BED_HEADER.test(line) || cols.length < 3 || !Number.isInteger(start) || !(end > start)) {\n continue;\n }\n const refName = cols[0];\n const name = cols[3] && cols[3] !== \".\" ? cols[3] : `${refName}:${start + 1}-${end}`;\n const sizes = cols[10]?.split(\",\").filter((s) => s !== \"\").map(Number);\n const starts = cols[11]?.split(\",\").filter((s) => s !== \"\").map(Number);\n const blocks = sizes?.length && sizes.length === starts?.length ? sizes.map((size, i) => ({\n start: start + starts[i],\n end: start + starts[i] + size\n })) : [{ start, end }];\n rows.push({\n name,\n refName,\n start,\n end,\n strand: strandOf(cols[5]),\n exons: blocks\n });\n }\n return mergeOverlappingByName(rows);\n}\nfunction sniffedFormat(text) {\n const first = text.split(\"\\n\", 1e3).find((l) => l.trim() !== \"\" && !BED_HEADER.test(l));\n const cols = first?.split(\"\t\") ?? [];\n return /^\\d+$/.test(cols[1] ?? \"\") && /^\\d+$/.test(cols[2] ?? \"\") ? \"bed\" : \"gff3\";\n}\nfunction genesFromText(text, format = sniffedFormat(text)) {\n return format === \"bed\" ? genesFromBed(text) : genesFromGff3Lines(text.split(/\\r?\\n/));\n}\n\nexport {\n mergedIntervals,\n genesFromGff3Lines,\n mergeOverlappingByName,\n genesFromBed,\n genesFromText\n};\n", "import {\n mergeOverlappingByName,\n mergedIntervals,\n} from '@jbrowse/bandage-core/genes/geneFiles'\nimport { readConfObject } from '@jbrowse/core/configuration'\n\nimport { REPEAT_TRACK_HINT } from '../repeats/repeatFeatures'\nimport { namedTrack, ownField, trackLabel } from '../trackFeatures'\n\nimport type { FeatureLike, TrackChoice } from '../trackFeatures'\nimport type { GeneModel } from '@jbrowse/bandage-core/genes/genePins'\nimport type { AnyConfigurationModel } from '@jbrowse/core/configuration'\n\n// The adapters whose tracks hold gene models, in the order the session's\n// tracks are searched when no track is named.\nexport const GENE_ADAPTER_TYPES = new Set([\n 'Gff3TabixAdapter',\n 'Gff3Adapter',\n 'BedTabixAdapter',\n 'BedAdapter',\n 'GtfTabixAdapter',\n 'GtfAdapter',\n 'BigBedAdapter',\n 'NCListAdapter',\n])\n\nconst GENE_TRACK_HINT = /gene|refseq|gencode|ensembl|annotation/i\n\n// A BED track is as often peaks or repeats as genes, so one counts only where\n// its name says it is annotation\nconst BED_ADAPTER_TYPES = new Set(['BedTabixAdapter', 'BedAdapter'])\n\n// Which of the session's tracks to read genes from: the named one while the\n// assembly has it (a saved pick can name a track since removed), else the\n// first gene-bearing track on the assembly whose name says it is annotation,\n// else the first non-BED gene-bearing track. A track whose name says repeats is\n// never picked unnamed, as \"RepeatMasker annotation\" would be.\nexport function pickGeneTrack<T extends TrackChoice>(\n tracks: T[],\n named: string,\n) {\n const chosen = named ? namedTrack(tracks, named) : undefined\n if (chosen) {\n return chosen\n }\n const candidates = tracks.filter(\n t =>\n GENE_ADAPTER_TYPES.has(t.adapterType) &&\n !REPEAT_TRACK_HINT.test(trackLabel(t)),\n )\n return (\n candidates.find(t => GENE_TRACK_HINT.test(trackLabel(t))) ??\n candidates.find(t => !BED_ADAPTER_TYPES.has(t.adapterType))\n )\n}\n\ninterface LaneView {\n tracks?: readonly {\n configuration: AnyConfigurationModel\n displays: readonly { configuration: AnyConfigurationModel }[]\n }[]\n}\n\n// The `filter` of the gene track's lane in the view the graph is drawn in, so\n// the chips name what the lane draws. None where the view shows no such lane,\n// or has no tracks, as a graph genome view of its own.\nexport function laneFilters(view: object, trackId: string | undefined) {\n const lane = (view as LaneView).tracks?.find(\n t => readConfObject(t.configuration, 'trackId') === trackId,\n )?.displays[0]\n return lane\n ? ((readConfObject(lane.configuration, 'filter') as string[] | undefined) ??\n [])\n : []\n}\n\n// Records spanning a whole sequence, the types the GFF3 adapter declines to\n// widen a fetch for. RefSeq opens every molecule with a `region` named\n// ANONYMOUS.\nconst WHOLE_SEQUENCE_TYPES = new Set([\n 'chromosome',\n 'region',\n 'contig',\n 'supercontig',\n 'scaffold',\n])\n\n// JBrowse's BED parser splits a coding BED12 block into CDS and UTR parts and\n// keeps `exon` for non-coding ones, so all of them are exon\nconst EXON_PARTS = new Set([\n 'exon',\n 'CDS',\n 'five_prime_UTR',\n 'three_prime_UTR',\n 'UTR',\n])\n\nfunction exonsOf(f: FeatureLike, into: { start: number; end: number }[]) {\n const type = ownField(f, 'type')\n if (typeof type === 'string' && EXON_PARTS.has(type)) {\n into.push({\n start: ownField(f, 'start') as number,\n end: ownField(f, 'end') as number,\n })\n }\n const children = ownField(f, 'subfeatures') as FeatureLike[] | undefined\n for (const child of children ?? []) {\n exonsOf(child, into)\n }\n}\n\n// Genes from a track's features: every top-level feature but a whole-sequence\n// record, named by the first of gene_name, name, gene and gene_id it carries,\n// with the exons found anywhere under it merged. A feature with no exons is one exon,\n// its whole span. A BED track gives one feature per transcript, so a name's\n// overlapping features merge, while its copies down the contig stay apart.\n// UCSC's ncbiRefSeq.gff gene records carry their symbol only as gene_id. A\n// feature with none of those names is left out: its raw ID, RefSeq's\n// `id-NC_000913.3:1978503..1979270`, only restates where it is.\nexport function geneModelsFrom(features: FeatureLike[]): GeneModel[] {\n const genes: GeneModel[] = []\n for (const f of features) {\n const name =\n (ownField(f, 'gene_name') as string | undefined) ??\n (ownField(f, 'name') as string | undefined) ??\n (ownField(f, 'gene') as string | undefined) ??\n (ownField(f, 'gene_id') as string | undefined)\n const start = ownField(f, 'start') as number\n const end = ownField(f, 'end') as number\n if (\n !name ||\n !(end > start) ||\n WHOLE_SEQUENCE_TYPES.has(ownField(f, 'type') as string)\n ) {\n continue\n }\n const exons: { start: number; end: number }[] = []\n exonsOf(f, exons)\n genes.push({\n name,\n refName: ownField(f, 'refName') as string,\n start,\n end,\n strand: (ownField(f, 'strand') as number | undefined) ?? 0,\n exons: exons.length ? mergedIntervals(exons) : [{ start, end }],\n })\n }\n return mergeOverlappingByName(genes)\n}\n", "const host = JBrowseExports[\"tss-react/mui\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"tss-react/mui\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const cx = /* @__PURE__ */ read(\"cx\")\nexport const keyframes = /* @__PURE__ */ read(\"keyframes\")\nexport const makeStyles = /* @__PURE__ */ read(\"makeStyles\")\nexport default host && host.__esModule ? host.default : host"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["isStringArray", "value", "item", "trackLanes", "track", "assemblyNames", "readConfObject", "lanes", "walkIndexed", "adapterConfig", "snapshotNamesFile", "cutsByHaplotype", "configHaplotypes", "defaultHaplotypes", "graphReferenceAssembly", "offReferenceProblem", "referenceAssembly", "assemblyName", "ownField", "f", "name", "namedTrack", "tracks", "named", "t", "trackLabel", "REPEAT_ADAPTER_TYPES", "REPEAT_TRACK_HINT", "pickRepeatTrack", "tracks", "named", "chosen", "namedTrack", "t", "trackLabel", "PACKED_NAME", "packedName", "f", "name", "ownField", "pair", "i", "field", "top", "MOTIF_FIELDS", "PERIOD_FIELDS", "NAME_FIELDS", "first", "names", "value", "one", "IUPAC", "repeatUnitOf", "period", "motif", "numbers", "n", "strings", "text", "TANDEM_REPEAT", "tandemAlleleBp", "alts", "rn", "rus", "rul", "ruc", "rb", "k", "alt", "bp", "known", "j", "unitLength", "count", "runBp", "genotyped", "gt", "alleleBp", "referenceBp", "phased", "index", "callsOf", "samples", "called", "sample", "fields", "reads", "lengths", "calls", "spanOf", "tandem", "start", "end", "svlen", "repeatArraysFrom", "features", "arrays", "unit", "refName", "stated", "a", "b", "mergedIntervals", "intervals", "out", "iv", "a", "b", "last", "mergeOverlappingByName", "genes", "out", "open", "g", "a", "b", "key", "last", "mergedIntervals", "gene", "GENE_ADAPTER_TYPES", "GENE_TRACK_HINT", "BED_ADAPTER_TYPES", "pickGeneTrack", "tracks", "named", "chosen", "namedTrack", "candidates", "t", "REPEAT_TRACK_HINT", "trackLabel", "laneFilters", "view", "trackId", "lane", "readConfObject", "WHOLE_SEQUENCE_TYPES", "EXON_PARTS", "exonsOf", "f", "into", "type", "ownField", "children", "child", "geneModelsFrom", "features", "genes", "name", "start", "end", "exons", "mergedIntervals", "mergeOverlappingByName", "host", "read", "name", "makeStyles", "read", "mui_default", "host"]
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
function o(t){return t===void 0||t==="*"?void 0:t}function s(t){let e=t.split(" ");return{refName:e[0],start:+e[1],end:+e[2],segmentCount:+e[3],pathCount:+e[4],inversion:e[5]==="1",shortestAlleleLength:+e[6],longestAlleleLength:+e[7],segments:e[11],shortestAllele:o(e[12]),longestAllele:o(e[13])}}function u(t,e){return t.key!==void 0||e.key!==void 0?t.key===e.key:t.refName===e.refName&&t.start===e.start&&t.end===e.end}function i(t){return t.key??`${t.refName}:${t.start}-${t.end}`}function b(t){let{shortestAlleleLength:e,longestAlleleLength:n}=t;return e===n?`${n.toLocaleString()} bp`:`${e.toLocaleString()}-${n.toLocaleString()} bp`}var r=2147483647;function a(t){let{pathCount:e,segmentCount:n,inversion:l}=t;return[`${n} segments`,e===r?"more paths than gfatools counts":`up to ${e.toLocaleString()} paths`,...l?["inversion"]:[]].join(", ")}export{s as a,u as b,i as c,b as d,r as e,a as f};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-UOFWYS6T.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.
|
|
3
|
+
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.3/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-FX4RDMDN.js"],
|
|
4
4
|
"sourcesContent": ["// src/bubbles/bubbleLine.ts\nfunction sequence(field) {\n return field === void 0 || field === \"*\" ? void 0 : field;\n}\nfunction parseBubbleLine(line) {\n const cols = line.split(\"\t\");\n return {\n refName: cols[0],\n start: +cols[1],\n end: +cols[2],\n segmentCount: +cols[3],\n pathCount: +cols[4],\n inversion: cols[5] === \"1\",\n shortestAlleleLength: +cols[6],\n longestAlleleLength: +cols[7],\n segments: cols[11],\n shortestAllele: sequence(cols[12]),\n longestAllele: sequence(cols[13])\n };\n}\nfunction sameBubble(a, b) {\n return a.key !== void 0 || b.key !== void 0 ? a.key === b.key : a.refName === b.refName && a.start === b.start && a.end === b.end;\n}\nfunction bubbleKey(b) {\n return b.key ?? `${b.refName}:${b.start}-${b.end}`;\n}\nfunction bubbleLabel(bubble) {\n const { shortestAlleleLength: min, longestAlleleLength: max } = bubble;\n return min === max ? `${max.toLocaleString()} bp` : `${min.toLocaleString()}-${max.toLocaleString()} bp`;\n}\nvar SATURATED_PATH_COUNT = 2147483647;\nfunction bubbleDescription(bubble) {\n const { pathCount, segmentCount, inversion } = bubble;\n return [\n `${segmentCount} segments`,\n pathCount === SATURATED_PATH_COUNT ? \"more paths than gfatools counts\" : `up to ${pathCount.toLocaleString()} paths`,\n ...inversion ? [\"inversion\"] : []\n ].join(\", \");\n}\n\nexport {\n parseBubbleLine,\n sameBubble,\n bubbleKey,\n bubbleLabel,\n SATURATED_PATH_COUNT,\n bubbleDescription\n};\n"],
|
|
5
5
|
"mappings": "AACA,SAASA,EAASC,EAAO,CACvB,OAAOA,IAAU,QAAUA,IAAU,IAAM,OAASA,CACtD,CACA,SAASC,EAAgBC,EAAM,CAC7B,IAAMC,EAAOD,EAAK,MAAM,GAAG,EAC3B,MAAO,CACL,QAASC,EAAK,CAAC,EACf,MAAO,CAACA,EAAK,CAAC,EACd,IAAK,CAACA,EAAK,CAAC,EACZ,aAAc,CAACA,EAAK,CAAC,EACrB,UAAW,CAACA,EAAK,CAAC,EAClB,UAAWA,EAAK,CAAC,IAAM,IACvB,qBAAsB,CAACA,EAAK,CAAC,EAC7B,oBAAqB,CAACA,EAAK,CAAC,EAC5B,SAAUA,EAAK,EAAE,EACjB,eAAgBJ,EAASI,EAAK,EAAE,CAAC,EACjC,cAAeJ,EAASI,EAAK,EAAE,CAAC,CAClC,CACF,CACA,SAASC,EAAWC,EAAGC,EAAG,CACxB,OAAOD,EAAE,MAAQ,QAAUC,EAAE,MAAQ,OAASD,EAAE,MAAQC,EAAE,IAAMD,EAAE,UAAYC,EAAE,SAAWD,EAAE,QAAUC,EAAE,OAASD,EAAE,MAAQC,EAAE,GAChI,CACA,SAASC,EAAUD,EAAG,CACpB,OAAOA,EAAE,KAAO,GAAGA,EAAE,OAAO,IAAIA,EAAE,KAAK,IAAIA,EAAE,GAAG,EAClD,CACA,SAASE,EAAYC,EAAQ,CAC3B,GAAM,CAAE,qBAAsBC,EAAK,oBAAqBC,CAAI,EAAIF,EAChE,OAAOC,IAAQC,EAAM,GAAGA,EAAI,eAAe,CAAC,MAAQ,GAAGD,EAAI,eAAe,CAAC,IAAIC,EAAI,eAAe,CAAC,KACrG,CACA,IAAIC,EAAuB,WAC3B,SAASC,EAAkBJ,EAAQ,CACjC,GAAM,CAAE,UAAAK,EAAW,aAAAC,EAAc,UAAAC,CAAU,EAAIP,EAC/C,MAAO,CACL,GAAGM,CAAY,YACfD,IAAcF,EAAuB,kCAAoC,SAASE,EAAU,eAAe,CAAC,SAC5G,GAAGE,EAAY,CAAC,WAAW,EAAI,CAAC,CAClC,EAAE,KAAK,IAAI,CACb",
|
|
6
6
|
"names": ["sequence", "field", "parseBubbleLine", "line", "cols", "sameBubble", "a", "b", "bubbleKey", "bubbleLabel", "bubble", "min", "max", "SATURATED_PATH_COUNT", "bubbleDescription", "pathCount", "segmentCount", "inversion"]
|