jbrowse-plugin-graphgenomeviewer 7.3.2 → 7.4.1
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-3MELVQRM.js → GbzBaseSyntenyAdapter-FZWSXPAE.js} +2 -2
- package/dist/chunks/{GbzBaseSyntenyAdapter-3MELVQRM.js.map → GbzBaseSyntenyAdapter-FZWSXPAE.js.map} +2 -2
- package/dist/chunks/{GraphGenomeView-6EDKLBOJ.js → GraphGenomeView-52OPGZER.js} +2 -2
- package/dist/chunks/{GraphTrackSettingsDialog-KYEZWI4Z.js → GraphTrackSettingsDialog-JHIP2F5N.js} +2 -2
- package/dist/chunks/{HighlightColorDialog-IMLYI64R.js → HighlightColorDialog-S2WPOSDF.js} +2 -2
- package/dist/chunks/{LinearGraphDisplay-CRIZLJDE.js → LinearGraphDisplay-EF2GE7X7.js} +2 -2
- package/dist/chunks/{MinigraphBubbleAdapter-2HPTGZ5N.js → MinigraphBubbleAdapter-XC75BCG3.js} +2 -2
- package/dist/chunks/{RgfaTabixAdapter-GNH3QCPZ.js → RgfaTabixAdapter-56X2U424.js} +2 -2
- package/dist/chunks/{WalkTabixSyntenyAdapter-CUPHY36S.js → WalkTabixSyntenyAdapter-ECW557IS.js} +2 -2
- package/dist/chunks/{WalkTabixSyntenyAdapter-CUPHY36S.js.map → WalkTabixSyntenyAdapter-ECW557IS.js.map} +3 -3
- package/dist/chunks/chunk-2BTNRN57.js +2 -0
- package/dist/chunks/chunk-2BTNRN57.js.map +7 -0
- package/dist/chunks/{chunk-MNL7IPTH.js → chunk-2Q4D5RHL.js} +2 -2
- package/dist/chunks/{chunk-MNL7IPTH.js.map → chunk-2Q4D5RHL.js.map} +1 -1
- package/dist/chunks/{chunk-ULLEUORS.js → chunk-4AAW5P6N.js} +2 -2
- package/dist/chunks/{chunk-ULLEUORS.js.map → chunk-4AAW5P6N.js.map} +1 -1
- package/dist/chunks/{chunk-NGR473EL.js → chunk-4XM5OBD5.js} +1 -1
- package/dist/chunks/{chunk-NGR473EL.js.map → chunk-4XM5OBD5.js.map} +1 -1
- package/dist/chunks/chunk-ADZBAET3.js +3 -0
- package/dist/chunks/chunk-ADZBAET3.js.map +7 -0
- package/dist/chunks/{chunk-B5SVBPXN.js → chunk-D5PRXUSS.js} +2 -2
- package/dist/chunks/{chunk-B5SVBPXN.js.map → chunk-D5PRXUSS.js.map} +1 -1
- package/dist/chunks/{chunk-PUFH6DMJ.js → chunk-JXOLZ5IZ.js} +2 -2
- package/dist/chunks/{chunk-PUFH6DMJ.js.map → chunk-JXOLZ5IZ.js.map} +1 -1
- package/dist/chunks/chunk-KPP5H27W.js +2 -0
- package/dist/chunks/chunk-KPP5H27W.js.map +7 -0
- package/dist/chunks/{chunk-Q55PHRHV.js → chunk-LTN6XZR5.js} +1 -1
- package/dist/chunks/{chunk-Q55PHRHV.js.map → chunk-LTN6XZR5.js.map} +1 -1
- package/dist/chunks/{chunk-QQCTNB2Z.js → chunk-MLVBPMBU.js} +2 -2
- package/dist/chunks/{chunk-QQCTNB2Z.js.map → chunk-MLVBPMBU.js.map} +1 -1
- package/dist/chunks/chunk-OUHKJSKZ.js +3 -0
- package/dist/chunks/chunk-OUHKJSKZ.js.map +7 -0
- package/dist/chunks/{chunk-HOSCIP4U.js → chunk-PLTIGGGS.js} +2 -2
- package/dist/chunks/{chunk-HOSCIP4U.js.map → chunk-PLTIGGGS.js.map} +2 -2
- package/dist/chunks/chunk-QASFRHPG.js +2 -0
- package/dist/chunks/{chunk-GN4HSVLB.js → chunk-SI64QXFH.js} +2 -2
- package/dist/chunks/{chunk-GN4HSVLB.js.map → chunk-SI64QXFH.js.map} +2 -2
- package/dist/chunks/{chunk-4EKOQHUX.js → chunk-UW7INEQF.js} +1 -1
- package/dist/chunks/{chunk-4EKOQHUX.js.map → chunk-UW7INEQF.js.map} +1 -1
- package/dist/chunks/{chunk-TQKSF3NI.js → chunk-VIVPTP5Z.js} +1 -1
- package/dist/chunks/{chunk-TQKSF3NI.js.map → chunk-VIVPTP5Z.js.map} +1 -1
- package/dist/chunks/{chunk-6DRBCLWY.js → chunk-XLSVRKFJ.js} +2 -2
- package/dist/chunks/chunk-XLSVRKFJ.js.map +7 -0
- package/dist/chunks/{chunk-CJMBJJLO.js → chunk-XT4U7I3D.js} +3 -3
- package/dist/chunks/{chunk-CJMBJJLO.js.map → chunk-XT4U7I3D.js.map} +4 -4
- package/dist/chunks/chunk-YBZA7LPQ.js +2 -0
- package/dist/chunks/chunk-YBZA7LPQ.js.map +7 -0
- package/dist/chunks/{chunk-IFBKAC2H.js → chunk-Z4YNEFPC.js} +2 -2
- package/dist/chunks/renderSvg-IXWB7R54.js +2 -0
- package/dist/chunks/renderSvg-IXWB7R54.js.map +7 -0
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +4 -4
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
- package/package.json +3 -3
- package/src/GbzBaseSyntenyAdapter/GbzBaseSyntenyAdapter.test.ts +10 -4
- package/src/GbzBaseSyntenyAdapter/companion.test.ts +4 -2
- package/src/GetSubgraph.ts +2 -0
- package/src/GraphGenomeView/components/ElTree.tsx +1 -1
- package/src/GraphGenomeView/components/FacetPanels.tsx +4 -1
- package/src/GraphGenomeView/components/PaneContextMenu.tsx +14 -0
- package/src/GraphGenomeView/components/PaneSvg.tsx +2 -1
- package/src/GraphGenomeView/legendSections.ts +3 -3
- package/src/GraphGenomeView/model.test.ts +19 -21
- package/src/GraphGenomeView/model.ts +3 -0
- package/src/GraphGenomeView/pane/fitViews.ts +2 -2
- package/src/GraphGenomeView/pane/paneBase.ts +2 -0
- package/src/GraphGenomeView/pane/renderingActions.ts +9 -0
- package/src/GraphGenomeView/repeats/walkCalls.test.ts +2 -2
- package/src/GraphGenomeView/subgraphLoad.test.ts +18 -2
- package/src/GraphGenomeView/tubeMapPanels.test.ts +4 -2
- package/src/GraphGenomeView/tubeMapPanels.ts +2 -2
- package/src/RgfaTabixAdapter/configSchema.ts +1 -1
- package/src/RgfaTabixAdapter/test_data/walks4_follow.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_header.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_inversion.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_lanepairs.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_maxnode.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_rejoin.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_twopart.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/walkFiles.test.ts +15 -3
- package/src/RgfaTabixAdapter/walkReader.ts +4 -1
- package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.ts +7 -2
- package/src/WalkTabixSyntenyAdapter/configSchema.ts +1 -1
- package/src/WalkTabixSyntenyAdapter/gbzParity.test.ts +2 -3
- package/src/version.ts +1 -1
- package/dist/chunks/chunk-6DRBCLWY.js.map +0 -7
- package/dist/chunks/chunk-F4T7JI7S.js +0 -2
- package/dist/chunks/chunk-F4T7JI7S.js.map +0 -7
- package/dist/chunks/chunk-HTSG4T32.js +0 -3
- package/dist/chunks/chunk-HTSG4T32.js.map +0 -7
- package/dist/chunks/chunk-N5VWQHTK.js +0 -2
- package/dist/chunks/chunk-N5VWQHTK.js.map +0 -7
- package/dist/chunks/chunk-ORHUPW3G.js +0 -3
- package/dist/chunks/chunk-ORHUPW3G.js.map +0 -7
- package/dist/chunks/chunk-R25GOTED.js +0 -2
- package/dist/chunks/chunk-R25GOTED.js.map +0 -7
- package/dist/chunks/chunk-VW4PPXH6.js +0 -2
- package/dist/chunks/renderSvg-HEEQJD5B.js +0 -2
- package/dist/chunks/renderSvg-HEEQJD5B.js.map +0 -7
- /package/dist/chunks/{GraphGenomeView-6EDKLBOJ.js.map → GraphGenomeView-52OPGZER.js.map} +0 -0
- /package/dist/chunks/{GraphTrackSettingsDialog-KYEZWI4Z.js.map → GraphTrackSettingsDialog-JHIP2F5N.js.map} +0 -0
- /package/dist/chunks/{HighlightColorDialog-IMLYI64R.js.map → HighlightColorDialog-S2WPOSDF.js.map} +0 -0
- /package/dist/chunks/{LinearGraphDisplay-CRIZLJDE.js.map → LinearGraphDisplay-EF2GE7X7.js.map} +0 -0
- /package/dist/chunks/{MinigraphBubbleAdapter-2HPTGZ5N.js.map → MinigraphBubbleAdapter-XC75BCG3.js.map} +0 -0
- /package/dist/chunks/{RgfaTabixAdapter-GNH3QCPZ.js.map → RgfaTabixAdapter-56X2U424.js.map} +0 -0
- /package/dist/chunks/{chunk-VW4PPXH6.js.map → chunk-QASFRHPG.js.map} +0 -0
- /package/dist/chunks/{chunk-IFBKAC2H.js.map → chunk-Z4YNEFPC.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.
|
|
3
|
+
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-G2FD7S3C.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-GQZVR5DW.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-OYCQVJYY.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VX656OAZ.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-JGHZ3N34.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-2XEAITWM.js"],
|
|
4
4
|
"sourcesContent": ["// src/renderer/colorBits.ts\nfunction packAbgr(r, g, b, a) {\n return (a << 24 | b << 16 | g << 8 | r) >>> 0;\n}\nfunction abgrRed(c) {\n return c & 255;\n}\nfunction abgrGreen(c) {\n return c >>> 8 & 255;\n}\nfunction abgrBlue(c) {\n return c >>> 16 & 255;\n}\nfunction abgrAlpha(c) {\n return c >>> 24 & 255;\n}\nfunction abgrToCssRgba(c) {\n return `rgba(${abgrRed(c)},${abgrGreen(c)},${abgrBlue(c)},${abgrAlpha(c) / 255})`;\n}\nfunction normalizedRgbToCssRgba(c, alpha) {\n return `rgba(${Math.round(c[0] * 255)},${Math.round(c[1] * 255)},${Math.round(c[2] * 255)},${alpha})`;\n}\nfunction fadeAbgr(c, alpha) {\n return packAbgr(\n abgrRed(c),\n abgrGreen(c),\n abgrBlue(c),\n Math.round(abgrAlpha(c) * alpha)\n );\n}\nfunction brightenAbgr(c, factor) {\n const t = Math.max(0, 1 - 1 / factor);\n const lift = (v) => Math.round(v + (255 - v) * t);\n return packAbgr(\n lift(abgrRed(c)),\n lift(abgrGreen(c)),\n lift(abgrBlue(c)),\n abgrAlpha(c)\n );\n}\n\nexport {\n packAbgr,\n abgrRed,\n abgrGreen,\n abgrBlue,\n abgrAlpha,\n abgrToCssRgba,\n normalizedRgbToCssRgba,\n fadeAbgr,\n brightenAbgr\n};\n", "// src/referenceRampCss.ts\nvar REFERENCE_RAMP_MAX_HUE = 300;\nvar REFERENCE_RAMP_SATURATION = 0.7;\nvar REFERENCE_RAMP_LIGHTNESS = 0.5;\nfunction rampHueCss(hue) {\n return `hsl(${hue}, ${REFERENCE_RAMP_SATURATION * 100}%, ${REFERENCE_RAMP_LIGHTNESS * 100}%)`;\n}\nfunction rampHueAt(frac) {\n return Math.max(0, Math.min(1, frac)) * REFERENCE_RAMP_MAX_HUE;\n}\nfunction rampHue(bp, domain) {\n return rampHueAt((bp - domain.start) / (domain.end - domain.start));\n}\nvar HUE_STOP_DEG = 30;\nfunction rampStops({ start, bp, reversed }, domain) {\n const low = rampHue(start, domain);\n const high = rampHue(start + bp, domain);\n if (high - low < 1) {\n return [(low + high) / 2];\n }\n const n = Math.ceil((high - low) / HUE_STOP_DEG);\n return Array.from(\n { length: n + 1 },\n (_, i) => rampHue(start + bp * (reversed ? n - i : i) / n, domain)\n );\n}\nvar RAMP_GRADIENT_STOPS = Array.from({ length: 7 }, (_, i) => ({\n offset: i / 6,\n color: rampHueCss(i / 6 * REFERENCE_RAMP_MAX_HUE)\n}));\nvar RAMP_GRADIENT_CSS = `linear-gradient(to right, ${RAMP_GRADIENT_STOPS.map(\n (s) => `${s.color} ${s.offset * 100}%`\n).join(\", \")})`;\n\nexport {\n REFERENCE_RAMP_MAX_HUE,\n REFERENCE_RAMP_SATURATION,\n REFERENCE_RAMP_LIGHTNESS,\n rampHueCss,\n rampHueAt,\n rampHue,\n rampStops,\n RAMP_GRADIENT_STOPS,\n RAMP_GRADIENT_CSS\n};\n", "import {\n weakMemo\n} from \"./chunk-HMXCN6PG.js\";\nimport {\n edgeCurvesOf\n} from \"./chunk-DV5B5UU7.js\";\n\n// src/util/edgeCurves.ts\nvar cache = weakMemo();\nfunction baseEdgeCurves(nodePositions, graph, axis, deletions, version, routes, stranded = false) {\n return cache(\n nodePositions,\n [graph, axis.scaleX, axis.scaleY, deletions, routes, stranded, version],\n () => {\n const curves = /* @__PURE__ */ new Map();\n for (let ei = 0; ei < graph.edges.length; ei++) {\n const bypassed = deletions?.get(ei);\n const edgeCurves = edgeCurvesOf(\n nodePositions,\n graph.edges[ei],\n axis,\n bypassed,\n bypassed && routes?.[ei],\n stranded\n );\n if (edgeCurves) {\n curves.set(ei, edgeCurves);\n }\n }\n return curves;\n }\n );\n}\n\nexport {\n baseEdgeCurves\n};\n", "import {\n pushTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\n\n// src/referenceSpan.ts\nvar MAX_BACKBONE_HOPS = 4;\nfunction buildNeighbors(graph) {\n const neighbors = /* @__PURE__ */ new Map();\n for (const edge of graph.edges) {\n pushTo(neighbors, edge.from, edge.to);\n pushTo(neighbors, edge.to, edge.from);\n }\n return neighbors;\n}\nfunction flankingSpan({\n nodeId,\n nodeById,\n neighbors\n}) {\n const seen = /* @__PURE__ */ new Set([nodeId]);\n let frontier = [nodeId];\n let minEnd = Infinity;\n let maxStart = -Infinity;\n for (let hop = 0; hop < MAX_BACKBONE_HOPS && frontier.length > 0; hop++) {\n const next = [];\n for (const id of frontier) {\n const adjacent = neighbors.get(id);\n if (adjacent) {\n for (const neighborId of adjacent) {\n if (!seen.has(neighborId)) {\n seen.add(neighborId);\n const neighbor = nodeById.get(neighborId);\n if (neighbor && isBackbone(neighbor)) {\n minEnd = Math.min(minEnd, neighbor.stable.start + neighbor.length);\n maxStart = Math.max(maxStart, neighbor.stable.start);\n } else {\n next.push(neighborId);\n }\n }\n }\n }\n }\n frontier = next;\n }\n return minEnd === Infinity ? void 0 : {\n start: Math.min(minEnd, maxStart),\n end: Math.max(minEnd, maxStart)\n };\n}\nfunction nodeReferenceSpan({\n nodeId,\n nodeById,\n neighbors\n}) {\n const node = nodeById.get(nodeId);\n return node === void 0 ? void 0 : isBackbone(node) ? { start: node.stable.start, end: node.stable.start + node.length } : flankingSpan({ nodeId, nodeById, neighbors });\n}\nfunction referenceMidpoints(graph) {\n const nodeById = new Map(graph.nodes.map((node) => [node.id, node]));\n const neighbors = buildNeighbors(graph);\n const midpoints = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n const span = nodeReferenceSpan({ nodeId: node.id, nodeById, neighbors });\n if (span) {\n midpoints.set(node.id, (span.start + span.end) / 2);\n }\n }\n return midpoints;\n}\n\nexport {\n buildNeighbors,\n nodeReferenceSpan,\n referenceMidpoints\n};\n", "import {\n abgrToCssRgba,\n fadeAbgr,\n packAbgr\n} from \"./chunk-G2FD7S3C.js\";\nimport {\n REFERENCE_RAMP_LIGHTNESS,\n REFERENCE_RAMP_SATURATION,\n rampHueAt\n} from \"./chunk-GQZVR5DW.js\";\nimport {\n baseEdgeCurves\n} from \"./chunk-OYCQVJYY.js\";\nimport {\n PATH_LIGHTNESS,\n PATH_SATURATION,\n nameHue,\n pathHueAt\n} from \"./chunk-BW2NMXRV.js\";\nimport {\n meanDepth,\n nodeWidthPx,\n walkLaneWidthPx\n} from \"./chunk-ZANALBSX.js\";\nimport {\n referenceMidpoints\n} from \"./chunk-VX656OAZ.js\";\nimport {\n dashCurves,\n pathRibbonOffsets,\n polylinePx,\n strandSides,\n translateCurves,\n yToXOf\n} from \"./chunk-VACK24HF.js\";\nimport {\n pushTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\n\n// src/renderer/GeometryBuilder.ts\nvar EDGE_DEFAULT_COLOR = packAbgr(119, 119, 119, 217);\nvar EDGE_PATH_FALLBACK_COLOR = packAbgr(136, 136, 136, 217);\nvar EDGE_DELETION_COLOR = packAbgr(24, 24, 28, 240);\nvar DELETION_THICKNESS_FACTOR = 2.2;\nvar LIFT_BACKDROP_COLOR = packAbgr(160, 160, 160, 255);\nvar FADED_ALPHA = 0.18;\nvar LIFT_BACKDROP_CSS = abgrToCssRgba(\n fadeAbgr(LIFT_BACKDROP_COLOR, FADED_ALPHA)\n);\nvar DELETION_DASH_PX = 11;\nvar MIN_PATH_STRIPE_PX = 1.2;\nvar MIN_SCALE_FOR_OFFSET = 1e-6;\nvar ARROW_LENGTH_BASE_PX = 7;\nvar ARROW_LENGTH_PER_EDGE_PX = 3;\nvar ARROW_HALF_WIDTH_BASE_PX = 3;\nvar ARROW_HALF_WIDTH_PER_EDGE_PX = 1.5;\nvar MIN_LINK_HEADS = 3;\nvar MIN_ARROW_FIT = 0.5;\nvar MIN_ARROW_SCALE = 0.45;\nvar ARROW_CURVE_STEPS = 12;\nvar ABUTTING_PX = 1e-6;\nvar walkX = new Float64Array(64);\nvar walkY = new Float64Array(64);\nvar walkPx = new Float64Array(64);\nfunction backFromEnd(curves, scale, yToX, untilPx) {\n const most = curves.length * ARROW_CURVE_STEPS + 1;\n if (walkX.length < most) {\n walkX = new Float64Array(most);\n walkY = new Float64Array(most);\n walkPx = new Float64Array(most);\n }\n const last = curves[curves.length - 1];\n walkX[0] = last.x1;\n walkY[0] = last.y1;\n walkPx[0] = 0;\n let n = 1;\n let px = 0;\n for (let ci = curves.length - 1; ci >= 0 && px < untilPx; ci--) {\n const c = curves[ci];\n for (let k = 1; k <= ARROW_CURVE_STEPS && px < untilPx; k++) {\n const t = 1 - (k / ARROW_CURVE_STEPS) ** 2;\n const u = 1 - t;\n const a = u * u * u;\n const b = 3 * u * u * t;\n const d = 3 * u * t * t;\n const e = t * t * t;\n const x = a * c.x0 + b * c.cx0 + d * c.cx1 + e * c.x1;\n const y = a * c.y0 + b * c.cy0 + d * c.cy1 + e * c.y1;\n px += Math.hypot(x - walkX[n - 1], (y - walkY[n - 1]) * yToX) * scale;\n walkX[n] = x;\n walkY[n] = y;\n walkPx[n] = px;\n n++;\n }\n }\n return n;\n}\nfunction walkPointAt(n, px) {\n let i = 1;\n while (i < n - 1 && walkPx[i] < px) {\n i++;\n }\n const from = walkPx[i - 1];\n const to = walkPx[i];\n const f = to > from ? Math.min(1, Math.max(0, (px - from) / (to - from))) : 0;\n return {\n x: walkX[i - 1] + (walkX[i] - walkX[i - 1]) * f,\n y: walkY[i - 1] + (walkY[i] - walkY[i - 1]) * f\n };\n}\nfunction arrowheadFor({\n curves,\n edgeHalfWidth,\n nodeHalfWidth,\n scale,\n yToX,\n color,\n fromSegments,\n toSegments\n}) {\n const length = ARROW_LENGTH_BASE_PX + ARROW_LENGTH_PER_EDGE_PX * edgeHalfWidth;\n const n = backFromEnd(\n curves,\n scale,\n yToX,\n nodeHalfWidth + MIN_LINK_HEADS * length\n );\n const lengthPx = walkPx[n - 1];\n const abutting = lengthPx < ABUTTING_PX;\n const inset = Math.min(nodeHalfWidth, lengthPx);\n const fit = abutting ? Math.min(1, polylinePx(fromSegments, scale, scale * yToX) / length) : 1;\n if (abutting ? fit < MIN_ARROW_FIT : lengthPx < MIN_LINK_HEADS * length) {\n return void 0;\n }\n const tip = walkPointAt(n, inset);\n const base = walkPointAt(n, inset + length * fit);\n const dx = tip.x - base.x;\n const dy = (tip.y - base.y) * yToX;\n const last = curves[curves.length - 1];\n return {\n x: tip.x,\n y: tip.y,\n angle: Math.hypot(dx, dy) > 0 ? Math.atan2(dy, dx) : endTangent(last, yToX, intoDirection(last, toSegments)),\n length: length * fit,\n halfWidth: (ARROW_HALF_WIDTH_BASE_PX + ARROW_HALF_WIDTH_PER_EDGE_PX * edgeHalfWidth) * fit,\n color\n };\n}\nfunction leavesStart(edge, segments, first, stranded, yToX) {\n if (stranded) {\n return strandSides(edge).from === \"start\";\n }\n const gap = (p) => Math.hypot(p.x - first.x0, (p.y - first.y0) * yToX);\n return gap(segments[0]) < gap(segments.at(-1));\n}\nfunction intoDirection(last, toSegments) {\n if (toSegments.length < 2) {\n return void 0;\n }\n const first = toSegments[0];\n const final = toSegments[toSegments.length - 1];\n const atStart = Math.hypot(last.x1 - first.x, last.y1 - first.y) <= Math.hypot(last.x1 - final.x, last.y1 - final.y);\n return atStart ? { from: first, to: toSegments[1] } : { from: final, to: toSegments[toSegments.length - 2] };\n}\nfunction normal(a, b) {\n if (!a || !b) {\n return void 0;\n }\n const dx = b.x - a.x;\n const dy = b.y - a.y;\n const len = Math.hypot(dx, dy);\n return len > 0 ? { nx: -dy / len, ny: dx / len } : void 0;\n}\nfunction pointNormalsOf(rawPoints, yToX = 1) {\n const points = yToX === 1 ? rawPoints : rawPoints.map((p) => ({ x: p.x, y: p.y * yToX }));\n return points.map((p, i) => {\n const before = normal(points[i - 1], p);\n const after = normal(p, points[i + 1]);\n if (before && after) {\n const nx = (before.nx + after.nx) / 2;\n const ny = (before.ny + after.ny) / 2;\n const dot = before.nx * nx + before.ny * ny;\n return dot > 0.1 ? { nx: nx / dot, ny: ny / dot } : { nx, ny };\n }\n return before ?? after ?? { nx: 0, ny: 0 };\n });\n}\nfunction offsetPolyline(points, normals, distance, yToX = 1) {\n return points.map((p, i) => ({\n x: p.x + normals[i].nx * distance,\n y: p.y + normals[i].ny * distance / yToX\n }));\n}\nfunction hslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n let r = 0;\n let g = 0;\n let b = 0;\n if (h < 60) {\n r = c;\n g = x;\n } else if (h < 120) {\n r = x;\n g = c;\n } else if (h < 180) {\n g = c;\n b = x;\n } else if (h < 240) {\n g = x;\n b = c;\n } else if (h < 300) {\n r = x;\n b = c;\n } else {\n r = c;\n b = x;\n }\n return [r + m, g + m, b + m];\n}\nfunction packHsl(h, s, l, a = 1) {\n const [r, g, b] = hslToRgb(h, s, l);\n return packAbgr(\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255),\n Math.round(a * 255)\n );\n}\nvar DEPTH_GRADIENT = [\n [68, 1, 84],\n [59, 82, 139],\n [33, 145, 140],\n [94, 201, 98],\n [253, 231, 37]\n];\nvar STABLE_RANK_GRADIENT = [\n [237, 137, 44],\n [158, 42, 122]\n];\nvar NODE_LENGTH_GRADIENT = [\n [220, 50, 50],\n [50, 120, 220]\n];\nfunction sampleGradient(stops, t) {\n const pos = Math.max(0, Math.min(1, t)) * (stops.length - 1);\n const i = Math.min(stops.length - 2, Math.floor(pos));\n const f = pos - i;\n const a = stops[i];\n const b = stops[i + 1];\n return packAbgr(\n Math.round(a[0] + (b[0] - a[0]) * f),\n Math.round(a[1] + (b[1] - a[1]) * f),\n Math.round(a[2] + (b[2] - a[2]) * f),\n 255\n );\n}\nfunction hashColor(str, alpha) {\n return packHsl(nameHue(str), PATH_SATURATION, PATH_LIGHTNESS, alpha);\n}\nvar REFERENCE_RAMP_ALT_RGB = [60, 65, 72];\nvar REFERENCE_RAMP_ALT_COLOR = packAbgr(...REFERENCE_RAMP_ALT_RGB, 255);\nvar REFERENCE_RAMP_ALT_CSS = `rgb(${REFERENCE_RAMP_ALT_RGB.join(\", \")})`;\nfunction rampFraction(node, ramp) {\n const mid = ramp.midpoints.get(node.id);\n return isBackbone(node) && mid !== void 0 ? (mid - ramp.start) / ramp.span : void 0;\n}\nfunction computeReferenceRamp(graph, domain) {\n const midpoints = referenceMidpoints(graph);\n if (domain && domain.end > domain.start) {\n return {\n start: domain.start,\n span: domain.end - domain.start,\n midpoints\n };\n }\n let min = Infinity;\n let max = -Infinity;\n for (const mid of midpoints.values()) {\n min = Math.min(min, mid);\n max = Math.max(max, mid);\n }\n return {\n start: min === Infinity ? 0 : min,\n span: max > min ? max - min : 1,\n midpoints\n };\n}\nfunction computeColorSchemeRange(graph, referenceRamp) {\n let minDepth = Infinity;\n let maxDepth = -Infinity;\n let minLength = Infinity;\n let maxLength = -Infinity;\n let maxRank = 0;\n for (const n of graph.nodes) {\n if (n.stable !== void 0 && n.stable.rank > maxRank) {\n maxRank = n.stable.rank;\n }\n if (n.depth < minDepth) {\n minDepth = n.depth;\n }\n if (n.depth > maxDepth) {\n maxDepth = n.depth;\n }\n if (n.length < minLength) {\n minLength = n.length;\n }\n if (n.length > maxLength) {\n maxLength = n.length;\n }\n }\n return {\n minDepth,\n maxDepth,\n minLength,\n maxLength,\n maxRank,\n nodeCount: graph.nodes.length,\n referenceRamp\n };\n}\nfunction getNodeColor(node, nodeIndex, colorScheme, range) {\n switch (colorScheme) {\n case \"random\":\n return hashColor(node.id, 1);\n case \"depth\":\n return sampleGradient(\n DEPTH_GRADIENT,\n range.maxDepth > range.minDepth ? (node.depth - range.minDepth) / (range.maxDepth - range.minDepth) : 0.5\n );\n case \"node-length\":\n return sampleGradient(\n NODE_LENGTH_GRADIENT,\n range.maxLength > range.minLength ? (node.length - range.minLength) / (range.maxLength - range.minLength) : 0.5\n );\n // rGFA states the backbone rather than leaving it to be inferred: rank 0 is\n // the reference, higher ranks are the sequence that diverges from it. A\n // graph with no SR tags draws every node as unranked.\n case \"stable-rank\":\n return node.stable === void 0 ? packAbgr(160, 160, 160, 255) : node.stable.rank === 0 ? packAbgr(52, 152, 219, 255) : sampleGradient(\n STABLE_RANK_GRADIENT,\n range.maxRank > 1 ? (node.stable.rank - 1) / (range.maxRank - 1) : 0\n );\n // Position on the reference, the one quantity both panels of a\n // graph-over-linear figure can state, so only the backbone takes a hue\n case \"reference-position\": {\n const ramp = range.referenceRamp;\n if (ramp === void 0) {\n return packAbgr(160, 160, 160, 255);\n }\n const t = rampFraction(node, ramp);\n return t === void 0 ? REFERENCE_RAMP_ALT_COLOR : packHsl(\n rampHueAt(t),\n REFERENCE_RAMP_SATURATION,\n REFERENCE_RAMP_LIGHTNESS\n );\n }\n case \"grey\":\n return packAbgr(160, 160, 160, 255);\n case \"rainbow\": {\n const hue = range.nodeCount > 1 ? nodeIndex / range.nodeCount * 360 : 0;\n return packHsl(hue, 0.75, 0.5);\n }\n default:\n return packAbgr(52, 152, 219, 255);\n }\n}\nfunction endTangent(c, yToX = 1, into) {\n const candidates = [\n [c.cx1, c.cy1],\n [c.cx0, c.cy0],\n [c.x0, c.y0]\n ];\n for (const [x, y] of candidates) {\n const dx = c.x1 - x;\n const dy = (c.y1 - y) * yToX;\n if (Math.hypot(dx, dy) > 0) {\n return Math.atan2(dy, dx);\n }\n }\n return into ? Math.atan2((into.to.y - into.from.y) * yToX, into.to.x - into.from.x) : 0;\n}\nfunction isPolylineInBounds(segments, bounds) {\n let hit = false;\n for (let i = 0; i < segments.length - 1 && !hit; i++) {\n const a = segments[i];\n const b = segments[i + 1];\n hit = Math.max(a.x, b.x) >= bounds.minX && Math.min(a.x, b.x) <= bounds.maxX && Math.max(a.y, b.y) >= bounds.minY && Math.min(a.y, b.y) <= bounds.maxY;\n }\n return hit;\n}\nfunction isBezierInBounds(curves, bounds) {\n for (const c of curves) {\n const cMinX = Math.min(c.x0, c.cx0, c.cx1, c.x1);\n const cMaxX = Math.max(c.x0, c.cx0, c.cx1, c.x1);\n const cMinY = Math.min(c.y0, c.cy0, c.cy1, c.y1);\n const cMaxY = Math.max(c.y0, c.cy0, c.cy1, c.y1);\n if (cMaxX >= bounds.minX && cMinX <= bounds.maxX && cMaxY >= bounds.minY && cMinY <= bounds.maxY) {\n return true;\n }\n }\n return false;\n}\nvar paletteCache = /* @__PURE__ */ new WeakMap();\nfunction pathPaletteOf(graph) {\n let palette = paletteCache.get(graph);\n if (!palette) {\n const pathColorByIndex = [];\n const pathIndexByName = /* @__PURE__ */ new Map();\n const paths = graph.paths ?? [];\n for (let i = 0; i < paths.length; i++) {\n pathColorByIndex.push(\n packHsl(\n pathHueAt(i, paths.length),\n PATH_SATURATION,\n PATH_LIGHTNESS,\n 0.85\n )\n );\n if (!pathIndexByName.has(paths[i].name)) {\n pathIndexByName.set(paths[i].name, i);\n }\n }\n palette = { pathColorByIndex, pathIndexByName };\n paletteCache.set(graph, palette);\n }\n return palette;\n}\nvar slotsCache = /* @__PURE__ */ new WeakMap();\nvar NO_SLOTS = /* @__PURE__ */ new Map();\nfunction pathSlotsOf(graph) {\n let slots = slotsCache.get(graph);\n if (!slots) {\n slots = /* @__PURE__ */ new Map();\n for (const [pathIdx, path] of (graph.paths ?? []).entries()) {\n for (const nodeId of new Set(path.nodeIds)) {\n pushTo(slots, nodeId, pathIdx);\n }\n }\n slotsCache.set(graph, slots);\n }\n return slots;\n}\nfunction buildGeometry(options) {\n const {\n nodePositions,\n graph,\n nodeById,\n colorScheme,\n contigThickness,\n connectorThickness,\n drawPaths,\n nodeWidth = \"uniform\",\n highlight,\n axis,\n linearLayout,\n viewportBounds,\n referenceRamp,\n deletions,\n deletionRoutes,\n stranded,\n hiddenEdges,\n version = 0\n } = options;\n const depthNorm = nodeWidth === \"depth\" ? meanDepth(graph) : 0;\n const scale = axis.scaleX;\n const worldPerScreenPx = 1 / Math.max(scale, MIN_SCALE_FOR_OFFSET);\n const yToX = yToXOf(axis);\n const sharedCurves = baseEdgeCurves(\n nodePositions,\n graph,\n axis,\n deletions,\n version,\n deletionRoutes,\n stranded\n );\n const nodeStrokes = [];\n const nodeStrokeRuns = /* @__PURE__ */ new Map();\n const arrows = [];\n const arrowRuns = /* @__PURE__ */ new Map();\n const edgeCurves = [];\n const edgeCurveRuns = /* @__PURE__ */ new Map();\n const colorRange = computeColorSchemeRange(graph, referenceRamp);\n const nodeIndexMap = /* @__PURE__ */ new Map();\n if (colorScheme === \"rainbow\") {\n for (let i = 0; i < graph.nodes.length; i++) {\n nodeIndexMap.set(graph.nodes[i].id, i);\n }\n }\n const pathCount = graph.paths?.length ?? 0;\n const { pathColorByIndex, pathIndexByName } = pathPaletteOf(graph);\n const pathColorByName = (name) => pathColorByIndex[pathIndexByName.get(name) ?? -1] ?? EDGE_PATH_FALLBACK_COLOR;\n const nodePathSlots = drawPaths && pathCount > 1 ? pathSlotsOf(graph) : NO_SLOTS;\n const showArrows = scale > (linearLayout ? 1 : MIN_ARROW_SCALE);\n for (let ei = 0; ei < graph.edges.length; ei++) {\n const edge = graph.edges[ei];\n const fromSegments = nodePositions[edge.from];\n const toSegments = nodePositions[edge.to];\n const baseCurves = sharedCurves.get(ei);\n if (!fromSegments?.length || !toSegments?.length || !baseCurves || hiddenEdges?.has(ei)) {\n continue;\n }\n const numPaths = edge.pathIds?.length ?? 0;\n const bypassed = deletions?.get(ei);\n const isDeletion = bypassed !== void 0;\n const onWalk = highlight?.edgeIndexes.has(ei) ?? false;\n const edgeThickness = connectorThickness / 2 * (isDeletion ? DELETION_THICKNESS_FACTOR : 1);\n const ribbons = drawPaths && numPaths > 0;\n const plainEdgeColor = isDeletion ? EDGE_DELETION_COLOR : EDGE_DEFAULT_COLOR;\n const edgeColor = !highlight || onWalk ? plainEdgeColor : fadeAbgr(plainEdgeColor, FADED_ALPHA);\n const toNode = nodeById.get(edge.to);\n const intoHalfWidth = (toNode ? nodeWidthPx(toNode, contigThickness, nodeWidth, depthNorm) : contigThickness) / 2;\n const inView = (curves) => !viewportBounds || isBezierInBounds(curves, viewportBounds);\n const stroke = (curves, thickness, color) => {\n if (isDeletion) {\n for (const dash of dashCurves(\n curves,\n DELETION_DASH_PX / scale,\n yToX,\n viewportBounds\n )) {\n edgeCurves.push({ curves: dash, thickness, color });\n }\n } else {\n edgeCurves.push({ curves, thickness, color });\n }\n };\n const arrowOn = (curves) => {\n const head = showArrows ? arrowheadFor({\n curves,\n edgeHalfWidth: connectorThickness / 2,\n nodeHalfWidth: intoHalfWidth,\n scale,\n yToX,\n color: edgeColor,\n fromSegments,\n toSegments\n }) : void 0;\n if (head) {\n arrows.push(head);\n }\n };\n const edgeCurveStart = edgeCurves.length;\n const arrowStart = arrows.length;\n const laneWalks = highlight?.walks.length && onWalk && !ribbons ? highlight.walks : void 0;\n if (laneWalks) {\n const fromNode = nodeById.get(edge.from);\n const width = fromNode ? nodeWidthPx(fromNode, contigThickness, nodeWidth, depthNorm) : contigThickness;\n const laneWidth = walkLaneWidthPx(width, laneWalks.length);\n const normals = pointNormalsOf(fromSegments, yToX);\n const { nx, ny } = (leavesStart(\n edge,\n fromSegments,\n baseCurves[0],\n stranded,\n yToX\n ) ? normals[0] : normals.at(-1)) ?? {\n nx: 0,\n ny: 0\n };\n laneWalks.forEach((walk, lane) => {\n if (!walk.edgeIndexes.has(ei)) {\n return;\n }\n const offset = (lane - (laneWalks.length - 1) / 2) * laneWidth * worldPerScreenPx;\n const curves = offset === 0 ? baseCurves : translateCurves(baseCurves, nx * offset, ny * offset / yToX);\n if (inView(curves)) {\n stroke(\n curves,\n laneWidth / 2,\n walk.colors.get(edge.from) ?? walk.colors.get(edge.to) ?? plainEdgeColor\n );\n }\n });\n if (edgeCurves.length > edgeCurveStart) {\n arrowOn(baseCurves);\n }\n } else if (!ribbons) {\n if (inView(baseCurves)) {\n stroke(baseCurves, edgeThickness, edgeColor);\n arrowOn(baseCurves);\n }\n } else {\n const offsets = pathRibbonOffsets(\n fromSegments,\n toSegments,\n numPaths,\n axis\n );\n const arrowRibbon = Math.floor((numPaths - 1) / 2);\n for (let pathIdx = 0; pathIdx < numPaths; pathIdx++) {\n const { x, y } = offsets[pathIdx];\n const curves = x === 0 && y === 0 ? baseCurves : translateCurves(baseCurves, x, y);\n if (!inView(curves)) {\n continue;\n }\n const ribbonColor = pathColorByName(edge.pathIds[pathIdx]);\n stroke(\n curves,\n edgeThickness,\n highlight && (highlight.walks.length ? !highlight.names.has(edge.pathIds[pathIdx]) : !onWalk) ? fadeAbgr(ribbonColor, FADED_ALPHA) : ribbonColor\n );\n if (pathIdx === arrowRibbon) {\n arrowOn(curves);\n }\n }\n }\n const edgeCurveCount = edgeCurves.length - edgeCurveStart;\n if (edgeCurveCount > 0) {\n edgeCurveRuns.set(ei, { start: edgeCurveStart, count: edgeCurveCount });\n }\n const arrowCount = arrows.length - arrowStart;\n if (arrowCount > 0) {\n arrowRuns.set(ei, { start: arrowStart, count: arrowCount });\n }\n }\n for (const [nodeId, segments] of Object.entries(nodePositions)) {\n const node = nodeById.get(nodeId);\n if (!node) {\n continue;\n }\n if (viewportBounds && !isPolylineInBounds(segments, viewportBounds)) {\n continue;\n }\n const faded = highlight !== void 0 && !highlight.nodeIds.has(nodeId);\n const own = faded ? LIFT_BACKDROP_COLOR : getNodeColor(\n node,\n nodeIndexMap.get(nodeId) ?? 0,\n colorScheme,\n colorRange\n );\n const color = faded ? fadeAbgr(own, FADED_ALPHA) : own;\n const width = nodeWidthPx(node, contigThickness, nodeWidth, depthNorm);\n const nodeThickness = width / 2;\n const start = nodeStrokes.length;\n const slots = nodePathSlots.get(nodeId);\n const slotWidth = width / pathCount;\n const drawable = segments.length >= 2;\n const lanes = highlight?.walks.length && !faded && !slots?.length ? highlight.walks : void 0;\n if (drawable && lanes) {\n const laneWidth = walkLaneWidthPx(width, lanes.length);\n const normals = pointNormalsOf(segments, yToX);\n lanes.forEach((walk, lane) => {\n const laneColor = walk.colors.get(nodeId);\n if (laneColor === void 0) {\n return;\n }\n const offset = (lane - (lanes.length - 1) / 2) * laneWidth * worldPerScreenPx;\n nodeStrokes.push({\n points: lanes.length === 1 ? segments : offsetPolyline(segments, normals, offset, yToX),\n thickness: laneWidth / 2,\n color: laneColor\n });\n });\n } else if (drawable && slots?.length && slotWidth >= MIN_PATH_STRIPE_PX) {\n const normals = pointNormalsOf(segments, yToX);\n for (const slot of slots) {\n const offset = (slot - (pathCount - 1) / 2) * slotWidth * worldPerScreenPx;\n const stripe = pathColorByIndex[slot] ?? EDGE_PATH_FALLBACK_COLOR;\n nodeStrokes.push({\n points: offsetPolyline(segments, normals, offset, yToX),\n thickness: slotWidth / 2,\n // a node off the lifted walk fades whichever way it is painted\n color: faded ? fadeAbgr(stripe, FADED_ALPHA) : stripe\n });\n }\n } else if (drawable) {\n nodeStrokes.push({ points: segments, thickness: nodeThickness, color });\n }\n const count = nodeStrokes.length - start;\n if (count > 0) {\n nodeStrokeRuns.set(nodeId, { start, count });\n }\n }\n return {\n nodeStrokes,\n nodeStrokeRuns,\n arrows,\n arrowRuns,\n edgeCurves,\n edgeCurveRuns\n };\n}\n\nexport {\n LIFT_BACKDROP_COLOR,\n FADED_ALPHA,\n LIFT_BACKDROP_CSS,\n hslToRgb,\n REFERENCE_RAMP_ALT_COLOR,\n REFERENCE_RAMP_ALT_CSS,\n rampFraction,\n computeReferenceRamp,\n computeColorSchemeRange,\n getNodeColor,\n endTangent,\n buildGeometry\n};\n", "import {\n REFERENCE_RAMP_ALT_COLOR,\n hslToRgb\n} from \"./chunk-JGHZ3N34.js\";\nimport {\n packAbgr\n} from \"./chunk-G2FD7S3C.js\";\nimport {\n REFERENCE_RAMP_LIGHTNESS,\n REFERENCE_RAMP_SATURATION,\n rampHueAt\n} from \"./chunk-GQZVR5DW.js\";\n\n// src/walkEncoding.ts\nvar WALK_FIELDS = [\n { value: \"progress\", label: \"Progress along the walk\" },\n { value: \"walk\", label: \"One colour for the walk\" },\n { value: \"reference\", label: \"Reference position\" }\n];\nvar WALK_SCHEMES = [\n { value: \"grey\", label: \"Grey to black\", ends: [\"#a3a3a3\", \"#151515\"] },\n { value: \"blue\", label: \"Cyan to navy\", ends: [\"#6ee0f0\", \"#0b2c7a\"] },\n { value: \"red\", label: \"Yellow to red\", ends: [\"#ffd24a\", \"#b3121b\"] },\n { value: \"purple\", label: \"Pink to plum\", ends: [\"#f5a3d8\", \"#5e1a6e\"] },\n { value: \"green\", label: \"Lime to forest\", ends: [\"#b6e36c\", \"#0b5d3b\"] },\n { value: \"rainbow\", label: \"Rainbow\" }\n];\nvar FAMILIES = [\"blue\", \"red\", \"purple\", \"green\"];\nvar isField = (v) => WALK_FIELDS.some((f) => f.value === v);\nvar isScheme = (v) => WALK_SCHEMES.some((s) => s.value === v);\nfunction resolveEncoding(layer, reference, picked, alone = true) {\n const { field: askedField, scheme: askedScheme } = layer.color ?? {};\n const field = isField(askedField) ? askedField : alone ? \"progress\" : \"walk\";\n const family = reference ? \"grey\" : FAMILIES[picked % FAMILIES.length];\n const scheme = isScheme(askedScheme) ? askedScheme === \"rainbow\" && field !== \"reference\" ? family : askedScheme : family;\n return { field, scheme };\n}\nvar BASE_T = 0.5;\nvar toLinear = (c) => c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\nvar toGamma = (c) => c <= 31308e-7 ? c * 12.92 : 1.055 * c ** (1 / 2.4) - 0.055;\nfunction oklab(hex) {\n const [r, g, b] = [1, 3, 5].map(\n (i) => toLinear(Number.parseInt(hex.slice(i, i + 2), 16) / 255)\n );\n const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);\n const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);\n const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);\n return [\n 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s\n ];\n}\nfunction oklabToRgb([L, a, b]) {\n const l = (L + 0.3963377774 * a + 0.2158037573 * b) ** 3;\n const m = (L - 0.1055613458 * a - 0.0638541728 * b) ** 3;\n const s = (L - 0.0894841775 * a - 1.291485548 * b) ** 3;\n return [\n 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,\n -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,\n -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s\n ].map((c) => toGamma(Math.max(0, Math.min(1, c))) * 255);\n}\nvar endsCache = /* @__PURE__ */ new Map();\nfunction oklabEnds(scheme) {\n if (!endsCache.has(scheme)) {\n const family = WALK_SCHEMES.find((s) => s.value === scheme);\n endsCache.set(\n scheme,\n family && \"ends\" in family ? family.ends.map(oklab) : void 0\n );\n }\n return endsCache.get(scheme);\n}\nfunction schemeRgb(scheme, t) {\n const x = Math.max(0, Math.min(1, t));\n const ends = oklabEnds(scheme);\n if (!ends) {\n return hslToRgb(\n rampHueAt(x),\n REFERENCE_RAMP_SATURATION,\n REFERENCE_RAMP_LIGHTNESS\n ).map((c) => c * 255);\n }\n const [from, to] = ends;\n return oklabToRgb(from.map((v, i) => v + (to[i] - v) * x));\n}\nfunction schemeCss(scheme, t) {\n const [r, g, b] = schemeRgb(scheme, t).map(Math.round);\n return `rgb(${r}, ${g}, ${b})`;\n}\nfunction schemeColor(scheme, t) {\n const [r, g, b] = schemeRgb(scheme, t).map(Math.round);\n return packAbgr(r, g, b, 255);\n}\nfunction encodedColor({ field, scheme }, t) {\n return field === \"walk\" ? schemeColor(scheme, BASE_T) : t === void 0 ? NO_VALUE_COLOR : schemeColor(scheme, t);\n}\nvar NO_VALUE_COLOR = REFERENCE_RAMP_ALT_COLOR;\nfunction encodingStops({ field, scheme }) {\n const stop = (offset, t) => ({\n offset,\n color: schemeCss(scheme, t),\n abgr: schemeColor(scheme, t)\n });\n return field === \"walk\" ? [stop(0, BASE_T)] : Array.from({ length: 7 }, (_, i) => stop(i / 6, i / 6));\n}\nfunction encodingSwatchCss(encoding) {\n const stops = encodingStops(encoding);\n return stops.length === 1 ? stops[0].color : `linear-gradient(to right, ${stops.map((s) => `${s.color} ${s.offset * 100}%`).join(\", \")})`;\n}\n\nexport {\n WALK_FIELDS,\n WALK_SCHEMES,\n resolveEncoding,\n schemeRgb,\n schemeCss,\n schemeColor,\n encodedColor,\n NO_VALUE_COLOR,\n encodingStops,\n encodingSwatchCss\n};\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["packAbgr", "r", "g", "b", "a", "abgrRed", "c", "abgrGreen", "abgrBlue", "abgrAlpha", "abgrToCssRgba", "normalizedRgbToCssRgba", "alpha", "fadeAbgr", "brightenAbgr", "factor", "t", "lift", "v", "REFERENCE_RAMP_MAX_HUE", "REFERENCE_RAMP_SATURATION", "REFERENCE_RAMP_LIGHTNESS", "rampHueCss", "hue", "rampHueAt", "frac", "rampHue", "bp", "domain", "HUE_STOP_DEG", "rampStops", "start", "reversed", "low", "high", "n", "_", "i", "RAMP_GRADIENT_STOPS", "RAMP_GRADIENT_CSS", "s", "cache", "weakMemo", "baseEdgeCurves", "nodePositions", "graph", "axis", "deletions", "version", "routes", "stranded", "curves", "ei", "bypassed", "edgeCurves", "edgeCurvesOf", "MAX_BACKBONE_HOPS", "buildNeighbors", "graph", "neighbors", "edge", "pushTo", "flankingSpan", "nodeId", "nodeById", "seen", "frontier", "minEnd", "maxStart", "hop", "next", "id", "adjacent", "neighborId", "neighbor", "isBackbone", "nodeReferenceSpan", "node", "referenceMidpoints", "midpoints", "span", "EDGE_DEFAULT_COLOR", "packAbgr", "EDGE_PATH_FALLBACK_COLOR", "EDGE_DELETION_COLOR", "DELETION_THICKNESS_FACTOR", "LIFT_BACKDROP_COLOR", "FADED_ALPHA", "LIFT_BACKDROP_CSS", "abgrToCssRgba", "fadeAbgr", "DELETION_DASH_PX", "MIN_PATH_STRIPE_PX", "MIN_SCALE_FOR_OFFSET", "ARROW_LENGTH_BASE_PX", "ARROW_LENGTH_PER_EDGE_PX", "ARROW_HALF_WIDTH_BASE_PX", "ARROW_HALF_WIDTH_PER_EDGE_PX", "MIN_LINK_HEADS", "MIN_ARROW_FIT", "MIN_ARROW_SCALE", "ARROW_CURVE_STEPS", "ABUTTING_PX", "walkX", "walkY", "walkPx", "backFromEnd", "curves", "scale", "yToX", "untilPx", "most", "last", "n", "px", "ci", "c", "k", "t", "u", "a", "b", "d", "e", "x", "y", "walkPointAt", "i", "from", "to", "f", "arrowheadFor", "edgeHalfWidth", "nodeHalfWidth", "color", "fromSegments", "toSegments", "length", "lengthPx", "abutting", "inset", "fit", "polylinePx", "tip", "base", "dx", "dy", "endTangent", "intoDirection", "leavesStart", "edge", "segments", "first", "stranded", "strandSides", "gap", "p", "final", "normal", "len", "pointNormalsOf", "rawPoints", "points", "before", "after", "nx", "ny", "dot", "offsetPolyline", "normals", "distance", "hslToRgb", "h", "s", "l", "m", "r", "g", "packHsl", "DEPTH_GRADIENT", "STABLE_RANK_GRADIENT", "NODE_LENGTH_GRADIENT", "sampleGradient", "stops", "pos", "hashColor", "str", "alpha", "nameHue", "PATH_SATURATION", "PATH_LIGHTNESS", "REFERENCE_RAMP_ALT_RGB", "REFERENCE_RAMP_ALT_COLOR", "REFERENCE_RAMP_ALT_CSS", "rampFraction", "node", "ramp", "mid", "isBackbone", "computeReferenceRamp", "graph", "domain", "midpoints", "referenceMidpoints", "min", "max", "computeColorSchemeRange", "referenceRamp", "minDepth", "maxDepth", "minLength", "maxLength", "maxRank", "getNodeColor", "nodeIndex", "colorScheme", "range", "rampHueAt", "REFERENCE_RAMP_SATURATION", "REFERENCE_RAMP_LIGHTNESS", "hue", "into", "candidates", "isPolylineInBounds", "bounds", "hit", "isBezierInBounds", "cMinX", "cMaxX", "cMinY", "cMaxY", "paletteCache", "pathPaletteOf", "palette", "pathColorByIndex", "pathIndexByName", "paths", "pathHueAt", "slotsCache", "NO_SLOTS", "pathSlotsOf", "slots", "pathIdx", "path", "nodeId", "pushTo", "buildGeometry", "options", "nodePositions", "nodeById", "contigThickness", "connectorThickness", "drawPaths", "nodeWidth", "highlight", "axis", "linearLayout", "viewportBounds", "deletions", "deletionRoutes", "hiddenEdges", "version", "depthNorm", "meanDepth", "worldPerScreenPx", "yToXOf", "sharedCurves", "baseEdgeCurves", "nodeStrokes", "nodeStrokeRuns", "arrows", "arrowRuns", "edgeCurves", "edgeCurveRuns", "colorRange", "nodeIndexMap", "pathCount", "pathColorByName", "name", "nodePathSlots", "showArrows", "ei", "baseCurves", "numPaths", "isDeletion", "onWalk", "edgeThickness", "ribbons", "plainEdgeColor", "edgeColor", "toNode", "intoHalfWidth", "nodeWidthPx", "inView", "stroke", "thickness", "dash", "dashCurves", "arrowOn", "head", "edgeCurveStart", "arrowStart", "laneWalks", "fromNode", "width", "laneWidth", "walkLaneWidthPx", "walk", "lane", "offset", "translateCurves", "offsets", "pathRibbonOffsets", "arrowRibbon", "ribbonColor", "edgeCurveCount", "arrowCount", "faded", "own", "nodeThickness", "start", "slotWidth", "drawable", "lanes", "laneColor", "slot", "stripe", "count", "WALK_FIELDS", "WALK_SCHEMES", "FAMILIES", "isField", "v", "f", "isScheme", "s", "resolveEncoding", "layer", "reference", "picked", "alone", "askedField", "askedScheme", "field", "family", "scheme", "BASE_T", "toLinear", "c", "toGamma", "oklab", "hex", "r", "g", "b", "l", "m", "oklabToRgb", "L", "a", "endsCache", "oklabEnds", "schemeRgb", "t", "x", "ends", "hslToRgb", "rampHueAt", "REFERENCE_RAMP_SATURATION", "REFERENCE_RAMP_LIGHTNESS", "from", "to", "schemeCss", "schemeColor", "packAbgr", "encodedColor", "NO_VALUE_COLOR", "REFERENCE_RAMP_ALT_COLOR", "encodingStops", "stop", "offset", "_", "i"]
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{b as Jt}from"./chunk-MVVXRZXV.js";import{d as Rt,g as be,h as WA}from"./chunk-VIVPTP5Z.js";import{a as Lt,b as _t}from"./chunk-OGQ6OQDN.js";import{g as Gt}from"./chunk-NDRLCGPC.js";var lA=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"],Mt=t=>lA!=null&&t in Object(lA)?lA[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/core/data_adapters/BaseAdapter' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var Eo=Mt("BaseFeatureDataAdapter");var Ut=Mt("cachedSetup");var fo=lA&&lA.__esModule?lA.default:lA;var IA=class extends Error{constructor(e,A,n,i,r){super(e),this.regionTooLarge=!0,this.name="NodeLimitError",this.limit=A,this.windowBp=n,this.fitsBp=i,this.zoomHelps=r===void 0,r&&(this.bytes=r.bytes)}},yA="#";function Se(t){return t.split(yA)[0]}function Fe(t){let e=t.split(yA);return e.length>=3?e.slice(2).join(yA):e.length===2?e[1]:t}function GA(t){let e=t.split(yA);return e.length>=3?`${e[0]}${yA}${e[1]}`:void 0}function VA(t,e){return e!==void 0&&(t===e||t.startsWith(e+yA))}var Yt=t=>Number.parseFloat(t.toPrecision(3));function LA(t){let e=Yt(t/1e6);return e>=1?`${e.toLocaleString("en-US")}Mbp`:t>=1e3?`${Yt(t/1e3).toLocaleString("en-US")}Kbp`:`${Math.floor(t)}bp`}var Z=t=>(t-(t&1))/2,nA=t=>t&1?t-1:t+1;function _A(t,e,A){if(t===".")return A;let n=0,i=!1;for(let r=0;r<=t.length;r++){let o=r<t.length?t.charCodeAt(r):44;if(o===44){let s=i?-n:n,I=s&1;e.id+=(s-I)/2,A.push(e.id*2+I),n=0,i=!1}else o===45?i=!0:n=n*10+(o-48)}return A}function MA(t){return t==="."?[]:t.split(",").map(Number)}function Kt(t,e){return t>nA(e)?[nA(e),nA(t)]:[t,e]}function ve(t,e){let A=t.lastIndexOf(":");return{refName:t[3]==="Z"?t.slice(5,A):e,start:+t.slice(A+1)}}function Re(t,e,A){let n={};for(let i=e;i<t.length;i++){let r=t[i],o=r.slice(0,2);if(o==="pv")n.prev=ve(r,A);else if(o==="nx")n.next=ve(r,A);else if(o==="pg"||o==="ng"){let s=o==="pg"?"prevRecord":"nextRecord";n[s]={...n[s],bp:+r.slice(5)}}else if(o==="pr"||o==="nr"){let s=o==="pr"?"prevRecord":"nextRecord";n[s]={bp:0,...n[s],chunk:ve(r,A)}}}return n}var Je=class{constructor(){this.handles=[],this.before=[0],this.occurrences=new Map}add(e,A){for(let n=0;n<e.length;n++){let i=e[n],r=this.handles.length;this.handles.push(i),this.before.push(this.before[r]+A[n]);let o=Z(i),s=this.occurrences.get(o);s?s.push(r):this.occurrences.set(o,[r])}}bp(e){return this.before[e]}first(e){var A;return(A=this.occurrences.get(Z(e)))===null||A===void 0?void 0:A[0]}nearest(e,A){let n=this.occurrences.get(Z(e));if(!n)return;let i=0,r=n.length;for(;i<r;){let I=i+r>>1;n[I]<=A?i=I+1:r=I}let o=n[i-1],s=n[i];return o===void 0||s===void 0?o??s:s-A<=A-o?s:o}reach(e,A,n){var i;let r=this.handles[e]===A,o;for(let s of(i=this.occurrences.get(Z(n)))!==null&&i!==void 0?i:[])r&&s>=e&&this.handles[s]===n?(o===void 0||s<o)&&(o=s):!r&&s<=e&&nA(this.handles[s])===n&&(o===void 0||s>o)&&(o=s);return o}handleAt(e,A){return A?this.handles[e]:nA(this.handles[e])}},W=class extends Error{},Ge=(t,e)=>e?t.exit===-1?-1:nA(t.exit):t.entry,Tt=(t,e)=>e?t.entry===-1?-1:nA(t.entry):t.exit,$A=(t,e,A)=>e?nA(t.interior[t.interior.length-1-A]):t.interior[A];function Ki(t){let e=[];if(t!=="."){let A=0,n=0,i=!1,r=0,o=!1;for(let s=0;s<=t.length;s++){let I=s<t.length?t.charCodeAt(s):44;if(I===44){let a=i?-n:n,g=o?r:a,h=g&1;A+=(g-h)/2,e.push(A,h,o?a:0),n=0,i=!1,o=!1}else I===58?(r=i?-n:n,n=0,i=!1,o=!0):I===45?i=!0:n=n*10+(I-48)}}return e}function qt(t,e,A,n,i,r){let o=n.indexOf(":"),s=A+ +(o<0?n:n.slice(0,o)),I=o>=0,a=I?+n.slice(o+1):0,g=D=>{let u=e[D];if(!u)throw new W(`route ${D} is not in the chunk`);return u},h=0;if(i.length>0&&Ge(g(i[0]),i[1]===1)===-1){if(!r.route(i[0],i[1]===1))return;h=3}let E=A,Q=t.first(E);if(Q===void 0)throw new W("a walk row starts off its chunk");r.step(E);let B=(D,u)=>{let d=t.handles[Q]===E,w=I?Q+(d?u:-u):t.reach(Q,E,D);if(w===void 0||w<0||w>=t.handles.length)throw new W("a walk row runs off its chunk");w!==Q&&r.stretch(Q,w,d),Q=w,E=t.handleAt(w,d)};for(;h<i.length;h+=3){let D=i[h],u=i[h+1]===1,d=g(D),w=Ge(d,u);if(w===-1)throw new W("an open route after the first choice");if(B(w,i[h+2]),!r.route(D,u))return;let m=Tt(d,u);if(m===-1)return;if(E=m,Q=t.nearest(E,Q),Q===void 0)throw new W("a route lands off its chunk");r.step(E)}if(B(s,a),E!==s)throw new W("a walk row misses its last handle")}function Ti(t,e,A,n,i){let r=new Int32Array(i),o=new Uint8Array(i),s=0,I=a=>{if(s>=i)throw new W("a walk row decodes to more steps than it states");r[s]=Z(a),o[s++]=a&1};if(qt(t,e,+A[9],A[10],n,{step:I,stretch(a,g,h){if(h)for(let E=a+1;E<=g;E++)I(t.handles[E]);else for(let E=a-1;E>=g;E--)I(nA(t.handles[E]))},route(a,g){let h=e[a];for(let E=0;E<h.interior.length;E++)I($A(h,g,E));return!0}}),s!==i)throw new W(`a walk row decodes to ${s} steps, not ${i}`);return{ids:r,rev:o}}function Ht(t,e,A,n,i){let r=t.slice(e).find(s=>s.startsWith("SQ:Z:"));if(r===void 0)return;let o=5;for(let s=0;s<A.length;s++){let I=n[s];i.set(A[s],r.slice(o,o+I)),o+=I}}var qi=16384;function Zi(t){let e=t[0],A=[+t[10],+t[11]],n=MA(t[7]);for(let i=1;i<n.length;i++)n[i]+=n[i-1];return{chunkStart:+t[1],name:t[4],fragStart:+t[5],hapOffset:+t[6],piece:n[0],n:A.length,steps:{ids:Int32Array.from(A,Z),rev:Uint8Array.from(A,i=>i&1)},...Re(t,13,e),abridged:{pieces:n,steps:+t[8],bp:+t[9],detail:{refName:`${e}~${t[1]}`,start:+t[12]*qi}}}}function Le(t,e,A=!1){var n,i,r;let o=new Je,s=new Map,I=[],a={sequences:new Map,rows:[],nodes:new Map,ends:[],chunk:{path:o,routes:I,walks:[],lengths:s}},g={id:0},h=t.filter(Q=>Q[3]==="ref").sort((Q,B)=>+Q[6]-+B[6]);for(let Q of h){let B=Q[0],D=_A(Q[9],{id:0},[]),u=MA(Q[10]),d=+Q[6];o.add(D,u),A&&Ht(Q,11,D.map(Z),u,a.sequences);let w=d;for(let m=0;m<D.length;m++){let c=Z(D[m]),y=u[m];s.set(c,y),a.nodes.has(c)||a.nodes.set(c,{refName:Q[4],start:w,end:w+y,rank:0}),w+=y}a.ends.push({name:Q[4],fragStart:+Q[5],piece:+Q[7],first:D[0],last:D.at(-1)}),(e===void 0||e(Q[4]))&&a.rows.push({chunkStart:+Q[1],name:Q[4],fragStart:+Q[5],hapOffset:d,piece:+Q[7],n:D.length,steps:{ids:Int32Array.from(D,Z),rev:Uint8Array.from(D,m=>m&1)},...Re(Q,11,B)})}for(let Q of t)if(Q[3]==="nodes"){let B=MA(Q[4]),D=MA(Q[5]),u=0;for(let d=0;d<B.length;d++)u+=B[d],B[d]=u,s.set(u,D[d]);A&&Ht(Q,6,B,D,a.sequences)}else if(Q[3]==="route"){let B=_A(Q[4],g,[]),D=_A(Q[5],g,[]),u=_A(Q[6],g,[]);I.push({entry:(n=B[0])!==null&&n!==void 0?n:-1,interior:D,exit:(i=u[0])!==null&&i!==void 0?i:-1})}let E=Q=>{let B=I[Q];if(!B)throw new W(`route ${Q} is not in the chunk`);return B};for(let Q of t){if(Q[3]==="abridged"){let y=Q[4];(e===void 0||e(y))&&a.rows.push(Zi(Q));continue}if(Q[3]!=="walk")continue;let B=Ki(Q[11]);a.chunk.walks.push({cols:Q,choices:B});let D=Q[4],u=+Q[9],d=Q[10],w=d.indexOf(":"),m=u,c=u+ +(w<0?d:d.slice(0,w));if(B.length>0){let y=E(B[0]),f=B[1]===1;Ge(y,f)===-1&&(m=$A(y,f,0));let C=B.length-3,N=E(B[C]),x=B[C+1]===1;Tt(N,x)===-1&&(c=$A(N,x,N.interior.length-1))}if(a.ends.push({name:D,fragStart:+Q[5],piece:+Q[7],first:m,last:c}),e===void 0||e(D)){let y=+Q[8],f=0;for(let C=0;C<B.length;C+=3){f+=E(B[C]).interior.length;for(let N of E(B[C]).interior){let x=Z(N);if(!a.nodes.has(x)){let p=(r=s.get(x))!==null&&r!==void 0?r:0;a.nodes.set(x,{refName:D,start:0,end:p,rank:1})}}}a.rows.push({chunkStart:+Q[1],name:D,fragStart:+Q[5],hapOffset:+Q[6],piece:+Q[7],n:y,interior:f,steps:Ti(o,I,Q,B,y),...Re(Q,12,Q[0])})}}return a}function Zt(t,e,A,n){let i=new Set;for(let s of e)t.some(({path:I})=>I.occurrences.has(s))||i.add(s);let r=(s,I)=>{let[a,g]=Kt(s,I);n(a,g)},o=new Map;for(let{path:s,routes:I,walks:a,lengths:g}of t){let h=s.handles;for(let d=1;d<h.length;d++)e.has(Z(h[d-1]))&&e.has(Z(h[d]))&&r(h[d-1],h[d]);let E=new Uint8Array(I.length);for(let d=0;d<I.length;d++){let{entry:w,interior:m,exit:c}=I[d],y=!1,f=w;for(let C of m){let N=e.has(Z(C));y||(y=i.has(Z(C))),N&&f!==-1&&e.has(Z(f))&&r(f,C),f=C}f!==-1&&c!==-1&&e.has(Z(f))&&e.has(Z(c))&&r(f,c),E[d]=y?1:0}let Q=d=>{var w;return(w=g.get(Z(d)))!==null&&w!==void 0?w:0},B=new Float64Array(I.length).fill(-1),D=d=>(B[d]<0&&(B[d]=I[d].interior.reduce((w,m)=>w+Q(m),0)),B[d]),u=new Uint8Array(I.length);for(let{cols:d,choices:w}of a){let m=0;for(let f=0;f<w.length;f+=3){let C=w[f];E[C]&&!u[C]&&m++}if(m===0)continue;let c=d[4],y=+d[6];qt(s,I,+d[9],d[10],w,{step(f){y+=Q(f)},stretch(f,C,N){y+=N?s.bp(C+1)-s.bp(f+1):s.bp(f)-s.bp(C)},route(f,C){if(!E[f]||u[f])return y+=D(f),!0;u[f]=1;let N=I[f];for(let x=0;x<N.interior.length;x++){let p=$A(N,C,x),F=Z(p),J=Q(p);if(i.has(F)){let l=o.get(F);(!l||c<l.refName||c===l.refName&&y<l.start)&&o.set(F,{refName:c,start:y,end:y+J,rank:1})}y+=J}return m--,m>0}})}}for(let[s,I]of o)A(s,I)}function Oi(t){let e=[];for(let A of t){if(A[3]!=="ref")continue;let n=_A(A[9],{id:0},[]),i=MA(A[10]),r=+A[6];for(let o=0;o<n.length;o++){let s=i[o];e.push({id:Z(n[o]),refName:A[4],start:r,end:r+s,rank:0}),r+=s}}return e}function Ot(t){let e=new Map;for(let n of t){let i=`${n.name} ${n.fragStart}`,r=e.get(i);r||(r=new Map,e.set(i,r)),r.set(n.piece,n)}let A=[];for(let n of e.values())for(let[i,r]of n){let o=n.get(i+1);o&&A.push(Kt(r.last,o.first))}return A}var Xt=["elsewhere","break","end"];function _e(t,e){let A=new RegExp(`(?:^|\\t)${e}:i:(\\d+)`).exec(t);return A?+A[1]:void 0}function Me(t){var e,A,n;let i={references:[],haplotypes:[],long:[]};for(let r of t){let[o,s="",I="",a=""]=r.split(" ");o==="#reference"?i.references.push(s):o==="#haplotype"?i.haplotypes.push(s):o==="#long"?i.long.push({refName:s,start:+I,end:+a}):((e=i.format)!==null&&e!==void 0||(i.format=_e(r,"format")),(A=i.chunk)!==null&&A!==void 0||(i.chunk=_e(r,"chunk")),(n=i.maxNode)!==null&&n!==void 0||(i.maxNode=_e(r,"maxnode")))}return i}function Wt(t,e){return t===void 0?1:Math.max(1,Math.ceil(t/e))}function Ae(t,e,A=1){return Math.max(0,(Math.floor(t/e)-A)*e)}function ee(t,e,A,n){let{chunk:i,long:r}=t;if(r.length===0)return Ae(A,i,Wt(t.maxNode,i));let o=Ae(A,i);for(let s of r)s.refName===e&&s.start<n&&s.end>A&&(o=Math.min(o,Ae(s.start,i)));return o}function Vt(t,e){return t===void 0||t.length===0?void 0:A=>VA(A,e)||t.some(n=>VA(A,n))}function Ue(t,e){var A;return Vt(t,(A=GA(e))!==null&&A!==void 0?A:e)}function Ye(t){let e=new Map,A=[];for(let n of t){if(n.abridged){A.push(Pt([n]));continue}let i=`${n.name} ${n.fragStart}`,r=e.get(i);r?r.push(n):e.set(i,[n])}for(let n of e.values()){n.sort((r,o)=>r.piece-o.piece);let i=0;for(let r=1;r<=n.length;r++)(r===n.length||n[r].piece!==n[r-1].piece+1)&&(A.push(Pt(n.slice(i,r))),i=r)}return A}function Pt(t){let e=t.reduce((s,I)=>s+I.n,0),A=new Int32Array(e),n=new Uint8Array(e),i=0;for(let s of t)A.set(s.steps.ids,i),n.set(s.steps.rev,i),i+=s.n;let r=t[0],o=t.at(-1);return{name:r.name,fragStart:r.fragStart,hapOffset:r.hapOffset,firstPiece:r.piece,ids:A,rev:n,prev:r.prev,next:o.next,prevRecord:r.prevRecord,nextRecord:o.nextRecord,...r.abridged?{abridged:r.abridged}:{}}}function He(t,e,A,{contained:n=!1,context:i=0}={}){let r=l=>{var k;return((k=e.get(l))===null||k===void 0?void 0:k.onWindow)===!0},o=l=>{let k=e.get(l);return k?.rank===0?k:void 0},s=new Map,I=l=>{l&&s.set(`${l.refName}:${l.start}`,l)},a=(l,k,b)=>{let{ids:S}=l,v=k+b;for(;v>=0&&v<S.length&&o(S[v])===void 0;)v+=b;if(v<0||v>=S.length)return I(b<0?l.prev:l.next),v-b;let L=o(S[k]),_=o(S[v]);return _.refName!==A?v-b:v===k+b&&(_.start===L.end||_.end===L.start)?k:v},g=1/0,h=-1/0,E=[],Q=l=>{let k=e.get(l);return k===void 0?0:k.end-k.start},B=l=>{let{ids:k}=l,b=0,S=-1,v=-1;for(let L=0;L<=k.length;L++){let _=L<k.length?e.get(k[L]):void 0;if(L===k.length||_?.rank===0&&!_.onWindow){if(S>=0){for(let q=0;S>b&&q<i;)q+=Q(k[--S]);for(let q=0;v<L-1&&q<i;)q+=Q(k[++v]);S===0&&I(l.prev),v===k.length-1&&I(l.next),E.push({run:l,first:S,last:v})}b=L+1,S=-1}else _?.onWindow&&(S<0&&(S=L),v=L)}},D=l=>{let{ids:k}=l,b=-1,S=-1;for(let v=0;v<k.length;v++)r(k[v])&&(b<0&&(b=v),S=v);if(b>=0){if(l.name!==A){b=a(l,b,-1),S=a(l,S,1);for(let v of[b,S]){let L=o(k[v]);L&&(g=Math.min(g,L.start),h=Math.max(h,L.end))}}E.push({run:l,first:b,last:S})}},u=1/0,d=-1/0;for(let l of e.values())l.onWindow&&(u=Math.min(u,l.start),d=Math.max(d,l.end));let w=l=>{let k=o(l.ids[0]),b=o(l.ids.at(-1));k?.refName!==A||b?.refName!==A||Math.max(k.end,b.end)>u&&Math.min(k.start,b.start)<d&&E.push({run:l,first:0,last:l.ids.length-1})};for(let l of t)l.abridged?w(l):n?B(l):D(l);let m=l=>{let k=o(l);return r(l)||k?.refName===A&&k.end>g&&k.start<h},c=new Set;for(let[l,k]of e)k.onWindow&&c.add(l);for(let l of E){let{ids:k}=l.run;if(l.run.name===A){for(;l.first>0&&m(k[l.first-1]);)l.first--;for(;l.last<k.length-1&&m(k[l.last+1]);)l.last++}for(let b=l.first;b<=l.last;b++)c.add(k[b])}let y=new Set(E.filter(l=>l.run.abridged).map(l=>l.run)),f=(l,k,b)=>{let S=0;for(let v=k;v<b;v++)S+=Q(l[v]);return S},C=new Map;for(let l of t){let k=`${l.name} ${l.fragStart}`,b=C.get(k);b?b.push(l):C.set(k,[l])}let N=new Map;for(let l of C.values())l.sort((k,b)=>k.firstPiece-b.firstPiece),l.forEach((k,b)=>{N.set(k,[l[b-1],l[b+1]])});let x=new Map,p=l=>{var k,b;let S=x.get(l);return S===void 0&&(S=l.hapOffset+((b=(k=l.abridged)===null||k===void 0?void 0:k.bp)!==null&&b!==void 0?b:f(l.ids,0,l.ids.length)),x.set(l,S)),S},F=(l,k,b)=>{var S;let v=b>0?{trimmed:b}:{},L=k?l.next:l.prev;if(L){let q=(S=N.get(l))===null||S===void 0?void 0:S[k?1:0];return q?{kind:"elsewhere",chunk:L,bp:k?q.hapOffset-p(l):l.hapOffset-p(q),...v}:{kind:"elsewhere",chunk:L,...v}}let _=k?l.nextRecord:l.prevRecord;return _?{kind:"break",..._,...v}:{kind:"end",...v}},J=[];for(let{run:l,first:k,last:b}of E){let{ids:S,rev:v}=l;if(y.has(l)){J.push({name:l.name,fragStart:l.fragStart,hapStart:l.hapOffset,hapEnd:p(l),ids:S,rev:v,before:F(l,!1,0),after:F(l,!0,0),abridged:l.abridged});continue}let L=k,_=b;for(;L>0&&c.has(S[L-1]);)L--;for(;_<S.length-1&&c.has(S[_+1]);)_++;let q=l.hapOffset+f(S,0,L),R=q+f(S,L,_+1);J.push({name:l.name,fragStart:l.fragStart,hapStart:q,hapEnd:R,ids:S.subarray(L,_+1),rev:v.subarray(L,_+1),before:F(l,!1,q-l.hapOffset),after:F(l,!0,p(l)-R)})}return{kept:c,fragments:J,open:[...s.values()]}}function Ke(t,e,A,n){var i;for(let r of t.nodes.keys())!((i=e.get(r))===null||i===void 0)&&i.onWindow&&n.add(r);for(let{steps:r}of t.rows){let{ids:o}=r,s=-1;for(let I=0;I<o.length;I++){let a=e.get(o[I]);if(a?.onWindow){for(let g=s+1;s>=0&&g<I;g++)n.add(o[g]);s=I}else A&&a?.rank===0&&(s=-1)}}}function zt(t){let e=[],A=new Map,n={kinds:new Uint8Array(t.length),kindNames:[...Xt],bp:new Float64Array(t.length).fill(Number.NaN),trimmed:new Float64Array(t.length),chunkRefs:new Int32Array(t.length).fill(-1),chunkStarts:new Float64Array(t.length).fill(Number.NaN),chunkRefNames:e};return t.forEach((i,r)=>{var o;if(n.kinds[r]=Xt.indexOf(i.kind),n.trimmed[r]=(o=i.trimmed)!==null&&o!==void 0?o:0,"bp"in i&&i.bp!==void 0&&(n.bp[r]=i.bp),"chunk"in i&&i.chunk){let{refName:s,start:I}=i.chunk,a=A.get(s);a===void 0&&(a=e.length,A.set(s,a),e.push(s)),n.chunkRefs[r]=a,n.chunkStarts[r]=I}}),n}var Xi=(t,e)=>t.rank===0&&(e.rank!==0||t.refName<e.refName||t.refName===e.refName&&t.start<e.start),UA=class{constructor(e){this.nodes=new Map,this.sequences=new Map,this.links=[],this.chunks=[],this.window=e}placeNode(e,A){let n=this.nodes.get(e);if(n&&!Xi(A,n))return;let{window:i}=this;this.nodes.set(e,{...A,onWindow:A.rank===0&&A.refName===i.refName&&A.end>i.start-i.context&&A.start<i.end+i.context})}addLinkEnds(e,A){this.links.push(e,A)}addChunk(e){this.chunks.push(e)}addSequences(e){if(this.window.sequences)for(let[A,n]of e)this.sequences.set(A,n)}tables(e,A){this.chunks.length>0&&Zt(this.chunks,e,(f,C)=>{let N=this.nodes.get(f);N&&this.nodes.set(f,{...N,...C})},(f,C)=>{this.links.push(f,C)});let n=[];for(let f of e){let C=this.nodes.get(f);C&&n.push({...C,id:f})}n.sort((f,C)=>f.refName<C.refName?-1:f.refName>C.refName?1:f.start-C.start||f.id-C.id);let i=new Map,r=[],o=[],s=new Map,I=new Int32Array(n.length),a=new Int32Array(n.length),g=new Float64Array(n.length),h=new Int32Array(n.length);n.forEach(({id:f,refName:C,start:N,end:x,rank:p},F)=>{i.set(f,F),r.push(String(f));let J=s.get(C);J===void 0&&(J=o.length,s.set(C,J),o.push(C)),I[F]=x-N,a[F]=J,g[F]=N,h[F]=p});let E=f=>{let C=i.get(f);return C===void 0&&(C=r.length,i.set(f,C),r.push(String(f))),C},Q=new Map;for(let f=0;f<this.links.length;f+=2){let C=this.links[f],N=this.links[f+1],x=Math.floor(C/2),p=Math.floor(N/2);e.has(x)&&e.has(p)&&Q.set(`${x} ${C%2?"-":"+"} ${p} ${N%2?"-":"+"}`,f)}let B=[...Q.keys()].sort(),D=new Int32Array(B.length),u=new Int32Array(B.length),d=new Uint8Array(B.length);B.forEach((f,C)=>{let N=Q.get(f),x=this.links[N],p=this.links[N+1];D[C]=E(Math.floor(x/2)),u[C]=E(Math.floor(p/2)),d[C]=x%2|p%2<<1});let w=this.referenceFirst(A),m=new Int32Array(w.length+1);w.forEach(({ids:f},C)=>{m[C+1]=m[C]+f.length});let c=new Int32Array(m[w.length]),y=new Uint8Array(c.length);return w.forEach(({ids:f,rev:C},N)=>{let x=m[N];for(let p=0;p<f.length;p++)c[x+p]=E(f[p]);y.set(C,x)}),{nodes:{names:r,lengths:I,refs:a,starts:g,ranks:h,refNames:o},links:{from:D,to:u,strands:d},walks:{names:w.map(f=>f.name),starts:Float64Array.from(w,f=>f.hapStart),ends:Float64Array.from(w,f=>f.hapEnd),offsets:m,steps:c,reversed:y,before:zt(w.map(f=>f.before)),after:zt(w.map(f=>f.after)),abridgedSteps:Float64Array.from(w,f=>{var C,N;return(N=(C=f.abridged)===null||C===void 0?void 0:C.steps)!==null&&N!==void 0?N:NaN}),abridgedBp:Float64Array.from(w,f=>{var C,N;return(N=(C=f.abridged)===null||C===void 0?void 0:C.bp)!==null&&N!==void 0?N:NaN})}}}referenceFirst(e){let{refName:A}=this.window;return[...e].sort((n,i)=>+(i.name===A)-+(n.name===A)||(n.name<i.name?-1:n.name>i.name?1:n.hapStart-i.hapStart))}},Te={steps:"the step budget",bytes:"a byte budget of"},Pi=4,zi=t=>{var e;let A=(e=t.interior)!==null&&e!==void 0?e:0;return A+(t.n-A)/Pi};function qe(t,e,A,n,i,r,o=Te){var s;let I=0,a=new Map,g=new Set;for(let u of t){let d=zi(u);I+=d,a.set(u.chunkStart,((s=a.get(u.chunkStart))!==null&&s!==void 0?s:0)+d),g.add(u.name)}let h=e*A;if(I<=h)return;let E=n.end-n.start,Q=0,B=0;for(let u of[...a.keys()].sort((d,w)=>d-w)){if(Q+=a.get(u),Q>h)break;B=Math.max(B,u+i-n.start)}let D=!r&&g.size>2&&2*I/g.size<=h;return new IA(B>0?`Zoom in to about ${LA(B)}${D?", or choose fewer haplotypes,":""} to see the graph`:`Too many haplotype steps here to draw ${r?"these haplotypes":"every haplotype"} (${Math.round(Q).toLocaleString()} steps read, a step along the reference counting a quarter, over ${A} \xD7 ${o.steps} of ${e.toLocaleString()}); choose fewer haplotypes`,h,E,Math.max(B,1))}function Ze(t,e,A,n){let i=t.reduce((r,o)=>r+o.ids.length,0);return $t(i,e,A,n)}function te(t,e,A,n,i=A.end){return $t(t,e,A,n,i)}function $t(t,e,A,n,i=A.end){if(t<=e)return;let r=A.end-A.start,o=Math.min(i,A.end)-A.start,s=Math.max(1,Math.floor(o*e/t));return new IA(`Zoom in to about ${LA(s)}${n?"":", or choose fewer haplotypes,"} to see the graph`,e,r,s)}async function Oe(t,e,A,n,i=Te){let r=await t(A.end);if(r<=e)return;let o=0,s;for(let a=Math.floor(A.start/n)*n;a<A.end;a+=n){let g=await t(a+1);if(s??(s=g),g>e)break;o=a+n-A.start}let I=A.end-A.start;return o>0?new IA(`Zoom in to about ${LA(o)} to see the graph`,e,I,o):new IA(`Too much graph here to fetch, even zoomed in (${jt(s??r)} against ${i.bytes} ${jt(e)}). A satellite or rDNA array usually causes this: the graph folds the repeat into a few nodes that each haplotype loops through many times`,e,I,1,{bytes:r})}var jt=t=>`${(t/1e6).toFixed(1)} MB`;function Xe(t){var e;let A=t.split(" "),n=A.length>=8,i=n?5:0;return{anchored:n,segment:{refName:A[i],start:+A[i+1],end:+A[i+2],id:A[3],rank:+A[4],tags:(e=A[n?8:5])!==null&&e!==void 0?e:""}}}function ji(t){let e=t.tags.split(" ").find(n=>n.startsWith("SM:Z:"));if(e===void 0)return;let A=e.slice(5).split(",").map(n=>n.trim()).filter(Boolean);return A.length>0?A:void 0}function An(t){return{id:t.slice(0,-1),strand:t.slice(-1)}}function Pe(t){var e,A;let n=t.split(" "),i=An(n[3]),r=An(n[4]);return{source:i.id,sourceStrand:i.strand,target:r.id,targetStrand:r.strand,sourceSegment:{id:i.id,refName:n[5],start:+n[6],end:+n[7],rank:+n[8],tags:(e=n[13])!==null&&e!==void 0?e:""},targetSegment:{id:r.id,refName:n[9],start:+n[10],end:+n[11],rank:+n[12],tags:(A=n[14])!==null&&A!==void 0?A:""}}}function ze(t){return`${t.source}${t.sourceStrand}${t.target}${t.targetStrand}`}function YA(t,e,A){e.set(ze(A),A);let n=[];for(let i of[A.sourceSegment,A.targetSegment])t.has(i.id)||(t.set(i.id,i),n.push(i));return n}function tn(t,e,A){let n=o=>o.rank!==0||o.refName!==A.refName?0:o.end<=A.start?-1:o.start>=A.end?1:0,i=new Map(t),r=new Map;for(let o of e)(t.has(o.source)||t.has(o.target)||n(o.sourceSegment)*n(o.targetSegment)===-1)&&YA(i,r,o);for(let o of e)i.has(o.source)&&i.has(o.target)&&r.set(ze(o),o);return{segments:i,links:r}}function nn(t,e,A){let n=i=>i.refName!==A.refName||i.end<=A.start||i.start>=A.end;return[...en(t.filter(i=>i.rank>0),i=>e.has(i.id),A.end-A.start),...en(t.filter(i=>i.rank===0&&n(i)),()=>!0,0)]}function en(t,e,A){let n=[...t].sort((r,o)=>ne(r.refName,o.refName)||r.start-o.start),i=[];for(let r of n){let o=i.at(-1);o?.refName===r.refName&&r.start-o.end<=A?(o.needed||(o.needed=r.start>o.end||e(r)),o.end=Math.max(o.end,r.end)):i.push({refName:r.refName,start:r.start,end:r.end,needed:e(r)})}return i.filter(r=>r.needed).map(({refName:r,start:o,end:s})=>({refName:r,start:o,end:s}))}function rn(t,e,A){let n=i=>e.has(i.id)||A.some(r=>r.refName===i.refName&&i.start>=r.start&&i.end<=r.end);return t.filter(i=>n(i.sourceSegment)&&n(i.targetSegment))}var Wi=/^[A-Za-z][A-Za-z0-9]:[AifZJHB]:/;function Vi(t){let{id:e,refName:A,start:n,end:i,rank:r,tags:o}=t,s=o.split(" ").filter(a=>Wi.test(a)),I=s.length===0?"":` ${s.join(" ")}`;return`S ${e} * LN:i:${i-n} SN:Z:${A} SO:i:${n} SR:i:${r}${I}`}function $i(t){let{source:e,sourceStrand:A,target:n,targetStrand:i}=t;return`L ${e} ${A} ${n} ${i} 0M`}function ne(t,e){return t<e?-1:t>e?1:0}function ie(t,e){let A=[...t.values()].sort((i,r)=>ne(i.refName,r.refName)||i.start-r.start||ne(i.id,r.id)),n=[...e.keys()].sort((i,r)=>ne(i,r));return["H VN:Z:1.0",...A.map(i=>Vi(i)),...n.map(i=>$i(e.get(i)))].join(`
|
|
2
|
+
`)}function je(t,e){return`${t} ${e}`}function HA(t){let e=new Map;for(let A of t){e.set(A,A);let n=Se(A);if(n!==A){let i=Fe(A);e.set(je(n,i),A);let r=GA(A);r!==void 0&&e.set(je(r,i),A)}}return e}function KA(t,e,A){var n;return(n=t.get(je(e,A)))!==null&&n!==void 0?n:t.get(A)}var Ar=8,er=3,tr=4,nr=1e3,ir={stepBudget:4e6,byteBudget:8e6},re=class extends Error{constructor(){super(...arguments),this.name="WalkFormatError"}};function iA(t,e,A){if(!Number.isFinite(e)||!Number.isFinite(A))throw new Error(`${t}:${e}-${A} is not a finite range to query the graph's index for`)}function on(t){return t.filter(e=>!e.includes("~"))}function sn(t,e){return e?(e.throwIfAborted(),new Promise((A,n)=>{let i=()=>{n(e.reason instanceof Error?e.reason:new Error(String(e.reason)))};e.addEventListener("abort",i,{once:!0}),t.then(A,n).finally(()=>{e.removeEventListener("abort",i)})})):t}var We=class{constructor(e){this.walks=e}header(e={}){if(!this.headerRead){let A=this.walks.getHeaderLines().then(n=>{var i,r;let o=Me(n);if(o.format!==5)throw new re(`This walk file is format ${(i=o.format)!==null&&i!==void 0?i:1}; @jbrowse/graph-walks reads format 5, so rebuild it with gfa-to-tabix 1.4 or later`);return{...o,chunk:(r=o.chunk)!==null&&r!==void 0?r:65536}});A.catch(()=>{this.headerRead===A&&(this.headerRead=void 0)}),this.headerRead=A}return sn(this.headerRead,e.signal)}async referenceSequences(e={}){return on(await this.walks.getReferenceSequenceNames(e))}async sequenceFor(e,A,n={}){if(!this.lookupRead){let r=this.walks.getReferenceSequenceNames().then(o=>HA(on(o)));r.catch(()=>{this.lookupRead===r&&(this.lookupRead=void 0)}),this.lookupRead=r}let i=await sn(this.lookupRead,n.signal);return KA(i,e,A)}async queryStart(e,A={}){let{refName:n="",end:i=e+1}=A;return ee(await this.header(A),n,e,i)}async cut(e,A,n={}){var i,r;let{signal:o,keep:s,context:I=nr,stepBudget:a=1/0,byteBudget:g=1/0,links:h=!0,contained:E=!1,nodeLimit:Q=1/0,expand:B}=n,D=await this.header({signal:o}),{chunk:u}=D,d=ee(D,e,A.start,A.end),w=(i=this.walks.bytesForRegions)===null||i===void 0?void 0:i.bind(this.walks),m=Number.isFinite(g)&&w!==void 0,c=async R=>m?w(R.map(U=>({refName:e,...U})),{signal:o}):0,y=m?await Oe(async R=>(iA(e,d,R),c([{start:d,end:R}])),g,A,u,n.budgetNames):void 0;if(y)throw y;let f=new AbortController,C=()=>{f.abort(o?.reason)};o?.throwIfAborted(),o?.addEventListener("abort",C,{once:!0});let N=[],x,p=new UA({refName:e,start:A.start,end:A.end,context:I,sequences:n.sequences}),F=new Set,J=[],l=new Set,k=s!==void 0,b=[],S=(R,U)=>{if(F.has(R))return;F.add(R);let G=Le(U,s,n.sequences),Y;for(let K of G.rows)K.abridged&&B?.(K.name)?(Y??(Y=U.filter(X=>X[3]==="ref")),b.push({refRows:Y,row:K})):N.push(K);L(G,R)},v=async({refRows:R,row:U})=>{let{refName:G,start:Y}=U.abridged.detail;iA(G,Y,Y+1);let K=[];await this.walks.getLines(G,Y,Y+1,{signal:f.signal,lineCallback:O=>{let V=O.split(" ");V[0]=e,V[1]=String(U.chunkStart),K.push(V)}});let X=Le([...R,...K],O=>O===U.name,n.sequences);for(let O of X.rows)O.name===U.name&&N.push(O);L(X,U.chunkStart)},L=(R,U)=>{for(let[G,Y]of R.nodes)p.placeNode(G,Y);p.addSequences(R.sequences),p.addChunk(R.chunk);for(let G of R.ends)J.push(G);if(Number.isFinite(Q)){Ke(R,p.nodes,E,l),l.size>Q&&(l.clear(),Ke({nodes:p.nodes,rows:N},p.nodes,E,l));let G=te(l.size,Q,A,k,U+u);if(G)throw G}},_=async(R,U)=>{iA(e,R,U);let G,Y=[];await this.walks.getLines(e,R,U,{signal:f.signal,lineCallback:X=>{let O=X.split(" "),V=+O[1];V!==G&&(G!==void 0&&S(G,Y),G=V,Y=[]),Y.push(O)}}),G!==void 0&&S(G,Y);let K=b;b=[];for(let X of K)await v(X);if(h)for(let[X,O]of Ot(J))p.addLinkEnds(X,O)};try{await _(d,A.end);let R=qe(N,a,Ar,A,u,k,n.budgetNames);if(R)throw R;let U=d,G=Math.floor((A.end-1)/u)*u,Y=tr*u,[K,X]=E?[Math.floor((A.start-I)/u)*u,Math.floor((A.end+I-1)/u)*u]:[U-Y,G+Y],O=()=>He(Ye(N),p.nodes,e,{contained:E,context:I});x=O();let V=await c([{start:d,end:A.end}]);for(let JA=0;JA<er;JA++){let fA=U,eA=G;for(let T of x.open)T.refName===e&&T.start>=K&&T.start<=X&&(fA=Math.min(fA,T.start),eA=Math.max(eA,T.start));let tA=[{start:fA,end:U},{start:G+u,end:eA+1}].filter(T=>T.end>T.start);if(tA.length===0||(V+=await c(tA),V>g))break;U=fA,G=eA,await Promise.all(tA.map(({start:T,end:DA})=>_(T,DA))),x=O()}}catch(R){throw f.abort(),R}finally{o?.removeEventListener("abort",C)}let q=(r=Ze(x.fragments,a,A,k))!==null&&r!==void 0?r:te(x.kept.size,Q,A,k);if(q)throw q;return{graph:p,...x}}async cutRegion(e,A={}){var n;let{haplotypes:i,referenceSample:r,...o}=A,{signal:s}=A,I=await this.header({signal:s}),a=(n=r??I.references[0])!==null&&n!==void 0?n:"",g=await this.sequenceFor(a,e.refName,{signal:s});if(g===void 0){let B=await this.referenceSequences({signal:s});throw new Error(`The walk file has no sequence ${e.refName} on ${a}; it holds ${B.slice(0,5).join(", ")}${B.length>5?", \u2026":""}`)}let{graph:h,kept:E,fragments:Q}=await this.cut(g,e,{...o,keep:Ue(i,g)});return{tables:h.tables(E,Q),refName:g,sample:a}}};function an(t){return t.filter(e=>e.rank>0)}function gn(t,e,A,n,i){return iA(e,A,n),t.getLines(e,A,n,i)}async function Ve(t,e,A){let n=[];return await gn(t,e.refName,e.start,e.end,{signal:A,lineCallback:i=>{n.push(Pe(i))}}),n}async function rr(t,e,{hops:A=0,signal:n}={}){let i=new Map,r=new Map,o={anchored:!1},[,s]=await Promise.all([gn(t.segments,e.refName,e.start,e.end,{signal:n,lineCallback:g=>{let h=Xe(g);o.anchored||(o.anchored=h.anchored),i.set(h.segment.id,h.segment)}}),Ve(t.links,e,n)]);if(o.anchored){let g=tn(i,s,e);return ie(g.segments,g.links)}let I=async g=>(await Ve(t.links,g,n)).flatMap(h=>YA(i,r,h)),a=an(s.flatMap(g=>YA(i,r,g)));for(let g=0;g<A;g++){let h=await Promise.all(a.map(I));a=an(h.flat())}if(A>0){let g=nn([...i.values()],new Set(a.map(E=>E.id)),e),h=await Promise.all(g.map(E=>Ve(t.links,E,n)));for(let E of rn(h.flat(),i,g))YA(i,r,E)}return ie(i,r)}async function qo(t,e,A,n,i){return iA(e,A,n),t.getLines(e,A,n,i)}async function In(t,e,A){for(let{refName:n,start:i,end:r}of e)iA(n,i,r);return t.bytesForRegions(e,A)}var $e=0;var At=2;var TA=4;var QA=0,qA=1,Qn=2;var Cn=-5;function or(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function cn(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var A=e.shift();if(A){if(typeof A!="object")throw new TypeError(A+"must be non-object");for(var n in A)or(A,n)&&(t[n]=A[n])}}return t}function se(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)}var ZA={arraySet:function(t,e,A,n,i){if(e.subarray&&t.subarray){t.set(e.subarray(A,A+n),i);return}for(var r=0;r<n;r++)t[i+r]=e[A+r]},flattenChunks:function(t){var e,A,n,i,r,o;for(n=0,e=0,A=t.length;e<A;e++)n+=t[e].length;for(o=new Uint8Array(n),i=0,e=0,A=t.length;e<A;e++)r=t[e],o.set(r,i),i+=r.length;return o},Buf8:function(t){return new Uint8Array(t)},Buf16:function(t){return new Uint16Array(t)},Buf32:function(t){return new Int32Array(t)}},OA={arraySet:function(t,e,A,n,i){for(var r=0;r<n;r++)t[i+r]=e[A+r]},flattenChunks:function(t){return[].concat.apply([],t)},Buf8:function(t){return new Array(t)},Buf16:function(t){return new Array(t)},Buf32:function(t){return new Array(t)}},xA=()=>{let t=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return xA=()=>t,t},$=(t,e,A,n,i)=>($=xA()?ZA.arraySet:OA.arraySet,$(t,e,A,n,i)),oe=t=>(oe=xA()?ZA.flattenChunks:OA.flattenChunks,oe(t)),rA=t=>(rA=xA()?ZA.Buf8:OA.Buf8,rA(t)),CA=t=>(CA=xA()?ZA.Buf16:OA.Buf16,CA(t)),hA=t=>(hA=xA()?ZA.Buf32:OA.Buf32,hA(t));var Bn=function(){let t=!0;try{String.fromCharCode.apply(null,[0])}catch{t=!1}return Bn=()=>t,t},En=function(){let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{t=!1}return En=()=>t,t},et=function(t){for(var e=rA(256),A=0;A<256;A++)e[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;return e[254]=e[254]=1,et=n=>e[n],e[t]};function tt(t){var e,A,n,i,r,o=t.length,s=0;for(i=0;i<o;i++)A=t.charCodeAt(i),(A&64512)===55296&&i+1<o&&(n=t.charCodeAt(i+1),(n&64512)===56320&&(A=65536+(A-55296<<10)+(n-56320),i++)),s+=A<128?1:A<2048?2:A<65536?3:4;for(e=new Uint8Array(s),r=0,i=0;r<s;i++)A=t.charCodeAt(i),(A&64512)===55296&&i+1<o&&(n=t.charCodeAt(i+1),(n&64512)===56320&&(A=65536+(A-55296<<10)+(n-56320),i++)),A<128?e[r++]=A:A<2048?(e[r++]=192|A>>>6,e[r++]=128|A&63):A<65536?(e[r++]=224|A>>>12,e[r++]=128|A>>>6&63,e[r++]=128|A&63):(e[r++]=240|A>>>18,e[r++]=128|A>>>12&63,e[r++]=128|A>>>6&63,e[r++]=128|A&63);return e}function sr(t,e){if(e<65534&&(t.subarray&&En()||!t.subarray&&Bn()))return String.fromCharCode.apply(null,se(t,e));for(var A="",n=0;n<e;n++)A+=String.fromCharCode(t[n]);return A}function fn(t){for(var e=new Uint8Array(t.length),A=0,n=e.length;A<n;A++)e[A]=t.charCodeAt(A);return e}function ln(t,e){var A,n,i,r,o=e||t.length,s=new Array(o*2);for(n=0,A=0;A<o;){if(i=t[A++],i<128){s[n++]=i;continue}if(r=et(i),r>4){s[n++]=65533,A+=r-1;continue}for(i&=r===2?31:r===3?15:7;r>1&&A<o;)i=i<<6|t[A++]&63,r--;if(r>1){s[n++]=65533;continue}i<65536?s[n++]=i:(i-=65536,s[n++]=55296|i>>10&1023,s[n++]=56320|i&1023)}return sr(s,n)}function hn(t,e){var A;for(e=e||t.length,e>t.length&&(e=t.length),A=e-1;A>=0&&(t[A]&192)===128;)A--;return A<0||A===0?e:A+et(t[A])>e?A:e}function nt(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function XA(t,e,A,n){for(var i=t&65535|0,r=t>>>16&65535|0,o=0;A!==0;){o=A>2e3?2e3:A,A-=o;do i=i+e[n++]|0,r=r+i|0;while(--o);i%=65521,r%=65521}return i|r<<16|0}function ar(){for(var t,e=[],A=0;A<256;A++){t=A;for(var n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;e[A]=t}return e}var dn=function(){let t=ar();return dn=()=>t,t};function z(t,e,A,n){var i=dn(),r=n+A;t^=-1;for(var o=n;o<r;o++)t=t>>>8^i[(t^e[o])&255];return t^-1}var ae=30,gr=12;function it(t,e){var A,n,i,r,o,s,I,a,g,h,E,Q,B,D,u,d,w,m,c,y,f,C,N,x,p;A=t.state,n=t.next_in,x=t.input,i=n+(t.avail_in-5),r=t.next_out,p=t.output,o=r-(e-t.avail_out),s=r+(t.avail_out-257),I=A.dmax,a=A.wsize,g=A.whave,h=A.wnext,E=A.window,Q=A.hold,B=A.bits,D=A.lencode,u=A.distcode,d=(1<<A.lenbits)-1,w=(1<<A.distbits)-1;A:do{B<15&&(Q+=x[n++]<<B,B+=8,Q+=x[n++]<<B,B+=8),m=D[Q&d];e:for(;;){if(c=m>>>24,Q>>>=c,B-=c,c=m>>>16&255,c===0)p[r++]=m&65535;else if(c&16){y=m&65535,c&=15,c&&(B<c&&(Q+=x[n++]<<B,B+=8),y+=Q&(1<<c)-1,Q>>>=c,B-=c),B<15&&(Q+=x[n++]<<B,B+=8,Q+=x[n++]<<B,B+=8),m=u[Q&w];t:for(;;){if(c=m>>>24,Q>>>=c,B-=c,c=m>>>16&255,c&16){if(f=m&65535,c&=15,B<c&&(Q+=x[n++]<<B,B+=8,B<c&&(Q+=x[n++]<<B,B+=8)),f+=Q&(1<<c)-1,f>I){t.msg="invalid distance too far back",A.mode=ae;break A}if(Q>>>=c,B-=c,c=r-o,f>c){if(c=f-c,c>g&&A.sane){t.msg="invalid distance too far back",A.mode=ae;break A}if(C=0,N=E,h===0){if(C+=a-c,c<y){y-=c;do p[r++]=E[C++];while(--c);C=r-f,N=p}}else if(h<c){if(C+=a+h-c,c-=h,c<y){y-=c;do p[r++]=E[C++];while(--c);if(C=0,h<y){c=h,y-=c;do p[r++]=E[C++];while(--c);C=r-f,N=p}}}else if(C+=h-c,c<y){y-=c;do p[r++]=E[C++];while(--c);C=r-f,N=p}for(;y>2;)p[r++]=N[C++],p[r++]=N[C++],p[r++]=N[C++],y-=3;y&&(p[r++]=N[C++],y>1&&(p[r++]=N[C++]))}else{C=r-f;do p[r++]=p[C++],p[r++]=p[C++],p[r++]=p[C++],y-=3;while(y>2);y&&(p[r++]=p[C++],y>1&&(p[r++]=p[C++]))}}else if((c&64)===0){m=u[(m&65535)+(Q&(1<<c)-1)];continue t}else{t.msg="invalid distance code",A.mode=ae;break A}break}}else if((c&64)===0){m=D[(m&65535)+(Q&(1<<c)-1)];continue e}else if(c&32){A.mode=gr;break A}else{t.msg="invalid literal/length code",A.mode=ae;break A}break}}while(n<i&&r<s);y=B>>3,n-=y,B-=y<<3,Q&=(1<<B)-1,t.next_in=n,t.next_out=r,t.avail_in=n<i?5+(i-n):5-(n-i),t.avail_out=r<s?257+(s-r):257-(r-s),A.hold=Q,A.bits=B}var bA=15,un=852,wn=592,pn=0,rt=1,kn=2,Ir=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Qr=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],Cr=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],cr=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function dA(t,e,A,n,i,r,o,s){var I=s.bits,a=0,g=0,h=0,E=0,Q=0,B=0,D=0,u=0,d=0,w=0,m,c,y,f,C,N=null,x=0,p,F=CA(bA+1),J=CA(bA+1),l=null,k=0,b,S,v;for(a=0;a<=bA;a++)F[a]=0;for(g=0;g<n;g++)F[e[A+g]]++;for(Q=I,E=bA;E>=1&&F[E]===0;E--);if(Q>E&&(Q=E),E===0)return i[r++]=1<<24|64<<16|0,i[r++]=1<<24|64<<16|0,s.bits=1,0;for(h=1;h<E&&F[h]===0;h++);for(Q<h&&(Q=h),u=1,a=1;a<=bA;a++)if(u<<=1,u-=F[a],u<0)return-1;if(u>0&&(t===pn||E!==1))return-1;for(J[1]=0,a=1;a<bA;a++)J[a+1]=J[a]+F[a];for(g=0;g<n;g++)e[A+g]!==0&&(o[J[e[A+g]]++]=g);if(t===pn?(N=l=o,p=19):t===rt?(N=Ir,x-=257,l=Qr,k-=257,p=256):(N=Cr,l=cr,p=-1),w=0,g=0,a=h,C=r,B=Q,D=0,y=-1,d=1<<Q,f=d-1,t===rt&&d>un||t===kn&&d>wn)return 1;for(;;){b=a-D,o[g]<p?(S=0,v=o[g]):o[g]>p?(S=l[k+o[g]],v=N[x+o[g]]):(S=96,v=0),m=1<<a-D,c=1<<B,h=c;do c-=m,i[C+(w>>D)+c]=b<<24|S<<16|v|0;while(c!==0);for(m=1<<a-1;w&m;)m>>=1;if(m!==0?(w&=m-1,w+=m):w=0,g++,--F[a]===0){if(a===E)break;a=e[A+o[g]]}if(a>Q&&(w&f)!==y){for(D===0&&(D=Q),C+=h,B=a-D,u=1<<B;B+D<E&&(u-=F[B+D],!(u<=0));)B++,u<<=1;if(d+=1<<B,t===rt&&d>un||t===kn&&d>wn)return 1;y=w&f,i[y]=Q<<24|B<<16|C-r|0}}return w!==0&&(i[C+w]=a-D<<24|64<<16|0),s.bits=Q,0}var Br=0,zn=1,jn=2,mn=4,Er=5,ge=6,uA=0,fr=1,lr=2,j=-2,Wn=-3,Qt=-4,hr=-5,Nn=8,Vn=1,Dn=2,yn=3,xn=4,bn=5,Sn=6,Fn=7,vn=8,Rn=9,Jn=10,Ce=11,oA=12,ot=13,Gn=14,st=15,Ln=16,_n=17,Mn=18,Un=19,Ie=20,Qe=21,Yn=22,Hn=23,Kn=24,Tn=25,qn=26,at=27,Zn=28,On=29,H=30,Ct=31,dr=32,ur=852,wr=592;function Xn(t){return(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24)}function pr(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=CA(320),this.work=CA(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function kr(t){var e;return!t||!t.state?j:(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=Vn,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=hA(ur),e.distcode=e.distdyn=hA(wr),e.sane=1,e.back=-1,uA)}function mr(t){var e;return!t||!t.state?j:(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,kr(t))}function Nr(t,e){var A,n;return!t||!t.state||(n=t.state,e<0?(A=0,e=-e):(A=(e>>4)+1,e<48&&(e&=15)),e&&(e<8||e>15))?j:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=A,n.wbits=e,mr(t))}function $n(t,e){var A,n;return t?(n=new pr,t.state=n,n.window=null,A=Nr(t,e),A!==uA&&(t.state=null),A):j}var Pn=!0,gt,It;function Dr(t){if(Pn){var e;for(gt=hA(512),It=hA(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(dA(zn,t.lens,0,288,gt,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;dA(jn,t.lens,0,32,It,0,t.work,{bits:5}),Pn=!1}t.lencode=gt,t.lenbits=9,t.distcode=It,t.distbits=5}function Ai(t,e,A,n){var i,r=t.state;return r.window===null&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=rA(r.wsize)),n>=r.wsize?($(r.window,e,A-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(i=r.wsize-r.wnext,i>n&&(i=n),$(r.window,e,A-n,i,r.wnext),n-=i,n?($(r.window,e,A-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=i,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=i))),0}function ei(t,e){var A,n,i,r,o,s,I,a,g,h,E,Q,B,D,u=0,d,w,m,c,y,f,C,N,x=rA(4),p,F,J=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&t.avail_in!==0)return j;A=t.state,A.mode===oA&&(A.mode=ot),o=t.next_out,i=t.output,I=t.avail_out,r=t.next_in,n=t.input,s=t.avail_in,a=A.hold,g=A.bits,h=s,E=I,N=uA;A:for(;;)switch(A.mode){case Vn:if(A.wrap===0){A.mode=ot;break}for(;g<16;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(A.wrap&2&&a===35615){A.check=0,x[0]=a&255,x[1]=a>>>8&255,A.check=z(A.check,x,2,0),a=0,g=0,A.mode=Dn;break}if(A.flags=0,A.head&&(A.head.done=!1),!(A.wrap&1)||(((a&255)<<8)+(a>>8))%31){t.msg="incorrect header check",A.mode=H;break}if((a&15)!==Nn){t.msg="unknown compression method",A.mode=H;break}if(a>>>=4,g-=4,C=(a&15)+8,A.wbits===0)A.wbits=C;else if(C>A.wbits){t.msg="invalid window size",A.mode=H;break}A.dmax=1<<C,t.adler=A.check=1,A.mode=a&512?Jn:oA,a=0,g=0;break;case Dn:for(;g<16;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(A.flags=a,(A.flags&255)!==Nn){t.msg="unknown compression method",A.mode=H;break}if(A.flags&57344){t.msg="unknown header flags set",A.mode=H;break}A.head&&(A.head.text=a>>8&1),A.flags&512&&(x[0]=a&255,x[1]=a>>>8&255,A.check=z(A.check,x,2,0)),a=0,g=0,A.mode=yn;case yn:for(;g<32;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.head&&(A.head.time=a),A.flags&512&&(x[0]=a&255,x[1]=a>>>8&255,x[2]=a>>>16&255,x[3]=a>>>24&255,A.check=z(A.check,x,4,0)),a=0,g=0,A.mode=xn;case xn:for(;g<16;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.head&&(A.head.xflags=a&255,A.head.os=a>>8),A.flags&512&&(x[0]=a&255,x[1]=a>>>8&255,A.check=z(A.check,x,2,0)),a=0,g=0,A.mode=bn;case bn:if(A.flags&1024){for(;g<16;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.length=a,A.head&&(A.head.extra_len=a),A.flags&512&&(x[0]=a&255,x[1]=a>>>8&255,A.check=z(A.check,x,2,0)),a=0,g=0}else A.head&&(A.head.extra=null);A.mode=Sn;case Sn:if(A.flags&1024&&(Q=A.length,Q>s&&(Q=s),Q&&(A.head&&(C=A.head.extra_len-A.length,A.head.extra||(A.head.extra=new Array(A.head.extra_len)),$(A.head.extra,n,r,Q,C)),A.flags&512&&(A.check=z(A.check,n,Q,r)),s-=Q,r+=Q,A.length-=Q),A.length))break A;A.length=0,A.mode=Fn;case Fn:if(A.flags&2048){if(s===0)break A;Q=0;do C=n[r+Q++],A.head&&C&&A.length<65536&&(A.head.name+=String.fromCharCode(C));while(C&&Q<s);if(A.flags&512&&(A.check=z(A.check,n,Q,r)),s-=Q,r+=Q,C)break A}else A.head&&(A.head.name=null);A.length=0,A.mode=vn;case vn:if(A.flags&4096){if(s===0)break A;Q=0;do C=n[r+Q++],A.head&&C&&A.length<65536&&(A.head.comment+=String.fromCharCode(C));while(C&&Q<s);if(A.flags&512&&(A.check=z(A.check,n,Q,r)),s-=Q,r+=Q,C)break A}else A.head&&(A.head.comment=null);A.mode=Rn;case Rn:if(A.flags&512){for(;g<16;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(a!==(A.check&65535)){t.msg="header crc mismatch",A.mode=H;break}a=0,g=0}A.head&&(A.head.hcrc=A.flags>>9&1,A.head.done=!0),t.adler=A.check=0,A.mode=oA;break;case Jn:for(;g<32;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}t.adler=A.check=Xn(a),a=0,g=0,A.mode=Ce;case Ce:if(A.havedict===0)return t.next_out=o,t.avail_out=I,t.next_in=r,t.avail_in=s,A.hold=a,A.bits=g,lr;t.adler=A.check=1,A.mode=oA;case oA:if(e===Er||e===ge)break A;case ot:if(A.last){a>>>=g&7,g-=g&7,A.mode=at;break}for(;g<3;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}switch(A.last=a&1,a>>>=1,g-=1,a&3){case 0:A.mode=Gn;break;case 1:if(Dr(A),A.mode=Ie,e===ge){a>>>=2,g-=2;break A}break;case 2:A.mode=_n;break;case 3:t.msg="invalid block type",A.mode=H}a>>>=2,g-=2;break;case Gn:for(a>>>=g&7,g-=g&7;g<32;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if((a&65535)!==(a>>>16^65535)){t.msg="invalid stored block lengths",A.mode=H;break}if(A.length=a&65535,a=0,g=0,A.mode=st,e===ge)break A;case st:A.mode=Ln;case Ln:if(Q=A.length,Q){if(Q>s&&(Q=s),Q>I&&(Q=I),Q===0)break A;$(i,n,r,Q,o),s-=Q,r+=Q,I-=Q,o+=Q,A.length-=Q;break}A.mode=oA;break;case _n:for(;g<14;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(A.nlen=(a&31)+257,a>>>=5,g-=5,A.ndist=(a&31)+1,a>>>=5,g-=5,A.ncode=(a&15)+4,a>>>=4,g-=4,A.nlen>286||A.ndist>30){t.msg="too many length or distance symbols",A.mode=H;break}A.have=0,A.mode=Mn;case Mn:for(;A.have<A.ncode;){for(;g<3;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.lens[J[A.have++]]=a&7,a>>>=3,g-=3}for(;A.have<19;)A.lens[J[A.have++]]=0;if(A.lencode=A.lendyn,A.lenbits=7,p={bits:A.lenbits},N=dA(Br,A.lens,0,19,A.lencode,0,A.work,p),A.lenbits=p.bits,N){t.msg="invalid code lengths set",A.mode=H;break}A.have=0,A.mode=Un;case Un:for(;A.have<A.nlen+A.ndist;){for(;u=A.lencode[a&(1<<A.lenbits)-1],d=u>>>24,w=u>>>16&255,m=u&65535,!(d<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(m<16)a>>>=d,g-=d,A.lens[A.have++]=m;else{if(m===16){for(F=d+2;g<F;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(a>>>=d,g-=d,A.have===0){t.msg="invalid bit length repeat",A.mode=H;break}C=A.lens[A.have-1],Q=3+(a&3),a>>>=2,g-=2}else if(m===17){for(F=d+3;g<F;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}a>>>=d,g-=d,C=0,Q=3+(a&7),a>>>=3,g-=3}else{for(F=d+7;g<F;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}a>>>=d,g-=d,C=0,Q=11+(a&127),a>>>=7,g-=7}if(A.have+Q>A.nlen+A.ndist){t.msg="invalid bit length repeat",A.mode=H;break}for(;Q--;)A.lens[A.have++]=C}}if(A.mode===H)break;if(A.lens[256]===0){t.msg="invalid code -- missing end-of-block",A.mode=H;break}if(A.lenbits=9,p={bits:A.lenbits},N=dA(zn,A.lens,0,A.nlen,A.lencode,0,A.work,p),A.lenbits=p.bits,N){t.msg="invalid literal/lengths set",A.mode=H;break}if(A.distbits=6,A.distcode=A.distdyn,p={bits:A.distbits},N=dA(jn,A.lens,A.nlen,A.ndist,A.distcode,0,A.work,p),A.distbits=p.bits,N){t.msg="invalid distances set",A.mode=H;break}if(A.mode=Ie,e===ge)break A;case Ie:A.mode=Qe;case Qe:if(s>=6&&I>=258){t.next_out=o,t.avail_out=I,t.next_in=r,t.avail_in=s,A.hold=a,A.bits=g,it(t,E),o=t.next_out,i=t.output,I=t.avail_out,r=t.next_in,n=t.input,s=t.avail_in,a=A.hold,g=A.bits,A.mode===oA&&(A.back=-1);break}for(A.back=0;u=A.lencode[a&(1<<A.lenbits)-1],d=u>>>24,w=u>>>16&255,m=u&65535,!(d<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(w&&(w&240)===0){for(c=d,y=w,f=m;u=A.lencode[f+((a&(1<<c+y)-1)>>c)],d=u>>>24,w=u>>>16&255,m=u&65535,!(c+d<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}a>>>=c,g-=c,A.back+=c}if(a>>>=d,g-=d,A.back+=d,A.length=m,w===0){A.mode=qn;break}if(w&32){A.back=-1,A.mode=oA;break}if(w&64){t.msg="invalid literal/length code",A.mode=H;break}A.extra=w&15,A.mode=Yn;case Yn:if(A.extra){for(F=A.extra;g<F;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.length+=a&(1<<A.extra)-1,a>>>=A.extra,g-=A.extra,A.back+=A.extra}A.was=A.length,A.mode=Hn;case Hn:for(;u=A.distcode[a&(1<<A.distbits)-1],d=u>>>24,w=u>>>16&255,m=u&65535,!(d<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if((w&240)===0){for(c=d,y=w,f=m;u=A.distcode[f+((a&(1<<c+y)-1)>>c)],d=u>>>24,w=u>>>16&255,m=u&65535,!(c+d<=g);){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}a>>>=c,g-=c,A.back+=c}if(a>>>=d,g-=d,A.back+=d,w&64){t.msg="invalid distance code",A.mode=H;break}A.offset=m,A.extra=w&15,A.mode=Kn;case Kn:if(A.extra){for(F=A.extra;g<F;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}A.offset+=a&(1<<A.extra)-1,a>>>=A.extra,g-=A.extra,A.back+=A.extra}if(A.offset>A.dmax){t.msg="invalid distance too far back",A.mode=H;break}A.mode=Tn;case Tn:if(I===0)break A;if(Q=E-I,A.offset>Q){if(Q=A.offset-Q,Q>A.whave&&A.sane){t.msg="invalid distance too far back",A.mode=H;break}Q>A.wnext?(Q-=A.wnext,B=A.wsize-Q):B=A.wnext-Q,Q>A.length&&(Q=A.length),D=A.window}else D=i,B=o-A.offset,Q=A.length;Q>I&&(Q=I),I-=Q,A.length-=Q;do i[o++]=D[B++];while(--Q);A.length===0&&(A.mode=Qe);break;case qn:if(I===0)break A;i[o++]=A.length,I--,A.mode=Qe;break;case at:if(A.wrap){for(;g<32;){if(s===0)break A;s--,a|=n[r++]<<g,g+=8}if(E-=I,t.total_out+=E,A.total+=E,E&&(t.adler=A.check=A.flags?z(A.check,i,E,o-E):XA(A.check,i,E,o-E)),E=I,(A.flags?a:Xn(a))!==A.check){t.msg="incorrect data check",A.mode=H;break}a=0,g=0}A.mode=Zn;case Zn:if(A.wrap&&A.flags){for(;g<32;){if(s===0)break A;s--,a+=n[r++]<<g,g+=8}if(a!==(A.total&4294967295)){t.msg="incorrect length check",A.mode=H;break}a=0,g=0}A.mode=On;case On:N=fr;break A;case H:N=Wn;break A;case Ct:return Qt;case dr:default:return j}return t.next_out=o,t.avail_out=I,t.next_in=r,t.avail_in=s,A.hold=a,A.bits=g,(A.wsize||E!==t.avail_out&&A.mode<H&&(A.mode<at||e!==mn))&&Ai(t,t.output,t.next_out,E-t.avail_out)?(A.mode=Ct,Qt):(h-=t.avail_in,E-=t.avail_out,t.total_in+=h,t.total_out+=E,A.total+=E,A.wrap&&E&&(t.adler=A.check=A.flags?z(A.check,i,E,t.next_out-E):XA(A.check,i,E,t.next_out-E)),t.data_type=A.bits+(A.last?64:0)+(A.mode===oA?128:0)+(A.mode===Ie||A.mode===st?256:0),(h===0&&E===0||e===mn)&&N===uA&&(N=hr),N)}function ti(t){if(!t||!t.state)return j;var e=t.state;return e.window&&(e.window=null),t.state=null,uA}function ni(t,e){var A;return!t||!t.state||(A=t.state,(A.wrap&2)===0)?j:(A.head=e,e.done=!1,uA)}function ct(t,e){var A=e.length,n,i,r;return!t||!t.state||(n=t.state,n.wrap!==0&&n.mode!==Ce)?j:n.mode===Ce&&(i=1,i=XA(i,e,A,0),i!==n.check)?Wn:(r=Ai(t,e,A,A),r?(n.mode=Ct,Qt):(n.havedict=1,uA))}var ce={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function Bt(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var Et=Object.prototype.toString,ft=class t{constructor(e){if(!(this instanceof t))return new t(e);this.options=cn({chunkSize:16384,windowBits:0,to:""},e||{});var A=this.options;A.raw&&A.windowBits>=0&&A.windowBits<16&&(A.windowBits=-A.windowBits,A.windowBits===0&&(A.windowBits=-15)),A.windowBits>=0&&A.windowBits<16&&!(e&&e.windowBits)&&(A.windowBits+=32),A.windowBits>15&&A.windowBits<48&&(A.windowBits&15)===0&&(A.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Bt,this.strm.avail_out=0;var n=$n(this.strm,A.windowBits);if(n!==QA)throw new Error(ce[n]);if(this.header=new nt,ni(this.strm,this.header),A.dictionary&&(typeof A.dictionary=="string"?A.dictionary=tt(A.dictionary):Et.call(A.dictionary)==="[object ArrayBuffer]"&&(A.dictionary=new Uint8Array(A.dictionary)),A.raw&&(n=ct(this.strm,A.dictionary),n!==QA)))throw new Error(ce[n])}push(e,A){var n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,o,s,I,a,g,h,E=!1;if(this.ended)return!1;s=A===~~A?A:A===!0?TA:$e,typeof e=="string"?n.input=fn(e):Et.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=rA(i),n.next_out=0,n.avail_out=i),o=ei(n,$e),o===Qn&&r&&(typeof r=="string"?h=tt(r):Et.call(r)==="[object ArrayBuffer]"?h=new Uint8Array(r):h=r,o=ct(this.strm,h)),o===Cn&&E===!0&&(o=QA,E=!1),o!==qA&&o!==QA)return this.onEnd(o),this.ended=!0,!1;n.next_out&&(n.avail_out===0||o===qA||n.avail_in===0&&(s===TA||s===At))&&(this.options.to==="string"?(I=hn(n.output,n.next_out),a=n.next_out-I,g=ln(n.output,I),n.next_out=a,n.avail_out=i-a,a&&$(n.output,n.output,I,a,0),this.onData(g)):this.onData(se(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(E=!0)}while((n.avail_in>0||n.avail_out===0)&&o!==qA);return o===qA&&(s=TA),s===TA?(o=ti(this.strm),this.onEnd(o),this.ended=!0,o===QA):(s===At&&(this.onEnd(QA),n.avail_out=0),!0)}onData(e){this.chunks.push(e)}onEnd(e){e===QA&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=oe(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}};function yr(t,e){var A=new ft(e);if(A.push(t,!0),A.err)throw A.msg||ce[A.err];return A.result}var ii=yr;function lt(t,e,A){let n=[],i=0,r=e;for(;i+26<=t.length&&!(t[i]!==31||t[i+1]!==139||t[i+2]!==8||t[i+3]!==4||t[i+10]!==6||t[i+12]!==66||t[i+13]!==67);){let o=(t[i+16]|t[i+17]<<8)+1;if(o<26||i+o>t.length)break;let s=i+o-8,I=(t[s+4]|t[s+5]<<8|t[s+6]<<16|t[s+7]<<24)>>>0;if(n.push({inputOffset:i,compressedSize:o,decompressedSize:I,filePosition:r}),r>=A)break;i+=o,r+=o}return n}function ri(t){let e=0;for(let i of t)e+=i.length;let A=new Uint8Array(e),n=0;for(let i of t)A.set(i,n),n+=i.length;return A}var cA={};cA.d=(t,e)=>{if(Array.isArray(e))for(var A=0;A<e.length;){var n=e[A++],i=e[A++];cA.o(t,n)?i===0&&A++:i===0?Object.defineProperty(t,n,{enumerable:!0,value:e[A++]}):Object.defineProperty(t,n,{enumerable:!0,get:i})}else for(var n in e)cA.o(e,n)&&!cA.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})};cA.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);cA.r=t=>{Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var dt={};cA.r(dt);cA.d(dt,{ChunkSliceResult:()=>FA,__wbg_Error_92b29b0548f8b746:()=>br,__wbg___wbindgen_throw_344f42d3211c4765:()=>Sr,__wbg_set_wasm:()=>Bi,decompress_all:()=>ai,decompress_chunk_slice:()=>gi});var xr="data:application/wasm;base64,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AyABNgIEIAMgADYCACADQRmtQiCGIAOthDcDCEGWgcAAIANBCGogAhAwAAs8AAJAIAAoAgBBf0YNACABIAAoAgQgACgCCBBLDwsgASgCACABKAIEIAAoAgwoAgAiACgCACAAKAIEEAwLNgACQCACQX9GDQAgACACIAEoAhARBQBFDQBBAQ8LAkAgAw0AQQAPCyAAIAMgBCABKAIMEQcACzIAAkACQCABaUEBRw0AIABBgICAgHggAWtLDQAgAEUNARBpIAAgARBXIgENAQsACyABCzUBAX8CQCAARQ0AAkAgASgCACICRQ0AIAAgAhECAAsgASgCBCICRQ0AIAAgAiABKAIIEFELCysBAX8jAEEQayIBJAAgAUEYrUIghiABQQ9qrYQ3AwBBloHAACABIAAQMAALKgEBfyMAQRBrIgMkACADIAI2AgwgAyABNgIIIAMgADYCBCADQQRqEGMACy0BAX8jAEEQayIBJAAgASAAKQIANwIIIAFBCGpBwJPAACAAKAIIQQFBABAVAAssAgF/AX4jAEEQayIBJAAgACkCACECIAEgADYCDCABIAI3AgQgAUEEahBlAAsjAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkEIahBkAAslAQF/AkBBvIjAABAsIgBFDQAgAA8LQfCHwABBOkGsiMAAEDcACyAAAkAgASgCAEUNACAAQYiWwAA2AgQgACABNgIADwsACx4BAX8CQCAAKAIAIgJFDQAgASACIAAoAgQQSw8LAAsbAQF/EGkgAEEEakEEEFciASAANgIAIAFBBGoLHgEBfwJAIAAoAgAiAUEBSA0AIAAoAgQgAUEBEFELCx4AIAAoAgAgACgCBEEAKAKgnUAiAEEEIAAbEQQAAAscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEFELCxcAAkAgAUEJSQ0AIAEgABAODwsgABACCxUAIABBfGoiACAAKAIAQQRqQQQQUQsUAAJAIABFDQAgACABEF4ACxBUAAsRACAAIAFBAXRBAXIgAhAwAAsSAAJAIAFFDQAgACABIAIQUQsLEgAgACABIAIgAyAEQQAgBRADCxUAAkAgAEUNACAAIAAoAqhaEQIACwsaACAAQQApAsSUQDcCCCAAQQApAryUQDcCAAsaACAAQQApArSUQDcCCCAAQQApAqyUQDcCAAsW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AA2AAAAOgAAAD4AAABCAAAARgAAAEoAAABOAAAAUgAAAFYAAABaAAAAXgAAAGIAAABmAAAAagAAAG4AAAByAAAAdgAAAHoAAAB+AAAAggAAAIYAAACKAAAAjgAAAJIAAACWAAAAmgAAAJ4AAACiAAAApgAAAKoAAACuAAAAsgAAALYAAAC6AAAAvgAAAMIAAADGAAAAygAAAM4AAADSAAAA1gAAANoAAADeAAAA4gAAAOYAAADqAAAA7gAAAPIAAAD2AAAA+gAAAP4AAAECAAABBgAAAQoAAAEOAAABEgAAARYAAAEaAAABHgAAASIAAAEmAAABKgAAAS4AAAEyAAABNgAAAToAAAE+AAABQgAAAUYAAAFKAAABTgAAAVIAAAFWAAABWgAAAV4AAAFiAAABZgAAAWoAAAFuAAABcgAAAXYAAAF6AAABfgAAAYIAAAGGAAABigAAAY4AAAGSAAABlgAAAZoAAAGeAAABogAAAaYAAAGqAAABrgAAAbIAAAG2AAABugAAAb4AAAHCAAABxgAAAcoAAAHOAAAB0gAAAdYAAAHaAAAB3gAAAeIAAAHmAAAB6gAAAe4AAAHyAAAB9gAAAfoAAAH+AAACAgAAAgYAAAIKAAACDgAAAhIAAAIWAAACGgAAAh4AAAIiAAACJgAAAioAAAIuAAACMgAAAjYAAAI6AAACPgAAAkIAAAJGAAACSgAAAk4AAAJSAAACVgAAAloAAAJeAAACYgAAAmYAAAJqAAACbgAAAnIAAAJ2AAACegAAAn4AAAKCAAAChgAAAooAAAKOAAACkgAAApYAAAKaAAACngAAAqIAAAKmAAACqgAAAq4AAAKyAAACtgAAAroAAAK+AAACwgAAAsYAAALKAAACzgAAAtIAAALWAAAC2gAAAt4AAALiAAAC5gAAAuoAAALuAAAC8gAAAvYAAAL6AAAC/gAAAwIAAAMGAAADCgAAAw4AAAMSAAADFgAAAxoAAAMeAAADIgAAAyYAAAMqAAADLgAAAzIAAAM2AAADOgAAAz4AAANCAAADRgAAA0oAAANOAAADUgAAA1YAAANaAAADXgAAA2IAAANmAAADagAAA24AAANyAAADdgAAA3oAAAN+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAA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",FA=class t{static __wrap(e){let A=Object.create(t.prototype);return A.__wbg_ptr=e,oi.register(A,A.__wbg_ptr,A),A}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,oi.unregister(this),e}free(){let e=this.__destroy_into_raw();M.__wbg_chunksliceresult_free(e,0)}take_buffer(){try{let i=M.__wbindgen_add_to_stack_pointer(-16);M.chunksliceresult_take_buffer(i,this.__wbg_ptr);var e=P().getInt32(i+0,!0),A=P().getInt32(i+4,!0),n=Ii(e,A).slice();return M.__wbindgen_export(e,A*1,1),n}finally{M.__wbindgen_add_to_stack_pointer(16)}}take_cpositions(){try{let i=M.__wbindgen_add_to_stack_pointer(-16);M.chunksliceresult_take_cpositions(i,this.__wbg_ptr);var e=P().getInt32(i+0,!0),A=P().getInt32(i+4,!0),n=si(e,A).slice();return M.__wbindgen_export(e,A*8,8),n}finally{M.__wbindgen_add_to_stack_pointer(16)}}take_dpositions(){try{let i=M.__wbindgen_add_to_stack_pointer(-16);M.chunksliceresult_take_dpositions(i,this.__wbg_ptr);var e=P().getInt32(i+0,!0),A=P().getInt32(i+4,!0),n=si(e,A).slice();return M.__wbindgen_export(e,A*8,8),n}finally{M.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(FA.prototype[Symbol.dispose]=FA.prototype.free);function ai(t){try{let o=M.__wbindgen_add_to_stack_pointer(-16),s=Ci(t,M.__wbindgen_export2),I=wt;M.decompress_all(o,s,I);var e=P().getInt32(o+0,!0),A=P().getInt32(o+4,!0),n=P().getInt32(o+8,!0),i=P().getInt32(o+12,!0);if(i)throw ci(n);var r=Ii(e,A).slice();return M.__wbindgen_export(e,A*1,1),r}finally{M.__wbindgen_add_to_stack_pointer(16)}}function gi(t,e,A,n,i){try{let I=M.__wbindgen_add_to_stack_pointer(-16),a=Ci(t,M.__wbindgen_export2),g=wt;M.decompress_chunk_slice(I,a,g,e,A,n,i);var r=P().getInt32(I+0,!0),o=P().getInt32(I+4,!0),s=P().getInt32(I+8,!0);if(s)throw ci(o);return FA.__wrap(r)}finally{M.__wbindgen_add_to_stack_pointer(16)}}function br(t,e){let A=Error(Qi(t,e));return Fr(A)}function Sr(t,e){throw new Error(Qi(t,e))}var oi=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(t=>M.__wbg_chunksliceresult_free(t,1));function Fr(t){PA===sA.length&&sA.push(sA.length+1);let e=PA;return PA=sA[e],sA[e]=t,e}function vr(t){t<1028||(sA[t]=PA,PA=t)}function si(t,e){return t=t>>>0,Rr().subarray(t/8,t/8+e)}function Ii(t,e){return t=t>>>0,ut().subarray(t/1,t/1+e)}var SA=null;function P(){return(SA===null||SA.buffer.detached===!0||SA.buffer.detached===void 0&&SA.buffer!==M.memory.buffer)&&(SA=new DataView(M.memory.buffer)),SA}var Be=null;function Rr(){return(Be===null||Be.byteLength===0)&&(Be=new Float64Array(M.memory.buffer)),Be}function Qi(t,e){return Lr(t>>>0,e)}var Ee=null;function ut(){return(Ee===null||Ee.byteLength===0)&&(Ee=new Uint8Array(M.memory.buffer)),Ee}function Jr(t){return sA[t]}var sA=new Array(1024).fill(void 0);sA.push(void 0,null,!0,!1);var PA=sA.length;function Ci(t,e){let A=e(t.length*1,1)>>>0;return ut().set(t,A/1),wt=t.length,A}function ci(t){let e=Jr(t);return vr(t),e}var le=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});le.decode();var Gr=2146435072,ht=0;function Lr(t,e){return ht+=e,ht>=Gr&&(le=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),le.decode(),ht=e),le.decode(ut().subarray(t,t+e).slice())}var wt=0,M;function Bi(t){M=t}var wA=null,fe=null;async function Ei(){return wA||(fe||(fe=(async()=>{let e=await(await fetch(xr)).arrayBuffer(),{instance:A}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":dt});return wA=A.exports,Bi(wA),wA})().catch(t=>{throw fe=null,t})),fe)}async function fi(t){return wA||await Ei(),ai(t)}async function li(t,e,A,n,i){wA||await Ei();let r=gi(t,e,A,n,i),o=r.take_buffer(),s=r.take_cpositions(),I=r.take_dpositions();return r.free(),{buffer:o,cpositions:s,dpositions:I}}var _r=26;function di(t){return t[0]===31&&t[1]===139}function Mr(t){return t.length>=_r&&di(t)&&t[2]===8&&t[3]===4&&t[10]===6&&t[12]===66&&t[13]===67}function ui(t){return t instanceof Error?t.message:`${t}`}async function hi(t){if(typeof DecompressionStream<"u"){let e=new Blob([t]).stream().pipeThrough(new DecompressionStream("gzip"));return new Uint8Array(await new Response(e).arrayBuffer())}else return ii(t,void 0)}function wi(t){return ui(t).includes("invalid gzip header")?new Error("problem decompressing block: incorrect gzip header check",{cause:t}):t}async function zA(t){if(t.length===0)return new Uint8Array(0);if(!Mr(t)){if(di(t))return hi(t);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}try{return await fi(t)}catch(e){if(ui(e).includes("invalid bgzf header"))return hi(t);throw wi(e)}}function pi(t,e,A,n){let i=[],r=[],o=[],s=A.dataPosition;for(let I=0;I<t.length;I++){let a=t[I],g=e[I],h=g.filePosition>=n.blockPosition;i.push(g.filePosition),r.push(s);let E=I===0?A.dataPosition:0,Q=h?Math.min(n.dataPosition+1,a.length):a.length;if(E<Q&&o.push(a.subarray(E,Q)),s+=a.length-E,h){i.push(g.filePosition+g.compressedSize),r.push(s);break}}return{slices:o,cpositions:Float64Array.from(i),dpositions:Float64Array.from(r)}}function Ur(t,e,A,n){let{slices:i,cpositions:r,dpositions:o}=pi(t,e,A,n);return{buffer:ri(i),cpositions:r,dpositions:o}}function Yr(t){let e=[],A;for(let n of t)A?.buffer===n.buffer&&A.byteOffset+A.length===n.byteOffset?A=new Uint8Array(A.buffer,A.byteOffset,A.length+n.length):(A&&e.push(A),A=n);return A&&e.push(A),e}async function pt(t,e,A){let{minv:n,maxv:i}=e;if(A){let I=lt(t,n.blockPosition,i.blockPosition);if(ki(I)>=kt){let a=await A.decompressBlocks(t,I),{slices:g,cpositions:h,dpositions:E}=pi(a.blocks,I,n,i);return{segments:Yr(g),cpositions:h,dpositions:E}}}let{buffer:r,cpositions:o,dpositions:s}=await mi(t,e);return{segments:[r],cpositions:o,dpositions:s}}var kt=4e5;function ki(t){let e=0;for(let A of t)e+=A.decompressedSize;return e}async function mi(t,e,A){let{minv:n,maxv:i}=e;if(A){let r=lt(t,n.blockPosition,i.blockPosition);if(ki(r)>=kt){let o=await A.decompressBlocks(t,r);return Ur(o.blocks,r,n,i)}}try{let r=await li(t,n.blockPosition,n.dataPosition,i.blockPosition,i.dataPosition);return{buffer:r.buffer,cpositions:r.cpositions,dpositions:r.dpositions}}catch(r){throw wi(r)}}function pA(t){if(t?.aborted)throw mt(t)}function mt(t){let e=t.reason;return e===void 0?new DOMException("This operation was aborted","AbortError"):e}function Ni(t){return typeof t?.addEventListener=="function"}var BA=class{entries=new Map;total=0;settledCount=0;limit;shared;fill;sizeOf;toCacheKey;idleTimeoutMs;sweepTimer;constructor({fill:e,maxSize:A=1/0,sizeOf:n=()=>1,cacheKey:i=s=>String(s),idleTimeoutMs:r=0,budget:o}={}){this.fill=e,this.limit=A,this.shared=o&&{budget:o,membership:o.register(this)},this.sizeOf=n,this.toCacheKey=i,this.idleTimeoutMs=r>0&&Number.isFinite(r)?r:void 0}get size(){return this.entries.size}get totalSize(){return this.total}get maxSize(){return this.limit}set maxSize(e){this.limit=e,this.evict()}waiterCount(e){return this.entries.get(this.toCacheKey(e))?.pending?.signals.size??0}async get(e,A,n){pA(A);let i=this.toCacheKey(e),r=this.entries.get(i);r&&this.isDoomed(r)&&(this.release(i),r=void 0),r?this.touch(i,r):r=this.start(i,e,n),r.pending&&this.join(r.pending,A);try{return await this.settleFor(r,A)}finally{pA(A)}}settleFor(e,A){if(!e.pending||!Ni(A))return e.promise;let n,i=new Promise((o,s)=>{n=s}),r=()=>{n(mt(A))};return A.addEventListener("abort",r,{once:!0}),Promise.race([e.promise,i]).finally(()=>{A.removeEventListener("abort",r)})}getIfCached(e){let A=this.toCacheKey(e),n=this.entries.get(A);if(n){if(this.isDoomed(n)){this.release(A);return}return this.touch(A,n),n.promise}}has(e){let A=this.entries.get(this.toCacheKey(e));return A!==void 0&&!this.isDoomed(A)}delete(e){this.release(this.toCacheKey(e))}clear(){this.entries.clear(),this.shared?.budget.charge(this.shared.membership,-this.total),this.total=0,this.settledCount=0,this.stopSweep()}touch(e,A){this.entries.delete(e),this.entries.set(e,A),A.lastTouched=Date.now(),A.seq=this.stamp()}stamp(){return this.shared?.budget.nextSeq()??0}isDoomed(e){return e.pending?.controller.signal.aborted===!0}sweepIdle(){let e=this.idleTimeoutMs;if(e===void 0)return;let A=Date.now()-e;for(let[n,i]of this.entries)!i.pending&&i.lastTouched<=A&&this.release(n);this.settledCount===0&&this.stopSweep()}startSweep(){let e=this.idleTimeoutMs;if(e===void 0||this.sweepTimer!==void 0)return;let A=Math.min(2**31-1,Math.max(1e3,Math.floor(e/4))),n=new WeakRef(this),i=setInterval(()=>{let r=n.deref();r?r.sweepIdle():clearInterval(i)},A);this.sweepTimer=i,i.unref?.()}stopSweep(){this.sweepTimer!==void 0&&(clearInterval(this.sweepTimer),this.sweepTimer=void 0)}start(e,A,n){let i=n??(this.fill&&(a=>this.fill(A,a)));if(!i)throw new Error("SharedReadCache needs a fill, either on the cache or on the get() call");let r={signals:new Map,pinned:!1,controller:new AbortController},o={promise:Promise.resolve(i(r.controller.signal)),pending:r,size:0,lastTouched:Date.now(),seq:this.stamp()};this.entries.set(e,o);let s=()=>this.entries.get(e)===o,I=()=>{for(let[a,g]of r.signals)a.removeEventListener("abort",g);o.pending=void 0};return o.promise.then(a=>{let g=s()?this.weigh(a):void 0,h=s();I(),h&&(g===void 0?this.entries.delete(e):(o.lastTouched=Date.now(),o.size=g,this.settledCount++,this.total+=g,this.shared?.budget.charge(this.shared.membership,g),this.startSweep())),this.evict(),this.shared?.budget.evict()},()=>{s()&&this.release(e),I()}),o}weigh(e){try{let A=this.sizeOf(e);return Number.isFinite(A)&&A>=0?A:void 0}catch{return}}join(e,A){if(!Ni(A))e.pinned=!0;else if(!A.aborted&&!e.signals.has(A)){let n=()=>{e.signals.delete(A),!e.pinned&&e.signals.size===0&&e.controller.abort(A.reason)};e.signals.set(A,n),A.addEventListener("abort",n,{once:!0})}}release(e){let A=this.entries.get(e);A&&(this.entries.delete(e),A.pending||this.settledCount--,this.total-=A.size,this.shared?.budget.charge(this.shared.membership,-A.size))}lruSpare(e=!1){if(!(this.settledCount<=(e?0:1))){for(let[A,n]of this.entries)if(!n.pending)return{cacheKey:A,seq:n.seq,last:this.settledCount===1}}}evict(){if(!(this.total<=this.limit))for(let[e,A]of this.entries){if(this.total<=this.limit||this.settledCount<=1)break;A.pending||this.release(e)}}};async function he(t){return t.bytes?t.bytes():new Uint8Array(await t.arrayBuffer())}async function Di(t,e,A){if(e==="utf8"||e==="utf-8")return t.text();if(e)throw new Error(`unsupported encoding: ${e}`);return A&&"body"in t?Nt(t,A):he(t)}function yi(t){return typeof t=="string"?{encoding:t,opts:{}}:{encoding:t?.encoding,opts:t??{}}}function xi(t){let e=/\/(\d+)$/.exec(t??"")?.[1];return e===void 0?void 0:parseInt(e,10)}function Hr(t){let e=t.headers.get("content-length"),A=e===null?Number.NaN:Number(e);return Number.isSafeInteger(A)&&A>=0?A:void 0}var Kr=50;async function Nt(t,e){let A=Hr(t),n=t.body;if(!n||A===void 0){let I=await he(t);return e(I.byteLength,A??I.byteLength),I}let i=n.getReader(),r=new Uint8Array(A),o=0,s=Date.now();e(0,A);for(let I=await i.read();!I.done;I=await i.read()){if(o+I.value.byteLength>r.length){let g=new Uint8Array(Math.max(o+I.value.byteLength,r.length*2));g.set(r.subarray(0,o)),r=g}r.set(I.value,o),o+=I.value.byteLength;let a=Date.now();a-s>=Kr&&(s=a,e(o,A))}return e(o,A),o===r.length?r:r.slice(0,o)}function Tr(...t){let e=new Map;for(let A of t)for(let[n,i]of Object.entries(A??{}))e.set(n.toLowerCase(),[n,i]);return Object.fromEntries(e.values())}function Dt(t){let e=t.body;typeof e?.cancel=="function"&&e.cancel().catch(()=>{})}function bi(t){return Number.isSafeInteger(t)&&t>=0}function qr(t){return typeof t=="object"&&t!==null&&"name"in t&&t.name==="TypeError"}function Zr(t){return(typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"?t.message:`${t}`).replace(/\.$/,"")}var aA=class{url;get source(){return this.url}_stat;statProbe;fetchImplementation;baseHeaders;baseOverrides;baseSignal;constructor(e,A={}){this.url=e,this.baseHeaders=A.headers??{},this.baseOverrides=A.overrides??{},this.baseSignal=A.signal,this.fetchImplementation=A.fetch??globalThis.fetch.bind(globalThis)}buildRequest(e,A){let n=e.signal??this.baseSignal;return{method:"GET",redirect:"follow",mode:"cors",...this.baseOverrides,...e.overrides,headers:Tr(this.baseHeaders,e.headers,A),...n?{signal:n}:{}}}async fetch(e,A){let n=r=>qr(r)&&!A?.signal?.aborted?new Error(`${Zr(r)} fetching ${e}`,{cause:r}):r,i;try{i=await this.fetchImplementation(e,A)}catch(r){if(`${r}`.includes("Failed to fetch")){console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{i=await this.fetchImplementation(e,{...A,cache:"reload"})}catch(o){throw n(o)}}else throw n(r)}return i}async read(e,A,n={}){if(!bi(e)||!bi(A))throw new TypeError(`read() called with an invalid length or position (length=${e}, position=${A}). The index file may be corrupt.`);return e===0?new Uint8Array(0):this.fetchBytes(e,A,n)}async fetchBytes(e,A,n){let i=await this.fetch(this.url,this.buildRequest(n,{range:`bytes=${A}-${A+e-1}`}));if(i.status===416)return Dt(i),new Uint8Array(0);if(this.checkOk(i),i.status===200&&A===0||i.status===206){let r=xi(i.headers.get("content-range"));r!==void 0&&(this._stat={size:r});let o=n.onProgress?await Nt(i,n.onProgress):await he(i);return!this._stat&&i.status===200&&(this._stat={size:o.byteLength}),o.byteLength<=e?o:o.slice(0,e)}throw Dt(i),new Error(i.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${i.status} fetching ${this.url}`)}checkOk(e){if(!e.ok)throw Dt(e),new Error(`HTTP ${e.status} fetching ${this.url}`)}async readFile(e){let{encoding:A,opts:n}=yi(e),i=await this.fetch(this.url,this.buildRequest(n));this.checkOk(i);let r=await this.readFileBody(i,A,n.onProgress);return i.status===200&&typeof r!="string"&&(this._stat={size:r.byteLength}),r}readFileBody(e,A,n){return Di(e,A,n)}async stat(){return this._stat||(this.statProbe??=this.read(10,0).finally(()=>{this.statProbe=void 0}),await this.statProbe),this._stat??{size:0}}close(){return Promise.resolve()}};var kA=class{source;constructor(e,A={}){this.source=e}unimplemented(){return Promise.reject(new Error(`LocalFile is unimplemented in the browser (${this.source})`))}readFile(e){return this.unimplemented()}read(e,A,n){return this.unimplemented()}stat(){return this.unimplemented()}close(){return this.unimplemented()}};var AA=class{minv;maxv;bin;endPosition;constructor(e,A,n,i=A.blockPosition+65536){this.minv=e,this.maxv=A,this.bin=n,this.endPosition=i}toString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}fetchedSize(){return this.endPosition-this.minv.blockPosition}};function yt(t,e){if(!(e>0))throw new TypeError(`\`${t}\` must be a number greater than 0`)}var jA=class{#A=new Map;#e=new Map;#t;#i;#r;constructor(e){let A=e.maxAge??Number.POSITIVE_INFINITY;yt("maxSize",e.maxSize),yt("maxAge",A),this.#t=e.maxSize,this.#i=A,this.#r=e.onEviction}#o(e){let A=this.#r;if(A)for(let[n,i]of e)A(n,i.value)}#n(e,A){return A.expiry!==void 0&&A.expiry<=Date.now()?(this.#r?.(e,A.value),this.delete(e),!0):!1}#a(e,A){return this.#n(e,A)?void 0:A.value}#g(e,A){if(this.#e.delete(e),this.#A.set(e,A),this.#A.size>=this.#t){let n=this.#e;this.#e=this.#A,this.#A=new Map,this.#o(n)}}#I(e){this.#e=new Map(e),this.#A=new Map}*#s(){for(let e of[this.#e,this.#A])for(let A of e)this.#n(...A)||(yield A)}get(e){let A=this.#A.get(e);if(A)return this.#a(e,A);let n=this.#e.get(e);if(n&&!this.#n(e,n))return this.#g(e,n),n.value}set(e,A,{maxAge:n=this.#i}={}){let i={value:A,expiry:n===Number.POSITIVE_INFINITY?void 0:Date.now()+n};return this.#A.has(e)?this.#A.set(e,i):this.#g(e,i),this}has(e){let A=this.#A.get(e)??this.#e.get(e);return A!==void 0&&!this.#n(e,A)}peek(e){let A=this.#A.get(e)??this.#e.get(e);return A?this.#a(e,A):void 0}expiresIn(e){let A=this.#A.get(e)??this.#e.get(e);if(A)return A.expiry===void 0?Number.POSITIVE_INFINITY:A.expiry-Date.now()}delete(e){return this.#A.delete(e)||this.#e.delete(e)}clear(){this.#A.clear(),this.#e.clear()}resize(e){yt("maxSize",e);let A=[...this.#s()],n=A.length-e;n<0?(this.#A=new Map(A),this.#e=new Map):(this.#o(A.slice(0,n)),this.#I(A.slice(n))),this.#t=e}evict(e=1){if(!(e>0))return;let A=[...this.#s()],n=Math.trunc(Math.min(e,A.length-1));n>0&&(this.#o(A.slice(0,n)),this.#I(A.slice(n)))}get size(){return Math.min(this.#A.size+this.#e.size,this.#t)}get maxSize(){return this.#t}get maxAge(){return this.#i}*entriesAscending(){for(let[e,A]of this.#s())yield[e,A.value]}*entriesDescending(){for(let e of[this.#A,this.#e])for(let[A,n]of[...e].reverse())this.#n(A,n)||(yield[A,n.value])}entries(){return this.entriesAscending()}[Symbol.iterator](){return this.entriesAscending()}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}forEach(e,A=this){for(let[n,i]of this)e.call(A,i,n,this)}get[Symbol.toStringTag](){return"QuickLRU"}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}};function Si(t,e=0){let A=t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24;return((t[e+4]|t[e+5]<<8|t[e+6]<<16|t[e+7]<<24)>>>0)*4294967296+(A>>>0)}var vA=class{blockPosition;dataPosition;constructor(e,A){this.blockPosition=e,this.dataPosition=A}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}};function EA(t,e=0){return new vA(t[e+7]*1099511627776+t[e+6]*4294967296+t[e+5]*16777216+t[e+4]*65536+t[e+3]*256+t[e+2],t[e+1]<<8|t[e])}function de(t,e){let A=t.length;if(A===0)return t;let n;if(e){let s=e.blockPosition,I=e.dataPosition;n=[];for(let a=0;a<A;a++){let g=t[a];(g.maxv.blockPosition-s||g.maxv.dataPosition-I)>0&&n.push(g)}if(n.length===0)return n}else n=t;n.sort((s,I)=>{let a=s.minv.blockPosition-I.minv.blockPosition;return a===0?s.minv.dataPosition-I.minv.dataPosition:a});let i=[n[0]],r=n[0].minv.blockPosition,o=n[0].maxv.blockPosition;for(let s=1;s<n.length;s++){let I=n[s],a=I.minv.blockPosition,g=I.maxv.blockPosition;if(a-o<65e3&&g-r<5e6){let h=i.at(-1);(g-o||I.maxv.dataPosition-h.maxv.dataPosition)>0&&(i[i.length-1]=new AA(h.minv,I.maxv,h.bin,I.endPosition),o=g)}else i.push(I),r=a,o=g}return Or(i)}function Or(t){let e=[t[0]];for(let A=1;A<t.length;A++){let n=t[A],i=e.at(-1).maxv;if((n.minv.blockPosition-i.blockPosition||n.minv.dataPosition-i.dataPosition)>=0){e.push(n);continue}(n.maxv.blockPosition-i.blockPosition||n.maxv.dataPosition-i.dataPosition)>0&&e.push(new AA(i,n.maxv,n.bin,n.endPosition))}return e}function ue(t,e=[]){let A=[...e];for(let n of t)A.push(n.minv.blockPosition,n.maxv.blockPosition);A.sort((n,i)=>n-i);for(let n of t){let i=n.maxv.blockPosition,r=0,o=A.length;for(;r<o;){let s=r+o>>>1;A[s]>i?o=s:r=s+1}r<A.length&&(n.endPosition=Math.min(n.endPosition,A[r]))}}function we(t,e,A,n){let i=n?n.blockPosition:1/0,r=n?n.dataPosition:0,o=!1;for(let s=0;s<A;s++){let I=e+s*8,a=t[I+7]*1099511627776+t[I+6]*4294967296+t[I+5]*16777216+t[I+4]*65536+t[I+3]*256+t[I+2],g=t[I+1]<<8|t[I];(a<i||a===i&&g<r)&&(i=a,r=g,o=!0)}return o?new vA(i,r):n}function Xr(t){let e=new TextDecoder("utf-8"),A=[],n={},i=0,r=0;for(;r<t.length;){let o=t.indexOf(0,r);if(o===-1)break;if(o>r){let s=e.decode(t.subarray(r,o));A[i]=s,n[s]=i}r=o+1,i++}return{refNameToId:n,refIdToName:A}}var Pr={0:"generic",1:"SAM",2:"VCF",3:"GAF"};function pe(t,e){let A=new DataView(t.buffer,t.byteOffset,t.byteLength),n=A.getInt32(e,!0),i=n&65536?"zero-based-half-open":"1-based-closed",r=Pr[n&15];if(!r)throw new Error(`invalid Tabix preset format flags ${n}`);let o={ref:A.getInt32(e+4,!0),start:A.getInt32(e+8,!0),end:A.getInt32(e+12,!0)},s=A.getInt32(e+16,!0),I=s?String.fromCharCode(s):void 0,a=A.getInt32(e+20,!0),g=A.getInt32(e+24,!0),{refIdToName:h,refNameToId:E}=Xr(t.subarray(e+28,e+28+g));return{refIdToName:h,refNameToId:E,skipLines:a,metaChar:I,columnNumbers:o,format:r,coordinateType:i}}function ke(t,e){return{lineCount:Si(t,e)}}function me(t,e=5){let A=new jA({maxSize:e});return n=>{let i=A.get(n);if(i!==void 0)return i;let r=t(n);return r!==void 0&&A.set(n,r),r}}function Fi(t){let e=0;for(let i of t)e+=i.length;let A=new Uint8Array(e),n=0;for(let i of t)A.set(i,n),n+=i.length;return A}var vi=10;function xt(t,e){let A=0,n,i=0;for(let r of t){let o=0;if(n){let a=r.indexOf(vi);if(a===-1){n=Fi([n,r]),A+=r.length;continue}if(e(Fi([n,r.subarray(0,a+1)]),i))return!0;o=a+1,n=void 0}let s=r.lastIndexOf(vi);if(s>=o&&e(r.subarray(o,s+1),A+o))return!0;let I=Math.max(o,s+1);I<r.length&&(n=r.slice(I),i=A+I),A+=r.length}return!1}function zr(t,e,A,n){if(e>2**(A+n*3))return;let i=(8**(n+1)-1)/7,r=(8**n-1)/7+Math.floor((e-1)/2**A)+1;for(r>=i&&(r=0);;){for(;r%8===1;)r=(r-1)/8;if(r===0)return;let o=t[r];if(o?.length){let s=o[0].minv;for(let I=1;I<o.length;I++){let a=o[I].minv;a.compareTo(s)<0&&(s=a)}return s}r++}}function Ri(t,e){return t.format==="GAF"?0:t.refNameToId[e]}var mA=class{filehandle;parseCache=new BA({});constructor({filehandle:e}){this.filehandle=e}async readIndexBytes(e){let A=await this.filehandle.readFile({signal:e.signal,onProgress:e.onProgress}),n=await zA(A);return{bytes:n,dataView:new DataView(n.buffer,n.byteOffset,n.byteLength)}}async lineCount(e,A={}){let n=await this.parse(A),i=Ri(n,e);return i===void 0?-1:n.indices(i)?.stats?.lineCount??-1}async getMetadata(e={}){let{indices:A,...n}=await this.parse(e);return n}async blocksForRange(e,A,n,i={}){let r=await this.parse(i),o=Ri(r,e);if(o===void 0)return[];let s=r.indices(o);if(!s)return[];r.format==="GAF"&&(A=Math.max(A-1,0));let I=[];for(let[h,E]of this.reg2bins(A,n,r))for(let Q=h;Q<=E;Q++){let B=s.binIndex[Q];if(B)for(let D of B)I.push(D)}let a=de(I,this.lowestOffset(s,A,r)),g=zr(s.binIndex,n,r.minShift,r.depth);if(g){let h=a.length;for(;h>0&&a[h-1].minv.compareTo(g)>=0;)h--;a.length=h}return a}parse(e={}){return this.parseCache.get("index",e.signal,A=>this._parse({...e,signal:A}))}async hasRefSeq(e,A={}){return!!(await this.parse(A)).indices(e)?.binIndex}};var jr=21582659,Wr=38359875;function Ji(t,e){return t*2**e}function bt(t,e){return Math.floor(t/2**e)}var NA=class extends mA{async _parse(e={}){let{bytes:A,dataView:n}=await this.readIndexBytes(e),i=n.getUint32(0,!0),r;if(i===jr)r=1;else if(i===Wr)r=2;else throw new Error(`Not a CSI file (magic=${i})`);let o=n.getInt32(4,!0),s=n.getInt32(8,!0),I=(8**(s+1)-1)/7,a=2**(o+s*3),g=n.getInt32(12,!0),h=g>=28&&(n.getInt32(16,!0)&15)===3;if(g<30&&!h)throw new Error("CSI index has no tabix header, so it names no references; it may be a BAM or BCF index");let E=pe(A,16),Q=n.getInt32(16+g,!0),B=16+g+4,D,u=[];for(let w=0;w<Q;w++){u.push(B);let m=n.getInt32(B,!0);B+=4;for(let c=0;c<m;c++){let y=n.getUint32(B,!0);if(B+=4,y>I)B+=44;else{D=we(A,B,1,D),B+=8;let f=n.getInt32(B,!0);B+=4+16*f}}}function d(w){let m=u[w];if(m===void 0)return;let c=m,y=n.getInt32(c,!0);c+=4;let f={},C={},N;for(let x=0;x<y;x++){let p=n.getUint32(c,!0);if(c+=4,p>I)N=ke(A,c+28),c+=44;else{C[p]=EA(A,c),c+=8;let F=n.getInt32(c,!0);c+=4;let J=Array.from({length:F});for(let l=0;l<F;l++)J[l]=new AA(EA(A,c),EA(A,c+8),p),c+=16;f[p]=J}}return ue(Object.values(f).flat()),{binIndex:f,loffsets:C,stats:N}}return{...E,csi:!0,refCount:Q,maxBlockSize:65536,firstDataLine:D,csiVersion:r,indices:me(d),minShift:o,depth:s,maxBinNumber:I,maxRefLength:a}}lowestOffset(e,A,{minShift:n,depth:i}){let{loffsets:r}=e,o;if(r){let s=(Ji(1,3*i)-1)/7+bt(Math.max(A,0),n);for(;o===void 0&&s>0;)if(o=r[s],o===void 0){let I=Math.floor((s-1)/8),a=I*8+1;s=s>a?s-1:I}o??=r[0]}return o}reg2bins(e,A,{minShift:n,depth:i,maxBinNumber:r}){e=Math.max(e,0);let o=2**(n+i*3);A>o&&(A=o),A-=1;let s=0,I=0,a=n+i*3,g=[];for(;s<=i;a-=3,I+=Ji(1,s*3),s+=1){let h=I+bt(e,a),E=I+bt(A,a);if(E-h+g.length>r)throw new Error(`query ${e}-${A} is too large for current binning scheme (shift ${n}, depth ${i}), try a smaller query or a coarser index binning scheme`);g.push([h,E])}return g}};var Vr=21578324,St=5,Ft=14,Ne=2**(Ft+St*3);function Gi(t){return Math.min(Math.max(t,0),Ne)}var gA=class extends mA{reg2bins(e,A){e>Ne&&console.warn("querying outside of possible tabix range");let n=Gi(e),i=Math.min(A,Ne)-1,r=[];return n<=i&&r.push([0,0],[1+(n>>26),1+(i>>26)],[9+(n>>23),9+(i>>23)],[73+(n>>20),73+(i>>20)],[585+(n>>17),585+(i>>17)],[4681+(n>>14),4681+(i>>14)]),r}lowestOffset(e,A){let n=e.linearIndex;return n?.[Math.min(Gi(A)>>Ft,n.length-1)]}async _parse(e={}){let{bytes:A,dataView:n}=await this.readIndexBytes(e);if(n.getUint32(0,!0)!==Vr)throw new Error("Not a TBI file");let i=n.getUint32(4,!0),r=((1<<(St+1)*3)-1)/7,{refNameToId:o,refIdToName:s,coordinateType:I,format:a,columnNumbers:g,metaChar:h,skipLines:E}=pe(A,8),B=36+n.getInt32(32,!0),D,u=[];for(let w=0;w<i;w++){u.push(B);let m=n.getInt32(B,!0);B+=4;for(let y=0;y<m;y++){let f=n.getUint32(B,!0);B+=4;let C=n.getInt32(B,!0);if(B+=4,f>r+1)throw new Error("tabix index contains too many bins, please use a CSI index");B+=16*C}let c=n.getInt32(B,!0);B+=4,D=we(A,B,c,D),B+=8*c}function d(w){let m=u[w];if(m===void 0)return;let c=m,y=n.getInt32(c,!0);c+=4;let f={},C;for(let p=0;p<y;p++){let F=n.getUint32(c,!0);if(c+=4,F>r+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(F===r+1){let J=n.getInt32(c,!0);c+=4,J===2&&(C=ke(A,c+16)),c+=16*J}else{let J=n.getInt32(c,!0);c+=4;let l=Array.from({length:J});for(let k=0;k<J;k++)l[k]=new AA(EA(A,c),EA(A,c+8),F),c+=16;f[F]=l}}let N=n.getInt32(c,!0);c+=4;let x=Array.from({length:N});for(let p=0;p<N;p++)x[p]=EA(A,c),c+=8;return ue(Object.values(f).flat(),x.map(p=>p.blockPosition)),{binIndex:f,linearIndex:x,stats:C}}return{indices:me(d),metaChar:h,minShift:Ft,depth:St,maxBinNumber:r,maxRefLength:Ne,skipLines:E,firstDataLine:D,columnNumbers:g,coordinateType:I,format:a,refIdToName:s,refNameToId:o,maxBlockSize:65536}}};var vt=9,ye=10,Mi=13,$r=59,Ao=60,eo=62,to=6,no=1024*2**20,io=180*1e3;function ro(t,e,A){if(t)return t;if(e)return new kA(e);if(A)return new aA(A);throw new TypeError("must provide either filehandle, path, or url")}function oo({tbiFilehandle:t,csiFilehandle:e,tbiPath:A,csiPath:n,tbiUrl:i,csiUrl:r,path:o,url:s}){if(t)return new gA({filehandle:t});if(e)return new NA({filehandle:e});if(A)return new gA({filehandle:new kA(A)});if(n)return new NA({filehandle:new kA(n)});if(r)return new NA({filehandle:new aA(r)});if(i)return new gA({filehandle:new aA(i)});if(o)return new gA({filehandle:new kA(`${o}.tbi`)});if(s)return new gA({filehandle:new aA(`${s}.tbi`)});throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl")}function Ui(t,e,A,n,i){return t[A]*256+(n-e[A])+i+1}function so(t,e,A,n,i,r,o){let s=n-A,I=e+s,a=0;if(t[i]===46)return I;let g=i;for(let h=i;h<=r;h++)if(h===r||t[h]===$r){let E=h-g;if(E>=10&&t[g]===83&&t[g+1]===86&&t[g+2]===84&&t[g+3]===89&&t[g+4]===80&&t[g+5]===69&&t[g+6]===61&&t[g+7]===84&&t[g+8]===82&&t[g+9]===65)return e+1;if(E>=4&&t[g]===69&&t[g+1]===78&&t[g+2]===68&&t[g+3]===61){let Q=De(t,g+4,h);Q>e&&(I=Q)}else E>=6&&t[g]===83&&t[g+1]===86&&t[g+2]===76&&t[g+3]===69&&t[g+4]===78&&t[g+5]===61&&(a=go(t,g+6,h,n+1,o));g=h+1}return Math.max(I,e+a)}var Li=44;function ao(t,e,A){if(A-e<5||t[e]!==60||t[A-1]!==62)return!1;let n=t[e+4];if(n!==62&&n!==58)return!1;let i=t[e+1],r=t[e+2],o=t[e+3];return i===67&&r===78&&o===86||i===68&&r===69&&o===76||i===68&&r===85&&o===80||i===73&&r===78&&o===86}function go(t,e,A,n,i){let r=0,o=e,s=n;for(;o<A&&s<i;){let I=t.indexOf(Li,o);(I===-1||I>A)&&(I=A);let a=t.indexOf(Li,s);if((a===-1||a>i)&&(a=i),ao(t,s,a)){let g=De(t,t[o]===45?o+1:o,I);g>r&&(r=g)}o=I+1,s=a+1}return r}var Yi=new TextDecoder;function _i(t,e){let A=-1,n=e.charCodeAt(0);for(let i=0,r=t.length;i<r;i++){let o=t[i];if(i===A+1&&o!==n)break;o===ye&&(A=i)}return t.subarray(0,A+1)}function Io(t,e){let A=0;for(let n=0;n<e;n++){let i=t.indexOf(ye,A);if(i===-1){A=t.length;break}A=i+1}return Yi.decode(t.subarray(0,A)).split(/\r?\n/).slice(0,e)}function De(t,e,A){let n=0;for(let i=e;i<A;i++){let r=t[i];if(r>=48&&r<=57)n=n*10+(r-48);else break}return n}function Qo(t,e,A,n,i,{start:r,end:o,pathCol:s,metaCharCode:I,decoder:a,callback:g}){let h=0,E=0;for(;h<t.length;){let Q=t.indexOf(ye,h);if(Q===-1)break;let B=h;h=Q+1;let D=B+e+i;for(;E<n.length&&D>=n[E];)E++;if(t[B]===I)continue;let u=B;for(let f=1;f<s;f++){let C=t.indexOf(vt,u);if(C===-1||C>=Q){u=Q;break}u=C+1}let d=t[u];if(d!==eo&&d!==Ao)continue;let w=t.indexOf(vt,u);(w===-1||w>Q)&&(w=Q);let m=1/0,c=-1,y=u;for(;y<w;){let f=0,C=y+1;for(;C<w;C++){let N=t[C]-48;if(N<0||N>9)break;f=f*10+N}f<m&&(m=f),f>c&&(c=f),y=C}if(m>=o)return!0;if(c>=r){let f=t[Q-1]===Mi?Q-1:Q;g(a.decode(t.subarray(B,f)),Ui(A,n,E,B+e,i),m,c+1)}}return!1}var RA=class{filehandle;index;chunkCache;headerCache=new BA({});bgzfWorkerPool;constructor({path:e,filehandle:A,url:n,tbiPath:i,tbiUrl:r,tbiFilehandle:o,csiPath:s,csiUrl:I,csiFilehandle:a,chunkCacheSize:g=no,chunkCacheIdleTimeoutMs:h=io,chunkCacheBudget:E,bgzfWorkerPool:Q}){this.bgzfWorkerPool=Q,this.filehandle=ro(A,e,n),this.index=oo({tbiFilehandle:o,csiFilehandle:a,tbiPath:i,csiPath:s,tbiUrl:r,csiUrl:I,path:e,url:n}),this.chunkCache=new BA({maxSize:g,sizeOf:B=>{let D=0;for(let u of B.segments)D+=u.byteLength;return D},cacheKey:B=>B.toString(),idleTimeoutMs:h,budget:E,fill:(B,D)=>this.readChunk(B,{signal:D})})}clearChunkCache(){this.chunkCache.clear()}async bytesForRegions(e,A={}){let n=[];for(let{refName:r,start:o,end:s}of e){let I=await this.index.blocksForRange(r,o,s,A);for(let a of I)n.push(a)}let i=0;for(let r of de(n))i+=r.fetchedSize();return i}async getLines(e,A,n,i){let r,o={},s,I;typeof i=="function"?s=i:(o=i,s=i.lineCallback,r=i.signal,I=i.onProgress);let a=await this.index.getMetadata(o),g=A??0,h=n??a.maxRefLength;if(g>h)throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(g===h)return;let E=await this.index.blocksForRange(e,g,h,o),Q=a.format==="VCF",B=a.columnNumbers.ref||0,D=a.columnNumbers.start||0,u=Q?8:a.columnNumbers.end||0,d=Math.max(B,D,u),w=a.metaChar?.charCodeAt(0),m=a.coordinateType==="1-based-closed"?-1:0,c=new TextEncoder,y=new TextDecoder,f=c.encode(e),C=new Int32Array(d+1),N=a.format==="GAF"?{start:g,end:h,pathCol:D,metaCharCode:w,decoder:y,callback:s}:void 0,x=0;for(let k of E)x+=k.fetchedSize();let p=0;I?.(0,x);let F=1,J=[],l=k=>{for(;J.length<Math.min(k,E.length);){let b=E[J.length],S=this.chunkCache.get(b,r);S.catch(()=>{}),J.push(S)}};l(1);for(let k=0,b=E.length;k<b;k++){let S=E[k],{segments:v,cpositions:L,dpositions:_}=await J[k];p+=S.fetchedSize(),I?.(p,x);let q=S.minv.dataPosition;if(N){if(xt(v,(R,U)=>Qo(R,U,L,_,q,N)))return}else if(xt(v,(R,U)=>{let G=0,Y=0;for(;G<R.length;){let K=R.indexOf(ye,G);if(K===-1)break;let X=G+U+q;for(;Y<_.length&&X>=_[Y];)Y++;if(w!==void 0&&R[G]===w){G=K+1;continue}C[0]=G-1;for(let T=0;T<d;T++){let DA=C[T],xe=DA<K?R.indexOf(vt,DA+1):-1;C[T+1]=xe===-1||xe>=K?K:xe}let O=C[B-1]+1,JA=C[B]-O;if(JA!==f.length){G=K+1;continue}let fA=!0;for(let T=0;T<JA;T++)if(R[O+T]!==f[T]){fA=!1;break}if(!fA){G=K+1;continue}let eA=De(R,C[D-1]+1,C[D])+m;if(eA>=h)return!0;let tA;if(u===0||u===D?tA=eA+1:Q?tA=so(R,eA,C[3]+1,C[4],C[u-1]+1,C[u],C[5]):tA=De(R,C[u-1]+1,C[u]),tA>g){let T=R[K-1]===Mi?K-1:K,DA=y.decode(R.subarray(G,T));s(DA,Ui(L,_,Y,G+U,q),eA,tA)}G=K+1}return!1}))return;F=Math.min(F*2,to),l(k+1+F)}}async getMetadata(e={}){return this.index.getMetadata(e)}async readHeaderBytes(e){let{firstDataLine:A,maxBlockSize:n}=await this.getMetadata(e),i=(A?.blockPosition??0)+n,r=await this.filehandle.read(i,0,e);return zA(r)}async parseHeader(e){let{metaChar:A,skipLines:n=0}=await this.getMetadata(e),i=await this.readHeaderBytes(e);return{header:Yi.decode(A?_i(i,A):i),skippedLines:n>0?Io(i,n):[]}}getParsedHeader(e={}){return this.headerCache.get("header",e.signal,A=>this.parseHeader({...e,signal:A}))}async getHeaderBuffer(e={}){let{metaChar:A}=await this.getMetadata(e),n=await this.readHeaderBytes(e);return A?_i(n,A):n}async getSkippedLines(e={}){let{skipLines:A=0}=await this.getMetadata(e);return A<=0?[]:(await this.getParsedHeader(e)).skippedLines}async getHeader(e={}){return(await this.getParsedHeader(e)).header}async getHeaderLines(e={}){let{header:A,skippedLines:n}=await this.getParsedHeader(e);return(A?A.split(/\r?\n/):n).filter(Boolean)}async getReferenceSequenceNames(e={}){return(await this.getMetadata(e)).refIdToName}async lineCount(e,A={}){return this.index.lineCount(e,A)}async readChunk(e,A={}){let n=await this.filehandle.read(e.fetchedSize(),e.minv.blockPosition,A);pA(A.signal);let i=await this.bgzfWorkerPool;return pt(n,e,i)}};var Co=t=>({type:"fileLocation",defaultValue:{uri:t,locationType:"UriLocation"}}),ya=(t,e="")=>Jt(t,{indexType:{model:Gt.enumeration("IndexType",["TBI","CSI"]),type:"stringEnum",defaultValue:"TBI"},location:Co(e)});function co(t,e,A){return{indexType:A?"CSI":"TBI",location:{uri:`${t}.${A?"csi":"tbi"}`,baseUri:e}}}function xa(t){let{walksUri:e,baseUri:A,csi:n}=t;if(typeof e!="string")return t;let i=`${e}.walks.bed.gz`;return{...t,walksLocation:{uri:i,baseUri:A},walksIndex:co(i,A,n)}}function ba(t,e,A){let n=t.pluginManager;return new RA({filehandle:Lt(t.getConf(e),n),..._t(t.getConf([...A,"location"]),t.getConf([...A,"indexType"]),n)})}function Bo(t){return`${t.assemblyName} ${t.refName} is not in this graph's index; a graph with PanSN names (GRCh38#0#chr1) needs ${t.assemblyName} mapped to its prefix in assemblyNameToPanSN`}var Hi=class{constructor(e,A){this.file=e;this.adapter=A;this.lookup=Ut({setup:async e=>HA(await this.file.getReferenceSequenceNames(e))})}async assemblyRefNames(e={}){let A=await this.file.getReferenceSequenceNames(e),n=WA(this.adapter,e.assemblyName),i=A.filter(r=>be(r,n)).map(r=>Rt(r));return i.length>0?[...new Set(i)]:A}async resolve(e,A){let n=await this.lookup(A);return KA(n,WA(this.adapter,e.assemblyName),e.refName)}async resolveMapped(e,A){let n=await this.resolve(e,A);if(n===void 0&&e.assemblyName){let i=await this.file.getReferenceSequenceNames(A),r=WA(this.adapter,e.assemblyName);if(i.every(o=>o.includes("#"))&&!i.some(o=>be(o,r)))throw new Error(Bo(e))}return n}async regionBytes(e,A={},n=async(i,r)=>r.start){let i=[];for(let r of e){let o=await this.resolve(r,A);o!==void 0&&i.push({refName:o,start:await n(o,r),end:r.end})}return In(this.file,i,A)}};export{zA as a,Eo as b,Ut as c,Oi as d,Ue as e,ir as f,We as g,Xe as h,ji as i,rr as j,qo as k,Co as l,ya as m,co as n,xa as o,ba as p,Bo as q,Hi as r};
|
|
3
|
+
//# sourceMappingURL=chunk-OUHKJSKZ.js.map
|