jbrowse-plugin-graphgenomeviewer 7.3.1 → 7.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{GbzBaseSyntenyAdapter-NYI2YVNG.js → GbzBaseSyntenyAdapter-3MELVQRM.js} +2 -2
- package/dist/chunks/GbzBaseSyntenyAdapter-3MELVQRM.js.map +7 -0
- package/dist/chunks/{GraphGenomeView-WJ3FIDY2.js → GraphGenomeView-6EDKLBOJ.js} +2 -2
- package/dist/chunks/{GraphTrackSettingsDialog-ZW7ALMDV.js → GraphTrackSettingsDialog-KYEZWI4Z.js} +2 -2
- package/dist/chunks/{HighlightColorDialog-VBZRUKD5.js → HighlightColorDialog-IMLYI64R.js} +2 -2
- package/dist/chunks/{LinearGraphDisplay-SPOPTJEN.js → LinearGraphDisplay-CRIZLJDE.js} +2 -2
- package/dist/chunks/{MinigraphBubbleAdapter-ABZPIZYV.js → MinigraphBubbleAdapter-2HPTGZ5N.js} +2 -2
- package/dist/chunks/RgfaTabixAdapter-GNH3QCPZ.js +2 -0
- package/dist/chunks/RgfaTabixAdapter-GNH3QCPZ.js.map +7 -0
- package/dist/chunks/{WalkTabixSyntenyAdapter-ZJJ4SQHH.js → WalkTabixSyntenyAdapter-CUPHY36S.js} +2 -2
- package/dist/chunks/{chunk-44CJ2N3N.js → chunk-4EKOQHUX.js} +2 -2
- package/dist/chunks/{chunk-44CJ2N3N.js.map → chunk-4EKOQHUX.js.map} +4 -4
- package/dist/chunks/{chunk-RFDSEB2X.js → chunk-6DRBCLWY.js} +4 -4
- package/dist/chunks/chunk-B5SVBPXN.js +2 -0
- package/dist/chunks/chunk-B5SVBPXN.js.map +7 -0
- package/dist/chunks/chunk-CJMBJJLO.js +3 -0
- package/dist/chunks/chunk-CJMBJJLO.js.map +7 -0
- package/dist/chunks/{chunk-BXRTG7FU.js → chunk-F4T7JI7S.js} +2 -2
- package/dist/chunks/{chunk-BXRTG7FU.js.map → chunk-F4T7JI7S.js.map} +1 -1
- package/dist/chunks/chunk-GN4HSVLB.js +4 -0
- package/dist/chunks/{chunk-VQ77X5QU.js.map → chunk-GN4HSVLB.js.map} +4 -4
- package/dist/chunks/{chunk-WUSKVEA6.js → chunk-HOSCIP4U.js} +2 -2
- package/dist/chunks/{chunk-WUSKVEA6.js.map → chunk-HOSCIP4U.js.map} +2 -2
- package/dist/chunks/chunk-HTSG4T32.js +3 -0
- package/dist/chunks/chunk-HTSG4T32.js.map +7 -0
- package/dist/chunks/{chunk-YXVEGNFQ.js → chunk-IFBKAC2H.js} +2 -2
- package/dist/chunks/{chunk-RW775LQN.js → chunk-MNL7IPTH.js} +2 -2
- package/dist/chunks/{chunk-RW775LQN.js.map → chunk-MNL7IPTH.js.map} +2 -2
- package/dist/chunks/chunk-N5VWQHTK.js +2 -0
- package/dist/chunks/{chunk-QTOA4RB7.js.map → chunk-N5VWQHTK.js.map} +2 -2
- package/dist/chunks/{chunk-DBPEUVUC.js → chunk-NGR473EL.js} +2 -2
- package/dist/chunks/{chunk-DBPEUVUC.js.map → chunk-NGR473EL.js.map} +2 -2
- package/dist/chunks/chunk-ORHUPW3G.js +3 -0
- package/dist/chunks/chunk-ORHUPW3G.js.map +7 -0
- package/dist/chunks/{chunk-DUR437TH.js → chunk-PUFH6DMJ.js} +2 -2
- package/dist/chunks/{chunk-DUR437TH.js.map → chunk-PUFH6DMJ.js.map} +1 -1
- package/dist/chunks/{chunk-FIRQAKMX.js → chunk-Q55PHRHV.js} +1 -1
- package/dist/chunks/{chunk-FIRQAKMX.js.map → chunk-Q55PHRHV.js.map} +1 -1
- package/dist/chunks/chunk-QQCTNB2Z.js +2 -0
- package/dist/chunks/chunk-QQCTNB2Z.js.map +7 -0
- package/dist/chunks/chunk-R25GOTED.js +2 -0
- package/dist/chunks/chunk-R25GOTED.js.map +7 -0
- package/dist/chunks/chunk-TQKSF3NI.js +2 -0
- package/dist/chunks/{chunk-7HWHWPRW.js.map → chunk-TQKSF3NI.js.map} +3 -3
- package/dist/chunks/{chunk-6MUBJVBG.js → chunk-ULLEUORS.js} +2 -2
- package/dist/chunks/{chunk-6MUBJVBG.js.map → chunk-ULLEUORS.js.map} +4 -4
- package/dist/chunks/chunk-VW4PPXH6.js +2 -0
- package/dist/chunks/{renderSvg-WD6YDV2I.js → renderSvg-HEEQJD5B.js} +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +2 -2
- package/package.json +3 -3
- package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +3 -1
- package/src/RgfaTabixAdapter/walkReader.ts +5 -1
- package/src/panSNTabix.ts +3 -3
- package/src/version.ts +1 -1
- package/dist/chunks/GbzBaseSyntenyAdapter-NYI2YVNG.js.map +0 -7
- package/dist/chunks/RgfaTabixAdapter-3NQC5QPT.js +0 -2
- package/dist/chunks/RgfaTabixAdapter-3NQC5QPT.js.map +0 -7
- package/dist/chunks/chunk-2M4XYSLG.js +0 -2
- package/dist/chunks/chunk-2M4XYSLG.js.map +0 -7
- package/dist/chunks/chunk-6KUHGRHU.js +0 -2
- package/dist/chunks/chunk-6KUHGRHU.js.map +0 -7
- package/dist/chunks/chunk-7HWHWPRW.js +0 -2
- package/dist/chunks/chunk-BKBH3WGW.js +0 -3
- package/dist/chunks/chunk-BKBH3WGW.js.map +0 -7
- package/dist/chunks/chunk-JCAZTNYG.js +0 -2
- package/dist/chunks/chunk-N74HGPAW.js +0 -3
- package/dist/chunks/chunk-N74HGPAW.js.map +0 -7
- package/dist/chunks/chunk-PEDWEPNK.js +0 -2
- package/dist/chunks/chunk-PEDWEPNK.js.map +0 -7
- package/dist/chunks/chunk-PYQG3JHP.js +0 -3
- package/dist/chunks/chunk-PYQG3JHP.js.map +0 -7
- package/dist/chunks/chunk-QTOA4RB7.js +0 -2
- package/dist/chunks/chunk-VQ77X5QU.js +0 -4
- /package/dist/chunks/{GraphGenomeView-WJ3FIDY2.js.map → GraphGenomeView-6EDKLBOJ.js.map} +0 -0
- /package/dist/chunks/{GraphTrackSettingsDialog-ZW7ALMDV.js.map → GraphTrackSettingsDialog-KYEZWI4Z.js.map} +0 -0
- /package/dist/chunks/{HighlightColorDialog-VBZRUKD5.js.map → HighlightColorDialog-IMLYI64R.js.map} +0 -0
- /package/dist/chunks/{LinearGraphDisplay-SPOPTJEN.js.map → LinearGraphDisplay-CRIZLJDE.js.map} +0 -0
- /package/dist/chunks/{MinigraphBubbleAdapter-ABZPIZYV.js.map → MinigraphBubbleAdapter-2HPTGZ5N.js.map} +0 -0
- /package/dist/chunks/{WalkTabixSyntenyAdapter-ZJJ4SQHH.js.map → WalkTabixSyntenyAdapter-CUPHY36S.js.map} +0 -0
- /package/dist/chunks/{chunk-RFDSEB2X.js.map → chunk-6DRBCLWY.js.map} +0 -0
- /package/dist/chunks/{chunk-YXVEGNFQ.js.map → chunk-IFBKAC2H.js.map} +0 -0
- /package/dist/chunks/{chunk-JCAZTNYG.js.map → chunk-VW4PPXH6.js.map} +0 -0
- /package/dist/chunks/{renderSvg-WD6YDV2I.js.map → renderSvg-HEEQJD5B.js.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-EIY2SKD3.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-B5ARSBOH.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-M75QPZNJ.js"],
|
|
4
|
-
"sourcesContent": ["// src/gfa/walkStops.ts\nvar START_STOP_TAG = \"ws\";\nvar END_STOP_TAG = \"we\";\nvar STOP_KINDS = [\"elsewhere\", \"break\", \"end\"];\nvar GAP_CAUSE_TEXT = {\n missing: \"not in the graph\",\n elsewhere: \"on nodes filed elsewhere\",\n unknown: \"gap, cause unknown\"\n};\nvar OUTSIDE_TEXT = \"outside the extracted subgraph\";\nfunction gapParts(bp, after, before) {\n if (!after && !before) {\n return [{ bp }];\n }\n const left = Math.min(after?.trimmed ?? 0, bp);\n const right = Math.min(before?.trimmed ?? 0, bp - left);\n let rest = bp - left - right;\n const lead = after?.kind === \"break\" ? Math.min(after.bp, rest) : 0;\n rest -= lead;\n const trail = before?.kind === \"break\" ? Math.min(before.bp, rest) : 0;\n rest -= trail;\n const elsewhere = [after, before].find((s) => s?.kind === \"elsewhere\");\n const parts = [\n { bp: left },\n { bp: lead, cause: \"missing\" },\n elsewhere?.kind === \"elsewhere\" ? { bp: rest, cause: \"elsewhere\", chunk: elsewhere.chunk } : { bp: rest, cause: \"unknown\" },\n { bp: trail, cause: \"missing\" },\n { bp: right }\n ];\n return parts.filter((part) => part.bp > 0);\n}\nfunction stopAt(table, i) {\n const bp = table.bp[i];\n const ref = table.chunkRefs[i];\n return stopOf(\n table.kindNames[table.kinds[i]],\n Number.isNaN(bp) ? void 0 : bp,\n table.trimmed[i],\n ref < 0 ? void 0 : { refName: table.chunkRefNames[ref], start: table.chunkStarts[i] }\n );\n}\nfunction stopOf(kind, bp, trimmed, chunk) {\n const cut = trimmed > 0 ? { trimmed } : {};\n if (kind === \"elsewhere\" && chunk) {\n return { kind, chunk, ...bp === void 0 ? {} : { bp }, ...cut };\n }\n if (kind === \"break\" && bp !== void 0) {\n return { kind, bp, ...chunk ? { chunk } : {}, ...cut };\n }\n return kind === \"end\" ? { kind, ...cut } : void 0;\n}\nfunction stopTag(stop) {\n const parts = [stop.kind];\n if (\"bp\" in stop && stop.bp !== void 0) {\n parts.push(`bp=${stop.bp}`);\n }\n if (stop.trimmed) {\n parts.push(`trimmed=${stop.trimmed}`);\n }\n if (\"chunk\" in stop && stop.chunk) {\n parts.push(`chunk=${stop.chunk.refName}:${stop.chunk.start}`);\n }\n return parts.join(\",\");\n}\nfunction parseStopTag(value) {\n const [kind, ...fields] = value.split(\",\");\n let bp;\n let trimmed = 0;\n let chunk;\n for (const field of fields) {\n if (field.startsWith(\"bp=\")) {\n bp = +field.slice(3);\n } else if (field.startsWith(\"trimmed=\")) {\n trimmed = +field.slice(8);\n } else if (field.startsWith(\"chunk=\")) {\n const at = field.lastIndexOf(\":\");\n chunk = { refName: field.slice(6, at), start: +field.slice(at + 1) };\n }\n }\n return stopOf(kind, bp, trimmed, chunk);\n}\nfunction stopFields(before, after) {\n return {\n ...before ? { before } : {},\n ...after ? { after } : {}\n };\n}\nfunction walkStopFields(tags) {\n const before = tags[START_STOP_TAG];\n const after = tags[END_STOP_TAG];\n return stopFields(\n typeof before === \"string\" ? parseStopTag(before) : void 0,\n typeof after === \"string\" ? parseStopTag(after) : void 0\n );\n}\nfunction walkStopTags(walks, p) {\n const tags = [];\n for (const [tag, table] of [\n [START_STOP_TAG, walks.before],\n [END_STOP_TAG, walks.after]\n ]) {\n const stop = table && stopAt(table, p);\n if (stop) {\n tags.push(`\t${tag}:Z:${stopTag(stop)}`);\n }\n }\n return tags.join(\"\");\n}\nvar StopColumns = class {\n constructor() {\n this.kinds = [];\n this.bp = [];\n this.trimmed = [];\n this.chunkRefs = [];\n this.chunkStarts = [];\n this.chunkRefNames = [];\n this.refIndex = /* @__PURE__ */ new Map();\n }\n push(stop) {\n this.kinds.push(STOP_KINDS.indexOf(stop.kind));\n this.bp.push(\"bp\" in stop && stop.bp !== void 0 ? stop.bp : NaN);\n this.trimmed.push(stop.trimmed ?? 0);\n const chunk = \"chunk\" in stop ? stop.chunk : void 0;\n if (chunk) {\n let ref = this.refIndex.get(chunk.refName);\n if (ref === void 0) {\n ref = this.chunkRefNames.length;\n this.refIndex.set(chunk.refName, ref);\n this.chunkRefNames.push(chunk.refName);\n }\n this.chunkRefs.push(ref);\n this.chunkStarts.push(chunk.start);\n } else {\n this.chunkRefs.push(-1);\n this.chunkStarts.push(NaN);\n }\n }\n table() {\n return {\n kinds: Uint8Array.from(this.kinds),\n kindNames: [...STOP_KINDS],\n bp: Float64Array.from(this.bp),\n trimmed: Float64Array.from(this.trimmed),\n chunkRefs: Int32Array.from(this.chunkRefs),\n chunkStarts: Float64Array.from(this.chunkStarts),\n chunkRefNames: this.chunkRefNames\n };\n }\n};\n\nexport {\n START_STOP_TAG,\n END_STOP_TAG,\n GAP_CAUSE_TEXT,\n OUTSIDE_TEXT,\n gapParts,\n stopAt,\n stopTag,\n parseStopTag,\n stopFields,\n walkStopFields,\n walkStopTags,\n StopColumns\n};\n", "import {\n stopAt,\n stopFields,\n walkStopTags\n} from \"./chunk-EIY2SKD3.js\";\nimport {\n PathVisits\n} from \"./chunk-ZPZ7GNBT.js\";\nimport {\n panSNFields,\n panSNSample\n} from \"./chunk-4XWZNPQ2.js\";\n\n// src/gfa/graphTables.ts\nfunction pLineName(name, start, end) {\n return start === 0 ? name : `${name}:${start}-${end}`;\n}\nfunction tablePath(w, p) {\n const walkName = w.names[p];\n const fields = panSNFields(walkName);\n const start = w.starts[p];\n return fields ? {\n name: `${fields.sample}#${fields.haplotype}#${fields.contig}`,\n start,\n ...fields,\n ...stopFields(\n w.before && stopAt(w.before, p),\n w.after && stopAt(w.after, p)\n )\n } : { name: pLineName(walkName, start, w.ends[p]), start };\n}\nfunction namesByList(lists, names, listCount, pathNames) {\n const starts = new Int32Array(listCount + 1);\n for (const list of lists) {\n starts[list + 1]++;\n }\n for (let i = 0; i < listCount; i++) {\n starts[i + 1] += starts[i];\n }\n const fill = starts.slice(0, listCount);\n const grouped = new Int32Array(lists.length);\n lists.forEach((list, i) => {\n grouped[fill[list]++] = names[i];\n });\n const listed = new Int32Array(pathNames.length).fill(-1);\n return Array.from({ length: listCount }, (_, list) => {\n const out = [];\n for (let i = starts[list]; i < starts[list + 1]; i++) {\n const k = grouped[i];\n if (listed[k] !== list) {\n listed[k] = list;\n out.push(pathNames[k]);\n }\n }\n return out;\n });\n}\nfunction tableNodeIds({ nodes: n, links: l, walks: w }) {\n const canonical = new Uint8Array(n.names.length);\n const claim = (node, reversed) => {\n if (canonical[node] === 0) {\n canonical[node] = reversed ? 2 : 1;\n }\n };\n for (let i = 0; i < l.from.length; i++) {\n claim(l.from[i], l.strands[i] & 1);\n claim(l.to[i], l.strands[i] & 2);\n }\n const stepCount = w.offsets[w.names.length] ?? 0;\n for (let s = 0; s < stepCount; s++) {\n claim(w.steps[s], w.reversed[s]);\n }\n return n.names.map(\n (segment, i) => `${segment}${canonical[i] === 2 ? \"-\" : \"+\"}`\n );\n}\nfunction graphFromTables({ nodes: n, links: l, walks: w }, name = \"Imported GFA\") {\n const count = n.names.length;\n const declared = n.lengths.length;\n const drawnWalks = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n drawnWalks.push(p);\n }\n }\n const traversals = new Int32Array(count);\n for (const node of w.steps.subarray(0, w.offsets[w.names.length])) {\n traversals[node]++;\n }\n const ids = tableNodeIds({ nodes: n, links: l, walks: w });\n const nodes = [];\n for (let i = 0; i < declared; i++) {\n const ref = n.refs[i];\n nodes.push({\n id: ids[i],\n name: n.names[i],\n length: n.lengths[i],\n depth: Math.max(traversals[i], 1),\n stable: ref < 0 ? void 0 : {\n refName: n.refNames[ref],\n start: n.starts[i],\n rank: n.ranks[i]\n },\n samples: void 0\n });\n }\n const edges = [];\n const neighbours = new Array(count);\n const pairList = (a, b) => {\n const near = neighbours[a];\n if (near) {\n for (let j = 0; j < near.length; j += 2) {\n if (near[j] === b) {\n return near[j + 1];\n }\n }\n }\n return void 0;\n };\n const addPair = (a, b, list) => {\n const near = neighbours[a];\n if (near) {\n near.push(b, list);\n } else {\n neighbours[a] = [b, list];\n }\n };\n const edgeLists = [];\n let lists = 0;\n for (let i = 0; i < l.from.length; i++) {\n const a = l.from[i];\n const b = l.to[i];\n edges.push({\n from: ids[a],\n to: ids[b],\n fromStrand: l.strands[i] & 1 ? \"-\" : \"+\",\n toStrand: l.strands[i] & 2 ? \"-\" : \"+\"\n });\n let list = pairList(a, b);\n if (list === void 0) {\n list = lists++;\n addPair(a, b, list);\n addPair(b, a, list);\n }\n edgeLists.push(list);\n }\n const adjacency = new Int32Array(count + 1);\n for (let a = 0; a < count; a++) {\n adjacency[a + 1] = adjacency[a] + (neighbours[a]?.length ?? 0) / 2;\n }\n const adjacentNode = new Int32Array(adjacency[count]);\n const adjacentList = new Int32Array(adjacency[count]);\n neighbours.forEach((near, a) => {\n for (let j = 0; j < near.length; j += 2) {\n adjacentNode[adjacency[a] + j / 2] = near[j];\n adjacentList[adjacency[a] + j / 2] = near[j + 1];\n }\n });\n const listOf = (a, b) => {\n for (let j = adjacency[a]; j < adjacency[a + 1]; j++) {\n if (adjacentNode[j] === b) {\n return adjacentList[j];\n }\n }\n return -1;\n };\n const nameIndex = /* @__PURE__ */ new Map();\n const pathNames = [];\n const crossedList = new Int32Array(w.offsets[w.names.length] ?? 0);\n const crossedName = new Int32Array(crossedList.length);\n let crossings = 0;\n const lastWalk = new Int32Array(lists).fill(-1);\n const paths = [];\n const anchorPaths = [];\n const totalSteps = w.offsets[w.names.length] ?? 0;\n const visitPath = new Int32Array(totalSteps);\n const visitStart = new Float64Array(totalSteps);\n const visitReversed = new Uint8Array(totalSteps);\n const fill = new Int32Array(count).fill(-1);\n const visitOrder = [];\n const blocks = [0];\n const pathSamples = [];\n const edgeNameIndex = /* @__PURE__ */ new Map();\n const edgeNames = [];\n for (const p of drawnWalks) {\n const head = tablePath(w, p);\n const { start, name: pathName } = head;\n const visitName = head.sample === void 0 ? w.names[p] : pathName;\n let named = nameIndex.get(visitName);\n if (named === void 0) {\n named = pathNames.length;\n nameIndex.set(visitName, named);\n pathNames.push(visitName);\n pathSamples.push(panSNSample(visitName));\n }\n let edgeNamed = edgeNameIndex.get(pathName);\n if (edgeNamed === void 0) {\n edgeNamed = edgeNames.length;\n edgeNameIndex.set(pathName, edgeNamed);\n edgeNames.push(pathName);\n }\n const visitSample = pathSamples[named];\n const first = w.offsets[p];\n const nodeIds = new Array(w.offsets[p + 1] - first);\n let pos = start;\n let prev = -1;\n for (let s = first; s < w.offsets[p + 1]; s++) {\n const node = w.steps[s];\n nodeIds[s - first] = ids[node];\n if (fill[node] === -1) {\n fill[node] = blocks.at(-1);\n blocks.push(fill[node] + traversals[node]);\n visitOrder.push(node);\n }\n const at = fill[node]++;\n visitPath[at] = named;\n visitStart[at] = pos;\n visitReversed[at] = w.reversed[s];\n pos += node < declared ? n.lengths[node] : 0;\n if (prev >= 0) {\n const list = listOf(prev, node);\n if (list >= 0 && lastWalk[list] !== p) {\n lastWalk[list] = p;\n crossedList[crossings] = list;\n crossedName[crossings++] = edgeNamed;\n }\n }\n prev = node;\n }\n paths.push({ ...head, nodeIds });\n anchorPaths.push({\n name: visitName,\n sample: visitSample,\n start,\n length: pos - start\n });\n }\n const listNames = namesByList(\n crossedList.subarray(0, crossings),\n crossedName,\n lists,\n edgeNames\n );\n edges.forEach((edge, i) => {\n const names = listNames[edgeLists[i]];\n if (names.length > 0) {\n edge.pathIds = names;\n }\n });\n const walked = drawnWalks.length > 0;\n return {\n name,\n nodes,\n edges,\n paths: walked ? paths : void 0,\n anchorPaths: walked ? anchorPaths : void 0,\n pathVisits: walked ? new PathVisits({\n segments: visitOrder.map((node) => n.names[node]),\n offsets: Int32Array.from(blocks),\n path: visitPath.subarray(0, blocks.at(-1)),\n start: visitStart.subarray(0, blocks.at(-1)),\n reversed: visitReversed.subarray(0, blocks.at(-1)),\n paths: pathNames,\n samples: pathSamples\n }) : void 0,\n anchoredBy: nodes.some((node) => node.stable) ? \"tags\" : void 0\n };\n}\nfunction graphTablesGFA({ nodes, links, walks }) {\n const { names } = nodes;\n const lines = [\"H\tVN:Z:1.1\"];\n for (let i = 0; i < nodes.lengths.length; i++) {\n const ref = nodes.refs[i];\n const stable = ref < 0 ? \"\" : `\tSN:Z:${nodes.refNames[ref]}\tSO:i:${nodes.starts[i]}\tSR:i:${nodes.ranks[i]}`;\n lines.push(`S\t${names[i]}\t*\tLN:i:${nodes.lengths[i]}${stable}`);\n }\n for (let i = 0; i < links.from.length; i++) {\n const strands = links.strands[i];\n lines.push(\n `L\t${names[links.from[i]]}\t${strands & 1 ? \"-\" : \"+\"}\t${names[links.to[i]]}\t${strands & 2 ? \"-\" : \"+\"}\t0M`\n );\n }\n for (let p = 0; p < walks.names.length; p++) {\n const name = walks.names[p];\n const fields = panSNFields(name);\n const start = walks.starts[p];\n const end = walks.ends[p];\n const steps = [];\n for (let s = walks.offsets[p]; s < walks.offsets[p + 1]; s++) {\n steps.push([names[walks.steps[s]], walks.reversed[s]]);\n }\n lines.push(\n fields ? `W\t${fields.sample}\t${fields.haplotype}\t${fields.contig}\t${start}\t${end}\t${steps.map(([id, rev]) => (rev ? \"<\" : \">\") + id).join(\"\")}${walkStopTags(walks, p)}` : `P\t${pLineName(name, start, end)}\t${steps.map(([id, rev]) => id + (rev ? \"-\" : \"+\")).join(\",\")}\t*`\n );\n }\n return lines.join(\"\\n\");\n}\n\nexport {\n tablePath,\n tableNodeIds,\n graphFromTables,\n graphTablesGFA\n};\n", "import {\n tableNodeIds,\n tablePath\n} from \"./chunk-B5ARSBOH.js\";\nimport {\n pathOrigin\n} from \"./chunk-B5X2RLJG.js\";\nimport {\n gapParts\n} from \"./chunk-EIY2SKD3.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\n panSNSample\n} from \"./chunk-4XWZNPQ2.js\";\n\n// src/layout/walkRowRuns.ts\nvar RUN_ON_REFERENCE = 1;\nvar RUN_REVERSED = 2;\nvar RUN_GAP = 4;\nvar GAP_CAUSES = [void 0, \"missing\", \"elsewhere\", \"unknown\"];\nvar CAUSE_SHIFT = 3;\nvar causeFlags = (cause) => GAP_CAUSES.indexOf(cause) << CAUSE_SHIFT;\nfunction referenceOf(names, referencePath, rankZero) {\n return referencePath !== void 0 && names.includes(referencePath) ? referencePath : names.find((n) => rankZero.has(n)) ?? names[0];\n}\nfunction referenceWalkName(graph) {\n return referenceOf(\n (graph.paths ?? []).map((p) => pathOrigin(p.name).name),\n graph.referencePath,\n new Set(\n graph.nodes.flatMap(\n (n) => n.stable?.rank === 0 ? [n.stable.refName] : []\n )\n )\n );\n}\nfunction graphPieces(graph) {\n const index = /* @__PURE__ */ new Map();\n const names = [];\n const lengths = [];\n const indexOf = (id) => {\n let i = index.get(id);\n if (i === void 0) {\n i = names.length;\n index.set(id, i);\n names.push(id);\n lengths.push(0);\n }\n return i;\n };\n for (const node of graph.nodes) {\n lengths[indexOf(node.id)] = node.length;\n }\n const heads = graph.paths ?? [];\n const from = new Int32Array(heads.length);\n const to = new Int32Array(heads.length);\n const steps = [];\n heads.forEach((path, p) => {\n from[p] = steps.length;\n for (const id of path.nodeIds) {\n steps.push(indexOf(id));\n }\n to[p] = steps.length;\n });\n return {\n heads,\n from,\n to,\n steps,\n lengths,\n names,\n reference: referenceWalkName(graph)\n };\n}\nfunction tablePieces(tables, referencePath, visits) {\n const { nodes: n, walks: w } = tables;\n const kept = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n kept.push(p);\n }\n }\n const heads = kept.map((p) => tablePath(w, p));\n const rankZero = /* @__PURE__ */ new Set();\n for (let i = 0; i < n.lengths.length; i++) {\n if (n.refs[i] >= 0 && n.ranks[i] === 0) {\n rankZero.add(n.refNames[n.refs[i]]);\n }\n }\n return {\n heads,\n from: kept.map((p) => w.offsets[p]),\n to: kept.map((p) => w.offsets[p + 1]),\n steps: w.steps,\n lengths: n.lengths,\n // a visit names its node as the Graph does, which costs a pass over the\n // steps\n names: visits ? tableNodeIds(tables) : n.names,\n reference: referenceOf(\n heads.map((h) => pathOrigin(h.name).name),\n referencePath,\n rankZero\n )\n };\n}\nfunction sampleOf(path) {\n return path.sample ?? panSNSample(path.name);\n}\nfunction labelOf(path) {\n return path.haplotype !== void 0 && path.sample !== void 0 ? `${path.sample}#${path.haplotype}` : sampleOf(path);\n}\nvar Columns = class {\n constructor(width) {\n this.offsets = [0];\n this.values = Array.from({ length: width }, () => []);\n }\n get length() {\n return this.values[0].length;\n }\n push(...row) {\n row.forEach((v, i) => this.values[i].push(v));\n }\n endRow() {\n this.offsets.push(this.length);\n }\n // the rows in `order`, column i in the array `make[i]` makes\n reorder(order, make) {\n const columns = make.map((m) => m(this.length));\n const offsets = new Uint32Array(order.length + 1);\n let at = 0;\n order.forEach((row, i) => {\n for (let k = this.offsets[row]; k < this.offsets[row + 1]; k++, at++) {\n columns.forEach((column, c) => {\n column[at] = this.values[c][k];\n });\n }\n offsets[i + 1] = at;\n });\n return { offsets, columns };\n }\n};\nvar float64 = (n) => new Float64Array(n);\nfunction walkRowRuns(source, region, o = {}) {\n const {\n heads,\n from,\n to,\n steps: all,\n lengths,\n names,\n reference\n } = \"walks\" in source ? tablePieces(source, o.referencePath, o.visits) : graphPieces(source);\n const declared = lengths.length;\n const lengthOf = (node) => node < declared ? lengths[node] : 0;\n const nameOf = (p) => pathOrigin(heads[p].name).name;\n const startOf = (p) => heads[p].start;\n const byStart = (a, b) => (startOf(a) ?? 0) - (startOf(b) ?? 0);\n const pieceIds = heads.map((_, p) => p);\n const referencePieces = pieceIds.filter((p) => nameOf(p) === reference).sort(byStart);\n const first = referencePieces[0];\n const others = pieceIds.filter((p) => nameOf(p) !== reference);\n if (first === void 0 || others.length === 0) {\n return void 0;\n }\n const walks = groupBy(others, nameOf);\n const spanStart = new Float64Array(names.length).fill(Number.NaN);\n const spanEnd = new Float64Array(names.length);\n let reachesBefore = false;\n let reachesAfter = false;\n const cut = region && region.end > region.start ? region : void 0;\n for (const piece of referencePieces) {\n let pos = startOf(piece) ?? 0;\n for (let s = from[piece]; s < to[piece]; s++) {\n const node = all[s];\n const len = lengthOf(node);\n if (Number.isNaN(spanStart[node])) {\n spanStart[node] = pos;\n spanEnd[node] = pos + len;\n if (cut) {\n reachesBefore ||= pos + len <= cut.start;\n reachesAfter ||= pos >= cut.end;\n }\n }\n pos += len;\n }\n }\n const flanked = cut === void 0 || reachesBefore && reachesAfter;\n const runs = new Columns(5);\n const chunks = [];\n const chunkIndex = /* @__PURE__ */ new Map();\n const chunkOf = (chunk2) => {\n if (!chunk2) {\n return -1;\n }\n const key = `${chunk2.refName}:${chunk2.start}`;\n let i = chunkIndex.get(key);\n if (i === void 0) {\n i = chunks.length;\n chunkIndex.set(key, i);\n chunks.push(chunk2);\n }\n return i;\n };\n const visits = o.visits ? new Columns(4) : void 0;\n let steps = new Int32Array(0);\n let stepStart = new Float64Array(0);\n const rowOf = (pieces) => {\n const head = heads[pieces[0]];\n const ordered = [...pieces].sort(byStart);\n let count = ordered.length - 1;\n for (const piece of ordered) {\n count += to[piece] - from[piece];\n }\n if (count > steps.length) {\n steps = new Int32Array(count * 2);\n stepStart = new Float64Array(count * 2);\n }\n let length = 0;\n let unplaced = false;\n let end;\n let previous;\n const partsAt = /* @__PURE__ */ new Map();\n for (const piece of ordered) {\n const start2 = startOf(piece);\n if (start2 === void 0 || end !== void 0 && start2 < end) {\n unplaced = true;\n }\n if (end !== void 0 && start2 !== void 0 && start2 > end) {\n partsAt.set(\n length,\n gapParts(\n start2 - end,\n previous === void 0 ? void 0 : heads[previous].after,\n heads[piece].before\n )\n );\n steps[length] = -(start2 - end);\n stepStart[length++] = end;\n }\n let pos = start2 ?? 0;\n for (let s = from[piece]; s < to[piece]; s++) {\n const node = all[s];\n steps[length] = node;\n stepStart[length++] = pos;\n pos += lengthOf(node);\n }\n end = start2 === void 0 ? void 0 : pos;\n previous = piece;\n }\n const onReference = (i) => i >= 0 && i < length && steps[i] >= 0 && !Number.isNaN(spanStart[steps[i]]);\n const stepEnd = (i) => {\n const id = steps[i];\n return stepStart[i] + (id < 0 ? -id : lengthOf(id));\n };\n const partialSide = (i0, i1) => {\n const flank = i0 >= 0 ? i0 : i1;\n let near = -1;\n for (let d = 1; near < 0 && d < length; d++) {\n near = [flank - d, flank + d].find(onReference) ?? -1;\n }\n if (near < 0) {\n return void 0;\n }\n const forward = near > flank === spanStart[steps[near]] > spanStart[steps[flank]];\n const after = forward === (flank === i0);\n const last2 = after ? length - 1 : 0;\n const contigEnds = onReference(last2);\n const stop2 = {\n contigEnds,\n shortBp: contigEnds ? Math.max(\n 0,\n cut.start - spanEnd[steps[last2]],\n spanStart[steps[last2]] - cut.end\n ) : 0\n };\n return {\n stop: stop2,\n lo: after ? flank + 1 : 0,\n hi: after ? length : flank,\n backward: !forward,\n axisStart: forward ? after ? stepEnd(flank) : stepStart[0] : after ? stepEnd(length - 1) : stepStart[flank]\n };\n };\n let lo = 0;\n let hi = length;\n let backward = false;\n let complete = true;\n let flankFrom = -1;\n let flankTo = -1;\n let axisStart;\n let stop;\n if (cut && flanked) {\n let i0 = -1;\n let i1 = -1;\n let bestEnd = -Infinity;\n let bestStart = Infinity;\n for (let i = 0; i < length; i++) {\n if (onReference(i)) {\n const id = steps[i];\n if (spanEnd[id] <= cut.start && spanEnd[id] > bestEnd) {\n bestEnd = spanEnd[id];\n i0 = i;\n }\n if (spanStart[id] >= cut.end && spanStart[id] < bestStart) {\n bestStart = spanStart[id];\n i1 = i;\n }\n }\n }\n if (i0 < 0 || i1 < 0) {\n complete = false;\n const inside = i0 >= 0 || i1 >= 0 ? partialSide(i0, i1) : void 0;\n if (inside) {\n ;\n ({ lo, hi, backward, axisStart, stop } = inside);\n }\n } else {\n lo = Math.min(i0, i1) + 1;\n hi = Math.max(i0, i1);\n backward = i0 > i1;\n flankFrom = i0;\n flankTo = i1;\n }\n }\n const contig = head.contig ?? panSNContig(pathOrigin(head.name).name);\n const axis = unplaced || length === 0 ? void 0 : axisStart !== void 0 ? { contig, start: axisStart, reversed: backward } : flankFrom < 0 ? { contig, start: stepStart[0], reversed: false } : flankFrom < flankTo ? { contig, start: stepEnd(flankFrom), reversed: false } : { contig, start: stepStart[flankFrom], reversed: true };\n let bp2 = 0;\n let offReferenceBp = 0;\n let gapBp = 0;\n let step = 0;\n let last = -1;\n let lastFlags = 0;\n let lastRef = Number.NaN;\n const [, runBp, runRef, runFlags] = runs.values;\n for (let k = lo; k < hi; k++) {\n const index = backward ? hi - 1 - (k - lo) : k;\n const id = steps[index];\n if (id < 0) {\n const parts = partsAt.get(index);\n for (const part of backward ? [...parts].reverse() : parts) {\n runs.push(\n bp2,\n part.bp,\n Number.NaN,\n RUN_GAP | causeFlags(part.cause),\n chunkOf(part.chunk)\n );\n bp2 += part.bp;\n }\n last = runs.length - 1;\n lastFlags = RUN_GAP;\n lastRef = Number.NaN;\n gapBp += -id;\n step = 0;\n continue;\n }\n const len = lengthOf(id);\n const at = spanStart[id];\n const on = !Number.isNaN(at);\n visits?.push(id, bp2, len, on ? 1 : 0);\n const placed = last >= 0 && !Number.isNaN(lastRef);\n const forward = on && placed && step >= 0 && lastRef + (runBp[last] ?? 0) === at;\n const back = on && placed && step <= 0 && spanEnd[id] === lastRef;\n if (!on && last >= 0 && !(lastFlags & (RUN_ON_REFERENCE | RUN_GAP))) {\n runBp[last] += len;\n } else if (forward || back) {\n runBp[last] += len;\n if (!forward) {\n lastRef = at;\n runRef[last] = at;\n lastFlags |= RUN_REVERSED;\n runFlags[last] = lastFlags;\n }\n step = forward ? 1 : -1;\n } else {\n lastFlags = on ? RUN_ON_REFERENCE : 0;\n lastRef = on ? at : Number.NaN;\n runs.push(bp2, len, lastRef, lastFlags, -1);\n last = runs.length - 1;\n step = 0;\n }\n bp2 += len;\n if (!on) {\n offReferenceBp += len;\n }\n }\n runs.endRow();\n visits?.endRow();\n return {\n name: head.name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: bp2,\n offReferenceBp,\n gapBp,\n complete,\n stop,\n axis\n };\n };\n const referenceRow = rowOf(referencePieces);\n const rows = [...walks.values()].map((pieces, i) => ({\n meta: rowOf(pieces),\n row: i + 1\n }));\n rows.sort(\n (a, b) => Number(b.meta.complete) - Number(a.meta.complete) || b.meta.bp - a.meta.bp || a.meta.label.localeCompare(b.meta.label)\n );\n const order = [0, ...rows.map((r) => r.row)];\n const { offsets, columns } = runs.reorder(order, [\n float64,\n float64,\n float64,\n (n) => new Uint8Array(n),\n (n) => new Int32Array(n)\n ]);\n const [start, bp, referenceStart, flags, chunk] = columns;\n return {\n origin: cut ? cut.start : startOf(first) ?? 0,\n rows: [referenceRow, ...rows.map((r) => r.meta)],\n offsets,\n start,\n bp,\n referenceStart,\n flags,\n chunk,\n chunks,\n visits: visits && visitColumns(visits, order, names)\n };\n}\nfunction visitColumns(visits, order, names) {\n const { offsets, columns } = visits.reorder(order, [\n (n) => new Int32Array(n),\n float64,\n float64,\n (n) => new Uint8Array(n)\n ]);\n const [node, start, bp, onReference] = columns;\n return { offsets, node, start, bp, onReference, names };\n}\nfunction runAt(t, k) {\n const f = t.flags[k];\n const run = {\n start: t.start[k],\n bp: t.bp[k],\n onReference: (f & RUN_ON_REFERENCE) !== 0\n };\n if (f & RUN_GAP) {\n run.gap = true;\n const cause = GAP_CAUSES[f >> CAUSE_SHIFT & 3];\n if (cause) {\n run.cause = cause;\n }\n const chunk = t.chunks[t.chunk[k]];\n if (chunk) {\n run.chunk = chunk;\n }\n } else {\n run.referenceStart = Number.isNaN(t.referenceStart[k]) ? void 0 : t.referenceStart[k];\n }\n if (f & RUN_REVERSED) {\n run.reversed = true;\n }\n return run;\n}\nfunction visitsOf(v, row) {\n const out = [];\n for (let k = v.offsets[row]; k < v.offsets[row + 1]; k++) {\n out.push({\n node: v.names[v.node[k]],\n start: v.start[k],\n bp: v.bp[k],\n onReference: v.onReference[k] === 1\n });\n }\n return out;\n}\nfunction walkRowsOf(t, unit) {\n const rows = t.rows.map((meta, i) => {\n const runs = [];\n for (let k = t.offsets[i]; k < t.offsets[i + 1]; k++) {\n runs.push(runAt(t, k));\n }\n return {\n ...meta,\n runs,\n visits: t.visits && visitsOf(t.visits, i)\n };\n });\n return { origin: t.origin, unit, reference: rows[0], rows: rows.slice(1) };\n}\n\nexport {\n referenceWalkName,\n walkRowRuns,\n runAt,\n walkRowsOf\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["START_STOP_TAG", "END_STOP_TAG", "STOP_KINDS", "GAP_CAUSE_TEXT", "OUTSIDE_TEXT", "gapParts", "bp", "after", "before", "left", "right", "rest", "lead", "trail", "elsewhere", "s", "part", "stopAt", "table", "i", "ref", "stopOf", "kind", "trimmed", "chunk", "cut", "parseStopTag", "value", "kind", "fields", "bp", "trimmed", "chunk", "field", "at", "stopOf", "stopFields", "before", "after", "walkStopFields", "tags", "START_STOP_TAG", "END_STOP_TAG", "StopColumns", "stop", "STOP_KINDS", "chunk", "ref", "pLineName", "name", "start", "end", "tablePath", "w", "p", "walkName", "fields", "panSNFields", "stopFields", "stopAt", "namesByList", "lists", "names", "listCount", "pathNames", "starts", "list", "fill", "grouped", "i", "listed", "_", "out", "k", "tableNodeIds", "n", "l", "canonical", "claim", "node", "reversed", "stepCount", "s", "segment", "graphFromTables", "count", "declared", "drawnWalks", "traversals", "ids", "nodes", "ref", "edges", "neighbours", "pairList", "a", "b", "near", "j", "addPair", "edgeLists", "adjacency", "adjacentNode", "adjacentList", "listOf", "nameIndex", "crossedList", "crossedName", "crossings", "lastWalk", "paths", "anchorPaths", "totalSteps", "visitPath", "visitStart", "visitReversed", "visitOrder", "blocks", "pathSamples", "edgeNameIndex", "edgeNames", "head", "pathName", "visitName", "named", "panSNSample", "edgeNamed", "visitSample", "first", "nodeIds", "pos", "prev", "at", "listNames", "edge", "walked", "PathVisits", "RUN_ON_REFERENCE", "RUN_REVERSED", "RUN_GAP", "GAP_CAUSES", "CAUSE_SHIFT", "causeFlags", "cause", "referenceOf", "names", "referencePath", "rankZero", "referenceWalkName", "graph", "p", "pathOrigin", "n", "graphPieces", "index", "lengths", "indexOf", "id", "i", "node", "heads", "from", "to", "steps", "path", "tablePieces", "tables", "visits", "w", "kept", "tablePath", "tableNodeIds", "h", "sampleOf", "panSNSample", "labelOf", "Columns", "width", "row", "v", "order", "make", "columns", "m", "offsets", "at", "k", "column", "c", "float64", "walkRowRuns", "source", "region", "o", "all", "reference", "declared", "lengthOf", "nameOf", "startOf", "byStart", "a", "b", "pieceIds", "_", "referencePieces", "first", "others", "walks", "groupBy", "spanStart", "spanEnd", "reachesBefore", "reachesAfter", "cut", "piece", "pos", "s", "len", "flanked", "runs", "chunks", "chunkIndex", "chunkOf", "chunk2", "key", "stepStart", "rowOf", "pieces", "head", "ordered", "count", "length", "unplaced", "end", "previous", "partsAt", "start2", "gapParts", "onReference", "stepEnd", "partialSide", "i0", "i1", "flank", "near", "d", "forward", "after", "last2", "contigEnds", "lo", "hi", "backward", "complete", "flankFrom", "flankTo", "axisStart", "stop", "bestEnd", "bestStart", "inside", "contig", "panSNContig", "axis", "bp2", "offReferenceBp", "gapBp", "step", "last", "lastFlags", "lastRef", "runBp", "runRef", "runFlags", "parts", "part", "on", "placed", "back", "referenceRow", "rows", "r", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "out", "walkRowsOf", "unit", "meta"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var e="#";function l(t){return t.split(e)[0]}var r=new Set(["_gbwt_ref"]);function p(t){return r.has(t)}function c(t){let n=t.split(e);return n.length>=3?`${n[0]}${e}${n[1]}`:void 0}function u(t){let n=t.split(e);return n.length>=3?n.slice(2).join(e):n.length===2?n[1]:t}function N(t){let[n="",o="",...s]=t.split(e);return s.length>0?{sample:n,haplotype:+o,contig:s.join(e)}:void 0}function S(t){let n=t.split(e),o=n.length>=2?Number(n[1]):Number.NaN;return{sample:n[0],haplotype:Number.isFinite(o)?o:void 0}}function f(t,n){return n!==void 0&&(t===n||t.startsWith(n+e))}function a(t){return t.getConf("assemblyNameToPanSN")??{}}function h(t,n){return n===void 0?void 0:a(t)[n]??n}var i=new WeakMap;function m(t){let n=i.get(t);if(n===void 0){let o=a(t);n={};for(let s of new Set([...Object.keys(o),...t.getConf("assemblyNames")]))n[o[s]??s]=s;i.set(t,n)}return n}export{l as a,p as b,c,u as d,N as e,S as f,f as g,h,m as i};
|
|
2
|
-
//# sourceMappingURL=chunk-7HWHWPRW.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{b as vt}from"./chunk-MVVXRZXV.js";import{d as Rt,g as xe,h as zA}from"./chunk-7HWHWPRW.js";import{a as Gt,b as Lt}from"./chunk-OGQ6OQDN.js";import{g as Jt}from"./chunk-NDRLCGPC.js";var QA=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"],Mt=t=>QA!=null&&t in Object(QA)?QA[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 go=Mt("BaseFeatureDataAdapter");var _t=Mt("cachedSetup");var Io=QA&&QA.__esModule?QA.default:QA;var CA=class extends Error{constructor(e,A,n,i){super(e),this.regionTooLarge=!0,this.name="NodeLimitError",this.limit=A,this.windowBp=n,this.fitsBp=i}},kA="#";function be(t){return t.split(kA)[0]}function Se(t){let e=t.split(kA);return e.length>=3?e.slice(2).join(kA):e.length===2?e[1]:t}function FA(t){let e=t.split(kA);return e.length>=3?`${e[0]}${kA}${e[1]}`:void 0}function PA(t,e){return e!==void 0&&(t===e||t.startsWith(e+kA))}var Ut=t=>Number.parseFloat(t.toPrecision(3));function RA(t){let e=Ut(t/1e6);return e>=1?`${e.toLocaleString("en-US")}Mbp`:t>=1e3?`${Ut(t/1e3).toLocaleString("en-US")}Kbp`:`${Math.floor(t)}bp`}var M=t=>(t-(t&1))/2,V=t=>t&1?t-1:t+1;function vA(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,Q=s&1;e.id+=(s-Q)/2,A.push(e.id*2+Q),n=0,i=!1}else o===45?i=!0:n=n*10+(o-48)}return A}function jA(t){return t==="."?[]:t.split(",").map(Number)}function WA(t,e){return t>V(e)?[V(e),V(t)]:[t,e]}function Fe(t,e){let A=t.lastIndexOf(":");return{refName:t[3]==="Z"?t.slice(5,A):e,start:+t.slice(A+1)}}function Yt(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=Fe(r,A);else if(o==="nx")n.next=Fe(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:Fe(r,A)}}}return n}var Re=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=M(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(M(e)))===null||A===void 0?void 0:A[0]}nearest(e,A){var n;let i;for(let r of(n=this.occurrences.get(M(e)))!==null&&n!==void 0?n:[])(i===void 0||Math.abs(r-A)<=Math.abs(i-A))&&(i=r);return i}reach(e,A,n){var i;let r=this.handles[e]===A,o;for(let s of(i=this.occurrences.get(M(n)))!==null&&i!==void 0?i:[])r&&s>=e&&this.handles[s]===n?(o===void 0||s<o)&&(o=s):!r&&s<=e&&V(this.handles[s])===n&&(o===void 0||s>o)&&(o=s);return o}handleAt(e,A){return A?this.handles[e]:V(this.handles[e])}},P=class extends Error{},ve=(t,e)=>e?t.exit===-1?-1:V(t.exit):t.entry,Kt=(t,e)=>e?t.entry===-1?-1:V(t.entry):t.exit,VA=(t,e,A)=>e?V(t.interior[t.interior.length-1-A]):t.interior[A];function Ui(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 Q=s<t.length?t.charCodeAt(s):44;if(Q===44){let a=i?-n:n,g=o?r:a,d=g&1;A+=(g-d)/2,e.push(A,d,o?a:0),n=0,i=!1,o=!1}else Q===58?(r=i?-n:n,n=0,i=!1,o=!0):Q===45?i=!0:n=n*10+(Q-48)}}return e}function Tt(t,e,A,n,i,r){let o=n.indexOf(":"),s=A+ +(o<0?n:n.slice(0,o)),Q=o>=0,a=Q?+n.slice(o+1):0,g=N=>{let h=e[N];if(!h)throw new P(`route ${N} is not in the chunk`);return h},d=0;if(i.length>0&&ve(g(i[0]),i[1]===1)===-1){if(!r.route(i[0],i[1]===1))return;d=3}let f=A,I=t.first(f);if(I===void 0)throw new P("a walk row starts off its chunk");r.step(f);let c=(N,h)=>{let p=t.handles[I]===f,k=Q?I+(p?h:-h):t.reach(I,f,N);if(k===void 0||k<0||k>=t.handles.length)throw new P("a walk row runs off its chunk");k!==I&&r.stretch(I,k,p),I=k,f=t.handleAt(k,p)};for(;d<i.length;d+=3){let N=i[d],h=i[d+1]===1,p=g(N),k=ve(p,h);if(k===-1)throw new P("an open route after the first choice");if(c(k,i[d+2]),!r.route(N,h))return;let D=Kt(p,h);if(D===-1)return;if(f=D,I=t.nearest(f,I),I===void 0)throw new P("a route lands off its chunk");r.step(f)}if(c(s,a),f!==s)throw new P("a walk row misses its last handle")}function Yi(t,e,A,n,i){let r=new Int32Array(i),o=new Uint8Array(i),s=0,Q=a=>{if(s>=i)throw new P("a walk row decodes to more steps than it states");r[s]=M(a),o[s++]=a&1};if(Tt(t,e,+A[9],A[10],n,{step:Q,stretch(a,g,d){if(d)for(let f=a+1;f<=g;f++)Q(t.handles[f]);else for(let f=a-1;f>=g;f--)Q(V(t.handles[f]))},route(a,g){let d=e[a];for(let f=0;f<d.interior.length;f++)Q(VA(d,g,f));return!0}}),s!==i)throw new P(`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 Q=n[s];i.set(A[s],r.slice(o,o+Q)),o+=Q}}function qt(t,e,A=!1){var n,i,r;let o=new Re,s=new Map,Q=[],a={sequences:new Map,rows:[],nodes:new Map,ends:[],chunk:{path:o,routes:Q,walks:[],lengths:s}},g={id:0},d=t.filter(I=>I[3]==="ref").sort((I,c)=>+I[6]-+c[6]);for(let I of d){let c=I[0],N=vA(I[9],{id:0},[]),h=jA(I[10]),p=+I[6];o.add(N,h),A&&Ht(I,11,N.map(M),h,a.sequences);let k=p;for(let D=0;D<N.length;D++){let B=M(N[D]),m=h[D];s.set(B,m),a.nodes.has(B)||a.nodes.set(B,{refName:I[4],start:k,end:k+m,rank:0}),k+=m}a.ends.push({name:I[4],fragStart:+I[5],piece:+I[7],first:N[0],last:N.at(-1)}),(e===void 0||e(I[4]))&&a.rows.push({chunkStart:+I[1],name:I[4],fragStart:+I[5],hapOffset:p,piece:+I[7],n:N.length,steps:{ids:Int32Array.from(N,M),rev:Uint8Array.from(N,D=>D&1)},...Yt(I,11,c)})}for(let I of t)if(I[3]==="nodes"){let c=jA(I[4]),N=jA(I[5]),h=0;for(let p=0;p<c.length;p++)h+=c[p],c[p]=h,s.set(h,N[p]);A&&Ht(I,6,c,N,a.sequences)}else if(I[3]==="route"){let c=vA(I[4],g,[]),N=vA(I[5],g,[]),h=vA(I[6],g,[]);Q.push({entry:(n=c[0])!==null&&n!==void 0?n:-1,interior:N,exit:(i=h[0])!==null&&i!==void 0?i:-1})}let f=I=>{let c=Q[I];if(!c)throw new P(`route ${I} is not in the chunk`);return c};for(let I of t){if(I[3]!=="walk")continue;let c=Ui(I[11]);a.chunk.walks.push({cols:I,choices:c});let N=I[4],h=+I[9],p=I[10],k=p.indexOf(":"),D=h,B=h+ +(k<0?p:p.slice(0,k));if(c.length>0){let m=f(c[0]),u=c[1]===1;ve(m,u)===-1&&(D=VA(m,u,0));let E=c.length-3,C=f(c[E]),l=c[E+1]===1;Kt(C,l)===-1&&(B=VA(C,l,C.interior.length-1))}if(a.ends.push({name:N,fragStart:+I[5],piece:+I[7],first:D,last:B}),e===void 0||e(N)){let m=+I[8];for(let u=0;u<c.length;u+=3)for(let E of f(c[u]).interior){let C=M(E);if(!a.nodes.has(C)){let l=(r=s.get(C))!==null&&r!==void 0?r:0;a.nodes.set(C,{refName:N,start:0,end:l,rank:1})}}a.rows.push({chunkStart:+I[1],name:N,fragStart:+I[5],hapOffset:+I[6],piece:+I[7],n:m,steps:Yi(o,Q,I,c,m),...Yt(I,12,I[0])})}}return a}function Zt(t,e,A,n){let i=new Set;for(let o of e)t.some(({path:s})=>s.occurrences.has(o))||i.add(o);let r=new Map;for(let{path:o,routes:s,walks:Q,lengths:a}of t){let g=o.handles;for(let h=1;h<g.length;h++)e.has(M(g[h-1]))&&e.has(M(g[h]))&&n(...WA(g[h-1],g[h]));let d=new Uint8Array(s.length);for(let h=0;h<s.length;h++){let{entry:p,interior:k,exit:D}=s[h],B=!1,m=p;for(let u of k){let E=e.has(M(u));B||(B=i.has(M(u))),E&&m!==-1&&e.has(M(m))&&n(...WA(m,u)),m=u}m!==-1&&D!==-1&&e.has(M(m))&&e.has(M(D))&&n(...WA(m,D)),d[h]=B?1:0}let f=h=>{var p;return(p=a.get(M(h)))!==null&&p!==void 0?p:0},I=new Float64Array(s.length).fill(-1),c=h=>(I[h]<0&&(I[h]=s[h].interior.reduce((p,k)=>p+f(k),0)),I[h]),N=new Uint8Array(s.length);for(let{cols:h,choices:p}of Q){let k=0;for(let m=0;m<p.length;m+=3){let u=p[m];d[u]&&!N[u]&&k++}if(k===0)continue;let D=h[4],B=+h[6];Tt(o,s,+h[9],h[10],p,{step(m){B+=f(m)},stretch(m,u,E){B+=E?o.bp(u+1)-o.bp(m+1):o.bp(m)-o.bp(u)},route(m,u){if(!d[m]||N[m])return B+=c(m),!0;N[m]=1;let E=s[m];for(let C=0;C<E.interior.length;C++){let l=VA(E,u,C),w=M(l),y=f(l);if(i.has(w)){let x=r.get(w);(!x||D<x.refName||D===x.refName&&B<x.start)&&r.set(w,{refName:D,start:B,end:B+y,rank:1})}B+=y}return k--,k>0}})}}for(let[o,s]of r)A(o,s)}function Hi(t){let e=[];for(let A of t){if(A[3]!=="ref")continue;let n=vA(A[9],{id:0},[]),i=jA(A[10]),r=+A[6];for(let o=0;o<n.length;o++){let s=i[o];e.push({id:M(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(WA(r.last,o.first))}return A}var Xt=["elsewhere","break","end"];function Je(t,e){let A=new RegExp(`(?:^|\\t)${e}:i:(\\d+)`).exec(t);return A?+A[1]:void 0}function Ge(t){var e,A,n;let i={references:[],haplotypes:[]};for(let r of t){let[o,s=""]=r.split(" ");o==="#reference"?i.references.push(s):o==="#haplotype"?i.haplotypes.push(s):((e=i.format)!==null&&e!==void 0||(i.format=Je(r,"format")),(A=i.chunk)!==null&&A!==void 0||(i.chunk=Je(r,"chunk")),(n=i.maxNode)!==null&&n!==void 0||(i.maxNode=Je(r,"maxnode")))}return i}function Le(t,e){return t===void 0?1:Math.max(1,Math.ceil(t/e))}function $A(t,e,A=1){return Math.max(0,(Math.floor(t/e)-A)*e)}function jt(t,e){return t===void 0||t.length===0?void 0:A=>PA(A,e)||t.some(n=>PA(A,n))}function Me(t,e){var A;return jt(t,(A=FA(e))!==null&&A!==void 0?A:e)}function _e(t){let e=new Map;for(let n of t){let i=`${n.name} ${n.fragStart}`,r=e.get(i);r?r.push(n):e.set(i,[n])}let A=[];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(Ki(n.slice(i,r))),i=r)}return A}function Ki(t){let e=t.reduce((s,Q)=>s+Q.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}}function Ue(t,e,A,{contained:n=!1,context:i=0}={}){let r=C=>{var l;return((l=e.get(C))===null||l===void 0?void 0:l.onWindow)===!0},o=C=>{let l=e.get(C);return l?.rank===0?l:void 0},s=new Map,Q=C=>{C&&s.set(`${C.refName}:${C.start}`,C)},a=(C,l,w)=>{let{ids:y}=C,x=l+w;for(;x>=0&&x<y.length&&o(y[x])===void 0;)x+=w;if(x<0||x>=y.length)return Q(w<0?C.prev:C.next),x-w;let b=o(y[l]),S=o(y[x]);return S.refName!==A?x-w:x===l+w&&(S.start===b.end||S.end===b.start)?l:x},g=1/0,d=-1/0,f=[],I=C=>{let l=e.get(C);return l===void 0?0:l.end-l.start},c=C=>{let{ids:l}=C,w=0,y=-1,x=-1;for(let b=0;b<=l.length;b++){let S=b<l.length?e.get(l[b]):void 0;if(b===l.length||S?.rank===0&&!S.onWindow){if(y>=0){for(let R=0;y>w&&R<i;)R+=I(l[--y]);for(let R=0;x<b-1&&R<i;)R+=I(l[++x]);y===0&&Q(C.prev),x===l.length-1&&Q(C.next),f.push({run:C,first:y,last:x})}w=b+1,y=-1}else S?.onWindow&&(y<0&&(y=b),x=b)}},N=C=>{let{ids:l}=C,w=-1,y=-1;for(let x=0;x<l.length;x++)r(l[x])&&(w<0&&(w=x),y=x);if(w>=0){if(C.name!==A){w=a(C,w,-1),y=a(C,y,1);for(let x of[w,y]){let b=o(l[x]);b&&(g=Math.min(g,b.start),d=Math.max(d,b.end))}}f.push({run:C,first:w,last:y})}};for(let C of t)n?c(C):N(C);let h=C=>{let l=o(C);return r(C)||l?.refName===A&&l.end>g&&l.start<d},p=new Set;for(let[C,l]of e)l.onWindow&&p.add(C);for(let C of f){let{ids:l}=C.run;if(C.run.name===A){for(;C.first>0&&h(l[C.first-1]);)C.first--;for(;C.last<l.length-1&&h(l[C.last+1]);)C.last++}for(let w=C.first;w<=C.last;w++)p.add(l[w])}let k=(C,l,w)=>{let y=0;for(let x=l;x<w;x++)y+=I(C[x]);return y},D=new Map;for(let C of t){let l=`${C.name} ${C.fragStart}`,w=D.get(l);w?w.push(C):D.set(l,[C])}let B=new Map;for(let C of D.values())C.sort((l,w)=>l.firstPiece-w.firstPiece),C.forEach((l,w)=>{B.set(l,[C[w-1],C[w+1]])});let m=C=>C.hapOffset+k(C.ids,0,C.ids.length),u=(C,l,w)=>{var y;let x=w>0?{trimmed:w}:{},b=l?C.next:C.prev;if(b){let R=(y=B.get(C))===null||y===void 0?void 0:y[l?1:0];return R?{kind:"elsewhere",chunk:b,bp:l?R.hapOffset-m(C):C.hapOffset-m(R),...x}:{kind:"elsewhere",chunk:b,...x}}let S=l?C.nextRecord:C.prevRecord;return S?{kind:"break",...S,...x}:{kind:"end",...x}},E=[];for(let{run:C,first:l,last:w}of f){let{ids:y,rev:x}=C,b=l,S=w;for(;b>0&&p.has(y[b-1]);)b--;for(;S<y.length-1&&p.has(y[S+1]);)S++;let R=C.hapOffset+k(y,0,b),U=R+k(y,b,S+1);E.push({name:C.name,fragStart:C.fragStart,hapStart:R,hapEnd:U,ids:y.subarray(b,S+1),rev:x.subarray(b,S+1),before:u(C,!1,R-C.hapOffset),after:u(C,!0,m(C)-U)})}return{kept:p,fragments:E,open:[...s.values()]}}function Ye(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 Q=0;Q<o.length;Q++){let a=e.get(o[Q]);if(a?.onWindow){for(let g=s+1;s>=0&&g<Q;g++)n.add(o[g]);s=Q}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:Q}=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]=Q}}),n}var Ti=(t,e)=>t.rank===0&&(e.rank!==0||t.refName<e.refName||t.refName===e.refName&&t.start<e.start),JA=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&&!Ti(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,(u,E)=>{let C=this.nodes.get(u);C&&this.nodes.set(u,{...C,...E})},(u,E)=>{this.links.push(u,E)});let n=[];for(let u of e){let E=this.nodes.get(u);E&&n.push({...E,id:u})}n.sort((u,E)=>u.refName<E.refName?-1:u.refName>E.refName?1:u.start-E.start||u.id-E.id);let i=new Map,r=[],o=[],s=new Map,Q=new Int32Array(n.length),a=new Int32Array(n.length),g=new Float64Array(n.length),d=new Int32Array(n.length);n.forEach(({id:u,refName:E,start:C,end:l,rank:w},y)=>{i.set(u,y),r.push(String(u));let x=s.get(E);x===void 0&&(x=o.length,s.set(E,x),o.push(E)),Q[y]=l-C,a[y]=x,g[y]=C,d[y]=w});let f=u=>{let E=i.get(u);return E===void 0&&(E=r.length,i.set(u,E),r.push(String(u))),E},I=new Map;for(let u=0;u<this.links.length;u+=2){let E=this.links[u],C=this.links[u+1],l=Math.floor(E/2),w=Math.floor(C/2);e.has(l)&&e.has(w)&&I.set(`${l} ${E%2?"-":"+"} ${w} ${C%2?"-":"+"}`,u)}let c=[...I.keys()].sort(),N=new Int32Array(c.length),h=new Int32Array(c.length),p=new Uint8Array(c.length);c.forEach((u,E)=>{let C=I.get(u),l=this.links[C],w=this.links[C+1];N[E]=f(Math.floor(l/2)),h[E]=f(Math.floor(w/2)),p[E]=l%2|w%2<<1});let k=this.referenceFirst(A),D=new Int32Array(k.length+1);k.forEach(({ids:u},E)=>{D[E+1]=D[E]+u.length});let B=new Int32Array(D[k.length]),m=new Uint8Array(B.length);return k.forEach(({ids:u,rev:E},C)=>{let l=D[C];for(let w=0;w<u.length;w++)B[l+w]=f(u[w]);m.set(E,l)}),{nodes:{names:r,lengths:Q,refs:a,starts:g,ranks:d,refNames:o},links:{from:N,to:h,strands:p},walks:{names:k.map(u=>u.name),starts:Float64Array.from(k,u=>u.hapStart),ends:Float64Array.from(k,u=>u.hapEnd),offsets:D,steps:B,reversed:m,before:zt(k.map(u=>u.before)),after:zt(k.map(u=>u.after))}}}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))}},He={steps:"the step budget",bytes:"a byte budget of"};function Ke(t,e,A,n,i,r,o=He){var s;let Q=0,a=new Map,g=new Set;for(let h of t)Q+=h.n,a.set(h.chunkStart,((s=a.get(h.chunkStart))!==null&&s!==void 0?s:0)+h.n),g.add(h.name);let d=e*A;if(Q<=d)return;let f=n.end-n.start,I=0,c=0;for(let h of[...a.keys()].sort((p,k)=>p-k)){if(I+=a.get(h),I>d)break;c=Math.max(c,h+i-n.start)}let N=!r&&g.size>2&&2*Q/g.size<=d;return new CA(c>0?`Zoom in to about ${RA(c)}${N?", or choose fewer haplotypes,":""} to see the graph`:`Too many haplotype steps here to draw ${r?"these haplotypes":"every haplotype"} (${I.toLocaleString()} steps read, over ${A} \xD7 ${o.steps} of ${e.toLocaleString()}); choose fewer haplotypes`,d,f,Math.max(c,1))}function Te(t,e,A,n){let i=t.reduce((r,o)=>r+o.ids.length,0);return Wt(i,e,A,n)}function Ae(t,e,A,n,i=A.end){return Wt(t,e,A,n,i)}function Wt(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 CA(`Zoom in to about ${RA(s)}${n?"":", or choose fewer haplotypes,"} to see the graph`,e,r,s)}async function qe(t,e,A,n,i=He){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 Q=A.end-A.start;return new CA(o>0?`Zoom in to about ${RA(o)} to see the graph`:`Too much graph here to fetch (${Pt(s??r)} against ${i.bytes} ${Pt(e)})`,e,Q,Math.max(o,1))}var Pt=t=>`${(t/1e6).toFixed(1)} MB`;function Ze(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 qi(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 Vt(t){return{id:t.slice(0,-1),strand:t.slice(-1)}}function Oe(t){var e,A;let n=t.split(" "),i=Vt(n[3]),r=Vt(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 Xe(t){return`${t.source}${t.sourceStrand}${t.target}${t.targetStrand}`}function te(t,e,A){e.set(Xe(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 An(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)&&te(i,r,o);for(let o of e)i.has(o.source)&&i.has(o.target)&&r.set(Xe(o),o);return{segments:i,links:r}}function en(t,e,A){let n=i=>i.refName!==A.refName||i.end<=A.start||i.start>=A.end;return[...$t(t.filter(i=>i.rank>0),i=>e.has(i.id),A.end-A.start),...$t(t.filter(i=>i.rank===0&&n(i)),()=>!0,0)]}function $t(t,e,A){let n=[...t].sort((r,o)=>ee(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 tn(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 Zi=/^[A-Za-z][A-Za-z0-9]:[AifZJHB]:/;function Oi(t){let{id:e,refName:A,start:n,end:i,rank:r,tags:o}=t,s=o.split(" ").filter(a=>Zi.test(a)),Q=s.length===0?"":` ${s.join(" ")}`;return`S ${e} * LN:i:${i-n} SN:Z:${A} SO:i:${n} SR:i:${r}${Q}`}function Xi(t){let{source:e,sourceStrand:A,target:n,targetStrand:i}=t;return`L ${e} ${A} ${n} ${i} 0M`}function ee(t,e){return t<e?-1:t>e?1:0}function ne(t,e){let A=[...t.values()].sort((i,r)=>ee(i.refName,r.refName)||i.start-r.start||ee(i.id,r.id)),n=[...e.keys()].sort((i,r)=>ee(i,r));return["H VN:Z:1.0",...A.map(i=>Oi(i)),...n.map(i=>Xi(e.get(i)))].join(`
|
|
2
|
-
`)}function ze(t,e){return`${t} ${e}`}function GA(t){let e=new Map;for(let A of t){e.set(A,A);let n=be(A);if(n!==A){let i=Se(A);e.set(ze(n,i),A);let r=FA(A);r!==void 0&&e.set(ze(r,i),A)}}return e}function LA(t,e,A){var n;return(n=t.get(ze(e,A)))!==null&&n!==void 0?n:t.get(A)}var zi=8,Pi=3,ji=4,Wi=1e3,Vi={stepBudget:4e6,byteBudget:8e6},ie=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 nn(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 Pe=class{constructor(e){this.walks=e}header(e={}){if(!this.headerRead){let A=this.walks.getHeaderLines().then(n=>{var i,r;let o=Ge(n);if(o.format!==4)throw new ie(`This walk file is format ${(i=o.format)!==null&&i!==void 0?i:1}; @jbrowse/graph-walks reads format 4, so rebuild it with gfa-to-tabix 1.2 or later`);let s=(r=o.chunk)!==null&&r!==void 0?r:65536;return{...o,chunk:s,lookback:Le(o.maxNode,s)}});A.catch(()=>{this.headerRead===A&&(this.headerRead=void 0)}),this.headerRead=A}return nn(this.headerRead,e.signal)}referenceSequences(e={}){return this.walks.getReferenceSequenceNames(e)}async sequenceFor(e,A,n={}){if(!this.lookupRead){let r=this.walks.getReferenceSequenceNames().then(GA);r.catch(()=>{this.lookupRead===r&&(this.lookupRead=void 0)}),this.lookupRead=r}let i=await nn(this.lookupRead,n.signal);return LA(i,e,A)}async queryStart(e,A={}){let{chunk:n,lookback:i}=await this.header(A);return $A(e,n,i)}async cut(e,A,n={}){var i,r;let{signal:o,keep:s,context:Q=Wi,stepBudget:a=1/0,byteBudget:g=1/0,links:d=!0,contained:f=!1,nodeLimit:I=1/0}=n,{chunk:c,lookback:N}=await this.header({signal:o}),h=$A(A.start,c,N),p=(i=this.walks.bytesForRegions)===null||i===void 0?void 0:i.bind(this.walks),k=Number.isFinite(g)&&p!==void 0,D=async v=>k?p(v.map(H=>({refName:e,...H})),{signal:o}):0,B=k?await qe(async v=>(iA(e,h,v),D([{start:h,end:v}])),g,A,c,n.budgetNames):void 0;if(B)throw B;let m=new AbortController,u=()=>{m.abort(o?.reason)};o?.throwIfAborted(),o?.addEventListener("abort",u,{once:!0});let E=[],C,l=new JA({refName:e,start:A.start,end:A.end,context:Q,sequences:n.sequences}),w=new Set,y=[],x=new Set,b=s!==void 0,S=(v,H)=>{if(w.has(v))return;w.add(v);let J=qt(H,s,n.sequences);E.push(...J.rows);for(let[Y,L]of J.nodes)l.placeNode(Y,L);if(l.addSequences(J.sequences),l.addChunk(J.chunk),y.push(...J.ends),Number.isFinite(I)){Ye(J,l.nodes,f,x),x.size>I&&(x.clear(),Ye({nodes:l.nodes,rows:E},l.nodes,f,x));let Y=Ae(x.size,I,A,b,v+c);if(Y)throw Y}},R=async(v,H)=>{iA(e,v,H);let J,Y=[];if(await this.walks.getLines(e,v,H,{signal:m.signal,lineCallback:L=>{let O=L.split(" "),_=+O[1];_!==J&&(J!==void 0&&S(J,Y),J=_,Y=[]),Y.push(O)}}),J!==void 0&&S(J,Y),d)for(let[L,O]of Ot(y))l.addLinkEnds(L,O)};try{await R(h,A.end);let v=Ke(E,a,zi,A,c,b,n.budgetNames);if(v)throw v;let H=h,J=Math.floor((A.end-1)/c)*c,Y=ji*c,[L,O]=f?[Math.floor((A.start-Q)/c)*c,Math.floor((A.end+Q-1)/c)*c]:[H-Y,J+Y],_=()=>Ue(_e(E),l.nodes,e,{contained:f,context:Q});C=_();let IA=await D([{start:h,end:A.end}]);for(let K=0;K<Pi;K++){let wA=C.open.filter(X=>X.refName===e&&X.start>=L&&X.start<=O).map(X=>X.start),pA=[{start:Math.min(H,...wA),end:H},{start:J+c,end:Math.max(J,...wA)+1}].filter(X=>X.end>X.start);if(pA.length===0||(IA+=await D(pA),IA>g))break;H=Math.min(H,...wA),J=Math.max(J,...wA),await Promise.all(pA.map(({start:X,end:ZA})=>R(X,ZA))),C=_()}}catch(v){throw m.abort(),v}finally{o?.removeEventListener("abort",u)}let U=(r=Te(C.fragments,a,A,b))!==null&&r!==void 0?r:Ae(C.kept.size,I,A,b);if(U)throw U;return{graph:l,...C}}async cutRegion(e,A={}){var n;let{haplotypes:i,referenceSample:r,...o}=A,{signal:s}=A,Q=await this.header({signal:s}),a=(n=r??Q.references[0])!==null&&n!==void 0?n:"",g=await this.sequenceFor(a,e.refName,{signal:s});if(g===void 0){let c=await this.referenceSequences({signal:s});throw new Error(`The walk file has no sequence ${e.refName} on ${a}; it holds ${c.slice(0,5).join(", ")}${c.length>5?", \u2026":""}`)}let{graph:d,kept:f,fragments:I}=await this.cut(g,e,{...o,keep:Me(i,g)});return{tables:d.tables(f,I),refName:g,sample:a}}};function rn(t){return t.filter(e=>e.rank>0)}function on(t,e,A,n,i){return iA(e,A,n),t.getLines(e,A,n,i)}async function je(t,e,A){let n=[];return await on(t,e.refName,e.start,e.end,{signal:A,lineCallback:i=>{n.push(Oe(i))}}),n}async function $i(t,e,{hops:A=0,signal:n}={}){let i=new Map,r=new Map,o={anchored:!1};if(await on(t.segments,e.refName,e.start,e.end,{signal:n,lineCallback:a=>{let g=Ze(a);o.anchored||(o.anchored=g.anchored),i.set(g.segment.id,g.segment)}}),o.anchored){let a=An(i,await je(t.links,e,n),e);return ne(a.segments,a.links)}let s=async a=>(await je(t.links,a,n)).flatMap(g=>te(i,r,g)),Q=rn(await s(e));for(let a=0;a<A;a++){let g=await Promise.all(Q.map(s));Q=rn(g.flat())}if(A>0){let a=en([...i.values()],new Set(Q.map(d=>d.id)),e),g=await Promise.all(a.map(d=>je(t.links,d,n)));for(let d of tn(g.flat(),i,a))te(i,r,d)}return ne(i,r)}async function _o(t,e,A,n,i){return iA(e,A,n),t.getLines(e,A,n,i)}async function sn(t,e,A){for(let{refName:n,start:i,end:r}of e)iA(n,i,r);return t.bytesForRegions(e,A)}var We=0;var Ve=2;var MA=4;var rA=0,_A=1,an=2;var gn=-5;function Ar(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function In(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)Ar(A,n)&&(t[n]=A[n])}}return t}function oe(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)}var UA={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)}},YA={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)}},mA=()=>{let t=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return mA=()=>t,t},j=(t,e,A,n,i)=>(j=mA()?UA.arraySet:YA.arraySet,j(t,e,A,n,i)),re=t=>(re=mA()?UA.flattenChunks:YA.flattenChunks,re(t)),$=t=>($=mA()?UA.Buf8:YA.Buf8,$(t)),oA=t=>(oA=mA()?UA.Buf16:YA.Buf16,oA(t)),cA=t=>(cA=mA()?UA.Buf32:YA.Buf32,cA(t));var Qn=function(){let t=!0;try{String.fromCharCode.apply(null,[0])}catch{t=!1}return Qn=()=>t,t},Cn=function(){let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{t=!1}return Cn=()=>t,t},$e=function(t){for(var e=$(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,$e=n=>e[n],e[t]};function At(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 er(t,e){if(e<65534&&(t.subarray&&Cn()||!t.subarray&&Qn()))return String.fromCharCode.apply(null,oe(t,e));for(var A="",n=0;n<e;n++)A+=String.fromCharCode(t[n]);return A}function cn(t){for(var e=new Uint8Array(t.length),A=0,n=e.length;A<n;A++)e[A]=t.charCodeAt(A);return e}function Bn(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=$e(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 er(s,n)}function En(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+$e(t[A])>e?A:e}function et(){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 HA(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 tr(){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 fn=function(){let t=tr();return fn=()=>t,t};function q(t,e,A,n){var i=fn(),r=n+A;t^=-1;for(var o=n;o<r;o++)t=t>>>8^i[(t^e[o])&255];return t^-1}var se=30,nr=12;function tt(t,e){var A,n,i,r,o,s,Q,a,g,d,f,I,c,N,h,p,k,D,B,m,u,E,C,l,w;A=t.state,n=t.next_in,l=t.input,i=n+(t.avail_in-5),r=t.next_out,w=t.output,o=r-(e-t.avail_out),s=r+(t.avail_out-257),Q=A.dmax,a=A.wsize,g=A.whave,d=A.wnext,f=A.window,I=A.hold,c=A.bits,N=A.lencode,h=A.distcode,p=(1<<A.lenbits)-1,k=(1<<A.distbits)-1;A:do{c<15&&(I+=l[n++]<<c,c+=8,I+=l[n++]<<c,c+=8),D=N[I&p];e:for(;;){if(B=D>>>24,I>>>=B,c-=B,B=D>>>16&255,B===0)w[r++]=D&65535;else if(B&16){m=D&65535,B&=15,B&&(c<B&&(I+=l[n++]<<c,c+=8),m+=I&(1<<B)-1,I>>>=B,c-=B),c<15&&(I+=l[n++]<<c,c+=8,I+=l[n++]<<c,c+=8),D=h[I&k];t:for(;;){if(B=D>>>24,I>>>=B,c-=B,B=D>>>16&255,B&16){if(u=D&65535,B&=15,c<B&&(I+=l[n++]<<c,c+=8,c<B&&(I+=l[n++]<<c,c+=8)),u+=I&(1<<B)-1,u>Q){t.msg="invalid distance too far back",A.mode=se;break A}if(I>>>=B,c-=B,B=r-o,u>B){if(B=u-B,B>g&&A.sane){t.msg="invalid distance too far back",A.mode=se;break A}if(E=0,C=f,d===0){if(E+=a-B,B<m){m-=B;do w[r++]=f[E++];while(--B);E=r-u,C=w}}else if(d<B){if(E+=a+d-B,B-=d,B<m){m-=B;do w[r++]=f[E++];while(--B);if(E=0,d<m){B=d,m-=B;do w[r++]=f[E++];while(--B);E=r-u,C=w}}}else if(E+=d-B,B<m){m-=B;do w[r++]=f[E++];while(--B);E=r-u,C=w}for(;m>2;)w[r++]=C[E++],w[r++]=C[E++],w[r++]=C[E++],m-=3;m&&(w[r++]=C[E++],m>1&&(w[r++]=C[E++]))}else{E=r-u;do w[r++]=w[E++],w[r++]=w[E++],w[r++]=w[E++],m-=3;while(m>2);m&&(w[r++]=w[E++],m>1&&(w[r++]=w[E++]))}}else if((B&64)===0){D=h[(D&65535)+(I&(1<<B)-1)];continue t}else{t.msg="invalid distance code",A.mode=se;break A}break}}else if((B&64)===0){D=N[(D&65535)+(I&(1<<B)-1)];continue e}else if(B&32){A.mode=nr;break A}else{t.msg="invalid literal/length code",A.mode=se;break A}break}}while(n<i&&r<s);m=c>>3,n-=m,c-=m<<3,I&=(1<<c)-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=I,A.bits=c}var DA=15,ln=852,hn=592,dn=0,nt=1,un=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],rr=[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],or=[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],sr=[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 BA(t,e,A,n,i,r,o,s){var Q=s.bits,a=0,g=0,d=0,f=0,I=0,c=0,N=0,h=0,p=0,k=0,D,B,m,u,E,C=null,l=0,w,y=oA(DA+1),x=oA(DA+1),b=null,S=0,R,U,v;for(a=0;a<=DA;a++)y[a]=0;for(g=0;g<n;g++)y[e[A+g]]++;for(I=Q,f=DA;f>=1&&y[f]===0;f--);if(I>f&&(I=f),f===0)return i[r++]=1<<24|64<<16|0,i[r++]=1<<24|64<<16|0,s.bits=1,0;for(d=1;d<f&&y[d]===0;d++);for(I<d&&(I=d),h=1,a=1;a<=DA;a++)if(h<<=1,h-=y[a],h<0)return-1;if(h>0&&(t===dn||f!==1))return-1;for(x[1]=0,a=1;a<DA;a++)x[a+1]=x[a]+y[a];for(g=0;g<n;g++)e[A+g]!==0&&(o[x[e[A+g]]++]=g);if(t===dn?(C=b=o,w=19):t===nt?(C=ir,l-=257,b=rr,S-=257,w=256):(C=or,b=sr,w=-1),k=0,g=0,a=d,E=r,c=I,N=0,m=-1,p=1<<I,u=p-1,t===nt&&p>ln||t===un&&p>hn)return 1;for(;;){R=a-N,o[g]<w?(U=0,v=o[g]):o[g]>w?(U=b[S+o[g]],v=C[l+o[g]]):(U=96,v=0),D=1<<a-N,B=1<<c,d=B;do B-=D,i[E+(k>>N)+B]=R<<24|U<<16|v|0;while(B!==0);for(D=1<<a-1;k&D;)D>>=1;if(D!==0?(k&=D-1,k+=D):k=0,g++,--y[a]===0){if(a===f)break;a=e[A+o[g]]}if(a>I&&(k&u)!==m){for(N===0&&(N=I),E+=d,c=a-N,h=1<<c;c+N<f&&(h-=y[c+N],!(h<=0));)c++,h<<=1;if(p+=1<<c,t===nt&&p>ln||t===un&&p>hn)return 1;m=k&u,i[m]=I<<24|c<<16|E-r|0}}return k!==0&&(i[E+k]=a-N<<24|64<<16|0),s.bits=I,0}var ar=0,On=1,Xn=2,wn=4,gr=5,ae=6,EA=0,Ir=1,Qr=2,Z=-2,zn=-3,gt=-4,Cr=-5,pn=8,Pn=1,kn=2,mn=3,Dn=4,Nn=5,yn=6,xn=7,bn=8,Sn=9,Fn=10,Qe=11,AA=12,it=13,Rn=14,rt=15,vn=16,Jn=17,Gn=18,Ln=19,ge=20,Ie=21,Mn=22,_n=23,Un=24,Yn=25,Hn=26,ot=27,Kn=28,Tn=29,G=30,It=31,cr=32,Br=852,Er=592;function qn(t){return(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24)}function fr(){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=oA(320),this.work=oA(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function lr(t){var e;return!t||!t.state?Z:(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=Pn,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=cA(Br),e.distcode=e.distdyn=cA(Er),e.sane=1,e.back=-1,EA)}function hr(t){var e;return!t||!t.state?Z:(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,lr(t))}function dr(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))?Z:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=A,n.wbits=e,hr(t))}function jn(t,e){var A,n;return t?(n=new fr,t.state=n,n.window=null,A=dr(t,e),A!==EA&&(t.state=null),A):Z}var Zn=!0,st,at;function ur(t){if(Zn){var e;for(st=cA(512),at=cA(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(BA(On,t.lens,0,288,st,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;BA(Xn,t.lens,0,32,at,0,t.work,{bits:5}),Zn=!1}t.lencode=st,t.lenbits=9,t.distcode=at,t.distbits=5}function Wn(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=$(r.wsize)),n>=r.wsize?(j(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),j(r.window,e,A-n,i,r.wnext),n-=i,n?(j(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 Vn(t,e){var A,n,i,r,o,s,Q,a,g,d,f,I,c,N,h=0,p,k,D,B,m,u,E,C,l=$(4),w,y,x=[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 Z;A=t.state,A.mode===AA&&(A.mode=it),o=t.next_out,i=t.output,Q=t.avail_out,r=t.next_in,n=t.input,s=t.avail_in,a=A.hold,g=A.bits,d=s,f=Q,C=EA;A:for(;;)switch(A.mode){case Pn:if(A.wrap===0){A.mode=it;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,l[0]=a&255,l[1]=a>>>8&255,A.check=q(A.check,l,2,0),a=0,g=0,A.mode=kn;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=G;break}if((a&15)!==pn){t.msg="unknown compression method",A.mode=G;break}if(a>>>=4,g-=4,E=(a&15)+8,A.wbits===0)A.wbits=E;else if(E>A.wbits){t.msg="invalid window size",A.mode=G;break}A.dmax=1<<E,t.adler=A.check=1,A.mode=a&512?Fn:AA,a=0,g=0;break;case kn:for(;g<16;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(A.flags=a,(A.flags&255)!==pn){t.msg="unknown compression method",A.mode=G;break}if(A.flags&57344){t.msg="unknown header flags set",A.mode=G;break}A.head&&(A.head.text=a>>8&1),A.flags&512&&(l[0]=a&255,l[1]=a>>>8&255,A.check=q(A.check,l,2,0)),a=0,g=0,A.mode=mn;case mn:for(;g<32;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.head&&(A.head.time=a),A.flags&512&&(l[0]=a&255,l[1]=a>>>8&255,l[2]=a>>>16&255,l[3]=a>>>24&255,A.check=q(A.check,l,4,0)),a=0,g=0,A.mode=Dn;case Dn: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&&(l[0]=a&255,l[1]=a>>>8&255,A.check=q(A.check,l,2,0)),a=0,g=0,A.mode=Nn;case Nn: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&&(l[0]=a&255,l[1]=a>>>8&255,A.check=q(A.check,l,2,0)),a=0,g=0}else A.head&&(A.head.extra=null);A.mode=yn;case yn:if(A.flags&1024&&(I=A.length,I>s&&(I=s),I&&(A.head&&(E=A.head.extra_len-A.length,A.head.extra||(A.head.extra=new Array(A.head.extra_len)),j(A.head.extra,n,r,I,E)),A.flags&512&&(A.check=q(A.check,n,I,r)),s-=I,r+=I,A.length-=I),A.length))break A;A.length=0,A.mode=xn;case xn:if(A.flags&2048){if(s===0)break A;I=0;do E=n[r+I++],A.head&&E&&A.length<65536&&(A.head.name+=String.fromCharCode(E));while(E&&I<s);if(A.flags&512&&(A.check=q(A.check,n,I,r)),s-=I,r+=I,E)break A}else A.head&&(A.head.name=null);A.length=0,A.mode=bn;case bn:if(A.flags&4096){if(s===0)break A;I=0;do E=n[r+I++],A.head&&E&&A.length<65536&&(A.head.comment+=String.fromCharCode(E));while(E&&I<s);if(A.flags&512&&(A.check=q(A.check,n,I,r)),s-=I,r+=I,E)break A}else A.head&&(A.head.comment=null);A.mode=Sn;case Sn: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=G;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=AA;break;case Fn:for(;g<32;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}t.adler=A.check=qn(a),a=0,g=0,A.mode=Qe;case Qe:if(A.havedict===0)return t.next_out=o,t.avail_out=Q,t.next_in=r,t.avail_in=s,A.hold=a,A.bits=g,Qr;t.adler=A.check=1,A.mode=AA;case AA:if(e===gr||e===ae)break A;case it:if(A.last){a>>>=g&7,g-=g&7,A.mode=ot;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=Rn;break;case 1:if(ur(A),A.mode=ge,e===ae){a>>>=2,g-=2;break A}break;case 2:A.mode=Jn;break;case 3:t.msg="invalid block type",A.mode=G}a>>>=2,g-=2;break;case Rn: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=G;break}if(A.length=a&65535,a=0,g=0,A.mode=rt,e===ae)break A;case rt:A.mode=vn;case vn:if(I=A.length,I){if(I>s&&(I=s),I>Q&&(I=Q),I===0)break A;j(i,n,r,I,o),s-=I,r+=I,Q-=I,o+=I,A.length-=I;break}A.mode=AA;break;case Jn: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=G;break}A.have=0,A.mode=Gn;case Gn:for(;A.have<A.ncode;){for(;g<3;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.lens[x[A.have++]]=a&7,a>>>=3,g-=3}for(;A.have<19;)A.lens[x[A.have++]]=0;if(A.lencode=A.lendyn,A.lenbits=7,w={bits:A.lenbits},C=BA(ar,A.lens,0,19,A.lencode,0,A.work,w),A.lenbits=w.bits,C){t.msg="invalid code lengths set",A.mode=G;break}A.have=0,A.mode=Ln;case Ln:for(;A.have<A.nlen+A.ndist;){for(;h=A.lencode[a&(1<<A.lenbits)-1],p=h>>>24,k=h>>>16&255,D=h&65535,!(p<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(D<16)a>>>=p,g-=p,A.lens[A.have++]=D;else{if(D===16){for(y=p+2;g<y;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(a>>>=p,g-=p,A.have===0){t.msg="invalid bit length repeat",A.mode=G;break}E=A.lens[A.have-1],I=3+(a&3),a>>>=2,g-=2}else if(D===17){for(y=p+3;g<y;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}a>>>=p,g-=p,E=0,I=3+(a&7),a>>>=3,g-=3}else{for(y=p+7;g<y;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}a>>>=p,g-=p,E=0,I=11+(a&127),a>>>=7,g-=7}if(A.have+I>A.nlen+A.ndist){t.msg="invalid bit length repeat",A.mode=G;break}for(;I--;)A.lens[A.have++]=E}}if(A.mode===G)break;if(A.lens[256]===0){t.msg="invalid code -- missing end-of-block",A.mode=G;break}if(A.lenbits=9,w={bits:A.lenbits},C=BA(On,A.lens,0,A.nlen,A.lencode,0,A.work,w),A.lenbits=w.bits,C){t.msg="invalid literal/lengths set",A.mode=G;break}if(A.distbits=6,A.distcode=A.distdyn,w={bits:A.distbits},C=BA(Xn,A.lens,A.nlen,A.ndist,A.distcode,0,A.work,w),A.distbits=w.bits,C){t.msg="invalid distances set",A.mode=G;break}if(A.mode=ge,e===ae)break A;case ge:A.mode=Ie;case Ie:if(s>=6&&Q>=258){t.next_out=o,t.avail_out=Q,t.next_in=r,t.avail_in=s,A.hold=a,A.bits=g,tt(t,f),o=t.next_out,i=t.output,Q=t.avail_out,r=t.next_in,n=t.input,s=t.avail_in,a=A.hold,g=A.bits,A.mode===AA&&(A.back=-1);break}for(A.back=0;h=A.lencode[a&(1<<A.lenbits)-1],p=h>>>24,k=h>>>16&255,D=h&65535,!(p<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(k&&(k&240)===0){for(B=p,m=k,u=D;h=A.lencode[u+((a&(1<<B+m)-1)>>B)],p=h>>>24,k=h>>>16&255,D=h&65535,!(B+p<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}a>>>=B,g-=B,A.back+=B}if(a>>>=p,g-=p,A.back+=p,A.length=D,k===0){A.mode=Hn;break}if(k&32){A.back=-1,A.mode=AA;break}if(k&64){t.msg="invalid literal/length code",A.mode=G;break}A.extra=k&15,A.mode=Mn;case Mn:if(A.extra){for(y=A.extra;g<y;){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=_n;case _n:for(;h=A.distcode[a&(1<<A.distbits)-1],p=h>>>24,k=h>>>16&255,D=h&65535,!(p<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if((k&240)===0){for(B=p,m=k,u=D;h=A.distcode[u+((a&(1<<B+m)-1)>>B)],p=h>>>24,k=h>>>16&255,D=h&65535,!(B+p<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}a>>>=B,g-=B,A.back+=B}if(a>>>=p,g-=p,A.back+=p,k&64){t.msg="invalid distance code",A.mode=G;break}A.offset=D,A.extra=k&15,A.mode=Un;case Un:if(A.extra){for(y=A.extra;g<y;){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=G;break}A.mode=Yn;case Yn:if(Q===0)break A;if(I=f-Q,A.offset>I){if(I=A.offset-I,I>A.whave&&A.sane){t.msg="invalid distance too far back",A.mode=G;break}I>A.wnext?(I-=A.wnext,c=A.wsize-I):c=A.wnext-I,I>A.length&&(I=A.length),N=A.window}else N=i,c=o-A.offset,I=A.length;I>Q&&(I=Q),Q-=I,A.length-=I;do i[o++]=N[c++];while(--I);A.length===0&&(A.mode=Ie);break;case Hn:if(Q===0)break A;i[o++]=A.length,Q--,A.mode=Ie;break;case ot:if(A.wrap){for(;g<32;){if(s===0)break A;s--,a|=n[r++]<<g,g+=8}if(f-=Q,t.total_out+=f,A.total+=f,f&&(t.adler=A.check=A.flags?q(A.check,i,f,o-f):HA(A.check,i,f,o-f)),f=Q,(A.flags?a:qn(a))!==A.check){t.msg="incorrect data check",A.mode=G;break}a=0,g=0}A.mode=Kn;case Kn: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=G;break}a=0,g=0}A.mode=Tn;case Tn:C=Ir;break A;case G:C=zn;break A;case It:return gt;case cr:default:return Z}return t.next_out=o,t.avail_out=Q,t.next_in=r,t.avail_in=s,A.hold=a,A.bits=g,(A.wsize||f!==t.avail_out&&A.mode<G&&(A.mode<ot||e!==wn))&&Wn(t,t.output,t.next_out,f-t.avail_out)?(A.mode=It,gt):(d-=t.avail_in,f-=t.avail_out,t.total_in+=d,t.total_out+=f,A.total+=f,A.wrap&&f&&(t.adler=A.check=A.flags?q(A.check,i,f,t.next_out-f):HA(A.check,i,f,t.next_out-f)),t.data_type=A.bits+(A.last?64:0)+(A.mode===AA?128:0)+(A.mode===ge||A.mode===rt?256:0),(d===0&&f===0||e===wn)&&C===EA&&(C=Cr),C)}function $n(t){if(!t||!t.state)return Z;var e=t.state;return e.window&&(e.window=null),t.state=null,EA}function Ai(t,e){var A;return!t||!t.state||(A=t.state,(A.wrap&2)===0)?Z:(A.head=e,e.done=!1,EA)}function Qt(t,e){var A=e.length,n,i,r;return!t||!t.state||(n=t.state,n.wrap!==0&&n.mode!==Qe)?Z:n.mode===Qe&&(i=1,i=HA(i,e,A,0),i!==n.check)?zn:(r=Wn(t,e,A,A),r?(n.mode=It,gt):(n.havedict=1,EA))}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 Ct(){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 ct=Object.prototype.toString,Bt=class t{constructor(e){if(!(this instanceof t))return new t(e);this.options=In({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 Ct,this.strm.avail_out=0;var n=jn(this.strm,A.windowBits);if(n!==rA)throw new Error(Ce[n]);if(this.header=new et,Ai(this.strm,this.header),A.dictionary&&(typeof A.dictionary=="string"?A.dictionary=At(A.dictionary):ct.call(A.dictionary)==="[object ArrayBuffer]"&&(A.dictionary=new Uint8Array(A.dictionary)),A.raw&&(n=Qt(this.strm,A.dictionary),n!==rA)))throw new Error(Ce[n])}push(e,A){var n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,o,s,Q,a,g,d,f=!1;if(this.ended)return!1;s=A===~~A?A:A===!0?MA:We,typeof e=="string"?n.input=cn(e):ct.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=$(i),n.next_out=0,n.avail_out=i),o=Vn(n,We),o===an&&r&&(typeof r=="string"?d=At(r):ct.call(r)==="[object ArrayBuffer]"?d=new Uint8Array(r):d=r,o=Qt(this.strm,d)),o===gn&&f===!0&&(o=rA,f=!1),o!==_A&&o!==rA)return this.onEnd(o),this.ended=!0,!1;n.next_out&&(n.avail_out===0||o===_A||n.avail_in===0&&(s===MA||s===Ve))&&(this.options.to==="string"?(Q=En(n.output,n.next_out),a=n.next_out-Q,g=Bn(n.output,Q),n.next_out=a,n.avail_out=i-a,a&&j(n.output,n.output,Q,a,0),this.onData(g)):this.onData(oe(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(f=!0)}while((n.avail_in>0||n.avail_out===0)&&o!==_A);return o===_A&&(s=MA),s===MA?(o=$n(this.strm),this.onEnd(o),this.ended=!0,o===rA):(s===Ve&&(this.onEnd(rA),n.avail_out=0),!0)}onData(e){this.chunks.push(e)}onEnd(e){e===rA&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=re(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}};function wr(t,e){var A=new Bt(e);if(A.push(t,!0),A.err)throw A.msg||Ce[A.err];return A.result}var ei=wr;function Et(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,Q=(t[s+4]|t[s+5]<<8|t[s+6]<<16|t[s+7]<<24)>>>0;if(n.push({inputOffset:i,compressedSize:o,decompressedSize:Q,filePosition:r}),r>=A)break;i+=o,r+=o}return n}function ti(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 sA={};sA.d=(t,e)=>{if(Array.isArray(e))for(var A=0;A<e.length;){var n=e[A++],i=e[A++];sA.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)sA.o(e,n)&&!sA.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})};sA.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);sA.r=t=>{Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var lt={};sA.r(lt);sA.d(lt,{ChunkSliceResult:()=>yA,__wbg_Error_92b29b0548f8b746:()=>kr,__wbg___wbindgen_throw_344f42d3211c4765:()=>mr,__wbg_set_wasm:()=>Qi,decompress_all:()=>ri,decompress_chunk_slice:()=>oi});var pr="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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",yA=class t{static __wrap(e){let A=Object.create(t.prototype);return A.__wbg_ptr=e,ni.register(A,A.__wbg_ptr,A),A}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ni.unregister(this),e}free(){let e=this.__destroy_into_raw();F.__wbg_chunksliceresult_free(e,0)}take_buffer(){try{let i=F.__wbindgen_add_to_stack_pointer(-16);F.chunksliceresult_take_buffer(i,this.__wbg_ptr);var e=T().getInt32(i+0,!0),A=T().getInt32(i+4,!0),n=si(e,A).slice();return F.__wbindgen_export(e,A*1,1),n}finally{F.__wbindgen_add_to_stack_pointer(16)}}take_cpositions(){try{let i=F.__wbindgen_add_to_stack_pointer(-16);F.chunksliceresult_take_cpositions(i,this.__wbg_ptr);var e=T().getInt32(i+0,!0),A=T().getInt32(i+4,!0),n=ii(e,A).slice();return F.__wbindgen_export(e,A*8,8),n}finally{F.__wbindgen_add_to_stack_pointer(16)}}take_dpositions(){try{let i=F.__wbindgen_add_to_stack_pointer(-16);F.chunksliceresult_take_dpositions(i,this.__wbg_ptr);var e=T().getInt32(i+0,!0),A=T().getInt32(i+4,!0),n=ii(e,A).slice();return F.__wbindgen_export(e,A*8,8),n}finally{F.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(yA.prototype[Symbol.dispose]=yA.prototype.free);function ri(t){try{let o=F.__wbindgen_add_to_stack_pointer(-16),s=gi(t,F.__wbindgen_export2),Q=dt;F.decompress_all(o,s,Q);var e=T().getInt32(o+0,!0),A=T().getInt32(o+4,!0),n=T().getInt32(o+8,!0),i=T().getInt32(o+12,!0);if(i)throw Ii(n);var r=si(e,A).slice();return F.__wbindgen_export(e,A*1,1),r}finally{F.__wbindgen_add_to_stack_pointer(16)}}function oi(t,e,A,n,i){try{let Q=F.__wbindgen_add_to_stack_pointer(-16),a=gi(t,F.__wbindgen_export2),g=dt;F.decompress_chunk_slice(Q,a,g,e,A,n,i);var r=T().getInt32(Q+0,!0),o=T().getInt32(Q+4,!0),s=T().getInt32(Q+8,!0);if(s)throw Ii(o);return yA.__wrap(r)}finally{F.__wbindgen_add_to_stack_pointer(16)}}function kr(t,e){let A=Error(ai(t,e));return Dr(A)}function mr(t,e){throw new Error(ai(t,e))}var ni=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(t=>F.__wbg_chunksliceresult_free(t,1));function Dr(t){KA===eA.length&&eA.push(eA.length+1);let e=KA;return KA=eA[e],eA[e]=t,e}function Nr(t){t<1028||(eA[t]=KA,KA=t)}function ii(t,e){return t=t>>>0,yr().subarray(t/8,t/8+e)}function si(t,e){return t=t>>>0,ht().subarray(t/1,t/1+e)}var NA=null;function T(){return(NA===null||NA.buffer.detached===!0||NA.buffer.detached===void 0&&NA.buffer!==F.memory.buffer)&&(NA=new DataView(F.memory.buffer)),NA}var ce=null;function yr(){return(ce===null||ce.byteLength===0)&&(ce=new Float64Array(F.memory.buffer)),ce}function ai(t,e){return Sr(t>>>0,e)}var Be=null;function ht(){return(Be===null||Be.byteLength===0)&&(Be=new Uint8Array(F.memory.buffer)),Be}function xr(t){return eA[t]}var eA=new Array(1024).fill(void 0);eA.push(void 0,null,!0,!1);var KA=eA.length;function gi(t,e){let A=e(t.length*1,1)>>>0;return ht().set(t,A/1),dt=t.length,A}function Ii(t){let e=xr(t);return Nr(t),e}var fe=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});fe.decode();var br=2146435072,ft=0;function Sr(t,e){return ft+=e,ft>=br&&(fe=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),fe.decode(),ft=e),fe.decode(ht().subarray(t,t+e).slice())}var dt=0,F;function Qi(t){F=t}var fA=null,Ee=null;async function Ci(){return fA||(Ee||(Ee=(async()=>{let e=await(await fetch(pr)).arrayBuffer(),{instance:A}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":lt});return fA=A.exports,Qi(fA),fA})().catch(t=>{throw Ee=null,t})),Ee)}async function ci(t){return fA||await Ci(),ri(t)}async function Bi(t,e,A,n,i){fA||await Ci();let r=oi(t,e,A,n,i),o=r.take_buffer(),s=r.take_cpositions(),Q=r.take_dpositions();return r.free(),{buffer:o,cpositions:s,dpositions:Q}}var Fr=26;function fi(t){return t[0]===31&&t[1]===139}function Rr(t){return t.length>=Fr&&fi(t)&&t[2]===8&&t[3]===4&&t[10]===6&&t[12]===66&&t[13]===67}function li(t){return t instanceof Error?t.message:`${t}`}async function Ei(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 ei(t,void 0)}function hi(t){return li(t).includes("invalid gzip header")?new Error("problem decompressing block: incorrect gzip header check",{cause:t}):t}async function TA(t){if(t.length===0)return new Uint8Array(0);if(!Rr(t)){if(fi(t))return Ei(t);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}try{return await ci(t)}catch(e){if(li(e).includes("invalid bgzf header"))return Ei(t);throw hi(e)}}function di(t,e,A,n){let i=[],r=[],o=[],s=A.dataPosition;for(let Q=0;Q<t.length;Q++){let a=t[Q],g=e[Q],d=g.filePosition>=n.blockPosition;i.push(g.filePosition),r.push(s);let f=Q===0?A.dataPosition:0,I=d?Math.min(n.dataPosition+1,a.length):a.length;if(f<I&&o.push(a.subarray(f,I)),s+=a.length-f,d){i.push(g.filePosition+g.compressedSize),r.push(s);break}}return{slices:o,cpositions:Float64Array.from(i),dpositions:Float64Array.from(r)}}function vr(t,e,A,n){let{slices:i,cpositions:r,dpositions:o}=di(t,e,A,n);return{buffer:ti(i),cpositions:r,dpositions:o}}function Jr(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 ut(t,e,A){let{minv:n,maxv:i}=e;if(A){let Q=Et(t,n.blockPosition,i.blockPosition);if(ui(Q)>=wt){let a=await A.decompressBlocks(t,Q),{slices:g,cpositions:d,dpositions:f}=di(a.blocks,Q,n,i);return{segments:Jr(g),cpositions:d,dpositions:f}}}let{buffer:r,cpositions:o,dpositions:s}=await wi(t,e);return{segments:[r],cpositions:o,dpositions:s}}var wt=4e5;function ui(t){let e=0;for(let A of t)e+=A.decompressedSize;return e}async function wi(t,e,A){let{minv:n,maxv:i}=e;if(A){let r=Et(t,n.blockPosition,i.blockPosition);if(ui(r)>=wt){let o=await A.decompressBlocks(t,r);return vr(o.blocks,r,n,i)}}try{let r=await Bi(t,n.blockPosition,n.dataPosition,i.blockPosition,i.dataPosition);return{buffer:r.buffer,cpositions:r.cpositions,dpositions:r.dpositions}}catch(r){throw hi(r)}}function lA(t){if(t?.aborted)throw pt(t)}function pt(t){let e=t.reason;return e===void 0?new DOMException("This operation was aborted","AbortError"):e}function pi(t){return typeof t?.addEventListener=="function"}var aA=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){lA(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{lA(A)}}settleFor(e,A){if(!e.pending||!pi(A))return e.promise;let n,i=new Promise((o,s)=>{n=s}),r=()=>{n(pt(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,Q=()=>{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,d=s();Q(),d&&(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),Q()}),o}weigh(e){try{let A=this.sizeOf(e);return Number.isFinite(A)&&A>=0?A:void 0}catch{return}}join(e,A){if(!pi(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 le(t){return t.bytes?t.bytes():new Uint8Array(await t.arrayBuffer())}async function ki(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?kt(t,A):le(t)}function mi(t){return typeof t=="string"?{encoding:t,opts:{}}:{encoding:t?.encoding,opts:t??{}}}function Di(t){let e=/\/(\d+)$/.exec(t??"")?.[1];return e===void 0?void 0:parseInt(e,10)}function Gr(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 Lr=50;async function kt(t,e){let A=Gr(t),n=t.body;if(!n||A===void 0){let Q=await le(t);return e(Q.byteLength,A??Q.byteLength),Q}let i=n.getReader(),r=new Uint8Array(A),o=0,s=Date.now();e(0,A);for(let Q=await i.read();!Q.done;Q=await i.read()){if(o+Q.value.byteLength>r.length){let g=new Uint8Array(Math.max(o+Q.value.byteLength,r.length*2));g.set(r.subarray(0,o)),r=g}r.set(Q.value,o),o+=Q.value.byteLength;let a=Date.now();a-s>=Lr&&(s=a,e(o,A))}return e(o,A),o===r.length?r:r.slice(0,o)}function Mr(...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 mt(t){let e=t.body;typeof e?.cancel=="function"&&e.cancel().catch(()=>{})}function Ni(t){return Number.isSafeInteger(t)&&t>=0}function _r(t){return typeof t=="object"&&t!==null&&"name"in t&&t.name==="TypeError"}function Ur(t){return(typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"?t.message:`${t}`).replace(/\.$/,"")}var tA=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:Mr(this.baseHeaders,e.headers,A),...n?{signal:n}:{}}}async fetch(e,A){let n=r=>_r(r)&&!A?.signal?.aborted?new Error(`${Ur(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(!Ni(e)||!Ni(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 mt(i),new Uint8Array(0);if(this.checkOk(i),i.status===200&&A===0||i.status===206){let r=Di(i.headers.get("content-range"));r!==void 0&&(this._stat={size:r});let o=n.onProgress?await kt(i,n.onProgress):await le(i);return!this._stat&&i.status===200&&(this._stat={size:o.byteLength}),o.byteLength<=e?o:o.slice(0,e)}throw mt(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 mt(e),new Error(`HTTP ${e.status} fetching ${this.url}`)}async readFile(e){let{encoding:A,opts:n}=mi(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 ki(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 hA=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 W=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 Dt(t,e){if(!(e>0))throw new TypeError(`\`${t}\` must be a number greater than 0`)}var qA=class{#A=new Map;#e=new Map;#t;#i;#r;constructor(e){let A=e.maxAge??Number.POSITIVE_INFINITY;Dt("maxSize",e.maxSize),Dt("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){Dt("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 yi(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 xA=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 gA(t,e=0){return new xA(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 he(t,e){let A=t.length;if(A===0)return t;let n;if(e){let s=e.blockPosition,Q=e.dataPosition;n=[];for(let a=0;a<A;a++){let g=t[a];(g.maxv.blockPosition-s||g.maxv.dataPosition-Q)>0&&n.push(g)}if(n.length===0)return n}else n=t;n.sort((s,Q)=>{let a=s.minv.blockPosition-Q.minv.blockPosition;return a===0?s.minv.dataPosition-Q.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 Q=n[s],a=Q.minv.blockPosition,g=Q.maxv.blockPosition;if(a-o<65e3&&g-r<5e6){let d=i.at(-1);(g-o||Q.maxv.dataPosition-d.maxv.dataPosition)>0&&(i[i.length-1]=new W(d.minv,Q.maxv,d.bin,Q.endPosition),o=g)}else i.push(Q),r=a,o=g}return Yr(i)}function Yr(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 W(i,n.maxv,n.bin,n.endPosition))}return e}function de(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 ue(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 Q=e+s*8,a=t[Q+7]*1099511627776+t[Q+6]*4294967296+t[Q+5]*16777216+t[Q+4]*65536+t[Q+3]*256+t[Q+2],g=t[Q+1]<<8|t[Q];(a<i||a===i&&g<r)&&(i=a,r=g,o=!0)}return o?new xA(i,r):n}function Hr(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 Kr={0:"generic",1:"SAM",2:"VCF",3:"GAF"};function we(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=Kr[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),Q=s?String.fromCharCode(s):void 0,a=A.getInt32(e+20,!0),g=A.getInt32(e+24,!0),{refIdToName:d,refNameToId:f}=Hr(t.subarray(e+28,e+28+g));return{refIdToName:d,refNameToId:f,skipLines:a,metaChar:Q,columnNumbers:o,format:r,coordinateType:i}}function pe(t,e){return{lineCount:yi(t,e)}}function ke(t,e=5){let A=new qA({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 xi(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 bi=10;function Nt(t,e){let A=0,n,i=0;for(let r of t){let o=0;if(n){let a=r.indexOf(bi);if(a===-1){n=xi([n,r]),A+=r.length;continue}if(e(xi([n,r.subarray(0,a+1)]),i))return!0;o=a+1,n=void 0}let s=r.lastIndexOf(bi);if(s>=o&&e(r.subarray(o,s+1),A+o))return!0;let Q=Math.max(o,s+1);Q<r.length&&(n=r.slice(Q),i=A+Q),A+=r.length}return!1}function Tr(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 Q=1;Q<o.length;Q++){let a=o[Q].minv;a.compareTo(s)<0&&(s=a)}return s}r++}}function Si(t,e){return t.format==="GAF"?0:t.refNameToId[e]}var dA=class{filehandle;parseCache=new aA({});constructor({filehandle:e}){this.filehandle=e}async readIndexBytes(e){let A=await this.filehandle.readFile({signal:e.signal,onProgress:e.onProgress}),n=await TA(A);return{bytes:n,dataView:new DataView(n.buffer,n.byteOffset,n.byteLength)}}async lineCount(e,A={}){let n=await this.parse(A),i=Si(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=Si(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 Q=[];for(let[d,f]of this.reg2bins(A,n,r))for(let I=d;I<=f;I++){let c=s.binIndex[I];if(c)for(let N of c)Q.push(N)}let a=he(Q,this.lowestOffset(s,A,r)),g=Tr(s.binIndex,n,r.minShift,r.depth);if(g){let d=a.length;for(;d>0&&a[d-1].minv.compareTo(g)>=0;)d--;a.length=d}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 qr=21582659,Zr=38359875;function Fi(t,e){return t*2**e}function yt(t,e){return Math.floor(t/2**e)}var uA=class extends dA{async _parse(e={}){let{bytes:A,dataView:n}=await this.readIndexBytes(e),i=n.getUint32(0,!0),r;if(i===qr)r=1;else if(i===Zr)r=2;else throw new Error(`Not a CSI file (magic=${i})`);let o=n.getInt32(4,!0),s=n.getInt32(8,!0),Q=(8**(s+1)-1)/7,a=2**(o+s*3),g=n.getInt32(12,!0),d=g>=28&&(n.getInt32(16,!0)&15)===3;if(g<30&&!d)throw new Error("CSI index has no tabix header, so it names no references; it may be a BAM or BCF index");let f=we(A,16),I=n.getInt32(16+g,!0),c=16+g+4,N,h=[];for(let k=0;k<I;k++){h.push(c);let D=n.getInt32(c,!0);c+=4;for(let B=0;B<D;B++){let m=n.getUint32(c,!0);if(c+=4,m>Q)c+=44;else{N=ue(A,c,1,N),c+=8;let u=n.getInt32(c,!0);c+=4+16*u}}}function p(k){let D=h[k];if(D===void 0)return;let B=D,m=n.getInt32(B,!0);B+=4;let u={},E={},C;for(let l=0;l<m;l++){let w=n.getUint32(B,!0);if(B+=4,w>Q)C=pe(A,B+28),B+=44;else{E[w]=gA(A,B),B+=8;let y=n.getInt32(B,!0);B+=4;let x=Array.from({length:y});for(let b=0;b<y;b++)x[b]=new W(gA(A,B),gA(A,B+8),w),B+=16;u[w]=x}}return de(Object.values(u).flat()),{binIndex:u,loffsets:E,stats:C}}return{...f,csi:!0,refCount:I,maxBlockSize:65536,firstDataLine:N,csiVersion:r,indices:ke(p),minShift:o,depth:s,maxBinNumber:Q,maxRefLength:a}}lowestOffset(e,A,{minShift:n,depth:i}){let{loffsets:r}=e,o;if(r){let s=(Fi(1,3*i)-1)/7+yt(Math.max(A,0),n);for(;o===void 0&&s>0;)if(o=r[s],o===void 0){let Q=Math.floor((s-1)/8),a=Q*8+1;s=s>a?s-1:Q}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,Q=0,a=n+i*3,g=[];for(;s<=i;a-=3,Q+=Fi(1,s*3),s+=1){let d=Q+yt(e,a),f=Q+yt(A,a);if(f-d+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([d,f])}return g}};var Or=21578324,xt=5,bt=14,me=2**(bt+xt*3);function Ri(t){return Math.min(Math.max(t,0),me)}var nA=class extends dA{reg2bins(e,A){e>me&&console.warn("querying outside of possible tabix range");let n=Ri(e),i=Math.min(A,me)-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(Ri(A)>>bt,n.length-1)]}async _parse(e={}){let{bytes:A,dataView:n}=await this.readIndexBytes(e);if(n.getUint32(0,!0)!==Or)throw new Error("Not a TBI file");let i=n.getUint32(4,!0),r=((1<<(xt+1)*3)-1)/7,{refNameToId:o,refIdToName:s,coordinateType:Q,format:a,columnNumbers:g,metaChar:d,skipLines:f}=we(A,8),c=36+n.getInt32(32,!0),N,h=[];for(let k=0;k<i;k++){h.push(c);let D=n.getInt32(c,!0);c+=4;for(let m=0;m<D;m++){let u=n.getUint32(c,!0);c+=4;let E=n.getInt32(c,!0);if(c+=4,u>r+1)throw new Error("tabix index contains too many bins, please use a CSI index");c+=16*E}let B=n.getInt32(c,!0);c+=4,N=ue(A,c,B,N),c+=8*B}function p(k){let D=h[k];if(D===void 0)return;let B=D,m=n.getInt32(B,!0);B+=4;let u={},E;for(let w=0;w<m;w++){let y=n.getUint32(B,!0);if(B+=4,y>r+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(y===r+1){let x=n.getInt32(B,!0);B+=4,x===2&&(E=pe(A,B+16)),B+=16*x}else{let x=n.getInt32(B,!0);B+=4;let b=Array.from({length:x});for(let S=0;S<x;S++)b[S]=new W(gA(A,B),gA(A,B+8),y),B+=16;u[y]=b}}let C=n.getInt32(B,!0);B+=4;let l=Array.from({length:C});for(let w=0;w<C;w++)l[w]=gA(A,B),B+=8;return de(Object.values(u).flat(),l.map(w=>w.blockPosition)),{binIndex:u,linearIndex:l,stats:E}}return{indices:ke(p),metaChar:d,minShift:bt,depth:xt,maxBinNumber:r,maxRefLength:me,skipLines:f,firstDataLine:N,columnNumbers:g,coordinateType:Q,format:a,refIdToName:s,refNameToId:o,maxBlockSize:65536}}};var St=9,Ne=10,Gi=13,Xr=59,zr=60,Pr=62,jr=6,Wr=1024*2**20,Vr=180*1e3;function $r(t,e,A){if(t)return t;if(e)return new hA(e);if(A)return new tA(A);throw new TypeError("must provide either filehandle, path, or url")}function Ao({tbiFilehandle:t,csiFilehandle:e,tbiPath:A,csiPath:n,tbiUrl:i,csiUrl:r,path:o,url:s}){if(t)return new nA({filehandle:t});if(e)return new uA({filehandle:e});if(A)return new nA({filehandle:new hA(A)});if(n)return new uA({filehandle:new hA(n)});if(r)return new uA({filehandle:new tA(r)});if(i)return new nA({filehandle:new tA(i)});if(o)return new nA({filehandle:new hA(`${o}.tbi`)});if(s)return new nA({filehandle:new tA(`${s}.tbi`)});throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl")}function Li(t,e,A,n,i){return t[A]*256+(n-e[A])+i+1}function eo(t,e,A,n,i,r,o){let s=n-A,Q=e+s,a=0;if(t[i]===46)return Q;let g=i;for(let d=i;d<=r;d++)if(d===r||t[d]===Xr){let f=d-g;if(f>=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(f>=4&&t[g]===69&&t[g+1]===78&&t[g+2]===68&&t[g+3]===61){let I=De(t,g+4,d);I>e&&(Q=I)}else f>=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=no(t,g+6,d,n+1,o));g=d+1}return Math.max(Q,e+a)}var vi=44;function to(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 no(t,e,A,n,i){let r=0,o=e,s=n;for(;o<A&&s<i;){let Q=t.indexOf(vi,o);(Q===-1||Q>A)&&(Q=A);let a=t.indexOf(vi,s);if((a===-1||a>i)&&(a=i),to(t,s,a)){let g=De(t,t[o]===45?o+1:o,Q);g>r&&(r=g)}o=Q+1,s=a+1}return r}var Mi=new TextDecoder;function Ji(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===Ne&&(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(Ne,A);if(i===-1){A=t.length;break}A=i+1}return Mi.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 ro(t,e,A,n,i,{start:r,end:o,pathCol:s,metaCharCode:Q,decoder:a,callback:g}){let d=0,f=0;for(;d<t.length;){let I=t.indexOf(Ne,d);if(I===-1)break;let c=d;d=I+1;let N=c+e+i;for(;f<n.length&&N>=n[f];)f++;if(t[c]===Q)continue;let h=c;for(let u=1;u<s;u++){let E=t.indexOf(St,h);if(E===-1||E>=I){h=I;break}h=E+1}let p=t[h];if(p!==Pr&&p!==zr)continue;let k=t.indexOf(St,h);(k===-1||k>I)&&(k=I);let D=1/0,B=-1,m=h;for(;m<k;){let u=0,E=m+1;for(;E<k;E++){let C=t[E]-48;if(C<0||C>9)break;u=u*10+C}u<D&&(D=u),u>B&&(B=u),m=E}if(D>=o)return!0;if(B>=r){let u=t[I-1]===Gi?I-1:I;g(a.decode(t.subarray(c,u)),Li(A,n,f,c+e,i),D,B+1)}}return!1}var bA=class{filehandle;index;chunkCache;headerCache=new aA({});bgzfWorkerPool;constructor({path:e,filehandle:A,url:n,tbiPath:i,tbiUrl:r,tbiFilehandle:o,csiPath:s,csiUrl:Q,csiFilehandle:a,chunkCacheSize:g=Wr,chunkCacheIdleTimeoutMs:d=Vr,chunkCacheBudget:f,bgzfWorkerPool:I}){this.bgzfWorkerPool=I,this.filehandle=$r(A,e,n),this.index=Ao({tbiFilehandle:o,csiFilehandle:a,tbiPath:i,csiPath:s,tbiUrl:r,csiUrl:Q,path:e,url:n}),this.chunkCache=new aA({maxSize:g,sizeOf:c=>{let N=0;for(let h of c.segments)N+=h.byteLength;return N},cacheKey:c=>c.toString(),idleTimeoutMs:d,budget:f,fill:(c,N)=>this.readChunk(c,{signal:N})})}clearChunkCache(){this.chunkCache.clear()}async bytesForRegions(e,A={}){let n=[];for(let{refName:r,start:o,end:s}of e){let Q=await this.index.blocksForRange(r,o,s,A);for(let a of Q)n.push(a)}let i=0;for(let r of he(n))i+=r.fetchedSize();return i}async getLines(e,A,n,i){let r,o={},s,Q;typeof i=="function"?s=i:(o=i,s=i.lineCallback,r=i.signal,Q=i.onProgress);let a=await this.index.getMetadata(o),g=A??0,d=n??a.maxRefLength;if(g>d)throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(g===d)return;let f=await this.index.blocksForRange(e,g,d,o),I=a.format==="VCF",c=a.columnNumbers.ref||0,N=a.columnNumbers.start||0,h=I?8:a.columnNumbers.end||0,p=Math.max(c,N,h),k=a.metaChar?.charCodeAt(0),D=a.coordinateType==="1-based-closed"?-1:0,B=new TextEncoder,m=new TextDecoder,u=B.encode(e),E=new Int32Array(p+1),C=a.format==="GAF"?{start:g,end:d,pathCol:N,metaCharCode:k,decoder:m,callback:s}:void 0,l=0;for(let S of f)l+=S.fetchedSize();let w=0;Q?.(0,l);let y=1,x=[],b=S=>{for(;x.length<Math.min(S,f.length);){let R=f[x.length],U=this.chunkCache.get(R,r);U.catch(()=>{}),x.push(U)}};b(1);for(let S=0,R=f.length;S<R;S++){let U=f[S],{segments:v,cpositions:H,dpositions:J}=await x[S];w+=U.fetchedSize(),Q?.(w,l);let Y=U.minv.dataPosition;if(C){if(Nt(v,(L,O)=>ro(L,O,H,J,Y,C)))return}else if(Nt(v,(L,O)=>{let _=0,IA=0;for(;_<L.length;){let K=L.indexOf(Ne,_);if(K===-1)break;let wA=_+O+Y;for(;IA<J.length&&wA>=J[IA];)IA++;if(k!==void 0&&L[_]===k){_=K+1;continue}E[0]=_-1;for(let z=0;z<p;z++){let XA=E[z],ye=XA<K?L.indexOf(St,XA+1):-1;E[z+1]=ye===-1||ye>=K?K:ye}let pA=E[c-1]+1,ZA=E[c]-pA;if(ZA!==u.length){_=K+1;continue}let Ft=!0;for(let z=0;z<ZA;z++)if(L[pA+z]!==u[z]){Ft=!1;break}if(!Ft){_=K+1;continue}let OA=De(L,E[N-1]+1,E[N])+D;if(OA>=d)return!0;let SA;if(h===0||h===N?SA=OA+1:I?SA=eo(L,OA,E[3]+1,E[4],E[h-1]+1,E[h],E[5]):SA=De(L,E[h-1]+1,E[h]),SA>g){let z=L[K-1]===Gi?K-1:K,XA=m.decode(L.subarray(_,z));s(XA,Li(H,J,IA,_+O,Y),OA,SA)}_=K+1}return!1}))return;y=Math.min(y*2,jr),b(S+1+y)}}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 TA(r)}async parseHeader(e){let{metaChar:A,skipLines:n=0}=await this.getMetadata(e),i=await this.readHeaderBytes(e);return{header:Mi.decode(A?Ji(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?Ji(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);lA(A.signal);let i=await this.bgzfWorkerPool;return ut(n,e,i)}};var oo=t=>({type:"fileLocation",defaultValue:{uri:t,locationType:"UriLocation"}}),wa=(t,e="")=>vt(t,{indexType:{model:Jt.enumeration("IndexType",["TBI","CSI"]),type:"stringEnum",defaultValue:"TBI"},location:oo(e)});function so(t,e,A){return{indexType:A?"CSI":"TBI",location:{uri:`${t}.${A?"csi":"tbi"}`,baseUri:e}}}function pa(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:so(i,A,n)}}function ka(t,e,A){let n=t.pluginManager;return new bA({filehandle:Gt(t.getConf(e),n),...Lt(t.getConf([...A,"location"]),t.getConf([...A,"indexType"]),n)})}function ao(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 _i=class{constructor(e,A){this.file=e;this.adapter=A;this.lookup=_t({setup:async e=>GA(await this.file.getReferenceSequenceNames(e))})}async assemblyRefNames(e={}){let A=await this.file.getReferenceSequenceNames(e),n=zA(this.adapter,e.assemblyName),i=A.filter(r=>xe(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 LA(n,zA(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=zA(this.adapter,e.assemblyName);if(i.every(o=>o.includes("#"))&&!i.some(o=>xe(o,r)))throw new Error(ao(e))}return n}async regionBytes(e,A={},n=async i=>i){let i=[];for(let r of e){let o=await this.resolve(r,A);o!==void 0&&i.push({refName:o,start:await n(r.start),end:r.end})}return sn(this.file,i,A)}};export{TA as a,go as b,_t as c,Hi as d,Me as e,Vi as f,Pe as g,Ze as h,qi as i,$i as j,_o as k,oo as l,wa as m,so as n,pa as o,ka as p,ao as q,_i as r};
|
|
3
|
-
//# sourceMappingURL=chunk-BKBH3WGW.js.map
|