jbrowse-plugin-graphgenomeviewer 8.8.2 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/README.md +6 -6
  2. package/dist/chunks/{AddTrackWorkflow-FANMD3WB.js → AddTrackWorkflow-3PX4I4DX.js} +2 -2
  3. package/dist/chunks/{AddTrackWorkflow-FANMD3WB.js.map → AddTrackWorkflow-3PX4I4DX.js.map} +2 -2
  4. package/dist/chunks/{GbzBaseSyntenyAdapter-NAXISJUH.js → GbzBaseSyntenyAdapter-YUT5RT7G.js} +2 -2
  5. package/dist/chunks/{GbzBaseSyntenyAdapter-NAXISJUH.js.map → GbzBaseSyntenyAdapter-YUT5RT7G.js.map} +2 -2
  6. package/dist/chunks/{GraphGenomeView-PPOVN5LA.js → GraphGenomeView-XFKLX3VQ.js} +2 -2
  7. package/dist/chunks/{GraphTrackSettingsDialog-BRTDTVOJ.js → GraphTrackSettingsDialog-KOYYI2XH.js} +2 -2
  8. package/dist/chunks/{HighlightColorDialog-CGW7J3SK.js → HighlightColorDialog-F4IARMEO.js} +2 -2
  9. package/dist/chunks/LinearGraphDisplay-BZ44C6S3.js +2 -0
  10. package/dist/chunks/MinigraphBubbleAdapter-2KIWDIY7.js +2 -0
  11. package/dist/chunks/MinigraphBubbleAdapter-2KIWDIY7.js.map +7 -0
  12. package/dist/chunks/RgfaTabixAdapter-7QKNUHKX.js +2 -0
  13. package/dist/chunks/RgfaTabixAdapter-7QKNUHKX.js.map +7 -0
  14. package/dist/chunks/{TrackWarningsDialog-23WL6FPV.js → TrackWarningsDialog-V5YSUFRO.js} +1 -1
  15. package/dist/chunks/{TrackWarningsDialog-23WL6FPV.js.map → TrackWarningsDialog-V5YSUFRO.js.map} +1 -1
  16. package/dist/chunks/WalkFormsAdapter-5NDOULY6.js +2 -0
  17. package/dist/chunks/WalkFormsAdapter-5NDOULY6.js.map +7 -0
  18. package/dist/chunks/WalkTabixSyntenyAdapter-KI7ESKKP.js +2 -0
  19. package/dist/chunks/WalkTabixSyntenyAdapter-KI7ESKKP.js.map +7 -0
  20. package/dist/chunks/{chunk-RS274NAD.js → chunk-3HSJ7SAT.js} +2 -2
  21. package/dist/chunks/{chunk-RS274NAD.js.map → chunk-3HSJ7SAT.js.map} +1 -1
  22. package/dist/chunks/chunk-42VF2CSA.js +4 -0
  23. package/dist/chunks/chunk-42VF2CSA.js.map +7 -0
  24. package/dist/chunks/{chunk-LFQFVYNY.js → chunk-47UWMS4O.js} +3 -3
  25. package/dist/chunks/chunk-47UWMS4O.js.map +7 -0
  26. package/dist/chunks/{chunk-MWQGJP3J.js → chunk-7PVPO366.js} +2 -2
  27. package/dist/chunks/{chunk-MWQGJP3J.js.map → chunk-7PVPO366.js.map} +1 -1
  28. package/dist/chunks/{chunk-SKB4GSET.js → chunk-AQSLN3RH.js} +2 -2
  29. package/dist/chunks/{chunk-SKB4GSET.js.map → chunk-AQSLN3RH.js.map} +1 -1
  30. package/dist/chunks/chunk-AXUXLPO3.js +6 -0
  31. package/dist/chunks/chunk-AXUXLPO3.js.map +7 -0
  32. package/dist/chunks/chunk-CJ4VON23.js +2 -0
  33. package/dist/chunks/chunk-CJ4VON23.js.map +7 -0
  34. package/dist/chunks/{chunk-AGUEPVOR.js → chunk-FQI75MV6.js} +1 -1
  35. package/dist/chunks/{chunk-AGUEPVOR.js.map → chunk-FQI75MV6.js.map} +1 -1
  36. package/dist/chunks/{chunk-FM4T47WH.js → chunk-HFBUC6GF.js} +2 -2
  37. package/dist/chunks/{chunk-FM4T47WH.js.map → chunk-HFBUC6GF.js.map} +1 -1
  38. package/dist/chunks/chunk-I2XBA4H7.js +9 -0
  39. package/dist/chunks/{chunk-EFXNCI7R.js.map → chunk-I2XBA4H7.js.map} +4 -4
  40. package/dist/chunks/chunk-KIURR66K.js +3 -0
  41. package/dist/chunks/chunk-KIURR66K.js.map +7 -0
  42. package/dist/chunks/{chunk-CHLLRNBQ.js → chunk-LQSOJR7D.js} +2 -2
  43. package/dist/chunks/{chunk-CHLLRNBQ.js.map → chunk-LQSOJR7D.js.map} +1 -1
  44. package/dist/chunks/chunk-M6YSANSW.js +2 -0
  45. package/dist/chunks/chunk-M6YSANSW.js.map +7 -0
  46. package/dist/chunks/{chunk-ZWHXVFZF.js → chunk-MPUAUZSJ.js} +1 -1
  47. package/dist/chunks/{chunk-ZWHXVFZF.js.map → chunk-MPUAUZSJ.js.map} +1 -1
  48. package/dist/chunks/{chunk-5HDIVUAZ.js → chunk-N4ZFGZDN.js} +2 -2
  49. package/dist/chunks/{chunk-5HDIVUAZ.js.map → chunk-N4ZFGZDN.js.map} +1 -1
  50. package/dist/chunks/{chunk-KBOVZ3GI.js → chunk-OSEQDKL3.js} +1 -1
  51. package/dist/chunks/{chunk-KBOVZ3GI.js.map → chunk-OSEQDKL3.js.map} +1 -1
  52. package/dist/chunks/{chunk-NSQ4VXKR.js → chunk-P76SUZFP.js} +3 -3
  53. package/dist/chunks/{chunk-NSQ4VXKR.js.map → chunk-P76SUZFP.js.map} +3 -3
  54. package/dist/chunks/{chunk-HKGTCZOL.js → chunk-R34FRICP.js} +4 -4
  55. package/dist/chunks/{chunk-HKGTCZOL.js.map → chunk-R34FRICP.js.map} +2 -2
  56. package/dist/chunks/chunk-SXMUGZXP.js +2 -0
  57. package/dist/chunks/chunk-SXMUGZXP.js.map +7 -0
  58. package/dist/chunks/chunk-T7NMFIRW.js +2 -0
  59. package/dist/chunks/chunk-T7NMFIRW.js.map +7 -0
  60. package/dist/chunks/chunk-TLUGH4VW.js +2 -0
  61. package/dist/chunks/{chunk-LKD5NRWR.js → chunk-VAWAASUT.js} +1 -1
  62. package/dist/chunks/{chunk-LKD5NRWR.js.map → chunk-VAWAASUT.js.map} +1 -1
  63. package/dist/chunks/chunk-Y4TLRGAC.js +2 -0
  64. package/dist/chunks/{chunk-EEWEXRY6.js.map → chunk-Y4TLRGAC.js.map} +3 -3
  65. package/dist/chunks/chunk-ZXJRZKWF.js +2 -0
  66. package/dist/chunks/chunk-ZXJRZKWF.js.map +7 -0
  67. package/dist/chunks/{executeDiagonalize-HZFFXMG4.js → executeDiagonalize-ZMW5BLEJ.js} +2 -2
  68. package/dist/chunks/{executeDiagonalize-HZFFXMG4.js.map → executeDiagonalize-ZMW5BLEJ.js.map} +1 -1
  69. package/dist/chunks/{renderSvg-UKXPWKKV.js → renderSvg-DLJTA2B3.js} +2 -2
  70. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +5 -5
  71. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
  72. package/package.json +12 -12
  73. package/src/GraphAddTrackWorkflow/AddTrackWorkflow.test.tsx +4 -7
  74. package/src/GraphAddTrackWorkflow/AddTrackWorkflow.tsx +1 -1
  75. package/src/GraphAddTrackWorkflow/buildTrackConfig.ts +9 -6
  76. package/src/GraphGenomeView/model.test.ts +21 -8
  77. package/src/GraphGenomeView/pane/loadActions.ts +7 -2
  78. package/src/GraphGenomeView/pane/walkRowViews.ts +1 -1
  79. package/src/GraphGenomeView/walkRowGroups.test.ts +14 -3
  80. package/src/GraphGenomeView/walkRowGroups.ts +0 -22
  81. package/src/GraphGenomeView/walkRowsCut.ts +1 -0
  82. package/src/MinigraphBubbleAdapter/MinigraphBubbleAdapter.ts +5 -2
  83. package/src/RgfaTabixAdapter/RgfaTabixAdapter.test.ts +1 -1
  84. package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +16 -16
  85. package/src/RgfaTabixAdapter/configSchema.ts +16 -12
  86. package/src/RgfaTabixAdapter/test_data/walks7/build.sh +27 -0
  87. package/src/RgfaTabixAdapter/test_data/walks7/follow.GRCh38.gfa +35 -0
  88. package/src/RgfaTabixAdapter/test_data/walks7/follow.GRCh38.walks.gz +0 -0
  89. package/src/RgfaTabixAdapter/test_data/walks7/follow.GRCh38.walks.gz.idx +3 -0
  90. package/src/RgfaTabixAdapter/test_data/walks7/header.GRCh38.gfa +22 -0
  91. package/src/RgfaTabixAdapter/test_data/walks7/header.GRCh38.walks.gz +0 -0
  92. package/src/RgfaTabixAdapter/test_data/walks7/header.GRCh38.walks.gz.idx +3 -0
  93. package/src/RgfaTabixAdapter/test_data/walks7/inversion.GRCh38.gfa +15 -0
  94. package/src/RgfaTabixAdapter/test_data/walks7/inversion.GRCh38.walks.gz +0 -0
  95. package/src/RgfaTabixAdapter/test_data/walks7/inversion.GRCh38.walks.gz.idx +3 -0
  96. package/src/RgfaTabixAdapter/test_data/walks7/lanepairs.GRCh38.gfa +19 -0
  97. package/src/RgfaTabixAdapter/test_data/walks7/lanepairs.GRCh38.walks.gz +0 -0
  98. package/src/RgfaTabixAdapter/test_data/walks7/lanepairs.GRCh38.walks.gz.idx +3 -0
  99. package/src/RgfaTabixAdapter/test_data/walks7/maxnode.GRCh38.gfa +11 -0
  100. package/src/RgfaTabixAdapter/test_data/walks7/maxnode.GRCh38.walks.gz +0 -0
  101. package/src/RgfaTabixAdapter/test_data/walks7/maxnode.GRCh38.walks.gz.idx +3 -0
  102. package/src/RgfaTabixAdapter/test_data/walks7/rejoin.GRCh38.walks.gz +0 -0
  103. package/src/RgfaTabixAdapter/test_data/walks7/rejoin.GRCh38.walks.gz.idx +3 -0
  104. package/src/RgfaTabixAdapter/test_data/walks7/skip.GRCh38.gfa +23 -0
  105. package/src/RgfaTabixAdapter/test_data/walks7/skip.GRCh38.walks.gz +0 -0
  106. package/src/RgfaTabixAdapter/test_data/walks7/skip.GRCh38.walks.gz.idx +3 -0
  107. package/src/RgfaTabixAdapter/test_data/walks7/skipfollow.GRCh38.gfa +50 -0
  108. package/src/RgfaTabixAdapter/test_data/walks7/skipfollow.GRCh38.walks.gz +0 -0
  109. package/src/RgfaTabixAdapter/test_data/walks7/skipfollow.GRCh38.walks.gz.idx +3 -0
  110. package/src/RgfaTabixAdapter/test_data/walks7/skipinv.GRCh38.gfa +45 -0
  111. package/src/RgfaTabixAdapter/test_data/walks7/skipinv.GRCh38.walks.gz +0 -0
  112. package/src/RgfaTabixAdapter/test_data/walks7/skipinv.GRCh38.walks.gz.idx +3 -0
  113. package/src/RgfaTabixAdapter/test_data/walks7/twopart.GRCh38.gfa +22 -0
  114. package/src/RgfaTabixAdapter/test_data/walks7/twopart.GRCh38.walks.gz +0 -0
  115. package/src/RgfaTabixAdapter/test_data/walks7/twopart.GRCh38.walks.gz.idx +3 -0
  116. package/src/RgfaTabixAdapter/walkFiles.test.ts +131 -119
  117. package/src/RgfaTabixAdapter/walkReader.ts +36 -49
  118. package/src/WalkFormsAdapter/WalkFormsAdapter.test.ts +7 -28
  119. package/src/WalkFormsAdapter/WalkFormsAdapter.ts +4 -29
  120. package/src/WalkFormsAdapter/configSchema.ts +13 -13
  121. package/src/WalkFormsAdapter/formRows.test.ts +0 -7
  122. package/src/WalkFormsAdapter/formRows.ts +0 -12
  123. package/src/WalkFormsAdapter/formsMenu.test.ts +1 -1
  124. package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.test.ts +54 -96
  125. package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.ts +56 -152
  126. package/src/WalkTabixSyntenyAdapter/configSchema.ts +15 -16
  127. package/src/WalkTabixSyntenyAdapter/gbzParity.test.ts +5 -6
  128. package/src/WalkTabixSyntenyAdapter/walkLanes.ts +48 -142
  129. package/src/graphTrackConfig.test.ts +1 -1
  130. package/src/graphTrackDefaults/graphTrackDefaults.test.ts +7 -10
  131. package/src/launchFromGraph/syntenyTracks.test.ts +1 -1
  132. package/src/locationName.ts +2 -2
  133. package/src/panSNAliases/panSNAliases.test.ts +4 -6
  134. package/src/panSNTabix.test.ts +3 -23
  135. package/src/panSNTabix.ts +58 -34
  136. package/src/synteny/laneZoomNotice.test.ts +1 -0
  137. package/src/version.ts +1 -1
  138. package/dist/chunks/LinearGraphDisplay-2AZ7X7TK.js +0 -2
  139. package/dist/chunks/MinigraphBubbleAdapter-NR3MMUUG.js +0 -2
  140. package/dist/chunks/MinigraphBubbleAdapter-NR3MMUUG.js.map +0 -7
  141. package/dist/chunks/RgfaTabixAdapter-JDQLVQVP.js +0 -2
  142. package/dist/chunks/RgfaTabixAdapter-JDQLVQVP.js.map +0 -7
  143. package/dist/chunks/WalkFormsAdapter-YMQC3NLG.js +0 -2
  144. package/dist/chunks/WalkFormsAdapter-YMQC3NLG.js.map +0 -7
  145. package/dist/chunks/WalkTabixSyntenyAdapter-PBWN53PE.js +0 -2
  146. package/dist/chunks/WalkTabixSyntenyAdapter-PBWN53PE.js.map +0 -7
  147. package/dist/chunks/chunk-6VNDP3UB.js +0 -2
  148. package/dist/chunks/chunk-6VNDP3UB.js.map +0 -7
  149. package/dist/chunks/chunk-A27SW7X7.js +0 -2
  150. package/dist/chunks/chunk-A27SW7X7.js.map +0 -7
  151. package/dist/chunks/chunk-APSXG7SV.js +0 -2
  152. package/dist/chunks/chunk-DEWVJ57F.js +0 -4
  153. package/dist/chunks/chunk-DEWVJ57F.js.map +0 -7
  154. package/dist/chunks/chunk-EEWEXRY6.js +0 -2
  155. package/dist/chunks/chunk-EFXNCI7R.js +0 -9
  156. package/dist/chunks/chunk-EH5OCKSE.js +0 -3
  157. package/dist/chunks/chunk-EH5OCKSE.js.map +0 -7
  158. package/dist/chunks/chunk-GLSUAMGV.js +0 -3
  159. package/dist/chunks/chunk-GLSUAMGV.js.map +0 -7
  160. package/dist/chunks/chunk-LFQFVYNY.js.map +0 -7
  161. package/dist/chunks/chunk-QUDJ7AM3.js +0 -2
  162. package/dist/chunks/chunk-QUDJ7AM3.js.map +0 -7
  163. package/dist/chunks/chunk-T7LVVBTT.js +0 -2
  164. package/dist/chunks/chunk-T7LVVBTT.js.map +0 -7
  165. package/dist/chunks/chunk-ZBFIEBO6.js +0 -2
  166. package/dist/chunks/chunk-ZBFIEBO6.js.map +0 -7
  167. package/src/RgfaTabixAdapter/test_data/walks1_header.GRCh38.walks.bed.gz +0 -0
  168. package/src/RgfaTabixAdapter/test_data/walks1_header.GRCh38.walks.bed.gz.tbi +0 -0
  169. package/src/RgfaTabixAdapter/test_data/walks5_follow.GRCh38.walks.bed.gz +0 -0
  170. package/src/RgfaTabixAdapter/test_data/walks5_follow.GRCh38.walks.bed.gz.tbi +0 -0
  171. package/src/RgfaTabixAdapter/test_data/walks5_header.GRCh38.walks.bed.gz +0 -0
  172. package/src/RgfaTabixAdapter/test_data/walks5_header.GRCh38.walks.bed.gz.tbi +0 -0
  173. package/src/RgfaTabixAdapter/test_data/walks5_inversion.GRCh38.walks.bed.gz +0 -0
  174. package/src/RgfaTabixAdapter/test_data/walks5_inversion.GRCh38.walks.bed.gz.tbi +0 -0
  175. package/src/RgfaTabixAdapter/test_data/walks5_lanepairs.GRCh38.walks.bed.gz +0 -0
  176. package/src/RgfaTabixAdapter/test_data/walks5_lanepairs.GRCh38.walks.bed.gz.tbi +0 -0
  177. package/src/RgfaTabixAdapter/test_data/walks5_maxnode.GRCh38.walks.bed.gz +0 -0
  178. package/src/RgfaTabixAdapter/test_data/walks5_maxnode.GRCh38.walks.bed.gz.tbi +0 -0
  179. package/src/RgfaTabixAdapter/test_data/walks5_rejoin.GRCh38.walks.bed.gz +0 -0
  180. package/src/RgfaTabixAdapter/test_data/walks5_rejoin.GRCh38.walks.bed.gz.tbi +0 -0
  181. package/src/RgfaTabixAdapter/test_data/walks5_skip.GRCh38.walks.bed.gz +0 -0
  182. package/src/RgfaTabixAdapter/test_data/walks5_skip.GRCh38.walks.bed.gz.tbi +0 -0
  183. package/src/RgfaTabixAdapter/test_data/walks5_skipfollow.GRCh38.walks.bed.gz +0 -0
  184. package/src/RgfaTabixAdapter/test_data/walks5_skipfollow.GRCh38.walks.bed.gz.tbi +0 -0
  185. package/src/RgfaTabixAdapter/test_data/walks5_skipinv.GRCh38.walks.bed.gz +0 -0
  186. package/src/RgfaTabixAdapter/test_data/walks5_skipinv.GRCh38.walks.bed.gz.tbi +0 -0
  187. package/src/RgfaTabixAdapter/test_data/walks5_twopart.GRCh38.walks.bed.gz +0 -0
  188. package/src/RgfaTabixAdapter/test_data/walks5_twopart.GRCh38.walks.bed.gz.tbi +0 -0
  189. /package/dist/chunks/{GraphGenomeView-PPOVN5LA.js.map → GraphGenomeView-XFKLX3VQ.js.map} +0 -0
  190. /package/dist/chunks/{GraphTrackSettingsDialog-BRTDTVOJ.js.map → GraphTrackSettingsDialog-KOYYI2XH.js.map} +0 -0
  191. /package/dist/chunks/{HighlightColorDialog-CGW7J3SK.js.map → HighlightColorDialog-F4IARMEO.js.map} +0 -0
  192. /package/dist/chunks/{LinearGraphDisplay-2AZ7X7TK.js.map → LinearGraphDisplay-BZ44C6S3.js.map} +0 -0
  193. /package/dist/chunks/{chunk-APSXG7SV.js.map → chunk-TLUGH4VW.js.map} +0 -0
  194. /package/dist/chunks/{renderSvg-UKXPWKKV.js.map → renderSvg-DLJTA2B3.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.7.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BSOZW3FC.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.7.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-HOAIOEI7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.7.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-RJWPJCIB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.7.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BEUTROKU.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.7.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-QBI6SC74.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@13.1.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BSOZW3FC.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@13.1.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-HOAIOEI7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@13.1.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-RJWPJCIB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@13.1.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BEUTROKU.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@13.1.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-QBI6SC74.js"],
4
4
  "sourcesContent": ["// src/util/groups.ts\nfunction pushTo(map, key, value) {\n const list = map.get(key);\n if (list) {\n list.push(value);\n } else {\n map.set(key, [value]);\n }\n}\nfunction addTo(map, key, value) {\n const set = map.get(key);\n if (set) {\n set.add(value);\n } else {\n map.set(key, /* @__PURE__ */ new Set([value]));\n }\n}\nfunction groupBy(items, keyOf) {\n const groups = /* @__PURE__ */ new Map();\n for (const item of items) {\n pushTo(groups, keyOf(item), item);\n }\n return groups;\n}\n\nexport {\n pushTo,\n addTo,\n groupBy\n};\n", "// src/util/partitionPoint.ts\nfunction partitionPoint(n, pred) {\n let lo = 0;\n let hi = n;\n while (lo < hi) {\n const mid = lo + hi >> 1;\n if (pred(mid)) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return lo;\n}\n\nexport {\n partitionPoint\n};\n", "import {\n partitionPoint\n} from \"./chunk-HOAIOEI7.js\";\n\n// src/anchoredNodes.ts\nvar REFERENCE_RANK = 0;\nfunction isAnchored(node) {\n return node.stable !== void 0;\n}\nfunction isBackbone(node) {\n return node.stable?.rank === REFERENCE_RANK;\n}\nfunction isOffReference(node) {\n return node.stable !== void 0 && node.stable.rank > REFERENCE_RANK;\n}\nfunction backboneNodes(graph) {\n return graph.nodes.filter(isBackbone);\n}\nfunction overlapsWindow(node, window) {\n return node.stable.start < window.end && node.stable.start + node.length > window.start;\n}\nfunction backbonePositions(backbone) {\n const positions = {};\n for (const node of backbone) {\n positions[node.id] = [\n { x: node.stable.start, y: 0 },\n { x: node.stable.start + node.length, y: 0 }\n ];\n }\n return positions;\n}\nfunction firstNodeAtOrAfter(nodes, bp) {\n return partitionPoint(nodes.length, (i) => nodes[i].stable.start < bp);\n}\nfunction backboneSpan(backbone) {\n let min = Infinity;\n let max = -Infinity;\n for (const node of backbone) {\n min = Math.min(min, node.stable.start);\n max = Math.max(max, node.stable.start + node.length);\n }\n return max - min;\n}\nfunction referenceSpan(backbone, region) {\n return region && region.end > region.start ? region.end - region.start : backboneSpan(backbone);\n}\n\nexport {\n REFERENCE_RANK,\n isAnchored,\n isBackbone,\n isOffReference,\n backboneNodes,\n overlapsWindow,\n backbonePositions,\n firstNodeAtOrAfter,\n backboneSpan,\n referenceSpan\n};\n", "// src/pathVisits.ts\nvar PathVisits = class {\n constructor(columns) {\n this.segments = columns.segments;\n this.offsets = columns.offsets;\n this.path = columns.path;\n this.start = columns.start;\n this.reversed = columns.reversed;\n this.paths = columns.paths;\n this.samples = columns.samples;\n this.slots = new Map(this.segments.map((s, i) => [s, i]));\n }\n static from(entries) {\n const builder = new PathVisitsBuilder();\n for (const [segment, visits] of entries) {\n builder.declare(segment);\n for (const v of visits) {\n builder.add(segment, v.path, v.sample, v.start, v.strand === \"-\");\n }\n }\n return builder.build();\n }\n get size() {\n return this.segments.length;\n }\n // the segment's index into `segments` and `offsets`, -1 when unvisited\n slot(segment) {\n return this.slots.get(segment) ?? -1;\n }\n pathIndex(path) {\n return this.paths.indexOf(path);\n }\n // the first of `slot`'s visits by path `p`, -1 for none\n firstBy(slot, p) {\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n if (this.path[i] === p) {\n return i;\n }\n }\n return -1;\n }\n // the visit of `slot` on the path first in name order, at its lowest offset\n // there: where gfa-to-tabix places a segment the reference doesn't visit, so\n // both place it alike whatever order the file lists its paths in\n firstByName(slot) {\n let best = this.offsets[slot];\n for (let i = best + 1; i < this.offsets[slot + 1]; i++) {\n const a = this.paths[this.path[i]];\n const b = this.paths[this.path[best]];\n if (a < b || a === b && this.start[i] < this.start[best]) {\n best = i;\n }\n }\n return best;\n }\n // Paths' steps replayed in walk order against their visits: the k-th call\n // for one path and segment answers that path's k-th visit there, -1 past\n // its last. A walk in pieces lists its pieces in path order, so replaying\n // the pieces in order reads each step's own visit.\n replay() {\n const cursor = /* @__PURE__ */ new Map();\n return (slot, p) => {\n if (slot < 0 || p < 0) {\n return -1;\n }\n const key = slot * this.paths.length + p;\n const end = this.offsets[slot + 1];\n let at = cursor.get(key) ?? this.offsets[slot];\n while (at < end && this.path[at] !== p) {\n at++;\n }\n cursor.set(key, at + 1);\n return at < end ? at : -1;\n };\n }\n // the visits of paths `keepPath` accepts, at segments `keepSegment` does\n filter(keepPath, keepSegment = () => true) {\n const kept = this.paths.map(keepPath);\n const builder = new PathVisitsBuilder();\n this.segments.forEach((segment, s) => {\n if (!keepSegment(segment)) {\n return;\n }\n const slot = builder.declare(segment);\n for (let i = this.offsets[s]; i < this.offsets[s + 1]; i++) {\n const p = this.path[i];\n if (kept[p]) {\n builder.addAt(\n slot,\n builder.pathOf(this.paths[p], this.samples[p]),\n this.start[i],\n this.reversed[i] === 1\n );\n }\n }\n });\n return builder.build();\n }\n strand(i) {\n return this.reversed[i] ? \"-\" : \"+\";\n }\n visit(i) {\n const p = this.path[i];\n return {\n path: this.paths[p],\n sample: this.samples[p],\n start: this.start[i],\n strand: this.strand(i)\n };\n }\n visitsAt(slot) {\n const out = [];\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n out.push(this.visit(i));\n }\n return out;\n }\n get(segment) {\n const slot = this.slot(segment);\n return slot < 0 ? void 0 : this.visitsAt(slot);\n }\n has(segment) {\n return this.slots.has(segment);\n }\n keys() {\n return this.segments[Symbol.iterator]();\n }\n *values() {\n for (let s = 0; s < this.segments.length; s++) {\n yield this.visitsAt(s);\n }\n }\n *entries() {\n for (let s = 0; s < this.segments.length; s++) {\n yield [this.segments[s], this.visitsAt(s)];\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n};\nvar Column = class {\n constructor(data) {\n this.data = data;\n this.length = 0;\n }\n push(value) {\n if (this.length === this.data.length) {\n const grown = new this.data.constructor(\n this.data.length * 2\n );\n grown.set(this.data);\n this.data = grown;\n }\n this.data[this.length++] = value;\n }\n};\nvar PathVisitsBuilder = class {\n constructor() {\n this.segments = [];\n this.slots = /* @__PURE__ */ new Map();\n this.paths = [];\n this.samples = [];\n this.pathIndex = /* @__PURE__ */ new Map();\n this.slot = new Column(new Int32Array(1024));\n this.path = new Column(new Int32Array(1024));\n this.start = new Column(new Float64Array(1024));\n this.reversed = new Column(new Uint8Array(1024));\n }\n // a segment's place in iteration order, though it has no visits yet\n declare(segment) {\n let s = this.slots.get(segment);\n if (s === void 0) {\n s = this.segments.length;\n this.slots.set(segment, s);\n this.segments.push(segment);\n }\n return s;\n }\n // a path's index, so a caller adding many of its visits names it once\n pathOf(path, sample) {\n let p = this.pathIndex.get(path);\n if (p === void 0) {\n p = this.paths.length;\n this.pathIndex.set(path, p);\n this.paths.push(path);\n this.samples.push(sample);\n }\n return p;\n }\n add(segment, path, sample, start, reversed) {\n this.addAt(\n this.declare(segment),\n this.pathOf(path, sample),\n start,\n reversed\n );\n }\n addAt(slot, path, start, reversed) {\n this.slot.push(slot);\n this.path.push(path);\n this.start.push(start);\n this.reversed.push(reversed ? 1 : 0);\n }\n build() {\n const n = this.slot.length;\n const segments = this.segments.length;\n const offsets = new Int32Array(segments + 1);\n const slot = this.slot.data;\n for (let i = 0; i < n; i++) {\n offsets[slot[i] + 1]++;\n }\n for (let s = 0; s < segments; s++) {\n offsets[s + 1] += offsets[s];\n }\n const fill = offsets.slice(0, segments);\n const path = new Int32Array(n);\n const start = new Float64Array(n);\n const reversed = new Uint8Array(n);\n for (let i = 0; i < n; i++) {\n const at = fill[slot[i]]++;\n path[at] = this.path.data[i];\n start[at] = this.start.data[i];\n reversed[at] = this.reversed.data[i];\n }\n return new PathVisits({\n segments: this.segments,\n offsets,\n path,\n start,\n reversed,\n paths: this.paths,\n samples: this.samples\n });\n }\n};\n\nexport {\n PathVisits,\n Column,\n PathVisitsBuilder\n};\n", "import {\n PathVisitsBuilder\n} from \"./chunk-BEUTROKU.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n REFERENCE_RANK\n} from \"./chunk-RJWPJCIB.js\";\nimport {\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/pathAnchoring.ts\nvar RANGE_SUFFIX = /:(\\d+)-\\d+$/;\nvar VG_FRAGMENT = /^([^#]*#[^#]*#[^#[]*)#(\\d+)(?:\\[(\\d+)-\\d+\\])?$/;\nvar VG_SUBRANGE = /\\[(\\d+)-\\d+\\]$/;\nfunction pathOrigin(pathName) {\n const fragment = VG_FRAGMENT.exec(pathName);\n if (fragment) {\n return { name: fragment[1], start: +fragment[2] + +(fragment[3] ?? 0) };\n }\n const match = RANGE_SUFFIX.exec(pathName) ?? VG_SUBRANGE.exec(pathName);\n return match ? { name: pathName.slice(0, match.index), start: +match[1] } : { name: pathName, start: 0 };\n}\nfunction surveyPaths(paths, lengthOf) {\n const anchorPaths = [];\n const visits = new PathVisitsBuilder();\n for (const path of paths) {\n const sample = panSNSample(path.name);\n const p = visits.pathOf(path.name, sample);\n let pos = path.start;\n for (const step of path.steps) {\n visits.addAt(visits.declare(step.id), p, pos, step.strand === \"-\");\n pos += lengthOf(step.id);\n }\n anchorPaths.push({\n name: path.name,\n sample,\n start: path.start,\n length: pos - path.start\n });\n }\n return { anchorPaths, pathVisits: visits.build() };\n}\nfunction chooseReferencePath(anchorPaths, preferred) {\n const named = anchorPaths.find(\n (p) => p.sample === preferred || p.name === preferred\n );\n return named ?? anchorPaths[0];\n}\nvar OFF_REFERENCE_RANK = 1;\nfunction anchorNode(node, visits, reference, samplesOf) {\n const slot = visits.slot(node.name);\n if (slot < 0 || visits.offsets[slot] === visits.offsets[slot + 1]) {\n return node;\n }\n const own = visits.firstBy(slot, reference);\n const anchor = own >= 0 ? own : visits.firstByName(slot);\n return {\n ...node,\n stable: {\n refName: visits.paths[visits.path[anchor]],\n start: visits.start[anchor],\n rank: own >= 0 ? REFERENCE_RANK : OFF_REFERENCE_RANK,\n strand: visits.strand(anchor)\n },\n samples: samplesOf(slot)\n };\n}\nfunction sampleSorter(visits) {\n const sorted = [...new Set(visits.samples)].sort();\n const rank = new Map(sorted.map((sample, i) => [sample, i]));\n const pathRank = Int32Array.from(visits.samples, (s) => rank.get(s));\n const seen = new Uint8Array(sorted.length);\n const ranks = new Int32Array(sorted.length);\n return (slot) => {\n let n = 0;\n for (let i = visits.offsets[slot]; i < visits.offsets[slot + 1]; i++) {\n const r = pathRank[visits.path[i]];\n if (seen[r] === 0) {\n seen[r] = 1;\n ranks[n++] = r;\n }\n }\n let out;\n if (n === sorted.length) {\n out = sorted;\n seen.fill(0);\n } else if (n * 8 < sorted.length) {\n const found = ranks.subarray(0, n);\n found.forEach((r) => seen[r] = 0);\n out = Array.from(found.sort(), (r) => sorted[r]);\n } else {\n out = [];\n for (let r = 0; r < sorted.length; r++) {\n if (seen[r] === 1) {\n seen[r] = 0;\n out.push(sorted[r]);\n }\n }\n }\n return out;\n };\n}\nfunction anchorFromPaths(graph, preferred) {\n const { anchorPaths, pathVisits } = graph;\n const reference = anchorPaths && pathVisits ? chooseReferencePath(anchorPaths, preferred) : void 0;\n if (!reference || !anchorPaths || !pathVisits) {\n return graph;\n }\n const samplesOf = sampleSorter(pathVisits);\n const referenceIndex = pathVisits.pathIndex(reference.name);\n return {\n ...graph,\n nodes: graph.nodes.map(\n (node) => anchorNode(node, pathVisits, referenceIndex, samplesOf)\n ),\n anchoredBy: \"paths\",\n referencePath: reference.name\n };\n}\nfunction anchorGraph(graph, preferred) {\n if (graph.anchoredBy !== \"tags\") {\n return anchorFromPaths(graph, preferred);\n }\n const referencePath = taggedReferencePath(graph);\n return referencePath ? { ...graph, referencePath } : graph;\n}\nfunction taggedReferencePath(graph) {\n const refName = graph.nodes.find((n) => n.stable?.rank === 0)?.stable?.refName;\n return refName !== void 0 && graph.anchorPaths?.some((p) => p.name === refName) ? refName : void 0;\n}\nfunction trimOrigins(graph, kept) {\n if (!graph.anchorPaths) {\n return void 0;\n }\n const lengthOf = new Map(graph.nodes.map((n) => [n.id, n.length]));\n const bp = (ids, end = ids.length) => {\n let sum = 0;\n for (let i = 0; i < end; i++) {\n sum += lengthOf.get(ids[i]) ?? 0;\n }\n return sum;\n };\n const byOrigin = groupBy(graph.paths ?? [], (p) => pathOrigin(p.name).name);\n return graph.anchorPaths.map((o) => {\n const pieces = byOrigin.get(o.name);\n const path = pieces?.length === 1 ? pieces[0] : void 0;\n const stretch = path && kept.get(path.name);\n return path && stretch ? {\n ...o,\n start: o.start + bp(path.nodeIds, stretch.first),\n length: bp(stretch.nodeIds)\n } : o;\n });\n}\nfunction referenceVisits(graph) {\n const { pathVisits } = graph;\n const cache = /* @__PURE__ */ new Map();\n return (node) => {\n let visits = cache.get(node.id);\n if (!visits) {\n visits = [];\n const slot = pathVisits ? pathVisits.slot(node.name) : -1;\n const p = slot >= 0 ? pathVisits.pathIndex(node.stable.refName) : -1;\n if (p >= 0) {\n for (let i = pathVisits.offsets[slot]; i < pathVisits.offsets[slot + 1]; i++) {\n if (pathVisits.path[i] === p) {\n visits.push({\n start: pathVisits.start[i],\n strand: pathVisits.strand(i)\n });\n }\n }\n }\n if (visits.length < 2) {\n visits = [\n { start: node.stable.start, strand: node.stable.strand ?? \"+\" }\n ];\n }\n cache.set(node.id, visits);\n }\n return visits;\n };\n}\nfunction referenceVisitStarts(graph) {\n const visitsOf = referenceVisits(graph);\n return (node) => visitsOf(node).map((v) => v.start);\n}\n\nexport {\n pathOrigin,\n surveyPaths,\n chooseReferencePath,\n anchorFromPaths,\n anchorGraph,\n trimOrigins,\n referenceVisits,\n referenceVisitStarts\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": ["pushTo", "map", "key", "value", "list", "addTo", "set", "groupBy", "items", "keyOf", "groups", "item", "partitionPoint", "n", "pred", "lo", "hi", "mid", "REFERENCE_RANK", "isAnchored", "node", "isBackbone", "isOffReference", "backboneNodes", "graph", "overlapsWindow", "window", "backbonePositions", "backbone", "positions", "firstNodeAtOrAfter", "nodes", "bp", "partitionPoint", "i", "backboneSpan", "min", "max", "referenceSpan", "region", "PathVisits", "columns", "i", "entries", "builder", "PathVisitsBuilder", "segment", "visits", "v", "path", "slot", "p", "best", "a", "b", "cursor", "key", "end", "at", "keepPath", "keepSegment", "kept", "s", "out", "Column", "data", "value", "grown", "sample", "start", "reversed", "n", "segments", "offsets", "fill", "RANGE_SUFFIX", "VG_FRAGMENT", "VG_SUBRANGE", "pathOrigin", "pathName", "fragment", "match", "surveyPaths", "paths", "lengthOf", "anchorPaths", "visits", "PathVisitsBuilder", "path", "sample", "panSNSample", "p", "pos", "step", "chooseReferencePath", "preferred", "OFF_REFERENCE_RANK", "anchorNode", "node", "reference", "samplesOf", "slot", "own", "anchor", "REFERENCE_RANK", "sampleSorter", "sorted", "rank", "i", "pathRank", "s", "seen", "ranks", "n", "r", "out", "found", "anchorFromPaths", "graph", "pathVisits", "referenceIndex", "anchorGraph", "referencePath", "taggedReferencePath", "refName", "trimOrigins", "kept", "bp", "ids", "end", "sum", "byOrigin", "groupBy", "o", "pieces", "stretch", "referenceVisits", "cache", "referenceVisitStarts", "visitsOf", "v"]
@@ -0,0 +1,6 @@
1
+ import{b as Hn}from"./chunk-T7NMFIRW.js";import{d as Yn,g as Bt,h as Se}from"./chunk-OSEQDKL3.js";import{a as ve,b as Pn}from"./chunk-D6TY2QEG.js";import{f as Tn}from"./chunk-FLKXKTS2.js";import{c as Kn,e as On,j as qn}from"./chunk-M6YSANSW.js";var JA=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"],Zn=e=>JA!=null&&e in Object(JA)?JA[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/data_adapters/BaseAdapter' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var Ta=Zn("BaseFeatureDataAdapter");var zn=Zn("cachedSetup");var Ka=JA&&JA.__esModule?JA.default:JA;var hA=class extends Error{constructor(t,A,n,r,o){super(t),this.regionTooLarge=!0,this.name="NodeLimitError",this.limit=A,this.windowBp=n,this.fitsBp=r,this.zoomHelps=o===void 0||o.zoomHelps===!0,o&&(this.bytes=o.bytes)}},XA="#";function ce(e){return e.split(XA)[0]}function ht(e){let t=e.split(XA);return t.length>=3?t.slice(2).join(XA):t.length===2?t[1]:e}function SA(e){let t=e.split(XA);return t.length>=3?`${t[0]}${XA}${t[1]}`:void 0}function WA(e,t){return t!==void 0&&(e===t||e.startsWith(t+XA))}var jn=e=>Number.parseFloat(e.toPrecision(3));function GA(e){let t=jn(e/1e6);return t>=1?`${t.toLocaleString("en-US")}Mbp`:e>=1e3?`${jn(e/1e3).toLocaleString("en-US")}Kbp`:`${Math.floor(e)}bp`}var eA=e=>(e-(e&1))/2,kA=e=>e&1?e-1:e+1;function $A(e,t,A){if(e===".")return A;let n=0,r=!1;for(let o=0;o<=e.length;o++){let s=o<e.length?e.charCodeAt(o):44;if(s===44){let a=r?-n:n,c=a&1;t.id+=(a-c)/2,A.push(t.id*2+c),n=0,r=!1}else s===45?r=!0:n=n*10+(s-48)}return A}function VA(e){return e==="."?[]:e.split(",").map(Number)}var Re="from a gfa-to-tabix that wrote format 6 before pass counts and abridged rows per piece, so rebuild the walk file with gfa-to-tabix 3.0 or later";function $n(e,t){let A=e[11],n=A==="."?new Array(t).fill(1):VA(A??"");if(A===void 0||A.startsWith("SQ:Z:"))throw new rA(`a ref row with no passes, ${Re}`);if(n.length!==t||n.some(r=>!Number.isInteger(r)||r<1))throw new rA(`a ref row's passes do not count its ${t} steps`);return n}var ps=(e,t)=>2-(e&1)-(t&1);function Vn(e,t){let A=ps(e,t);return A>1||A===1&&e<=kA(t)?[e,t]:[kA(t),kA(e)]}function De(e){let t=e.indexOf("@");return t<0?[+e,-1]:[+e.slice(0,t),+e.slice(t+1)]}var Fe=class{constructor(){this.handles=[],this.before=[0],this.starts=[],this.occurrences=new Map}add(t,A,n){for(let r=0;r<t.length;r++){let o=t[r],s=this.handles.length;this.handles.push(o),this.before.push(this.before[s]+A[r]),this.starts.push(n),n+=A[r];let a=eA(o),c=this.occurrences.get(a);c?c.push(s):this.occurrences.set(a,[s])}}bp(t){return this.before[t]}first(t){var A;return(A=this.occurrences.get(eA(t)))===null||A===void 0?void 0:A[0]}copy(t,A){var n;return(n=this.occurrences.get(eA(t)))===null||n===void 0?void 0:n[A]}nearest(t,A){let n=this.occurrences.get(eA(t));if(!n)return;let r=0,o=n.length;for(;r<o;){let c=r+o>>1;n[c]<=A?r=c+1:o=c}let s=n[r-1],a=n[r];return s===void 0||a===void 0?s??a:a-A<=A-s?a:s}reach(t,A,n){var r;let o=this.handles[t]===A,s;for(let a of(r=this.occurrences.get(eA(n)))!==null&&r!==void 0?r:[])o&&a>=t&&this.handles[a]===n?(s===void 0||a<s)&&(s=a):!o&&a<=t&&kA(this.handles[a])===n&&(s===void 0||a>s)&&(s=a);return s}handleAt(t,A){return A?this.handles[t]:kA(this.handles[t])}},rA=class extends Error{},Xn=(e,t)=>t?e.exit===-1?-1:kA(e.exit):e.entry,ws=(e,t)=>t?e.entry===-1?-1:kA(e.entry):e.exit,Ar=(e,t,A)=>t?kA(e.interior[e.interior.length-1-A]):e.interior[A];function ms(e){let t=[];if(e!=="."){let A=0,n=[0,-1,-1],r=0,o=0,s=!1,a=!1;for(let c=0;c<=e.length;c++){let i=c<e.length?e.charCodeAt(c):44;if(i===44||i===58||i===64)if(a&&(n[r]=s?-o:o),o=0,s=!1,a=!1,i===44){let g=n[0],f=g&1;A+=(g-f)/2,t.push(A,f,n[1],n[2]),n[0]=0,n[1]=-1,n[2]=-1,r=0}else r=i===58?1:2;else i===45?s=!0:(o=o*10+(i-48),a=!0)}}return t}function er(e,t,A,n,r,o,s){let a=I=>{let E=t[I];if(!E)throw new rA(`route ${I} is not in the chunk`);return E},c=0,i=0;if(r.length>0&&Xn(a(r[0]),r[1]===1)===-1){if(!s.route(r[0],r[1]===1))return;c+=a(r[0]).interior.length,i=4}let g=A,f=n===-1?e.first(g):e.copy(g,n);if(f===void 0)throw new rA("a walk row starts off its chunk");s.step(g,f),c++;let d=(I,E)=>{let Q=e.handles[f]===g,u=E===-1?e.reach(f,g,I):e.copy(I,E);if(u===void 0||(Q?u<f:u>f)||e.handleAt(u,Q)!==I)throw new rA("a walk row runs off its chunk");u!==f&&(s.stretch(f,u,Q),c+=Math.abs(u-f)),f=u,g=I};for(;i<r.length;i+=4){let I=r[i],E=r[i+1]===1,Q=a(I),u=Xn(Q,E);if(u===-1)throw new rA("an open route after the first choice");if(d(u,r[i+2]),!s.route(I,E))return;c+=Q.interior.length;let p=ws(Q,E);if(p===-1)return;g=p;let N=r[i+3];if(f=N===-1?e.nearest(g,f):e.copy(g,N),f===void 0)throw new rA("a route lands off its chunk");s.step(g,f),c++}let l=o-c;if(l<0)throw new rA(`a walk row decodes to more than its ${o} steps`);if(l>0){let I=e.handles[f]===g,E=f+(I?l:-l);if(E<0||E>=e.handles.length)throw new rA("a walk row runs off its chunk");s.stretch(f,E,I)}}function ks(e,t,A,n){let r=+A[8],o=new Int32Array(r),s=new Uint8Array(r),a=new Float64Array(r).fill(Number.NaN),c=new Uint8Array(r),i=0,g=(l,I)=>{if(i>=r)throw new rA("a walk row decodes to more steps than it states");I!==void 0&&(a[i]=e.starts[I],c[i]=e.handles[I]===l?0:1),o[i]=eA(l),s[i++]=l&1},[f,d]=De(A[9]);if(er(e,t,f,d,n,r,{step:g,stretch(l,I,E){if(E)for(let Q=l+1;Q<=I;Q++)g(e.handles[Q],Q);else for(let Q=l-1;Q>=I;Q--)g(kA(e.handles[Q]),Q)},route(l,I){let E=t[l];for(let Q=0;Q<E.interior.length;Q++)g(Ar(E,I,Q));return!0}}),i!==r)throw new rA(`a walk row decodes to ${i} steps, not ${r}`);return{ids:o,rev:s,refStarts:a,against:c}}function Wn(e,t,A,n,r){let o=e.slice(t).find(a=>a.startsWith("SQ:Z:"));if(o===void 0)return;let s=5;for(let a=0;a<A.length;a++){let c=n[a];r.set(A[a],o.slice(s,s+c)),s+=c}}function ys(e,t,A){let n=d=>{var l;let I=Number(e[d]);if(!((l=e[7])===null||l===void 0)&&l.includes(","))throw new rA(`an abridged row of several pieces, ${Re}: ${e.join(" ")}`);if(e[d]===""||!Number.isInteger(I)||I<0)throw new rA(`not an abridged row of one piece: ${e.join(" ")}`);return I},[r,o]=De(e[10]),[s,a]=De(e[11]),c=o===-1?t.first(r):t.copy(r,o),i=c===void 0?void 0:a===-1?t.nearest(s,c):t.copy(s,a),g=d=>d===void 0?Number.NaN:t.starts[d],f=(d,l)=>d!==void 0&&t.handles[d]!==l?1:0;return{chunkStart:A,name:e[4],fragStart:+e[5],hapOffset:n(6),piece:n(7),n:2,steps:{ids:Int32Array.from([r,s],eA),rev:Uint8Array.from([r,s],d=>d&1),refStarts:Float64Array.from([g(c),g(i)]),against:Uint8Array.from([f(c,r),f(i,s)])},abridged:{steps:n(8),bp:n(9),detail:{refName:e[0],start:A,name:`${A}:${e[12]}`}}}}var tr=e=>e.filter(t=>t[3]==="ref").sort((t,A)=>+t[6]-+A[6]);function nr(e){let t=new Fe,A=new Map;for(let n of tr(e)){let r=$A(n[9],{id:0},[]),o=VA(n[10]);t.add(r,o,+n[6]);for(let s=0;s<r.length;s++)A.set(eA(r[s]),o[s])}return{path:t,lengths:A}}function Et(e,t,A,n=!1,r){var o,s,a,c;let i=(o=r?.path)!==null&&o!==void 0?o:new Fe,g=new Map,f=[],d={sequences:new Map,rows:[],nodes:new Map,revisits:[],ends:[],chunk:{path:i,routes:f,walks:[],lengths:g,refLengths:r?.lengths}},l=Q=>d.nodes.has(Q)||r?.lengths.has(Q)===!0,I={id:0};for(let Q of r?[]:tr(e)){let u=$A(Q[9],{id:0},[]),p=VA(Q[10]),N=$n(Q,u.length),C=+Q[6],S=i.starts.length;i.add(u,p,C),n&&Wn(Q,11,u.map(eA),p,d.sequences);let x=C;for(let m=0;m<u.length;m++){let h=eA(u[m]),w=p[m];g.set(h,w);let y={refName:Q[4],start:x,end:x+w,rank:0,passes:N[m]};d.nodes.has(h)?d.revisits.push({id:h,...y}):d.nodes.set(h,y),x+=w}d.ends.push({name:Q[4],fragStart:+Q[5],piece:+Q[7],first:u[0],last:u.at(-1)}),(A===void 0||A(Q[4]))&&d.rows.push({chunkStart:t,name:Q[4],fragStart:+Q[5],hapOffset:C,piece:+Q[7],n:u.length,steps:{ids:Int32Array.from(u,eA),rev:Uint8Array.from(u,m=>m&1),refStarts:Float64Array.from(i.starts.slice(S)),against:new Uint8Array(u.length)}})}for(let Q of e)if(Q[3]==="nodes"){let u=VA(Q[4]),p=VA(Q[5]),N=0;for(let C=0;C<u.length;C++)N+=u[C],u[C]=N,g.set(N,p[C]);n&&Wn(Q,6,u,p,d.sequences)}else if(Q[3]==="route"){let u=$A(Q[4],I,[]),p=$A(Q[5],I,[]),N=$A(Q[6],I,[]);f.push({entry:(s=u[0])!==null&&s!==void 0?s:-1,interior:p,exit:(a=N[0])!==null&&a!==void 0?a:-1})}let E=Q=>{let u=f[Q];if(!u)throw new rA(`route ${Q} is not in the chunk`);return u};for(let Q of e){if(Q[3]==="abridged"){let N=Q[4];(A===void 0||A(N))&&d.rows.push(ys(Q,i,t));continue}if(Q[3]!=="walk")continue;let u=ms(Q[10]);d.chunk.walks.push({cols:Q,choices:u});let p=Q[4];if(A===void 0||A(p)){let N=0;for(let x=0;x<u.length;x+=4){N+=E(u[x]).interior.length;for(let m of E(u[x]).interior){let h=eA(m);if(!l(h)){let w=(c=g.get(h))!==null&&c!==void 0?c:0;d.nodes.set(h,{refName:p,start:0,end:w,rank:1,passes:0})}}}let C=ks(i,f,Q,u),S=C.ids.length;d.ends.push({name:p,fragStart:+Q[5],piece:+Q[7],first:C.ids[0]*2+C.rev[0],last:C.ids[S-1]*2+C.rev[S-1]}),d.rows.push({chunkStart:t,name:p,fragStart:+Q[5],hapOffset:+Q[6],piece:+Q[7],n:S,interior:N,steps:C})}}return d}function rr(e,t,A,n){let r=new Set;for(let a of t)e.some(({path:c})=>c.occurrences.has(a))||r.add(a);let o=(a,c)=>{let[i,g]=Vn(a,c);n(i,g)},s=new Map;for(let{path:a,routes:c,walks:i,lengths:g,refLengths:f}of e){let d=a.handles;for(let p=1;p<d.length;p++)t.has(eA(d[p-1]))&&t.has(eA(d[p]))&&o(d[p-1],d[p]);let l=new Uint8Array(c.length);for(let p=0;p<c.length;p++){let{entry:N,interior:C,exit:S}=c[p],x=!1,m=N;for(let h of C){let w=t.has(eA(h));x||(x=r.has(eA(h))),w&&m!==-1&&t.has(eA(m))&&o(m,h),m=h}m!==-1&&S!==-1&&t.has(eA(m))&&t.has(eA(S))&&o(m,S),l[p]=x?1:0}let I=p=>{var N,C;return(C=(N=g.get(eA(p)))!==null&&N!==void 0?N:f?.get(eA(p)))!==null&&C!==void 0?C:0},E=new Float64Array(c.length).fill(-1),Q=p=>(E[p]<0&&(E[p]=c[p].interior.reduce((N,C)=>N+I(C),0)),E[p]),u=new Uint8Array(c.length);for(let{cols:p,choices:N}of i){let C=0;for(let w=0;w<N.length;w+=4){let y=N[w];l[y]&&!u[y]&&C++}if(C===0)continue;let S=p[4],x=+p[6],[m,h]=De(p[9]);er(a,c,m,h,N,+p[8],{step(w){x+=I(w)},stretch(w,y,_){x+=_?a.bp(y+1)-a.bp(w+1):a.bp(w)-a.bp(y)},route(w,y){if(!l[w]||u[w])return x+=Q(w),!0;u[w]=1;let _=c[w];for(let Y=0;Y<_.interior.length;Y++){let P=Ar(_,y,Y),T=eA(P),B=I(P);if(r.has(T)){let k=s.get(T);(!k||S<k.refName||S===k.refName&&x<k.start)&&s.set(T,{refName:S,start:x,end:x+B,rank:1,passes:0})}x+=B}return C--,C>0}})}}for(let[a,c]of s)A(a,c)}function ut(e){let t=[];for(let A of e){if(A[3]!=="ref")continue;let n=$A(A[9],{id:0},[]),r=VA(A[10]),o=$n(A,n.length),s=+A[6];for(let a=0;a<n.length;a++){let c=r[a];t.push({id:eA(n[a]),refName:A[4],start:s,end:s+c,rank:0,passes:o[a]}),s+=c}}return t}function or(e){let t=new Map;for(let n of e){let r=`${n.name} ${n.fragStart}`,o=t.get(r);o||(o=new Map,t.set(r,o)),o.set(n.piece,n)}let A=[];for(let n of t.values())for(let[r,o]of n){let s=n.get(r+1);s&&A.push(Vn(o.last,s.first))}return A}var Ae=65536;function pt(e,t){let A=e.filter(n=>n.refName===t).sort((n,r)=>n.start-r.start);return A.length===0?n=>n:n=>{let r=n;for(let{start:o,end:s}of A){if(s>n)break;r-=s-o}return r}}function wt(e,t){return e.ownBp===0&&e.leaveReversed===e.rejoinReversed&&t(e.leavePos)===t(e.rejoinPos)}function mt(e){let t=e.leaveReversed?e.leavePos:e.leavePos-1,A=e.rejoinReversed?e.rejoinPos-1:e.rejoinPos,n=Math.max(0,Math.min(t,A));return[n,Math.max(n,t,A)+1]}var sr=(e,t,A=0)=>{let n=Number(e);if(e===void 0||e===""||!Number.isInteger(n)||n<A)throw new rA(`not a walk format 6 row: ${t.join(" ")}`);return n},ir=(e,t)=>{if(e!=="+"&&e!=="-")throw new rA(`not a walk format 6 row: ${t.join(" ")}`);return e==="-"};function kt(e,t=3){let A=r=>sr(e[t+r],e),n=r=>sr(e[t+r],e,1);if(e.length-t===9)throw new rA(`a departure record with no pass counts, ${Re}: ${e.join(" ")}`);return{name:e[t+1],hapStart:A(2),ownBp:A(3),missingBp:A(4),leavePos:A(5),leaveReversed:ir(e[t+6],e),leavePasses:n(7),rejoinPos:A(8),rejoinReversed:ir(e[t+9],e),rejoinPasses:n(10),fromSteps:!1}}function ar(e,t=3){let A=e[t+11];return(A==="."||A===void 0?[]:A.split(",")).map(r=>{let o=Number(r);if(r===""||!Number.isSafeInteger(o)||o<0)throw new rA(`a departure record's ownTiles is not a list of tile starts: ${e.join(" ")}`);return o})}function yt(e,t){let A=new RegExp(`(?:^|\\t)${t}:i:(\\d+)`).exec(e);return A?+A[1]:void 0}function bt(e){var t,A,n;let r={references:[],haplotypes:[],holes:[]};for(let o of e){let[s,a="",c="",i=""]=o.split(" ");s==="#reference"?r.references.push(a):s==="#haplotype"?r.haplotypes.push(a):s==="#hole"?r.holes.push({refName:a,start:+c,end:+i}):((t=r.format)!==null&&t!==void 0||(r.format=yt(o,"format")),(A=r.tile)!==null&&A!==void 0||(r.tile=yt(o,"tile")),(n=r.revisited)!==null&&n!==void 0||(r.revisited=yt(o,"revisited")))}return r}function fr(e,t){return e===void 0||e.length===0?void 0:A=>WA(A,t)||e.some(n=>WA(A,n))}function Nt(e,t){var A;return fr(e,(A=SA(t))!==null&&A!==void 0?A:t)}function Me(e){let t=new Map,A=[];for(let n of e){if(n.abridged){A.push(gr([n]));continue}let r=`${n.name} ${n.fragStart}`,o=t.get(r);o?o.push(n):t.set(r,[n])}for(let n of t.values()){n.sort((o,s)=>o.piece-s.piece);let r=0;for(let o=1;o<=n.length;o++)(o===n.length||n[o].piece!==n[o-1].piece+1)&&(A.push(gr(n.slice(r,o))),r=o)}return A}function gr(e){let t=e.reduce((g,f)=>g+f.n,0),A=new Int32Array(t),n=new Uint8Array(t),r=new Float64Array(t).fill(Number.NaN),o=new Uint8Array(t),s=[],a=[],c=0;for(let g of e)c>0&&s.push(c),a.push(g.chunkStart),A.set(g.steps.ids,c),n.set(g.steps.rev,c),g.steps.refStarts&&r.set(g.steps.refStarts,c),g.steps.against&&o.set(g.steps.against,c),c+=g.n;let i=e[0];return{name:i.name,fragStart:i.fragStart,hapOffset:i.hapOffset,firstPiece:i.piece,pieceStarts:s,pieceChunks:a,ids:A,rev:n,refStarts:r,against:o,...i.abridged?{abridged:i.abridged}:{}}}function xt(e,t,A,n,{contained:r=!1,context:o=0,attachBp:s=Ae,squeeze:a=g=>g,drawn:c,attach:i=[]}={}){let g=1/0,f=-1/0;for(let B of t.values())B.onWindow&&(g=Math.min(g,B.start),f=Math.max(f,B.end));let d=B=>{let k=t.get(B);return k===void 0?0:k.end-k.start};if(c)for(let B of e)for(let k=0;k<B.ids.length;k++){let v=B.refStarts[k],L=v+d(B.ids[k]);v<c.end&&L>c.start&&(g=Math.min(g,v),f=Math.max(f,L))}let l=B=>{var k,v;return(v=(k=t.get(B))===null||k===void 0?void 0:k.passes)!==null&&v!==void 0?v:0},I=(B,k)=>!Number.isNaN(B.refStarts[k]),E=new Map,Q=B=>{let k=E.get(B);if(!k){k=new Float64Array(B.ids.length+1);for(let v=0;v<B.ids.length;v++)k[v+1]=k[v]+d(B.ids[v]);E.set(B,k)}return k},u=(B,k)=>{let v=B.refStarts[k],L=Q(B);return!Number.isNaN(v)&&v<f&&v+L[k+1]-L[k]>g},p=[],N=B=>{let{ids:k}=B,v=0,L=-1,K=-1;for(let U=0;U<=k.length;U++){let X=U<k.length&&u(B,U);if(U===k.length||I(B,U)&&!X){if(L>=0){for(let O=0;L>v&&O<o;)O+=d(k[--L]);for(let O=0;K<U-1&&O<o;)O+=d(k[++K]);p.push({run:B,first:L,last:K})}v=U+1,L=-1}else X&&(L<0&&(L=U),K=U)}},C=B=>{let k=-1,v=-1;for(let L=0;L<B.ids.length;L++)u(B,L)&&(k<0&&(k=L),v=L);k>=0&&p.push({run:B,first:k,last:v})},S=B=>{let k=B.refStarts[0],v=B.refStarts[1];if(Number.isNaN(k)||Number.isNaN(v))return;let L=[k+d(B.ids[0]),v+d(B.ids[1])];Math.max(L[0],L[1])>g&&Math.min(k,v)<f&&p.push({run:B,first:0,last:1})};for(let B of e)B.abridged?S(B):r?N(B):C(B);let x=new Set;for(let[B,k]of t)k.onWindow&&x.add(B);for(let B of p)for(let k=B.first;k<=B.last;k++)x.add(B.run.ids[k]);let m=B=>{var k,v;return B.hapOffset+((v=(k=B.abridged)===null||k===void 0?void 0:k.bp)!==null&&v!==void 0?v:Q(B)[B.ids.length])},h=[];for(let{run:B,first:k,last:v}of p){let{ids:L,rev:K}=B;if(B.abridged){h.push({name:B.name,fragStart:B.fragStart,hapStart:B.hapOffset,hapEnd:m(B),ids:L,rev:K,refStarts:B.refStarts,against:B.against,trimmedBefore:0,trimmedAfter:0,abridged:B.abridged});continue}let U=Q(B),X=B.hapOffset+U[k],O=B.hapOffset+U[v+1];h.push({name:B.name,fragStart:B.fragStart,hapStart:X,hapEnd:O,ids:L.subarray(k,v+1),rev:K.subarray(k,v+1),refStarts:B.refStarts.subarray(k,v+1),against:B.against.subarray(k,v+1),trimmedBefore:X-B.hapOffset,trimmedAfter:m(B)-O})}let w=(B,k,v)=>{let L=B.against[k]===1,K=B.refStarts[k];return{pos:L===v?K:K+d(B.ids[k]),reversed:L}},y=[];for(let B of e){if(B.abridged||B.name===A)continue;let{ids:k,rev:v,refStarts:L,against:K}=B,U=Q(B),X=cr(B);for(let O=0;O+1<X.length;O++){let H=-1;for(let V=X[O];V<X[O+1];V++){let AA=L[V];if(!Number.isNaN(AA)){if(H>=0){let gA=U[V]-U[H+1],nA=K[H]===1,cA=K[V]===1,W=nA?L[H]:L[H]+U[H+1]-U[H],wA=cA?AA+U[V+1]-U[V]:AA,mA={ownBp:gA,leavePos:W,leaveReversed:nA,rejoinPos:wA,rejoinReversed:cA};if(!wt(mA,a)){let[D,R]=mt(mA);if(D<f&&R>g){let b={name:B.name,hapStart:B.hapOffset+U[H+1],ownBp:gA,missingBp:0,leavePos:W,leaveReversed:nA,leavePasses:l(k[H]),rejoinPos:wA,rejoinReversed:cA,rejoinPasses:l(k[V]),fromSteps:!0};if(V>H+1&&gA<=s){b.steps={ids:k.subarray(H+1,V),rev:v.subarray(H+1,V)};for(let M=H+1;M<V;M++)x.add(k[M])}y.push(b)}}}H=V}}}}let _=(B,k,v,L)=>`${B} ${k} ${v?"-":"+"} ${L}`,Y=new Map,P=new Map;for(let B of[...e,...i]){if(B.abridged)continue;let k=Q(B),v=cr(B);for(let L=0;L+1<v.length;L++){let K=-1,U=-1;for(let H=v[L];H<v[L+1];H++)I(B,H)&&(K<0&&(K=H),U=H);if(K<0)continue;let X=w(B,U,!0);Y.set(_(B.name,X.pos,X.reversed,B.hapOffset+k[U+1]),[B,U,v[L+1]]);let O=w(B,K,!1);P.set(_(B.name,O.pos,O.reversed,B.hapOffset+k[K]),[B,K,v[L]])}}let T=[];for(let B of n){if(B.ownBp<=s){let k=[],v=[],L=Y.get(_(B.name,B.leavePos,B.leaveReversed,B.hapStart));if(L){let[U,X,O]=L;for(let H=X+1;H<O;H++)k.push(U.ids[H]),v.push(U.rev[H])}let K=P.get(_(B.name,B.rejoinPos,B.rejoinReversed,B.hapStart+B.ownBp));if(K){let[U,X,O]=K;for(let H=O;H<X;H++)k.push(U.ids[H]),v.push(U.rev[H])}if(k.length>0){B.steps={ids:Int32Array.from(k),rev:Uint8Array.from(v)};for(let U of k)x.add(U)}(!L||!K)&&T.push({departure:B})}y.push(B)}return y.sort((B,k)=>(B.name<k.name?-1:B.name>k.name?1:0)||B.hapStart-k.hapStart||B.leavePos-k.leavePos),{kept:x,fragments:h,departures:y,unattached:T}}function cr(e){let t=[0];for(let A of e.pieceStarts)t.push(A);return t.push(e.ids.length),t}function St(e,t,{contained:A,start:n,end:r},o){var s;for(let a of e.nodes.keys())!((s=t.get(a))===null||s===void 0)&&s.onWindow&&o.add(a);for(let{steps:a}of e.rows){let{ids:c,refStarts:i}=a,g=-1;for(let f=0;f<c.length;f++){let d=t.get(c[f]),l=i?.[f],I=l!==void 0&&!Number.isNaN(l);if(d?.onWindow&&I&&l<r&&l+d.end-d.start>n){for(let E=g+1;g>=0&&E<f;E++)o.add(c[E]);g=f}else A&&I&&(g=-1)}}}var bs=(e,t)=>e.onWindow!==t.onWindow?e.onWindow:e.rank===0&&(t.rank!==0||e.refName<t.refName||e.refName===t.refName&&e.start<t.start),fe=class{constructor(t){this.nodes=new Map,this.sequences=new Map,this.links=[],this.chunks=[],this.window=t}placeNode(t,A){let{window:n}=this,r={...A,onWindow:A.rank===0&&A.refName===n.refName&&A.end>n.start-n.context&&A.start<n.end+n.context},o=this.nodes.get(t);(!o||bs(r,o))&&this.nodes.set(t,r)}addLinkEnds(t,A){this.links.push(t,A)}addChunk(t){this.chunks.push(t)}addSequences(t){if(this.window.sequences)for(let[A,n]of t)this.sequences.set(A,n)}tables(t,A,n){this.chunks.length>0&&rr(this.chunks,t,(h,w)=>{let y=this.nodes.get(h);y&&this.nodes.set(h,{...y,...w})},(h,w)=>{this.links.push(h,w)});let r=[];for(let h of t){let w=this.nodes.get(h);w&&r.push({...w,id:h})}r.sort((h,w)=>h.refName<w.refName?-1:h.refName>w.refName?1:h.start-w.start||h.id-w.id);let o=new Map,s=[],a=[],c=new Map,i=new Int32Array(r.length),g=new Int32Array(r.length),f=new Float64Array(r.length),d=new Int32Array(r.length),l=new Int32Array(r.length);r.forEach(({id:h,refName:w,start:y,end:_,rank:Y,passes:P},T)=>{o.set(h,T),s.push(String(h));let B=c.get(w);B===void 0&&(B=a.length,c.set(w,B),a.push(w)),i[T]=_-y,g[T]=B,f[T]=y,d[T]=Y,l[T]=P});let I=h=>{let w=o.get(h);return w===void 0&&(w=s.length,o.set(h,w),s.push(String(h))),w},E=new Map;for(let h=0;h<this.links.length;h+=2){let w=this.links[h],y=this.links[h+1],_=Math.floor(w/2),Y=Math.floor(y/2);t.has(_)&&t.has(Y)&&E.set(`${_} ${w%2?"-":"+"} ${Y} ${y%2?"-":"+"}`,h)}let Q=[...E.keys()].sort(),u=new Int32Array(Q.length),p=new Int32Array(Q.length),N=new Uint8Array(Q.length);Q.forEach((h,w)=>{let y=E.get(h),_=this.links[y],Y=this.links[y+1];u[w]=I(Math.floor(_/2)),p[w]=I(Math.floor(Y/2)),N[w]=_%2|Y%2<<1});let C=this.referenceFirst(A),S=new Int32Array(C.length+1);C.forEach(({ids:h},w)=>{S[w+1]=S[w]+h.length});let x=new Int32Array(S[C.length]),m=new Uint8Array(x.length);return C.forEach(({ids:h,rev:w},y)=>{let _=S[y];for(let Y=0;Y<h.length;Y++)x[_+Y]=I(h[Y]);m.set(w,_)}),{nodes:{names:s,lengths:i,refs:g,starts:f,ranks:d,refNames:a,passes:l},links:{from:u,to:p,strands:N},walks:{names:C.map(h=>h.name),starts:Float64Array.from(C,h=>h.hapStart),ends:Float64Array.from(C,h=>h.hapEnd),offsets:S,steps:x,reversed:m,trimmedBefore:Float64Array.from(C,h=>h.trimmedBefore),trimmedAfter:Float64Array.from(C,h=>h.trimmedAfter),abridgedSteps:Float64Array.from(C,h=>{var w,y;return(y=(w=h.abridged)===null||w===void 0?void 0:w.steps)!==null&&y!==void 0?y:NaN}),abridgedBp:Float64Array.from(C,h=>{var w,y;return(y=(w=h.abridged)===null||w===void 0?void 0:w.bp)!==null&&y!==void 0?y:NaN})},departures:Ns(n,I)}}referenceFirst(t){let{refName:A}=this.window;return[...t].sort((n,r)=>+(r.name===A)-+(n.name===A)||(n.name<r.name?-1:n.name>r.name?1:n.hapStart-r.hapStart))}};function Ns(e,t){let A=e.length,n=new Int32Array(A+1);e.forEach((s,a)=>{var c,i;n[a+1]=n[a]+((i=(c=s.steps)===null||c===void 0?void 0:c.ids.length)!==null&&i!==void 0?i:0)});let r=new Int32Array(n[A]),o=new Uint8Array(r.length);return e.forEach((s,a)=>{if(s.steps){let c=n[a];for(let i=0;i<s.steps.ids.length;i++)r[c+i]=t(s.steps.ids[i]);o.set(s.steps.rev,c)}}),{names:e.map(s=>s.name),hapStarts:Float64Array.from(e,s=>s.hapStart),ownBp:Float64Array.from(e,s=>s.ownBp),missingBp:Float64Array.from(e,s=>s.missingBp),leavePos:Float64Array.from(e,s=>s.leavePos),leaveReversed:Uint8Array.from(e,s=>s.leaveReversed?1:0),leavePasses:Int32Array.from(e,s=>s.leavePasses),rejoinPos:Float64Array.from(e,s=>s.rejoinPos),rejoinReversed:Uint8Array.from(e,s=>s.rejoinReversed?1:0),rejoinPasses:Int32Array.from(e,s=>s.rejoinPasses),fromSteps:Uint8Array.from(e,s=>s.fromSteps?1:0),offsets:n,steps:r,reversed:o}}var vt={steps:"the step budget",bytes:"a byte budget of"},xs=4,Ss=e=>{var t;let A=(t=e.interior)!==null&&t!==void 0?t:0;return A+(e.n-A)/xs};function Dt(e,t,A,n,r,o,s=vt){var a;let c=0,i=new Map,g=new Set;for(let Q of e){let u=Ss(Q);c+=u,i.set(Q.chunkStart,((a=i.get(Q.chunkStart))!==null&&a!==void 0?a:0)+u),g.add(Q.name)}let f=t*A;if(c<=f)return;let d=n.end-n.start,l=0,I=0;for(let Q of[...i.keys()].sort((u,p)=>u-p)){if(l+=i.get(Q),l>f)break;I=Math.max(I,Q+r-n.start)}let E=!o&&g.size>2&&2*c/g.size<=f;return new hA(I>0?`Zoom in to about ${GA(I)}${E?", or choose fewer haplotypes,":""} to see the graph`:`Too many haplotype steps here to draw ${o?"these haplotypes":"every haplotype"} (${Math.round(l).toLocaleString()} steps read, a step along the reference counting a quarter, over ${A} \xD7 ${s.steps} of ${t.toLocaleString()}); choose fewer haplotypes`,f,d,Math.max(I,1))}function Ft(e,t,A,n,r){let o=e.reduce((s,a)=>s+a.ids.length,0)+t.reduce((s,a)=>{var c,i;return s+((i=(c=a.steps)===null||c===void 0?void 0:c.ids.length)!==null&&i!==void 0?i:0)},0);return lr(o,A,n,r)}function _e(e,t,A,n,r=A.end){return lr(e,t,A,n,r)}function lr(e,t,A,n,r=A.end){if(e<=t)return;let o=A.end-A.start,s=Math.min(r,A.end)-A.start,a=Math.max(1,Math.floor(s*t/e));return new hA(`Zoom in to about ${GA(a)}${n?"":", or choose fewer haplotypes,"} to see the graph`,t,o,a)}function Rt(e,t,A,n,r=vt){let o=e(A.end);if(o<=t)return;let s=0,a;for(let i=Math.floor(A.start/n)*n;i<A.end;i+=n){let g=e(i+1);if(a??(a=g),g>t)break;s=i+n-A.start}let c=A.end-A.start;return s>0?new hA(`Zoom in to about ${GA(s)} to see the graph`,t,c,s,{bytes:o,zoomHelps:!0}):new hA(`Too much graph here to fetch, even zoomed in (${le(a??o)} against ${r.bytes} ${le(t)}). A satellite or rDNA array usually causes this: the graph folds the repeat into a few nodes that each haplotype loops through many times`,t,c,1,{bytes:o})}var le=e=>`${(e/1e6).toFixed(1)} MB`;var vA=50,hr=[50,1e3,1e4],_t=.05,Er=1e3,ur=.1,Ce="0",dA=".",UA="~",YA="*";function pr(e){let t=e/100,[A,n,r]=hr;return t<250?A:t<3e3?n:r}var wr=e=>Math.max(1,Math.round(e/100));function Yt(e,t){return t>e&&e<vA?"insertion":t<e&&t<vA?"deletion":"replacement"}function Ht(e,t){return t<_t*e?"deletion":e<_t*t?"insertion":void 0}var mr=(e,t,A)=>{let n=e==="replacement"?Ht(t,A):void 0;return n?{lopsided:n}:{}},Tt=e=>10**(Math.floor(Math.log10(e))-1),ee=e=>{let t=Tt(e);return Math.round(Math.round(e/t)*t)},kr=(e,t=0)=>Math.abs(e.delta)>=Math.max(t,Tt(e.shiftedBp));function de(e,t=vA){let A=e.delta>0?"+":"-";switch(e.kind){case"inversion":return`v${ee(Math.max(Math.abs(e.delta),e.refEnd-e.refStart,1))}`;case"shift":return kr(e,t)?`s${ee(e.shiftedBp)}${A}${ee(Math.abs(e.delta))}`:`s${ee(e.shiftedBp)}`;case"net":return`n${A}${ee(Math.abs(e.delta))}`;default:return`${A}${ee(Math.abs(e.delta))}`}}var dr=e=>e.altLength-(e.refEnd-e.refStart);function vs(e,t){let A=[];for(let n of e){let r=A.at(-1);r&&!r.abridged&&!n.abridged&&n.refStart-r.refEnd<t?(r.refEnd=Math.max(r.refEnd,n.refEnd),r.delta+=dr(n),r.invertedBp+=n.invertedBp,r.repeatedBp+=n.repeatedBp,n.copied&&(r.copied=r.copied?[Math.min(r.copied[0],n.copied[0]),Math.max(r.copied[1],n.copied[1])]:n.copied)):A.push({refStart:n.refStart,refEnd:n.refEnd,delta:dr(n),invertedBp:n.invertedBp,repeatedBp:n.repeatedBp,...n.copied?{copied:n.copied}:{},...n.abridged?{abridged:!0}:{}})}return A}function Ds(e,t){let A=e.refEnd-e.refStart,n=Math.max(0,A+e.delta),r=Math.abs(e.delta),o=e.abridged?r>=t?"net":void 0:r<t?e.invertedBp>=t?"inversion":void 0:e.repeatedBp>=vA&&e.delta>0?"duplication":Yt(A,n);return o&&{kind:o,refStart:e.refStart,refEnd:e.refEnd,altLength:n,delta:e.delta,...o==="duplication"?{repeatedBp:e.repeatedBp}:{},...o==="duplication"&&e.copied?{copied:e.copied}:{},...mr(o,A,n)}}function yr(e){let t=new Set,A=[],n=e.filter(r=>r.kind==="deletion"&&-r.delta>=Er).sort((r,o)=>r.delta-o.delta);for(let r of n){let o=-r.delta,s=e.find(a=>!t.has(a)&&(a.kind==="insertion"||a.kind==="duplication")&&Math.abs(a.delta-o)<=ur*Math.max(a.delta,o)&&Math.max(a.refStart-r.refEnd,r.refStart-a.refEnd)<=2*o);if(s){t.add(s),t.add(r);let a=Math.min(r.refStart,s.refStart),c=Math.max(r.refEnd,s.refEnd),i=r.delta+s.delta;A.push({kind:"shift",refStart:a,refEnd:c,altLength:c-a+i,delta:i,shiftedBp:o})}}return[...e.filter(r=>!t.has(r)),...A].sort((r,o)=>r.refStart-o.refStart)}var br=new Set(["insertion","deletion","replacement"]),Nr=1e3;function Fs(e,t,A,n){let r=vs(e,A).filter(i=>!n||i.refEnd>=n.start&&i.refStart<=n.end),o=new Map;for(let i of r){let g=Ds(i,t);g&&o.set(g,i)}let s=yr([...o.keys()]),a=new Set(s),c=new Set([...o].flatMap(([i,g])=>a.has(i)&&br.has(i.kind)?[]:[g]));return{marks:s,plain:r.filter(i=>!i.abridged&&!c.has(i))}}function Rs(e,t){let A=e.reduce((g,f)=>g+f.delta,0);if(Math.abs(A)<t)return;let n=e.filter(g=>Math.abs(g.delta)>=t),r=n.length>0?n:e.filter(g=>g.delta!==0),o=1/0,s=-1/0;for(let g of r)o=Math.min(o,g.refStart),s=Math.max(s,g.refEnd);let a=s-o,c=Math.max(0,a+A),i=Yt(a,c);return{kind:i,refStart:o,refEnd:s,altLength:c,delta:A,...mr(i,a,c)}}var Ie=e=>e.reduce((t,A)=>t+A.delta,0),Lt=(e,t,A,n=0)=>Math.max(Math.abs(e),Math.abs(t))<A||Math.abs(e-t)<Math.max(A,.1*Math.max(Math.abs(e),Math.abs(t)),n>0?Tt(n):0),Jt=e=>{var t;return e.kind==="inversion"?e.refEnd-e.refStart:(t=e.shiftedBp)!==null&&t!==void 0?t:Math.abs(e.delta)},Le=e=>e.reduce((t,A)=>Math.max(t,Jt(A)),0),Ir=(e,t,A)=>Lt(Ie(e),Ie(t),A,Math.max(Le(e),Le(t)))&&Lt(Le(e),Le(t),A),Ms=(e,t,A)=>e.covered.some(([n,r])=>n<=t&&r>=A),_s=(e,t,A)=>e.covered.some(([n,r])=>n<=A&&r>=t),Gt=(e,t)=>{let A=Math.min(e.end,t.end)-Math.max(e.start,t.start);return 2*A>=e.end-e.start&&2*A>=t.end-t.start},Ut=e=>({start:e.refStart,end:Math.max(e.refEnd,e.refStart+1)});function Ls(e,t,A){let n=t.map(()=>-1),r=(o,s)=>t.some((a,c)=>{let i=!1;return!s.has(c)&&A(e[o],a)&&(s.add(c),i=n[c]<0||r(n[c],s),i&&(n[c]=o)),i});return e.length===t.length&&e.every((o,s)=>r(s,new Set))}var Cr=(e,t)=>{let A=0,n=e.length;for(;A<n;){let r=A+n>>1;e[r].start<t?A=r+1:n=r}return A},Mt=(e,t)=>e.start-t.start||e.end-t.end;function Js(e,t){let A=new Map;e.forEach((i,g)=>{var f;for(let d of i){let l=Ut(d),I=`${l.start} ${l.end}`,E=(f=A.get(I))!==null&&f!==void 0?f:{...l,marks:[],haps:new Set};E.marks.push(d),E.haps.add(g),A.set(I,E)}});let n=[...A.values()].sort(Mt),r=n.map(i=>new Set(i.haps)),o=(i,g)=>{for(let f of g){if(i.size>=t)return;i.add(f)}};n.forEach((i,g)=>{let f=(i.end-i.start)/2;for(let d=g+1;d<n.length&&n[d].start<=i.start+f;d++){let l=n[d];Gt(i,l)&&(o(r[g],l.haps),o(r[d],i.haps))}});let s=n.filter((i,g)=>r[g].size>=t),a=[],c=new Map;for(let i of s.toSorted((g,f)=>f.haps.size-g.haps.size||Mt(g,f))){let g;for(let f=Cr(a,i.start-2*(i.end-i.start));f<a.length&&a[f].start<=i.end;f++){let d=a[f];(!g||(d.carriers-g.carriers||Mt(g,d))>0)&&d.spans.every(l=>Gt(l,i))&&(g=d)}if(g)g.spans.push(i),g.carriers+=i.haps.size,c.set(i,g);else{let f={start:i.start,end:i.end,spans:[i],carriers:i.haps.size};a.splice(Cr(a,i.start),0,f),c.set(i,f)}}return{common:new Set(s.flatMap(i=>i.marks)),place:new Map(n.flatMap(i=>i.marks.map(g=>{var f;return[g,(f=c.get(i))!==null&&f!==void 0?f:i]})))}}function Qr(e){let t=e.map(n=>[n.refStart,n.refEnd]).sort((n,r)=>n[0]-r[0]),A=[];for(let[n,r]of t){let o=A.at(-1);o&&n<=o[1]?o[1]=Math.max(o[1],r):A.push([n,r])}return A}function Gs(e,t){let A=Qr(e.filter(r=>t.has(r))),n=e.filter(r=>!t.has(r)&&Je(A,r).length===0);return[...A,...Qr(n)].sort((r,o)=>r[0]-o[0])}function Je(e,t){let A=0,n=e.length;for(;A<n;){let o=A+n>>1;e[o][1]<t.refStart?A=o+1:n=o}let r=[];for(let o=A;o<e.length&&e[o][0]<=t.refEnd;o++)r.push(o);return r}function Us(e,t={}){var A,n,r,o,s;let a=(A=t.exclude)!==null&&A!==void 0?A:[],c=e.filter(D=>!a.some(R=>WA(D.haplotype,R))),i=(n=t.minCarriers)!==null&&n!==void 0?n:wr(c.length),g=(r=t.window)!==null&&r!==void 0?r:Hs(c),f=t.floorBp===void 0||t.floorBp==="auto"?pr(g.end-g.start):Math.max(vA,t.floorBp),d=(o=t.joinBp)!==null&&o!==void 0?o:vA,l=t.foldRareForms===!1,I=c.map(D=>Fs(D.departures,f,d,t.window)),E=I.map(D=>D.marks),{common:Q,place:u}=Js(E,i),p=Gs(E.flat(),Q),N=p.map(([D,R])=>R-D<=Nr),C=I.map(({marks:D,plain:R})=>{var b;let M=new Map,F=(J,q)=>{var sA;M.set(J,[...(sA=M.get(J))!==null&&sA!==void 0?sA:[],q])};for(let J of D)for(let q of Je(p,J))(!br.has(J.kind)||!N[q])&&F(q,J);let G=new Map;for(let J of R)for(let q of Je(p,J))N[q]&&G.set(q,[...(b=G.get(q))!==null&&b!==void 0?b:[],J]);for(let[J,q]of G){let sA=Rs(q,f);sA&&F(J,sA)}return M}),S=new Map;for(let D of E.flat()){let R=u.get(D),b=`${de(D,f)}@${R.start}`;S.set(b,((s=S.get(b))!==null&&s!==void 0?s:new Set).add(R.end))}let x=D=>{let R=u.get(D),b=`${de(D,f)}@${R.start}`;return S.get(b).size>1?`${b}-${R.end}`:b},m=C.map(D=>new Map([...D].map(([R,b])=>{b.sort((F,G)=>F.refStart-G.refStart||F.refEnd-G.refEnd);let M=b.map(F=>N[R]?de(F,f):x(F)).join(";");return[R,b.map(F=>({...F,site:R,state:M}))]}))),h=p.map(([D,R],b)=>c.map((M,F)=>{var G,J;return Ms(M,Math.max(D,g.start),Math.min(R,g.end))?(J=(G=m[F].get(b))===null||G===void 0?void 0:G[0].state)!==null&&J!==void 0?J:Ce:dA})),w=c.map(D=>_s(D,g.start,g.end)),y=w.filter(Boolean).length,_=h.map(D=>2*D.filter((R,b)=>w[b]&&R!==dA).length<y),Y=c.map((D,R)=>w[R]&&(_.every(Boolean)||h.some((b,M)=>!_[M]&&b[R]!==dA))),P=c.flatMap((D,R)=>Y[R]?[R]:[]),T=(D,R,b)=>{var M;let F=(M=m[D].get(R))!==null&&M!==void 0?M:[];return N[R]?Ir(b.marks,F,f):Ls(b.marks,F,(G,J)=>Gt(Ut(G),Ut(J))&&Ir([G],[J],f))},B=new Set,k=[],v=[],L=[];p.forEach(([D,R],b)=>{var M,F;let G=h[b],J=new Map;for(let tA of P){let z=J.get(G[tA]);z?z.push(tA):J.set(G[tA],[tA])}let sA=[...J].sort((tA,z)=>z[1].length-tA[1].length||(tA[0]<z[0]?-1:1)).flatMap(([tA,z])=>{if(tA===dA)return[];let iA=z.map(j=>{var aA;return{j,marks:(aA=m[j].get(b))!==null&&aA!==void 0?aA:[]}}).map(j=>({...j,delta:Ie(j.marks)})).sort((j,aA)=>j.delta-aA.delta||(c[j.j].haplotype<c[aA.j].haplotype?-1:1)),fA=iA[Math.floor(iA.length/2)];return[{key:tA,delta:fA.delta,marks:fA.marks,carriers:z.map(j=>c[j].haplotype)}]});if(k.push({refStart:D,refEnd:R,edge:_[b],shared:!1,covered:P.length-((F=(M=J.get(dA))===null||M===void 0?void 0:M.length)!==null&&F!==void 0?F:0),states:sA}),!_[b]){let tA=sA.filter(z=>z.carriers.length>=i);v.push(b),L.push(G.map((z,iA)=>{var fA,j,aA;let Ct=l||!Y[iA]||z===dA||z===Ce||((j=(fA=J.get(z))===null||fA===void 0?void 0:fA.length)!==null&&j!==void 0?j:0)>=i;Ct||B.add(c[iA].haplotype);let Un=Ct?[]:tA.filter(Qt=>T(iA,b,Qt));return Ct?z:Un.length>0?Ts(Un,Qt=>Qt.delta,Ie((aA=m[iA].get(b))!==null&&aA!==void 0?aA:[])).key:UA}))}});let K=new Map;for(let D of P){let R=L.map(F=>F[D]),b=R.join("|"),M=K.get(b);M?M.members.push(c[D].haplotype):K.set(b,{states:R,members:[c[D].haplotype]})}let U=[...K.values()],X=l?U:U.filter(D=>D.members.length>=i),O=X.length>0?X:U,H=(D,R,b)=>{let M=L[R][D],F=J=>J!==dA&&J!==UA,G=k[v[R]].states.find(J=>J.key===b);return b===M||F(b)&&F(M)&&!!G&&T(D,v[R],G)},V=O.toSorted((D,R)=>R.members.length-D.members.length||(D.states.join("|")<R.states.join("|")?-1:1)),AA=new Set(O.flatMap(D=>D.members)),gA=[];for(let D of P){let R=c[D].haplotype;if(!AA.has(R)){let b=V.find(M=>M.states.every((F,G)=>H(D,G,F)));(b?b.members:gA).push(R),B.add(R)}}let nA=v.map((D,R)=>{var b;let M=(b=O[0])===null||b===void 0?void 0:b.states[R];return M===dA||M===UA||O.some(F=>F.states[R]!==M)});v.forEach((D,R)=>{k[D].shared=!nA[R]});let cA=v.filter((D,R)=>nA[R]),W=(D,R)=>{var b,M;return(M=(b=k[D].states.find(F=>F.key===R))===null||b===void 0?void 0:b.marks)!==null&&M!==void 0?M:[]},wA=O.map(({states:D,members:R})=>{let b=Ys(p,f,v.flatMap((J,q)=>W(J,D[q]))).sort((J,q)=>J.refStart-q.refStart),M=b.filter(J=>!k[J.site].shared),F=D.filter((J,q)=>nA[q]),G=M.length>0&&M.every(J=>J.kind==="shift")&&!F.some(J=>J===dA||J===UA);return{members:R,key:F.join("|"),states:F,marks:b,net:Ie(b),onlyShifts:G}}),mA=gA.length>0?[{members:gA,key:YA,states:cA.map(()=>YA),marks:[],net:0,onlyShifts:!1}]:[];return{sites:k,informative:cA,forms:[...Ks(wA),...mA],placed:P.length,unplaced:c.flatMap((D,R)=>Y[R]?[]:[D.haplotype]),rareCarriers:c.filter(D=>B.has(D.haplotype)).map(D=>D.haplotype),abridged:c.filter((D,R)=>I[R].marks.some(b=>b.kind==="net")).map(D=>D.haplotype),minCarriers:i,floorBp:f}}function Ys(e,t,A){let n=new Set;return A.filter(r=>{let o=Je(e,r),s=o.length>1?`${r.kind} ${de(r,t)} ${o.join(",")}`:`${r.kind} ${r.refStart} ${r.refEnd} ${r.delta}`,a=!n.has(s);return n.add(s),a})}function Hs(e){let t=1/0,A=-1/0;for(let n of e)for(let[r,o]of n.covered)t=Math.min(t,r),A=Math.max(A,o);return t<=A?{start:t,end:A}:{start:0,end:0}}function Ts(e,t,A){let n=e[0];for(let r of e)Math.abs(t(r)-A)<Math.abs(t(n)-A)&&(n=r);return n}var Ks=e=>e.toSorted((t,A)=>A.members.length-t.members.length||Math.abs(t.net)-Math.abs(A.net)||(t.key<A.key?-1:1));function EA(e){let t=Number(e.toPrecision(3));return t>=1e6?`${Number((t/1e6).toPrecision(3))}Mb`:t>=1e3?`${Number((t/1e3).toPrecision(3))}kb`:`${t}bp`}var Br=e=>`${e<0?"-":"+"}${EA(Math.abs(e))}`,Os={deletion:"del",insertion:"ins",none:"repl"};function xr(e){var t;let A=e.refEnd-e.refStart;switch(e.kind){case"insertion":return`ins ${EA(e.delta)}`;case"deletion":return`del ${EA(-e.delta)}`;case"duplication":return`dup ${EA(e.delta)}`;case"inversion":return`inv ${EA(A)}`;case"net":return`net ${Br(e.delta)}`;case"shift":return kr(e)?`shift ${EA(e.shiftedBp)} net ${Br(e.delta)}`:`shift ${EA(e.shiftedBp)}`;case"replacement":return`${Os[(t=Ht(A,e.altLength))!==null&&t!==void 0?t:"none"]} ${EA(A)}->${EA(e.altLength)}`}}function qs(e,t,A){var n,r,o;let s=e.informative.indexOf(A);return s>=0?t.states[s]:!((n=e.sites[A])===null||n===void 0)&&n.shared?t.key===YA?YA:(o=(r=t.marks.find(a=>a.site===A))===null||r===void 0?void 0:r.state)!==null&&o!==void 0?o:Ce:void 0}function Ps(e,t){let A=i=>{var g;return"site"in i&&((g=t?.sites[i.site])===null||g===void 0?void 0:g.shared)===!0},n=e.marks.filter(i=>!A(i)),[r]=n.toSorted((i,g)=>Jt(g)-Jt(i)),o=e.states.filter(i=>i===UA).length,s=e.states.filter(i=>i===dA).length,a=r?xr(r):o>0?"rarer":s>0?"no call":n.length<e.marks.length?"shared":"ref",c=n.length+o+s-1;return e.key===YA?"other":c>0?`${a} +${c}`:a}var DA=e=>!Number.isNaN(e),Zs=(e,t)=>DA(e)?DA(t)?Math.min(e,t):e:t,zs=(e,t)=>DA(e)?DA(t)?Math.max(e,t):e:t;function Sr({fragments:e,departures:t,nodes:A},n){var r,o;let s=d=>{let l=A.get(d);return l?l.end-l.start:0},a=(r=SA(n))!==null&&r!==void 0?r:n,c=new Map,i=(d,l)=>{let I=c.get(d);I?I.push(l):c.set(d,[l])};for(let d of e)i(d.name,js(d,s));for(let d of t)i(d.name,{hap:[d.hapStart,d.hapStart+d.ownBp],lo:Math.min(d.leavePos,d.rejoinPos),hi:Math.max(d.leavePos,d.rejoinPos),bp:d.ownBp,departure:d});let g=new Map;for(let[d,l]of c){let I=(o=SA(d))!==null&&o!==void 0?o:ce(d);if(I===a||d===n)continue;let E=g.get(I);E||(E={haplotype:I,covered:[],departures:[]},g.set(I,E));for(let Q of Xs(l,s))$s(Q,E)}let f=[...g.values()];for(let d of f)d.departures.sort((l,I)=>l.refStart-I.refStart||l.refEnd-I.refEnd),d.covered=Vs(d.covered);return f}function js(e,t){let A=e.ids.length,n=e.refStarts[0],r=e.refStarts[A-1],o=Zs(n,r),s=zs(n+t(e.ids[0]),r+t(e.ids[A-1]));return e.abridged?{hap:[e.hapStart,e.hapEnd],lo:o,hi:s,bp:e.abridged.bp,fragment:e}:{hap:[e.hapStart-e.trimmedBefore,e.hapEnd+e.trimmedAfter],lo:o,hi:s,bp:e.hapEnd+e.trimmedAfter-e.hapStart+e.trimmedBefore,fragment:e}}function Xs(e,t){let A=e.map(o=>({item:o,edges:o.hap})).sort((o,s)=>o.edges[0]-s.edges[0]),n=[],r=-1/0;for(let{item:o,edges:[s,a]}of A){let c=n.at(-1);c&&s<=r?c.push(o):n.push([o]),r=Math.max(r,a)}return n.map(o=>Ws(o,t))}function Ws(e,t){var A;let n=[];for(let i of e)if("fragment"in i){let g=i.fragment;if(g.abridged){if(DA(i.lo)&&DA(i.hi)){let Q=g.against.every(u=>u===1);n.push({hap:i.hap[0],order:2,pos:i.lo,reversed:Q,abridged:{lo:i.lo,hi:i.hi,bp:i.bp,reversed:Q}})}continue}let f=g.ids.length,d=g.refStarts[0],l=g.refStarts[f-1],I=g.against[0]===1,E=g.against[f-1]===1;if(DA(d)){let Q=I?d+t(g.ids[0]):d;n.push({hap:g.hapStart,order:1,pos:Q,reversed:I})}if(DA(l)){let Q=E?l:l+t(g.ids[f-1]);n.push({hap:g.hapEnd,order:0,pos:Q,reversed:E,exit:!0})}}else{let g=i.departure;n.push({hap:g.hapStart,order:0,pos:g.leavePos,reversed:g.leaveReversed,own:g.ownBp},{hap:g.hapStart+g.ownBp,order:1,pos:g.rejoinPos,reversed:g.rejoinReversed})}n.sort((i,g)=>i.hap-g.hap||i.order-g.order);let r=[],o=(i,g,f)=>({kind:"on",lo:Math.min(i,g),hi:Math.max(i,g),reversed:f}),s,a,c=()=>{s&&r.push(o(s.pos,a??s.pos,s.reversed)),s=void 0,a=void 0};for(let i of n)s&&!i.abridged&&s.reversed!==i.reversed&&c(),i.abridged?(c(),r.push({kind:"abridged",...i.abridged})):i.order===1?s??(s={pos:i.pos,reversed:i.reversed}):i.exit?s&&(a=i.pos):(s??(s={pos:i.pos,reversed:i.reversed}),a=i.pos,c(),r.push({kind:"own",bp:(A=i.own)!==null&&A!==void 0?A:0}));return c(),r}function $s(e,t){let A=0;for(let f of e)f.kind!=="own"&&(A+=(f.reversed?1:-1)*(f.hi-f.lo||1));let n=A>0,r=NaN,o=NaN,s=-1/0,a=0,c=0,i=NaN,g=!1;for(let f of n?e.toReversed():e)if(f.kind==="own")a+=f.bp;else if(f.kind==="abridged"&&f.reversed!==n)a+=f.bp,c+=f.hi-f.lo,g=!0;else if(f.kind==="abridged")Number.isNaN(o)&&(r=f.lo,o=f.lo),a+=f.bp,i=Number.isNaN(i)?f.hi:Math.max(i,f.hi);else if(f.reversed!==n)a+=f.hi-f.lo,c+=f.hi-f.lo;else{let d=f.lo;if(Number.isNaN(o))r=d;else if(!Number.isNaN(i))t.departures.push({refStart:o,refEnd:Math.max(d,o),altLength:a+Math.max(0,o-d),invertedBp:c,repeatedBp:0,abridged:!0}),s=Math.max(s,i),i=NaN;else if(d!==o||a>0){let l=d<o?o-d:0;t.departures.push({refStart:o,refEnd:l>0?o:d,altLength:a+l,invertedBp:c,repeatedBp:l,...l>0?{copied:[d,o]}:{},...g?{abridged:!0}:{}})}o=f.hi,s=Math.max(s,f.hi),a=0,c=0,g=!1}Number.isNaN(i)||(t.departures.push({refStart:o,refEnd:Math.max(i,o),altLength:a,invertedBp:c,repeatedBp:0,abridged:!0}),s=Math.max(s,i)),Number.isNaN(r)||t.covered.push([r,s])}function Vs(e){let t=[...new Set(e.flat())].sort((r,o)=>r-o),A=[],n=-1;for(let r=0;r+1<t.length;r++){let o=t[r],s=t[r+1],a=e.flatMap(([i,g],f)=>i<=o&&g>=s?[f]:[]),c=A.at(-1);a.length!==1?n=-1:c&&a[0]===n&&c[1]===o?c[1]=s:(A.push([o,s]),n=a[0])}return A}var Kt=16e6,Ge=class extends hA{constructor(t,A,n){let r=Math.max(1,Math.floor(n*A/t));super(`Zoom in to about ${GA(r)} to read every walk in full`,A,n,r),this.steps=t}};async function Ai(e,t,A={}){var n,r;let{expand:o=!0,partial:s=!0,stepBudget:a=Kt,byteBudget:c,departureByteBudget:i,signal:g}=A,f=await e.header({signal:g}),d=(n=f.references[0])!==null&&n!==void 0?n:"",l=(r=await e.sequenceFor(d,t.refName,{signal:g}))!==null&&r!==void 0?r:t.refName,I={links:!1,stepBudget:Math.max(a,Kt),byteBudget:c,departureByteBudget:i,signal:g},E=await e.cut(l,t,I);if(o){let p=ei(E.fragments,a,s,t);p.size>0&&(E=await e.cut(l,t,{...I,expand:N=>p.has(N)}))}let Q=Sr({fragments:E.fragments,departures:E.departures,nodes:E.graph.nodes},l),u=new Set(Q.map(p=>p.haplotype));for(let p of f.haplotypes)u.has(p)||Q.push({haplotype:p,covered:[],departures:[]});return Q}function ei(e,t,A,n){var r;let o=0,s=new Map;for(let c of e)c.abridged?s.set(c.name,((r=s.get(c.name))!==null&&r!==void 0?r:0)+c.abridged.steps):o+=c.ids.length;if(!A){let c=[...s.values()].reduce((i,g)=>i+g,o);if(s.size>0&&c>t)throw new Ge(c,t,n.end-n.start);return new Set(s.keys())}let a=new Set;for(let[c,i]of[...s].sort((g,f)=>g[1]-f[1])){if(o+i>t)break;o+=i,a.add(c)}return a}function qt(e){let t=e.split(" ");return Fr(t,t.length>=8)}function Fr(e,t){var A;let n=t?5:0;return{anchored:t,segment:{refName:e[n],start:+e[n+1],end:+e[n+2],id:e[3],rank:+e[4],tags:(A=e[t?8:5])!==null&&A!==void 0?A:""}}}function ti(e){let t=e.tags.split(" ").find(n=>n.startsWith("SM:Z:"));if(t===void 0)return;let A=t.slice(5).split(",").map(n=>n.trim()).filter(Boolean);return A.length>0?A:void 0}function vr(e){return{id:e.slice(0,-1),strand:e.slice(-1)}}function Pt(e){return Rr(e.split(" "))}function Rr(e){var t,A;let n=vr(e[3]),r=vr(e[4]);return{source:n.id,sourceStrand:n.strand,target:r.id,targetStrand:r.strand,sourceSegment:{id:n.id,refName:e[5],start:+e[6],end:+e[7],rank:+e[8],tags:(t=e[13])!==null&&t!==void 0?t:""},targetSegment:{id:r.id,refName:e[9],start:+e[10],end:+e[11],rank:+e[12],tags:(A=e[14])!==null&&A!==void 0?A:""}}}function Zt(e){let t=e.find(o=>o.startsWith("#gfa-to-tabix "));if(t===void 0)throw new Error("not a gfa-to-tabix graph file: no #gfa-to-tabix header");let A=new Map(t.split(" ").slice(1).map(o=>[o.slice(0,o.indexOf(":")),o.slice(o.indexOf(":")+3)])),n=A.get("format");if(n!=="2")throw new Error(`gfa-to-tabix format ${n}: this graph-walks reads format 2`);let r=e.find(o=>o.startsWith("#samples "));return{anchored:A.get("layout")==="anchored",samples:r?r.slice(9).split(","):[]}}function Mr(e,t){let A=[];for(let n=0;n<e.length;n++){let r=Number.parseInt(e[n],16);for(let o=0;o<4;o++)r&1<<o&&A.push(t[n*4+o])}return A}function zt(e,t){let A=e.split(" "),[n]=A.splice(3,1),r=o=>{var s;!((s=A[o])===null||s===void 0)&&s.startsWith("SB:H:")&&(A[o]=`SM:Z:${Mr(A[o].slice(5),t.samples).join(",")}`)};if(n==="N")return r(t.anchored?8:5),{kind:"N",segment:Fr(A,t.anchored).segment};if(n==="L")return r(13),r(14),{kind:"L",link:Rr(A)}}function jt(e){return`${e.source}${e.sourceStrand}${e.target}${e.targetStrand}`}function Qe(e,t,A){t.set(jt(A),A);let n=[];for(let r of[A.sourceSegment,A.targetSegment])e.has(r.id)||(e.set(r.id,r),n.push(r));return n}function _r(e,t,A){let n=s=>s.rank!==0||s.refName!==A.refName?0:s.end<=A.start?-1:s.start>=A.end?1:0,r=new Map(e),o=new Map;for(let s of t)(e.has(s.source)||e.has(s.target)||n(s.sourceSegment)*n(s.targetSegment)===-1)&&Qe(r,o,s);for(let s of t)r.has(s.source)&&r.has(s.target)&&o.set(jt(s),s);for(let[s,a]of r)!e.has(s)&&a.rank>0&&r.set(s,{...a,tags:a.tags?`${a.tags} ${Ot}`:Ot});return{segments:r,links:o}}var Ot="mv:i:1";function Lr(e,t,A){let n=r=>r.refName!==A.refName||r.end<=A.start||r.start>=A.end;return[...Dr(e.filter(r=>r.rank>0),r=>t.has(r.id),A.end-A.start),...Dr(e.filter(r=>r.rank===0&&n(r)),()=>!0,0)]}function Dr(e,t,A){let n=[...e].sort((o,s)=>Ue(o.refName,s.refName)||o.start-s.start),r=[];for(let o of n){let s=r.at(-1);s?.refName===o.refName&&o.start-s.end<=A?(s.needed||(s.needed=o.start>s.end||t(o)),s.end=Math.max(s.end,o.end)):r.push({refName:o.refName,start:o.start,end:o.end,needed:t(o)})}return r.filter(o=>o.needed).map(({refName:o,start:s,end:a})=>({refName:o,start:s,end:a}))}function Jr(e,t,A){let n=r=>t.has(r.id)||A.some(o=>o.refName===r.refName&&r.start>=o.start&&r.end<=o.end);return e.filter(r=>n(r.sourceSegment)&&n(r.targetSegment))}var ni=/^[A-Za-z][A-Za-z0-9]:[AifZJHB]:/;function ri(e){let{id:t,refName:A,start:n,end:r,rank:o,tags:s}=e,a=s.split(" ").filter(i=>ni.test(i)),c=a.length===0?"":` ${a.join(" ")}`;return`S ${t} * LN:i:${r-n} SN:Z:${A} SO:i:${n} SR:i:${o}${c}`}function oi(e){let{source:t,sourceStrand:A,target:n,targetStrand:r}=e;return`L ${t} ${A} ${n} ${r} 0M`}function Ue(e,t){return e<t?-1:e>t?1:0}function Ye(e,t){let A=[...e.values()].sort((r,o)=>Ue(r.refName,o.refName)||r.start-o.start||Ue(r.id,o.id)),n=[...t.keys()].sort((r,o)=>Ue(r,o));return["H VN:Z:1.0",...A.map(r=>ri(r)),...n.map(r=>oi(t.get(r)))].join(`
2
+ `)}function uA(e,t,A){if(!Number.isFinite(t)||!Number.isFinite(A))throw new Error(`${e}:${t}-${A} is not a finite range to query the graph's index for`)}function Gr(e){return e.filter(t=>t.rank>0)}var Xt=new WeakMap;function si(e,t){let A=Xt.get(e);return A||(A=e.getHeaderLines({signal:t}).then(Zt),A.catch(()=>Xt.delete(e)),Xt.set(e,A)),A}function ii(e,t,A,n,r){return uA(t,A,n),e.getLines(t,A,n,r)}async function Ur(e,t,A,n){var r,o,s,a;let c=[],i=[],g=(d,l)=>ii(d,t.refName,t.start,t.end,{signal:n,lineCallback:l});if("graph"in e){let d=await si(e.graph,n);await g(e.graph,I=>{let E=zt(I,d);E?.kind==="N"?c.push(E.segment):E?.kind==="L"&&i.push(E.link)});let l=new Map(c.map(I=>[I.id,I.tags]));for(let I of i)(s=I.sourceSegment).tags||(s.tags=(r=l.get(I.source))!==null&&r!==void 0?r:""),(a=I.targetSegment).tags||(a.tags=(o=l.get(I.target))!==null&&o!==void 0?o:"");return{segments:A?c:[],links:i,anchored:d.anchored}}let f=!1;return await Promise.all([A&&g(e.segments,d=>{let l=qt(d);f||(f=l.anchored),c.push(l.segment)}),g(e.links,d=>{i.push(Pt(d))})]),{segments:c,links:i,anchored:f}}async function ai(e,t,{hops:A=0,signal:n}={}){let r=new Map,o=new Map,s=await Ur(e,t,!0,n);for(let f of s.segments)r.set(f.id,f);let a=s.links;if(s.anchored){let f=_r(r,a,t);return Ye(f.segments,f.links)}let c=async f=>(await Ur(e,f,!1,n)).links,i=async f=>(await c(f)).flatMap(d=>Qe(r,o,d)),g=Gr(a.flatMap(f=>Qe(r,o,f)));for(let f=0;f<A;f++){let d=await Promise.all(g.map(i));g=Gr(d.flat())}if(A>0){let f=Lr([...r.values()],new Set(g.map(l=>l.id)),t),d=await Promise.all(f.map(l=>c(l)));for(let l of Jr(d.flat(),r,f))Qe(r,o,l)}return Ye(r,o)}async function He(e){return e.bytes?e.bytes():new Uint8Array(await e.arrayBuffer())}async function Yr(e,t,A){if(t==="utf8"||t==="utf-8")return e.text();if(t)throw new Error(`unsupported encoding: ${t}`);return A&&"body"in e?Wt(e,A):He(e)}function Hr(e){return typeof e=="string"?{encoding:e,opts:{}}:{encoding:e?.encoding,opts:e??{}}}function Tr(e){let t=/\/(\d+)$/.exec(e??"")?.[1];return t===void 0?void 0:parseInt(t,10)}function gi(e){let t=e.headers.get("content-length"),A=t===null?Number.NaN:Number(t);return Number.isSafeInteger(A)&&A>=0?A:void 0}var ci=50;async function Wt(e,t){let A=gi(e),n=e.body;if(!n||A===void 0){let c=await He(e);return t(c.byteLength,A??c.byteLength),c}let r=n.getReader(),o=new Uint8Array(A),s=0,a=Date.now();t(0,A);for(let c=await r.read();!c.done;c=await r.read()){if(s+c.value.byteLength>o.length){let g=new Uint8Array(Math.max(s+c.value.byteLength,o.length*2));g.set(o.subarray(0,s)),o=g}o.set(c.value,s),s+=c.value.byteLength;let i=Date.now();i-a>=ci&&(a=i,t(s,A))}return t(s,A),s===o.length?o:o.slice(0,s)}function fi(...e){let t=new Map;for(let A of e)for(let[n,r]of Object.entries(A??{}))t.set(n.toLowerCase(),[n,r]);return Object.fromEntries(t.values())}function $t(e){let t=e.body;typeof t?.cancel=="function"&&t.cancel().catch(()=>{})}function Kr(e){return Number.isSafeInteger(e)&&e>=0}function li(e){return typeof e=="object"&&e!==null&&"name"in e&&e.name==="TypeError"}function di(e){return(typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"?e.message:`${e}`).replace(/\.$/,"")}var BA=class{url;get source(){return this.url}_stat;statProbe;fetchImplementation;baseHeaders;baseOverrides;baseSignal;constructor(t,A={}){this.url=t,this.baseHeaders=A.headers??{},this.baseOverrides=A.overrides??{},this.baseSignal=A.signal,this.fetchImplementation=A.fetch??globalThis.fetch.bind(globalThis)}buildRequest(t,A){let n=t.signal??this.baseSignal;return{method:"GET",redirect:"follow",mode:"cors",...this.baseOverrides,...t.overrides,headers:fi(this.baseHeaders,t.headers,A),...n?{signal:n}:{}}}async fetch(t,A){let n=o=>li(o)&&!A?.signal?.aborted?new Error(`${di(o)} fetching ${t}`,{cause:o}):o,r;try{r=await this.fetchImplementation(t,A)}catch(o){if(`${o}`.includes("Failed to fetch")){console.warn(`generic-filehandle: refetching ${t} to attempt to work around chrome CORS header caching bug`);try{r=await this.fetchImplementation(t,{...A,cache:"reload"})}catch(s){throw n(s)}}else throw n(o)}return r}async read(t,A,n={}){if(!Kr(t)||!Kr(A))throw new TypeError(`read() called with an invalid length or position (length=${t}, position=${A}). The index file may be corrupt.`);return t===0?new Uint8Array(0):this.fetchBytes(t,A,n)}async fetchBytes(t,A,n){let r=await this.fetch(this.url,this.buildRequest(n,{range:`bytes=${A}-${A+t-1}`}));if(r.status===416)return $t(r),new Uint8Array(0);if(this.checkOk(r),r.status===200&&A===0||r.status===206){let o=Tr(r.headers.get("content-range"));o!==void 0&&(this._stat={size:o});let s=n.onProgress?await Wt(r,n.onProgress):await He(r);return!this._stat&&r.status===200&&(this._stat={size:s.byteLength}),s.byteLength<=t?s:s.slice(0,t)}throw $t(r),new Error(r.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${r.status} fetching ${this.url}`)}checkOk(t){if(!t.ok)throw $t(t),new Error(`HTTP ${t.status} fetching ${this.url}`)}async readFile(t){let{encoding:A,opts:n}=Hr(t),r=await this.fetch(this.url,this.buildRequest(n));this.checkOk(r);let o=await this.readFileBody(r,A,n.onProgress);return r.status===200&&typeof o!="string"&&(this._stat={size:o.byteLength}),o}readFileBody(t,A,n){return Yr(t,A,n)}async stat(){return this._stat||(this.statProbe??=this.read(10,0).finally(()=>{this.statProbe=void 0}),await this.statProbe),this._stat??{size:0}}close(){return Promise.resolve()}};var HA=class{source;constructor(t,A={}){this.source=t}unimplemented(){return Promise.reject(new Error(`LocalFile is unimplemented in the browser (${this.source})`))}readFile(t){return this.unimplemented()}read(t,A,n){return this.unimplemented()}stat(){return this.unimplemented()}close(){return this.unimplemented()}};function Vt(e,t){return`${e} ${t}`}function Be(e){let t=new Map;for(let A of e){t.set(A,A);let n=ce(A);if(n!==A){let r=ht(A);t.set(Vt(n,r),A);let o=SA(A);o!==void 0&&t.set(Vt(o,r),A)}}return t}function he(e,t,A){var n;return(n=e.get(Vt(t,A)))!==null&&n!==void 0?n:e.get(A)}var An=0;var en=2;var Ee=4;var FA=0,ue=1,Or=2;var qr=-5;function Ii(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Pr(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var A=t.shift();if(A){if(typeof A!="object")throw new TypeError(A+"must be non-object");for(var n in A)Ii(A,n)&&(e[n]=A[n])}}return e}function Ke(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)}var pe={arraySet:function(e,t,A,n,r){if(t.subarray&&e.subarray){e.set(t.subarray(A,A+n),r);return}for(var o=0;o<n;o++)e[r+o]=t[A+o]},flattenChunks:function(e){var t,A,n,r,o,s;for(n=0,t=0,A=e.length;t<A;t++)n+=e[t].length;for(s=new Uint8Array(n),r=0,t=0,A=e.length;t<A;t++)o=e[t],s.set(o,r),r+=o.length;return s},Buf8:function(e){return new Uint8Array(e)},Buf16:function(e){return new Uint16Array(e)},Buf32:function(e){return new Int32Array(e)}},we={arraySet:function(e,t,A,n,r){for(var o=0;o<n;o++)e[r+o]=t[A+o]},flattenChunks:function(e){return[].concat.apply([],e)},Buf8:function(e){return new Array(e)},Buf16:function(e){return new Array(e)},Buf32:function(e){return new Array(e)}},te=()=>{let e=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return te=()=>e,e},pA=(e,t,A,n,r)=>(pA=te()?pe.arraySet:we.arraySet,pA(e,t,A,n,r)),Te=e=>(Te=te()?pe.flattenChunks:we.flattenChunks,Te(e)),yA=e=>(yA=te()?pe.Buf8:we.Buf8,yA(e)),RA=e=>(RA=te()?pe.Buf16:we.Buf16,RA(e)),TA=e=>(TA=te()?pe.Buf32:we.Buf32,TA(e));var Zr=function(){let e=!0;try{String.fromCharCode.apply(null,[0])}catch{e=!1}return Zr=()=>e,e},zr=function(){let e=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{e=!1}return zr=()=>e,e},tn=function(e){for(var t=yA(256),A=0;A<256;A++)t[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;return t[254]=t[254]=1,tn=n=>t[n],t[e]};function nn(e){var t,A,n,r,o,s=e.length,a=0;for(r=0;r<s;r++)A=e.charCodeAt(r),(A&64512)===55296&&r+1<s&&(n=e.charCodeAt(r+1),(n&64512)===56320&&(A=65536+(A-55296<<10)+(n-56320),r++)),a+=A<128?1:A<2048?2:A<65536?3:4;for(t=new Uint8Array(a),o=0,r=0;o<a;r++)A=e.charCodeAt(r),(A&64512)===55296&&r+1<s&&(n=e.charCodeAt(r+1),(n&64512)===56320&&(A=65536+(A-55296<<10)+(n-56320),r++)),A<128?t[o++]=A:A<2048?(t[o++]=192|A>>>6,t[o++]=128|A&63):A<65536?(t[o++]=224|A>>>12,t[o++]=128|A>>>6&63,t[o++]=128|A&63):(t[o++]=240|A>>>18,t[o++]=128|A>>>12&63,t[o++]=128|A>>>6&63,t[o++]=128|A&63);return t}function Ci(e,t){if(t<65534&&(e.subarray&&zr()||!e.subarray&&Zr()))return String.fromCharCode.apply(null,Ke(e,t));for(var A="",n=0;n<t;n++)A+=String.fromCharCode(e[n]);return A}function jr(e){for(var t=new Uint8Array(e.length),A=0,n=t.length;A<n;A++)t[A]=e.charCodeAt(A);return t}function Xr(e,t){var A,n,r,o,s=t||e.length,a=new Array(s*2);for(n=0,A=0;A<s;){if(r=e[A++],r<128){a[n++]=r;continue}if(o=tn(r),o>4){a[n++]=65533,A+=o-1;continue}for(r&=o===2?31:o===3?15:7;o>1&&A<s;)r=r<<6|e[A++]&63,o--;if(o>1){a[n++]=65533;continue}r<65536?a[n++]=r:(r-=65536,a[n++]=55296|r>>10&1023,a[n++]=56320|r&1023)}return Ci(a,n)}function Wr(e,t){var A;for(t=t||e.length,t>e.length&&(t=e.length),A=t-1;A>=0&&(e[A]&192)===128;)A--;return A<0||A===0?t:A+tn(e[A])>t?A:t}function rn(){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 me(e,t,A,n){for(var r=e&65535|0,o=e>>>16&65535|0,s=0;A!==0;){s=A>2e3?2e3:A,A-=s;do r=r+t[n++]|0,o=o+r|0;while(--s);r%=65521,o%=65521}return r|o<<16|0}function Qi(){for(var e,t=[],A=0;A<256;A++){e=A;for(var n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;t[A]=e}return t}var $r=function(){let e=Qi();return $r=()=>e,e};function IA(e,t,A,n){var r=$r(),o=n+A;e^=-1;for(var s=n;s<o;s++)e=e>>>8^r[(e^t[s])&255];return e^-1}var Oe=30,Bi=12;function on(e,t){var A,n,r,o,s,a,c,i,g,f,d,l,I,E,Q,u,p,N,C,S,x,m,h,w,y;A=e.state,n=e.next_in,w=e.input,r=n+(e.avail_in-5),o=e.next_out,y=e.output,s=o-(t-e.avail_out),a=o+(e.avail_out-257),c=A.dmax,i=A.wsize,g=A.whave,f=A.wnext,d=A.window,l=A.hold,I=A.bits,E=A.lencode,Q=A.distcode,u=(1<<A.lenbits)-1,p=(1<<A.distbits)-1;A:do{I<15&&(l+=w[n++]<<I,I+=8,l+=w[n++]<<I,I+=8),N=E[l&u];e:for(;;){if(C=N>>>24,l>>>=C,I-=C,C=N>>>16&255,C===0)y[o++]=N&65535;else if(C&16){S=N&65535,C&=15,C&&(I<C&&(l+=w[n++]<<I,I+=8),S+=l&(1<<C)-1,l>>>=C,I-=C),I<15&&(l+=w[n++]<<I,I+=8,l+=w[n++]<<I,I+=8),N=Q[l&p];t:for(;;){if(C=N>>>24,l>>>=C,I-=C,C=N>>>16&255,C&16){if(x=N&65535,C&=15,I<C&&(l+=w[n++]<<I,I+=8,I<C&&(l+=w[n++]<<I,I+=8)),x+=l&(1<<C)-1,x>c){e.msg="invalid distance too far back",A.mode=Oe;break A}if(l>>>=C,I-=C,C=o-s,x>C){if(C=x-C,C>g&&A.sane){e.msg="invalid distance too far back",A.mode=Oe;break A}if(m=0,h=d,f===0){if(m+=i-C,C<S){S-=C;do y[o++]=d[m++];while(--C);m=o-x,h=y}}else if(f<C){if(m+=i+f-C,C-=f,C<S){S-=C;do y[o++]=d[m++];while(--C);if(m=0,f<S){C=f,S-=C;do y[o++]=d[m++];while(--C);m=o-x,h=y}}}else if(m+=f-C,C<S){S-=C;do y[o++]=d[m++];while(--C);m=o-x,h=y}for(;S>2;)y[o++]=h[m++],y[o++]=h[m++],y[o++]=h[m++],S-=3;S&&(y[o++]=h[m++],S>1&&(y[o++]=h[m++]))}else{m=o-x;do y[o++]=y[m++],y[o++]=y[m++],y[o++]=y[m++],S-=3;while(S>2);S&&(y[o++]=y[m++],S>1&&(y[o++]=y[m++]))}}else if((C&64)===0){N=Q[(N&65535)+(l&(1<<C)-1)];continue t}else{e.msg="invalid distance code",A.mode=Oe;break A}break}}else if((C&64)===0){N=E[(N&65535)+(l&(1<<C)-1)];continue e}else if(C&32){A.mode=Bi;break A}else{e.msg="invalid literal/length code",A.mode=Oe;break A}break}}while(n<r&&o<a);S=I>>3,n-=S,I-=S<<3,l&=(1<<I)-1,e.next_in=n,e.next_out=o,e.avail_in=n<r?5+(r-n):5-(n-r),e.avail_out=o<a?257+(a-o):257-(o-a),A.hold=l,A.bits=I}var ne=15,Vr=852,Ao=592,eo=0,sn=1,to=2,hi=[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],Ei=[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],ui=[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],pi=[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 KA(e,t,A,n,r,o,s,a){var c=a.bits,i=0,g=0,f=0,d=0,l=0,I=0,E=0,Q=0,u=0,p=0,N,C,S,x,m,h=null,w=0,y,_=RA(ne+1),Y=RA(ne+1),P=null,T=0,B,k,v;for(i=0;i<=ne;i++)_[i]=0;for(g=0;g<n;g++)_[t[A+g]]++;for(l=c,d=ne;d>=1&&_[d]===0;d--);if(l>d&&(l=d),d===0)return r[o++]=1<<24|64<<16|0,r[o++]=1<<24|64<<16|0,a.bits=1,0;for(f=1;f<d&&_[f]===0;f++);for(l<f&&(l=f),Q=1,i=1;i<=ne;i++)if(Q<<=1,Q-=_[i],Q<0)return-1;if(Q>0&&(e===eo||d!==1))return-1;for(Y[1]=0,i=1;i<ne;i++)Y[i+1]=Y[i]+_[i];for(g=0;g<n;g++)t[A+g]!==0&&(s[Y[t[A+g]]++]=g);if(e===eo?(h=P=s,y=19):e===sn?(h=hi,w-=257,P=Ei,T-=257,y=256):(h=ui,P=pi,y=-1),p=0,g=0,i=f,m=o,I=l,E=0,S=-1,u=1<<l,x=u-1,e===sn&&u>Vr||e===to&&u>Ao)return 1;for(;;){B=i-E,s[g]<y?(k=0,v=s[g]):s[g]>y?(k=P[T+s[g]],v=h[w+s[g]]):(k=96,v=0),N=1<<i-E,C=1<<I,f=C;do C-=N,r[m+(p>>E)+C]=B<<24|k<<16|v|0;while(C!==0);for(N=1<<i-1;p&N;)N>>=1;if(N!==0?(p&=N-1,p+=N):p=0,g++,--_[i]===0){if(i===d)break;i=t[A+s[g]]}if(i>l&&(p&x)!==S){for(E===0&&(E=l),m+=f,I=i-E,Q=1<<I;I+E<d&&(Q-=_[I+E],!(Q<=0));)I++,Q<<=1;if(u+=1<<I,e===sn&&u>Vr||e===to&&u>Ao)return 1;S=p&x,r[S]=l<<24|I<<16|m-o|0}}return p!==0&&(r[m+p]=i-E<<24|64<<16|0),a.bits=l,0}var wi=0,So=1,vo=2,no=4,mi=5,qe=6,OA=0,ki=1,yi=2,CA=-2,Do=-3,dn=-4,bi=-5,ro=8,Fo=1,oo=2,so=3,io=4,ao=5,go=6,co=7,fo=8,lo=9,Io=10,ze=11,bA=12,an=13,Co=14,gn=15,Qo=16,Bo=17,ho=18,Eo=19,Pe=20,Ze=21,uo=22,po=23,wo=24,mo=25,ko=26,cn=27,yo=28,bo=29,$=30,In=31,Ni=32,xi=852,Si=592;function No(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function vi(){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=RA(320),this.work=RA(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Di(e){var t;return!e||!e.state?CA:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=Fo,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=TA(xi),t.distcode=t.distdyn=TA(Si),t.sane=1,t.back=-1,OA)}function Fi(e){var t;return!e||!e.state?CA:(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,Di(e))}function Ri(e,t){var A,n;return!e||!e.state||(n=e.state,t<0?(A=0,t=-t):(A=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?CA:(n.window!==null&&n.wbits!==t&&(n.window=null),n.wrap=A,n.wbits=t,Fi(e))}function Ro(e,t){var A,n;return e?(n=new vi,e.state=n,n.window=null,A=Ri(e,t),A!==OA&&(e.state=null),A):CA}var xo=!0,fn,ln;function Mi(e){if(xo){var t;for(fn=TA(512),ln=TA(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(KA(So,e.lens,0,288,fn,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;KA(vo,e.lens,0,32,ln,0,e.work,{bits:5}),xo=!1}e.lencode=fn,e.lenbits=9,e.distcode=ln,e.distbits=5}function Mo(e,t,A,n){var r,o=e.state;return o.window===null&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=yA(o.wsize)),n>=o.wsize?(pA(o.window,t,A-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(r=o.wsize-o.wnext,r>n&&(r=n),pA(o.window,t,A-n,r,o.wnext),n-=r,n?(pA(o.window,t,A-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=r))),0}function _o(e,t){var A,n,r,o,s,a,c,i,g,f,d,l,I,E,Q=0,u,p,N,C,S,x,m,h,w=yA(4),y,_,Y=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return CA;A=e.state,A.mode===bA&&(A.mode=an),s=e.next_out,r=e.output,c=e.avail_out,o=e.next_in,n=e.input,a=e.avail_in,i=A.hold,g=A.bits,f=a,d=c,h=OA;A:for(;;)switch(A.mode){case Fo:if(A.wrap===0){A.mode=an;break}for(;g<16;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}if(A.wrap&2&&i===35615){A.check=0,w[0]=i&255,w[1]=i>>>8&255,A.check=IA(A.check,w,2,0),i=0,g=0,A.mode=oo;break}if(A.flags=0,A.head&&(A.head.done=!1),!(A.wrap&1)||(((i&255)<<8)+(i>>8))%31){e.msg="incorrect header check",A.mode=$;break}if((i&15)!==ro){e.msg="unknown compression method",A.mode=$;break}if(i>>>=4,g-=4,m=(i&15)+8,A.wbits===0)A.wbits=m;else if(m>A.wbits){e.msg="invalid window size",A.mode=$;break}A.dmax=1<<m,e.adler=A.check=1,A.mode=i&512?Io:bA,i=0,g=0;break;case oo:for(;g<16;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}if(A.flags=i,(A.flags&255)!==ro){e.msg="unknown compression method",A.mode=$;break}if(A.flags&57344){e.msg="unknown header flags set",A.mode=$;break}A.head&&(A.head.text=i>>8&1),A.flags&512&&(w[0]=i&255,w[1]=i>>>8&255,A.check=IA(A.check,w,2,0)),i=0,g=0,A.mode=so;case so:for(;g<32;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}A.head&&(A.head.time=i),A.flags&512&&(w[0]=i&255,w[1]=i>>>8&255,w[2]=i>>>16&255,w[3]=i>>>24&255,A.check=IA(A.check,w,4,0)),i=0,g=0,A.mode=io;case io:for(;g<16;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}A.head&&(A.head.xflags=i&255,A.head.os=i>>8),A.flags&512&&(w[0]=i&255,w[1]=i>>>8&255,A.check=IA(A.check,w,2,0)),i=0,g=0,A.mode=ao;case ao:if(A.flags&1024){for(;g<16;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}A.length=i,A.head&&(A.head.extra_len=i),A.flags&512&&(w[0]=i&255,w[1]=i>>>8&255,A.check=IA(A.check,w,2,0)),i=0,g=0}else A.head&&(A.head.extra=null);A.mode=go;case go:if(A.flags&1024&&(l=A.length,l>a&&(l=a),l&&(A.head&&(m=A.head.extra_len-A.length,A.head.extra||(A.head.extra=new Array(A.head.extra_len)),pA(A.head.extra,n,o,l,m)),A.flags&512&&(A.check=IA(A.check,n,l,o)),a-=l,o+=l,A.length-=l),A.length))break A;A.length=0,A.mode=co;case co:if(A.flags&2048){if(a===0)break A;l=0;do m=n[o+l++],A.head&&m&&A.length<65536&&(A.head.name+=String.fromCharCode(m));while(m&&l<a);if(A.flags&512&&(A.check=IA(A.check,n,l,o)),a-=l,o+=l,m)break A}else A.head&&(A.head.name=null);A.length=0,A.mode=fo;case fo:if(A.flags&4096){if(a===0)break A;l=0;do m=n[o+l++],A.head&&m&&A.length<65536&&(A.head.comment+=String.fromCharCode(m));while(m&&l<a);if(A.flags&512&&(A.check=IA(A.check,n,l,o)),a-=l,o+=l,m)break A}else A.head&&(A.head.comment=null);A.mode=lo;case lo:if(A.flags&512){for(;g<16;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}if(i!==(A.check&65535)){e.msg="header crc mismatch",A.mode=$;break}i=0,g=0}A.head&&(A.head.hcrc=A.flags>>9&1,A.head.done=!0),e.adler=A.check=0,A.mode=bA;break;case Io:for(;g<32;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}e.adler=A.check=No(i),i=0,g=0,A.mode=ze;case ze:if(A.havedict===0)return e.next_out=s,e.avail_out=c,e.next_in=o,e.avail_in=a,A.hold=i,A.bits=g,yi;e.adler=A.check=1,A.mode=bA;case bA:if(t===mi||t===qe)break A;case an:if(A.last){i>>>=g&7,g-=g&7,A.mode=cn;break}for(;g<3;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}switch(A.last=i&1,i>>>=1,g-=1,i&3){case 0:A.mode=Co;break;case 1:if(Mi(A),A.mode=Pe,t===qe){i>>>=2,g-=2;break A}break;case 2:A.mode=Bo;break;case 3:e.msg="invalid block type",A.mode=$}i>>>=2,g-=2;break;case Co:for(i>>>=g&7,g-=g&7;g<32;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}if((i&65535)!==(i>>>16^65535)){e.msg="invalid stored block lengths",A.mode=$;break}if(A.length=i&65535,i=0,g=0,A.mode=gn,t===qe)break A;case gn:A.mode=Qo;case Qo:if(l=A.length,l){if(l>a&&(l=a),l>c&&(l=c),l===0)break A;pA(r,n,o,l,s),a-=l,o+=l,c-=l,s+=l,A.length-=l;break}A.mode=bA;break;case Bo:for(;g<14;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}if(A.nlen=(i&31)+257,i>>>=5,g-=5,A.ndist=(i&31)+1,i>>>=5,g-=5,A.ncode=(i&15)+4,i>>>=4,g-=4,A.nlen>286||A.ndist>30){e.msg="too many length or distance symbols",A.mode=$;break}A.have=0,A.mode=ho;case ho:for(;A.have<A.ncode;){for(;g<3;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}A.lens[Y[A.have++]]=i&7,i>>>=3,g-=3}for(;A.have<19;)A.lens[Y[A.have++]]=0;if(A.lencode=A.lendyn,A.lenbits=7,y={bits:A.lenbits},h=KA(wi,A.lens,0,19,A.lencode,0,A.work,y),A.lenbits=y.bits,h){e.msg="invalid code lengths set",A.mode=$;break}A.have=0,A.mode=Eo;case Eo:for(;A.have<A.nlen+A.ndist;){for(;Q=A.lencode[i&(1<<A.lenbits)-1],u=Q>>>24,p=Q>>>16&255,N=Q&65535,!(u<=g);){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}if(N<16)i>>>=u,g-=u,A.lens[A.have++]=N;else{if(N===16){for(_=u+2;g<_;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}if(i>>>=u,g-=u,A.have===0){e.msg="invalid bit length repeat",A.mode=$;break}m=A.lens[A.have-1],l=3+(i&3),i>>>=2,g-=2}else if(N===17){for(_=u+3;g<_;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}i>>>=u,g-=u,m=0,l=3+(i&7),i>>>=3,g-=3}else{for(_=u+7;g<_;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}i>>>=u,g-=u,m=0,l=11+(i&127),i>>>=7,g-=7}if(A.have+l>A.nlen+A.ndist){e.msg="invalid bit length repeat",A.mode=$;break}for(;l--;)A.lens[A.have++]=m}}if(A.mode===$)break;if(A.lens[256]===0){e.msg="invalid code -- missing end-of-block",A.mode=$;break}if(A.lenbits=9,y={bits:A.lenbits},h=KA(So,A.lens,0,A.nlen,A.lencode,0,A.work,y),A.lenbits=y.bits,h){e.msg="invalid literal/lengths set",A.mode=$;break}if(A.distbits=6,A.distcode=A.distdyn,y={bits:A.distbits},h=KA(vo,A.lens,A.nlen,A.ndist,A.distcode,0,A.work,y),A.distbits=y.bits,h){e.msg="invalid distances set",A.mode=$;break}if(A.mode=Pe,t===qe)break A;case Pe:A.mode=Ze;case Ze:if(a>=6&&c>=258){e.next_out=s,e.avail_out=c,e.next_in=o,e.avail_in=a,A.hold=i,A.bits=g,on(e,d),s=e.next_out,r=e.output,c=e.avail_out,o=e.next_in,n=e.input,a=e.avail_in,i=A.hold,g=A.bits,A.mode===bA&&(A.back=-1);break}for(A.back=0;Q=A.lencode[i&(1<<A.lenbits)-1],u=Q>>>24,p=Q>>>16&255,N=Q&65535,!(u<=g);){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}if(p&&(p&240)===0){for(C=u,S=p,x=N;Q=A.lencode[x+((i&(1<<C+S)-1)>>C)],u=Q>>>24,p=Q>>>16&255,N=Q&65535,!(C+u<=g);){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}i>>>=C,g-=C,A.back+=C}if(i>>>=u,g-=u,A.back+=u,A.length=N,p===0){A.mode=ko;break}if(p&32){A.back=-1,A.mode=bA;break}if(p&64){e.msg="invalid literal/length code",A.mode=$;break}A.extra=p&15,A.mode=uo;case uo:if(A.extra){for(_=A.extra;g<_;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}A.length+=i&(1<<A.extra)-1,i>>>=A.extra,g-=A.extra,A.back+=A.extra}A.was=A.length,A.mode=po;case po:for(;Q=A.distcode[i&(1<<A.distbits)-1],u=Q>>>24,p=Q>>>16&255,N=Q&65535,!(u<=g);){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}if((p&240)===0){for(C=u,S=p,x=N;Q=A.distcode[x+((i&(1<<C+S)-1)>>C)],u=Q>>>24,p=Q>>>16&255,N=Q&65535,!(C+u<=g);){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}i>>>=C,g-=C,A.back+=C}if(i>>>=u,g-=u,A.back+=u,p&64){e.msg="invalid distance code",A.mode=$;break}A.offset=N,A.extra=p&15,A.mode=wo;case wo:if(A.extra){for(_=A.extra;g<_;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}A.offset+=i&(1<<A.extra)-1,i>>>=A.extra,g-=A.extra,A.back+=A.extra}if(A.offset>A.dmax){e.msg="invalid distance too far back",A.mode=$;break}A.mode=mo;case mo:if(c===0)break A;if(l=d-c,A.offset>l){if(l=A.offset-l,l>A.whave&&A.sane){e.msg="invalid distance too far back",A.mode=$;break}l>A.wnext?(l-=A.wnext,I=A.wsize-l):I=A.wnext-l,l>A.length&&(l=A.length),E=A.window}else E=r,I=s-A.offset,l=A.length;l>c&&(l=c),c-=l,A.length-=l;do r[s++]=E[I++];while(--l);A.length===0&&(A.mode=Ze);break;case ko:if(c===0)break A;r[s++]=A.length,c--,A.mode=Ze;break;case cn:if(A.wrap){for(;g<32;){if(a===0)break A;a--,i|=n[o++]<<g,g+=8}if(d-=c,e.total_out+=d,A.total+=d,d&&(e.adler=A.check=A.flags?IA(A.check,r,d,s-d):me(A.check,r,d,s-d)),d=c,(A.flags?i:No(i))!==A.check){e.msg="incorrect data check",A.mode=$;break}i=0,g=0}A.mode=yo;case yo:if(A.wrap&&A.flags){for(;g<32;){if(a===0)break A;a--,i+=n[o++]<<g,g+=8}if(i!==(A.total&4294967295)){e.msg="incorrect length check",A.mode=$;break}i=0,g=0}A.mode=bo;case bo:h=ki;break A;case $:h=Do;break A;case In:return dn;case Ni:default:return CA}return e.next_out=s,e.avail_out=c,e.next_in=o,e.avail_in=a,A.hold=i,A.bits=g,(A.wsize||d!==e.avail_out&&A.mode<$&&(A.mode<cn||t!==no))&&Mo(e,e.output,e.next_out,d-e.avail_out)?(A.mode=In,dn):(f-=e.avail_in,d-=e.avail_out,e.total_in+=f,e.total_out+=d,A.total+=d,A.wrap&&d&&(e.adler=A.check=A.flags?IA(A.check,r,d,e.next_out-d):me(A.check,r,d,e.next_out-d)),e.data_type=A.bits+(A.last?64:0)+(A.mode===bA?128:0)+(A.mode===Pe||A.mode===gn?256:0),(f===0&&d===0||t===no)&&h===OA&&(h=bi),h)}function Lo(e){if(!e||!e.state)return CA;var t=e.state;return t.window&&(t.window=null),e.state=null,OA}function Jo(e,t){var A;return!e||!e.state||(A=e.state,(A.wrap&2)===0)?CA:(A.head=t,t.done=!1,OA)}function Cn(e,t){var A=t.length,n,r,o;return!e||!e.state||(n=e.state,n.wrap!==0&&n.mode!==ze)?CA:n.mode===ze&&(r=1,r=me(r,t,A,0),r!==n.check)?Do:(o=Mo(e,t,A,A),o?(n.mode=In,dn):(n.havedict=1,OA))}var je={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 Qn(){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 Bn=Object.prototype.toString,hn=class e{constructor(t){if(!(this instanceof e))return new e(t);this.options=Pr({chunkSize:16384,windowBits:0,to:""},t||{});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&&!(t&&t.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 Qn,this.strm.avail_out=0;var n=Ro(this.strm,A.windowBits);if(n!==FA)throw new Error(je[n]);if(this.header=new rn,Jo(this.strm,this.header),A.dictionary&&(typeof A.dictionary=="string"?A.dictionary=nn(A.dictionary):Bn.call(A.dictionary)==="[object ArrayBuffer]"&&(A.dictionary=new Uint8Array(A.dictionary)),A.raw&&(n=Cn(this.strm,A.dictionary),n!==FA)))throw new Error(je[n])}push(t,A){var n=this.strm,r=this.options.chunkSize,o=this.options.dictionary,s,a,c,i,g,f,d=!1;if(this.ended)return!1;a=A===~~A?A:A===!0?Ee:An,typeof t=="string"?n.input=jr(t):Bn.call(t)==="[object ArrayBuffer]"?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=yA(r),n.next_out=0,n.avail_out=r),s=_o(n,An),s===Or&&o&&(typeof o=="string"?f=nn(o):Bn.call(o)==="[object ArrayBuffer]"?f=new Uint8Array(o):f=o,s=Cn(this.strm,f)),s===qr&&d===!0&&(s=FA,d=!1),s!==ue&&s!==FA)return this.onEnd(s),this.ended=!0,!1;n.next_out&&(n.avail_out===0||s===ue||n.avail_in===0&&(a===Ee||a===en))&&(this.options.to==="string"?(c=Wr(n.output,n.next_out),i=n.next_out-c,g=Xr(n.output,c),n.next_out=i,n.avail_out=r-i,i&&pA(n.output,n.output,c,i,0),this.onData(g)):this.onData(Ke(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(d=!0)}while((n.avail_in>0||n.avail_out===0)&&s!==ue);return s===ue&&(a=Ee),a===Ee?(s=Lo(this.strm),this.onEnd(s),this.ended=!0,s===FA):(a===en&&(this.onEnd(FA),n.avail_out=0),!0)}onData(t){this.chunks.push(t)}onEnd(t){t===FA&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Te(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg}};function _i(e,t){var A=new hn(t);if(A.push(e,!0),A.err)throw A.msg||je[A.err];return A.result}var Go=_i;var Ji=18,Yo=8,Uo=Ji+Yo;function En(e,t,A){let n=[],r=0,o=t;for(;r+Uo<=e.length&&!(e[r]!==31||e[r+1]!==139||e[r+2]!==8||e[r+3]!==4||e[r+10]!==6||e[r+12]!==66||e[r+13]!==67);){let s=(e[r+16]|e[r+17]<<8)+1;if(s<Uo||r+s>e.length)break;let a=r+s-Yo,c=(e[a+4]|e[a+5]<<8|e[a+6]<<16|e[a+7]<<24)>>>0;if(c>65536||(n.push({inputOffset:r,compressedSize:s,decompressedSize:c,filePosition:o}),o>=A))break;r+=s,o+=s}return n}var MA={};MA.d=(e,t)=>{if(Array.isArray(t))for(var A=0;A<t.length;){var n=t[A++],r=t[A++];MA.o(e,n)?r===0&&A++:r===0?Object.defineProperty(e,n,{enumerable:!0,value:t[A++]}):Object.defineProperty(e,n,{enumerable:!0,get:r})}else for(var n in t)MA.o(t,n)&&!MA.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})};MA.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);MA.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var pn={};MA.r(pn);MA.d(pn,{ChunkSliceResult:()=>oe,__wbg_Error_92b29b0548f8b746:()=>Ui,__wbg___wbindgen_throw_344f42d3211c4765:()=>Yi,__wbg_set_wasm:()=>jo,decompress_all:()=>Ko,decompress_chunk_slice:()=>Oo});var Gi="data:application/wasm;base64,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AyABNgIEIAMgADYCACADQRmtQiCGIAOthDcDCEGWgcAAIANBCGogAhAwAAs8AAJAIAAoAgBBf0YNACABIAAoAgQgACgCCBBLDwsgASgCACABKAIEIAAoAgwoAgAiACgCACAAKAIEEAwLNgACQCACQX9GDQAgACACIAEoAhARBQBFDQBBAQ8LAkAgAw0AQQAPCyAAIAMgBCABKAIMEQcACzIAAkACQCABaUEBRw0AIABBgICAgHggAWtLDQAgAEUNARBpIAAgARBXIgENAQsACyABCzUBAX8CQCAARQ0AAkAgASgCACICRQ0AIAAgAhECAAsgASgCBCICRQ0AIAAgAiABKAIIEFELCysBAX8jAEEQayIBJAAgAUEYrUIghiABQQ9qrYQ3AwBBloHAACABIAAQMAALKgEBfyMAQRBrIgMkACADIAI2AgwgAyABNgIIIAMgADYCBCADQQRqEGMACy0BAX8jAEEQayIBJAAgASAAKQIANwIIIAFBCGpBwJPAACAAKAIIQQFBABAVAAssAgF/AX4jAEEQayIBJAAgACkCACECIAEgADYCDCABIAI3AgQgAUEEahBlAAsjAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkEIahBkAAslAQF/AkBBvIjAABAsIgBFDQAgAA8LQfCHwABBOkGsiMAAEDcACyAAAkAgASgCAEUNACAAQYiWwAA2AgQgACABNgIADwsACx4BAX8CQCAAKAIAIgJFDQAgASACIAAoAgQQSw8LAAsbAQF/EGkgAEEEakEEEFciASAANgIAIAFBBGoLHgEBfwJAIAAoAgAiAUEBSA0AIAAoAgQgAUEBEFELCx4AIAAoAgAgACgCBEEAKAKgnUAiAEEEIAAbEQQAAAscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEFELCxcAAkAgAUEJSQ0AIAEgABAODwsgABACCxUAIABBfGoiACAAKAIAQQRqQQQQUQsUAAJAIABFDQAgACABEF4ACxBUAAsRACAAIAFBAXRBAXIgAhAwAAsSAAJAIAFFDQAgACABIAIQUQsLEgAgACABIAIgAyAEQQAgBRADCxUAAkAgAEUNACAAIAAoAqhaEQIACwsaACAAQQApAsSUQDcCCCAAQQApAryUQDcCAAsaACAAQQApArSUQDcCCCAAQQApAqyUQDcCAAsWACAAKAIAIAEgAiAAKAIEKAIMEQcACw0AIAAgASACIAMQBg8LFABBACAANgL0nEBBAEEBNgLwnEALEwAgAEGIlsAANgIEIAAgATYCAAsQACABIAAoAgAgACgCBBBLCxAAIAEgACgCACAAKAIEEAsLCwAgACABIAIQKQ8LCgAgACABEGgaAAsPACAAQdyTwAAgASACEAwLEQBB4JbAAEEjQfSWwAAQMAALDgBBzJjAAEEzIAAQMAALCwAgACMAaiQAIwALCQAgACABEEIPCwkAIAAgARAtDwsJACAAIAEQYAALDABB54XAAEEbEFkACw0AQYKGwABBzwAQWQALCQAgASAAEDoACwwAIAAgASkCADcDAAsJACABIAAQXAALDQAgAUHlmMAAQRgQCwsIACAAIAEQAAsIACAAIAEQAQsJACAAKAIAEEgLBwAgABA4AAsHACAAEEAACwcAIAAQJQALCwBBAEEBOgC0nUALCQAgAEEANgIACwUAEGoACwMADwsDAAALAgALC/QcAgBBgIDAAAv9GBZzbGljZSBpbmRleCBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwAAScmFuZ2Ugc3RhcnQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAL3J1c3RjL2I5NDAwODRkN2ViNmEyOTllYjRiZmViOGUzNDkwMWJjMDUxZTdhYzQvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL3J3bG9jay9ub190aHJlYWRzLnJzAC9jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMjYvc3JjL2V4dGVybnJlZi5ycwAvcnVzdGMvYjk0MDA4NGQ3ZWI2YTI5OWViNGJmZWI4ZTM0OTAxYmMwNTFlN2FjNC9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xNC9zcmMvZGxtYWxsb2MucnMAL2NhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9saWJkZWZsYXRlci0xLjI1LjIvc3JjL2xpYi5ycwAVAhAACgAAABwAAAAkAAAAFQIQAAoAAADCAAAAKQAAABUCEAAKAAAAtgAAACcAAAAVAhAACgAAAHEAAAAcAAAAFQIQAAoAAABtAAAAQQAAAGRlY29tcHJlc3Npb24gZmFpbGVkaW52YWxpZCBiZ3pmIGhlYWRlcgAVAhAACgAAAEwAAAA9AAAAYXR0ZW1wdGVkIHRvIHRha2Ugb3duZXJzaGlwIG9mIFJ1c3QgdmFsdWUgd2hpbGUgaXQgd2FzIGJvcnJvd2VkbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdAAAAPYAEABaAAAAhAAAABEAAAD2ABAAWgAAAJIAAAARAAAAbGliZGVmbGF0ZV9kZWZsYXRlX2RlY29tcHJlc3MgcmV0dXJuZWQgYW4gdW5rbm93biBlcnJvciB0eXBlOiB0aGlzIGlzIGFuIGludGVybmFsIGJ1ZyB0aGF0ICoqbXVzdCoqIGJlIGZpeGVkzQEQAFIAAAANAQAAFQAAAGxpYmRlZmxhdGVfYWxsb2NfZGVjb21wcmVzc29yIHJldHVybmVkIE5VTEw6IG91dCBvZiBtZW1vcnkAAM0BEABSAAAAnQAAABEAAAAMAAAAAgAAAAMAAAAAAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAAAAAAAEAAAACAAAAAwAAAAQAAQAFAAEABwACAAkAAgANAAMAEQADABkABAAhAAQAMQAFAEEABQBhAAYAgQAGAMEABwABAQcAgQEIAAECCAABAwkAAQQJAAEGCgABCAoAAQwLAAEQCwABGAwAASAMAAEwDQABQA0AAWANAAFgDQABYAAAAIAAAAGAAAACgAAAA4AAAASAAAAFgAAABoAAAAeAAAAIgAAACYAAAAqAAAALgAAADIAAAA2AAAAOgAAAD4AAABCAAAARgAAAEoAAABOAAAAUgAAAFYAAABaAAAAXgAAAGIAAABmAAAAagAAAG4AAAByAAAAdgAAAHoAAAB+AAAAggAAAIYAAACKAAAAjgAAAJIAAACWAAAAmgAAAJ4AAACiAAAApgAAAKoAAACuAAAAsgAAALYAAAC6AAAAvgAAAMIAAADGAAAAygAAAM4AAADSAAAA1gAAANoAAADeAAAA4gAAAOYAAADqAAAA7gAAAPIAAAD2AAAA+gAAAP4AAAECAAABBgAAAQoAAAEOAAABEgAAARYAAAEaAAABHgAAASIAAAEmAAABKgAAAS4AAAEyAAABNgAAAToAAAE+AAABQgAAAUYAAAFKAAABTgAAAVIAAAFWAAABWgAAAV4AAAFiAAABZgAAAWoAAAFuAAABcgAAAXYAAAF6AAABfgAAAYIAAAGGAAABigAAAY4AAAGSAAABlgAAAZoAAAGeAAABogAAAaYAAAGqAAABrgAAAbIAAAG2AAABugAAAb4AAAHCAAABxgAAAcoAAAHOAAAB0gAAAdYAAAHaAAAB3gAAAeIAAAHmAAAB6gAAAe4AAAHyAAAB9gAAAfoAAAH+AAACAgAAAgYAAAIKAAACDgAAAhIAAAIWAAACGgAAAh4AAAIiAAACJgAAAioAAAIuAAACMgAAAjYAAAI6AAACPgAAAkIAAAJGAAACSgAAAk4AAAJSAAACVgAAAloAAAJeAAACYgAAAmYAAAJqAAACbgAAAnIAAAJ2AAACegAAAn4AAAKCAAAChgAAAooAAAKOAAACkgAAApYAAAKaAAACngAAAqIAAAKmAAACqgAAAq4AAAKyAAACtgAAAroAAAK+AAACwgAAAsYAAALKAAACzgAAAtIAAALWAAAC2gAAAt4AAALiAAAC5gAAAuoAAALuAAAC8gAAAvYAAAL6AAAC/gAAAwIAAAMGAAADCgAAAw4AAAMSAAADFgAAAxoAAAMeAAADIgAAAyYAAAMqAAADLgAAAzIAAAM2AAADOgAAAz4AAANCAAADRgAAA0oAAANOAAADUgAAA1YAAANaAAADXgAAA2IAAANmAAADagAAA24AAANyAAADdgAAA3oAAAN+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAA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",oe=class e{static __wrap(t){let A=Object.create(e.prototype);return A.__wbg_ptr=t,Ho.register(A,A.__wbg_ptr,A),A}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,Ho.unregister(this),t}free(){let t=this.__destroy_into_raw();Z.__wbg_chunksliceresult_free(t,0)}take_buffer(){try{let r=Z.__wbindgen_add_to_stack_pointer(-16);Z.chunksliceresult_take_buffer(r,this.__wbg_ptr);var t=lA().getInt32(r+0,!0),A=lA().getInt32(r+4,!0),n=qo(t,A).slice();return Z.__wbindgen_export(t,A*1,1),n}finally{Z.__wbindgen_add_to_stack_pointer(16)}}take_cpositions(){try{let r=Z.__wbindgen_add_to_stack_pointer(-16);Z.chunksliceresult_take_cpositions(r,this.__wbg_ptr);var t=lA().getInt32(r+0,!0),A=lA().getInt32(r+4,!0),n=To(t,A).slice();return Z.__wbindgen_export(t,A*8,8),n}finally{Z.__wbindgen_add_to_stack_pointer(16)}}take_dpositions(){try{let r=Z.__wbindgen_add_to_stack_pointer(-16);Z.chunksliceresult_take_dpositions(r,this.__wbg_ptr);var t=lA().getInt32(r+0,!0),A=lA().getInt32(r+4,!0),n=To(t,A).slice();return Z.__wbindgen_export(t,A*8,8),n}finally{Z.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(oe.prototype[Symbol.dispose]=oe.prototype.free);function Ko(e){try{let s=Z.__wbindgen_add_to_stack_pointer(-16),a=Zo(e,Z.__wbindgen_export2),c=mn;Z.decompress_all(s,a,c);var t=lA().getInt32(s+0,!0),A=lA().getInt32(s+4,!0),n=lA().getInt32(s+8,!0),r=lA().getInt32(s+12,!0);if(r)throw zo(n);var o=qo(t,A).slice();return Z.__wbindgen_export(t,A*1,1),o}finally{Z.__wbindgen_add_to_stack_pointer(16)}}function Oo(e,t,A,n,r){try{let c=Z.__wbindgen_add_to_stack_pointer(-16),i=Zo(e,Z.__wbindgen_export2),g=mn;Z.decompress_chunk_slice(c,i,g,t,A,n,r);var o=lA().getInt32(c+0,!0),s=lA().getInt32(c+4,!0),a=lA().getInt32(c+8,!0);if(a)throw zo(s);return oe.__wrap(o)}finally{Z.__wbindgen_add_to_stack_pointer(16)}}function Ui(e,t){let A=Error(Po(e,t));return Hi(A)}function Yi(e,t){throw new Error(Po(e,t))}var Ho=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>Z.__wbg_chunksliceresult_free(e,1));function Hi(e){ke===NA.length&&NA.push(NA.length+1);let t=ke;return ke=NA[t],NA[t]=e,t}function Ti(e){e<1028||(NA[e]=ke,ke=e)}function To(e,t){return e=e>>>0,Ki().subarray(e/8,e/8+t)}function qo(e,t){return e=e>>>0,wn().subarray(e/1,e/1+t)}var re=null;function lA(){return(re===null||re.buffer.detached===!0||re.buffer.detached===void 0&&re.buffer!==Z.memory.buffer)&&(re=new DataView(Z.memory.buffer)),re}var Xe=null;function Ki(){return(Xe===null||Xe.byteLength===0)&&(Xe=new Float64Array(Z.memory.buffer)),Xe}function Po(e,t){return Pi(e>>>0,t)}var We=null;function wn(){return(We===null||We.byteLength===0)&&(We=new Uint8Array(Z.memory.buffer)),We}function Oi(e){return NA[e]}var NA=new Array(1024).fill(void 0);NA.push(void 0,null,!0,!1);var ke=NA.length;function Zo(e,t){let A=t(e.length*1,1)>>>0;return wn().set(e,A/1),mn=e.length,A}function zo(e){let t=Oi(e);return Ti(e),t}var Ve=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Ve.decode();var qi=2146435072,un=0;function Pi(e,t){return un+=t,un>=qi&&(Ve=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Ve.decode(),un=t),Ve.decode(wn().subarray(e,e+t).slice())}var mn=0,Z;function jo(e){Z=e}var qA=null,$e=null;async function At(){return qA||($e||($e=(async()=>{let t=await(await fetch(Gi)).arrayBuffer(),{instance:A}=await WebAssembly.instantiate(t,{"./bgzf_wasm_bg.js":pn});return qA=A.exports,jo(qA),qA})().catch(e=>{throw $e=null,e})),$e)}async function et(e){return qA||await At(),Ko(e)}async function Xo(e,t,A,n,r){qA||await At();let o=Oo(e,t,A,n,r),s=o.take_buffer(),a=o.take_cpositions(),c=o.take_dpositions();return o.free(),{buffer:s,cpositions:a,dpositions:c}}var tt=8*1024*1024;function kn(e){let t=0;for(let A of e)t+=A.compressedSize+A.decompressedSize;return t}function Zi(e,t=0,A=e.length){let n=[],r=t,o=0;for(let s=t;s<A;s++){let a=e[s],c=a.compressedSize+a.decompressedSize;s>r&&o+c>tt&&(n.push([r,s]),r=s,o=0),o+=c}return r<A&&n.push([r,A]),n}function zi(e,t,A){let n=e[t],r=e[A-1];return{inputOffset:n.inputOffset,inputLength:r.inputOffset+r.compressedSize-n.inputOffset}}function yn(e,t){let A=t.at(-1);return e.subarray(0,A?A.inputOffset+A.compressedSize:65536)}var ji={decompress_all:3,__wbindgen_add_to_stack_pointer:1,__wbindgen_export:3,__wbindgen_export2:2};function Xi(e){return Object.entries(ji).every(([A,n])=>{let r=e[A];return typeof r=="function"&&r.length===n})&&e.memory instanceof WebAssembly.Memory?e:void 0}async function Wi(e,t,A){let n=Xi(await At());if(n){let o=n.__wbindgen_add_to_stack_pointer(-16);try{let s=n.__wbindgen_export2(e.length,1)>>>0;new Uint8Array(n.memory.buffer).set(e,s),n.decompress_all(o,s,e.length);let a=new DataView(n.memory.buffer);if(a.getInt32(o+12,!0)===0){let c=a.getUint32(o,!0),i=a.getUint32(o+4,!0);return t.set(new Uint8Array(n.memory.buffer,c,i),A),n.__wbindgen_export(c,i,1),i}}finally{n.__wbindgen_add_to_stack_pointer(16)}}let r=await et(e);return t.set(r,A),r.length}function $i(e,t,A,n,r){let o=0;for(let s=A;s<n;s++){let a=t[s].decompressedSize;r[s]=e.subarray(o,o+a),o+=a}}async function bn(e,t){let A=0;for(let o of t)A+=o.decompressedSize;let n=new Uint8Array(A),r=0;for(let[o,s]of Zi(t)){let{inputOffset:a,inputLength:c}=zi(t,o,s);r+=await Wi(e.subarray(a,a+c),n,r)}return n}async function Wo(e,t){let A=new Array(t.length);return $i(await bn(e,t),t,0,t.length,A),{blocks:A}}var Vi=26;function Vo(e){return e[0]===31&&e[1]===139}function Aa(e){return e.length>=Vi&&Vo(e)&&e[2]===8&&e[3]===4&&e[10]===6&&e[12]===66&&e[13]===67}function As(e){return e instanceof Error?e.message:`${e}`}async function $o(e){if(typeof DecompressionStream<"u"){let t=new Blob([e]).stream().pipeThrough(new DecompressionStream("gzip"));return new Uint8Array(await new Response(t).arrayBuffer())}else return Go(e,void 0)}function es(e){return As(e).includes("invalid gzip header")?new Error("problem decompressing block: incorrect gzip header check",{cause:e}):e}async function PA(e){if(e.length===0)return new Uint8Array(0);if(!Aa(e)){if(Vo(e))return $o(e);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}let t=En(e,0,1/0);try{return kn(t)>tt?await bn(e,t):await et(yn(e,t))}catch(A){if(As(A).includes("invalid bgzf header"))return $o(e);throw es(A)}}function ea(e,t,A,n){let r=[],o=[],s=[],a=A.dataPosition;for(let c=0;c<e.length;c++){let i=e[c],g=t[c],f=g.filePosition>=n.blockPosition;r.push(g.filePosition),o.push(a);let d=c===0?A.dataPosition:0,l=f?Math.min(n.dataPosition+1,i.length):i.length;if(d<l&&s.push(i.subarray(d,l)),a+=Math.max(0,i.length-d),f){r.push(g.filePosition+g.compressedSize),o.push(a);break}}return{slices:s,cpositions:Float64Array.from(r),dpositions:Float64Array.from(o)}}function ta(e){let t=[],A;for(let n of e)A?.buffer===n.buffer&&A.byteOffset+A.length===n.byteOffset?A=new Uint8Array(A.buffer,A.byteOffset,A.length+n.length):(A&&t.push(A),A=n);return A&&t.push(A),t}async function Nn(e,t,A){let{minv:n,maxv:r}=t,o=En(e,n.blockPosition,r.blockPosition),s=await ra(e,o,A);if(s){let{slices:g,cpositions:f,dpositions:d}=ea(s,o,n,r);return{segments:ta(g),cpositions:f,dpositions:d}}let{buffer:a,cpositions:c,dpositions:i}=await oa(e,o,t);return{segments:[a],cpositions:c,dpositions:i}}var ts=4e5;function na(e){let t=0;for(let A of e)t+=A.decompressedSize;return t}async function ra(e,t,A){if(A&&na(t)>=ts)return(await A.decompressBlocks(e,t)).blocks;if(kn(t)>tt)return(await Wo(e,t)).blocks}async function oa(e,t,{minv:A,maxv:n}){try{let r=await Xo(yn(e,t),A.blockPosition,A.dataPosition,n.blockPosition,n.dataPosition);return{buffer:r.buffer,cpositions:r.cpositions,dpositions:r.dpositions}}catch(r){throw es(r)}}var se=7,oA=class extends Error{constructor(){super(...arguments),this.name="WalkFormatError"}},sa=new TextDecoder,ia=new Map([["tile",["ref","nodes","route","walk","abridged"]],["departures",["departure"]],["detail",["nodes","route","walk"]]]);async function xn(e,t){let A=await PA(e).then(n=>sa.decode(n),n=>{throw new oA(`${t} is not whole gzip members`,{cause:n})});if(!A.endsWith(`
3
+ `))throw new oA(`${t} ends partway through a line: ${JSON.stringify(A.slice(-40))}`);return A.split(`
4
+ `).filter(n=>n!=="")}function Sn(e){return`The unit at byte ${e.offset} of the walk file, ${e.refName}'s ${e.kind} ${e.name} over [${e.start}, ${e.end}) as its table lists it,`}function aa(e,t){let[A,n,r,,o,s]=e.split(" ",6);return[A,n,r,o,s].join(" ")===["#unit",t,"0","table","."].join(" ")}function ga(e,t,A){var n;let r=["#unit",e.refName,e.start,e.end,e.kind,e.name].join(" "),o=ia.get(e.kind),s=A.find(a=>{let[c,,,i=""]=a.split(" ",4);return o!==void 0&&(c!==e.refName||!o.includes(i))});if(t?.split(" ",6).join(" ")!==r)throw new oA(`${Sn(e)} starts ${JSON.stringify((n=t?.slice(0,80))!==null&&n!==void 0?n:"")}`);if(s!==void 0)throw new oA(`${Sn(e)} holds a row that is not one of ${e.refName}'s ${o?.join(", ")} rows: ${JSON.stringify(s.slice(0,80))}`)}function ns(e,t){let A=e.find(n=>n.startsWith(`${t}:i:`));return A===void 0?void 0:+A.slice(t.length+3)}function ca(e){return new oA(e>se?`This walk file is format ${e}; this version of @jbrowse/graph-walks reads format ${se}, so update the viewer, or @jbrowse/graph-walks, to one that reads format ${e}`:`This walk file is format ${e}; @jbrowse/graph-walks reads format ${se}, so rebuild it with gfa-to-tabix 4.0 or later`)}function fa(e){var t;let[A="",...n]=e.split(`
5
+ `).filter(c=>c!==""),r=A.split(" ");if(r[0]!=="#walks")throw new oA(`This is not a walk file's directory: its first line starts ${JSON.stringify(A.slice(0,40))}, not #walks`);let o=(t=ns(r,"format"))!==null&&t!==void 0?t:1;if(o!==se)throw ca(o);let s,a=new Map;for(let c of n){let[i="",g,f]=c.split(" "),d={offset:Number(g),length:Number(f)};if(!Number.isSafeInteger(d.offset)||!Number.isSafeInteger(d.length))throw new oA(`A walk file directory line holds no byte range: ${c}`);i==="#header"?s=d:a.set(i,d)}if(!s)throw new oA("The walk file directory has no #header line");return{walks:r.filter(c=>!c.startsWith("bytes:i:")),bytes:ns(r,"bytes"),header:s,tables:a}}function ie(e){let t;return()=>{if(!t){let A=e();A.catch(()=>{t===A&&(t=void 0)}),t=A}return t}}function be(e,t){return t?new Promise((A,n)=>{t.throwIfAborted();let r=()=>{n(t.reason instanceof Error?t.reason:new Error(String(t.reason)))};t.addEventListener("abort",r,{once:!0}),e.then(A,n).finally(()=>{t.removeEventListener("abort",r)})}):e}var la=/\.walks\.bed\.gz(?=$|[?#])/,ye=class{constructor(t,A){this.tableReads=new Map,this.readDirectory=ie(async()=>{var n;try{return fa(await this.directory.readFile("utf8"))}catch(r){throw!(r instanceof oA)&&la.test((n=this.data.source)!==null&&n!==void 0?n:"")?new oA(`${this.data.source} names a walk file of format 6 or earlier, which has no .idx directory; @jbrowse/graph-walks reads format ${se}, so rebuild it with gfa-to-tabix 4.0 or later`,{cause:r}):r}}),this.header=ie(async()=>{var n,r;let o=await this.readDirectory(),{offset:s,length:a}=o.header,c=await xn(await this.data.read(a,s),"The header unit"),{size:i}=await this.data.stat();if(c[0]!==o.walks.join(" "))throw new oA(`The walk file's directory does not match its data: the directory states ${o.walks.join(" ")}, the data ${(n=c[0])!==null&&n!==void 0?n:"no #walks line"}`);if(i>0&&o.bytes!==i)throw new oA(`The walk file's directory does not match its data: the directory states ${(r=o.bytes)!==null&&r!==void 0?r:"no"} bytes, the data holds ${i}`);return c}),this.data=t,this.directory=A}async sequences(){return await this.header(),[...(await this.readDirectory()).tables.keys()]}async units(t){let A=this.tableReads.get(t);return A||(A=ie(async()=>{let n=(await this.readDirectory()).tables.get(t),[r,o]=await Promise.allSettled([this.header(),n?this.table(t,n):[]]);if(r.status==="rejected")throw r.reason;if(o.status==="rejected")throw o.reason;return o.value}),this.tableReads.set(t,A)),A()}async table(t,{offset:A,length:n}){let[r="",...o]=await xn(await this.data.read(n,A),`${t}'s table`);if(!aa(r,t))throw new oA(`${t}'s table, at byte ${A} of the walk file, starts ${JSON.stringify(r.slice(0,80))}`);return o.map(s=>{let[a,c="",i,g,f="",d="",l,I]=s.split(" "),E={refName:c,start:Number(i),end:Number(g),kind:f,name:d,offset:Number(l),length:Number(I)};if(a!=="#entry"||c!==t||![E.start,E.end,E.offset,E.length].every(Number.isSafeInteger))throw new oA(`${t}'s unit table holds ${s}`);return E})}async read(t,A){let n=[...new Map(t.map(s=>[s.offset,s])).values()].filter(s=>s.length>0).sort((s,a)=>s.offset-a.offset),r=[];for(let s of n){let a=r.at(-1),c=a?.at(-1);a&&c&&c.offset+c.length===s.offset?a.push(s):r.push([s])}let o=new Map;return await Promise.all(r.map(async s=>{let a=s[0],c=s.at(-1),i=c.offset+c.length-a.offset,g=await this.data.read(i,a.offset,{signal:A});for(let f of s){let d=f.offset-a.offset,[l,...I]=await xn(g.subarray(d,d+f.length),Sn(f));ga(f,l,I),o.set(f.offset,I)}})),t.map(s=>{var a;return(a=o.get(s.offset))!==null&&a!==void 0?a:[]})}};var da=8,rs=1e3,Ia=16,Ca=8,rt={stepBudget:4e6,byteBudget:8e6,departureByteBudget:2e6,attachBp:Ae},ot=class extends Error{constructor(t,A){super(`Too many departures from the reference over this window to read (${le(t)} against a budget of ${le(A)}). A collapsed repeat usually causes this: haplotypes hop between its copies, and each hop is a departure`),this.name="DepartureReadError",this.bytes=t,this.limit=A}};async function Qa(e,t,A,n,r){let o=[],s=()=>{if(o.length<e.length&&!A.aborted){let a=n(e[o.length]);o.push(a),a.then(s,()=>{})}};for(let a=0;a<t;a++)s();for(let a=0;a<e.length;a++)A.throwIfAborted(),r(e[a],await o[a])}var nt=(e,t)=>e.length>0&&e.start<t.end&&e.end>t.start,vn=e=>e.reduce((t,A)=>t+A.length,0),os=(e,t)=>({start:Math.max(0,e.start-t),end:e.end+t});function Ba(e,t){return e.filter(A=>A.kind==="tile"&&A.length>0&&t.includes(Number(A.name)))}var ha=e=>e.replace(/(?=$|[?#])/,".idx");function Ea(e,t,A){let n=[],r=new Map;for(let o of new Set(e)){let s=o.split(" ");if(s[3]==="departure"&&+s[1]<t.end&&+s[2]>t.start){let a=kt(s);(A===void 0||A(a.name))&&(n.push(a),r.set(a,ar(s)))}}return{records:n,ownTiles:r}}var Ne=class e{constructor(t){this.readHeader=ie(async()=>{let A=bt(await this.file.header()),{tile:n}=A;if(n===void 0)throw new oA("The walk file's #walks line states no tile:i:");return{...A,tile:n}}),this.readLookup=ie(async()=>Be(await this.file.sequences())),this.file=t}static open(t,A=n=>new BA(n)){return e.fromFilehandles({data:A(t),directory:A(ha(t))})}static fromFilehandles({data:t,directory:A}){return new e(new ye(t,A))}header(t={}){return be(this.readHeader(),t.signal)}referenceSequences(t={}){return be(this.file.sequences(),t.signal)}async sequenceFor(t,A,n={}){let r=await be(this.readLookup(),n.signal);return he(r,t,A)}units(t,A={}){return be(this.file.units(t),A.signal)}async sequenceLength(t,A={}){return(await this.units(t,A)).reduce((r,o)=>o.kind==="tile"?Math.max(r,o.end):r,0)}async bytesFor(t,A,n={}){var r;uA(t,A.start,A.end);let o=os(A,(r=n.context)!==null&&r!==void 0?r:rs),s=await this.units(t,n);return vn(s.filter(a=>(a.kind==="tile"||a.kind==="departures")&&nt(a,o)))}async referenceNodes(t,A,n={}){uA(t,A.start,A.end);let r=(await this.units(t,n)).filter(s=>s.kind==="tile"&&nt(s,A)),o=await this.file.read(r,n.signal);return ut(o.flat().map(s=>s.split(" "))).filter(s=>s.refName===t&&s.end>A.start&&s.start<A.end).sort((s,a)=>s.start-a.start||s.end-a.end)}async cut(t,A,n={}){var r,o,s;let{signal:a,keep:c,context:i=rs,stepBudget:g=rt.stepBudget,byteBudget:f=rt.byteBudget,departureByteBudget:d=rt.departureByteBudget,attachBp:l=Ae,attachFetches:I=Ca,links:E=!0,contained:Q=!1,nodeLimit:u=1/0,expand:p}=n;uA(t,A.start,A.end);let[N,C]=await Promise.all([this.header({signal:a}),this.units(t,{signal:a})]),{tile:S}=N,x=os(A,i),m=C.filter(b=>b.kind==="tile"&&nt(b,x)),h=C.filter(b=>b.kind==="departures"&&nt(b,x));if(Number.isFinite(f)){let b=Rt(M=>vn(m.filter(F=>F.start<M)),f,A,S,n.budgetNames);if(b)throw b}let w=vn(h);if(w>d)throw new ot(w,d);let y=new AbortController,_=()=>{y.abort(a?.reason)};a?.throwIfAborted(),a?.addEventListener("abort",_,{once:!0});let Y=[],P=[],T=new fe({refName:t,start:A.start,end:A.end,context:i,sequences:n.sequences}),B=new Map,k=(b,M)=>{var F;return((F=B.get(b.offset))===null||F===void 0?void 0:F.some(G=>G(M)))===!0},v=[],L=new Set,K={contained:Q,start:A.start-i,end:A.end+i},U=c!==void 0,X=new Map(C.filter(b=>b.kind==="detail").map(b=>[b.name,b])),O=[],H=new Set,V=(b,M)=>{for(let[F,G]of b.nodes)T.placeNode(F,G);for(let{id:F,...G}of b.revisits)T.placeNode(F,G);T.addSequences(b.sequences),T.addChunk(b.chunk);for(let F of b.ends)v.push(F);if(Number.isFinite(u)){St(b,T.nodes,K,L),L.size>u&&(L.clear(),St({nodes:T.nodes,rows:Y},T.nodes,K,L));let F=_e(L.size,u,A,U,M);if(F)throw F}},AA=(b,M,F,G)=>{var J,q;let sA=(J=G??c)!==null&&J!==void 0?J:(()=>!0),tA=(q=B.get(b.offset))!==null&&q!==void 0?q:[];B.set(b.offset,[...tA,sA]);let z=M.map(j=>j.split(" ")),iA=Et(z,Number(b.name),j=>sA(j)&&!tA.some(aA=>aA(j)),n.sequences),fA;for(let j of iA.rows)if(j.abridged&&p?.(j.name)){let{name:aA}=j.abridged.detail;H.has(aA)||(H.add(aA),fA??(fA=nr(z)),O.push({ref:fA,row:j,into:F}))}else F.push(j);V(iA,b.end)},gA=async({row:b})=>{let{name:M}=b.abridged.detail,F=X.get(M);if(!F)throw new oA(`${t}'s unit table lists no detail unit ${M}, which an abridged row of ${b.name} names`);let[G=[]]=await this.file.read([F],y.signal);return G.map(J=>J.split(" "))},nA=({ref:b,row:M,into:F},G)=>{let J=Et(G,M.chunkStart,q=>q===M.name,n.sequences,b);for(let q of J.rows)q.name===M.name&&F.push(q);V(J,M.chunkStart+S)},cA=async()=>{let b=O;if(O=[],await Qa(b,Ia,y.signal,gA,nA),E)for(let[M,F]of or(v))T.addLinkEnds(M,F)},W;try{let b=await this.file.read([...m,...h],y.signal);m.forEach((tA,z)=>{AA(tA,b[z],Y)});let{records:M,ownTiles:F}=Ea(b.slice(m.length).flat(),x,c);await cA();let G=Dt(Y,g,da,A,S,U,n.budgetNames);if(G)throw G;let J=()=>xt(Me(Y),T.nodes,t,M,{contained:Q,context:i,attachBp:l,squeeze:pt(N.holes,t),drawn:K,attach:Me(P)});W=J();let q=new Map;for(let{departure:tA}of W.unattached){let{name:z}=tA;for(let iA of Ba(C,(r=F.get(tA))!==null&&r!==void 0?r:[]))k(iA,z)||q.set(iA,((o=q.get(iA))!==null&&o!==void 0?o:new Set).add(z))}let sA=[...q].slice(0,I);if(sA.length>0){let tA=await this.file.read(sA.map(([z])=>z),y.signal);sA.forEach(([z,iA],fA)=>{AA(z,tA[fA],P,j=>iA.has(j))}),await cA(),W=J()}}catch(b){throw y.abort(),b}finally{a?.removeEventListener("abort",_)}let wA=(s=Ft(W.fragments,W.departures,g,A,U))!==null&&s!==void 0?s:_e(W.kept.size,u,A,U);if(wA)throw wA;let{kept:mA,fragments:D,departures:R}=W;return{graph:T,kept:mA,fragments:D,departures:R}}async cutRegion(t,A={}){var n;let{haplotypes:r,referenceSample:o,...s}=A,{signal:a}=A,c=await this.header({signal:a}),i=(n=o??c.references[0])!==null&&n!==void 0?n:"",g=await this.sequenceFor(i,t.refName,{signal:a});if(g===void 0){let E=await this.referenceSequences({signal:a});throw new Error(`The walk file has no sequence ${t.refName} on ${i}; it holds ${E.slice(0,5).join(", ")}${E.length>5?", \u2026":""}`)}let{graph:f,kept:d,fragments:l,departures:I}=await this.cut(g,t,{...s,keep:Nt(r,g)});return{tables:f.tables(d,l,I),refName:g,sample:i}}};async function Mc(e,t,A,n,r){return uA(t,A,n),e.getLines(t,A,n,r)}async function ss(e,t,A){for(let{refName:n,start:r,end:o}of t)uA(n,r,o);return e.bytesForRegions(t,A)}function ZA(e){if(e?.aborted)throw Dn(e)}function Dn(e){let t=e.reason;return t===void 0?new DOMException("This operation was aborted","AbortError"):t}function is(e){return typeof e?.addEventListener=="function"}var _A=class{entries=new Map;total=0;settledCount=0;limit;shared;fill;sizeOf;toCacheKey;idleTimeoutMs;sweepTimer;constructor({fill:t,maxSize:A=1/0,sizeOf:n=()=>1,cacheKey:r=a=>String(a),idleTimeoutMs:o=0,budget:s}={}){this.fill=t,this.limit=A,this.shared=s&&{budget:s,membership:s.register(this)},this.sizeOf=n,this.toCacheKey=r,this.idleTimeoutMs=o>0&&Number.isFinite(o)?o:void 0}get size(){return this.entries.size}get totalSize(){return this.total}get maxSize(){return this.limit}set maxSize(t){this.limit=t,this.evict()}waiterCount(t){return this.entries.get(this.toCacheKey(t))?.pending?.signals.size??0}async get(t,A,n){ZA(A);let r=this.toCacheKey(t),o=this.entries.get(r);o&&this.isDoomed(o)&&(this.release(r),o=void 0),o?this.touch(r,o):o=this.start(r,t,n),o.pending&&this.join(o.pending,A);try{return await this.settleFor(o,A)}finally{ZA(A)}}settleFor(t,A){if(!t.pending||!is(A))return t.promise;let n,r=new Promise((s,a)=>{n=a}),o=()=>{n(Dn(A))};return A.addEventListener("abort",o,{once:!0}),Promise.race([t.promise,r]).finally(()=>{A.removeEventListener("abort",o)})}getIfCached(t){let A=this.toCacheKey(t),n=this.entries.get(A);if(n){if(this.isDoomed(n)){this.release(A);return}return this.touch(A,n),n.promise}}has(t){let A=this.entries.get(this.toCacheKey(t));return A!==void 0&&!this.isDoomed(A)}delete(t){this.release(this.toCacheKey(t))}clear(){this.entries.clear(),this.shared?.budget.charge(this.shared.membership,-this.total),this.total=0,this.settledCount=0,this.stopSweep()}touch(t,A){this.entries.delete(t),this.entries.set(t,A),A.lastTouched=Date.now(),A.seq=this.stamp()}stamp(){return this.shared?.budget.nextSeq()??0}isDoomed(t){return t.pending?.controller.signal.aborted===!0}sweepIdle(){let t=this.idleTimeoutMs;if(t===void 0)return;let A=Date.now()-t;for(let[n,r]of this.entries)!r.pending&&r.lastTouched<=A&&this.release(n);this.settledCount===0&&this.stopSweep()}startSweep(){let t=this.idleTimeoutMs;if(t===void 0||this.sweepTimer!==void 0)return;let A=Math.min(2**31-1,Math.max(1e3,Math.floor(t/4))),n=new WeakRef(this),r=setInterval(()=>{let o=n.deref();o?o.sweepIdle():clearInterval(r)},A);this.sweepTimer=r,r.unref?.()}stopSweep(){this.sweepTimer!==void 0&&(clearInterval(this.sweepTimer),this.sweepTimer=void 0)}start(t,A,n){let r=n??(this.fill&&(i=>this.fill(A,i)));if(!r)throw new Error("SharedReadCache needs a fill, either on the cache or on the get() call");let o={signals:new Map,pinned:!1,controller:new AbortController},s={promise:Promise.resolve(r(o.controller.signal)),pending:o,size:0,lastTouched:Date.now(),seq:this.stamp()};this.entries.set(t,s);let a=()=>this.entries.get(t)===s,c=()=>{for(let[i,g]of o.signals)i.removeEventListener("abort",g);s.pending=void 0};return s.promise.then(i=>{let g=a()?this.weigh(i):void 0,f=a();c(),f&&(g===void 0?this.entries.delete(t):(s.lastTouched=Date.now(),s.size=g,this.settledCount++,this.total+=g,this.shared?.budget.charge(this.shared.membership,g),this.startSweep())),this.evict(),this.shared?.budget.evict()},()=>{a()&&this.release(t),c()}),s}weigh(t){try{let A=this.sizeOf(t);return Number.isFinite(A)&&A>=0?A:void 0}catch{return}}join(t,A){if(!is(A))t.pinned=!0;else if(!A.aborted&&!t.signals.has(A)){let n=()=>{t.signals.delete(A),!t.pinned&&t.signals.size===0&&t.controller.abort(A.reason)};t.signals.set(A,n),A.addEventListener("abort",n,{once:!0})}}release(t){let A=this.entries.get(t);A&&(this.entries.delete(t),A.pending||this.settledCount--,this.total-=A.size,this.shared?.budget.charge(this.shared.membership,-A.size))}lruSpare(t=!1){if(!(this.settledCount<=(t?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[t,A]of this.entries){if(this.total<=this.limit||this.settledCount<=1)break;A.pending||this.release(t)}}};var QA=class{minv;maxv;bin;endPosition;constructor(t,A,n,r=A.blockPosition+65536){this.minv=t,this.maxv=A,this.bin=n,this.endPosition=r}toString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}fetchedSize(){return this.endPosition-this.minv.blockPosition}};function Fn(e,t){if(!(t>0))throw new TypeError(`\`${e}\` must be a number greater than 0`)}var xe=class{#A=new Map;#e=new Map;#t;#r;#o;constructor(t){let A=t.maxAge??Number.POSITIVE_INFINITY;Fn("maxSize",t.maxSize),Fn("maxAge",A),this.#t=t.maxSize,this.#r=A,this.#o=t.onEviction}#s(t){let A=this.#o;if(A)for(let[n,r]of t)A(n,r.value)}#n(t,A){return A.expiry!==void 0&&A.expiry<=Date.now()?(this.#o?.(t,A.value),this.delete(t),!0):!1}#a(t,A){return this.#n(t,A)?void 0:A.value}#g(t,A){if(this.#e.delete(t),this.#A.set(t,A),this.#A.size>=this.#t){let n=this.#e;this.#e=this.#A,this.#A=new Map,this.#s(n)}}#c(t){this.#e=new Map(t),this.#A=new Map}*#i(){for(let t of[this.#e,this.#A])for(let A of t)this.#n(...A)||(yield A)}get(t){let A=this.#A.get(t);if(A)return this.#a(t,A);let n=this.#e.get(t);if(n&&!this.#n(t,n))return this.#g(t,n),n.value}set(t,A,{maxAge:n=this.#r}={}){let r={value:A,expiry:n===Number.POSITIVE_INFINITY?void 0:Date.now()+n};return this.#A.has(t)?this.#A.set(t,r):this.#g(t,r),this}has(t){let A=this.#A.get(t)??this.#e.get(t);return A!==void 0&&!this.#n(t,A)}peek(t){let A=this.#A.get(t)??this.#e.get(t);return A?this.#a(t,A):void 0}expiresIn(t){let A=this.#A.get(t)??this.#e.get(t);if(A)return A.expiry===void 0?Number.POSITIVE_INFINITY:A.expiry-Date.now()}delete(t){return this.#A.delete(t)||this.#e.delete(t)}clear(){this.#A.clear(),this.#e.clear()}resize(t){Fn("maxSize",t);let A=[...this.#i()],n=A.length-t;n<0?(this.#A=new Map(A),this.#e=new Map):(this.#s(A.slice(0,n)),this.#c(A.slice(n))),this.#t=t}evict(t=1){if(!(t>0))return;let A=[...this.#i()],n=Math.trunc(Math.min(t,A.length-1));n>0&&(this.#s(A.slice(0,n)),this.#c(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.#r}*entriesAscending(){for(let[t,A]of this.#i())yield[t,A.value]}*entriesDescending(){for(let t of[this.#A,this.#e])for(let[A,n]of[...t].reverse())this.#n(A,n)||(yield[A,n.value])}entries(){return this.entriesAscending()}[Symbol.iterator](){return this.entriesAscending()}*keys(){for(let[t]of this)yield t}*values(){for(let[,t]of this)yield t}forEach(t,A=this){for(let[n,r]of this)t.call(A,r,n,this)}get[Symbol.toStringTag](){return"QuickLRU"}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}};function as(e,t=0){let A=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*4294967296+(A>>>0)}var ae=class{blockPosition;dataPosition;constructor(t,A){this.blockPosition=t,this.dataPosition=A}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(t){return this.blockPosition-t.blockPosition||this.dataPosition-t.dataPosition}};function LA(e,t=0){return new ae(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}function st(e,t){let A=e.length;if(A===0)return e;let n;if(t){let a=t.blockPosition,c=t.dataPosition;n=[];for(let i=0;i<A;i++){let g=e[i];(g.maxv.blockPosition-a||g.maxv.dataPosition-c)>0&&n.push(g)}if(n.length===0)return n}else n=e;n.sort((a,c)=>{let i=a.minv.blockPosition-c.minv.blockPosition;return i===0?a.minv.dataPosition-c.minv.dataPosition:i});let r=[n[0]],o=n[0].minv.blockPosition,s=n[0].maxv.blockPosition;for(let a=1;a<n.length;a++){let c=n[a],i=c.minv.blockPosition,g=c.maxv.blockPosition;if(i-s<65e3&&g-o<5e6){let f=r.at(-1);(g-s||c.maxv.dataPosition-f.maxv.dataPosition)>0&&(r[r.length-1]=new QA(f.minv,c.maxv,f.bin,c.endPosition),s=g)}else r.push(c),o=i,s=g}return ua(r)}function ua(e){let t=[e[0]];for(let A=1;A<e.length;A++){let n=e[A],r=t.at(-1).maxv;if((n.minv.blockPosition-r.blockPosition||n.minv.dataPosition-r.dataPosition)>=0){t.push(n);continue}(n.maxv.blockPosition-r.blockPosition||n.maxv.dataPosition-r.dataPosition)>0&&t.push(new QA(r,n.maxv,n.bin,n.endPosition))}return t}function it(e,t=[]){let A=[...t];for(let n of e)A.push(n.minv.blockPosition,n.maxv.blockPosition);A.sort((n,r)=>n-r);for(let n of e){let r=n.maxv.blockPosition,o=0,s=A.length;for(;o<s;){let a=o+s>>>1;A[a]>r?s=a:o=a+1}o<A.length&&(n.endPosition=Math.min(n.endPosition,A[o]))}}function at(e,t,A,n,r=8){let o=n?n.blockPosition:1/0,s=n?n.dataPosition:0,a=!1;for(let c=0;c<A;c++){let i=t+c*r,g=e[i+7]*1099511627776+e[i+6]*4294967296+e[i+5]*16777216+e[i+4]*65536+e[i+3]*256+e[i+2],f=e[i+1]<<8|e[i];(g<o||g===o&&f<s)&&(o=g,s=f,a=!0)}return a?new ae(o,s):n}function pa(e){let t=new TextDecoder("utf-8"),A=[],n={},r=0,o=0;for(;o<e.length;){let s=e.indexOf(0,o);if(s===-1)break;if(s>o){let a=t.decode(e.subarray(o,s));A[r]=a,n[a]=r}o=s+1,r++}return{refNameToId:n,refIdToName:A}}var wa={0:"generic",1:"SAM",2:"VCF",3:"GAF"};function gt(e,t){let A=new DataView(e.buffer,e.byteOffset,e.byteLength),n=A.getInt32(t,!0),r=n&65536?"zero-based-half-open":"1-based-closed",o=wa[n&15];if(!o)throw new Error(`invalid Tabix preset format flags ${n}`);let s={ref:A.getInt32(t+4,!0),start:A.getInt32(t+8,!0),end:A.getInt32(t+12,!0)},a=A.getInt32(t+16,!0),c=a?String.fromCharCode(a):void 0,i=A.getInt32(t+20,!0),g=A.getInt32(t+24,!0),{refIdToName:f,refNameToId:d}=pa(e.subarray(t+28,t+28+g));return{refIdToName:f,refNameToId:d,skipLines:i,metaChar:c,columnNumbers:s,format:o,coordinateType:r}}function ct(e,t){return{lineCount:as(e,t)}}function ft(e,t=5){let A=new xe({maxSize:t});return n=>{let r=A.get(n);if(r!==void 0)return r;let o=e(n);return o!==void 0&&A.set(n,o),o}}function gs(e){let t=0;for(let r of e)t+=r.length;let A=new Uint8Array(t),n=0;for(let r of e)A.set(r,n),n+=r.length;return A}var cs=10;function Rn(e,t,A){let n,r=0;for(let o of e){let s=0;if(n){let i=o.indexOf(cs);if(i===-1){n=gs([n,o]),t+=o.length;continue}if(A(gs([n,o.subarray(0,i+1)]),r))return!0;s=i+1,n=void 0}let a=o.lastIndexOf(cs);if(a>=s&&A(o.subarray(s,a+1),t+s))return!0;let c=Math.max(s,a+1);c<o.length&&(n=o.slice(c),r=t+c),t+=o.length}return!1}function fs(e,t,A){let n=[],r=0;for(let o of e){let s=Math.max(t-r,0),a=Math.min(A-r,o.length);s<a&&n.push(o.subarray(s,a)),r+=o.length}return n}function Mn(e,t,A){let n=0,r=e.length-1;for(;n<r;){let s=n+r+1>>>1;e[s]<=A.blockPosition?n=s:r=s-1}return(n===0?0:t[n])-t[0]+A.dataPosition}function ma(e,t,A,n){if(t>2**(A+n*3))return;let r=(8**(n+1)-1)/7,o=(8**n-1)/7+Math.floor((t-1)/2**A)+1;for(o>=r&&(o=0);;){for(;o%8===1;)o=(o-1)/8;if(o===0)return;let s=e[o];if(s?.length){let a=s[0].minv;for(let c=1;c<s.length;c++){let i=s[c].minv;i.compareTo(a)<0&&(a=i)}return a}o++}}function ls(e,t){return e.format==="GAF"?0:e.refNameToId[t]}var zA=class{filehandle;parseCache=new _A({});constructor({filehandle:t}){this.filehandle=t}async readIndexBytes(t){let A=await this.filehandle.readFile({signal:t.signal,onProgress:t.onProgress}),n=await PA(A);return{bytes:n,dataView:new DataView(n.buffer,n.byteOffset,n.byteLength)}}async lineCount(t,A={}){let n=await this.parse(A),r=ls(n,t);return r===void 0?-1:n.indices(r)?.stats?.lineCount??-1}async getMetadata(t={}){let{indices:A,...n}=await this.parse(t);return n}async blocksForRange(t,A,n,r={}){let o=await this.parse(r),s=ls(o,t);if(s===void 0)return[];let a=o.indices(s);if(!a)return[];o.format==="GAF"&&(A=Math.max(A-1,0));let c=[];for(let[l,I]of this.reg2bins(A,n,o))for(let E=l;E<=I;E++){let Q=a.binIndex[E];if(Q)for(let u of Q)c.push(u)}let i=this.lowestOffset(a,A,o),g=st(c,i),f=ma(a.binIndex,n,o.minShift,o.depth);if(f){let l=g.length;for(;l>0&&g[l-1].minv.compareTo(f)>=0;)l--;g.length=l}let d=g[0];if(d&&i){let l=2**(o.minShift+3),I=this.lowestOffset(a,Math.floor(A/l)*l,o),E=I&&I.compareTo(i)<0?I:i;d.minv.compareTo(E)<0&&(g[0]=new QA(E,d.maxv,d.bin,d.endPosition))}return g}parse(t={}){return this.parseCache.get("index",t.signal,A=>this._parse({...t,signal:A}))}async hasRefSeq(t,A={}){return!!(await this.parse(A)).indices(t)?.binIndex}};var ka=21582659,ya=38359875;function ds(e,t){return e*2**t}function _n(e,t){return Math.floor(e/2**t)}var jA=class extends zA{async _parse(t={}){let{bytes:A,dataView:n}=await this.readIndexBytes(t),r=n.getUint32(0,!0),o;if(r===ka)o=1;else if(r===ya)o=2;else throw new Error(`Not a CSI file (magic=${r})`);let s=n.getInt32(4,!0),a=n.getInt32(8,!0),c=(8**(a+1)-1)/7,i=2**(s+a*3),g=n.getInt32(12,!0),f=g>=28&&(n.getInt32(16,!0)&15)===3;if(g<30&&!f)throw new Error("CSI index has no tabix header, so it names no references; it may be a BAM or BCF index");let d=gt(A,16),l=n.getInt32(16+g,!0),I=16+g+4,E,Q=[];for(let p=0;p<l;p++){Q.push(I);let N=n.getInt32(I,!0);I+=4;for(let C=0;C<N;C++){let S=n.getUint32(I,!0);if(I+=4,S>c)I+=44;else{E=at(A,I,1,E),I+=8;let x=n.getInt32(I,!0);I+=4+16*x}}}function u(p){let N=Q[p];if(N===void 0)return;let C=N,S=n.getInt32(C,!0);C+=4;let x={},m={},h;for(let w=0;w<S;w++){let y=n.getUint32(C,!0);if(C+=4,y>c)h=ct(A,C+28),C+=44;else{m[y]=LA(A,C),C+=8;let _=n.getInt32(C,!0);C+=4;let Y=Array.from({length:_});for(let P=0;P<_;P++)Y[P]=new QA(LA(A,C),LA(A,C+8),y),C+=16;x[y]=Y}}return it(Object.values(x).flat()),{binIndex:x,loffsets:m,stats:h}}return{...d,csi:!0,refCount:l,maxBlockSize:65536,firstDataLine:E,csiVersion:o,indices:ft(u),minShift:s,depth:a,maxBinNumber:c,maxRefLength:i}}lowestOffset(t,A,{minShift:n,depth:r}){let{loffsets:o}=t,s;if(o){let a=(ds(1,3*r)-1)/7+_n(Math.max(A,0),n);for(;s===void 0&&a>0;)if(s=o[a],s===void 0){let c=Math.floor((a-1)/8),i=c*8+1;a=a>i?a-1:c}s??=o[0]}return s}reg2bins(t,A,{minShift:n,depth:r,maxBinNumber:o}){t=Math.max(t,0);let s=2**(n+r*3);A>s&&(A=s),A-=1;let a=0,c=0,i=n+r*3,g=[];for(;a<=r;i-=3,c+=ds(1,a*3),a+=1){let f=c+_n(t,i),d=c+_n(A,i);if(d-f+g.length>o)throw new Error(`query ${t}-${A} is too large for current binning scheme (shift ${n}, depth ${r}), try a smaller query or a coarser index binning scheme`);g.push([f,d])}return g}};var ba=21578324,Ln=5,Jn=14,lt=2**(Jn+Ln*3);function Is(e){return Math.min(Math.max(e,0),lt)}var xA=class extends zA{reg2bins(t,A){t>lt&&console.warn("querying outside of possible tabix range");let n=Is(t),r=Math.min(A,lt)-1,o=[];return n<=r&&o.push([0,0],[1+(n>>26),1+(r>>26)],[9+(n>>23),9+(r>>23)],[73+(n>>20),73+(r>>20)],[585+(n>>17),585+(r>>17)],[4681+(n>>14),4681+(r>>14)]),o}lowestOffset(t,A){let n=t.linearIndex;return n?.[Math.min(Is(A)>>Jn,n.length-1)]}async _parse(t={}){let{bytes:A,dataView:n}=await this.readIndexBytes(t);if(n.getUint32(0,!0)!==ba)throw new Error("Not a TBI file");let r=n.getUint32(4,!0),o=((1<<(Ln+1)*3)-1)/7,{refNameToId:s,refIdToName:a,coordinateType:c,format:i,columnNumbers:g,metaChar:f,skipLines:d}=gt(A,8),I=36+n.getInt32(32,!0),E,Q=[];for(let p=0;p<r;p++){Q.push(I);let N=n.getInt32(I,!0);I+=4;for(let S=0;S<N;S++){let x=n.getUint32(I,!0);I+=4;let m=n.getInt32(I,!0);if(I+=4,x>o+1)throw new Error("tabix index contains too many bins, please use a CSI index");x<=o&&(E=at(A,I,m,E,16)),I+=16*m}let C=n.getInt32(I,!0);I+=4+8*C}function u(p){let N=Q[p];if(N===void 0)return;let C=N,S=n.getInt32(C,!0);C+=4;let x={},m;for(let y=0;y<S;y++){let _=n.getUint32(C,!0);if(C+=4,_>o+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(_===o+1){let Y=n.getInt32(C,!0);C+=4,Y===2&&(m=ct(A,C+16)),C+=16*Y}else{let Y=n.getInt32(C,!0);C+=4;let P=Array.from({length:Y});for(let T=0;T<Y;T++)P[T]=new QA(LA(A,C),LA(A,C+8),_),C+=16;x[_]=P}}let h=n.getInt32(C,!0);C+=4;let w=Array.from({length:h});for(let y=0;y<h;y++)w[y]=LA(A,C),C+=8;return it(Object.values(x).flat(),w.map(y=>y.blockPosition)),{binIndex:x,linearIndex:w,stats:m}}return{indices:ft(u),metaChar:f,minShift:Jn,depth:Ln,maxBinNumber:o,maxRefLength:lt,skipLines:d,firstDataLine:E,columnNumbers:g,coordinateType:c,format:i,refIdToName:a,refNameToId:s,maxBlockSize:65536}}};var Gn=9,It=10,Bs=13,Na=59,xa=60,Sa=62,va=6,Da=1024*2**20,Fa=180*1e3;function Ra(e,t,A){if(e)return e;if(t)return new HA(t);if(A)return new BA(A);throw new TypeError("must provide either filehandle, path, or url")}function Ma({tbiFilehandle:e,csiFilehandle:t,tbiPath:A,csiPath:n,tbiUrl:r,csiUrl:o,path:s,url:a}){if(e)return new xA({filehandle:e});if(t)return new jA({filehandle:t});if(A)return new xA({filehandle:new HA(A)});if(n)return new jA({filehandle:new HA(n)});if(o)return new jA({filehandle:new BA(o)});if(r)return new xA({filehandle:new BA(r)});if(s)return new xA({filehandle:new HA(`${s}.tbi`)});if(a)return new xA({filehandle:new BA(`${a}.tbi`)});throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl")}function hs(e,t,A,n,r){return e[A]*256+(n-t[A])+r+1}function _a(e,t,A,n,r,o,s){let a=n-A,c=t+a,i=0;if(e[r]===46)return c;let g=r;for(let f=r;f<=o;f++)if(f===o||e[f]===Na){let d=f-g;if(d>=10&&e[g]===83&&e[g+1]===86&&e[g+2]===84&&e[g+3]===89&&e[g+4]===80&&e[g+5]===69&&e[g+6]===61&&e[g+7]===84&&e[g+8]===82&&e[g+9]===65)return t+1;if(d>=4&&e[g]===69&&e[g+1]===78&&e[g+2]===68&&e[g+3]===61){let l=dt(e,g+4,f);l>t&&(c=l)}else d>=6&&e[g]===83&&e[g+1]===86&&e[g+2]===76&&e[g+3]===69&&e[g+4]===78&&e[g+5]===61&&(i=Ja(e,g+6,f,n+1,s));g=f+1}return Math.max(c,t+i)}var Cs=44;function La(e,t,A){if(A-t<5||e[t]!==60||e[A-1]!==62)return!1;let n=e[t+4];if(n!==62&&n!==58)return!1;let r=e[t+1],o=e[t+2],s=e[t+3];return r===67&&o===78&&s===86||r===68&&o===69&&s===76||r===68&&o===85&&s===80||r===73&&o===78&&s===86}function Ja(e,t,A,n,r){let o=0,s=t,a=n;for(;s<A&&a<r;){let c=e.indexOf(Cs,s);(c===-1||c>A)&&(c=A);let i=e.indexOf(Cs,a);if((i===-1||i>r)&&(i=r),La(e,a,i)){let g=dt(e,e[s]===45?s+1:s,c);g>o&&(o=g)}s=c+1,a=i+1}return o}var Es=new TextDecoder;function Qs(e,t){let A=-1,n=t.charCodeAt(0);for(let r=0,o=e.length;r<o;r++){let s=e[r];if(r===A+1&&s!==n)break;s===It&&(A=r)}return e.subarray(0,A+1)}function Ga(e,t){let A=0;for(let n=0;n<t;n++){let r=e.indexOf(It,A);if(r===-1){A=e.length;break}A=r+1}return Es.decode(e.subarray(0,A)).split(/\r?\n/).slice(0,t)}function dt(e,t,A){let n=0;for(let r=t;r<A;r++){let o=e[r];if(o>=48&&o<=57)n=n*10+(o-48);else break}return n}function Ua(e,t,A,n,r,{start:o,end:s,pathCol:a,metaCharCode:c,decoder:i,callback:g}){let f=0,d=0;for(;f<e.length;){let l=e.indexOf(It,f);if(l===-1)break;let I=f;f=l+1;let E=I+t+r;for(;d<n.length&&E>=n[d];)d++;if(e[I]===c)continue;let Q=I;for(let x=1;x<a;x++){let m=e.indexOf(Gn,Q);if(m===-1||m>=l){Q=l;break}Q=m+1}let u=e[Q];if(u!==Sa&&u!==xa)continue;let p=e.indexOf(Gn,Q);(p===-1||p>l)&&(p=l);let N=1/0,C=-1,S=Q;for(;S<p;){let x=0,m=S+1;for(;m<p;m++){let h=e[m]-48;if(h<0||h>9)break;x=x*10+h}x<N&&(N=x),x>C&&(C=x),S=m}if(N>=s)return!0;if(C>=o){let x=e[l-1]===Bs?l-1:l;g(i.decode(e.subarray(I,x)),hs(A,n,d,I+t,r),N,C+1)}}return!1}var ge=class{filehandle;index;chunkCache;requested=new Map;headerCache=new _A({});bgzfWorkerPool;constructor({path:t,filehandle:A,url:n,tbiPath:r,tbiUrl:o,tbiFilehandle:s,csiPath:a,csiUrl:c,csiFilehandle:i,chunkCacheSize:g=Da,chunkCacheIdleTimeoutMs:f=Fa,chunkCacheBudget:d,bgzfWorkerPool:l}){this.bgzfWorkerPool=l,this.filehandle=Ra(A,t,n),this.index=Ma({tbiFilehandle:s,csiFilehandle:i,tbiPath:r,csiPath:a,tbiUrl:o,csiUrl:c,path:t,url:n}),this.chunkCache=new _A({maxSize:g,sizeOf:I=>{let E=0;for(let Q of I.segments)E+=Q.byteLength;return E},cacheKey:I=>I.toString(),idleTimeoutMs:f,budget:d,fill:(I,E)=>this.readChunk(I,{signal:E})})}clearChunkCache(){this.chunkCache.clear(),this.requested.clear()}withCachedContainers(t){if(this.requested.size>2*this.chunkCache.size)for(let[n,r]of this.requested)this.chunkCache.has(r)||this.requested.delete(n);let A=[];for(let n=0;n<t.length;n++){let r=t[n],o=A[A.length-1],s=t[n+1],a;if(!this.chunkCache.has(r))for(let c of this.requested.values())c.minv.compareTo(r.minv)<=0&&c.maxv.compareTo(r.maxv)>=0&&(!o||c.minv.compareTo(o.maxv)>=0)&&(!s||c.maxv.compareTo(s.minv)<=0)&&(!a||c.fetchedSize()<a.fetchedSize())&&this.chunkCache.has(c)&&(a=c);A.push(a??r)}return A}async bytesForRegions(t,A={}){let n=[];for(let{refName:o,start:s,end:a}of t){let c=await this.index.blocksForRange(o,s,a,A);for(let i of c)n.push(i)}let r=0;for(let o of st(n))r+=o.fetchedSize();return r}async getLines(t,A,n,r){let o,s={},a,c;typeof r=="function"?a=r:(s=r,a=r.lineCallback,o=r.signal,c=r.onProgress);let i=await this.index.getMetadata(s),g=A??0,f=n??i.maxRefLength;if(g>f)throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(g===f)return;let d=await this.index.blocksForRange(t,g,f,s),l=this.withCachedContainers(d),I=i.format==="VCF",E=i.columnNumbers.ref||0,Q=i.columnNumbers.start||0,u=I?8:i.columnNumbers.end||0,p=Math.max(E,Q,u),N=i.metaChar?.charCodeAt(0),C=i.coordinateType==="1-based-closed"?-1:0,S=new TextEncoder,x=new TextDecoder,m=S.encode(t),h=new Int32Array(p+1),w=i.format==="GAF"?{start:g,end:f,pathCol:Q,metaCharCode:N,decoder:x,callback:a}:void 0,y=0;for(let B of l)y+=B.fetchedSize();let _=0;c?.(0,y);let Y=1,P=[],T=B=>{for(;P.length<Math.min(B,l.length);){let k=l[P.length];this.requested.set(k.toString(),k);let v=this.chunkCache.get(k,o);v.catch(()=>{}),P.push(v)}};T(1);for(let B=0,k=l.length;B<k;B++){let v=l[B],L=await P[B],{cpositions:K,dpositions:U}=L;_+=v.fetchedSize(),c?.(_,y);let X=v.minv.dataPosition,O=d[B],H=L.segments,V=0;if(O!==v){V=Mn(K,U,O.minv);let AA=Mn(K,U,O.maxv)+1;H=fs(H,V,AA)}if(w){if(Rn(H,V,(AA,gA)=>Ua(AA,gA,K,U,X,w)))return}else if(Rn(H,V,(AA,gA)=>{let nA=0,cA=0;for(;nA<AA.length;){let W=AA.indexOf(It,nA);if(W===-1)break;let wA=nA+gA+X;for(;cA<U.length&&wA>=U[cA];)cA++;if(N!==void 0&&AA[nA]===N){nA=W+1;continue}h[0]=nA-1;for(let G=0;G<p;G++){let J=h[G],q=J<W?AA.indexOf(Gn,J+1):-1;h[G+1]=q===-1||q>=W?W:q}let mA=h[E-1]+1,R=h[E]-mA;if(R!==m.length){nA=W+1;continue}let b=!0;for(let G=0;G<R;G++)if(AA[mA+G]!==m[G]){b=!1;break}if(!b){nA=W+1;continue}let M=dt(AA,h[Q-1]+1,h[Q])+C;if(M>=f)return!0;let F;if(u===0||u===Q?F=M+1:I?F=_a(AA,M,h[3]+1,h[4],h[u-1]+1,h[u],h[5]):F=dt(AA,h[u-1]+1,h[u]),F>g){let G=AA[W-1]===Bs?W-1:W,J=x.decode(AA.subarray(nA,G));a(J,hs(K,U,cA,nA+gA,X),M,F)}nA=W+1}return!1}))return;Y=Math.min(Y*2,va),T(B+1+Y)}}async getMetadata(t={}){return this.index.getMetadata(t)}async readHeaderBytes(t){let{firstDataLine:A,maxBlockSize:n}=await this.getMetadata(t);if(A?.blockPosition===0&&A.dataPosition===0)return new Uint8Array(0);let r=(A?.blockPosition??0)+n,o=await this.filehandle.read(r,0,t);return PA(o)}async parseHeader(t){let{metaChar:A,skipLines:n=0}=await this.getMetadata(t),r=await this.readHeaderBytes(t);return{header:Es.decode(A?Qs(r,A):r),skippedLines:n>0?Ga(r,n):[]}}getParsedHeader(t={}){return this.headerCache.get("header",t.signal,A=>this.parseHeader({...t,signal:A}))}async getHeaderBuffer(t={}){let{metaChar:A}=await this.getMetadata(t),n=await this.readHeaderBytes(t);return A?Qs(n,A):n}async getSkippedLines(t={}){let{skipLines:A=0}=await this.getMetadata(t);return A<=0?[]:(await this.getParsedHeader(t)).skippedLines}async getHeader(t={}){return(await this.getParsedHeader(t)).header}async getHeaderLines(t={}){let{header:A,skippedLines:n}=await this.getParsedHeader(t);return(A?A.split(/\r?\n/):n).filter(Boolean)}async getReferenceSequenceNames(t={}){return(await this.getMetadata(t)).refIdToName}async lineCount(t,A={}){return this.index.lineCount(t,A)}async readChunk(t,A={}){let n=await this.filehandle.read(t.fetchedSize(),t.minv.blockPosition,A);ZA(A.signal);let r=await this.bgzfWorkerPool;return Nn(n,t,r)}};var Ya=e=>({type:"fileLocation",defaultValue:{uri:e,locationType:"UriLocation"}}),Ff=(e,t="")=>Hn(e,{indexType:{model:Tn.enumeration("IndexType",["TBI","CSI"]),type:"stringEnum",defaultValue:"TBI"},location:Ya(t)});function Rf(e,t,A){return{indexType:A?"CSI":"TBI",location:{uri:`${e}.${A?"csi":"tbi"}`,baseUri:t}}}function Mf(e){let{walksUri:t,baseUri:A}=e;if(typeof t!="string")return e;let n=`${t}${Kn}`;return{...e,walksLocation:{uri:n,baseUri:A},walksIndex:{uri:`${n}.idx`,baseUri:A}}}function _f(e,t,A){let n=e.pluginManager;return new ge({filehandle:ve(e.getConf(t),n),...Pn(e.getConf([...A,"location"]),e.getConf([...A,"indexType"]),n)})}function Lf(e){let t=e.pluginManager,A=e.getConf("walksLocation"),n=e.getConf("walksIndex");return Ne.fromFilehandles({data:ve(A,t),directory:ve(On(n)?n:qn(A,r=>`${r}.idx`),t)})}function Jf(e){return{names:t=>e.getReferenceSequenceNames(t),bytes:(t,A)=>ss(e,t,A)}}function Ha(e){return`${e.assemblyName} ${e.refName} is not in this graph's index; a graph with PanSN names (GRCh38#0#chr1) needs ${e.assemblyName} mapped to its prefix in assemblyNameToPanSN`}var us=class{constructor(t,A){this.source=t;this.adapter=A;this.lookup=zn({setup:async t=>Be(await this.source.names(t))})}async assemblyRefNames(t={}){let A=await this.source.names(t),n=Se(this.adapter,t.assemblyName),r=A.filter(o=>Bt(o,n)).map(o=>Yn(o));return r.length>0?[...new Set(r)]:A}async resolve(t,A){let n=await this.lookup(A);return he(n,Se(this.adapter,t.assemblyName),t.refName)}async resolveMapped(t,A){let n=await this.resolve(t,A);if(n===void 0&&t.assemblyName){let r=await this.source.names(A),o=Se(this.adapter,t.assemblyName);if(r.every(s=>s.includes("#"))&&!r.some(s=>Bt(s,o)))throw new Error(Ha(t))}return n}async resolveForCut(t,A){let n=await this.resolveMapped(t,A);if(n===void 0)throw new Error(`This graph has nothing on ${t.assemblyName} ${t.refName}`);return n}async regionBytes(t,A={}){let n=[];for(let r of t){let o=await this.resolve(r,A);o!==void 0&&n.push({refName:o,start:r.start,end:r.end})}return this.source.bytes(n,A)}};export{PA as a,Ta as b,zn as c,hA as d,ht as e,WA as f,GA as g,Nt as h,uA as i,rt as j,Ce as k,dA as l,UA as m,Us as n,xr as o,qs as p,Ps as q,Ge as r,Ai as s,qt as t,ti as u,Zt as v,zt as w,ai as x,Mc as y,Ya as z,Ff as A,Rf as B,Mf as C,_f as D,Lf as E,Jf as F,us as G};
6
+ //# sourceMappingURL=chunk-AXUXLPO3.js.map