@jerryan/just-bash 3.6.1 → 3.7.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 (215) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/bin/chunks/chmod-G2BCCQGF.js +3 -0
  3. package/dist/bin/chunks/{chunk-B2GCIQI2.js → chunk-2UKTHDUM.js} +1 -1
  4. package/dist/bin/chunks/chunk-66UHJFN6.js +11 -0
  5. package/dist/bin/{shell/chunks/chunk-67XYNGRV.js → chunks/chunk-6O4Z6BQT.js} +1 -1
  6. package/dist/bin/{shell/chunks/chunk-M7SIPZZZ.js → chunks/chunk-7KMOGI3N.js} +1 -1
  7. package/dist/bin/{shell/chunks/chunk-6ESRNSO7.js → chunks/chunk-ADI36B7X.js} +1 -1
  8. package/dist/bin/chunks/chunk-CN4JKMTR.js +8 -0
  9. package/dist/bin/{shell/chunks/chunk-DZAFUADN.js → chunks/chunk-E26NQEH2.js} +1 -1
  10. package/dist/bin/chunks/chunk-E54Z6VIE.js +12 -0
  11. package/dist/bin/chunks/chunk-F2PYTUMR.js +9 -0
  12. package/dist/bin/chunks/chunk-FO7XJH3J.js +13 -0
  13. package/dist/bin/chunks/chunk-HWK7KFGB.js +3 -0
  14. package/dist/bin/chunks/{chunk-LE2XKKGQ.js → chunk-HYLF56CC.js} +1 -1
  15. package/dist/bin/chunks/chunk-KNTDFP7X.js +12 -0
  16. package/dist/bin/chunks/chunk-NBTZL3VS.js +3 -0
  17. package/dist/bin/chunks/chunk-OHFB3M3X.js +3 -0
  18. package/dist/bin/{shell/chunks/chunk-HQ63MFHG.js → chunks/chunk-PEUGMGJJ.js} +1 -1
  19. package/dist/bin/{shell/chunks/chunk-JELR4642.js → chunks/chunk-R76AK3KD.js} +12 -12
  20. package/dist/bin/chunks/{chunk-YCOJCFGU.js → chunk-RRECHBUS.js} +1 -1
  21. package/dist/bin/chunks/{chunk-ZMGLTHSU.js → chunk-THFQI5LV.js} +1 -1
  22. package/dist/bin/chunks/{chunk-CL7IYCGG.js → chunk-U7YR5CDD.js} +1 -1
  23. package/dist/bin/chunks/cp-TMDR6USI.js +3 -0
  24. package/dist/bin/chunks/du-UKFUX7KM.js +3 -0
  25. package/dist/bin/chunks/find-W2RZWTOF.js +3 -0
  26. package/dist/bin/chunks/{flag-coverage-FYJ2V7J4.js → flag-coverage-QJ5ZQKCF.js} +1 -1
  27. package/dist/bin/{shell/chunks/grep-CVU5V66H.js → chunks/grep-IHDO3L72.js} +1 -1
  28. package/dist/bin/chunks/gzip-WUK63QLL.js +3 -0
  29. package/dist/bin/{shell/chunks/js-exec-5QZZCOR7.js → chunks/js-exec-BE37X4L2.js} +1 -1
  30. package/dist/bin/chunks/js-exec-worker.js +157 -99
  31. package/dist/bin/chunks/ln-XVC53673.js +3 -0
  32. package/dist/bin/chunks/ls-EROTXGTC.js +3 -0
  33. package/dist/bin/chunks/mkdir-YJ3SOVRP.js +3 -0
  34. package/dist/bin/chunks/mv-HDNKXPO6.js +3 -0
  35. package/dist/bin/{shell/chunks/python3-TMFYDQAP.js → chunks/python3-TJ6DCPIA.js} +1 -1
  36. package/dist/bin/chunks/readlink-ZUIECKQC.js +3 -0
  37. package/dist/bin/chunks/rg-ODJAYIKX.js +3 -0
  38. package/dist/bin/chunks/rm-B4LVIG7A.js +3 -0
  39. package/dist/bin/chunks/rmdir-W5NBOJ7E.js +3 -0
  40. package/dist/bin/chunks/split-TVJYLTIJ.js +3 -0
  41. package/dist/bin/chunks/sqlite3-5BGAK7VX.js +3 -0
  42. package/dist/bin/chunks/worker.js +120 -109
  43. package/dist/bin/just-bash.js +333 -328
  44. package/dist/bin/shell/chunks/chmod-G2BCCQGF.js +3 -0
  45. package/dist/bin/shell/chunks/{chunk-B2GCIQI2.js → chunk-2UKTHDUM.js} +1 -1
  46. package/dist/bin/shell/chunks/chunk-66UHJFN6.js +11 -0
  47. package/dist/bin/{chunks/chunk-67XYNGRV.js → shell/chunks/chunk-6O4Z6BQT.js} +1 -1
  48. package/dist/bin/{chunks/chunk-M7SIPZZZ.js → shell/chunks/chunk-7KMOGI3N.js} +1 -1
  49. package/dist/bin/{chunks/chunk-6ESRNSO7.js → shell/chunks/chunk-ADI36B7X.js} +1 -1
  50. package/dist/bin/shell/chunks/chunk-CN4JKMTR.js +8 -0
  51. package/dist/bin/{chunks/chunk-DZAFUADN.js → shell/chunks/chunk-E26NQEH2.js} +1 -1
  52. package/dist/bin/shell/chunks/chunk-E54Z6VIE.js +12 -0
  53. package/dist/bin/shell/chunks/chunk-F2PYTUMR.js +9 -0
  54. package/dist/bin/shell/chunks/chunk-FO7XJH3J.js +13 -0
  55. package/dist/bin/shell/chunks/chunk-HWK7KFGB.js +3 -0
  56. package/dist/bin/shell/chunks/{chunk-LE2XKKGQ.js → chunk-HYLF56CC.js} +1 -1
  57. package/dist/bin/shell/chunks/chunk-KNTDFP7X.js +12 -0
  58. package/dist/bin/shell/chunks/chunk-NBTZL3VS.js +3 -0
  59. package/dist/bin/shell/chunks/chunk-OHFB3M3X.js +3 -0
  60. package/dist/bin/{chunks/chunk-HQ63MFHG.js → shell/chunks/chunk-PEUGMGJJ.js} +1 -1
  61. package/dist/bin/{chunks/chunk-JELR4642.js → shell/chunks/chunk-R76AK3KD.js} +12 -12
  62. package/dist/bin/shell/chunks/{chunk-YCOJCFGU.js → chunk-RRECHBUS.js} +1 -1
  63. package/dist/bin/shell/chunks/{chunk-ZMGLTHSU.js → chunk-THFQI5LV.js} +1 -1
  64. package/dist/bin/shell/chunks/{chunk-CL7IYCGG.js → chunk-U7YR5CDD.js} +1 -1
  65. package/dist/bin/shell/chunks/cp-TMDR6USI.js +3 -0
  66. package/dist/bin/shell/chunks/du-UKFUX7KM.js +3 -0
  67. package/dist/bin/shell/chunks/find-W2RZWTOF.js +3 -0
  68. package/dist/bin/shell/chunks/{flag-coverage-FYJ2V7J4.js → flag-coverage-QJ5ZQKCF.js} +1 -1
  69. package/dist/bin/{chunks/grep-CVU5V66H.js → shell/chunks/grep-IHDO3L72.js} +1 -1
  70. package/dist/bin/shell/chunks/gzip-WUK63QLL.js +3 -0
  71. package/dist/bin/{chunks/js-exec-5QZZCOR7.js → shell/chunks/js-exec-BE37X4L2.js} +1 -1
  72. package/dist/bin/shell/chunks/ln-XVC53673.js +3 -0
  73. package/dist/bin/shell/chunks/ls-EROTXGTC.js +3 -0
  74. package/dist/bin/shell/chunks/mkdir-YJ3SOVRP.js +3 -0
  75. package/dist/bin/shell/chunks/mv-HDNKXPO6.js +3 -0
  76. package/dist/bin/{chunks/python3-TMFYDQAP.js → shell/chunks/python3-TJ6DCPIA.js} +1 -1
  77. package/dist/bin/shell/chunks/readlink-ZUIECKQC.js +3 -0
  78. package/dist/bin/shell/chunks/rg-ODJAYIKX.js +3 -0
  79. package/dist/bin/shell/chunks/rm-B4LVIG7A.js +3 -0
  80. package/dist/bin/shell/chunks/rmdir-W5NBOJ7E.js +3 -0
  81. package/dist/bin/shell/chunks/split-TVJYLTIJ.js +3 -0
  82. package/dist/bin/shell/chunks/sqlite3-5BGAK7VX.js +3 -0
  83. package/dist/bin/shell/shell.js +385 -380
  84. package/dist/bundle/browser.js +643 -638
  85. package/dist/bundle/chunks/chmod-XZNKTJHL.js +2 -0
  86. package/dist/bundle/chunks/{chunk-XVSR5HHH.js → chunk-2T7PBFL4.js} +1 -1
  87. package/dist/bundle/chunks/chunk-3BMWRGU2.js +10 -0
  88. package/dist/bundle/chunks/chunk-3CIDHL5V.js +11 -0
  89. package/dist/bundle/chunks/chunk-4CC3OZPU.js +2 -0
  90. package/dist/bundle/chunks/{chunk-FIMF2TLE.js → chunk-5DMO6LFU.js} +12 -12
  91. package/dist/bundle/chunks/chunk-A257L6QO.js +7 -0
  92. package/dist/bundle/chunks/{chunk-6DDRR56B.js → chunk-ACVD6PQF.js} +1 -1
  93. package/dist/bundle/chunks/chunk-BS6EJR2R.js +11 -0
  94. package/dist/bundle/chunks/chunk-D5FHVW27.js +2 -0
  95. package/dist/bundle/chunks/{chunk-KEMO3CBM.js → chunk-E3ABCXE4.js} +1 -1
  96. package/dist/bundle/chunks/{chunk-FSJ6TTCC.js → chunk-HMM3NGUJ.js} +1 -1
  97. package/dist/bundle/chunks/chunk-IYJLVOVE.js +12 -0
  98. package/dist/bundle/chunks/chunk-LRFR25IP.js +8 -0
  99. package/dist/bundle/chunks/{chunk-NBNI7G66.js → chunk-OPYVVD5P.js} +1 -1
  100. package/dist/bundle/chunks/{chunk-F6XU52K3.js → chunk-OR544SGH.js} +1 -1
  101. package/dist/bundle/chunks/{chunk-RPKJJFGZ.js → chunk-PMBXJ3OQ.js} +1 -1
  102. package/dist/bundle/chunks/{chunk-UC76ZOWM.js → chunk-SBOTR4JQ.js} +1 -1
  103. package/dist/bundle/chunks/chunk-T5ZEIOJ3.js +2 -0
  104. package/dist/bundle/chunks/{chunk-DAKEIWT3.js → chunk-YNYC232D.js} +1 -1
  105. package/dist/bundle/chunks/{chunk-ZXFELXJH.js → chunk-YUOBBH7P.js} +1 -1
  106. package/dist/bundle/chunks/cp-NWITRTH3.js +2 -0
  107. package/dist/bundle/chunks/du-IFLWEM6M.js +2 -0
  108. package/dist/bundle/chunks/find-EW6OHRPJ.js +2 -0
  109. package/dist/bundle/chunks/{flag-coverage-XSPWRCVG.js → flag-coverage-PIF5QRO7.js} +1 -1
  110. package/dist/bundle/chunks/{grep-4AYF3A5J.js → grep-QDFNKAUW.js} +1 -1
  111. package/dist/bundle/chunks/gzip-HBDKZBIP.js +2 -0
  112. package/dist/bundle/chunks/{js-exec-57QMXJG5.js → js-exec-IREGAOMH.js} +1 -1
  113. package/dist/bundle/chunks/js-exec-worker.js +157 -99
  114. package/dist/bundle/chunks/ln-CEM7GDB5.js +2 -0
  115. package/dist/bundle/chunks/ls-WJ7EIFVM.js +2 -0
  116. package/dist/bundle/chunks/mkdir-Z6MMWH3D.js +2 -0
  117. package/dist/bundle/chunks/mv-E2NFLGRQ.js +2 -0
  118. package/dist/bundle/chunks/{python3-NNONJINM.js → python3-W4UMQJAQ.js} +1 -1
  119. package/dist/bundle/chunks/readlink-XCFO7YD2.js +2 -0
  120. package/dist/bundle/chunks/rg-J7XDRV3B.js +2 -0
  121. package/dist/bundle/chunks/rm-IGPLE632.js +2 -0
  122. package/dist/bundle/chunks/rmdir-UMUDM2L2.js +2 -0
  123. package/dist/bundle/chunks/split-D4HPO4G5.js +2 -0
  124. package/dist/bundle/chunks/sqlite3-3HL2ECCQ.js +2 -0
  125. package/dist/bundle/chunks/worker.js +120 -109
  126. package/dist/bundle/index.cjs +975 -970
  127. package/dist/bundle/index.js +346 -341
  128. package/dist/commands/worker-bridge/bridge-handler.d.ts +0 -3
  129. package/dist/commands/worker-bridge/protocol.d.ts +57 -23
  130. package/dist/fs/fs-error.d.ts +43 -0
  131. package/dist/fs/interface.d.ts +13 -0
  132. package/dist/fs/mountable-fs/mountable-fs.d.ts +20 -0
  133. package/dist/fs/overlay-fs/apply.d.ts +2 -1
  134. package/dist/fs/overlay-fs/index.d.ts +0 -1
  135. package/dist/fs/overlay-fs/overlay-fs.d.ts +14 -0
  136. package/dist/fs/path-utils.d.ts +5 -0
  137. package/dist/fs/vfs-template.d.ts +38 -15
  138. package/dist/index.d.cts +2 -1
  139. package/dist/index.d.ts +2 -1
  140. package/dist/interpreter/builtin-dispatch.d.ts +10 -0
  141. package/dist/interpreter/builtin-manifest.d.ts +273 -0
  142. package/dist/interpreter/builtins/help.d.ts +6 -0
  143. package/dist/interpreter/builtins/shopt.d.ts +3 -0
  144. package/dist/interpreter/helpers/shell-constants.d.ts +0 -20
  145. package/package.json +1 -1
  146. package/dist/bin/chunks/chmod-WYYTXGVB.js +0 -3
  147. package/dist/bin/chunks/chunk-43E7AR6A.js +0 -3
  148. package/dist/bin/chunks/chunk-AI7JUA46.js +0 -13
  149. package/dist/bin/chunks/chunk-GQKQEK5N.js +0 -11
  150. package/dist/bin/chunks/chunk-JHEAT7AR.js +0 -12
  151. package/dist/bin/chunks/chunk-OLEQNRKX.js +0 -8
  152. package/dist/bin/chunks/chunk-SE7JHGP3.js +0 -9
  153. package/dist/bin/chunks/chunk-WEHA3JFD.js +0 -3
  154. package/dist/bin/chunks/chunk-YQEKKZTU.js +0 -12
  155. package/dist/bin/chunks/cp-OMVKM35F.js +0 -3
  156. package/dist/bin/chunks/du-LUFPVLNW.js +0 -3
  157. package/dist/bin/chunks/find-AWH2KOY7.js +0 -3
  158. package/dist/bin/chunks/gzip-FDPA6EKG.js +0 -3
  159. package/dist/bin/chunks/ln-B35EKC2Q.js +0 -3
  160. package/dist/bin/chunks/ls-Q6ZZ6SQ2.js +0 -3
  161. package/dist/bin/chunks/mkdir-74BP5NTG.js +0 -3
  162. package/dist/bin/chunks/mv-76LAHXFR.js +0 -3
  163. package/dist/bin/chunks/readlink-EHXJNW62.js +0 -3
  164. package/dist/bin/chunks/rg-PXNKNIMY.js +0 -3
  165. package/dist/bin/chunks/rm-NLG5344W.js +0 -3
  166. package/dist/bin/chunks/rmdir-7ZIVFZJX.js +0 -3
  167. package/dist/bin/chunks/split-ZNNNHKSP.js +0 -3
  168. package/dist/bin/chunks/sqlite3-3EUPHVEZ.js +0 -3
  169. package/dist/bin/shell/chunks/chmod-WYYTXGVB.js +0 -3
  170. package/dist/bin/shell/chunks/chunk-43E7AR6A.js +0 -3
  171. package/dist/bin/shell/chunks/chunk-AI7JUA46.js +0 -13
  172. package/dist/bin/shell/chunks/chunk-GQKQEK5N.js +0 -11
  173. package/dist/bin/shell/chunks/chunk-JHEAT7AR.js +0 -12
  174. package/dist/bin/shell/chunks/chunk-OLEQNRKX.js +0 -8
  175. package/dist/bin/shell/chunks/chunk-SE7JHGP3.js +0 -9
  176. package/dist/bin/shell/chunks/chunk-WEHA3JFD.js +0 -3
  177. package/dist/bin/shell/chunks/chunk-YQEKKZTU.js +0 -12
  178. package/dist/bin/shell/chunks/cp-OMVKM35F.js +0 -3
  179. package/dist/bin/shell/chunks/du-LUFPVLNW.js +0 -3
  180. package/dist/bin/shell/chunks/find-AWH2KOY7.js +0 -3
  181. package/dist/bin/shell/chunks/gzip-FDPA6EKG.js +0 -3
  182. package/dist/bin/shell/chunks/ln-B35EKC2Q.js +0 -3
  183. package/dist/bin/shell/chunks/ls-Q6ZZ6SQ2.js +0 -3
  184. package/dist/bin/shell/chunks/mkdir-74BP5NTG.js +0 -3
  185. package/dist/bin/shell/chunks/mv-76LAHXFR.js +0 -3
  186. package/dist/bin/shell/chunks/readlink-EHXJNW62.js +0 -3
  187. package/dist/bin/shell/chunks/rg-PXNKNIMY.js +0 -3
  188. package/dist/bin/shell/chunks/rm-NLG5344W.js +0 -3
  189. package/dist/bin/shell/chunks/rmdir-7ZIVFZJX.js +0 -3
  190. package/dist/bin/shell/chunks/split-ZNNNHKSP.js +0 -3
  191. package/dist/bin/shell/chunks/sqlite3-3EUPHVEZ.js +0 -3
  192. package/dist/bundle/chunks/chmod-WM2JFFQC.js +0 -2
  193. package/dist/bundle/chunks/chunk-7IJWBG4I.js +0 -2
  194. package/dist/bundle/chunks/chunk-G3IRZ4FN.js +0 -8
  195. package/dist/bundle/chunks/chunk-MLIO3BK2.js +0 -7
  196. package/dist/bundle/chunks/chunk-TBVD66LC.js +0 -10
  197. package/dist/bundle/chunks/chunk-ULXGGWAD.js +0 -11
  198. package/dist/bundle/chunks/chunk-W2Z6LYL6.js +0 -11
  199. package/dist/bundle/chunks/chunk-WN54B5NQ.js +0 -12
  200. package/dist/bundle/chunks/chunk-YUSFCOM7.js +0 -2
  201. package/dist/bundle/chunks/cp-2KZIPZJS.js +0 -2
  202. package/dist/bundle/chunks/du-7AZCLKR6.js +0 -2
  203. package/dist/bundle/chunks/find-END3EAHV.js +0 -2
  204. package/dist/bundle/chunks/gzip-RQOBR22H.js +0 -2
  205. package/dist/bundle/chunks/ln-OPY2ZVGQ.js +0 -2
  206. package/dist/bundle/chunks/ls-ZPXGZX63.js +0 -2
  207. package/dist/bundle/chunks/mkdir-WDDKK2P3.js +0 -2
  208. package/dist/bundle/chunks/mv-ZF6UBVRB.js +0 -2
  209. package/dist/bundle/chunks/readlink-U5OM5A3M.js +0 -2
  210. package/dist/bundle/chunks/rg-NAMXBYKS.js +0 -2
  211. package/dist/bundle/chunks/rm-R2ZENNSN.js +0 -2
  212. package/dist/bundle/chunks/rmdir-YJKPQVCK.js +0 -2
  213. package/dist/bundle/chunks/split-JICLAMP6.js +0 -2
  214. package/dist/bundle/chunks/sqlite3-M4UZPXDO.js +0 -2
  215. package/dist/fs/overlay-fs/merge.d.ts +0 -24
@@ -1,56 +1,56 @@
1
1
  import{createRequire} from"node:module";const require=createRequire(import.meta.url);
2
- import{a as qt,b as Gt,c as ut}from"./chunks/chunk-WNH3HOQA.js";import{a as Ur}from"./chunks/chunk-BRJERIF4.js";import{c as vi,e as ja}from"./chunks/chunk-KIGPB52X.js";import{a as Vr,b as zr,d as cr,e as ur}from"./chunks/chunk-PS2RJNZZ.js";import{a as rn}from"./chunks/chunk-SGX4WOAM.js";import{a as Ai}from"./chunks/chunk-L2UW7DWF.js";import{a as nn,b as Ke,c as hr}from"./chunks/chunk-DLL7UR66.js";import{a as dr,b as Ua}from"./chunks/chunk-BKUWXPEM.js";import{a as ye}from"./chunks/chunk-73JQKNZT.js";import{a as Gr,b as Hr}from"./chunks/chunk-AYSZ5MAE.js";import{a as Vn,b as We}from"./chunks/chunk-ZBUZKIPX.js";import"./chunks/chunk-57LGFT4S.js";import{c as en,d as Un}from"./chunks/chunk-FTET43KM.js";import"./chunks/chunk-STHBFACM.js";import{a as V,b as Ut,c as z,d as jn,e as tn,f as jt,g as qn}from"./chunks/chunk-YUSFCOM7.js";import{a as Xt,b as et,c as tt,d as Me,e as Ze,f as Qe,g as q,h as ce,i as nt,j as Yt,k as jr,l as $,m as rt,n as Ne,o as Jt,p as qr,q as ct}from"./chunks/chunk-TVCZIH6M.js";import{a as B,b as fr,c as kn,d as gd,e as Kt,f as bi,g as zn,h as wd,i as Vt,j as Si,k as Ed,l as bd}from"./chunks/chunk-GN6CQ3J4.js";import{a as Ct}from"./chunks/chunk-FOCWZZDE.js";import{a as zt}from"./chunks/chunk-W5DWRFSU.js";import{a as Ei}from"./chunks/chunk-NCUTH6QL.js";import*as Le from"node:path";var Pn=[{name:"echo",load:async()=>(await import("./chunks/echo-PLLZYM2L.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-VZBWBIJB.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-B2NSYQ3N.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-ZPXGZX63.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-WDDKK2P3.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-YJKPQVCK.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-W4DF6Z4T.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-R2ZENNSN.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-2KZIPZJS.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-ZF6UBVRB.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-OPY2ZVGQ.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-WM2JFFQC.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-76BPYV5F.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-U5OM5A3M.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-6UIPFWVJ.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-UBGSN4JF.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-7WVM7GV4.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-LXFZND2P.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-4AYF3A5J.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-4AYF3A5J.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-4AYF3A5J.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-NAMXBYKS.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-LIRH26EA.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-W6BNZEJN.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-CB5GO7XH.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-PAEPA27E.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-DTWKU2MC.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-FMDNVWQN.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-ZNHNSRBW.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-UI2LA3GA.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-EPOS3MFH.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-IELOWYJG.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-QJBPHRFJ.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-J3VOSOMK.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-YD5BWFH4.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-VLFTYX2Z.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-JICLAMP6.js")).split},{name:"column",load:async()=>(await import("./chunks/column-QJI65SH2.js")).column},{name:"join",load:async()=>(await import("./chunks/join-C2B6NGXH.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-OOWSWHRQ.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-END3EAHV.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-SJZQ5W65.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-Z2ZMOOW2.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-7OOL2MH6.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-7AZCLKR6.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-VUUMB47B.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-VUUMB47B.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-T5TO5GWK.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-T5TO5GWK.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-3N762S3K.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-VQEXRD3C.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-QUBPEGGU.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-QUBPEGGU.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-KPIUNI6K.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-HIEWVHJ2.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-HIEWVHJ2.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-NY7PCVMH.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-MHVQ5XHI.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-CSARC7WF.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-7OEDRA27.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-25QUPVDK.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-37GM7IIL.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-NERE2JJ2.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-B6KDLMYQ.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-XSBELPAC.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-JEDX55KS.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-BLPZJ6MP.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-VJZ4PHQ4.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-URNAD6FQ.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-PE6BPRPA.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-QDDMBDU7.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-UWVKETYW.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-YXC4HBTR.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-CESD3CQR.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-KR6E7UIR.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-Z4AIL3P4.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-RQOBR22H.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-RQOBR22H.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-RQOBR22H.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Pn.push({name:"tar",load:async()=>(await import("./chunks/tar-B72KU357.js")).tarCommand}),Pn.push({name:"yq",load:async()=>(await import("./chunks/yq-FGNXZCGX.js")).yqCommand}),Pn.push({name:"xan",load:async()=>(await import("./chunks/xan-UIGVJCMA.js")).xanCommand}),Pn.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-M4UZPXDO.js")).sqlite3Command}));var Zr=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Zr.push({name:"python3",load:async()=>(await import("./chunks/python3-NNONJINM.js")).python3Command}),Zr.push({name:"python",load:async()=>(await import("./chunks/python3-NNONJINM.js")).pythonCommand}));var Qr=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Qr.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-57QMXJG5.js")).jsExecCommand}),Qr.push({name:"node",load:async()=>(await import("./chunks/js-exec-57QMXJG5.js")).nodeStubCommand}));var Ga=[{name:"curl",load:async()=>(await import("./chunks/curl-K4WT7UPN.js")).curlCommand}],qa=new Map;function Kr(e){return{name:e.name,async execute(t,n){let r=qa.get(e.name);if(r||(r=await We.runTrustedAsync(()=>e.load()),qa.set(e.name,r)),n.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:s}=await import("./chunks/flag-coverage-XSPWRCVG.js");s(n.coverage,e.name,t)}return r.execute(t,n)}}}function Sd(){return Pn.map(e=>e.name)}function Ad(){return Ga.map(e=>e.name)}function Ha(e){return(e?Pn.filter(n=>e.includes(n.name)):Pn).map(Kr)}function Za(){return Ga.map(Kr)}function vd(){return Zr.map(e=>e.name)}function Qa(){return Zr.map(Kr)}function kd(){return Qr.map(e=>e.name)}function Ka(){return Qr.map(Kr)}var Xa=new WeakMap,Ya=new WeakSet;function Xr(e){let t=Xa.get(e);return t===void 0&&(t=Object.freeze(Object.create(null)),Xa.set(e,t),Ya.add(t)),t}function Ja(e){return Ya.has(e)}var el={maxSourceBytes:67108864,maxExecDepth:64,maxCallDepth:100,maxCommandCount:1e5,maxLoopIterations:1e5,maxAwkIterations:1e5,maxSedIterations:1e5,maxJqIterations:1e7,maxQueryTokens:1e5,maxQueryDepth:1e3,maxQueryElements:1e6,maxAwkParserTokens:1e5,maxAwkParserDepth:256,maxAwkParserOperations:1e6,maxCsvRows:1e6,maxCsvCells:1e7,maxWorkUnits:1e8,maxTraversalEntries:1e6,maxTraversalDepth:1e3,maxTraversalWork:1e6,maxLiveBytes:536870912,maxInputBytes:536870912,maxFileSystemBytes:1073741824,maxDatabaseBytes:1073741824,maxDatabaseResultBytes:268435456,maxArchiveBytes:1073741824,maxArchiveCompressedBytes:536870912,maxArchiveEntryBytes:536870912,maxArchiveEntries:1e6,maxWorkerMessageBytes:67108864,maxExecutionTimeMs:36e5,maxExtensionCleanupTimeMs:100,maxSqliteTimeoutMs:3e4,maxPythonTimeoutMs:3e4,maxJsTimeoutMs:3e4,maxGlobOperations:1e6,maxStringLength:67108864,maxArrayElements:1e6,maxHeredocSize:67108864,maxSubstitutionDepth:50,maxBraceExpansionResults:1e5,maxOutputSize:268435456,maxFileDescriptors:4096,maxSourceDepth:100},Pd={...el,maxSourceBytes:8*1024*1024,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:1e4,maxJsTimeoutMs:1e4,maxExtensionCleanupTimeMs:25,maxGlobOperations:1e5,maxStringLength:10*1024*1024,maxArrayElements:1e5,maxHeredocSize:10*1024*1024,maxBraceExpansionResults:1e4,maxOutputSize:10*1024*1024,maxFileDescriptors:1024,maxQueryTokens:25e3,maxQueryDepth:256,maxQueryElements:1e5,maxAwkParserTokens:25e3,maxAwkParserDepth:128,maxAwkParserOperations:1e5,maxCsvRows:1e5,maxCsvCells:1e6,maxWorkUnits:1e5,maxTraversalEntries:1e5,maxTraversalDepth:256,maxTraversalWork:1e5,maxLiveBytes:64*1024*1024,maxInputBytes:32*1024*1024,maxFileSystemBytes:128*1024*1024,maxDatabaseBytes:64*1024*1024,maxDatabaseResultBytes:16*1024*1024,maxArchiveBytes:128*1024*1024,maxArchiveCompressedBytes:64*1024*1024,maxArchiveEntryBytes:64*1024*1024,maxArchiveEntries:1e5,maxWorkerMessageBytes:16*1024*1024,maxExecutionTimeMs:3e4};function Yr(e,t="normal"){if(t!=="normal"&&t!=="hardened")throw new RangeError('executionLimitProfile must be "normal" or "hardened"');let n=t==="hardened"?Pd:el;if(!e)return{...n};let r={maxSourceBytes:e.maxSourceBytes??n.maxSourceBytes,maxExecDepth:e.maxExecDepth??n.maxExecDepth,maxCallDepth:e.maxCallDepth??n.maxCallDepth,maxCommandCount:e.maxCommandCount??n.maxCommandCount,maxLoopIterations:e.maxLoopIterations??n.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??n.maxAwkIterations,maxSedIterations:e.maxSedIterations??n.maxSedIterations,maxJqIterations:e.maxJqIterations??n.maxJqIterations,maxQueryTokens:e.maxQueryTokens??n.maxQueryTokens,maxQueryDepth:e.maxQueryDepth??n.maxQueryDepth,maxQueryElements:e.maxQueryElements??n.maxQueryElements,maxAwkParserTokens:e.maxAwkParserTokens??n.maxAwkParserTokens,maxAwkParserDepth:e.maxAwkParserDepth??n.maxAwkParserDepth,maxAwkParserOperations:e.maxAwkParserOperations??n.maxAwkParserOperations,maxCsvRows:e.maxCsvRows??n.maxCsvRows,maxCsvCells:e.maxCsvCells??n.maxCsvCells,maxWorkUnits:e.maxWorkUnits??n.maxWorkUnits,maxTraversalEntries:e.maxTraversalEntries??n.maxTraversalEntries,maxTraversalDepth:e.maxTraversalDepth??n.maxTraversalDepth,maxTraversalWork:e.maxTraversalWork??n.maxTraversalWork,maxLiveBytes:e.maxLiveBytes??n.maxLiveBytes,maxInputBytes:e.maxInputBytes??n.maxInputBytes,maxFileSystemBytes:e.maxFileSystemBytes??n.maxFileSystemBytes,maxDatabaseBytes:e.maxDatabaseBytes??n.maxDatabaseBytes,maxDatabaseResultBytes:e.maxDatabaseResultBytes??n.maxDatabaseResultBytes,maxArchiveBytes:e.maxArchiveBytes??n.maxArchiveBytes,maxArchiveCompressedBytes:e.maxArchiveCompressedBytes??n.maxArchiveCompressedBytes,maxArchiveEntryBytes:e.maxArchiveEntryBytes??n.maxArchiveEntryBytes,maxArchiveEntries:e.maxArchiveEntries??n.maxArchiveEntries,maxWorkerMessageBytes:e.maxWorkerMessageBytes??n.maxWorkerMessageBytes,maxExecutionTimeMs:e.maxExecutionTimeMs??n.maxExecutionTimeMs,maxExtensionCleanupTimeMs:e.maxExtensionCleanupTimeMs??n.maxExtensionCleanupTimeMs,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??n.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??n.maxPythonTimeoutMs,maxJsTimeoutMs:e.maxJsTimeoutMs??n.maxJsTimeoutMs,maxGlobOperations:e.maxGlobOperations??n.maxGlobOperations,maxStringLength:e.maxStringLength??n.maxStringLength,maxArrayElements:e.maxArrayElements??n.maxArrayElements,maxHeredocSize:e.maxHeredocSize??n.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??n.maxSubstitutionDepth,maxBraceExpansionResults:e.maxBraceExpansionResults??n.maxBraceExpansionResults,maxOutputSize:e.maxOutputSize??n.maxOutputSize,maxFileDescriptors:e.maxFileDescriptors??n.maxFileDescriptors,maxSourceDepth:e.maxSourceDepth??n.maxSourceDepth};for(let s of Object.keys(r)){let i=r[s];if(i!==Number.POSITIVE_INFINITY&&(!Number.isSafeInteger(i)||i<0))throw new RangeError(`${s} must be a non-negative safe integer or positive Infinity`)}return r}function xd(e){let{executionLimits:t,executionLimitProfile:n,fs:r,stdin:s=bi,...i}=e;return{fs:r,fsIdentity:i.fsIdentity??Xr(r),cwd:"/",env:new Map,stdin:s,limits:Yr(t,n),...i}}function tl(e){return"load"in e&&typeof e.load=="function"}function $d(e,t,n={}){return{name:e,trusted:n.trusted!==!1,execute:t}}function nl(e){let t=null,n=null;return{name:e.name,trusted:e.trusted!==!1,async execute(r,s){if(!t){let o=n;o||(o=e.load().then(a=>(t=a,a)),n=o);try{t=await o}catch(a){throw n===o&&(n=null),a}}let i=t;if(!i)throw new Error(`Failed to load command: ${e.name}`);return i.execute(r,s)}}}var rl=Object.freeze(Object.create(null)),Jr=class{limits;signal;abortOnUnresolvedCommands;commandCount=0;workUnits=0;liveBytes=0;inputBytes=0;outputBytes=0;countersByKind=new Map;bytesByKind=new Map;depthByKind=new Map;cleanupCallbacks=[];poisoned;closed=!1;startedAt=Date.now();unresolvedCommands=new Set;get remainingLiveBytes(){return Math.max(0,this.limits.maxLiveBytes-this.liveBytes)}get outputBytesUsed(){return this.outputBytes}constructor(t,n=void 0,r=!1){this.limits=t,this.signal=n,this.abortOnUnresolvedCommands=r}recordUnresolvedCommand(t){this.unresolvedCommands.add(t)}get unresolvedCommandNames(){return[...this.unresolvedCommands]}fail(t){throw this.poisoned??=t,this.poisoned}poisonAfterAbort(t){this.poisoned??=t}assertUsable(){if(this.poisoned)throw this.poisoned;if(this.closed)throw new Error("execution budget is already closed");this.throwIfAborted()}chargeCommand(){return this.consume("commands",1,"execution")}consumeWork(t=1,n="execution"){return this.consume("work",t,n)}consumeLimited(t,n,r,s=t){this.assertUsable();let i=this.countersByKind.get(t)??0;return(!Number.isSafeInteger(n)||n<0||!Number.isSafeInteger(r)||r<0||n>r-i)&&this.fail(new $(`${s}: ${t} work limit exceeded (${r})`,"iterations")),n>this.limits.maxWorkUnits-this.workUnits&&this.fail(new $(`${s}: aggregate work limit exceeded (${this.limits.maxWorkUnits})`,"iterations")),this.countersByKind.set(t,i+n),this.workUnits+=n,i+n}consumeInput(t,n="execution"){return this.assertUsable(),(!Number.isSafeInteger(t)||t<0||t>this.limits.maxInputBytes-this.inputBytes)&&this.fail(new $(`${n}: aggregate input size limit exceeded (${this.limits.maxInputBytes} bytes)`,"string_length")),this.inputBytes+=t,this.inputBytes}consume(t,n=1,r=t){this.assertUsable();let s=this.countersByKind.get(t)??0,i=t==="commands"?this.commandCount:this.workUnits,o=t==="commands"?this.limits.maxCommandCount:this.limits.maxWorkUnits;(!Number.isSafeInteger(n)||n<0||n>o-i)&&this.fail(new $(t==="commands"?`too many commands executed (>${o}), increase executionLimits.maxCommandCount`:`${r}: ${t} work limit exceeded (${o})`,t==="commands"?"commands":"iterations"));let a=i+n;return t==="commands"?this.commandCount=a:this.workUnits=a,this.countersByKind.set(t,s+n),a}reserveBytes(t,n,r){this.assertUsable();let s=typeof t=="string"?t:"live",i=typeof t=="string"?n:t,o=typeof t=="string"?r??s:n??"execution";(!Number.isSafeInteger(i)||i<0||i>this.limits.maxLiveBytes-this.liveBytes)&&this.fail(new $(`${o}: live byte limit exceeded (${this.limits.maxLiveBytes} bytes)`,"string_length")),this.liveBytes+=i,this.bytesByKind.set(s,(this.bytesByKind.get(s)??0)+i);let a=!1;return{release:()=>{if(a)return;a=!0,this.liveBytes-=i;let l=(this.bytesByKind.get(s)??i)-i;l<=0?this.bytesByKind.delete(s):this.bytesByKind.set(s,l)}}}appendOutput(t,n,r="execution",s=0,i="text"){this.assertUsable();let o=i==="bytes"?n.length:B(n);(!Number.isSafeInteger(s)||s<0||s>o)&&this.fail(new $(`${r}: invalid ${t} accounting`,"output_size"));let a=o-s;return a>this.limits.maxOutputSize-this.outputBytes&&this.fail(new $(`${r}: total output size exceeded (>${this.limits.maxOutputSize} bytes), increase executionLimits.maxOutputSize`,"output_size")),this.outputBytes+=a,o}accountResult(t,n="execution",r=Number.POSITIVE_INFINITY){let s=t.internalOutputAccounting,i=Math.min(s?.stdout??0,r),o=Math.min(s?.stderr??0,Math.max(0,r-i)),a=this.appendOutput("stdout",t.stdout,n,i,t.stdoutKind==="bytes"||t.stdoutEncoding==="binary"?"bytes":"text"),l=this.appendOutput("stderr",t.stderr,n,o);return Object.isExtensible(t)?(t.internalOutputAccounting={stdout:a,stderr:l},t):a===0&&l===0?t:{...t,internalOutputAccounting:{stdout:a,stderr:l}}}relinquishOutput(t,n,r){this.assertUsable(),r!==rl&&this.fail(new $(`${n}: unauthorized output accounting release`,"output_size")),(!Number.isSafeInteger(t)||t<0||t>this.outputBytes)&&this.fail(new $(`${n}: invalid output accounting release`,"output_size")),this.outputBytes-=t}enterDepth(t,n=this.limits.maxCallDepth,r){this.assertUsable();let s=typeof n=="number"?n:this.limits.maxCallDepth,i=typeof n=="string"?n:r??t,o=this.depthByKind.get(t)??0;o>=s&&this.fail(new $(`${i}: maximum depth (${s}) exceeded`,"recursion")),this.depthByKind.set(t,o+1);let a=!1;return{release:()=>{if(a)return;a=!0;let l=(this.depthByKind.get(t)??1)-1;l<=0?this.depthByKind.delete(t):this.depthByKind.set(t,l)}}}throwIfAborted(t="execution"){this.signal?.aborted&&this.fail(new rt("",`bash: ${t} aborted
3
- `)),Date.now()-this.startedAt>this.limits.maxExecutionTimeMs&&this.fail(new rt("",`bash: ${t} exceeded execution deadline (${this.limits.maxExecutionTimeMs}ms)
4
- `))}remainingTimeMs(){return Math.max(0,this.limits.maxExecutionTimeMs-(Date.now()-this.startedAt))}registerCleanup(t){this.assertUsable(),this.cleanupCallbacks.push(t);let n=!0;return()=>{if(!n)return;n=!1;let r=this.cleanupCallbacks.indexOf(t);r>=0&&this.cleanupCallbacks.splice(r,1)}}async close(){if(this.closed)return;this.closed=!0;let t=[],n=Date.now()+this.limits.maxExtensionCleanupTimeMs;for(let r=this.cleanupCallbacks.length-1;r>=0;r--)try{let s=n-Date.now();if(s<=0){t.push(new Error("execution cleanup grace period exceeded"));break}let i,o=await Promise.race([Promise.resolve().then(this.cleanupCallbacks[r]).then(()=>({ok:!0}),a=>({ok:!1,error:a})),new Promise(a=>{i=cr(()=>a({ok:!1,error:new Error("execution cleanup grace period exceeded")}),s)})]);if(ur(i),!o.ok&&(t.push(o.error),Date.now()>=n))break}catch(s){t.push(s)}if(this.cleanupCallbacks.length=0,this.depthByKind.clear(),this.bytesByKind.clear(),this.liveBytes=0,t.length>0)throw new AggregateError(t,"execution cleanup failed")}assertExecDepth(t){this.assertUsable(),t>this.limits.maxExecDepth&&this.fail(new $(`maximum nested execution depth (${this.limits.maxExecDepth}) exceeded`,"recursion"))}};function sl(e){let t=Object.create(null);return Object.defineProperties(t,{remainingLiveBytes:{enumerable:!0,get:()=>e.remainingLiveBytes},consumeWork:{enumerable:!0,value:e.consumeWork.bind(e)},consumeLimited:{enumerable:!0,value:e.consumeLimited.bind(e)},consumeInput:{enumerable:!0,value:e.consumeInput.bind(e)},reserveBytes:{enumerable:!0,value:e.reserveBytes.bind(e)},enterDepth:{enumerable:!0,value:e.enterDepth.bind(e)},throwIfAborted:{enumerable:!0,value:e.throwIfAborted.bind(e)},remainingTimeMs:{enumerable:!0,value:e.remainingTimeMs.bind(e)},registerCleanup:{enumerable:!0,value:e.registerCleanup.bind(e)}}),Object.freeze(t)}function il(e,t,n="pipeline"){e.relinquishOutput(t,n,rl)}var xn=new TextEncoder;function Cd(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var Ve=class{data=new Map;entryIdentities=new WeakMap;nextEntryIdentity=1;maxTotalBytes;retainedBytes=0;contentReferences=new WeakMap;materializedContent(t){return t?.type==="file"&&"content"in t?t.content:null}storedByteLength(t){return t===null?0:t instanceof Uint8Array?t.byteLength:B(t)}wouldReleaseBytes(t){let n=this.materializedContent(t);return n===null?0:n instanceof Uint8Array?this.contentReferences.get(n)===1?n.byteLength:0:this.storedByteLength(n)}assertCanAllocate(t,n){let r=this.wouldReleaseBytes(this.data.get(t));if(!Number.isSafeInteger(n)||n<0||n>this.maxTotalBytes-this.retainedBytes+r)throw new Error(`ENOSPC: in-memory filesystem byte limit exceeded (${this.maxTotalBytes} bytes)`)}setEntry(t,n){let r=this.data.get(t),s=this.materializedContent(r),i=this.materializedContent(n);if(s===i){this.data.set(t,n);return}let o=this.wouldReleaseBytes(r),a=i instanceof Uint8Array?this.contentReferences.has(i)?0:i.byteLength:this.storedByteLength(i);if(a>this.maxTotalBytes-this.retainedBytes+o)throw new Error(`ENOSPC: in-memory filesystem byte limit exceeded (${this.maxTotalBytes} bytes)`);if(s instanceof Uint8Array){let l=this.contentReferences.get(s)??0;l<=1?this.contentReferences.delete(s):this.contentReferences.set(s,l-1)}i instanceof Uint8Array&&this.contentReferences.set(i,(this.contentReferences.get(i)??0)+1),this.retainedBytes+=a-o,this.data.set(t,n)}deleteEntry(t){let n=this.data.get(t);if(!n)return!1;let r=this.materializedContent(n),s=this.wouldReleaseBytes(n);if(r instanceof Uint8Array){let i=this.contentReferences.get(r)??0;i<=1?this.contentReferences.delete(r):this.contentReferences.set(r,i-1)}return this.retainedBytes-=s,this.data.delete(t)}contentByteLength(t,n){if(t instanceof Uint8Array)return t.byteLength;if(n==="hex")return Math.floor(t.length/2);if(n==="base64"){let r=t.endsWith("==")?2:t.endsWith("=")?1:0;return Math.max(0,Math.floor(t.length*3/4)-r)}return n==="binary"||n==="latin1"?t.length:B(t)}identityFor(t){let n=this.entryIdentities.get(t);return n||(n=`memfs:${this.nextEntryIdentity++}`,this.entryIdentities.set(t,n)),n}constructor(t,n={}){if(this.maxTotalBytes=n.maxTotalBytes??1024*1024*1024,!Number.isSafeInteger(this.maxTotalBytes)||this.maxTotalBytes<0)throw new Error("InMemoryFs: invalid maxTotalBytes");if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[r,s]of Object.entries(t))typeof s=="function"?this.writeFileLazy(r,s):Cd(s)?this.writeFileSync(r,s.content,void 0,{mode:s.mode,mtime:s.mtime}):this.writeFileSync(r,s)}ensureParentDirs(t){let n=jn(t);n!=="/"&&(this.data.has(n)||(this.ensureParentDirs(n),this.data.set(n,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,n,r,s){z(t,"write");let i=V(t);this.ensureParentDirs(i);let o=ut(r);this.assertCanAllocate(i,this.contentByteLength(n,o));let a=qt(n,o);this.setEntry(i,{type:"file",content:a,mode:s?.mode??420,mtime:s?.mtime??new Date})}writeFileLazy(t,n,r){z(t,"write");let s=V(t);this.ensureParentDirs(s),this.setEntry(s,{type:"file",lazy:n,mode:r?.mode??420,mtime:r?.mtime??new Date})}async materializeLazy(t,n){let r=await n.lazy(),s=typeof r=="string"?xn.encode(r):r,i={type:"file",content:s,mode:n.mode,mtime:n.mtime};return this.assertCanAllocate(t,s.byteLength),this.setEntry(t,i),i}async readFile(t,n){let r=await this.readFileBuffer(t),s=ut(n);return Gt(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return Gt(n,"binary")}async readFileBuffer(t){z(t,"open");let n=this.resolvePathWithSymlinks(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if("lazy"in r){let s=await this.materializeLazy(n,r);return s.content instanceof Uint8Array?s.content:xn.encode(s.content)}return r.content instanceof Uint8Array?r.content:xn.encode(r.content)}async writeFile(t,n,r){this.writeFileSync(t,n,r)}async appendFile(t,n,r){z(t,"append");let s=V(t),i=this.data.get(s);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=ut(r),a=this.contentByteLength(n,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(s,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:xn.encode("content"in l?l.content:"");this.assertCanAllocate(s,c.byteLength+a);let u=qt(n,o),f=new Uint8Array(c.length+u.length);f.set(c),f.set(u,c.length),this.setEntry(s,{type:"file",content:f,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,n,r)}async exists(t){if(t.includes("\0"))return!1;try{let n=this.resolvePathWithSymlinks(t);return this.data.has(n)}catch{return!1}}async stat(t){z(t,"stat");let n=this.resolvePathWithSymlinks(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(n,r));let s=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?s=r.content.length:s=xn.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:s,mtime:r.mtime||new Date,identity:this.identityFor(r)}}async lstat(t){z(t,"lstat");let n=this.resolveIntermediateSymlinks(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime||new Date};r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(n,r));let s=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?s=r.content.length:s=xn.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:s,mtime:r.mtime||new Date,identity:this.identityFor(r)}}resolveIntermediateSymlinks(t){let n=V(t);if(n==="/")return"/";let r=n.slice(1).split("/");if(r.length<=1)return n;let s="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];s=`${s}/${a}`;let l=this.data.get(s),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(s))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(s),s=qn(s,l.target),l=this.data.get(s),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${s}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let n=V(t);if(n==="/")return"/";let r=n.slice(1).split("/"),s="",i=new Set;for(let o of r){s=`${s}/${o}`;let a=this.data.get(s),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(s))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(s),s=qn(s,a.target),a=this.data.get(s),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return s}async mkdir(t,n){this.mkdirSync(t,n)}mkdirSync(t,n){z(t,"mkdir");let r=V(t);if(this.data.has(r)){if(this.data.get(r)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let s=jn(r);if(s!=="/"&&!this.data.has(s))if(n?.recursive)this.mkdirSync(s,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){z(t,"scandir");let n=V(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let s=new Set;for(;r&&r.type==="symlink";){if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);s.add(n),n=qn(n,r.target),r=this.data.get(n)}if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=n==="/"?"/":`${n}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==n&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!o.has(u)&&o.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(o.values()).sort((a,l)=>a.name<l.name?-1:a.name>l.name?1:0)}async rm(t,n){z(t,"rm");let r=V(t),s=this.data.get(r);if(!s){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(s.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!n?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=jt(r,o);await this.rm(a,n)}}}this.deleteEntry(r)}async cp(t,n,r){z(t,"cp"),z(n,"cp");let s=V(t),i=V(n),o=this.data.get(s);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")if(this.ensureParentDirs(i),"content"in o){let a=o.content instanceof Uint8Array?o.content.byteLength:xn.encode(o.content).byteLength;this.assertCanAllocate(i,a);let l=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.setEntry(i,{...o,content:l})}else this.setEntry(i,{...o});else if(o.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);if(Ut(s,i))throw new Error(`EINVAL: cannot copy '${t}' into itself, '${n}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(s);for(let l of a){let c=jt(s,l),u=jt(i,l);await this.cp(c,u,r)}}}async mv(t,n){z(t,"mv"),z(n,"mv");let r=V(t),s=V(n);if(r===s)return;let i=this.data.get(r);if(!i)throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(i.type==="directory"&&Ut(r,s))throw new Error(`EINVAL: cannot move '${t}' into itself, '${n}'`);if(i.type==="directory"){await this.mkdir(s,{recursive:!0});let o=await this.readdir(r);for(let a of o)await this.mv(jt(r,a),jt(s,a));this.deleteEntry(r);return}this.ensureParentDirs(s),this.setEntry(s,i),this.deleteEntry(r)}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,n){return tn(t,n)}async chmod(t,n){z(t,"chmod");let r=V(t),s=this.data.get(r);if(!s)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);s.mode=n}async symlink(t,n){z(n,"symlink");let r=V(n);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,n){z(t,"link"),z(n,"link");let r=V(t),s=V(n),i=this.data.get(r);if(!i)throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(i.type!=="file")throw new Error(`EPERM: operation not permitted, link '${t}'`);if(this.data.has(s))throw new Error(`EEXIST: file already exists, link '${n}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(r,o)),this.ensureParentDirs(s);let a={type:"file",content:o.content,mode:o.mode,mtime:o.mtime};this.entryIdentities.set(a,this.identityFor(o)),this.setEntry(s,a)}async readlink(t){z(t,"readlink");let n=V(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}async realpath(t){z(t,"realpath");let n=this.resolvePathWithSymlinks(t);if(!this.data.has(n))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return n}async utimes(t,n,r){z(t,"utimes");let s=V(t),i=this.resolvePathWithSymlinks(s),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=r}};var ol="5.1.0(1)-release",al="Linux version 5.15.0-generic (just-bash) #1 SMP PREEMPT";function Pi(e){let{pid:t,ppid:n,uid:r,gid:s}=e;return`Name: bash
2
+ import{a as Ht,b as Zt,c as dt}from"./chunks/chunk-WNH3HOQA.js";import{a as Zr}from"./chunks/chunk-BRJERIF4.js";import{c as Oi,e as Qa}from"./chunks/chunk-KIGPB52X.js";import{a as Gr,b as Hr,d as hr,e as pr}from"./chunks/chunk-PS2RJNZZ.js";import{a as an}from"./chunks/chunk-SGX4WOAM.js";import{a as Ri}from"./chunks/chunk-L2UW7DWF.js";import{a as on,b as Xe,c as wr}from"./chunks/chunk-DLL7UR66.js";import{a as gr,b as Za}from"./chunks/chunk-BKUWXPEM.js";import{a as ge}from"./chunks/chunk-73JQKNZT.js";import{a as Xr,b as Yr}from"./chunks/chunk-AYSZ5MAE.js";import{a as jn,b as Ve}from"./chunks/chunk-ZBUZKIPX.js";import"./chunks/chunk-57LGFT4S.js";import{c as nn,d as Gn}from"./chunks/chunk-FTET43KM.js";import"./chunks/chunk-STHBFACM.js";import{a as yr,b as St,c as rn,d as Jr,e as z,f as qt,g as U,h as Hn,i as sn,j as Cn,k as Gt,l as Zn}from"./chunks/chunk-4CC3OZPU.js";import{a as Jt,b as tt,c as nt,d as Be,e as Qe,f as Ke,g as G,h as ue,i as rt,j as en,k as Qr,l as C,m as st,n as Re,o as tn,p as Kr,q as ut}from"./chunks/chunk-TVCZIH6M.js";import{a as W,b as mr,c as $n,d as Nd,e as Yt,f as Ci,g as qn,h as Rd,i as Ut,j as Ni,k as Od,l as Dd}from"./chunks/chunk-GN6CQ3J4.js";import{a as x,b as Id,c as ft,d as Td}from"./chunks/chunk-T5ZEIOJ3.js";import{a as Ot}from"./chunks/chunk-FOCWZZDE.js";import{a as jt}from"./chunks/chunk-W5DWRFSU.js";import{a as $i}from"./chunks/chunk-NCUTH6QL.js";import*as Fe from"node:path";var Nn=[{name:"echo",load:async()=>(await import("./chunks/echo-PLLZYM2L.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-VZBWBIJB.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-B2NSYQ3N.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-WJ7EIFVM.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-Z6MMWH3D.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-UMUDM2L2.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-W4DF6Z4T.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-IGPLE632.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-NWITRTH3.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-E2NFLGRQ.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-CEM7GDB5.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-XZNKTJHL.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-76BPYV5F.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-XCFO7YD2.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-6UIPFWVJ.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-UBGSN4JF.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-7WVM7GV4.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-LXFZND2P.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-QDFNKAUW.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-QDFNKAUW.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-QDFNKAUW.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-J7XDRV3B.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-LIRH26EA.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-W6BNZEJN.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-CB5GO7XH.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-PAEPA27E.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-DTWKU2MC.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-FMDNVWQN.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-ZNHNSRBW.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-UI2LA3GA.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-EPOS3MFH.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-IELOWYJG.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-QJBPHRFJ.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-J3VOSOMK.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-YD5BWFH4.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-VLFTYX2Z.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-D4HPO4G5.js")).split},{name:"column",load:async()=>(await import("./chunks/column-QJI65SH2.js")).column},{name:"join",load:async()=>(await import("./chunks/join-C2B6NGXH.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-OOWSWHRQ.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-EW6OHRPJ.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-SJZQ5W65.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-Z2ZMOOW2.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-7OOL2MH6.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-IFLWEM6M.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-VUUMB47B.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-VUUMB47B.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-T5TO5GWK.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-T5TO5GWK.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-3N762S3K.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-VQEXRD3C.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-QUBPEGGU.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-QUBPEGGU.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-KPIUNI6K.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-HIEWVHJ2.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-HIEWVHJ2.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-NY7PCVMH.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-MHVQ5XHI.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-CSARC7WF.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-7OEDRA27.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-25QUPVDK.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-37GM7IIL.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-NERE2JJ2.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-B6KDLMYQ.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-XSBELPAC.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-JEDX55KS.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-BLPZJ6MP.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-VJZ4PHQ4.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-URNAD6FQ.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-PE6BPRPA.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-QDDMBDU7.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-UWVKETYW.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-YXC4HBTR.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-CESD3CQR.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-KR6E7UIR.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-Z4AIL3P4.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-HBDKZBIP.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-HBDKZBIP.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-HBDKZBIP.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Nn.push({name:"tar",load:async()=>(await import("./chunks/tar-B72KU357.js")).tarCommand}),Nn.push({name:"yq",load:async()=>(await import("./chunks/yq-FGNXZCGX.js")).yqCommand}),Nn.push({name:"xan",load:async()=>(await import("./chunks/xan-UIGVJCMA.js")).xanCommand}),Nn.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-3HL2ECCQ.js")).sqlite3Command}));var es=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(es.push({name:"python3",load:async()=>(await import("./chunks/python3-W4UMQJAQ.js")).python3Command}),es.push({name:"python",load:async()=>(await import("./chunks/python3-W4UMQJAQ.js")).pythonCommand}));var ts=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(ts.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-IREGAOMH.js")).jsExecCommand}),ts.push({name:"node",load:async()=>(await import("./chunks/js-exec-IREGAOMH.js")).nodeStubCommand}));var Xa=[{name:"curl",load:async()=>(await import("./chunks/curl-K4WT7UPN.js")).curlCommand}],Ka=new Map;function ns(e){return{name:e.name,async execute(t,n){let r=Ka.get(e.name);if(r||(r=await Ve.runTrustedAsync(()=>e.load()),Ka.set(e.name,r)),n.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:s}=await import("./chunks/flag-coverage-PIF5QRO7.js");s(n.coverage,e.name,t)}return r.execute(t,n)}}}function _d(){return Nn.map(e=>e.name)}function Ld(){return Xa.map(e=>e.name)}function Ya(e){return(e?Nn.filter(n=>e.includes(n.name)):Nn).map(ns)}function Ja(){return Xa.map(ns)}function Fd(){return es.map(e=>e.name)}function el(){return es.map(ns)}function Md(){return ts.map(e=>e.name)}function tl(){return ts.map(ns)}var nl=new WeakMap,rl=new WeakSet;function rs(e){let t=nl.get(e);return t===void 0&&(t=Object.freeze(Object.create(null)),nl.set(e,t),rl.add(t)),t}function sl(e){return rl.has(e)}var il={maxSourceBytes:67108864,maxExecDepth:64,maxCallDepth:100,maxCommandCount:1e5,maxLoopIterations:1e5,maxAwkIterations:1e5,maxSedIterations:1e5,maxJqIterations:1e7,maxQueryTokens:1e5,maxQueryDepth:1e3,maxQueryElements:1e6,maxAwkParserTokens:1e5,maxAwkParserDepth:256,maxAwkParserOperations:1e6,maxCsvRows:1e6,maxCsvCells:1e7,maxWorkUnits:1e8,maxTraversalEntries:1e6,maxTraversalDepth:1e3,maxTraversalWork:1e6,maxLiveBytes:536870912,maxInputBytes:536870912,maxFileSystemBytes:1073741824,maxDatabaseBytes:1073741824,maxDatabaseResultBytes:268435456,maxArchiveBytes:1073741824,maxArchiveCompressedBytes:536870912,maxArchiveEntryBytes:536870912,maxArchiveEntries:1e6,maxWorkerMessageBytes:67108864,maxExecutionTimeMs:36e5,maxExtensionCleanupTimeMs:100,maxSqliteTimeoutMs:3e4,maxPythonTimeoutMs:3e4,maxJsTimeoutMs:3e4,maxGlobOperations:1e6,maxStringLength:67108864,maxArrayElements:1e6,maxHeredocSize:67108864,maxSubstitutionDepth:50,maxBraceExpansionResults:1e5,maxOutputSize:268435456,maxFileDescriptors:4096,maxSourceDepth:100},Bd={...il,maxSourceBytes:8*1024*1024,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:1e4,maxJsTimeoutMs:1e4,maxExtensionCleanupTimeMs:25,maxGlobOperations:1e5,maxStringLength:10*1024*1024,maxArrayElements:1e5,maxHeredocSize:10*1024*1024,maxBraceExpansionResults:1e4,maxOutputSize:10*1024*1024,maxFileDescriptors:1024,maxQueryTokens:25e3,maxQueryDepth:256,maxQueryElements:1e5,maxAwkParserTokens:25e3,maxAwkParserDepth:128,maxAwkParserOperations:1e5,maxCsvRows:1e5,maxCsvCells:1e6,maxWorkUnits:1e5,maxTraversalEntries:1e5,maxTraversalDepth:256,maxTraversalWork:1e5,maxLiveBytes:64*1024*1024,maxInputBytes:32*1024*1024,maxFileSystemBytes:128*1024*1024,maxDatabaseBytes:64*1024*1024,maxDatabaseResultBytes:16*1024*1024,maxArchiveBytes:128*1024*1024,maxArchiveCompressedBytes:64*1024*1024,maxArchiveEntryBytes:64*1024*1024,maxArchiveEntries:1e5,maxWorkerMessageBytes:16*1024*1024,maxExecutionTimeMs:3e4};function ss(e,t="normal"){if(t!=="normal"&&t!=="hardened")throw new RangeError('executionLimitProfile must be "normal" or "hardened"');let n=t==="hardened"?Bd:il;if(!e)return{...n};let r={maxSourceBytes:e.maxSourceBytes??n.maxSourceBytes,maxExecDepth:e.maxExecDepth??n.maxExecDepth,maxCallDepth:e.maxCallDepth??n.maxCallDepth,maxCommandCount:e.maxCommandCount??n.maxCommandCount,maxLoopIterations:e.maxLoopIterations??n.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??n.maxAwkIterations,maxSedIterations:e.maxSedIterations??n.maxSedIterations,maxJqIterations:e.maxJqIterations??n.maxJqIterations,maxQueryTokens:e.maxQueryTokens??n.maxQueryTokens,maxQueryDepth:e.maxQueryDepth??n.maxQueryDepth,maxQueryElements:e.maxQueryElements??n.maxQueryElements,maxAwkParserTokens:e.maxAwkParserTokens??n.maxAwkParserTokens,maxAwkParserDepth:e.maxAwkParserDepth??n.maxAwkParserDepth,maxAwkParserOperations:e.maxAwkParserOperations??n.maxAwkParserOperations,maxCsvRows:e.maxCsvRows??n.maxCsvRows,maxCsvCells:e.maxCsvCells??n.maxCsvCells,maxWorkUnits:e.maxWorkUnits??n.maxWorkUnits,maxTraversalEntries:e.maxTraversalEntries??n.maxTraversalEntries,maxTraversalDepth:e.maxTraversalDepth??n.maxTraversalDepth,maxTraversalWork:e.maxTraversalWork??n.maxTraversalWork,maxLiveBytes:e.maxLiveBytes??n.maxLiveBytes,maxInputBytes:e.maxInputBytes??n.maxInputBytes,maxFileSystemBytes:e.maxFileSystemBytes??n.maxFileSystemBytes,maxDatabaseBytes:e.maxDatabaseBytes??n.maxDatabaseBytes,maxDatabaseResultBytes:e.maxDatabaseResultBytes??n.maxDatabaseResultBytes,maxArchiveBytes:e.maxArchiveBytes??n.maxArchiveBytes,maxArchiveCompressedBytes:e.maxArchiveCompressedBytes??n.maxArchiveCompressedBytes,maxArchiveEntryBytes:e.maxArchiveEntryBytes??n.maxArchiveEntryBytes,maxArchiveEntries:e.maxArchiveEntries??n.maxArchiveEntries,maxWorkerMessageBytes:e.maxWorkerMessageBytes??n.maxWorkerMessageBytes,maxExecutionTimeMs:e.maxExecutionTimeMs??n.maxExecutionTimeMs,maxExtensionCleanupTimeMs:e.maxExtensionCleanupTimeMs??n.maxExtensionCleanupTimeMs,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??n.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??n.maxPythonTimeoutMs,maxJsTimeoutMs:e.maxJsTimeoutMs??n.maxJsTimeoutMs,maxGlobOperations:e.maxGlobOperations??n.maxGlobOperations,maxStringLength:e.maxStringLength??n.maxStringLength,maxArrayElements:e.maxArrayElements??n.maxArrayElements,maxHeredocSize:e.maxHeredocSize??n.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??n.maxSubstitutionDepth,maxBraceExpansionResults:e.maxBraceExpansionResults??n.maxBraceExpansionResults,maxOutputSize:e.maxOutputSize??n.maxOutputSize,maxFileDescriptors:e.maxFileDescriptors??n.maxFileDescriptors,maxSourceDepth:e.maxSourceDepth??n.maxSourceDepth};for(let s of Object.keys(r)){let i=r[s];if(i!==Number.POSITIVE_INFINITY&&(!Number.isSafeInteger(i)||i<0))throw new RangeError(`${s} must be a non-negative safe integer or positive Infinity`)}return r}function Wd(e){let{executionLimits:t,executionLimitProfile:n,fs:r,stdin:s=Ci,...i}=e;return{fs:r,fsIdentity:i.fsIdentity??rs(r),cwd:"/",env:new Map,stdin:s,limits:ss(t,n),...i}}function ol(e){return"load"in e&&typeof e.load=="function"}function Vd(e,t,n={}){return{name:e,trusted:n.trusted!==!1,execute:t}}function al(e){let t=null,n=null;return{name:e.name,trusted:e.trusted!==!1,async execute(r,s){if(!t){let o=n;o||(o=e.load().then(a=>(t=a,a)),n=o);try{t=await o}catch(a){throw n===o&&(n=null),a}}let i=t;if(!i)throw new Error(`Failed to load command: ${e.name}`);return i.execute(r,s)}}}var ll=Object.freeze(Object.create(null)),is=class{limits;signal;abortOnUnresolvedCommands;commandCount=0;workUnits=0;liveBytes=0;inputBytes=0;outputBytes=0;countersByKind=new Map;bytesByKind=new Map;depthByKind=new Map;cleanupCallbacks=[];poisoned;closed=!1;startedAt=Date.now();unresolvedCommands=new Set;get remainingLiveBytes(){return Math.max(0,this.limits.maxLiveBytes-this.liveBytes)}get outputBytesUsed(){return this.outputBytes}constructor(t,n=void 0,r=!1){this.limits=t,this.signal=n,this.abortOnUnresolvedCommands=r}recordUnresolvedCommand(t){this.unresolvedCommands.add(t)}get unresolvedCommandNames(){return[...this.unresolvedCommands]}fail(t){throw this.poisoned??=t,this.poisoned}poisonAfterAbort(t){this.poisoned??=t}assertUsable(){if(this.poisoned)throw this.poisoned;if(this.closed)throw new Error("execution budget is already closed");this.throwIfAborted()}chargeCommand(){return this.consume("commands",1,"execution")}consumeWork(t=1,n="execution"){return this.consume("work",t,n)}consumeLimited(t,n,r,s=t){this.assertUsable();let i=this.countersByKind.get(t)??0;return(!Number.isSafeInteger(n)||n<0||!Number.isSafeInteger(r)||r<0||n>r-i)&&this.fail(new C(`${s}: ${t} work limit exceeded (${r})`,"iterations")),n>this.limits.maxWorkUnits-this.workUnits&&this.fail(new C(`${s}: aggregate work limit exceeded (${this.limits.maxWorkUnits})`,"iterations")),this.countersByKind.set(t,i+n),this.workUnits+=n,i+n}consumeInput(t,n="execution"){return this.assertUsable(),(!Number.isSafeInteger(t)||t<0||t>this.limits.maxInputBytes-this.inputBytes)&&this.fail(new C(`${n}: aggregate input size limit exceeded (${this.limits.maxInputBytes} bytes)`,"string_length")),this.inputBytes+=t,this.inputBytes}consume(t,n=1,r=t){this.assertUsable();let s=this.countersByKind.get(t)??0,i=t==="commands"?this.commandCount:this.workUnits,o=t==="commands"?this.limits.maxCommandCount:this.limits.maxWorkUnits;(!Number.isSafeInteger(n)||n<0||n>o-i)&&this.fail(new C(t==="commands"?`too many commands executed (>${o}), increase executionLimits.maxCommandCount`:`${r}: ${t} work limit exceeded (${o})`,t==="commands"?"commands":"iterations"));let a=i+n;return t==="commands"?this.commandCount=a:this.workUnits=a,this.countersByKind.set(t,s+n),a}reserveBytes(t,n,r){this.assertUsable();let s=typeof t=="string"?t:"live",i=typeof t=="string"?n:t,o=typeof t=="string"?r??s:n??"execution";(!Number.isSafeInteger(i)||i<0||i>this.limits.maxLiveBytes-this.liveBytes)&&this.fail(new C(`${o}: live byte limit exceeded (${this.limits.maxLiveBytes} bytes)`,"string_length")),this.liveBytes+=i,this.bytesByKind.set(s,(this.bytesByKind.get(s)??0)+i);let a=!1;return{release:()=>{if(a)return;a=!0,this.liveBytes-=i;let l=(this.bytesByKind.get(s)??i)-i;l<=0?this.bytesByKind.delete(s):this.bytesByKind.set(s,l)}}}appendOutput(t,n,r="execution",s=0,i="text"){this.assertUsable();let o=i==="bytes"?n.length:W(n);(!Number.isSafeInteger(s)||s<0||s>o)&&this.fail(new C(`${r}: invalid ${t} accounting`,"output_size"));let a=o-s;return a>this.limits.maxOutputSize-this.outputBytes&&this.fail(new C(`${r}: total output size exceeded (>${this.limits.maxOutputSize} bytes), increase executionLimits.maxOutputSize`,"output_size")),this.outputBytes+=a,o}accountResult(t,n="execution",r=Number.POSITIVE_INFINITY){let s=t.internalOutputAccounting,i=Math.min(s?.stdout??0,r),o=Math.min(s?.stderr??0,Math.max(0,r-i)),a=this.appendOutput("stdout",t.stdout,n,i,t.stdoutKind==="bytes"||t.stdoutEncoding==="binary"?"bytes":"text"),l=this.appendOutput("stderr",t.stderr,n,o);return Object.isExtensible(t)?(t.internalOutputAccounting={stdout:a,stderr:l},t):a===0&&l===0?t:{...t,internalOutputAccounting:{stdout:a,stderr:l}}}relinquishOutput(t,n,r){this.assertUsable(),r!==ll&&this.fail(new C(`${n}: unauthorized output accounting release`,"output_size")),(!Number.isSafeInteger(t)||t<0||t>this.outputBytes)&&this.fail(new C(`${n}: invalid output accounting release`,"output_size")),this.outputBytes-=t}enterDepth(t,n=this.limits.maxCallDepth,r){this.assertUsable();let s=typeof n=="number"?n:this.limits.maxCallDepth,i=typeof n=="string"?n:r??t,o=this.depthByKind.get(t)??0;o>=s&&this.fail(new C(`${i}: maximum depth (${s}) exceeded`,"recursion")),this.depthByKind.set(t,o+1);let a=!1;return{release:()=>{if(a)return;a=!0;let l=(this.depthByKind.get(t)??1)-1;l<=0?this.depthByKind.delete(t):this.depthByKind.set(t,l)}}}throwIfAborted(t="execution"){this.signal?.aborted&&this.fail(new st("",`bash: ${t} aborted
3
+ `)),Date.now()-this.startedAt>this.limits.maxExecutionTimeMs&&this.fail(new st("",`bash: ${t} exceeded execution deadline (${this.limits.maxExecutionTimeMs}ms)
4
+ `))}remainingTimeMs(){return Math.max(0,this.limits.maxExecutionTimeMs-(Date.now()-this.startedAt))}registerCleanup(t){this.assertUsable(),this.cleanupCallbacks.push(t);let n=!0;return()=>{if(!n)return;n=!1;let r=this.cleanupCallbacks.indexOf(t);r>=0&&this.cleanupCallbacks.splice(r,1)}}async close(){if(this.closed)return;this.closed=!0;let t=[],n=Date.now()+this.limits.maxExtensionCleanupTimeMs;for(let r=this.cleanupCallbacks.length-1;r>=0;r--)try{let s=n-Date.now();if(s<=0){t.push(new Error("execution cleanup grace period exceeded"));break}let i,o=await Promise.race([Promise.resolve().then(this.cleanupCallbacks[r]).then(()=>({ok:!0}),a=>({ok:!1,error:a})),new Promise(a=>{i=hr(()=>a({ok:!1,error:new Error("execution cleanup grace period exceeded")}),s)})]);if(pr(i),!o.ok&&(t.push(o.error),Date.now()>=n))break}catch(s){t.push(s)}if(this.cleanupCallbacks.length=0,this.depthByKind.clear(),this.bytesByKind.clear(),this.liveBytes=0,t.length>0)throw new AggregateError(t,"execution cleanup failed")}assertExecDepth(t){this.assertUsable(),t>this.limits.maxExecDepth&&this.fail(new C(`maximum nested execution depth (${this.limits.maxExecDepth}) exceeded`,"recursion"))}};function cl(e){let t=Object.create(null);return Object.defineProperties(t,{remainingLiveBytes:{enumerable:!0,get:()=>e.remainingLiveBytes},consumeWork:{enumerable:!0,value:e.consumeWork.bind(e)},consumeLimited:{enumerable:!0,value:e.consumeLimited.bind(e)},consumeInput:{enumerable:!0,value:e.consumeInput.bind(e)},reserveBytes:{enumerable:!0,value:e.reserveBytes.bind(e)},enterDepth:{enumerable:!0,value:e.enterDepth.bind(e)},throwIfAborted:{enumerable:!0,value:e.throwIfAborted.bind(e)},remainingTimeMs:{enumerable:!0,value:e.remainingTimeMs.bind(e)},registerCleanup:{enumerable:!0,value:e.registerCleanup.bind(e)}}),Object.freeze(t)}function ul(e,t,n="pipeline"){e.relinquishOutput(t,n,ll)}var Rn=new TextEncoder;function zd(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var ze=class{data=new Map;entryIdentities=new WeakMap;nextEntryIdentity=1;maxTotalBytes;retainedBytes=0;contentReferences=new WeakMap;materializedContent(t){return t?.type==="file"&&"content"in t?t.content:null}storedByteLength(t){return t===null?0:t instanceof Uint8Array?t.byteLength:W(t)}wouldReleaseBytes(t){let n=this.materializedContent(t);return n===null?0:n instanceof Uint8Array?this.contentReferences.get(n)===1?n.byteLength:0:this.storedByteLength(n)}assertCanAllocate(t,n){let r=this.wouldReleaseBytes(this.data.get(t));if(!Number.isSafeInteger(n)||n<0||n>this.maxTotalBytes-this.retainedBytes+r)throw new x("ENOSPC",`in-memory filesystem byte limit exceeded (${this.maxTotalBytes} bytes)`)}setEntry(t,n){let r=this.data.get(t),s=this.materializedContent(r),i=this.materializedContent(n);if(s===i){this.data.set(t,n);return}let o=this.wouldReleaseBytes(r),a=i instanceof Uint8Array?this.contentReferences.has(i)?0:i.byteLength:this.storedByteLength(i);if(a>this.maxTotalBytes-this.retainedBytes+o)throw new x("ENOSPC",`in-memory filesystem byte limit exceeded (${this.maxTotalBytes} bytes)`);if(s instanceof Uint8Array){let l=this.contentReferences.get(s)??0;l<=1?this.contentReferences.delete(s):this.contentReferences.set(s,l-1)}i instanceof Uint8Array&&this.contentReferences.set(i,(this.contentReferences.get(i)??0)+1),this.retainedBytes+=a-o,this.data.set(t,n)}deleteEntry(t){let n=this.data.get(t);if(!n)return!1;let r=this.materializedContent(n),s=this.wouldReleaseBytes(n);if(r instanceof Uint8Array){let i=this.contentReferences.get(r)??0;i<=1?this.contentReferences.delete(r):this.contentReferences.set(r,i-1)}return this.retainedBytes-=s,this.data.delete(t)}contentByteLength(t,n){if(t instanceof Uint8Array)return t.byteLength;if(n==="hex")return Math.floor(t.length/2);if(n==="base64"){let r=t.endsWith("==")?2:t.endsWith("=")?1:0;return Math.max(0,Math.floor(t.length*3/4)-r)}return n==="binary"||n==="latin1"?t.length:W(t)}identityFor(t){let n=this.entryIdentities.get(t);return n||(n=`memfs:${this.nextEntryIdentity++}`,this.entryIdentities.set(t,n)),n}constructor(t,n={}){if(this.maxTotalBytes=n.maxTotalBytes??1024*1024*1024,!Number.isSafeInteger(this.maxTotalBytes)||this.maxTotalBytes<0)throw new Error("InMemoryFs: invalid maxTotalBytes");if(this.data.set("/",{type:"directory",mode:St,mtime:new Date}),t)for(let[r,s]of Object.entries(t))typeof s=="function"?this.writeFileLazy(r,s):zd(s)?this.writeFileSync(r,s.content,void 0,{mode:s.mode,mtime:s.mtime}):this.writeFileSync(r,s)}ensureParentDirs(t){let n=Hn(t);n!=="/"&&(this.data.has(n)||(this.ensureParentDirs(n),this.data.set(n,{type:"directory",mode:St,mtime:new Date})))}writeFileSync(t,n,r,s){U(t,"write");let i=z(t);this.ensureParentDirs(i);let o=dt(r);this.assertCanAllocate(i,this.contentByteLength(n,o));let a=Ht(n,o);this.setEntry(i,{type:"file",content:a,mode:s?.mode??rn,mtime:s?.mtime??new Date})}writeFileLazy(t,n,r){U(t,"write");let s=z(t);this.ensureParentDirs(s),this.setEntry(s,{type:"file",lazy:n,mode:r?.mode??rn,mtime:r?.mtime??new Date})}async materializeLazy(t,n){let r=await n.lazy(),s=typeof r=="string"?Rn.encode(r):r,i={type:"file",content:s,mode:n.mode,mtime:n.mtime};return this.assertCanAllocate(t,s.byteLength),this.setEntry(t,i),i}async readFile(t,n){let r=await this.readFileBuffer(t),s=dt(n);return Zt(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return Zt(n,"binary")}async readFileBuffer(t){U(t,"open");let n=this.resolvePathWithSymlinks(t),r=this.data.get(n);if(!r)throw new x("ENOENT",`no such file or directory, open '${t}'`);if(r.type!=="file")throw new x("EISDIR",`illegal operation on a directory, read '${t}'`);if("lazy"in r){let s=await this.materializeLazy(n,r);return s.content instanceof Uint8Array?s.content:Rn.encode(s.content)}return r.content instanceof Uint8Array?r.content:Rn.encode(r.content)}async writeFile(t,n,r){this.writeFileSync(t,n,r)}async appendFile(t,n,r){U(t,"append");let s=z(t),i=this.data.get(s);if(i&&i.type==="directory")throw new x("EISDIR",`illegal operation on a directory, write '${t}'`);let o=dt(r),a=this.contentByteLength(n,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(s,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:Rn.encode("content"in l?l.content:"");this.assertCanAllocate(s,c.byteLength+a);let u=Ht(n,o),f=new Uint8Array(c.length+u.length);f.set(c),f.set(u,c.length),this.setEntry(s,{type:"file",content:f,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,n,r)}async exists(t){if(t.includes("\0"))return!1;try{let n=this.resolvePathWithSymlinks(t);return this.data.has(n)}catch{return!1}}async stat(t){U(t,"stat");let n=this.resolvePathWithSymlinks(t),r=this.data.get(n);if(!r)throw new x("ENOENT",`no such file or directory, stat '${t}'`);r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(n,r));let s=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?s=r.content.length:s=Rn.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:s,mtime:r.mtime||new Date,identity:this.identityFor(r)}}async lstat(t){U(t,"lstat");let n=this.resolveIntermediateSymlinks(t),r=this.data.get(n);if(!r)throw new x("ENOENT",`no such file or directory, lstat '${t}'`);if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime||new Date};r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(n,r));let s=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?s=r.content.length:s=Rn.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:s,mtime:r.mtime||new Date,identity:this.identityFor(r)}}resolveIntermediateSymlinks(t){let n=z(t);if(n==="/")return"/";let r=n.slice(1).split("/");if(r.length<=1)return n;let s="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];s=`${s}/${a}`;let l=this.data.get(s),c=0,u=yr;for(;l&&l.type==="symlink"&&c<u;){if(i.has(s))throw new x("ELOOP",`too many levels of symbolic links, lstat '${t}'`);i.add(s),s=Zn(s,l.target),l=this.data.get(s),c++}if(c>=u)throw new x("ELOOP",`too many levels of symbolic links, lstat '${t}'`)}return`${s}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let n=z(t);if(n==="/")return"/";let r=n.slice(1).split("/"),s="",i=new Set;for(let o of r){s=`${s}/${o}`;let a=this.data.get(s),l=0,c=yr;for(;a&&a.type==="symlink"&&l<c;){if(i.has(s))throw new x("ELOOP",`too many levels of symbolic links, open '${t}'`);i.add(s),s=Zn(s,a.target),a=this.data.get(s),l++}if(l>=c)throw new x("ELOOP",`too many levels of symbolic links, open '${t}'`)}return s}async mkdir(t,n){this.mkdirSync(t,n)}mkdirSync(t,n){U(t,"mkdir");let r=z(t);if(this.data.has(r)){if(this.data.get(r)?.type==="file")throw new x("EEXIST",`file already exists, mkdir '${t}'`);if(!n?.recursive)throw new x("EEXIST",`directory already exists, mkdir '${t}'`);return}let s=Hn(r);if(s!=="/"&&!this.data.has(s))if(n?.recursive)this.mkdirSync(s,{recursive:!0});else throw new x("ENOENT",`no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:St,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){U(t,"scandir");let n=z(t),r=this.data.get(n);if(!r)throw new x("ENOENT",`no such file or directory, scandir '${t}'`);let s=new Set;for(;r&&r.type==="symlink";){if(s.has(n))throw new x("ELOOP",`too many levels of symbolic links, scandir '${t}'`);s.add(n),n=Zn(n,r.target),r=this.data.get(n)}if(!r)throw new x("ENOENT",`no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new x("ENOTDIR",`not a directory, scandir '${t}'`);let i=n==="/"?"/":`${n}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==n&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!o.has(u)&&o.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(o.values()).sort((a,l)=>a.name<l.name?-1:a.name>l.name?1:0)}async rm(t,n){U(t,"rm");let r=z(t),s=this.data.get(r);if(!s){if(n?.force)return;throw new x("ENOENT",`no such file or directory, rm '${t}'`)}if(s.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!n?.recursive)throw new x("ENOTEMPTY",`directory not empty, rm '${t}'`);for(let o of i){let a=Gt(r,o);await this.rm(a,n)}}}this.deleteEntry(r)}async cp(t,n,r){U(t,"cp"),U(n,"cp");let s=z(t),i=z(n),o=this.data.get(s);if(!o)throw new x("ENOENT",`no such file or directory, cp '${t}'`);if(o.type==="file")if(this.ensureParentDirs(i),"content"in o){let a=o.content instanceof Uint8Array?o.content.byteLength:Rn.encode(o.content).byteLength;this.assertCanAllocate(i,a);let l=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.setEntry(i,{...o,content:l})}else this.setEntry(i,{...o});else if(o.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!r?.recursive)throw new x("EISDIR",`is a directory, cp '${t}'`);if(qt(s,i))throw new x("EINVAL",`cannot copy '${t}' into itself, '${n}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(s);for(let l of a){let c=Gt(s,l),u=Gt(i,l);await this.cp(c,u,r)}}}async mv(t,n){U(t,"mv"),U(n,"mv");let r=z(t),s=z(n);if(r===s)return;let i=this.data.get(r);if(!i)throw new x("ENOENT",`no such file or directory, mv '${t}'`);if(i.type==="directory"&&qt(r,s))throw new x("EINVAL",`cannot move '${t}' into itself, '${n}'`);if(i.type==="directory"){await this.mkdir(s,{recursive:!0});let o=await this.readdir(r);for(let a of o)await this.mv(Gt(r,a),Gt(s,a));this.deleteEntry(r);return}this.ensureParentDirs(s),this.setEntry(s,i),this.deleteEntry(r)}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,n){return sn(t,n)}async chmod(t,n){U(t,"chmod");let r=z(t),s=this.data.get(r);if(!s)throw new x("ENOENT",`no such file or directory, chmod '${t}'`);s.mode=n}async symlink(t,n){U(n,"symlink");let r=z(n);if(this.data.has(r))throw new x("EEXIST",`file already exists, symlink '${n}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:Jr,mtime:new Date})}async link(t,n){U(t,"link"),U(n,"link");let r=z(t),s=z(n),i=this.data.get(r);if(!i)throw new x("ENOENT",`no such file or directory, link '${t}'`);if(i.type!=="file")throw new x("EPERM",`operation not permitted, link '${t}'`);if(this.data.has(s))throw new x("EEXIST",`file already exists, link '${n}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(r,o)),this.ensureParentDirs(s);let a={type:"file",content:o.content,mode:o.mode,mtime:o.mtime};this.entryIdentities.set(a,this.identityFor(o)),this.setEntry(s,a)}async readlink(t){U(t,"readlink");let n=z(t),r=this.data.get(n);if(!r)throw new x("ENOENT",`no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new x("EINVAL",`invalid argument, readlink '${t}'`);return r.target}async realpath(t){U(t,"realpath");let n=this.resolvePathWithSymlinks(t);if(!this.data.has(n))throw new x("ENOENT",`no such file or directory, realpath '${t}'`);return n}async utimes(t,n,r){U(t,"utimes");let s=z(t),i=this.resolvePathWithSymlinks(s),o=this.data.get(i);if(!o)throw new x("ENOENT",`no such file or directory, utimes '${t}'`);o.mtime=r}};var fl="5.1.0(1)-release",dl="Linux version 5.15.0-generic (just-bash) #1 SMP PREEMPT";function Di(e){let{pid:t,ppid:n,uid:r,gid:s}=e;return`Name: bash
5
5
  State: R (running)
6
6
  Pid: ${t}
7
7
  PPid: ${n}
8
8
  Uid: ${r} ${r} ${r} ${r}
9
9
  Gid: ${s} ${s} ${s} ${s}
10
- `}function Nd(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Rd(e,t){e.mkdirSync("/bin",{recursive:!0}),e.mkdirSync("/usr/bin",{recursive:!0}),t&&(e.mkdirSync("/home/user",{recursive:!0}),e.mkdirSync("/tmp",{recursive:!0}))}function Od(e){e.mkdirSync("/dev",{recursive:!0}),e.mkdirSync("/dev/fd",{recursive:!0}),e.writeFileSync("/dev/null",""),e.writeFileSync("/dev/zero",new Uint8Array(0)),e.writeFileSync("/dev/stdin",""),e.writeFileSync("/dev/stdout",""),e.writeFileSync("/dev/stderr","")}function Dd(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${al}
10
+ `}function Ud(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function jd(e,t){e.mkdirSync("/bin",{recursive:!0}),e.mkdirSync("/usr/bin",{recursive:!0}),t&&(e.mkdirSync("/home/user",{recursive:!0}),e.mkdirSync("/tmp",{recursive:!0}))}function qd(e){e.mkdirSync("/dev",{recursive:!0}),e.mkdirSync("/dev/fd",{recursive:!0}),e.writeFileSync("/dev/null",""),e.writeFileSync("/dev/zero",new Uint8Array(0)),e.writeFileSync("/dev/stdin",""),e.writeFileSync("/dev/stdout",""),e.writeFileSync("/dev/stderr","")}function Gd(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${dl}
11
11
  `),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
12
- `),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>Pi(t)):e.writeFileSync("/proc/self/status",Pi(t)),e.writeFileSync("/proc/self/fd/0","/dev/stdin"),e.writeFileSync("/proc/self/fd/1","/dev/stdout"),e.writeFileSync("/proc/self/fd/2","/dev/stderr")}function ll(e,t,n={pid:1,ppid:0,uid:1e3,gid:1e3}){Nd(e)&&(Rd(e,t),Od(e),Dd(e,n))}function ts(e){let t={commands:new Set,definedFunctions:new Set,definedAliases:new Set};return xi(e,t),{commands:[...t.commands],definedFunctions:t.definedFunctions,definedAliases:t.definedAliases}}function Id(e){return e.parts.length===1&&e.parts[0].type==="Literal"?e.parts[0].value:null}function Td(e,t){for(let n of e){let r=n.parts[0];if(r?.type!=="Literal")continue;let s=/^([A-Za-z_][A-Za-z0-9_]*)=/.exec(r.value);s&&t.definedAliases.add(s[1])}}function xi(e,t){for(let n of e.statements)Rt(n,t)}function Rt(e,t){for(let n of e.pipelines)_d(n,t)}function _d(e,t){for(let n of e.commands)cl(n,t)}function cl(e,t){switch(e.type){case"SimpleCommand":if(e.name){let n=Id(e.name);n&&(t.commands.add(n),n==="alias"&&Td(e.args,t)),ze(e.name.parts,t)}for(let n of e.args)ze(n.parts,t);for(let n of e.assignments)if(n.value&&ze(n.value.parts,t),n.array)for(let r of n.array)ze(r.parts,t);for(let n of e.redirections)n.target.type==="Word"?ze(n.target.parts,t):n.target.type==="HereDoc"&&!n.target.quoted&&ze(n.target.content.parts,t);break;case"If":for(let n of e.clauses){for(let r of n.condition)Rt(r,t);for(let r of n.body)Rt(r,t)}if(e.elseBody)for(let n of e.elseBody)Rt(n,t);break;case"For":if(e.words)for(let n of e.words)ze(n.parts,t);for(let n of e.body)Rt(n,t);break;case"CStyleFor":for(let n of e.body)Rt(n,t);break;case"While":case"Until":for(let n of e.condition)Rt(n,t);for(let n of e.body)Rt(n,t);break;case"Case":ze(e.word.parts,t);for(let n of e.items)for(let r of n.body)Rt(r,t);break;case"Subshell":case"Group":for(let n of e.body)Rt(n,t);break;case"ArithmeticCommand":case"ConditionalCommand":break;case"FunctionDef":t.definedFunctions.add(e.name),cl(e.body,t);break}}function ze(e,t){for(let n of e)switch(n.type){case"CommandSubstitution":xi(n.body,t);break;case"ProcessSubstitution":xi(n.body,t);break;case"DoubleQuoted":ze(n.parts,t);break;case"ParameterExpansion":n.operation&&ul(n.operation,t);break}}function ul(e,t){switch(e.type){case"DefaultValue":case"AssignDefault":case"UseAlternative":ze(e.word.parts,t);break;case"ErrorIfUnset":e.word&&ze(e.word.parts,t);break;case"PatternRemoval":ze(e.pattern.parts,t);break;case"PatternReplacement":ze(e.pattern.parts,t),e.replacement&&ze(e.replacement.parts,t);break;case"CaseModification":e.pattern&&ze(e.pattern.parts,t);break;case"Indirection":e.innerOp&&ul(e.innerOp,t);break}}function ns(e,t){return e===`/bin/${t}`||e===`/usr/bin/${t}`}async function rs(e,t,n){if(t.includes("/")){let o=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(o))return{error:"not_found",path:o};try{let a=await e.fs.stat(o);if(a.isDirectory)return{error:"permission_denied",path:o};let l=o.split("/").pop()||t,c=e.commands.get(l);return c&&ns(o,l)?{cmd:c,path:o}:(a.mode&73)!==0?{script:!0,path:o}:{error:"permission_denied",path:o}}catch{return{error:"not_found",path:o}}}if(!n&&e.state.hashTable){let o=e.state.hashTable.get(t);if(o){try{let a=await e.fs.stat(o);if(!a.isDirectory){let l=e.commands.get(t);if(l&&ns(o,t))return{cmd:l,path:o};if((a.mode&73)!==0)return{script:!0,path:o}}}catch{}e.state.hashTable.delete(t)}}let s=(n??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of s){if(!o)continue;let l=`${o.startsWith("/")?o:e.fs.resolvePath(e.state.cwd,o)}/${t}`;if(await e.fs.exists(l))try{let c=await e.fs.stat(l);if(c.isDirectory)continue;let u=(c.mode&73)!==0,f=e.commands.get(t),d=ns(l,t);if(f&&d)return{cmd:f,path:l};if(u){if(f&&!d)return{script:!0,path:l};if(!f)return{script:!0,path:l}}}catch{}}if(!await e.fs.exists("/usr/bin")){let o=e.commands.get(t);if(o)return{cmd:o,path:`/usr/bin/${t}`}}return null}async function ss(e,t){let n=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let o=await e.fs.stat(i);o.isDirectory||(o.mode&73)!==0&&n.push(t)}catch{}return n}let s=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of s){if(!i)continue;let a=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(ns(a,t)&&e.commands.has(t)){n.push(a);continue}if(await e.fs.exists(a)){try{let l=await e.fs.stat(a);if(l.isDirectory||(l.mode&73)===0)continue}catch{continue}n.push(i.startsWith("/")?a:`${i}/${t}`)}}return n}function Ue(e){return{kind:e.kind,elements:new Map(e.elements)}}function ft(e){return new Map(Array.from(e??[],([t,n])=>[t,Ue(n)]))}function Pe(e,t){return e.state.arrays?.get(t)}function pr(e,t,n="indexed"){e.state.arrays??=new Map;let r=e.state.arrays.get(t);return r||(r={kind:n,elements:new Map},e.state.arrays.set(t,r)),r}function sn(e,t,n){let r=pr(e,t,n);return r.kind=n,r}function Re(e,t){return e.state.arrays?.has(t)??!1}function le(e,t,n){return Pe(e,t)?.elements.get(String(n))}function on(e,t,n){return Pe(e,t)?.elements.has(String(n))??!1}function G(e,t,n,r,s){let i=pr(e,t,s),o=String(n);if(!i.elements.has(o)&&i.elements.size>=e.limits.maxArrayElements)throw new $(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(B(r)>e.limits.maxStringLength)throw new $(`array value string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");i.elements.set(o,r)}function Cn(e,t,n,r=!1){let s=new Set(r?[]:Pe(e,t)?.elements.keys()??[]);for(let i of n)if(s.add(String(i)),s.size>e.limits.maxArrayElements)throw new $(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements")}function Nn(e,t,n){return Pe(e,t)?.elements.delete(String(n))??!1}function mr(e,t){e.state.arrays?.delete(t),e.state.associativeArrays?.delete(t)}function ve(e,t){return Array.from(Pe(e,t)?.elements.keys()??[]).filter(r=>/^(0|[1-9]\d*)$/.test(r)).map(Number).sort((r,s)=>r-s)}function Ee(e,t){pr(e,t,e.state.associativeArrays?.has(t)?"associative":"indexed").elements.clear()}function Ot(e,t){return Array.from(Pe(e,t)?.elements.keys()??[]).sort()}function is(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function $i(e){if(e.parts.length<2)return null;let t=e.parts[0],n=e.parts[1];if(t.type!=="Glob"||!t.pattern.startsWith("["))return null;let r,s=n,i=1;if(n.type==="Literal"&&n.value.startsWith("]")){let f=n.value.slice(1);if(f.startsWith("+=")||f.startsWith("="))r=t.pattern.slice(1);else if(f===""){if(e.parts.length<3)return null;let d=e.parts[2];if(d.type!=="Literal"||!d.value.startsWith("=")&&!d.value.startsWith("+="))return null;r=t.pattern.slice(1),s=d,i=2}else return null}else if(t.pattern==="["&&(n.type==="DoubleQuoted"||n.type==="SingleQuoted")){if(e.parts.length<3)return null;let f=e.parts[2];if(f.type!=="Literal"||!f.value.startsWith("]=")&&!f.value.startsWith("]+="))return null;if(n.type==="SingleQuoted")r=n.value;else{r="";for(let d of n.parts)(d.type==="Literal"||d.type==="Escaped")&&(r+=d.value)}s=f,i=2}else if(t.pattern.endsWith("]")){if(n.type!=="Literal"||!n.value.startsWith("=")&&!n.value.startsWith("+="))return null;r=t.pattern.slice(1,-1)}else return null;r=is(r);let o;if(s.type!=="Literal")return null;s.value.startsWith("]=")||s.value.startsWith("]+=")?o=s.value.slice(1):o=s.value;let a=o.startsWith("+=");if(!a&&!o.startsWith("="))return null;let l=[],c=a?2:1,u=o.slice(c);u&&l.push({type:"Literal",value:u});for(let f=i+1;f<e.parts.length;f++){let d=e.parts[f];d.type==="BraceExpansion"?l.push({type:"Literal",value:Ld(d)}):l.push(d)}return{key:r,valueParts:l,append:a}}function Ld(e){return`{${e.items.map(n=>{if(n.type==="Range"){let r=n.startStr??String(n.start),s=n.endStr??String(n.end),i=`${r}..${s}`;return n.step&&(i+=`..${n.step}`),i}return Gn(n.word)}).join(",")}}`}function Gn(e){let t="";for(let n of e.parts)switch(n.type){case"Literal":t+=n.value;break;case"Glob":t+=n.pattern;break;case"SingleQuoted":t+=n.value;break;case"DoubleQuoted":for(let r of n.parts)(r.type==="Literal"||r.type==="Escaped")&&(t+=r.value);break;case"Escaped":t+=n.value;break;case"BraceExpansion":t+="{",t+=n.items.map(r=>r.type==="Range"?`${r.startStr}..${r.endStr}${r.step?`..${r.step}`:""}`:Gn(r.word)).join(","),t+="}";break;case"TildeExpansion":t+="~",n.user&&(t+=n.user);break}return t}var yr=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function fl(e){return yr.has(e)}var Ci=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),an=new Set([":","true","false","cd","export","unset","exit","local","set","break","continue","return","eval","shift","getopts","compgen","complete","compopt","pushd","popd","dirs","source",".","read","mapfile","readarray","declare","typeset","readonly","let","command","shopt","exec","test","[","echo","printf","pwd","alias","unalias","type","hash","ulimit","umask","trap","times","wait","kill","jobs","fg","bg","disown","suspend","fc","history","help","enable","builtin","caller"]),dl=new Set(["bg","caller","disown","enable","fc","fg","jobs","kill","suspend","times","trap","ulimit","umask"]);var Fd=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],Md=["braceexpand","hashall","interactive-comments"];function Ni(e){let t=[],n=[...Md.map(r=>({name:r,enabled:!0})),...Fd.map(r=>({name:r,enabled:e[r]}))].sort((r,s)=>r.name.localeCompare(s.name));for(let r of n)r.enabled&&t.push(r.name);return t.join(":")}function Hn(e){e.state.env.set("SHELLOPTS",Ni(e.state.options))}var Bd=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Ri(e){let t=[];for(let n of Bd)e[n]&&t.push(n);return t.join(":")}function Oi(e){e.state.env.set("BASHOPTS",Ri(e.state.shoptOptions))}var F={script(e){return{type:"Script",statements:e}},statement(e,t=[],n=!1,r,s){let i={type:"Statement",pipelines:e,operators:t,background:n};return r&&(i.deferredError=r),s!==void 0&&(i.sourceText=s),i},pipeline(e,t=!1,n=!1,r=!1,s){return{type:"Pipeline",commands:e,negated:t,timed:n,timePosix:r,pipeStderr:s}},simpleCommand(e,t=[],n=[],r=[]){return{type:"SimpleCommand",name:e,args:t,assignments:n,redirections:r}},word(e){return{type:"Word",parts:e}},literal(e){return{type:"Literal",value:e}},singleQuoted(e){return{type:"SingleQuoted",value:e}},doubleQuoted(e){return{type:"DoubleQuoted",parts:e}},escaped(e){return{type:"Escaped",value:e}},parameterExpansion(e,t=null){return{type:"ParameterExpansion",parameter:e,operation:t}},commandSubstitution(e,t=!1){return{type:"CommandSubstitution",body:e,legacy:t}},arithmeticExpansion(e){return{type:"ArithmeticExpansion",expression:e}},processSubstitution(e,t){return{type:"ProcessSubstitution",body:e,direction:t}},assignment(e,t,n=!1,r=null){return{type:"Assignment",name:e,value:t,append:n,array:r}},redirection(e,t,n=null,r){let s={type:"Redirection",fd:n,operator:e,target:t};return r&&(s.fdVariable=r),s},hereDoc(e,t,n=!1,r=!1,s){let i={type:"HereDoc",delimiter:e,content:t,stripTabs:n,quoted:r};return s!==void 0&&(i.terminated=s),i},ifNode(e,t=null,n=[]){return{type:"If",clauses:e,elseBody:t,redirections:n}},forNode(e,t,n,r=[]){return{type:"For",variable:e,words:t,body:n,redirections:r}},whileNode(e,t,n=[]){return{type:"While",condition:e,body:t,redirections:n}},untilNode(e,t,n=[]){return{type:"Until",condition:e,body:t,redirections:n}},caseNode(e,t,n=[]){return{type:"Case",word:e,items:t,redirections:n}},caseItem(e,t,n=";;"){return{type:"CaseItem",patterns:e,body:t,terminator:n}},subshell(e,t=[]){return{type:"Subshell",body:e,redirections:t}},group(e,t=[]){return{type:"Group",body:e,redirections:t}},functionDef(e,t,n=[],r){return{type:"FunctionDef",name:e,body:t,redirections:n,sourceFile:r}},conditionalCommand(e,t=[],n){return{type:"ConditionalCommand",expression:e,redirections:t,line:n}},arithmeticCommand(e,t=[],n){return{type:"ArithmeticCommand",expression:e,redirections:t,line:n}}};function hl(e,t){let n=e.length,r=t+3,s=2,i=!1,o=!1;for(;r<n&&s>0;){let a=e[r];if(i){a==="'"&&(i=!1),r++;continue}if(o){if(a==="\\"){r+=2;continue}a==='"'&&(o=!1),r++;continue}if(a==="'"){i=!0,r++;continue}if(a==='"'){o=!0,r++;continue}if(a==="\\"){r+=2;continue}if(a==="("){s++,r++;continue}if(a===")"){if(s--,s===1){let l=r+1;return!(l<n&&e[l]===")")}if(s===0)return!1;r++;continue}if(s===1&&(a==="|"&&r+1<n&&e[r+1]==="|"||a==="&"&&r+1<n&&e[r+1]==="&"||a==="|"&&r+1<n&&e[r+1]!=="|"))return!0;r++}return!1}function os(e,t){let n="",r=t,s=0,i=!1,o,a=l=>l===" "||l===" "||l===`
12
+ `),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>Di(t)):e.writeFileSync("/proc/self/status",Di(t)),e.writeFileSync("/proc/self/fd/0","/dev/stdin"),e.writeFileSync("/proc/self/fd/1","/dev/stdout"),e.writeFileSync("/proc/self/fd/2","/dev/stderr")}function hl(e,t,n={pid:1,ppid:0,uid:1e3,gid:1e3}){Ud(e)&&(jd(e,t),qd(e),Gd(e,n))}var Ii={export:{kind:"handler",phase:"early"},unset:{kind:"handler",phase:"early"},exit:{kind:"handler",phase:"early"},local:{kind:"handler",phase:"early"},set:{kind:"handler",phase:"early"},break:{kind:"handler",phase:"early"},continue:{kind:"handler",phase:"early"},return:{kind:"handler",phase:"early"},shift:{kind:"handler",phase:"early"},getopts:{kind:"handler",phase:"early"},compgen:{kind:"handler",phase:"early"},complete:{kind:"handler",phase:"early"},compopt:{kind:"handler",phase:"early"},pushd:{kind:"handler",phase:"early"},popd:{kind:"handler",phase:"early"},dirs:{kind:"handler",phase:"early"},source:{kind:"handler",phase:"early"},".":{kind:"handler",phase:"early"},read:{kind:"handler",phase:"early"},mapfile:{kind:"handler",phase:"early"},readarray:{kind:"handler",phase:"early"},declare:{kind:"handler",phase:"early"},typeset:{kind:"handler",phase:"early"},readonly:{kind:"handler",phase:"early"},eval:{kind:"handler",phase:"late",posixEarly:!0},cd:{kind:"handler",phase:"late"},":":{kind:"handler",phase:"late"},true:{kind:"handler",phase:"late"},false:{kind:"handler",phase:"late"},let:{kind:"handler",phase:"late"},command:{kind:"handler",phase:"late"},builtin:{kind:"handler",phase:"late"},shopt:{kind:"handler",phase:"late"},exec:{kind:"handler",phase:"late"},wait:{kind:"handler",phase:"late"},type:{kind:"handler",phase:"late"},hash:{kind:"handler",phase:"late"},help:{kind:"handler",phase:"late"},"[":{kind:"handler",phase:"late"},test:{kind:"handler",phase:"late"},echo:{kind:"registry"},printf:{kind:"registry"},pwd:{kind:"registry"},alias:{kind:"registry"},unalias:{kind:"registry"},history:{kind:"registry"},bg:{kind:"unimplemented"},caller:{kind:"unimplemented"},disown:{kind:"unimplemented"},enable:{kind:"unimplemented"},fc:{kind:"unimplemented"},fg:{kind:"unimplemented"},jobs:{kind:"unimplemented"},kill:{kind:"unimplemented"},suspend:{kind:"unimplemented"},times:{kind:"unimplemented"},trap:{kind:"unimplemented"},ulimit:{kind:"unimplemented"},umask:{kind:"unimplemented"}};for(let e of Object.values(Ii))Object.freeze(e);Object.freeze(Ii);var Ti=Ii,Dt=new Set(Object.keys(Ti)),pl=new Set(Object.entries(Ti).filter(([,e])=>e.kind==="unimplemented").map(([e])=>e)),os=Ti;function ml(e){let t=Object.hasOwn(os,e)?os[e]:void 0;return t?.kind==="handler"?t.phase:void 0}function yl(e){let t=Object.hasOwn(os,e)?os[e]:void 0;return t?.kind==="handler"&&t.posixEarly===!0}function as(e){let t={commands:new Set,definedFunctions:new Set,definedAliases:new Set};return _i(e,t),{commands:[...t.commands],definedFunctions:t.definedFunctions,definedAliases:t.definedAliases}}function Hd(e){return e.parts.length===1&&e.parts[0].type==="Literal"?e.parts[0].value:null}function Zd(e,t){for(let n of e){let r=n.parts[0];if(r?.type!=="Literal")continue;let s=/^([A-Za-z_][A-Za-z0-9_]*)=/.exec(r.value);s&&t.definedAliases.add(s[1])}}function _i(e,t){for(let n of e.statements)It(n,t)}function It(e,t){for(let n of e.pipelines)Qd(n,t)}function Qd(e,t){for(let n of e.commands)gl(n,t)}function gl(e,t){switch(e.type){case"SimpleCommand":if(e.name){let n=Hd(e.name);n&&(t.commands.add(n),n==="alias"&&Zd(e.args,t)),Ue(e.name.parts,t)}for(let n of e.args)Ue(n.parts,t);for(let n of e.assignments)if(n.value&&Ue(n.value.parts,t),n.array)for(let r of n.array)Ue(r.parts,t);for(let n of e.redirections)n.target.type==="Word"?Ue(n.target.parts,t):n.target.type==="HereDoc"&&!n.target.quoted&&Ue(n.target.content.parts,t);break;case"If":for(let n of e.clauses){for(let r of n.condition)It(r,t);for(let r of n.body)It(r,t)}if(e.elseBody)for(let n of e.elseBody)It(n,t);break;case"For":if(e.words)for(let n of e.words)Ue(n.parts,t);for(let n of e.body)It(n,t);break;case"CStyleFor":for(let n of e.body)It(n,t);break;case"While":case"Until":for(let n of e.condition)It(n,t);for(let n of e.body)It(n,t);break;case"Case":Ue(e.word.parts,t);for(let n of e.items)for(let r of n.body)It(r,t);break;case"Subshell":case"Group":for(let n of e.body)It(n,t);break;case"ArithmeticCommand":case"ConditionalCommand":break;case"FunctionDef":t.definedFunctions.add(e.name),gl(e.body,t);break}}function Ue(e,t){for(let n of e)switch(n.type){case"CommandSubstitution":_i(n.body,t);break;case"ProcessSubstitution":_i(n.body,t);break;case"DoubleQuoted":Ue(n.parts,t);break;case"ParameterExpansion":n.operation&&wl(n.operation,t);break}}function wl(e,t){switch(e.type){case"DefaultValue":case"AssignDefault":case"UseAlternative":Ue(e.word.parts,t);break;case"ErrorIfUnset":e.word&&Ue(e.word.parts,t);break;case"PatternRemoval":Ue(e.pattern.parts,t);break;case"PatternReplacement":Ue(e.pattern.parts,t),e.replacement&&Ue(e.replacement.parts,t);break;case"CaseModification":e.pattern&&Ue(e.pattern.parts,t);break;case"Indirection":e.innerOp&&wl(e.innerOp,t);break}}function ls(e,t){return e===`/bin/${t}`||e===`/usr/bin/${t}`}async function cs(e,t,n){if(t.includes("/")){let o=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(o))return{error:"not_found",path:o};try{let a=await e.fs.stat(o);if(a.isDirectory)return{error:"permission_denied",path:o};let l=o.split("/").pop()||t,c=e.commands.get(l);return c&&ls(o,l)?{cmd:c,path:o}:(a.mode&73)!==0?{script:!0,path:o}:{error:"permission_denied",path:o}}catch{return{error:"not_found",path:o}}}if(!n&&e.state.hashTable){let o=e.state.hashTable.get(t);if(o){try{let a=await e.fs.stat(o);if(!a.isDirectory){let l=e.commands.get(t);if(l&&ls(o,t))return{cmd:l,path:o};if((a.mode&73)!==0)return{script:!0,path:o}}}catch{}e.state.hashTable.delete(t)}}let s=(n??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of s){if(!o)continue;let l=`${o.startsWith("/")?o:e.fs.resolvePath(e.state.cwd,o)}/${t}`;if(await e.fs.exists(l))try{let c=await e.fs.stat(l);if(c.isDirectory)continue;let u=(c.mode&73)!==0,f=e.commands.get(t),d=ls(l,t);if(f&&d)return{cmd:f,path:l};if(u){if(f&&!d)return{script:!0,path:l};if(!f)return{script:!0,path:l}}}catch{}}if(!await e.fs.exists("/usr/bin")){let o=e.commands.get(t);if(o)return{cmd:o,path:`/usr/bin/${t}`}}return null}async function us(e,t){let n=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let o=await e.fs.stat(i);o.isDirectory||(o.mode&73)!==0&&n.push(t)}catch{}return n}let s=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of s){if(!i)continue;let a=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(ls(a,t)&&e.commands.has(t)){n.push(a);continue}if(await e.fs.exists(a)){try{let l=await e.fs.stat(a);if(l.isDirectory||(l.mode&73)===0)continue}catch{continue}n.push(i.startsWith("/")?a:`${i}/${t}`)}}return n}function je(e){return{kind:e.kind,elements:new Map(e.elements)}}function ht(e){return new Map(Array.from(e??[],([t,n])=>[t,je(n)]))}function $e(e,t){return e.state.arrays?.get(t)}function Er(e,t,n="indexed"){e.state.arrays??=new Map;let r=e.state.arrays.get(t);return r||(r={kind:n,elements:new Map},e.state.arrays.set(t,r)),r}function ln(e,t,n){let r=Er(e,t,n);return r.kind=n,r}function Oe(e,t){return e.state.arrays?.has(t)??!1}function ce(e,t,n){return $e(e,t)?.elements.get(String(n))}function cn(e,t,n){return $e(e,t)?.elements.has(String(n))??!1}function H(e,t,n,r,s){let i=Er(e,t,s),o=String(n);if(!i.elements.has(o)&&i.elements.size>=e.limits.maxArrayElements)throw new C(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(W(r)>e.limits.maxStringLength)throw new C(`array value string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");i.elements.set(o,r)}function On(e,t,n,r=!1){let s=new Set(r?[]:$e(e,t)?.elements.keys()??[]);for(let i of n)if(s.add(String(i)),s.size>e.limits.maxArrayElements)throw new C(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements")}function Dn(e,t,n){return $e(e,t)?.elements.delete(String(n))??!1}function br(e,t){e.state.arrays?.delete(t),e.state.associativeArrays?.delete(t)}function xe(e,t){return Array.from($e(e,t)?.elements.keys()??[]).filter(r=>/^(0|[1-9]\d*)$/.test(r)).map(Number).sort((r,s)=>r-s)}function be(e,t){Er(e,t,e.state.associativeArrays?.has(t)?"associative":"indexed").elements.clear()}function Tt(e,t){return Array.from($e(e,t)?.elements.keys()??[]).sort()}function fs(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function Li(e){if(e.parts.length<2)return null;let t=e.parts[0],n=e.parts[1];if(t.type!=="Glob"||!t.pattern.startsWith("["))return null;let r,s=n,i=1;if(n.type==="Literal"&&n.value.startsWith("]")){let f=n.value.slice(1);if(f.startsWith("+=")||f.startsWith("="))r=t.pattern.slice(1);else if(f===""){if(e.parts.length<3)return null;let d=e.parts[2];if(d.type!=="Literal"||!d.value.startsWith("=")&&!d.value.startsWith("+="))return null;r=t.pattern.slice(1),s=d,i=2}else return null}else if(t.pattern==="["&&(n.type==="DoubleQuoted"||n.type==="SingleQuoted")){if(e.parts.length<3)return null;let f=e.parts[2];if(f.type!=="Literal"||!f.value.startsWith("]=")&&!f.value.startsWith("]+="))return null;if(n.type==="SingleQuoted")r=n.value;else{r="";for(let d of n.parts)(d.type==="Literal"||d.type==="Escaped")&&(r+=d.value)}s=f,i=2}else if(t.pattern.endsWith("]")){if(n.type!=="Literal"||!n.value.startsWith("=")&&!n.value.startsWith("+="))return null;r=t.pattern.slice(1,-1)}else return null;r=fs(r);let o;if(s.type!=="Literal")return null;s.value.startsWith("]=")||s.value.startsWith("]+=")?o=s.value.slice(1):o=s.value;let a=o.startsWith("+=");if(!a&&!o.startsWith("="))return null;let l=[],c=a?2:1,u=o.slice(c);u&&l.push({type:"Literal",value:u});for(let f=i+1;f<e.parts.length;f++){let d=e.parts[f];d.type==="BraceExpansion"?l.push({type:"Literal",value:Kd(d)}):l.push(d)}return{key:r,valueParts:l,append:a}}function Kd(e){return`{${e.items.map(n=>{if(n.type==="Range"){let r=n.startStr??String(n.start),s=n.endStr??String(n.end),i=`${r}..${s}`;return n.step&&(i+=`..${n.step}`),i}return Qn(n.word)}).join(",")}}`}function Qn(e){let t="";for(let n of e.parts)switch(n.type){case"Literal":t+=n.value;break;case"Glob":t+=n.pattern;break;case"SingleQuoted":t+=n.value;break;case"DoubleQuoted":for(let r of n.parts)(r.type==="Literal"||r.type==="Escaped")&&(t+=r.value);break;case"Escaped":t+=n.value;break;case"BraceExpansion":t+="{",t+=n.items.map(r=>r.type==="Range"?`${r.startStr}..${r.endStr}${r.step?`..${r.step}`:""}`:Qn(r.word)).join(","),t+="}";break;case"TildeExpansion":t+="~",n.user&&(t+=n.user);break}return t}var Sr=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function El(e){return Sr.has(e)}var Ar=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]);var Xd=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],Yd=["braceexpand","hashall","interactive-comments"];function Fi(e){let t=[],n=[...Yd.map(r=>({name:r,enabled:!0})),...Xd.map(r=>({name:r,enabled:e[r]}))].sort((r,s)=>r.name.localeCompare(s.name));for(let r of n)r.enabled&&t.push(r.name);return t.join(":")}function Kn(e){e.state.env.set("SHELLOPTS",Fi(e.state.options))}var Jd=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Mi(e){let t=[];for(let n of Jd)e[n]&&t.push(n);return t.join(":")}function Bi(e){e.state.env.set("BASHOPTS",Mi(e.state.shoptOptions))}var M={script(e){return{type:"Script",statements:e}},statement(e,t=[],n=!1,r,s){let i={type:"Statement",pipelines:e,operators:t,background:n};return r&&(i.deferredError=r),s!==void 0&&(i.sourceText=s),i},pipeline(e,t=!1,n=!1,r=!1,s){return{type:"Pipeline",commands:e,negated:t,timed:n,timePosix:r,pipeStderr:s}},simpleCommand(e,t=[],n=[],r=[]){return{type:"SimpleCommand",name:e,args:t,assignments:n,redirections:r}},word(e){return{type:"Word",parts:e}},literal(e){return{type:"Literal",value:e}},singleQuoted(e){return{type:"SingleQuoted",value:e}},doubleQuoted(e){return{type:"DoubleQuoted",parts:e}},escaped(e){return{type:"Escaped",value:e}},parameterExpansion(e,t=null){return{type:"ParameterExpansion",parameter:e,operation:t}},commandSubstitution(e,t=!1){return{type:"CommandSubstitution",body:e,legacy:t}},arithmeticExpansion(e){return{type:"ArithmeticExpansion",expression:e}},processSubstitution(e,t){return{type:"ProcessSubstitution",body:e,direction:t}},assignment(e,t,n=!1,r=null){return{type:"Assignment",name:e,value:t,append:n,array:r}},redirection(e,t,n=null,r){let s={type:"Redirection",fd:n,operator:e,target:t};return r&&(s.fdVariable=r),s},hereDoc(e,t,n=!1,r=!1,s){let i={type:"HereDoc",delimiter:e,content:t,stripTabs:n,quoted:r};return s!==void 0&&(i.terminated=s),i},ifNode(e,t=null,n=[]){return{type:"If",clauses:e,elseBody:t,redirections:n}},forNode(e,t,n,r=[]){return{type:"For",variable:e,words:t,body:n,redirections:r}},whileNode(e,t,n=[]){return{type:"While",condition:e,body:t,redirections:n}},untilNode(e,t,n=[]){return{type:"Until",condition:e,body:t,redirections:n}},caseNode(e,t,n=[]){return{type:"Case",word:e,items:t,redirections:n}},caseItem(e,t,n=";;"){return{type:"CaseItem",patterns:e,body:t,terminator:n}},subshell(e,t=[]){return{type:"Subshell",body:e,redirections:t}},group(e,t=[]){return{type:"Group",body:e,redirections:t}},functionDef(e,t,n=[],r){return{type:"FunctionDef",name:e,body:t,redirections:n,sourceFile:r}},conditionalCommand(e,t=[],n){return{type:"ConditionalCommand",expression:e,redirections:t,line:n}},arithmeticCommand(e,t=[],n){return{type:"ArithmeticCommand",expression:e,redirections:t,line:n}}};function bl(e,t){let n=e.length,r=t+3,s=2,i=!1,o=!1;for(;r<n&&s>0;){let a=e[r];if(i){a==="'"&&(i=!1),r++;continue}if(o){if(a==="\\"){r+=2;continue}a==='"'&&(o=!1),r++;continue}if(a==="'"){i=!0,r++;continue}if(a==='"'){o=!0,r++;continue}if(a==="\\"){r+=2;continue}if(a==="("){s++,r++;continue}if(a===")"){if(s--,s===1){let l=r+1;return!(l<n&&e[l]===")")}if(s===0)return!1;r++;continue}if(s===1&&(a==="|"&&r+1<n&&e[r+1]==="|"||a==="&"&&r+1<n&&e[r+1]==="&"||a==="|"&&r+1<n&&e[r+1]!=="|"))return!0;r++}return!1}function ds(e,t){let n="",r=t,s=0,i=!1,o,a=l=>l===" "||l===" "||l===`
13
13
  `||l===";"||l==="&"||l==="|"||l==="<"||l===">"||l==="("||l===")";for(;r<e.length;){let l=e[r];if(l==="'"){let c=s>0;for(c||(i=!0),c&&(n+=l),r++;r<e.length&&e[r]!=="'";)n+=e[r],r++;r<e.length?(c&&(n+=e[r]),r++):o=l;continue}if(l==='"'){let c=s>0;for(c||(i=!0),c&&(n+=l),r++;r<e.length&&e[r]!=='"';){if(e[r]==="\\"&&r+1<e.length){if(c){n+=e.slice(r,r+2),r+=2;continue}let u=e[r+1];if(u==="$"||u==="`"||u==='"'||u==="\\"||u===`
14
14
  `){r+=2,u!==`
15
15
  `&&(n+=u);continue}}n+=e[r],r++}r<e.length?(c&&(n+=e[r]),r++):o=l;continue}if(l==="\\"&&r+1<e.length){if(s>0){n+=e.slice(r,r+2),r+=2;continue}i=!0;let c=e[r+1];c!==`
16
- `&&(n+=c),r+=2;continue}if(s===0&&(l==="$"||l==="<"||l===">")&&e[r+1]==="("){n+=`${l}(`,s=1,r+=2;continue}if(s===0&&a(l))break;s>0&&(l==="("?s++:l===")"&&s--),n+=l,r++}return{delim:n,endPos:r,quoted:i,unclosedQuote:o,unclosedSubstitution:s>0}}function Wd(e,t,n){let r=t+1;for(let{delim:s,stripTabs:i}of n)for(;;){if(r>=e.length)return e.length;let o=e.indexOf(`
17
- `,r);o===-1&&(o=e.length);let a=e.slice(r,o);if(i&&(a=a.replace(/^\t+/,"")),a===s){r=o+1;break}if(o>=e.length)return e.length;r=o+1}return Math.min(r,e.length)}function pl(e,t,n){let r=1,s=t,i=!1,o=!1,a=0,l=!1,c="",u=[],f=0;for(;s<e.length&&r>0;){let d=e[s];if(i)d==="'"&&(i=!1);else if(o)d==="\\"&&s+1<e.length?s++:d==='"'&&(o=!1);else{if(d==="("&&e[s+1]==="("?f++:d===")"&&e[s+1]===")"&&f>0&&f--,f===0&&d==="<"&&e[s+1]==="<"&&e[s+2]!=="<"){let h=s+2,p=!1;for(e[h]==="-"&&(p=!0,h++);e[h]===" "||e[h]===" ";)h++;let{delim:m,endPos:E,unclosedQuote:b,unclosedSubstitution:g}=os(e,h);if(b&&n(`unexpected EOF while looking for matching \`${b}'`),g&&n("unexpected EOF while looking for matching `)'"),m.length>0){u.push({delim:m,stripTabs:p}),c="",s=E;continue}}if(d===`
18
- `&&u.length>0){let h=Wd(e,s,u);u.length=0,c="",s=h;continue}d==="'"?(i=!0,c=""):d==='"'?(o=!0,c=""):d==="\\"&&s+1<e.length?(s++,c=""):/[a-zA-Z_]/.test(d)?c+=d:(c==="case"?(a++,l=!1):c==="in"&&a>0?l=!0:c==="esac"&&a>0&&(a--,l=!1),c="",d==="("?s>0&&e[s-1]==="$"?r++:l||r++:d===")"?l?l=!1:r--:d===";"&&a>0&&s+1<e.length&&e[s+1]===";"&&(l=!0))}r>0&&s++}return r>0&&n("unexpected EOF while looking for matching `)'"),s}function ml(e,t,n,r){let s=t+2,i=pl(e,s,r),o=e.slice(s,i),l=n().parse(o);return{part:F.commandSubstitution(l,!1),endIndex:i+1}}function yl(e,t,n,r){let s=e[t]==="<"?"input":"output",i=t+2,o=pl(e,i,r),a=n().parse(e.slice(i,o));return{part:F.processSubstitution(a,s),endIndex:o+1}}function gl(e,t,n,r,s){let o=t+1,a="";for(;o<e.length&&e[o]!=="`";)if(e[o]==="\\"){let u=e[o+1];u==="$"||u==="`"||u==="\\"||u===`
16
+ `&&(n+=c),r+=2;continue}if(s===0&&(l==="$"||l==="<"||l===">")&&e[r+1]==="("){n+=`${l}(`,s=1,r+=2;continue}if(s===0&&a(l))break;s>0&&(l==="("?s++:l===")"&&s--),n+=l,r++}return{delim:n,endPos:r,quoted:i,unclosedQuote:o,unclosedSubstitution:s>0}}function eh(e,t,n){let r=t+1;for(let{delim:s,stripTabs:i}of n)for(;;){if(r>=e.length)return e.length;let o=e.indexOf(`
17
+ `,r);o===-1&&(o=e.length);let a=e.slice(r,o);if(i&&(a=a.replace(/^\t+/,"")),a===s){r=o+1;break}if(o>=e.length)return e.length;r=o+1}return Math.min(r,e.length)}function Sl(e,t,n){let r=1,s=t,i=!1,o=!1,a=0,l=!1,c="",u=[],f=0;for(;s<e.length&&r>0;){let d=e[s];if(i)d==="'"&&(i=!1);else if(o)d==="\\"&&s+1<e.length?s++:d==='"'&&(o=!1);else{if(d==="("&&e[s+1]==="("?f++:d===")"&&e[s+1]===")"&&f>0&&f--,f===0&&d==="<"&&e[s+1]==="<"&&e[s+2]!=="<"){let h=s+2,p=!1;for(e[h]==="-"&&(p=!0,h++);e[h]===" "||e[h]===" ";)h++;let{delim:m,endPos:E,unclosedQuote:S,unclosedSubstitution:g}=ds(e,h);if(S&&n(`unexpected EOF while looking for matching \`${S}'`),g&&n("unexpected EOF while looking for matching `)'"),m.length>0){u.push({delim:m,stripTabs:p}),c="",s=E;continue}}if(d===`
18
+ `&&u.length>0){let h=eh(e,s,u);u.length=0,c="",s=h;continue}d==="'"?(i=!0,c=""):d==='"'?(o=!0,c=""):d==="\\"&&s+1<e.length?(s++,c=""):/[a-zA-Z_]/.test(d)?c+=d:(c==="case"?(a++,l=!1):c==="in"&&a>0?l=!0:c==="esac"&&a>0&&(a--,l=!1),c="",d==="("?s>0&&e[s-1]==="$"?r++:l||r++:d===")"?l?l=!1:r--:d===";"&&a>0&&s+1<e.length&&e[s+1]===";"&&(l=!0))}r>0&&s++}return r>0&&n("unexpected EOF while looking for matching `)'"),s}function Al(e,t,n,r){let s=t+2,i=Sl(e,s,r),o=e.slice(s,i),l=n().parse(o);return{part:M.commandSubstitution(l,!1),endIndex:i+1}}function vl(e,t,n,r){let s=e[t]==="<"?"input":"output",i=t+2,o=Sl(e,i,r),a=n().parse(e.slice(i,o));return{part:M.processSubstitution(a,s),endIndex:o+1}}function kl(e,t,n,r,s){let o=t+1,a="";for(;o<e.length&&e[o]!=="`";)if(e[o]==="\\"){let u=e[o+1];u==="$"||u==="`"||u==="\\"||u===`
19
19
  `||n&&u==='"'?(u!==`
20
- `&&(a+=u),o+=2):(a+=e[o],o++)}else a+=e[o],o++;o>=e.length&&s("unexpected EOF while looking for matching ``'");let c=r().parse(a);return{part:F.commandSubstitution(c,!0),endIndex:o+1}}var Vd=10485760,w;(function(e){e.EOF="EOF",e.NEWLINE="NEWLINE",e.SEMICOLON="SEMICOLON",e.AMP="AMP",e.PIPE="PIPE",e.PIPE_AMP="PIPE_AMP",e.AND_AND="AND_AND",e.OR_OR="OR_OR",e.BANG="BANG",e.LESS="LESS",e.GREAT="GREAT",e.DLESS="DLESS",e.DGREAT="DGREAT",e.LESSAND="LESSAND",e.GREATAND="GREATAND",e.LESSGREAT="LESSGREAT",e.DLESSDASH="DLESSDASH",e.CLOBBER="CLOBBER",e.TLESS="TLESS",e.AND_GREAT="AND_GREAT",e.AND_DGREAT="AND_DGREAT",e.LPAREN="LPAREN",e.RPAREN="RPAREN",e.LBRACE="LBRACE",e.RBRACE="RBRACE",e.DSEMI="DSEMI",e.SEMI_AND="SEMI_AND",e.SEMI_SEMI_AND="SEMI_SEMI_AND",e.DBRACK_START="DBRACK_START",e.DBRACK_END="DBRACK_END",e.DPAREN_START="DPAREN_START",e.DPAREN_END="DPAREN_END",e.IF="IF",e.THEN="THEN",e.ELSE="ELSE",e.ELIF="ELIF",e.FI="FI",e.FOR="FOR",e.WHILE="WHILE",e.UNTIL="UNTIL",e.DO="DO",e.DONE="DONE",e.CASE="CASE",e.ESAC="ESAC",e.IN="IN",e.FUNCTION="FUNCTION",e.SELECT="SELECT",e.TIME="TIME",e.COPROC="COPROC",e.WORD="WORD",e.NAME="NAME",e.NUMBER="NUMBER",e.ASSIGNMENT_WORD="ASSIGNMENT_WORD",e.FD_VARIABLE="FD_VARIABLE",e.COMMENT="COMMENT",e.HEREDOC_CONTENT="HEREDOC_CONTENT"})(w||(w={}));var st=class extends Error{line;column;constructor(t,n,r){super(`line ${n}: ${t}`),this.line=n,this.column=r,this.name="LexerError"}},Di=new Map([["if",w.IF],["then",w.THEN],["else",w.ELSE],["elif",w.ELIF],["fi",w.FI],["for",w.FOR],["while",w.WHILE],["until",w.UNTIL],["do",w.DO],["done",w.DONE],["case",w.CASE],["esac",w.ESAC],["in",w.IN],["function",w.FUNCTION],["select",w.SELECT],["time",w.TIME],["coproc",w.COPROC]]),zd=new Set(Di.values());function Ii(e){return zd.has(e)}function wl(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return!1;let n=e.slice(t[0].length);if(n===""||n==="+")return!0;if(n[0]==="["){let r=0,s=0;for(;s<n.length;s++)if(n[s]==="[")r++;else if(n[s]==="]"&&(r--,r===0))break;if(r!==0||s>=n.length)return!1;let i=n.slice(s+1);return i===""||i==="+"}return!1}function El(e){let t=0;for(let n=0;n<e.length;n++){let r=e[n];if(r==="[")t++;else if(r==="]")t--;else{if(t===0&&r==="=")return n;if(t===0&&r==="+"&&e[n+1]==="=")return n+1}}return-1}var Ud=[[";",";","&",w.SEMI_SEMI_AND],["<","<","<",w.TLESS],["&",">",">",w.AND_DGREAT]],jd=[["[","[",w.DBRACK_START],["]","]",w.DBRACK_END],["(","(",w.DPAREN_START],[")",")",w.DPAREN_END],["&","&",w.AND_AND],["|","|",w.OR_OR],[";",";",w.DSEMI],[";","&",w.SEMI_AND],["|","&",w.PIPE_AMP],[">",">",w.DGREAT],["<","&",w.LESSAND],[">","&",w.GREATAND],["<",">",w.LESSGREAT],[">","|",w.CLOBBER],["&",">",w.AND_GREAT]],qd=new Map([["|",w.PIPE],["&",w.AMP],[";",w.SEMICOLON],["(",w.LPAREN],[")",w.RPAREN],["<",w.LESS],[">",w.GREAT]]);function Gd(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function bl(e){return e===" "||e===" "||e===`
21
- `||e===";"||e==="&"||e==="|"||e==="("||e===")"||e==="<"||e===">"}var as=class{input;pos=0;line=1;column=1;tokens=[];pendingHeredocs=[];pendingHeredocDelimiterMode;dparenDepth=0;maxHeredocSize;constructor(t,n){this.input=t,this.maxHeredocSize=n?.maxHeredocSize??Vd}tokenize(){let n=this.input.length,r=this.tokens,s=this.pendingHeredocs;for(;this.pos<n;){if(s.length>0&&r.length>0&&r[r.length-1].type===w.NEWLINE){this.readHeredocContent();continue}if(this.skipWhitespace(),this.pos>=n)break;let i=this.nextToken();i&&r.push(i)}return s.length>0&&this.readHeredocContent(),r.push({type:w.EOF,value:"",start:this.pos,end:this.pos,line:this.line,column:this.column}),r}skipWhitespace(){let t=this.input,n=t.length,r=this.pos,s=this.column,i=this.line;for(;r<n;){let o=t[r];if(o===" "||o===" ")r++,s++;else if(o==="\\"&&t[r+1]===`
20
+ `&&(a+=u),o+=2):(a+=e[o],o++)}else a+=e[o],o++;o>=e.length&&s("unexpected EOF while looking for matching ``'");let c=r().parse(a);return{part:M.commandSubstitution(c,!0),endIndex:o+1}}var th=10485760,w;(function(e){e.EOF="EOF",e.NEWLINE="NEWLINE",e.SEMICOLON="SEMICOLON",e.AMP="AMP",e.PIPE="PIPE",e.PIPE_AMP="PIPE_AMP",e.AND_AND="AND_AND",e.OR_OR="OR_OR",e.BANG="BANG",e.LESS="LESS",e.GREAT="GREAT",e.DLESS="DLESS",e.DGREAT="DGREAT",e.LESSAND="LESSAND",e.GREATAND="GREATAND",e.LESSGREAT="LESSGREAT",e.DLESSDASH="DLESSDASH",e.CLOBBER="CLOBBER",e.TLESS="TLESS",e.AND_GREAT="AND_GREAT",e.AND_DGREAT="AND_DGREAT",e.LPAREN="LPAREN",e.RPAREN="RPAREN",e.LBRACE="LBRACE",e.RBRACE="RBRACE",e.DSEMI="DSEMI",e.SEMI_AND="SEMI_AND",e.SEMI_SEMI_AND="SEMI_SEMI_AND",e.DBRACK_START="DBRACK_START",e.DBRACK_END="DBRACK_END",e.DPAREN_START="DPAREN_START",e.DPAREN_END="DPAREN_END",e.IF="IF",e.THEN="THEN",e.ELSE="ELSE",e.ELIF="ELIF",e.FI="FI",e.FOR="FOR",e.WHILE="WHILE",e.UNTIL="UNTIL",e.DO="DO",e.DONE="DONE",e.CASE="CASE",e.ESAC="ESAC",e.IN="IN",e.FUNCTION="FUNCTION",e.SELECT="SELECT",e.TIME="TIME",e.COPROC="COPROC",e.WORD="WORD",e.NAME="NAME",e.NUMBER="NUMBER",e.ASSIGNMENT_WORD="ASSIGNMENT_WORD",e.FD_VARIABLE="FD_VARIABLE",e.COMMENT="COMMENT",e.HEREDOC_CONTENT="HEREDOC_CONTENT"})(w||(w={}));var it=class extends Error{line;column;constructor(t,n,r){super(`line ${n}: ${t}`),this.line=n,this.column=r,this.name="LexerError"}},Wi=new Map([["if",w.IF],["then",w.THEN],["else",w.ELSE],["elif",w.ELIF],["fi",w.FI],["for",w.FOR],["while",w.WHILE],["until",w.UNTIL],["do",w.DO],["done",w.DONE],["case",w.CASE],["esac",w.ESAC],["in",w.IN],["function",w.FUNCTION],["select",w.SELECT],["time",w.TIME],["coproc",w.COPROC]]),nh=new Set(Wi.values());function Vi(e){return nh.has(e)}function xl(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return!1;let n=e.slice(t[0].length);if(n===""||n==="+")return!0;if(n[0]==="["){let r=0,s=0;for(;s<n.length;s++)if(n[s]==="[")r++;else if(n[s]==="]"&&(r--,r===0))break;if(r!==0||s>=n.length)return!1;let i=n.slice(s+1);return i===""||i==="+"}return!1}function Pl(e){let t=0;for(let n=0;n<e.length;n++){let r=e[n];if(r==="[")t++;else if(r==="]")t--;else{if(t===0&&r==="=")return n;if(t===0&&r==="+"&&e[n+1]==="=")return n+1}}return-1}var rh=[[";",";","&",w.SEMI_SEMI_AND],["<","<","<",w.TLESS],["&",">",">",w.AND_DGREAT]],sh=[["[","[",w.DBRACK_START],["]","]",w.DBRACK_END],["(","(",w.DPAREN_START],[")",")",w.DPAREN_END],["&","&",w.AND_AND],["|","|",w.OR_OR],[";",";",w.DSEMI],[";","&",w.SEMI_AND],["|","&",w.PIPE_AMP],[">",">",w.DGREAT],["<","&",w.LESSAND],[">","&",w.GREATAND],["<",">",w.LESSGREAT],[">","|",w.CLOBBER],["&",">",w.AND_GREAT]],ih=new Map([["|",w.PIPE],["&",w.AMP],[";",w.SEMICOLON],["(",w.LPAREN],[")",w.RPAREN],["<",w.LESS],[">",w.GREAT]]);function oh(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function $l(e){return e===" "||e===" "||e===`
21
+ `||e===";"||e==="&"||e==="|"||e==="("||e===")"||e==="<"||e===">"}var hs=class{input;pos=0;line=1;column=1;tokens=[];pendingHeredocs=[];pendingHeredocDelimiterMode;dparenDepth=0;maxHeredocSize;constructor(t,n){this.input=t,this.maxHeredocSize=n?.maxHeredocSize??th}tokenize(){let n=this.input.length,r=this.tokens,s=this.pendingHeredocs;for(;this.pos<n;){if(s.length>0&&r.length>0&&r[r.length-1].type===w.NEWLINE){this.readHeredocContent();continue}if(this.skipWhitespace(),this.pos>=n)break;let i=this.nextToken();i&&r.push(i)}return s.length>0&&this.readHeredocContent(),r.push({type:w.EOF,value:"",start:this.pos,end:this.pos,line:this.line,column:this.column}),r}skipWhitespace(){let t=this.input,n=t.length,r=this.pos,s=this.column,i=this.line;for(;r<n;){let o=t[r];if(o===" "||o===" ")r++,s++;else if(o==="\\"&&t[r+1]===`
22
22
  `)r+=2,i++,s=1;else break}this.pos=r,this.column=s,this.line=i}nextToken(){let t=this.input,n=this.pos,r=this.line,s=this.column,i=t[n],o=t[n+1],a=t[n+2],l=this.pendingHeredocDelimiterMode;if(this.pendingHeredocDelimiterMode=void 0,l!==void 0&&i!==`
23
23
  `&&!(i==="#"&&this.dparenDepth===0))return this.readHeredocDelimiterToken(n,r,s,l);if(i==="#"&&this.dparenDepth===0)return this.readComment(n,r,s);if(i===`
24
24
  `)return this.pos=n+1,this.line++,this.column=1,{type:w.NEWLINE,value:`
25
- `,start:n,end:n+1,line:r,column:s};if(i==="<"&&o==="<"&&a==="-")return this.pos=n+3,this.column=s+3,this.pendingHeredocDelimiterMode=!0,this.makeToken(w.DLESSDASH,"<<-",n,r,s);for(let[u,f,d,h]of Ud)if(i===u&&o===f&&a===d)return this.pos=n+3,this.column=s+3,this.makeToken(h,u+f+d,n,r,s);if(i==="<"&&o==="<")return this.pos=n+2,this.column=s+2,this.pendingHeredocDelimiterMode=!1,this.makeToken(w.DLESS,"<<",n,r,s);if(i==="("&&o==="("){let u=this.tokens[this.tokens.length-1];return this.dparenDepth===0&&u?.end===n&&(u.type===w.LESS||u.type===w.GREAT)?(this.pos=n+1,this.column=s+1,this.makeToken(w.LPAREN,"(",n,r,s)):this.dparenDepth>0?(this.pos=n+1,this.column=s+1,this.dparenDepth++,this.makeToken(w.LPAREN,"(",n,r,s)):this.looksLikeNestedSubshells(n+2)||this.dparenClosesWithSpacedParens(n+2)?(this.pos=n+1,this.column=s+1,this.makeToken(w.LPAREN,"(",n,r,s)):(this.pos=n+2,this.column=s+2,this.dparenDepth=1,this.makeToken(w.DPAREN_START,"((",n,r,s))}if(i===")"&&o===")")return this.dparenDepth===1?(this.pos=n+2,this.column=s+2,this.dparenDepth=0,this.makeToken(w.DPAREN_END,"))",n,r,s)):this.dparenDepth>1?(this.pos=n+1,this.column=s+1,this.dparenDepth--,this.makeToken(w.RPAREN,")",n,r,s)):(this.pos=n+1,this.column=s+1,this.makeToken(w.RPAREN,")",n,r,s));for(let[u,f,d]of jd)if(!(u==="("&&f==="("||u===")"&&f===")")&&!(this.dparenDepth>0&&u===";"&&(d===w.DSEMI||d===w.SEMI_AND||d===w.SEMI_SEMI_AND))&&i===u&&o===f){if(d===w.DBRACK_START||d===w.DBRACK_END){let h=t[n+2];if(h!==void 0&&h!==" "&&h!==" "&&h!==`
26
- `&&h!==";"&&h!=="&"&&h!=="|"&&h!=="("&&h!==")"&&h!=="<"&&h!==">")break}return this.pos=n+2,this.column=s+2,this.makeToken(d,u+f,n,r,s)}if(i==="("&&this.dparenDepth>0)return this.pos=n+1,this.column=s+1,this.dparenDepth++,this.makeToken(w.LPAREN,"(",n,r,s);if(i===")"&&this.dparenDepth>1)return this.pos=n+1,this.column=s+1,this.dparenDepth--,this.makeToken(w.RPAREN,")",n,r,s);let c=qd.get(i);if(c!==void 0)return this.pos=n+1,this.column=s+1,this.makeToken(c,i,n,r,s);if(i==="{"){let u=this.scanFdVariable(n);return u!==null?(this.pos=u.end,this.column=s+(u.end-n),{type:w.FD_VARIABLE,value:u.varname,start:n,end:u.end,line:r,column:s}):o==="}"?(this.pos=n+2,this.column=s+2,{type:w.WORD,value:"{}",start:n,end:n+2,line:r,column:s,quoted:!1,singleQuoted:!1}):this.scanBraceExpansion(n)!==null?this.readWordWithBraceExpansion(n,r,s):this.scanLiteralBraceWord(n)!==null?this.readWordWithBraceExpansion(n,r,s):o!==void 0&&o!==" "&&o!==" "&&o!==`
25
+ `,start:n,end:n+1,line:r,column:s};if(i==="<"&&o==="<"&&a==="-")return this.pos=n+3,this.column=s+3,this.pendingHeredocDelimiterMode=!0,this.makeToken(w.DLESSDASH,"<<-",n,r,s);for(let[u,f,d,h]of rh)if(i===u&&o===f&&a===d)return this.pos=n+3,this.column=s+3,this.makeToken(h,u+f+d,n,r,s);if(i==="<"&&o==="<")return this.pos=n+2,this.column=s+2,this.pendingHeredocDelimiterMode=!1,this.makeToken(w.DLESS,"<<",n,r,s);if(i==="("&&o==="("){let u=this.tokens[this.tokens.length-1];return this.dparenDepth===0&&u?.end===n&&(u.type===w.LESS||u.type===w.GREAT)?(this.pos=n+1,this.column=s+1,this.makeToken(w.LPAREN,"(",n,r,s)):this.dparenDepth>0?(this.pos=n+1,this.column=s+1,this.dparenDepth++,this.makeToken(w.LPAREN,"(",n,r,s)):this.looksLikeNestedSubshells(n+2)||this.dparenClosesWithSpacedParens(n+2)?(this.pos=n+1,this.column=s+1,this.makeToken(w.LPAREN,"(",n,r,s)):(this.pos=n+2,this.column=s+2,this.dparenDepth=1,this.makeToken(w.DPAREN_START,"((",n,r,s))}if(i===")"&&o===")")return this.dparenDepth===1?(this.pos=n+2,this.column=s+2,this.dparenDepth=0,this.makeToken(w.DPAREN_END,"))",n,r,s)):this.dparenDepth>1?(this.pos=n+1,this.column=s+1,this.dparenDepth--,this.makeToken(w.RPAREN,")",n,r,s)):(this.pos=n+1,this.column=s+1,this.makeToken(w.RPAREN,")",n,r,s));for(let[u,f,d]of sh)if(!(u==="("&&f==="("||u===")"&&f===")")&&!(this.dparenDepth>0&&u===";"&&(d===w.DSEMI||d===w.SEMI_AND||d===w.SEMI_SEMI_AND))&&i===u&&o===f){if(d===w.DBRACK_START||d===w.DBRACK_END){let h=t[n+2];if(h!==void 0&&h!==" "&&h!==" "&&h!==`
26
+ `&&h!==";"&&h!=="&"&&h!=="|"&&h!=="("&&h!==")"&&h!=="<"&&h!==">")break}return this.pos=n+2,this.column=s+2,this.makeToken(d,u+f,n,r,s)}if(i==="("&&this.dparenDepth>0)return this.pos=n+1,this.column=s+1,this.dparenDepth++,this.makeToken(w.LPAREN,"(",n,r,s);if(i===")"&&this.dparenDepth>1)return this.pos=n+1,this.column=s+1,this.dparenDepth--,this.makeToken(w.RPAREN,")",n,r,s);let c=ih.get(i);if(c!==void 0)return this.pos=n+1,this.column=s+1,this.makeToken(c,i,n,r,s);if(i==="{"){let u=this.scanFdVariable(n);return u!==null?(this.pos=u.end,this.column=s+(u.end-n),{type:w.FD_VARIABLE,value:u.varname,start:n,end:u.end,line:r,column:s}):o==="}"?(this.pos=n+2,this.column=s+2,{type:w.WORD,value:"{}",start:n,end:n+2,line:r,column:s,quoted:!1,singleQuoted:!1}):this.scanBraceExpansion(n)!==null?this.readWordWithBraceExpansion(n,r,s):this.scanLiteralBraceWord(n)!==null?this.readWordWithBraceExpansion(n,r,s):o!==void 0&&o!==" "&&o!==" "&&o!==`
27
27
  `?this.readWord(n,r,s):(this.pos=n+1,this.column=s+1,this.makeToken(w.LBRACE,"{",n,r,s))}return i==="}"?this.isWordCharFollowing(n+1)?this.readWord(n,r,s):(this.pos=n+1,this.column=s+1,this.makeToken(w.RBRACE,"}",n,r,s)):i==="!"?o==="="?(this.pos=n+2,this.column=s+2,this.makeToken(w.WORD,"!=",n,r,s)):(this.pos=n+1,this.column=s+1,this.makeToken(w.BANG,"!",n,r,s)):this.readWord(n,r,s)}looksLikeNestedSubshells(t){let n=this.input,r=n.length,s=t;for(;s<r&&(n[s]===" "||n[s]===" ");)s++;if(s>=r)return!1;let i=n[s];if(i==="(")return this.looksLikeNestedSubshells(s+1);let o=/[a-zA-Z_]/.test(i),a=i==="!"||i==="[";if(!o&&!a)return!1;let l=s;for(;l<r&&/[a-zA-Z0-9_\-.]/.test(n[l]);)l++;if(l===s)return a;let c=l;for(;c<r&&(n[c]===" "||n[c]===" ");)c++;if(c>=r)return!1;let u=n[c];if(u==="="&&n[c+1]!=="="||u===`
28
28
  `||l===c&&/[+\-*/%<>&|^!~?:]/.test(u)&&u!=="-"||u===")"&&n[c+1]===")")return!1;if(c>l&&(u==="-"||u==='"'||u==="'"||u==="$"||/[a-zA-Z_/.]/.test(u))){let f=c;for(;f<r&&n[f]!==`
29
29
  `;){if(n[f]===")")return!0;f++}return!1}if(u===")"){let f=c+1;for(;f<r&&(n[f]===" "||n[f]===" ");)f++;if(n[f]==="|"&&n[f+1]==="|"||n[f]==="&"&&n[f+1]==="&"||n[f]===";"||n[f]==="|"&&n[f+1]!=="|")return!0}return!1}makeToken(t,n,r,s,i){return{type:t,value:n,start:r,end:this.pos,line:s,column:i}}readComment(t,n,r){let s=this.input,i=s.length,o=this.pos;for(;o<i&&s[o]!==`
30
30
  `;)o++;let a=s.slice(t,o);return this.pos=o,this.column=r+(o-t),{type:w.COMMENT,value:a,start:t,end:o,line:n,column:r}}readWord(t,n,r){let s=this.input,i=s.length,o=this.pos,a=o;for(;o<i;){let y=s[o];if(y===" "||y===" "||y===`
31
31
  `||y===";"||y==="&"||y==="|"||y==="("||y===")"||y==="<"||y===">"||y==="'"||y==='"'||y==="\\"||y==="$"||y==="`"||y==="{"||y==="}"||y==="~"||y==="*"||y==="?"||y==="[")break;o++}if(o>a){let y=s[o];if(!(y==="("&&o>a&&"@*+?!".includes(s[o-1]))){if(o>=i||y===" "||y===" "||y===`
32
- `||y===";"||y==="&"||y==="|"||y==="("||y===")"||y==="<"||y===">"){let S=s.slice(a,o);this.pos=o,this.column=r+(o-a);let A=Di.get(S);if(A!==void 0)return{type:A,value:S,start:t,end:o,line:n,column:r};let k=El(S);return k>0&&wl(S.slice(0,k))?{type:w.ASSIGNMENT_WORD,value:S,start:t,end:o,line:n,column:r}:/^[0-9]+$/.test(S)?{type:w.NUMBER,value:S,start:t,end:o,line:n,column:r}:/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(S)?{type:w.NAME,value:S,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}:{type:w.WORD,value:S,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}}}}o=this.pos;let l=this.column,c=this.line,u="",f=!1,d=!1,h=!1,p=!1,m=s[o]==='"'||s[o]==="'",E=!1,b=0;for(;o<i;){let y=s[o];if(!h&&!p){if(y==="("&&u.length>0&&"@*+?!".includes(u[u.length-1])){let S=this.scanExtglobPattern(o);if(S!==null){u+=S.content,o=S.end,l+=S.content.length;continue}}if(y==="["&&b===0){if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){let S=o+1<i?s[o+1]:"";if(S==="^"||S==="!"){u+=y,o++,l++;continue}b=1,u+=y,o++,l++;continue}}else if(y==="["&&b>0){u.length>0&&u[u.length-1]!=="\\"&&b++,u+=y,o++,l++;continue}else if(y==="]"&&b>0){u.length>0&&u[u.length-1]!=="\\"&&b--,u+=y,o++,l++;continue}if(b>0){if(y===`
32
+ `||y===";"||y==="&"||y==="|"||y==="("||y===")"||y==="<"||y===">"){let b=s.slice(a,o);this.pos=o,this.column=r+(o-a);let A=Wi.get(b);if(A!==void 0)return{type:A,value:b,start:t,end:o,line:n,column:r};let k=Pl(b);return k>0&&xl(b.slice(0,k))?{type:w.ASSIGNMENT_WORD,value:b,start:t,end:o,line:n,column:r}:/^[0-9]+$/.test(b)?{type:w.NUMBER,value:b,start:t,end:o,line:n,column:r}:/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(b)?{type:w.NAME,value:b,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}:{type:w.WORD,value:b,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}}}}o=this.pos;let l=this.column,c=this.line,u="",f=!1,d=!1,h=!1,p=!1,m=s[o]==='"'||s[o]==="'",E=!1,S=0;for(;o<i;){let y=s[o];if(!h&&!p){if(y==="("&&u.length>0&&"@*+?!".includes(u[u.length-1])){let b=this.scanExtglobPattern(o);if(b!==null){u+=b.content,o=b.end,l+=b.content.length;continue}}if(y==="["&&S===0){if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){let b=o+1<i?s[o+1]:"";if(b==="^"||b==="!"){u+=y,o++,l++;continue}S=1,u+=y,o++,l++;continue}}else if(y==="["&&S>0){u.length>0&&u[u.length-1]!=="\\"&&S++,u+=y,o++,l++;continue}else if(y==="]"&&S>0){u.length>0&&u[u.length-1]!=="\\"&&S--,u+=y,o++,l++;continue}if(S>0){if(y===`
33
33
  `)break;u+=y,o++,l++;continue}if(y===" "||y===" "||y===`
34
- `||y===";"||y==="&"||y==="|"||y==="("||y===")"||y==="<"||y===">")break}if(y==="$"&&o+1<i&&s[o+1]==="'"&&!h&&!p){for(u+="$'",o+=2,l+=2;o<i&&s[o]!=="'";)s[o]==="\\"&&o+1<i?(u+=s[o]+s[o+1],o+=2,l+=2):(u+=s[o],o++,l++);o<i&&(u+="'",o++,l++);continue}if(y==="$"&&o+1<i&&s[o+1]==='"'&&!h&&!p){o++,l++,p=!0,f=!0,u===""&&(m=!0),o++,l++;continue}if(y==="'"&&!p){if(h)if(h=!1,!m||E)u+=y;else{let S=o+1<i?s[o+1]:"";S&&!bl(S)&&S!=="'"&&(S==='"'?(E=!0,u+=y,d=!1,f=!1):(E=!0,u+=y))}else h=!0,m&&!E?(d=!0,f=!0):u+=y;o++,l++;continue}if(y==='"'&&!h){if(p)if(p=!1,!m||E)u+=y;else{let S=o+1<i?s[o+1]:"";S&&!bl(S)&&S!=='"'&&(S==="'"?(E=!0,u+=y,d=!1,f=!1):(E=!0,u+=y))}else p=!0,m&&!E?f=!0:u+=y;o++,l++;continue}if(y==="\\"&&!h&&o+1<i){let S=s[o+1];if(S===`
35
- `){o+=2,c++,l=1;continue}if(p){if(S==='"'||S==="\\"||S==="$"||S==="`"||S===`
36
- `){if(S===`
37
- `){o+=2,l=1,c++;continue}u+=y+S,o+=2,l+=2;continue}}else{u+=y+S,o+=2,l+=2;continue}}if(y==="$"&&o+1<i&&s[o+1]==="("&&!h){u+=y,o++,l++,u+=s[o],o++,l++;let S=1,A=!1,k=!1,v=0,x=!1,R="",P=[],C=s[o]==="("&&!this.dollarDparenIsSubshell(o),O=C?1:0;for(;S>0&&o<i;){let W=s[o];if(u+=W,A)W==="'"&&(A=!1);else if(k)W==="\\"&&o+1<i?(u+=s[o+1],o++,l++):W==='"'&&(k=!1);else{if(W==="("&&s[o+1]==="("?O++:W===")"&&s[o+1]===")"&&O>0&&O--,O===0&&W==="<"&&s[o+1]==="<"&&s[o+2]!=="<"){let K=o+2,N=!1;for(s[K]==="-"&&(N=!0,K++);s[K]===" "||s[K]===" ";)K++;let{delim:U,endPos:j,unclosedQuote:D,unclosedSubstitution:I}=os(s,K);if(D)throw new st(`unexpected EOF while looking for matching \`${D}'`,c,l);if(I)throw new st("unexpected EOF while looking for matching `)'",c,l);if(U.length>0){u+=s.slice(o+1,j),l+=j-o,P.push({delim:U,stripTabs:N}),o=j;continue}}if(W===`
38
- `&&P.length>0){c++,l=0;let K=o+1;for(let{delim:N,stripTabs:U}of P)for(;!(K>=i);){let j=s.indexOf(`
39
- `,K);j===-1&&(j=i);let D=s.slice(K,j),I=U?D.replace(/^\t+/,""):D;u+=s.slice(K,Math.min(j+1,i)),j<i&&c++;let M=j>=i;if(K=j+1,I===N||M)break}P.length=0,l=0,o=Math.min(K,i);continue}if(W==="'")A=!0,R="";else if(W==='"')k=!0,R="";else if(W==="\\"&&o+1<i)u+=s[o+1],o++,l++,R="";else if(W==="$"&&o+1<i&&s[o+1]==="{"){o++,l++,u+=s[o],o++,l++;let K=1,N=!1,U=!1;for(;K>0&&o<i;){let j=s[o];if(j==="\\"&&o+1<i&&!N){u+=j,o++,l++,u+=s[o],o++,l++;continue}u+=j,N?j==="'"&&(N=!1):U?j==='"'&&(U=!1):j==="'"?N=!0:j==='"'?U=!0:j==="{"?K++:j==="}"&&K--,j===`
40
- `?(c++,l=0):l++,o++}R="";continue}else if(W==="#"&&!C&&(R===""||/\s/.test(s[o-1]||""))){for(;o+1<i&&s[o+1]!==`
41
- `;)o++,l++,u+=s[o];R=""}else/[a-zA-Z_]/.test(W)?R+=W:(R==="case"?(v++,x=!1):R==="in"&&v>0?x=!0:R==="esac"&&v>0&&(v--,x=!1),R="",W==="("?o>0&&s[o-1]==="$"?S++:x||S++:W===")"?x?x=!1:S--:W===";"&&v>0&&(o+1<i&&s[o+1]===";"||o+1<i&&s[o+1]==="&")&&(x=!0))}W===`
42
- `&&(c++,l=0,R=""),o++,l++}continue}if(y==="$"&&o+1<i&&s[o+1]==="["&&!h){u+=y,o++,l++,u+=s[o],o++,l++;let S=1;for(;S>0&&o<i;){let A=s[o];u+=A,A==="["?S++:A==="]"?S--:A===`
43
- `&&(c++,l=0),o++,l++}continue}if(y==="$"&&o+1<i&&s[o+1]==="{"&&!h){u+=y,o++,l++,u+=s[o],o++,l++;let S=1,A=!1,k=!1,v=c,x=l,R=c,P=l;for(;S>0&&o<i;){let C=s[o];if(C==="\\"&&o+1<i&&s[o+1]===`
44
- `){o+=2,c++,l=1;continue}if(C==="\\"&&o+1<i&&!A){u+=C,o++,l++,u+=s[o],o++,l++;continue}u+=C,A?C==="'"&&(A=!1):k?C==='"'&&(k=!1):C==="'"?(A=!0,v=c,x=l):C==='"'?(k=!0,R=c,P=l):C==="{"?S++:C==="}"&&S--,C===`
45
- `&&(c++,l=0),o++,l++}if(A)throw new st("unexpected EOF while looking for matching `''",v,x);if(k)throw new st("unexpected EOF while looking for matching `\"'",R,P);continue}if(y==="$"&&o+1<i&&!h){let S=s[o+1];if(S==="#"||S==="?"||S==="$"||S==="!"||S==="@"||S==="*"||S==="-"||S>="0"&&S<="9"){u+=y+S,o+=2,l+=2;continue}}if(y==="`"&&!h){for(u+=y,o++,l++;o<i&&s[o]!=="`";){let S=s[o];u+=S,S==="\\"&&o+1<i&&(u+=s[o+1],o++,l++),S===`
34
+ `||y===";"||y==="&"||y==="|"||y==="("||y===")"||y==="<"||y===">")break}if(y==="$"&&o+1<i&&s[o+1]==="'"&&!h&&!p){for(u+="$'",o+=2,l+=2;o<i&&s[o]!=="'";)s[o]==="\\"&&o+1<i?(u+=s[o]+s[o+1],o+=2,l+=2):(u+=s[o],o++,l++);o<i&&(u+="'",o++,l++);continue}if(y==="$"&&o+1<i&&s[o+1]==='"'&&!h&&!p){o++,l++,p=!0,f=!0,u===""&&(m=!0),o++,l++;continue}if(y==="'"&&!p){if(h)if(h=!1,!m||E)u+=y;else{let b=o+1<i?s[o+1]:"";b&&!$l(b)&&b!=="'"&&(b==='"'?(E=!0,u+=y,d=!1,f=!1):(E=!0,u+=y))}else h=!0,m&&!E?(d=!0,f=!0):u+=y;o++,l++;continue}if(y==='"'&&!h){if(p)if(p=!1,!m||E)u+=y;else{let b=o+1<i?s[o+1]:"";b&&!$l(b)&&b!=='"'&&(b==="'"?(E=!0,u+=y,d=!1,f=!1):(E=!0,u+=y))}else p=!0,m&&!E?f=!0:u+=y;o++,l++;continue}if(y==="\\"&&!h&&o+1<i){let b=s[o+1];if(b===`
35
+ `){o+=2,c++,l=1;continue}if(p){if(b==='"'||b==="\\"||b==="$"||b==="`"||b===`
36
+ `){if(b===`
37
+ `){o+=2,l=1,c++;continue}u+=y+b,o+=2,l+=2;continue}}else{u+=y+b,o+=2,l+=2;continue}}if(y==="$"&&o+1<i&&s[o+1]==="("&&!h){u+=y,o++,l++,u+=s[o],o++,l++;let b=1,A=!1,k=!1,v=0,$=!1,O="",P=[],N=s[o]==="("&&!this.dollarDparenIsSubshell(o),D=N?1:0;for(;b>0&&o<i;){let V=s[o];if(u+=V,A)V==="'"&&(A=!1);else if(k)V==="\\"&&o+1<i?(u+=s[o+1],o++,l++):V==='"'&&(k=!1);else{if(V==="("&&s[o+1]==="("?D++:V===")"&&s[o+1]===")"&&D>0&&D--,D===0&&V==="<"&&s[o+1]==="<"&&s[o+2]!=="<"){let X=o+2,R=!1;for(s[X]==="-"&&(R=!0,X++);s[X]===" "||s[X]===" ";)X++;let{delim:j,endPos:q,unclosedQuote:I,unclosedSubstitution:T}=ds(s,X);if(I)throw new it(`unexpected EOF while looking for matching \`${I}'`,c,l);if(T)throw new it("unexpected EOF while looking for matching `)'",c,l);if(j.length>0){u+=s.slice(o+1,q),l+=q-o,P.push({delim:j,stripTabs:R}),o=q;continue}}if(V===`
38
+ `&&P.length>0){c++,l=0;let X=o+1;for(let{delim:R,stripTabs:j}of P)for(;!(X>=i);){let q=s.indexOf(`
39
+ `,X);q===-1&&(q=i);let I=s.slice(X,q),T=j?I.replace(/^\t+/,""):I;u+=s.slice(X,Math.min(q+1,i)),q<i&&c++;let B=q>=i;if(X=q+1,T===R||B)break}P.length=0,l=0,o=Math.min(X,i);continue}if(V==="'")A=!0,O="";else if(V==='"')k=!0,O="";else if(V==="\\"&&o+1<i)u+=s[o+1],o++,l++,O="";else if(V==="$"&&o+1<i&&s[o+1]==="{"){o++,l++,u+=s[o],o++,l++;let X=1,R=!1,j=!1;for(;X>0&&o<i;){let q=s[o];if(q==="\\"&&o+1<i&&!R){u+=q,o++,l++,u+=s[o],o++,l++;continue}u+=q,R?q==="'"&&(R=!1):j?q==='"'&&(j=!1):q==="'"?R=!0:q==='"'?j=!0:q==="{"?X++:q==="}"&&X--,q===`
40
+ `?(c++,l=0):l++,o++}O="";continue}else if(V==="#"&&!N&&(O===""||/\s/.test(s[o-1]||""))){for(;o+1<i&&s[o+1]!==`
41
+ `;)o++,l++,u+=s[o];O=""}else/[a-zA-Z_]/.test(V)?O+=V:(O==="case"?(v++,$=!1):O==="in"&&v>0?$=!0:O==="esac"&&v>0&&(v--,$=!1),O="",V==="("?o>0&&s[o-1]==="$"?b++:$||b++:V===")"?$?$=!1:b--:V===";"&&v>0&&(o+1<i&&s[o+1]===";"||o+1<i&&s[o+1]==="&")&&($=!0))}V===`
42
+ `&&(c++,l=0,O=""),o++,l++}continue}if(y==="$"&&o+1<i&&s[o+1]==="["&&!h){u+=y,o++,l++,u+=s[o],o++,l++;let b=1;for(;b>0&&o<i;){let A=s[o];u+=A,A==="["?b++:A==="]"?b--:A===`
43
+ `&&(c++,l=0),o++,l++}continue}if(y==="$"&&o+1<i&&s[o+1]==="{"&&!h){u+=y,o++,l++,u+=s[o],o++,l++;let b=1,A=!1,k=!1,v=c,$=l,O=c,P=l;for(;b>0&&o<i;){let N=s[o];if(N==="\\"&&o+1<i&&s[o+1]===`
44
+ `){o+=2,c++,l=1;continue}if(N==="\\"&&o+1<i&&!A){u+=N,o++,l++,u+=s[o],o++,l++;continue}u+=N,A?N==="'"&&(A=!1):k?N==='"'&&(k=!1):N==="'"?(A=!0,v=c,$=l):N==='"'?(k=!0,O=c,P=l):N==="{"?b++:N==="}"&&b--,N===`
45
+ `&&(c++,l=0),o++,l++}if(A)throw new it("unexpected EOF while looking for matching `''",v,$);if(k)throw new it("unexpected EOF while looking for matching `\"'",O,P);continue}if(y==="$"&&o+1<i&&!h){let b=s[o+1];if(b==="#"||b==="?"||b==="$"||b==="!"||b==="@"||b==="*"||b==="-"||b>="0"&&b<="9"){u+=y+b,o+=2,l+=2;continue}}if(y==="`"&&!h){for(u+=y,o++,l++;o<i&&s[o]!=="`";){let b=s[o];u+=b,b==="\\"&&o+1<i&&(u+=s[o+1],o++,l++),b===`
46
46
  `&&(c++,l=0),o++,l++}o<i&&(u+=s[o],o++,l++);continue}u+=y,o++,y===`
47
- `?(c++,l=1):l++}if(this.pos=o,this.column=l,this.line=c,E&&m&&(u=s[t]+u,f=!1,d=!1),h||p){let y=h?"'":'"';throw new st(`unexpected EOF while looking for matching \`${y}'`,n,r)}if(!m&&u.length>=2){if(u[0]==="'"&&u[u.length-1]==="'"){let y=u.slice(1,-1);!y.includes("'")&&!y.includes('"')&&(u=y,f=!0,d=!0)}else if(u[0]==='"'&&u[u.length-1]==='"'){let y=u.slice(1,-1),S=!1;for(let A=0;A<y.length;A++){if(y[A]==='"'){S=!0;break}y[A]==="\\"&&A+1<y.length&&A++}S||(u=y,f=!0,d=!1)}}if(u==="")return{type:w.WORD,value:"",start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d};let g=Di.get(u);if(!f&&g!==void 0)return{type:g,value:u,start:t,end:o,line:n,column:r};if(!m){let y=El(u);if(y>0&&wl(u.slice(0,y)))return{type:w.ASSIGNMENT_WORD,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}}return/^[0-9]+$/.test(u)?{type:w.NUMBER,value:u,start:t,end:o,line:n,column:r}:Gd(u)?{type:w.NAME,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}:{type:w.WORD,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}}readHeredocContent(){for(;this.pendingHeredocs.length>0;){let t=this.pendingHeredocs.shift();if(!t)break;let n=this.pos,r=this.line,s=this.column,i="",o=!1;for(;this.pos<this.input.length;){let a="",l="",c="";for(;;){for(a="";this.pos<this.input.length&&this.input[this.pos]!==`
47
+ `?(c++,l=1):l++}if(this.pos=o,this.column=l,this.line=c,E&&m&&(u=s[t]+u,f=!1,d=!1),h||p){let y=h?"'":'"';throw new it(`unexpected EOF while looking for matching \`${y}'`,n,r)}if(!m&&u.length>=2){if(u[0]==="'"&&u[u.length-1]==="'"){let y=u.slice(1,-1);!y.includes("'")&&!y.includes('"')&&(u=y,f=!0,d=!0)}else if(u[0]==='"'&&u[u.length-1]==='"'){let y=u.slice(1,-1),b=!1;for(let A=0;A<y.length;A++){if(y[A]==='"'){b=!0;break}y[A]==="\\"&&A+1<y.length&&A++}b||(u=y,f=!0,d=!1)}}if(u==="")return{type:w.WORD,value:"",start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d};let g=Wi.get(u);if(!f&&g!==void 0)return{type:g,value:u,start:t,end:o,line:n,column:r};if(!m){let y=Pl(u);if(y>0&&xl(u.slice(0,y)))return{type:w.ASSIGNMENT_WORD,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}}return/^[0-9]+$/.test(u)?{type:w.NUMBER,value:u,start:t,end:o,line:n,column:r}:oh(u)?{type:w.NAME,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}:{type:w.WORD,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}}readHeredocContent(){for(;this.pendingHeredocs.length>0;){let t=this.pendingHeredocs.shift();if(!t)break;let n=this.pos,r=this.line,s=this.column,i="",o=!1;for(;this.pos<this.input.length;){let a="",l="",c="";for(;;){for(a="";this.pos<this.input.length&&this.input[this.pos]!==`
48
48
  `;)a+=this.input[this.pos],this.pos++,this.column++;let f=0;for(let d=a.length-1;a[d]==="\\";d-=1)f+=1;if(c+=a,t.quoted||f%2===0||this.pos+1>=this.input.length)break;c=c.slice(0,-1),l+=`${a}
49
49
  `,this.pos++,this.line++,this.column=1}if((t.stripTabs?c.replace(/^\t+/,""):c)===t.delimiter){o=!0,this.pos<this.input.length&&this.input[this.pos]===`
50
50
  `&&(this.pos++,this.line++,this.column=1);break}if(i+=l,i+=a,this.pos<this.input.length&&this.input[this.pos]===`
51
51
  `?(i+=`
52
52
  `,this.pos++,this.line++,this.column=1):a.length>0&&(i+=`
53
- `),i.length>this.maxHeredocSize)throw new st(`Heredoc size limit exceeded (${this.maxHeredocSize} bytes)`,r,s)}this.tokens.push({type:w.HEREDOC_CONTENT,value:i,start:n,end:this.pos,line:r,column:s,heredocTerminated:o})}}readHeredocDelimiterToken(t,n,r,s){let i=this.input,{delim:o,endPos:a,quoted:l,unclosedQuote:c,unclosedSubstitution:u}=os(i,t);if(c)throw new st(`unexpected EOF while looking for matching \`${c}'`,n,r);if(u)throw new st("unexpected EOF while looking for matching `)'",n,r);if(a===t)throw new st("Expected here-document delimiter",n,r);let f=n,d=r;for(let h=t;h<a;h++)i[h]===`
53
+ `),i.length>this.maxHeredocSize)throw new it(`Heredoc size limit exceeded (${this.maxHeredocSize} bytes)`,r,s)}this.tokens.push({type:w.HEREDOC_CONTENT,value:i,start:n,end:this.pos,line:r,column:s,heredocTerminated:o})}}readHeredocDelimiterToken(t,n,r,s){let i=this.input,{delim:o,endPos:a,quoted:l,unclosedQuote:c,unclosedSubstitution:u}=ds(i,t);if(c)throw new it(`unexpected EOF while looking for matching \`${c}'`,n,r);if(u)throw new it("unexpected EOF while looking for matching `)'",n,r);if(a===t)throw new it("Expected here-document delimiter",n,r);let f=n,d=r;for(let h=t;h<a;h++)i[h]===`
54
54
  `?(f+=1,d=1):d+=1;return this.pos=a,this.line=f,this.column=d,this.pendingHeredocs.push({delimiter:o,stripTabs:s,quoted:l}),{type:w.WORD,value:i.slice(t,a),start:t,end:a,line:n,column:r,quoted:l,heredocDelimiter:o}}isWordCharFollowing(t){if(t>=this.input.length)return!1;let n=this.input[t];return!(n===" "||n===" "||n===`
55
55
  `||n===";"||n==="&"||n==="|"||n==="("||n===")"||n==="<"||n===">")}readWordWithBraceExpansion(t,n,r){let s=this.input,i=s.length,o=t,a=r;for(;o<i;){let c=s[o];if(c===" "||c===" "||c===`
56
56
  `||c===";"||c==="&"||c==="|"||c==="("||c===")"||c==="<"||c===">")break;if(c==="{"){if(this.scanBraceExpansion(o)!==null){let f=1;for(o++,a++;o<i&&f>0;)s[o]==="{"?f++:s[o]==="}"&&f--,o++,a++;continue}o++,a++;continue}if(c==="}"){o++,a++;continue}if(c==="$"&&o+1<i&&s[o+1]==="("){o++,a++,o++,a++;let u=1;for(;u>0&&o<i;)s[o]==="("?u++:s[o]===")"&&u--,o++,a++;continue}if(c==="$"&&o+1<i&&s[o+1]==="{"){o++,a++,o++,a++;let u=1;for(;u>0&&o<i;)s[o]==="{"?u++:s[o]==="}"&&u--,o++,a++;continue}if(c==="`"){for(o++,a++;o<i&&s[o]!=="`";)s[o]==="\\"&&o+1<i?(o+=2,a+=2):(o++,a++);o<i&&(o++,a++);continue}o++,a++}let l=s.slice(t,o);return this.pos=o,this.column=a,{type:w.WORD,value:l,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}}scanBraceExpansion(t){let n=this.input,r=n.length,s=t+1,i=1,o=!1,a=!1;for(;s<r&&i>0;){let l=n[s];if(l==="{")i++,s++;else if(l==="}")i--,s++;else if(l===","&&i===1)o=!0,s++;else if(l==="."&&s+1<r&&n[s+1]===".")a=!0,s+=2;else{if(l===" "||l===" "||l===`
@@ -61,213 +61,229 @@ Gid: ${s} ${s} ${s} ${s}
61
61
  `&&(l=!0),s++;continue}if(c==="'"){o=!0,s++;continue}if(c==='"'){a=!0,s++;continue}if(c==="\\"){s+=2;continue}if(c===`
62
62
  `&&(l=!0),c==="("){i++,s++;continue}if(c===")"){if(i--,i===1){let u=s+1;if(u<r&&n[u]===")")return!1;let f=u,d=!1;for(;f<r&&(n[f]===" "||n[f]===" "||n[f]===`
63
63
  `);)d=!0,f++;if(d&&f<r&&n[f]===")"||l)return!0}if(i===0)return!1;s++;continue}s++}return!1}dparenClosesWithSpacedParens(t){let n=this.input,r=n.length,s=t,i=2,o=!1,a=!1;for(;s<r&&i>0;){let l=n[s];if(o){l==="'"&&(o=!1),s++;continue}if(a){if(l==="\\"){s+=2;continue}l==='"'&&(a=!1),s++;continue}if(l==="'"){o=!0,s++;continue}if(l==='"'){a=!0,s++;continue}if(l==="\\"){s+=2;continue}if(l==="("){i++,s++;continue}if(l===")"){if(i--,i===1){let c=s+1;if(c<r&&n[c]===")")return!1;let u=c,f=!1;for(;u<r&&(n[u]===" "||n[u]===" "||n[u]===`
64
- `);)f=!0,u++;if(f&&u<r&&n[u]===")")return!0}if(i===0)return!1;s++;continue}if(i===1&&(l==="|"&&s+1<r&&n[s+1]==="|"||l==="&"&&s+1<r&&n[s+1]==="&"||l==="|"&&s+1<r&&n[s+1]!=="|"))return!0;s++}return!1}};var Ti=1e6,gr=1e5,Hd=1e6,Sl=200,Oe;(function(e){e[e.Default=0]="Default",e[e.Assignment=1]="Assignment",e[e.NoBraceExpansion=2]="NoBraceExpansion",e[e.Regex=4]="Regex"})(Oe||(Oe={}));var Al=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS,w.AND_GREAT,w.AND_DGREAT]),vl=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS]),kl=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS,w.AND_GREAT,w.AND_DGREAT]),xe=class extends Error{line;column;token;constructor(t,n,r,s=void 0){super(`Parse error at ${n}:${r}: ${t}`),this.line=n,this.column=r,this.token=s,this.name="ParseException"}},ls=class{iterations=0;tokens=0;depth=0;reset(){this.iterations=0,this.tokens=0,this.depth=0}chargeIteration(t,n){if(this.iterations++,this.iterations>Hd)throw new xe("Maximum parse iterations exceeded (possible infinite loop)",t,n)}chargeTokens(t,n=1,r=1){if(this.tokens+=t,this.tokens>gr)throw new xe(`Too many tokens: cumulative count exceeds limit of ${gr}`,n,r)}enter(t,n){if(this.depth++,this.depth>Sl)throw this.depth--,new xe(`Maximum parser nesting depth exceeded (${Sl})`,t,n);let r=!0;return()=>{r&&(r=!1,this.depth--)}}};function me(e,t){for(;t<e.length;){if(e[t]==="\\"&&e[t+1]===`
65
- `){t+=2;continue}if(/\s/.test(e[t])){t++;continue}break}return t}var cs=["=","+=","-=","*=","/=","%=","<<=",">>=","&=","|=","^="];function wr(e){if(e.includes("#")){let n=e.split("#");if(n.length!==2)return Number.NaN;let[r,s]=n;if(!/^\d+$/.test(r)||s.length===0)return Number.NaN;let i=Number.parseInt(r,10);if(i<2||i>64)return Number.NaN;let o=0;for(let a of s){let l;if(/[0-9]/.test(a))l=a.charCodeAt(0)-48;else if(/[a-z]/.test(a))l=a.charCodeAt(0)-97+10;else if(/[A-Z]/.test(a))l=a.charCodeAt(0)-65+(i<=36?10:36);else if(a==="@")l=62;else if(a==="_")l=63;else return Number.NaN;if(l>=i)return Number.NaN;if(o=o*i+l,o>Number.MAX_SAFE_INTEGER)return Number.MAX_SAFE_INTEGER}return o}if(e.startsWith("0x")||e.startsWith("0X")){let n=Number.parseInt(e.slice(2),16);return n>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:n}if(e.startsWith("0")&&e.length>1&&/^[0-9]+$/.test(e)){if(/[89]/.test(e))return Number.NaN;let n=Number.parseInt(e,8);return n>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:n}let t=Number.parseInt(e,10);return t>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:t}function Pl(e,t,n,r){if(n.slice(r,r+3)!=="$((")return null;let s=r+3,i=1,o=s;for(;s<n.length-1&&i>0;)n[s]==="("&&n[s+1]==="("?(i++,s+=2):n[s]===")"&&n[s+1]===")"?(i--,i>0&&(s+=2)):s++;let a=n.slice(o,s),{expr:l}=e(t,a,0);return s+=2,{expr:{type:"ArithNested",expression:l},pos:s}}function xl(e,t){if(e.slice(t,t+2)!=="$'")return null;let n=t+2,r="";for(;n<e.length&&e[n]!=="'";)if(e[n]==="\\"&&n+1<e.length){let i=e[n+1];switch(i){case"n":r+=`
66
- `;break;case"t":r+=" ";break;case"r":r+="\r";break;case"\\":r+="\\";break;case"'":r+="'";break;default:r+=i}n+=2}else r+=e[n],n++;e[n]==="'"&&n++;let s=Number.parseInt(r,10);return{expr:{type:"ArithNumber",value:Number.isNaN(s)?0:s},pos:n}}function $l(e,t){if(e.slice(t,t+2)!=='$"')return null;let n=t+2,r="";for(;n<e.length&&e[n]!=='"';)e[n]==="\\"&&n+1<e.length?(r+=e[n+1],n+=2):(r+=e[n],n++);e[n]==='"'&&n++;let s=Number.parseInt(r,10);return{expr:{type:"ArithNumber",value:Number.isNaN(s)?0:s},pos:n}}function Zd(e){let t="",n=0;for(;n<e.length;)if(e[n]==='"'){for(n++;n<e.length&&e[n]!=='"';)e[n]==="\\"&&n+1<e.length?(t+=e[n+1],n+=2):(t+=e[n],n++);n<e.length&&n++}else t+=e[n],n++;return t}function ie(e,t){let n=Zd(t),{expr:r,pos:s}=Zn(e,n,0),i=me(n,s);if(i<n.length){let o=t.slice(i).trim();if(o)return{type:"ArithmeticExpression",originalText:t,expression:{type:"ArithSyntaxError",errorToken:o,message:`${o}: syntax error: invalid arithmetic operator (error token is "${o}")`}}}return{type:"ArithmeticExpression",expression:r,originalText:t}}function Xe(e,t){return{expr:{type:"ArithSyntaxError",errorToken:e,message:`syntax error: operand expected (error token is "${e}")`},pos:t}}function Ye(e,t){return me(e,t)>=e.length}function Zn(e,t,n){return Qd(e,t,n)}function Rn(e,t,n){return e.withDepth(()=>Zn(e,t,n))}function Qd(e,t,n){let{expr:r,pos:s}=Er(e,t,n);for(s=me(t,s);t[s]===",";){if(s++,Ye(t,s))return Xe(",",s);let{expr:o,pos:a}=Er(e,t,s);r={type:"ArithBinary",operator:",",left:r,right:o},s=me(t,a)}return{expr:r,pos:s}}function Er(e,t,n){let{expr:r,pos:s}=Kd(e,t,n);if(s=me(t,s),t[s]==="?"){s++;let{expr:i,pos:o}=Rn(e,t,s);if(s=me(t,o),t[s]===":"){s++;let{expr:a,pos:l}=Rn(e,t,s);return{expr:{type:"ArithTernary",condition:r,consequent:i,alternate:a},pos:l}}}return{expr:r,pos:s}}function Kd(e,t,n){let{expr:r,pos:s}=Cl(e,t,n);for(;s=me(t,s),t.slice(s,s+2)==="||";){if(s+=2,Ye(t,s))return Xe("||",s);let{expr:o,pos:a}=Cl(e,t,s);r={type:"ArithBinary",operator:"||",left:r,right:o},s=a}return{expr:r,pos:s}}function Cl(e,t,n){let{expr:r,pos:s}=Nl(e,t,n);for(;s=me(t,s),t.slice(s,s+2)==="&&";){if(s+=2,Ye(t,s))return Xe("&&",s);let{expr:o,pos:a}=Nl(e,t,s);r={type:"ArithBinary",operator:"&&",left:r,right:o},s=a}return{expr:r,pos:s}}function Nl(e,t,n){let{expr:r,pos:s}=Rl(e,t,n);for(;s=me(t,s),t[s]==="|"&&t[s+1]!=="|";){if(s++,Ye(t,s))return Xe("|",s);let{expr:o,pos:a}=Rl(e,t,s);r={type:"ArithBinary",operator:"|",left:r,right:o},s=a}return{expr:r,pos:s}}function Rl(e,t,n){let{expr:r,pos:s}=Ol(e,t,n);for(;s=me(t,s),t[s]==="^";){if(s++,Ye(t,s))return Xe("^",s);let{expr:o,pos:a}=Ol(e,t,s);r={type:"ArithBinary",operator:"^",left:r,right:o},s=a}return{expr:r,pos:s}}function Ol(e,t,n){let{expr:r,pos:s}=Dl(e,t,n);for(;s=me(t,s),t[s]==="&"&&t[s+1]!=="&";){if(s++,Ye(t,s))return Xe("&",s);let{expr:o,pos:a}=Dl(e,t,s);r={type:"ArithBinary",operator:"&",left:r,right:o},s=a}return{expr:r,pos:s}}function Dl(e,t,n){let{expr:r,pos:s}=Il(e,t,n);for(;s=me(t,s),t.slice(s,s+2)==="=="||t.slice(s,s+2)==="!=";){let i=t.slice(s,s+2);if(s+=2,Ye(t,s))return Xe(i,s);let{expr:o,pos:a}=Il(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function Il(e,t,n){let{expr:r,pos:s}=_i(e,t,n);for(;;)if(s=me(t,s),t.slice(s,s+2)==="<="||t.slice(s,s+2)===">="){let i=t.slice(s,s+2);if(s+=2,Ye(t,s))return Xe(i,s);let{expr:o,pos:a}=_i(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else if(t[s]==="<"||t[s]===">"){let i=t[s];if(s++,Ye(t,s))return Xe(i,s);let{expr:o,pos:a}=_i(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else break;return{expr:r,pos:s}}function _i(e,t,n){let{expr:r,pos:s}=Tl(e,t,n);for(;s=me(t,s),t.slice(s,s+2)==="<<"||t.slice(s,s+2)===">>";){let i=t.slice(s,s+2);if(s+=2,Ye(t,s))return Xe(i,s);let{expr:o,pos:a}=Tl(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function Tl(e,t,n){let{expr:r,pos:s}=_l(e,t,n);for(;s=me(t,s),(t[s]==="+"||t[s]==="-")&&t[s+1]!==t[s];){let i=t[s];if(s++,Ye(t,s))return Xe(i,s);let{expr:o,pos:a}=_l(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function _l(e,t,n){let{expr:r,pos:s}=us(e,t,n);for(;;)if(s=me(t,s),t[s]==="*"&&t[s+1]!=="*"){if(s++,Ye(t,s))return Xe("*",s);let{expr:o,pos:a}=us(e,t,s);r={type:"ArithBinary",operator:"*",left:r,right:o},s=a}else if(t[s]==="/"||t[s]==="%"){let i=t[s];if(s++,Ye(t,s))return Xe(i,s);let{expr:o,pos:a}=us(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else break;return{expr:r,pos:s}}function us(e,t,n){let{expr:r,pos:s}=Li(e,t,n),i=me(t,s);if(t.slice(i,i+2)==="**"){if(i+=2,Ye(t,i))return Xe("**",i);let{expr:a,pos:l}=e.withDepth(()=>us(e,t,i));return{expr:{type:"ArithBinary",operator:"**",left:r,right:a},pos:l}}return{expr:r,pos:s}}function Li(e,t,n){let r=me(t,n);if(t.slice(r,r+2)==="++"||t.slice(r,r+2)==="--"){let s=t.slice(r,r+2);r+=2;let{expr:i,pos:o}=e.withDepth(()=>Li(e,t,r));return{expr:{type:"ArithUnary",operator:s,operand:i,prefix:!0},pos:o}}if(t[r]==="+"||t[r]==="-"||t[r]==="!"||t[r]==="~"){let s=t[r];r++;let{expr:i,pos:o}=e.withDepth(()=>Li(e,t,r));return{expr:{type:"ArithUnary",operator:s,operand:i,prefix:!0},pos:o}}return Yd(e,t,r)}function Xd(e,t){let n=e[t];return n==="$"||n==="`"}function Yd(e,t,n){let{expr:r,pos:s}=Ll(e,t,n,!1),i=[r];for(;Xd(t,s);){let{expr:a,pos:l}=Ll(e,t,s,!0);i.push(a),s=l}i.length>1&&(r={type:"ArithConcat",parts:i});let o;if(t[s]==="["&&r.type==="ArithConcat"){s++;let{expr:a,pos:l}=Rn(e,t,s);o=a,s=l,t[s]==="]"&&s++}if(o&&r.type==="ArithConcat"&&(r={type:"ArithDynamicElement",nameExpr:r,subscript:o},o=void 0),s=me(t,s),r.type==="ArithConcat"||r.type==="ArithVariable"||r.type==="ArithDynamicElement"){for(let a of cs)if(t.slice(s,s+a.length)===a&&t.slice(s,s+a.length+1)!=="=="){s+=a.length;let{expr:l,pos:c}=e.withDepth(()=>Er(e,t,s));return r.type==="ArithDynamicElement"?{expr:{type:"ArithDynamicAssignment",operator:a,target:r.nameExpr,subscript:r.subscript,value:l},pos:c}:r.type==="ArithConcat"?{expr:{type:"ArithDynamicAssignment",operator:a,target:r,value:l},pos:c}:{expr:{type:"ArithAssignment",operator:a,variable:r.name,value:l},pos:c}}}if(t.slice(s,s+2)==="++"||t.slice(s,s+2)==="--"){let a=t.slice(s,s+2);return s+=2,{expr:{type:"ArithUnary",operator:a,operand:r,prefix:!1},pos:s}}return{expr:r,pos:s}}function Ll(e,t,n,r=!1){let s=me(t,n),i=Pl(Rn,e,t,s);if(i)return i;let o=xl(t,s);if(o)return o;let a=$l(t,s);if(a)return a;if(t.slice(s,s+2)==="$("&&t[s+2]!=="("){s+=2;let c=1,u=s;for(;s<t.length&&c>0;)t[s]==="("?c++:t[s]===")"&&c--,c>0&&s++;let f=t.slice(u,s);return s++,{expr:{type:"ArithCommandSubst",command:f},pos:s}}if(t[s]==="`"){s++;let c=s;for(;s<t.length&&t[s]!=="`";)s++;let u=t.slice(c,s);return t[s]==="`"&&s++,{expr:{type:"ArithCommandSubst",command:u},pos:s}}if(t[s]==="("){s++;let{expr:c,pos:u}=Rn(e,t,s);return s=me(t,u),t[s]===")"&&s++,{expr:{type:"ArithGroup",expression:c},pos:s}}if(t[s]==="'"){s++;let c="";for(;s<t.length&&t[s]!=="'";)c+=t[s],s++;t[s]==="'"&&s++;let u=Number.parseInt(c,10);return{expr:{type:"ArithSingleQuote",content:c,value:Number.isNaN(u)?0:u},pos:s}}if(t[s]==='"'){s++;let c="";for(;s<t.length&&t[s]!=='"';)t[s]==="\\"&&s+1<t.length?(c+=t[s+1],s+=2):(c+=t[s],s++);t[s]==='"'&&s++;let u=c.trim();if(!u)return{expr:{type:"ArithNumber",value:0},pos:s};let{expr:f}=Rn(e,u,0);return{expr:f,pos:s}}if(/[0-9]/.test(t[s])){let c="",u=!1,f=!1;for(;s<t.length;){let h=t[s];if(u)if(/[0-9a-zA-Z@_]/.test(h))c+=h,s++;else break;else if(h==="#")u=!0,c+=h,s++;else if(c==="0"&&(h==="x"||h==="X")&&s+1<t.length&&/[0-9a-fA-F]/.test(t[s+1]))f=!0,c+=h,s++;else if(f&&/[0-9a-fA-F]/.test(h))c+=h,s++;else if(!f&&/[0-9]/.test(h))c+=h,s++;else break}if(s<t.length&&/[a-zA-Z_]/.test(t[s])){let h=c;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)h+=t[s],s++;return{expr:{type:"ArithSyntaxError",errorToken:h,message:`${h}: value too great for base (error token is "${h}")`},pos:s}}if(t[s]==="."&&/[0-9]/.test(t[s+1]))throw new ce(`${c}.${t[s+1]}...: syntax error: invalid arithmetic operator`);if(t[s]==="["){let h=t.slice(s).trim();return{expr:{type:"ArithNumberSubscript",number:c,errorToken:h},pos:t.length}}return{expr:{type:"ArithNumber",value:wr(c)},pos:s}}if(t[s]==="$"&&t[s+1]==="{"){let c=s+2,u=1,f=c;for(;f<t.length&&u>0;)t[f]==="{"?u++:t[f]==="}"&&u--,u>0&&f++;let d=t.slice(c,f),h=f+1;if(t[h]==="#"){let p=h+1;for(;p<t.length&&/[0-9a-zA-Z@_]/.test(t[p]);)p++;let m=t.slice(h+1,p);return{expr:{type:"ArithDynamicBase",baseExpr:d,value:m},pos:p}}if(/[0-9]/.test(t[h])||t[h]==="x"||t[h]==="X"){let p=h;if(t[h]==="x"||t[h]==="X")for(p++;p<t.length&&/[0-9a-fA-F]/.test(t[p]);)p++;else for(;p<t.length&&/[0-9]/.test(t[p]);)p++;let m=t.slice(h,p);return{expr:{type:"ArithDynamicNumber",prefix:d,suffix:m},pos:p}}return s=h,{expr:{type:"ArithBracedExpansion",content:d},pos:s}}if(t[s]==="$"&&s+1<t.length&&/[0-9]/.test(t[s+1])){s++;let c="";for(;s<t.length&&/[0-9]/.test(t[s]);)c+=t[s],s++;return{expr:{type:"ArithVariable",name:c,hasDollarPrefix:!0},pos:s}}if(t[s]==="$"&&s+1<t.length&&/[*@#?\-!$]/.test(t[s+1])){let c=t[s+1];return s+=2,{expr:{type:"ArithSpecialVar",name:c},pos:s}}let l=!1;if(t[s]==="$"&&s+1<t.length&&/[a-zA-Z_]/.test(t[s+1])&&(l=!0,s++),s<t.length&&/[a-zA-Z_]/.test(t[s])){let c="";for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)c+=t[s],s++;if(t[s]==="["&&!r){s++;let u;if(t[s]==="'"||t[s]==='"'){let d=t[s];for(s++,u="";s<t.length&&t[s]!==d;)u+=t[s],s++;t[s]===d&&s++,s=me(t,s),t[s]==="]"&&s++}let f;if(u===void 0){let{expr:d,pos:h}=Rn(e,t,s);f=d,s=h,t[s]==="]"&&s++}if(s=me(t,s),t[s]==="["&&f)return{expr:{type:"ArithDoubleSubscript",array:c,index:f},pos:s};if(!r){for(let d of cs)if(t.slice(s,s+d.length)===d&&t.slice(s,s+d.length+1)!=="=="){s+=d.length;let{expr:h,pos:p}=e.withDepth(()=>Er(e,t,s));return{expr:{type:"ArithAssignment",operator:d,variable:c,subscript:f,stringKey:u,value:h},pos:p}}}return{expr:{type:"ArithArrayElement",array:c,index:f,stringKey:u},pos:s}}if(s=me(t,s),!r){for(let u of cs)if(t.slice(s,s+u.length)===u&&t.slice(s,s+u.length+1)!=="=="){s+=u.length;let{expr:f,pos:d}=e.withDepth(()=>Er(e,t,s));return{expr:{type:"ArithAssignment",operator:u,variable:c,value:f},pos:d}}}return{expr:{type:"ArithVariable",name:c,hasDollarPrefix:l},pos:s}}if(t[s]==="#"){let c=s+1;for(;c<t.length&&t[c]!==`
67
- `;)c++;let u=t.slice(s,c).trim()||"#";return{expr:{type:"ArithSyntaxError",errorToken:u,message:`${u}: syntax error: invalid arithmetic operator (error token is "${u}")`},pos:t.length}}return{expr:{type:"ArithNumber",value:0},pos:s}}var fs=e=>{let t,n="";for(let r=0;r<e.length;r++){let s=e[r];if(s==="\\"&&t==='"'&&r+1<e.length){n+=s+e[r+1],r+=1;continue}if(s==="'"||s==='"'){t===s?t=void 0:t||(t=s),n+=s;continue}if(s==="\\"&&!t&&r+1<e.length){let i=e[r+1];n+=i==="$"||i==="`"?`\\${i}`:i,r+=1;continue}n+=s}return n};function Jd(e){let t="",n=0;for(;n<e.length;){let r=e[n];if(r<128){t+=String.fromCharCode(r),n++;continue}if((r&224)===192){if(n+1<e.length&&(e[n+1]&192)===128&&r>=194){let s=(r&31)<<6|e[n+1]&63;t+=String.fromCharCode(s),n+=2;continue}t+=String.fromCharCode(r),n++;continue}if((r&240)===224){if(n+2<e.length&&(e[n+1]&192)===128&&(e[n+2]&192)===128){if(r===224&&e[n+1]<160){t+=String.fromCharCode(r),n++;continue}let s=(r&15)<<12|(e[n+1]&63)<<6|e[n+2]&63;if(s>=55296&&s<=57343){t+=String.fromCharCode(r),n++;continue}t+=String.fromCharCode(s),n+=3;continue}t+=String.fromCharCode(r),n++;continue}if((r&248)===240&&r<=244){if(n+3<e.length&&(e[n+1]&192)===128&&(e[n+2]&192)===128&&(e[n+3]&192)===128){if(r===240&&e[n+1]<144){t+=String.fromCharCode(r),n++;continue}let s=(r&7)<<18|(e[n+1]&63)<<12|(e[n+2]&63)<<6|e[n+3]&63;if(s>1114111){t+=String.fromCharCode(r),n++;continue}t+=String.fromCodePoint(s),n+=4;continue}t+=String.fromCharCode(r),n++;continue}t+=String.fromCharCode(r),n++}return t}function Bl(e,t,n){let r=n+1;for(;r<t.length&&/[a-zA-Z0-9_-]/.test(t[r]);)r++;return r}function Fi(e,t,n,r,s){let i=1,o=n+1;for(;o<t.length&&i>0;)t[o]===r?i++:t[o]===s&&i--,i>0&&o++;return i===0?o:-1}function On(e,t,n){let r=n,s=1;for(;r<t.length&&s>0;){let i=t[r];if(i==="\\"&&r+1<t.length){r+=2;continue}if(i==="'"){let o=t.indexOf("'",r+1);if(o!==-1){r=o+1;continue}}if(i==='"'){for(r++;r<t.length&&t[r]!=='"';)t[r]==="\\"&&r+1<t.length?r+=2:r++;r<t.length&&r++;continue}i==="{"?s++:i==="}"&&s--,s>0&&r++}return r}function Wl(e,t,n){let r=n,s=!1;for(;r<t.length;){let i=t[r];if(i==="/"&&s||i==="}")break;if(i==="'"){let o=t.indexOf("'",r+1);if(o!==-1){r=o+1,s=!0;continue}}if(i==='"'){for(r++;r<t.length&&t[r]!=='"';)t[r]==="\\"&&r+1<t.length?r+=2:r++;r<t.length&&r++,s=!0;continue}i==="\\"?(r+=2,s=!0):(r++,s=!0)}return r}function Vl(e,t,n){let r=n,s="";for(;r<t.length;){let i=t[r];if(i==="*"||i==="?")s+=i,r++;else if(i==="["){let o=eh(t,r);o===-1?(s+=i,r++):(s+=t.slice(r,o+1),r=o+1)}else break}return{pattern:s,endIndex:r}}function eh(e,t){let n=t+1;for(n<e.length&&e[n]==="^"&&n++,n<e.length&&e[n]==="]"&&n++;n<e.length;){let r=e[n];if(r==="\\"&&n+1<e.length){let s=e[n+1];if(s==='"'||s==="'")return-1;n+=2;continue}if(r==="]")return n;if(r==='"'||r==="$"||r==="`")return-1;if(r==="'"){let s=e.indexOf("'",n+1);if(s!==-1){n=s+1;continue}}if(r==="["&&n+1<e.length&&e[n+1]===":"){let s=e.indexOf(":]",n+2);if(s!==-1){n=s+2;continue}}if(r==="["&&n+1<e.length&&(e[n+1]==="."||e[n+1]==="=")){let i=`${e[n+1]}]`,o=e.indexOf(i,n+2);if(o!==-1){n=o+2;continue}}n++}return-1}function zl(e,t,n){let r="",s=n;for(;s<t.length&&t[s]!=="'";){let i=t[s];if(i==="\\"&&s+1<t.length)switch(t[s+1]){case"n":r+=`
68
- `,s+=2;break;case"t":r+=" ",s+=2;break;case"r":r+="\r",s+=2;break;case"\\":r+="\\",s+=2;break;case"'":r+="'",s+=2;break;case'"':r+='"',s+=2;break;case"a":r+="\x07",s+=2;break;case"b":r+="\b",s+=2;break;case"e":case"E":r+="\x1B",s+=2;break;case"f":r+="\f",s+=2;break;case"v":r+="\v",s+=2;break;case"x":{let a=[],l=s;for(;l+1<t.length&&t[l]==="\\"&&t[l+1]==="x";){let c=t.slice(l+2,l+4),u=parseInt(c,16);if(!Number.isNaN(u)&&c.length>0)a.push(u),l+=2+c.length;else break}a.length>0?(r+=Jd(a),s=l):(r+="\\x",s+=2);break}case"u":{let a=t.slice(s+2,s+6),l=parseInt(a,16);Number.isNaN(l)?(r+="\\u",s+=2):(r+=String.fromCharCode(l),s+=6);break}case"c":{if(s+2<t.length){let l=t[s+2].charCodeAt(0)&31;r+=String.fromCharCode(l),s+=3}else r+="\\c",s+=2;break}case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let a="",l=s+1;for(;l<t.length&&l<s+4&&/[0-7]/.test(t[l]);)a+=t[l],l++;let c=parseInt(a,8);r+=String.fromCharCode(c),s=l;break}default:r+=i,s++}else r+=i,s++}return s<t.length&&t[s]==="'"&&s++,{part:F.literal(r),endIndex:s}}function Mi(e,t){let n=t.trim();return n===""?{type:"ArithmeticExpression",expression:{type:"ArithNumber",value:0}}:ie(e,n)}function Ml(e){let t=[],n="",r=0;for(let s=0;s<e.length;s++){let i=e[s];i==="{"?(r++,n+=i):i==="}"?(r--,n+=i):i===","&&r===0?(t.push(n),n=""):n+=i}return t.push(n),t}function Ul(e,t,n,r){let s=Fi(e,t,n,"{","}");if(s===-1)return null;let i=t.slice(n+1,s),o=i.match(/^(-?\d+)\.\.(-?\d+)(?:\.\.(-?\d+))?$/);if(o)return{part:{type:"BraceExpansion",items:[{type:"Range",start:Number.parseInt(o[1],10),end:Number.parseInt(o[2],10),step:o[3]?Number.parseInt(o[3],10):void 0,startStr:o[1],endStr:o[2]}]},endIndex:s+1};let a=i.match(/^([a-zA-Z])\.\.([a-zA-Z])(?:\.\.(-?\d+))?$/);return a?{part:{type:"BraceExpansion",items:[{type:"Range",start:a[1],end:a[2],step:a[3]?Number.parseInt(a[3],10):void 0}]},endIndex:s+1}:i.includes(",")&&r?{part:{type:"BraceExpansion",items:Ml(i).map(u=>e.withDepth(()=>({type:"Word",word:F.word(r(e,u,!1,!1,!1))})))},endIndex:s+1}:i.includes(",")?{part:{type:"BraceExpansion",items:Ml(i).map(u=>({type:"Word",word:F.word([F.literal(u)])}))},endIndex:s+1}:null}function Bi(e,t){let n="";for(let r of t.parts)switch(r.type){case"Literal":n+=r.value;break;case"SingleQuoted":n+=`'${r.value}'`;break;case"Escaped":n+=r.value;break;case"DoubleQuoted":n+='"';for(let s of r.parts)s.type==="Literal"||s.type==="Escaped"?n+=s.value:s.type==="ParameterExpansion"&&(n+=`\${${s.parameter}}`);n+='"';break;case"ParameterExpansion":n+=`\${${r.parameter}}`;break;case"Glob":n+=r.pattern;break;case"TildeExpansion":n+="~",r.user&&(n+=r.user);break;case"BraceExpansion":{n+="{";let s=[];for(let i of r.items)if(i.type==="Range"){let o=i.startStr??String(i.start),a=i.endStr??String(i.end);i.step!==void 0?s.push(`${o}..${a}..${i.step}`):s.push(`${o}..${a}`)}else s.push(Bi(e,i.word));s.length===1&&r.items[0].type==="Range"?n+=s[0]:n+=s.join(","),n+="}";break}default:n+=r.type}return n}function jl(e,t){return{[w.LESS]:"<",[w.GREAT]:">",[w.DGREAT]:">>",[w.LESSAND]:"<&",[w.GREATAND]:">&",[w.LESSGREAT]:"<>",[w.CLOBBER]:">|",[w.TLESS]:"<<<",[w.AND_GREAT]:"&>",[w.AND_DGREAT]:"&>>",[w.DLESS]:"<",[w.DLESSDASH]:"<"}[t]||">"}function br(e){let t=e.current(),n=t.type;if(n===w.NUMBER){let r=e.peek(1);return t.end!==r.start||e.isProcessSubstitutionStart(1)?!1:vl.has(r.type)}if(n===w.FD_VARIABLE){let r=e.peek(1);return t.end!==r.start||e.isProcessSubstitutionStart(1)?!1:kl.has(r.type)}return!e.isProcessSubstitutionStart()&&Al.has(n)}function ds(e){let t=null,n;e.check(w.NUMBER)?t=Number.parseInt(e.advance().value,10):e.check(w.FD_VARIABLE)&&(n=e.advance().value);let r=e.advance(),s=jl(e,r.type);if(r.type===w.DLESS||r.type===w.DLESSDASH)return th(e,t,n,r.type===w.DLESSDASH);e.isWord()||e.error("Expected redirection target");let i=e.parseWord();return F.redirection(s,i,t,n)}function th(e,t,n,r){e.isWord()||e.error("Expected here-document delimiter");let s=e.advance(),i=s.heredocDelimiter??s.value,o=s.quoted||!1,a=F.redirection(r?"<<-":"<<",F.hereDoc(i,F.word([]),r,o),t,n);return e.addPendingHeredoc(a,i,r,o),a}function Vi(e){let t=e.getSourceLine(),n=[],r=null,s=[],i=[];for(;e.check(w.ASSIGNMENT_WORD)||br(e);)e.checkIterationLimit(),e.check(w.ASSIGNMENT_WORD)?n.push(nh(e)):i.push(ds(e));if(e.isWord())r=e.parseWord();else if(n.length>0&&(e.check(w.DBRACK_START)||e.check(w.DPAREN_START))){let a=e.advance();r=F.word([F.literal(a.value)])}for(;(!e.isStatementEnd()||e.check(w.RBRACE))&&!e.check(w.PIPE,w.PIPE_AMP);)if(e.checkIterationLimit(),br(e))i.push(ds(e));else if(e.check(w.ASSIGNMENT_WORD)){let a=e.advance(),l=a.value,c=l.endsWith("="),u=l.endsWith("=(");if((c||u)&&(u||e.check(w.LPAREN))){let f=u?l.slice(0,-2):l.slice(0,-1);u||e.expect(w.LPAREN);let d=Wi(e);e.expect(w.RPAREN);let h=d.map(m=>Bi(e,m)),p=`${f}=(${h.join(" ")})`;s.push(e.parseWordFromString(p,!1,!1,!0))}else{let f=e.parseWordFromString(l,a.quoted,a.singleQuoted,!0);s.push(e.parseAdjacentWordParts(f.parts,a.end,Oe.Assignment))}}else if(e.isWord())s.push(e.parseWord());else if(e.check(w.RBRACE)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.LBRACE)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.DBRACK_END)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.LPAREN))e.error("syntax error near unexpected token `('");else break;let o=F.simpleCommand(r,s,n,i);return o.line=t,o}function nh(e){let t=e.expect(w.ASSIGNMENT_WORD),n=t.value,r=n.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);r||e.error(`Invalid assignment: ${n}`);let s=r[0],i,o=s.length;if(n[o]==="["){let f=0,d=o+1;for(;o<n.length;o++)if(n[o]==="[")f++;else if(n[o]==="]"&&(f--,f===0))break;f!==0&&e.error(`Invalid assignment: ${n}`),i=fs(n.slice(d,o)),o++}let a=n[o]==="+";a&&o++,n[o]!=="="&&e.error(`Invalid assignment: ${n}`),o++;let l=n.slice(o);if(l==="("){let f=Wi(e);e.expect(w.RPAREN);let d=i!==void 0?`${s}[${i}]`:s;return F.assignment(d,null,a,f)}if(l===""&&e.check(w.LPAREN)){let f=e.current();if(t.end===f.start){e.advance();let d=Wi(e);e.expect(w.RPAREN);let h=i!==void 0?`${s}[${i}]`:s;return F.assignment(h,null,a,d)}}let c=l?e.parseWordFromString(l,t.quoted,t.singleQuoted,!0):null;t.end===e.current().start&&e.isProcessSubstitutionStart()&&(c=e.parseAdjacentWordParts(c?.parts??[],t.end,Oe.Assignment));let u=i!==void 0?`${s}[${i}]`:s;return F.assignment(u,c,a,null)}var rh=new Set([w.AMP,w.PIPE,w.PIPE_AMP,w.SEMICOLON,w.AND_AND,w.OR_OR,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND]);function Wi(e){let t=[];for(e.skipNewlines();!e.check(w.RPAREN,w.EOF);)e.checkIterationLimit(),e.isWord()?t.push(e.parseWord()):rh.has(e.current().type)?e.error(`syntax error near unexpected token \`${e.current().value}'`):e.advance(),e.skipNewlines();return t}function zi(e,t){e.expect(w.IF);let n=[],r=e.parseCompoundList();e.expect(w.THEN);let s=e.parseCompoundList();if(s.length===0){let a=e.check(w.FI)?"fi":e.check(w.ELSE)?"else":e.check(w.ELIF)?"elif":"fi";e.error(`syntax error near unexpected token \`${a}'`)}for(n.push({condition:r,body:s});e.check(w.ELIF);){e.advance();let a=e.parseCompoundList();e.expect(w.THEN);let l=e.parseCompoundList();if(l.length===0){let c=e.check(w.FI)?"fi":e.check(w.ELSE)?"else":e.check(w.ELIF)?"elif":"fi";e.error(`syntax error near unexpected token \`${c}'`)}n.push({condition:a,body:l})}let i=null;e.check(w.ELSE)&&(e.advance(),i=e.parseCompoundList(),i.length===0&&e.error("syntax error near unexpected token `fi'")),e.expect(w.FI);let o=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.ifNode(n,i,o)}function Ui(e,t){let n=e.expect(w.FOR);if(e.check(w.DPAREN_START))return ih(e,t,e.getSourceLine(n));e.isWord()||e.error("Expected variable name in for loop");let s=e.advance().value,i=null;if(e.skipNewlines(),e.check(w.IN))for(e.advance(),i=[];!e.check(w.SEMICOLON,w.NEWLINE,w.DO,w.EOF)&&e.isWord();)i.push(e.parseWord());e.check(w.SEMICOLON)&&e.advance(),e.skipNewlines(),e.expect(w.DO);let o=e.parseCompoundList();e.expect(w.DONE);let a=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.forNode(s,i,o,a)}function ih(e,t,n){e.expect(w.DPAREN_START);let r=null,s=null,i=null,o=["","",""],a=0,l=0;for(;!e.check(w.DPAREN_END,w.EOF);){let f=e.advance();if(f.type===w.SEMICOLON&&l===0){if(a++,a>2)break}else f.value==="("&&l++,f.value===")"&&l--,o[a]+=f.value}e.expect(w.DPAREN_END),o[0].trim()&&(r=ie(e,o[0].trim())),o[1].trim()&&(s=ie(e,o[1].trim())),o[2].trim()&&(i=ie(e,o[2].trim())),e.skipNewlines(),e.check(w.SEMICOLON)&&e.advance(),e.skipNewlines();let c;e.check(w.LBRACE)?(e.advance(),c=e.parseCompoundList(),e.expect(w.RBRACE)):(e.expect(w.DO),c=e.parseCompoundList(),e.expect(w.DONE));let u=t?.skipRedirections?[]:e.parseOptionalRedirections();return{type:"CStyleFor",init:r,condition:s,update:i,body:c,redirections:u,line:n}}function ji(e,t){e.expect(w.WHILE);let n=e.parseCompoundList();e.expect(w.DO);let r=e.parseCompoundList();r.length===0&&e.error("syntax error near unexpected token `done'"),e.expect(w.DONE);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.whileNode(n,r,s)}function qi(e,t){e.expect(w.UNTIL);let n=e.parseCompoundList();e.expect(w.DO);let r=e.parseCompoundList();r.length===0&&e.error("syntax error near unexpected token `done'"),e.expect(w.DONE);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.untilNode(n,r,s)}function Gi(e,t){e.expect(w.CASE),e.isWord()||e.error("Expected word after 'case'");let n=e.parseWord();e.skipNewlines(),e.expect(w.IN),e.skipNewlines();let r=[];for(;!e.check(w.ESAC,w.EOF);){e.checkIterationLimit();let i=e.getPos(),o=oh(e);if(o&&r.push(o),e.skipNewlines(),e.getPos()===i&&!o)break}e.expect(w.ESAC);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.caseNode(n,r,s)}function oh(e){e.check(w.LPAREN)&&e.advance();let t=[];for(;e.isWord()&&(t.push(e.parseWord()),e.check(w.PIPE));)e.advance();if(t.length===0)return null;e.expect(w.RPAREN),e.skipNewlines();let n=[];for(;!e.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND,w.ESAC,w.EOF);){e.checkIterationLimit(),e.isWord()&&e.peek(1).type===w.RPAREN&&e.error("syntax error near unexpected token `)'"),e.check(w.LPAREN)&&e.peek(1).type===w.WORD&&e.error(`syntax error near unexpected token \`${e.peek(1).value}'`);let s=e.getPos(),i=e.parseStatement();if(i&&n.push(i),e.skipSeparators(!1),e.getPos()===s&&!i)break}let r=";;";return e.check(w.DSEMI)?(e.advance(),r=";;"):e.check(w.SEMI_AND)?(e.advance(),r=";&"):e.check(w.SEMI_SEMI_AND)&&(e.advance(),r=";;&"),F.caseItem(t,n,r)}function Hi(e,t){e.expect(w.LPAREN);let n=e.parseCompoundList();e.expect(w.RPAREN);let r=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.subshell(n,r)}function Zi(e,t){e.expect(w.LBRACE);let n=e.parseCompoundList();e.expect(w.RBRACE);let r=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.group(n,r)}var lh=["-a","-b","-c","-d","-e","-f","-g","-h","-k","-p","-r","-s","-t","-u","-w","-x","-G","-L","-N","-O","-S","-z","-n","-o","-v","-R"],ch=["==","!=","=~","<",">","-eq","-ne","-lt","-le","-gt","-ge","-nt","-ot","-ef"];function Gl(e){return e.isWord()||e.check(w.LBRACE)||e.check(w.RBRACE)||e.check(w.ASSIGNMENT_WORD)}function Hl(e){if(e.check(w.BANG)&&e.peek(1).type===w.LPAREN){e.advance(),e.advance();let t=1,n="!(";for(;t>0&&!e.check(w.EOF);)if(e.check(w.LPAREN))t++,n+="(",e.advance();else if(e.check(w.RPAREN))t--,t>0&&(n+=")"),e.advance();else if(e.isWord())n+=e.advance().value;else if(e.check(w.PIPE))n+="|",e.advance();else break;return n+=")",e.parseWordFromString(n,!1,!1,!1,!1,!0)}return e.parseWordNoBraceExpansion()}function Ki(e){return e.skipNewlines(),uh(e)}function uh(e){let t=Zl(e);for(e.skipNewlines();e.check(w.OR_OR);){e.advance(),e.skipNewlines();let n=Zl(e);t={type:"CondOr",left:t,right:n},e.skipNewlines()}return t}function Zl(e){let t=Qi(e);for(e.skipNewlines();e.check(w.AND_AND);){e.advance(),e.skipNewlines();let n=Qi(e);t={type:"CondAnd",left:t,right:n},e.skipNewlines()}return t}function Qi(e){return e.skipNewlines(),e.check(w.BANG)?(e.advance(),e.skipNewlines(),{type:"CondNot",operand:e.withDepth(()=>Qi(e))}):fh(e)}function fh(e){if(e.check(w.LPAREN)){e.advance();let t=e.withDepth(()=>Ki(e));return e.expect(w.RPAREN),{type:"CondGroup",expression:t}}if(Gl(e)){let t=e.current(),n=t.value;if(lh.includes(n)&&!t.quoted){if(e.advance(),e.check(w.DBRACK_END)&&e.error(`Expected operand after ${n}`),Gl(e)){let i=e.parseWordNoBraceExpansion();return{type:"CondUnary",operator:n,operand:i}}let s=e.current();e.error(`unexpected argument \`${s.value}' to conditional unary operator`)}let r=e.parseWordNoBraceExpansion();if(e.isWord()&&ch.includes(e.current().value)){let s=e.advance().value,i;return s==="=~"?i=dh(e):s==="=="||s==="!="?i=Hl(e):i=e.parseWordNoBraceExpansion(),{type:"CondBinary",operator:s,left:r,right:i}}if(e.check(w.LESS)){e.advance();let s=e.parseWordNoBraceExpansion();return{type:"CondBinary",operator:"<",left:r,right:s}}if(e.check(w.GREAT)){e.advance();let s=e.parseWordNoBraceExpansion();return{type:"CondBinary",operator:">",left:r,right:s}}if(e.isWord()&&e.current().value==="="){e.advance();let s=Hl(e);return{type:"CondBinary",operator:"==",left:r,right:s}}return{type:"CondWord",word:r}}e.error("Expected conditional expression")}function dh(e){let t=[],n=0,r=-1,s=e.getInput(),i=()=>e.check(w.DBRACK_END)||e.check(w.AND_AND)||e.check(w.OR_OR)||e.check(w.NEWLINE)||e.check(w.EOF);for(;!i();){let o=e.current(),a=r>=0&&o.start>r;if(n===0&&a)break;if(n>0&&a){let l=s.slice(r,o.start);t.push({type:"Literal",value:l})}if(e.isWord()||e.check(w.ASSIGNMENT_WORD)){let l=e.parseWordForRegex();t.push(...l.parts),r=e.peek(-1).end}else if(e.check(w.LPAREN)){let l=e.advance();t.push({type:"Literal",value:"("}),n++,r=l.end}else if(e.check(w.DPAREN_START)){let l=e.advance();t.push({type:"Literal",value:"(("}),n+=2,r=l.end}else if(e.check(w.DPAREN_END))if(n>=2){let l=e.advance();t.push({type:"Literal",value:"))"}),n-=2,r=l.end}else{if(n===1)break;break}else if(e.check(w.RPAREN))if(n>0){let l=e.advance();t.push({type:"Literal",value:")"}),n--,r=l.end}else break;else if(e.check(w.PIPE)){let l=e.advance();t.push({type:"Literal",value:"|"}),r=l.end}else if(e.check(w.SEMICOLON))if(n>0){let l=e.advance();t.push({type:"Literal",value:";"}),r=l.end}else break;else if(n>0&&e.check(w.LESS)){let l=e.advance();t.push({type:"Literal",value:"<"}),r=l.end}else if(n>0&&e.check(w.GREAT)){let l=e.advance();t.push({type:"Literal",value:">"}),r=l.end}else if(n>0&&e.check(w.DGREAT)){let l=e.advance();t.push({type:"Literal",value:">>"}),r=l.end}else if(n>0&&e.check(w.DLESS)){let l=e.advance();t.push({type:"Literal",value:"<<"}),r=l.end}else if(n>0&&e.check(w.LESSAND)){let l=e.advance();t.push({type:"Literal",value:"<&"}),r=l.end}else if(n>0&&e.check(w.GREATAND)){let l=e.advance();t.push({type:"Literal",value:">&"}),r=l.end}else if(n>0&&e.check(w.LESSGREAT)){let l=e.advance();t.push({type:"Literal",value:"<>"}),r=l.end}else if(n>0&&e.check(w.CLOBBER)){let l=e.advance();t.push({type:"Literal",value:">|"}),r=l.end}else if(n>0&&e.check(w.TLESS)){let l=e.advance();t.push({type:"Literal",value:"<<<"}),r=l.end}else if(n>0&&e.check(w.AMP)){let l=e.advance();t.push({type:"Literal",value:"&"}),r=l.end}else if(n>0&&e.check(w.LBRACE)){let l=e.advance();t.push({type:"Literal",value:"{"}),r=l.end}else if(n>0&&e.check(w.RBRACE)){let l=e.advance();t.push({type:"Literal",value:"}"}),r=l.end}else break}return t.length===0&&e.error("Expected regex pattern after =~"),{type:"Word",parts:t}}function ph(e){let t="";for(let n=0;n<e.length;n++){let r=e[n],s=e[n+1];if(r!=="\\"||s===void 0){t+=r;continue}"\\[]^-".includes(s)&&(t+="\\"),t+=s,n++}return t}function Sr(e){return e.length>0?e:[F.literal("")]}function mh(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if("@*+?!".includes(s)&&r+1<e.length&&e[r+1]==="("){r++,n++,r++;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function yh(e,t,n){let r=n+1,s=t[r];if("@*#?$!-0123456789".includes(s))return{part:F.parameterExpansion(s),endIndex:r+1};let i="";for(;r<t.length&&/[a-zA-Z0-9_]/.test(t[r]);)i+=t[r],r++;return{part:F.parameterExpansion(i),endIndex:r}}function gh(e,t,n,r=!1){let s=n+2,i=!1;t[s]==="!"&&(i=!0,s++);let o=!1;t[s]==="#"&&!/[}:#%/^,]/.test(t[s+1]||"}")&&(o=!0,s++);let a="",l=t[s];if(/[@*#?$!-]/.test(l)&&!/[a-zA-Z0-9_]/.test(t[s+1]||""))a=l,s++;else for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)a+=t[s],s++;if(t[s]==="["){let u=Fi(e,t,s,"[","]");if(a+=`[${fs(t.slice(s+1,u))}]`,s=u+1,t[s]==="["){let f=1,d=s;for(;d<t.length&&f>0;)t[d]==="{"?f++:t[d]==="}"&&f--,f>0&&d++;let h=t.slice(n+2,d);return{part:F.parameterExpansion("",{type:"BadSubstitution",text:h}),endIndex:d+1}}}if(a===""&&!i&&!o&&t[s]!=="}"){let u=1,f=s;for(;f<t.length&&u>0;)t[f]==="{"?u++:t[f]==="}"&&u--,u>0&&f++;if(u>0)throw new xe("unexpected EOF while looking for matching '}'",0,0);let d=t.slice(n+2,f);return{part:F.parameterExpansion("",{type:"BadSubstitution",text:d}),endIndex:f+1}}let c=null;if(i){let u=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(u)if(s<t.length&&t[s]!=="}"&&/[:=\-+?#%/^,@]/.test(t[s])){let f=Xi(e,t,s,a,r);f.operation?(c={type:"Indirection",innerOp:f.operation},s=f.endIndex):(c={type:"ArrayKeys",array:u[1],star:u[2]==="*"},a="")}else c={type:"ArrayKeys",array:u[1],star:u[2]==="*"},a="";else if(t[s]==="*"||t[s]==="@"&&!/[QPaAEKkuUL]/.test(t[s+1]||"")){let f=t[s];s++,c={type:"VarNamePrefix",prefix:a,star:f==="*"},a=""}else if(s<t.length&&t[s]!=="}"&&/[:=\-+?#%/^,@]/.test(t[s])){let f=Xi(e,t,s,a,r);f.operation?(c={type:"Indirection",innerOp:f.operation},s=f.endIndex):c={type:"Indirection"}}else c={type:"Indirection"}}else if(o)if(t[s]===":")for(c={type:"LengthSliceError"};s<t.length&&t[s]!=="}";)s++;else t[s]!=="}"&&/[-+=?]/.test(t[s])?e.error(`\${#${a}${t.slice(s,t.indexOf("}",s))}}: bad substitution`):t[s]==="/"?e.error(`\${#${a}${t.slice(s,t.indexOf("}",s))}}: bad substitution`):c={type:"Length"};if(!c&&s<t.length&&t[s]!=="}"){let u=Xi(e,t,s,a,r);c=u.operation,s=u.endIndex}if(s<t.length&&t[s]!=="}"){let u=t[s];if(!/[:\-+=?#%/^,@[]/.test(u)){let f=s;for(;f<t.length&&t[f]!=="}";)f++;let d=t.slice(n,f+1);e.error(`\${${d.slice(2,-1)}}: bad substitution`)}}for(;s<t.length&&t[s]!=="}";)s++;if(s>=t.length)throw new xe("unexpected EOF while looking for matching '}'",0,0);return{part:F.parameterExpansion(a,c),endIndex:s+1}}function Xi(e,t,n,r,s=!1){let i=n,o=t[i],a=t[i+1]||"";if(o===":"){let l=a;if("-=?+".includes(l)){i+=2;let b=On(e,t,i),g=t.slice(i,b),y=e.withDepth(()=>ln(e,g,!1,!1,!0,!1,s,!1,!1,!0)),S=F.word(Sr(y));if(l==="-")return{operation:{type:"DefaultValue",word:S,checkEmpty:!0},endIndex:b};if(l==="=")return{operation:{type:"AssignDefault",word:S,checkEmpty:!0},endIndex:b};if(l==="?")return{operation:{type:"ErrorIfUnset",word:S,checkEmpty:!0},endIndex:b};if(l==="+")return{operation:{type:"UseAlternative",word:S,checkEmpty:!0},endIndex:b}}i++;let c=On(e,t,i),u=t.slice(i,c),f=-1,d=0,h=0;for(let E=0;E<u.length;E++){let b=u[E];if(b==="("||b==="[")d++;else if(b===")"||b==="]")d--;else if(b==="?"&&d===0)h++;else if(b===":"&&d===0)if(h>0)h--;else{f=E;break}}let p=f>=0?u.slice(0,f):u,m=f>=0?u.slice(f+1):null;return{operation:{type:"Substring",offset:Mi(e,p),length:m!==null?Mi(e,m):null},endIndex:c}}if("-=?+".includes(o)){i++;let l=On(e,t,i),c=t.slice(i,l),u=e.withDepth(()=>ln(e,c,!1,!1,!0,!1,s,!1,!1,!0)),f=F.word(Sr(u));if(o==="-")return{operation:{type:"DefaultValue",word:f,checkEmpty:!1},endIndex:l};if(o==="=")return{operation:{type:"AssignDefault",word:f,checkEmpty:!1},endIndex:l};if(o==="?")return{operation:{type:"ErrorIfUnset",word:c?f:null,checkEmpty:!1},endIndex:l};if(o==="+")return{operation:{type:"UseAlternative",word:f,checkEmpty:!1},endIndex:l}}if(o==="#"||o==="%"){let l=a===o,c=o==="#"?"prefix":"suffix";i+=l?2:1;let u=On(e,t,i),f=t.slice(i,u),d=e.withDepth(()=>ln(e,f,!1,!1,!1));return{operation:{type:"PatternRemoval",pattern:F.word(Sr(d)),side:c,greedy:l},endIndex:u}}if(o==="/"){let l=a==="/";i+=l?2:1;let c=null;t[i]==="#"?(c="start",i++):t[i]==="%"&&(c="end",i++);let u;c!==null&&(t[i]==="/"||t[i]==="}")?u=i:u=Wl(e,t,i);let f=t.slice(i,u),d=e.withDepth(()=>ln(e,f,!1,!1,!1)),h=F.word(Sr(d)),p=null,m=u;if(t[u]==="/"){let E=u+1,b=On(e,t,E),g=t.slice(E,b),y=e.withDepth(()=>ln(e,g,!1,!1,!1));p=F.word(Sr(y)),m=b}return{operation:{type:"PatternReplacement",pattern:h,replacement:p,all:l,anchor:c},endIndex:m}}if(o==="^"||o===","){let l=a===o,c=o==="^"?"upper":"lower";i+=l?2:1;let u=On(e,t,i),f=t.slice(i,u),d=f?F.word([F.literal(f)]):null;return{operation:{type:"CaseModification",direction:c,all:l,pattern:d},endIndex:u}}return o==="@"&&/[QPaAEKkuUL]/.test(a)?{operation:{type:"Transform",operator:a},endIndex:i+2}:{operation:null,endIndex:i}}function Yi(e,t,n,r=!1){let s=n+1;if(s>=t.length)return{part:F.literal("$"),endIndex:s};let i=t[s];if(i==="("&&t[s+1]==="(")return e.isDollarDparenSubshell(t,n)?e.parseCommandSubstitution(t,n):e.parseArithmeticExpansion(t,n);if(i==="["){let o=1,a=s+1;for(;a<t.length&&o>0;)t[a]==="["?o++:t[a]==="]"&&o--,o>0&&a++;if(o===0){let l=t.slice(s+1,a),c=ie(e,l);return{part:F.arithmeticExpansion(c),endIndex:a+1}}}return i==="("?e.parseCommandSubstitution(t,n):i==="{"?gh(e,t,n,r):/[a-zA-Z_0-9@*#?$!-]/.test(i)?yh(e,t,n):{part:F.literal("$"),endIndex:s}}function Ql(e,t){let n=[],r=0,s="",i=()=>{s&&(n.push(F.literal(s)),s="")};for(;r<t.length;){let o=t[r];if(o==="\\"&&r+1<t.length){let a=t[r+1];if(a==="$"||a==="`"||a==='"'||a==="\\"){s+=a,r+=2;continue}s+=o,r++;continue}if(o==="$"){i();let{part:a,endIndex:l}=Yi(e,t,r,!0);a&&n.push(a),r=l;continue}if(o==="`"){i();let{part:a,endIndex:l}=e.parseBacktickSubstitution(t,r,!0);n.push(a),r=l;continue}s+=o,r++}return i(),n}function wh(e,t,n){let r=[],s=n,i="",o=()=>{i&&(r.push(F.literal(i)),i="")};for(;s<t.length&&t[s]!=='"';){let a=t[s];if(a==="\\"&&s+1<t.length){let l=t[s+1];if('"\\$`\n'.includes(l)){i+=l,s+=2;continue}i+=a,s++;continue}if(a==="$"){o();let{part:l,endIndex:c}=Yi(e,t,s,!0);l&&r.push(l),s=c;continue}if(a==="`"){o();let{part:l,endIndex:c}=e.parseBacktickSubstitution(t,s,!0);r.push(l),s=c;continue}i+=a,s++}return o(),{part:F.doubleQuoted(r),endIndex:s}}function ln(e,t,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!0){if(r)return[F.singleQuoted(t)];if(n){let m=Ql(e,t);return[F.doubleQuoted(m)]}if(t.length>=2&&t[0]==='"'&&t[t.length-1]==='"'){let m=t.slice(1,-1),E=!1;for(let b=0;b<m.length;b++){if(m[b]==='"'){E=!0;break}m[b]==="\\"&&b+1<m.length&&b++}if(!E){let b=Ql(e,m);return[F.doubleQuoted(b)]}}let f=[],d=0,h="",p=()=>{h&&(f.push(F.literal(h)),h="")};for(;d<t.length;){let m=t[d];if(m==="\\"&&d+1<t.length){let E=t[d+1];if(l){p(),f.push(F.escaped(E)),d+=2;continue}if(!i&&!o){E!==`
69
- `&&(p(),f.push(F.escaped(E))),d+=2;continue}let b=i?E==="$"||E==="`"||E===`
64
+ `);)f=!0,u++;if(f&&u<r&&n[u]===")")return!0}if(i===0)return!1;s++;continue}if(i===1&&(l==="|"&&s+1<r&&n[s+1]==="|"||l==="&"&&s+1<r&&n[s+1]==="&"||l==="|"&&s+1<r&&n[s+1]!=="|"))return!0;s++}return!1}};var zi=1e6,vr=1e5,ah=1e6,Cl=200,De;(function(e){e[e.Default=0]="Default",e[e.Assignment=1]="Assignment",e[e.NoBraceExpansion=2]="NoBraceExpansion",e[e.Regex=4]="Regex"})(De||(De={}));var Nl=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS,w.AND_GREAT,w.AND_DGREAT]),Rl=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS]),Ol=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS,w.AND_GREAT,w.AND_DGREAT]),Ce=class extends Error{line;column;token;constructor(t,n,r,s=void 0){super(`Parse error at ${n}:${r}: ${t}`),this.line=n,this.column=r,this.token=s,this.name="ParseException"}},ps=class{iterations=0;tokens=0;depth=0;reset(){this.iterations=0,this.tokens=0,this.depth=0}chargeIteration(t,n){if(this.iterations++,this.iterations>ah)throw new Ce("Maximum parse iterations exceeded (possible infinite loop)",t,n)}chargeTokens(t,n=1,r=1){if(this.tokens+=t,this.tokens>vr)throw new Ce(`Too many tokens: cumulative count exceeds limit of ${vr}`,n,r)}enter(t,n){if(this.depth++,this.depth>Cl)throw this.depth--,new Ce(`Maximum parser nesting depth exceeded (${Cl})`,t,n);let r=!0;return()=>{r&&(r=!1,this.depth--)}}};function ye(e,t){for(;t<e.length;){if(e[t]==="\\"&&e[t+1]===`
65
+ `){t+=2;continue}if(/\s/.test(e[t])){t++;continue}break}return t}var ms=["=","+=","-=","*=","/=","%=","<<=",">>=","&=","|=","^="];function kr(e){if(e.includes("#")){let n=e.split("#");if(n.length!==2)return Number.NaN;let[r,s]=n;if(!/^\d+$/.test(r)||s.length===0)return Number.NaN;let i=Number.parseInt(r,10);if(i<2||i>64)return Number.NaN;let o=0;for(let a of s){let l;if(/[0-9]/.test(a))l=a.charCodeAt(0)-48;else if(/[a-z]/.test(a))l=a.charCodeAt(0)-97+10;else if(/[A-Z]/.test(a))l=a.charCodeAt(0)-65+(i<=36?10:36);else if(a==="@")l=62;else if(a==="_")l=63;else return Number.NaN;if(l>=i)return Number.NaN;if(o=o*i+l,o>Number.MAX_SAFE_INTEGER)return Number.MAX_SAFE_INTEGER}return o}if(e.startsWith("0x")||e.startsWith("0X")){let n=Number.parseInt(e.slice(2),16);return n>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:n}if(e.startsWith("0")&&e.length>1&&/^[0-9]+$/.test(e)){if(/[89]/.test(e))return Number.NaN;let n=Number.parseInt(e,8);return n>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:n}let t=Number.parseInt(e,10);return t>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:t}function Dl(e,t,n,r){if(n.slice(r,r+3)!=="$((")return null;let s=r+3,i=1,o=s;for(;s<n.length-1&&i>0;)n[s]==="("&&n[s+1]==="("?(i++,s+=2):n[s]===")"&&n[s+1]===")"?(i--,i>0&&(s+=2)):s++;let a=n.slice(o,s),{expr:l}=e(t,a,0);return s+=2,{expr:{type:"ArithNested",expression:l},pos:s}}function Il(e,t){if(e.slice(t,t+2)!=="$'")return null;let n=t+2,r="";for(;n<e.length&&e[n]!=="'";)if(e[n]==="\\"&&n+1<e.length){let i=e[n+1];switch(i){case"n":r+=`
66
+ `;break;case"t":r+=" ";break;case"r":r+="\r";break;case"\\":r+="\\";break;case"'":r+="'";break;default:r+=i}n+=2}else r+=e[n],n++;e[n]==="'"&&n++;let s=Number.parseInt(r,10);return{expr:{type:"ArithNumber",value:Number.isNaN(s)?0:s},pos:n}}function Tl(e,t){if(e.slice(t,t+2)!=='$"')return null;let n=t+2,r="";for(;n<e.length&&e[n]!=='"';)e[n]==="\\"&&n+1<e.length?(r+=e[n+1],n+=2):(r+=e[n],n++);e[n]==='"'&&n++;let s=Number.parseInt(r,10);return{expr:{type:"ArithNumber",value:Number.isNaN(s)?0:s},pos:n}}function lh(e){let t="",n=0;for(;n<e.length;)if(e[n]==='"'){for(n++;n<e.length&&e[n]!=='"';)e[n]==="\\"&&n+1<e.length?(t+=e[n+1],n+=2):(t+=e[n],n++);n<e.length&&n++}else t+=e[n],n++;return t}function oe(e,t){let n=lh(t),{expr:r,pos:s}=Xn(e,n,0),i=ye(n,s);if(i<n.length){let o=t.slice(i).trim();if(o)return{type:"ArithmeticExpression",originalText:t,expression:{type:"ArithSyntaxError",errorToken:o,message:`${o}: syntax error: invalid arithmetic operator (error token is "${o}")`}}}return{type:"ArithmeticExpression",expression:r,originalText:t}}function Ye(e,t){return{expr:{type:"ArithSyntaxError",errorToken:e,message:`syntax error: operand expected (error token is "${e}")`},pos:t}}function Je(e,t){return ye(e,t)>=e.length}function Xn(e,t,n){return ch(e,t,n)}function In(e,t,n){return e.withDepth(()=>Xn(e,t,n))}function ch(e,t,n){let{expr:r,pos:s}=xr(e,t,n);for(s=ye(t,s);t[s]===",";){if(s++,Je(t,s))return Ye(",",s);let{expr:o,pos:a}=xr(e,t,s);r={type:"ArithBinary",operator:",",left:r,right:o},s=ye(t,a)}return{expr:r,pos:s}}function xr(e,t,n){let{expr:r,pos:s}=uh(e,t,n);if(s=ye(t,s),t[s]==="?"){s++;let{expr:i,pos:o}=In(e,t,s);if(s=ye(t,o),t[s]===":"){s++;let{expr:a,pos:l}=In(e,t,s);return{expr:{type:"ArithTernary",condition:r,consequent:i,alternate:a},pos:l}}}return{expr:r,pos:s}}function uh(e,t,n){let{expr:r,pos:s}=_l(e,t,n);for(;s=ye(t,s),t.slice(s,s+2)==="||";){if(s+=2,Je(t,s))return Ye("||",s);let{expr:o,pos:a}=_l(e,t,s);r={type:"ArithBinary",operator:"||",left:r,right:o},s=a}return{expr:r,pos:s}}function _l(e,t,n){let{expr:r,pos:s}=Ll(e,t,n);for(;s=ye(t,s),t.slice(s,s+2)==="&&";){if(s+=2,Je(t,s))return Ye("&&",s);let{expr:o,pos:a}=Ll(e,t,s);r={type:"ArithBinary",operator:"&&",left:r,right:o},s=a}return{expr:r,pos:s}}function Ll(e,t,n){let{expr:r,pos:s}=Fl(e,t,n);for(;s=ye(t,s),t[s]==="|"&&t[s+1]!=="|";){if(s++,Je(t,s))return Ye("|",s);let{expr:o,pos:a}=Fl(e,t,s);r={type:"ArithBinary",operator:"|",left:r,right:o},s=a}return{expr:r,pos:s}}function Fl(e,t,n){let{expr:r,pos:s}=Ml(e,t,n);for(;s=ye(t,s),t[s]==="^";){if(s++,Je(t,s))return Ye("^",s);let{expr:o,pos:a}=Ml(e,t,s);r={type:"ArithBinary",operator:"^",left:r,right:o},s=a}return{expr:r,pos:s}}function Ml(e,t,n){let{expr:r,pos:s}=Bl(e,t,n);for(;s=ye(t,s),t[s]==="&"&&t[s+1]!=="&";){if(s++,Je(t,s))return Ye("&",s);let{expr:o,pos:a}=Bl(e,t,s);r={type:"ArithBinary",operator:"&",left:r,right:o},s=a}return{expr:r,pos:s}}function Bl(e,t,n){let{expr:r,pos:s}=Wl(e,t,n);for(;s=ye(t,s),t.slice(s,s+2)==="=="||t.slice(s,s+2)==="!=";){let i=t.slice(s,s+2);if(s+=2,Je(t,s))return Ye(i,s);let{expr:o,pos:a}=Wl(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function Wl(e,t,n){let{expr:r,pos:s}=Ui(e,t,n);for(;;)if(s=ye(t,s),t.slice(s,s+2)==="<="||t.slice(s,s+2)===">="){let i=t.slice(s,s+2);if(s+=2,Je(t,s))return Ye(i,s);let{expr:o,pos:a}=Ui(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else if(t[s]==="<"||t[s]===">"){let i=t[s];if(s++,Je(t,s))return Ye(i,s);let{expr:o,pos:a}=Ui(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else break;return{expr:r,pos:s}}function Ui(e,t,n){let{expr:r,pos:s}=Vl(e,t,n);for(;s=ye(t,s),t.slice(s,s+2)==="<<"||t.slice(s,s+2)===">>";){let i=t.slice(s,s+2);if(s+=2,Je(t,s))return Ye(i,s);let{expr:o,pos:a}=Vl(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function Vl(e,t,n){let{expr:r,pos:s}=zl(e,t,n);for(;s=ye(t,s),(t[s]==="+"||t[s]==="-")&&t[s+1]!==t[s];){let i=t[s];if(s++,Je(t,s))return Ye(i,s);let{expr:o,pos:a}=zl(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function zl(e,t,n){let{expr:r,pos:s}=ys(e,t,n);for(;;)if(s=ye(t,s),t[s]==="*"&&t[s+1]!=="*"){if(s++,Je(t,s))return Ye("*",s);let{expr:o,pos:a}=ys(e,t,s);r={type:"ArithBinary",operator:"*",left:r,right:o},s=a}else if(t[s]==="/"||t[s]==="%"){let i=t[s];if(s++,Je(t,s))return Ye(i,s);let{expr:o,pos:a}=ys(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else break;return{expr:r,pos:s}}function ys(e,t,n){let{expr:r,pos:s}=ji(e,t,n),i=ye(t,s);if(t.slice(i,i+2)==="**"){if(i+=2,Je(t,i))return Ye("**",i);let{expr:a,pos:l}=e.withDepth(()=>ys(e,t,i));return{expr:{type:"ArithBinary",operator:"**",left:r,right:a},pos:l}}return{expr:r,pos:s}}function ji(e,t,n){let r=ye(t,n);if(t.slice(r,r+2)==="++"||t.slice(r,r+2)==="--"){let s=t.slice(r,r+2);r+=2;let{expr:i,pos:o}=e.withDepth(()=>ji(e,t,r));return{expr:{type:"ArithUnary",operator:s,operand:i,prefix:!0},pos:o}}if(t[r]==="+"||t[r]==="-"||t[r]==="!"||t[r]==="~"){let s=t[r];r++;let{expr:i,pos:o}=e.withDepth(()=>ji(e,t,r));return{expr:{type:"ArithUnary",operator:s,operand:i,prefix:!0},pos:o}}return dh(e,t,r)}function fh(e,t){let n=e[t];return n==="$"||n==="`"}function dh(e,t,n){let{expr:r,pos:s}=Ul(e,t,n,!1),i=[r];for(;fh(t,s);){let{expr:a,pos:l}=Ul(e,t,s,!0);i.push(a),s=l}i.length>1&&(r={type:"ArithConcat",parts:i});let o;if(t[s]==="["&&r.type==="ArithConcat"){s++;let{expr:a,pos:l}=In(e,t,s);o=a,s=l,t[s]==="]"&&s++}if(o&&r.type==="ArithConcat"&&(r={type:"ArithDynamicElement",nameExpr:r,subscript:o},o=void 0),s=ye(t,s),r.type==="ArithConcat"||r.type==="ArithVariable"||r.type==="ArithDynamicElement"){for(let a of ms)if(t.slice(s,s+a.length)===a&&t.slice(s,s+a.length+1)!=="=="){s+=a.length;let{expr:l,pos:c}=e.withDepth(()=>xr(e,t,s));return r.type==="ArithDynamicElement"?{expr:{type:"ArithDynamicAssignment",operator:a,target:r.nameExpr,subscript:r.subscript,value:l},pos:c}:r.type==="ArithConcat"?{expr:{type:"ArithDynamicAssignment",operator:a,target:r,value:l},pos:c}:{expr:{type:"ArithAssignment",operator:a,variable:r.name,value:l},pos:c}}}if(t.slice(s,s+2)==="++"||t.slice(s,s+2)==="--"){let a=t.slice(s,s+2);return s+=2,{expr:{type:"ArithUnary",operator:a,operand:r,prefix:!1},pos:s}}return{expr:r,pos:s}}function Ul(e,t,n,r=!1){let s=ye(t,n),i=Dl(In,e,t,s);if(i)return i;let o=Il(t,s);if(o)return o;let a=Tl(t,s);if(a)return a;if(t.slice(s,s+2)==="$("&&t[s+2]!=="("){s+=2;let c=1,u=s;for(;s<t.length&&c>0;)t[s]==="("?c++:t[s]===")"&&c--,c>0&&s++;let f=t.slice(u,s);return s++,{expr:{type:"ArithCommandSubst",command:f},pos:s}}if(t[s]==="`"){s++;let c=s;for(;s<t.length&&t[s]!=="`";)s++;let u=t.slice(c,s);return t[s]==="`"&&s++,{expr:{type:"ArithCommandSubst",command:u},pos:s}}if(t[s]==="("){s++;let{expr:c,pos:u}=In(e,t,s);return s=ye(t,u),t[s]===")"&&s++,{expr:{type:"ArithGroup",expression:c},pos:s}}if(t[s]==="'"){s++;let c="";for(;s<t.length&&t[s]!=="'";)c+=t[s],s++;t[s]==="'"&&s++;let u=Number.parseInt(c,10);return{expr:{type:"ArithSingleQuote",content:c,value:Number.isNaN(u)?0:u},pos:s}}if(t[s]==='"'){s++;let c="";for(;s<t.length&&t[s]!=='"';)t[s]==="\\"&&s+1<t.length?(c+=t[s+1],s+=2):(c+=t[s],s++);t[s]==='"'&&s++;let u=c.trim();if(!u)return{expr:{type:"ArithNumber",value:0},pos:s};let{expr:f}=In(e,u,0);return{expr:f,pos:s}}if(/[0-9]/.test(t[s])){let c="",u=!1,f=!1;for(;s<t.length;){let h=t[s];if(u)if(/[0-9a-zA-Z@_]/.test(h))c+=h,s++;else break;else if(h==="#")u=!0,c+=h,s++;else if(c==="0"&&(h==="x"||h==="X")&&s+1<t.length&&/[0-9a-fA-F]/.test(t[s+1]))f=!0,c+=h,s++;else if(f&&/[0-9a-fA-F]/.test(h))c+=h,s++;else if(!f&&/[0-9]/.test(h))c+=h,s++;else break}if(s<t.length&&/[a-zA-Z_]/.test(t[s])){let h=c;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)h+=t[s],s++;return{expr:{type:"ArithSyntaxError",errorToken:h,message:`${h}: value too great for base (error token is "${h}")`},pos:s}}if(t[s]==="."&&/[0-9]/.test(t[s+1]))throw new ue(`${c}.${t[s+1]}...: syntax error: invalid arithmetic operator`);if(t[s]==="["){let h=t.slice(s).trim();return{expr:{type:"ArithNumberSubscript",number:c,errorToken:h},pos:t.length}}return{expr:{type:"ArithNumber",value:kr(c)},pos:s}}if(t[s]==="$"&&t[s+1]==="{"){let c=s+2,u=1,f=c;for(;f<t.length&&u>0;)t[f]==="{"?u++:t[f]==="}"&&u--,u>0&&f++;let d=t.slice(c,f),h=f+1;if(t[h]==="#"){let p=h+1;for(;p<t.length&&/[0-9a-zA-Z@_]/.test(t[p]);)p++;let m=t.slice(h+1,p);return{expr:{type:"ArithDynamicBase",baseExpr:d,value:m},pos:p}}if(/[0-9]/.test(t[h])||t[h]==="x"||t[h]==="X"){let p=h;if(t[h]==="x"||t[h]==="X")for(p++;p<t.length&&/[0-9a-fA-F]/.test(t[p]);)p++;else for(;p<t.length&&/[0-9]/.test(t[p]);)p++;let m=t.slice(h,p);return{expr:{type:"ArithDynamicNumber",prefix:d,suffix:m},pos:p}}return s=h,{expr:{type:"ArithBracedExpansion",content:d},pos:s}}if(t[s]==="$"&&s+1<t.length&&/[0-9]/.test(t[s+1])){s++;let c="";for(;s<t.length&&/[0-9]/.test(t[s]);)c+=t[s],s++;return{expr:{type:"ArithVariable",name:c,hasDollarPrefix:!0},pos:s}}if(t[s]==="$"&&s+1<t.length&&/[*@#?\-!$]/.test(t[s+1])){let c=t[s+1];return s+=2,{expr:{type:"ArithSpecialVar",name:c},pos:s}}let l=!1;if(t[s]==="$"&&s+1<t.length&&/[a-zA-Z_]/.test(t[s+1])&&(l=!0,s++),s<t.length&&/[a-zA-Z_]/.test(t[s])){let c="";for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)c+=t[s],s++;if(t[s]==="["&&!r){s++;let u;if(t[s]==="'"||t[s]==='"'){let d=t[s];for(s++,u="";s<t.length&&t[s]!==d;)u+=t[s],s++;t[s]===d&&s++,s=ye(t,s),t[s]==="]"&&s++}let f;if(u===void 0){let{expr:d,pos:h}=In(e,t,s);f=d,s=h,t[s]==="]"&&s++}if(s=ye(t,s),t[s]==="["&&f)return{expr:{type:"ArithDoubleSubscript",array:c,index:f},pos:s};if(!r){for(let d of ms)if(t.slice(s,s+d.length)===d&&t.slice(s,s+d.length+1)!=="=="){s+=d.length;let{expr:h,pos:p}=e.withDepth(()=>xr(e,t,s));return{expr:{type:"ArithAssignment",operator:d,variable:c,subscript:f,stringKey:u,value:h},pos:p}}}return{expr:{type:"ArithArrayElement",array:c,index:f,stringKey:u},pos:s}}if(s=ye(t,s),!r){for(let u of ms)if(t.slice(s,s+u.length)===u&&t.slice(s,s+u.length+1)!=="=="){s+=u.length;let{expr:f,pos:d}=e.withDepth(()=>xr(e,t,s));return{expr:{type:"ArithAssignment",operator:u,variable:c,value:f},pos:d}}}return{expr:{type:"ArithVariable",name:c,hasDollarPrefix:l},pos:s}}if(t[s]==="#"){let c=s+1;for(;c<t.length&&t[c]!==`
67
+ `;)c++;let u=t.slice(s,c).trim()||"#";return{expr:{type:"ArithSyntaxError",errorToken:u,message:`${u}: syntax error: invalid arithmetic operator (error token is "${u}")`},pos:t.length}}return{expr:{type:"ArithNumber",value:0},pos:s}}var gs=e=>{let t,n="";for(let r=0;r<e.length;r++){let s=e[r];if(s==="\\"&&t==='"'&&r+1<e.length){n+=s+e[r+1],r+=1;continue}if(s==="'"||s==='"'){t===s?t=void 0:t||(t=s),n+=s;continue}if(s==="\\"&&!t&&r+1<e.length){let i=e[r+1];n+=i==="$"||i==="`"?`\\${i}`:i,r+=1;continue}n+=s}return n};function hh(e){let t="",n=0;for(;n<e.length;){let r=e[n];if(r<128){t+=String.fromCharCode(r),n++;continue}if((r&224)===192){if(n+1<e.length&&(e[n+1]&192)===128&&r>=194){let s=(r&31)<<6|e[n+1]&63;t+=String.fromCharCode(s),n+=2;continue}t+=String.fromCharCode(r),n++;continue}if((r&240)===224){if(n+2<e.length&&(e[n+1]&192)===128&&(e[n+2]&192)===128){if(r===224&&e[n+1]<160){t+=String.fromCharCode(r),n++;continue}let s=(r&15)<<12|(e[n+1]&63)<<6|e[n+2]&63;if(s>=55296&&s<=57343){t+=String.fromCharCode(r),n++;continue}t+=String.fromCharCode(s),n+=3;continue}t+=String.fromCharCode(r),n++;continue}if((r&248)===240&&r<=244){if(n+3<e.length&&(e[n+1]&192)===128&&(e[n+2]&192)===128&&(e[n+3]&192)===128){if(r===240&&e[n+1]<144){t+=String.fromCharCode(r),n++;continue}let s=(r&7)<<18|(e[n+1]&63)<<12|(e[n+2]&63)<<6|e[n+3]&63;if(s>1114111){t+=String.fromCharCode(r),n++;continue}t+=String.fromCodePoint(s),n+=4;continue}t+=String.fromCharCode(r),n++;continue}t+=String.fromCharCode(r),n++}return t}function Gl(e,t,n){let r=n+1;for(;r<t.length&&/[a-zA-Z0-9_-]/.test(t[r]);)r++;return r}function qi(e,t,n,r,s){let i=1,o=n+1;for(;o<t.length&&i>0;)t[o]===r?i++:t[o]===s&&i--,i>0&&o++;return i===0?o:-1}function Tn(e,t,n){let r=n,s=1;for(;r<t.length&&s>0;){let i=t[r];if(i==="\\"&&r+1<t.length){r+=2;continue}if(i==="'"){let o=t.indexOf("'",r+1);if(o!==-1){r=o+1;continue}}if(i==='"'){for(r++;r<t.length&&t[r]!=='"';)t[r]==="\\"&&r+1<t.length?r+=2:r++;r<t.length&&r++;continue}i==="{"?s++:i==="}"&&s--,s>0&&r++}return r}function Hl(e,t,n){let r=n,s=!1;for(;r<t.length;){let i=t[r];if(i==="/"&&s||i==="}")break;if(i==="'"){let o=t.indexOf("'",r+1);if(o!==-1){r=o+1,s=!0;continue}}if(i==='"'){for(r++;r<t.length&&t[r]!=='"';)t[r]==="\\"&&r+1<t.length?r+=2:r++;r<t.length&&r++,s=!0;continue}i==="\\"?(r+=2,s=!0):(r++,s=!0)}return r}function Zl(e,t,n){let r=n,s="";for(;r<t.length;){let i=t[r];if(i==="*"||i==="?")s+=i,r++;else if(i==="["){let o=ph(t,r);o===-1?(s+=i,r++):(s+=t.slice(r,o+1),r=o+1)}else break}return{pattern:s,endIndex:r}}function ph(e,t){let n=t+1;for(n<e.length&&e[n]==="^"&&n++,n<e.length&&e[n]==="]"&&n++;n<e.length;){let r=e[n];if(r==="\\"&&n+1<e.length){let s=e[n+1];if(s==='"'||s==="'")return-1;n+=2;continue}if(r==="]")return n;if(r==='"'||r==="$"||r==="`")return-1;if(r==="'"){let s=e.indexOf("'",n+1);if(s!==-1){n=s+1;continue}}if(r==="["&&n+1<e.length&&e[n+1]===":"){let s=e.indexOf(":]",n+2);if(s!==-1){n=s+2;continue}}if(r==="["&&n+1<e.length&&(e[n+1]==="."||e[n+1]==="=")){let i=`${e[n+1]}]`,o=e.indexOf(i,n+2);if(o!==-1){n=o+2;continue}}n++}return-1}function Ql(e,t,n){let r="",s=n;for(;s<t.length&&t[s]!=="'";){let i=t[s];if(i==="\\"&&s+1<t.length)switch(t[s+1]){case"n":r+=`
68
+ `,s+=2;break;case"t":r+=" ",s+=2;break;case"r":r+="\r",s+=2;break;case"\\":r+="\\",s+=2;break;case"'":r+="'",s+=2;break;case'"':r+='"',s+=2;break;case"a":r+="\x07",s+=2;break;case"b":r+="\b",s+=2;break;case"e":case"E":r+="\x1B",s+=2;break;case"f":r+="\f",s+=2;break;case"v":r+="\v",s+=2;break;case"x":{let a=[],l=s;for(;l+1<t.length&&t[l]==="\\"&&t[l+1]==="x";){let c=t.slice(l+2,l+4),u=parseInt(c,16);if(!Number.isNaN(u)&&c.length>0)a.push(u),l+=2+c.length;else break}a.length>0?(r+=hh(a),s=l):(r+="\\x",s+=2);break}case"u":{let a=t.slice(s+2,s+6),l=parseInt(a,16);Number.isNaN(l)?(r+="\\u",s+=2):(r+=String.fromCharCode(l),s+=6);break}case"c":{if(s+2<t.length){let l=t[s+2].charCodeAt(0)&31;r+=String.fromCharCode(l),s+=3}else r+="\\c",s+=2;break}case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let a="",l=s+1;for(;l<t.length&&l<s+4&&/[0-7]/.test(t[l]);)a+=t[l],l++;let c=parseInt(a,8);r+=String.fromCharCode(c),s=l;break}default:r+=i,s++}else r+=i,s++}return s<t.length&&t[s]==="'"&&s++,{part:M.literal(r),endIndex:s}}function Gi(e,t){let n=t.trim();return n===""?{type:"ArithmeticExpression",expression:{type:"ArithNumber",value:0}}:oe(e,n)}function ql(e){let t=[],n="",r=0;for(let s=0;s<e.length;s++){let i=e[s];i==="{"?(r++,n+=i):i==="}"?(r--,n+=i):i===","&&r===0?(t.push(n),n=""):n+=i}return t.push(n),t}function Kl(e,t,n,r){let s=qi(e,t,n,"{","}");if(s===-1)return null;let i=t.slice(n+1,s),o=i.match(/^(-?\d+)\.\.(-?\d+)(?:\.\.(-?\d+))?$/);if(o)return{part:{type:"BraceExpansion",items:[{type:"Range",start:Number.parseInt(o[1],10),end:Number.parseInt(o[2],10),step:o[3]?Number.parseInt(o[3],10):void 0,startStr:o[1],endStr:o[2]}]},endIndex:s+1};let a=i.match(/^([a-zA-Z])\.\.([a-zA-Z])(?:\.\.(-?\d+))?$/);return a?{part:{type:"BraceExpansion",items:[{type:"Range",start:a[1],end:a[2],step:a[3]?Number.parseInt(a[3],10):void 0}]},endIndex:s+1}:i.includes(",")&&r?{part:{type:"BraceExpansion",items:ql(i).map(u=>e.withDepth(()=>({type:"Word",word:M.word(r(e,u,!1,!1,!1))})))},endIndex:s+1}:i.includes(",")?{part:{type:"BraceExpansion",items:ql(i).map(u=>({type:"Word",word:M.word([M.literal(u)])}))},endIndex:s+1}:null}function Hi(e,t){let n="";for(let r of t.parts)switch(r.type){case"Literal":n+=r.value;break;case"SingleQuoted":n+=`'${r.value}'`;break;case"Escaped":n+=r.value;break;case"DoubleQuoted":n+='"';for(let s of r.parts)s.type==="Literal"||s.type==="Escaped"?n+=s.value:s.type==="ParameterExpansion"&&(n+=`\${${s.parameter}}`);n+='"';break;case"ParameterExpansion":n+=`\${${r.parameter}}`;break;case"Glob":n+=r.pattern;break;case"TildeExpansion":n+="~",r.user&&(n+=r.user);break;case"BraceExpansion":{n+="{";let s=[];for(let i of r.items)if(i.type==="Range"){let o=i.startStr??String(i.start),a=i.endStr??String(i.end);i.step!==void 0?s.push(`${o}..${a}..${i.step}`):s.push(`${o}..${a}`)}else s.push(Hi(e,i.word));s.length===1&&r.items[0].type==="Range"?n+=s[0]:n+=s.join(","),n+="}";break}default:n+=r.type}return n}function Xl(e,t){return{[w.LESS]:"<",[w.GREAT]:">",[w.DGREAT]:">>",[w.LESSAND]:"<&",[w.GREATAND]:">&",[w.LESSGREAT]:"<>",[w.CLOBBER]:">|",[w.TLESS]:"<<<",[w.AND_GREAT]:"&>",[w.AND_DGREAT]:"&>>",[w.DLESS]:"<",[w.DLESSDASH]:"<"}[t]||">"}function Pr(e){let t=e.current(),n=t.type;if(n===w.NUMBER){let r=e.peek(1);return t.end!==r.start||e.isProcessSubstitutionStart(1)?!1:Rl.has(r.type)}if(n===w.FD_VARIABLE){let r=e.peek(1);return t.end!==r.start||e.isProcessSubstitutionStart(1)?!1:Ol.has(r.type)}return!e.isProcessSubstitutionStart()&&Nl.has(n)}function ws(e){let t=null,n;e.check(w.NUMBER)?t=Number.parseInt(e.advance().value,10):e.check(w.FD_VARIABLE)&&(n=e.advance().value);let r=e.advance(),s=Xl(e,r.type);if(r.type===w.DLESS||r.type===w.DLESSDASH)return mh(e,t,n,r.type===w.DLESSDASH);e.isWord()||e.error("Expected redirection target");let i=e.parseWord();return M.redirection(s,i,t,n)}function mh(e,t,n,r){e.isWord()||e.error("Expected here-document delimiter");let s=e.advance(),i=s.heredocDelimiter??s.value,o=s.quoted||!1,a=M.redirection(r?"<<-":"<<",M.hereDoc(i,M.word([]),r,o),t,n);return e.addPendingHeredoc(a,i,r,o),a}function Qi(e){let t=e.getSourceLine(),n=[],r=null,s=[],i=[];for(;e.check(w.ASSIGNMENT_WORD)||Pr(e);)e.checkIterationLimit(),e.check(w.ASSIGNMENT_WORD)?n.push(yh(e)):i.push(ws(e));if(e.isWord())r=e.parseWord();else if(n.length>0&&(e.check(w.DBRACK_START)||e.check(w.DPAREN_START))){let a=e.advance();r=M.word([M.literal(a.value)])}for(;(!e.isStatementEnd()||e.check(w.RBRACE))&&!e.check(w.PIPE,w.PIPE_AMP);)if(e.checkIterationLimit(),Pr(e))i.push(ws(e));else if(e.check(w.ASSIGNMENT_WORD)){let a=e.advance(),l=a.value,c=l.endsWith("="),u=l.endsWith("=(");if((c||u)&&(u||e.check(w.LPAREN))){let f=u?l.slice(0,-2):l.slice(0,-1);u||e.expect(w.LPAREN);let d=Zi(e);e.expect(w.RPAREN);let h=d.map(m=>Hi(e,m)),p=`${f}=(${h.join(" ")})`;s.push(e.parseWordFromString(p,!1,!1,!0))}else{let f=e.parseWordFromString(l,a.quoted,a.singleQuoted,!0);s.push(e.parseAdjacentWordParts(f.parts,a.end,De.Assignment))}}else if(e.isWord())s.push(e.parseWord());else if(e.check(w.RBRACE)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.LBRACE)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.DBRACK_END)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.LPAREN))e.error("syntax error near unexpected token `('");else break;let o=M.simpleCommand(r,s,n,i);return o.line=t,o}function yh(e){let t=e.expect(w.ASSIGNMENT_WORD),n=t.value,r=n.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);r||e.error(`Invalid assignment: ${n}`);let s=r[0],i,o=s.length;if(n[o]==="["){let f=0,d=o+1;for(;o<n.length;o++)if(n[o]==="[")f++;else if(n[o]==="]"&&(f--,f===0))break;f!==0&&e.error(`Invalid assignment: ${n}`),i=gs(n.slice(d,o)),o++}let a=n[o]==="+";a&&o++,n[o]!=="="&&e.error(`Invalid assignment: ${n}`),o++;let l=n.slice(o);if(l==="("){let f=Zi(e);e.expect(w.RPAREN);let d=i!==void 0?`${s}[${i}]`:s;return M.assignment(d,null,a,f)}if(l===""&&e.check(w.LPAREN)){let f=e.current();if(t.end===f.start){e.advance();let d=Zi(e);e.expect(w.RPAREN);let h=i!==void 0?`${s}[${i}]`:s;return M.assignment(h,null,a,d)}}let c=l?e.parseWordFromString(l,t.quoted,t.singleQuoted,!0):null;t.end===e.current().start&&e.isProcessSubstitutionStart()&&(c=e.parseAdjacentWordParts(c?.parts??[],t.end,De.Assignment));let u=i!==void 0?`${s}[${i}]`:s;return M.assignment(u,c,a,null)}var gh=new Set([w.AMP,w.PIPE,w.PIPE_AMP,w.SEMICOLON,w.AND_AND,w.OR_OR,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND]);function Zi(e){let t=[];for(e.skipNewlines();!e.check(w.RPAREN,w.EOF);)e.checkIterationLimit(),e.isWord()?t.push(e.parseWord()):gh.has(e.current().type)?e.error(`syntax error near unexpected token \`${e.current().value}'`):e.advance(),e.skipNewlines();return t}function Ki(e,t){e.expect(w.IF);let n=[],r=e.parseCompoundList();e.expect(w.THEN);let s=e.parseCompoundList();if(s.length===0){let a=e.check(w.FI)?"fi":e.check(w.ELSE)?"else":e.check(w.ELIF)?"elif":"fi";e.error(`syntax error near unexpected token \`${a}'`)}for(n.push({condition:r,body:s});e.check(w.ELIF);){e.advance();let a=e.parseCompoundList();e.expect(w.THEN);let l=e.parseCompoundList();if(l.length===0){let c=e.check(w.FI)?"fi":e.check(w.ELSE)?"else":e.check(w.ELIF)?"elif":"fi";e.error(`syntax error near unexpected token \`${c}'`)}n.push({condition:a,body:l})}let i=null;e.check(w.ELSE)&&(e.advance(),i=e.parseCompoundList(),i.length===0&&e.error("syntax error near unexpected token `fi'")),e.expect(w.FI);let o=t?.skipRedirections?[]:e.parseOptionalRedirections();return M.ifNode(n,i,o)}function Xi(e,t){let n=e.expect(w.FOR);if(e.check(w.DPAREN_START))return Eh(e,t,e.getSourceLine(n));e.isWord()||e.error("Expected variable name in for loop");let s=e.advance().value,i=null;if(e.skipNewlines(),e.check(w.IN))for(e.advance(),i=[];!e.check(w.SEMICOLON,w.NEWLINE,w.DO,w.EOF)&&e.isWord();)i.push(e.parseWord());e.check(w.SEMICOLON)&&e.advance(),e.skipNewlines(),e.expect(w.DO);let o=e.parseCompoundList();e.expect(w.DONE);let a=t?.skipRedirections?[]:e.parseOptionalRedirections();return M.forNode(s,i,o,a)}function Eh(e,t,n){e.expect(w.DPAREN_START);let r=null,s=null,i=null,o=["","",""],a=0,l=0;for(;!e.check(w.DPAREN_END,w.EOF);){let f=e.advance();if(f.type===w.SEMICOLON&&l===0){if(a++,a>2)break}else f.value==="("&&l++,f.value===")"&&l--,o[a]+=f.value}e.expect(w.DPAREN_END),o[0].trim()&&(r=oe(e,o[0].trim())),o[1].trim()&&(s=oe(e,o[1].trim())),o[2].trim()&&(i=oe(e,o[2].trim())),e.skipNewlines(),e.check(w.SEMICOLON)&&e.advance(),e.skipNewlines();let c;e.check(w.LBRACE)?(e.advance(),c=e.parseCompoundList(),e.expect(w.RBRACE)):(e.expect(w.DO),c=e.parseCompoundList(),e.expect(w.DONE));let u=t?.skipRedirections?[]:e.parseOptionalRedirections();return{type:"CStyleFor",init:r,condition:s,update:i,body:c,redirections:u,line:n}}function Yi(e,t){e.expect(w.WHILE);let n=e.parseCompoundList();e.expect(w.DO);let r=e.parseCompoundList();r.length===0&&e.error("syntax error near unexpected token `done'"),e.expect(w.DONE);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return M.whileNode(n,r,s)}function Ji(e,t){e.expect(w.UNTIL);let n=e.parseCompoundList();e.expect(w.DO);let r=e.parseCompoundList();r.length===0&&e.error("syntax error near unexpected token `done'"),e.expect(w.DONE);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return M.untilNode(n,r,s)}function eo(e,t){e.expect(w.CASE),e.isWord()||e.error("Expected word after 'case'");let n=e.parseWord();e.skipNewlines(),e.expect(w.IN),e.skipNewlines();let r=[];for(;!e.check(w.ESAC,w.EOF);){e.checkIterationLimit();let i=e.getPos(),o=bh(e);if(o&&r.push(o),e.skipNewlines(),e.getPos()===i&&!o)break}e.expect(w.ESAC);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return M.caseNode(n,r,s)}function bh(e){e.check(w.LPAREN)&&e.advance();let t=[];for(;e.isWord()&&(t.push(e.parseWord()),e.check(w.PIPE));)e.advance();if(t.length===0)return null;e.expect(w.RPAREN),e.skipNewlines();let n=[];for(;!e.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND,w.ESAC,w.EOF);){e.checkIterationLimit(),e.isWord()&&e.peek(1).type===w.RPAREN&&e.error("syntax error near unexpected token `)'"),e.check(w.LPAREN)&&e.peek(1).type===w.WORD&&e.error(`syntax error near unexpected token \`${e.peek(1).value}'`);let s=e.getPos(),i=e.parseStatement();if(i&&n.push(i),e.skipSeparators(!1),e.getPos()===s&&!i)break}let r=";;";return e.check(w.DSEMI)?(e.advance(),r=";;"):e.check(w.SEMI_AND)?(e.advance(),r=";&"):e.check(w.SEMI_SEMI_AND)&&(e.advance(),r=";;&"),M.caseItem(t,n,r)}function to(e,t){e.expect(w.LPAREN);let n=e.parseCompoundList();e.expect(w.RPAREN);let r=t?.skipRedirections?[]:e.parseOptionalRedirections();return M.subshell(n,r)}function no(e,t){e.expect(w.LBRACE);let n=e.parseCompoundList();e.expect(w.RBRACE);let r=t?.skipRedirections?[]:e.parseOptionalRedirections();return M.group(n,r)}var Ah=["-a","-b","-c","-d","-e","-f","-g","-h","-k","-p","-r","-s","-t","-u","-w","-x","-G","-L","-N","-O","-S","-z","-n","-o","-v","-R"],vh=["==","!=","=~","<",">","-eq","-ne","-lt","-le","-gt","-ge","-nt","-ot","-ef"];function Jl(e){return e.isWord()||e.check(w.LBRACE)||e.check(w.RBRACE)||e.check(w.ASSIGNMENT_WORD)}function ec(e){if(e.check(w.BANG)&&e.peek(1).type===w.LPAREN){e.advance(),e.advance();let t=1,n="!(";for(;t>0&&!e.check(w.EOF);)if(e.check(w.LPAREN))t++,n+="(",e.advance();else if(e.check(w.RPAREN))t--,t>0&&(n+=")"),e.advance();else if(e.isWord())n+=e.advance().value;else if(e.check(w.PIPE))n+="|",e.advance();else break;return n+=")",e.parseWordFromString(n,!1,!1,!1,!1,!0)}return e.parseWordNoBraceExpansion()}function so(e){return e.skipNewlines(),kh(e)}function kh(e){let t=tc(e);for(e.skipNewlines();e.check(w.OR_OR);){e.advance(),e.skipNewlines();let n=tc(e);t={type:"CondOr",left:t,right:n},e.skipNewlines()}return t}function tc(e){let t=ro(e);for(e.skipNewlines();e.check(w.AND_AND);){e.advance(),e.skipNewlines();let n=ro(e);t={type:"CondAnd",left:t,right:n},e.skipNewlines()}return t}function ro(e){return e.skipNewlines(),e.check(w.BANG)?(e.advance(),e.skipNewlines(),{type:"CondNot",operand:e.withDepth(()=>ro(e))}):xh(e)}function xh(e){if(e.check(w.LPAREN)){e.advance();let t=e.withDepth(()=>so(e));return e.expect(w.RPAREN),{type:"CondGroup",expression:t}}if(Jl(e)){let t=e.current(),n=t.value;if(Ah.includes(n)&&!t.quoted){if(e.advance(),e.check(w.DBRACK_END)&&e.error(`Expected operand after ${n}`),Jl(e)){let i=e.parseWordNoBraceExpansion();return{type:"CondUnary",operator:n,operand:i}}let s=e.current();e.error(`unexpected argument \`${s.value}' to conditional unary operator`)}let r=e.parseWordNoBraceExpansion();if(e.isWord()&&vh.includes(e.current().value)){let s=e.advance().value,i;return s==="=~"?i=Ph(e):s==="=="||s==="!="?i=ec(e):i=e.parseWordNoBraceExpansion(),{type:"CondBinary",operator:s,left:r,right:i}}if(e.check(w.LESS)){e.advance();let s=e.parseWordNoBraceExpansion();return{type:"CondBinary",operator:"<",left:r,right:s}}if(e.check(w.GREAT)){e.advance();let s=e.parseWordNoBraceExpansion();return{type:"CondBinary",operator:">",left:r,right:s}}if(e.isWord()&&e.current().value==="="){e.advance();let s=ec(e);return{type:"CondBinary",operator:"==",left:r,right:s}}return{type:"CondWord",word:r}}e.error("Expected conditional expression")}function Ph(e){let t=[],n=0,r=-1,s=e.getInput(),i=()=>e.check(w.DBRACK_END)||e.check(w.AND_AND)||e.check(w.OR_OR)||e.check(w.NEWLINE)||e.check(w.EOF);for(;!i();){let o=e.current(),a=r>=0&&o.start>r;if(n===0&&a)break;if(n>0&&a){let l=s.slice(r,o.start);t.push({type:"Literal",value:l})}if(e.isWord()||e.check(w.ASSIGNMENT_WORD)){let l=e.parseWordForRegex();t.push(...l.parts),r=e.peek(-1).end}else if(e.check(w.LPAREN)){let l=e.advance();t.push({type:"Literal",value:"("}),n++,r=l.end}else if(e.check(w.DPAREN_START)){let l=e.advance();t.push({type:"Literal",value:"(("}),n+=2,r=l.end}else if(e.check(w.DPAREN_END))if(n>=2){let l=e.advance();t.push({type:"Literal",value:"))"}),n-=2,r=l.end}else{if(n===1)break;break}else if(e.check(w.RPAREN))if(n>0){let l=e.advance();t.push({type:"Literal",value:")"}),n--,r=l.end}else break;else if(e.check(w.PIPE)){let l=e.advance();t.push({type:"Literal",value:"|"}),r=l.end}else if(e.check(w.SEMICOLON))if(n>0){let l=e.advance();t.push({type:"Literal",value:";"}),r=l.end}else break;else if(n>0&&e.check(w.LESS)){let l=e.advance();t.push({type:"Literal",value:"<"}),r=l.end}else if(n>0&&e.check(w.GREAT)){let l=e.advance();t.push({type:"Literal",value:">"}),r=l.end}else if(n>0&&e.check(w.DGREAT)){let l=e.advance();t.push({type:"Literal",value:">>"}),r=l.end}else if(n>0&&e.check(w.DLESS)){let l=e.advance();t.push({type:"Literal",value:"<<"}),r=l.end}else if(n>0&&e.check(w.LESSAND)){let l=e.advance();t.push({type:"Literal",value:"<&"}),r=l.end}else if(n>0&&e.check(w.GREATAND)){let l=e.advance();t.push({type:"Literal",value:">&"}),r=l.end}else if(n>0&&e.check(w.LESSGREAT)){let l=e.advance();t.push({type:"Literal",value:"<>"}),r=l.end}else if(n>0&&e.check(w.CLOBBER)){let l=e.advance();t.push({type:"Literal",value:">|"}),r=l.end}else if(n>0&&e.check(w.TLESS)){let l=e.advance();t.push({type:"Literal",value:"<<<"}),r=l.end}else if(n>0&&e.check(w.AMP)){let l=e.advance();t.push({type:"Literal",value:"&"}),r=l.end}else if(n>0&&e.check(w.LBRACE)){let l=e.advance();t.push({type:"Literal",value:"{"}),r=l.end}else if(n>0&&e.check(w.RBRACE)){let l=e.advance();t.push({type:"Literal",value:"}"}),r=l.end}else break}return t.length===0&&e.error("Expected regex pattern after =~"),{type:"Word",parts:t}}function Ch(e){let t="";for(let n=0;n<e.length;n++){let r=e[n],s=e[n+1];if(r!=="\\"||s===void 0){t+=r;continue}"\\[]^-".includes(s)&&(t+="\\"),t+=s,n++}return t}function $r(e){return e.length>0?e:[M.literal("")]}function Nh(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if("@*+?!".includes(s)&&r+1<e.length&&e[r+1]==="("){r++,n++,r++;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function Rh(e,t,n){let r=n+1,s=t[r];if("@*#?$!-0123456789".includes(s))return{part:M.parameterExpansion(s),endIndex:r+1};let i="";for(;r<t.length&&/[a-zA-Z0-9_]/.test(t[r]);)i+=t[r],r++;return{part:M.parameterExpansion(i),endIndex:r}}function Oh(e,t,n,r=!1){let s=n+2,i=!1;t[s]==="!"&&(i=!0,s++);let o=!1;t[s]==="#"&&!/[}:#%/^,]/.test(t[s+1]||"}")&&(o=!0,s++);let a="",l=t[s];if(/[@*#?$!-]/.test(l)&&!/[a-zA-Z0-9_]/.test(t[s+1]||""))a=l,s++;else for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)a+=t[s],s++;if(t[s]==="["){let u=qi(e,t,s,"[","]");if(a+=`[${gs(t.slice(s+1,u))}]`,s=u+1,t[s]==="["){let f=1,d=s;for(;d<t.length&&f>0;)t[d]==="{"?f++:t[d]==="}"&&f--,f>0&&d++;let h=t.slice(n+2,d);return{part:M.parameterExpansion("",{type:"BadSubstitution",text:h}),endIndex:d+1}}}if(a===""&&!i&&!o&&t[s]!=="}"){let u=1,f=s;for(;f<t.length&&u>0;)t[f]==="{"?u++:t[f]==="}"&&u--,u>0&&f++;if(u>0)throw new Ce("unexpected EOF while looking for matching '}'",0,0);let d=t.slice(n+2,f);return{part:M.parameterExpansion("",{type:"BadSubstitution",text:d}),endIndex:f+1}}let c=null;if(i){let u=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(u)if(s<t.length&&t[s]!=="}"&&/[:=\-+?#%/^,@]/.test(t[s])){let f=io(e,t,s,a,r);f.operation?(c={type:"Indirection",innerOp:f.operation},s=f.endIndex):(c={type:"ArrayKeys",array:u[1],star:u[2]==="*"},a="")}else c={type:"ArrayKeys",array:u[1],star:u[2]==="*"},a="";else if(t[s]==="*"||t[s]==="@"&&!/[QPaAEKkuUL]/.test(t[s+1]||"")){let f=t[s];s++,c={type:"VarNamePrefix",prefix:a,star:f==="*"},a=""}else if(s<t.length&&t[s]!=="}"&&/[:=\-+?#%/^,@]/.test(t[s])){let f=io(e,t,s,a,r);f.operation?(c={type:"Indirection",innerOp:f.operation},s=f.endIndex):c={type:"Indirection"}}else c={type:"Indirection"}}else if(o)if(t[s]===":")for(c={type:"LengthSliceError"};s<t.length&&t[s]!=="}";)s++;else t[s]!=="}"&&/[-+=?]/.test(t[s])?e.error(`\${#${a}${t.slice(s,t.indexOf("}",s))}}: bad substitution`):t[s]==="/"?e.error(`\${#${a}${t.slice(s,t.indexOf("}",s))}}: bad substitution`):c={type:"Length"};if(!c&&s<t.length&&t[s]!=="}"){let u=io(e,t,s,a,r);c=u.operation,s=u.endIndex}if(s<t.length&&t[s]!=="}"){let u=t[s];if(!/[:\-+=?#%/^,@[]/.test(u)){let f=s;for(;f<t.length&&t[f]!=="}";)f++;let d=t.slice(n,f+1);e.error(`\${${d.slice(2,-1)}}: bad substitution`)}}for(;s<t.length&&t[s]!=="}";)s++;if(s>=t.length)throw new Ce("unexpected EOF while looking for matching '}'",0,0);return{part:M.parameterExpansion(a,c),endIndex:s+1}}function io(e,t,n,r,s=!1){let i=n,o=t[i],a=t[i+1]||"";if(o===":"){let l=a;if("-=?+".includes(l)){i+=2;let S=Tn(e,t,i),g=t.slice(i,S),y=e.withDepth(()=>un(e,g,!1,!1,!0,!1,s,!1,!1,!0)),b=M.word($r(y));if(l==="-")return{operation:{type:"DefaultValue",word:b,checkEmpty:!0},endIndex:S};if(l==="=")return{operation:{type:"AssignDefault",word:b,checkEmpty:!0},endIndex:S};if(l==="?")return{operation:{type:"ErrorIfUnset",word:b,checkEmpty:!0},endIndex:S};if(l==="+")return{operation:{type:"UseAlternative",word:b,checkEmpty:!0},endIndex:S}}i++;let c=Tn(e,t,i),u=t.slice(i,c),f=-1,d=0,h=0;for(let E=0;E<u.length;E++){let S=u[E];if(S==="("||S==="[")d++;else if(S===")"||S==="]")d--;else if(S==="?"&&d===0)h++;else if(S===":"&&d===0)if(h>0)h--;else{f=E;break}}let p=f>=0?u.slice(0,f):u,m=f>=0?u.slice(f+1):null;return{operation:{type:"Substring",offset:Gi(e,p),length:m!==null?Gi(e,m):null},endIndex:c}}if("-=?+".includes(o)){i++;let l=Tn(e,t,i),c=t.slice(i,l),u=e.withDepth(()=>un(e,c,!1,!1,!0,!1,s,!1,!1,!0)),f=M.word($r(u));if(o==="-")return{operation:{type:"DefaultValue",word:f,checkEmpty:!1},endIndex:l};if(o==="=")return{operation:{type:"AssignDefault",word:f,checkEmpty:!1},endIndex:l};if(o==="?")return{operation:{type:"ErrorIfUnset",word:c?f:null,checkEmpty:!1},endIndex:l};if(o==="+")return{operation:{type:"UseAlternative",word:f,checkEmpty:!1},endIndex:l}}if(o==="#"||o==="%"){let l=a===o,c=o==="#"?"prefix":"suffix";i+=l?2:1;let u=Tn(e,t,i),f=t.slice(i,u),d=e.withDepth(()=>un(e,f,!1,!1,!1));return{operation:{type:"PatternRemoval",pattern:M.word($r(d)),side:c,greedy:l},endIndex:u}}if(o==="/"){let l=a==="/";i+=l?2:1;let c=null;t[i]==="#"?(c="start",i++):t[i]==="%"&&(c="end",i++);let u;c!==null&&(t[i]==="/"||t[i]==="}")?u=i:u=Hl(e,t,i);let f=t.slice(i,u),d=e.withDepth(()=>un(e,f,!1,!1,!1)),h=M.word($r(d)),p=null,m=u;if(t[u]==="/"){let E=u+1,S=Tn(e,t,E),g=t.slice(E,S),y=e.withDepth(()=>un(e,g,!1,!1,!1));p=M.word($r(y)),m=S}return{operation:{type:"PatternReplacement",pattern:h,replacement:p,all:l,anchor:c},endIndex:m}}if(o==="^"||o===","){let l=a===o,c=o==="^"?"upper":"lower";i+=l?2:1;let u=Tn(e,t,i),f=t.slice(i,u),d=f?M.word([M.literal(f)]):null;return{operation:{type:"CaseModification",direction:c,all:l,pattern:d},endIndex:u}}return o==="@"&&/[QPaAEKkuUL]/.test(a)?{operation:{type:"Transform",operator:a},endIndex:i+2}:{operation:null,endIndex:i}}function oo(e,t,n,r=!1){let s=n+1;if(s>=t.length)return{part:M.literal("$"),endIndex:s};let i=t[s];if(i==="("&&t[s+1]==="(")return e.isDollarDparenSubshell(t,n)?e.parseCommandSubstitution(t,n):e.parseArithmeticExpansion(t,n);if(i==="["){let o=1,a=s+1;for(;a<t.length&&o>0;)t[a]==="["?o++:t[a]==="]"&&o--,o>0&&a++;if(o===0){let l=t.slice(s+1,a),c=oe(e,l);return{part:M.arithmeticExpansion(c),endIndex:a+1}}}return i==="("?e.parseCommandSubstitution(t,n):i==="{"?Oh(e,t,n,r):/[a-zA-Z_0-9@*#?$!-]/.test(i)?Rh(e,t,n):{part:M.literal("$"),endIndex:s}}function nc(e,t){let n=[],r=0,s="",i=()=>{s&&(n.push(M.literal(s)),s="")};for(;r<t.length;){let o=t[r];if(o==="\\"&&r+1<t.length){let a=t[r+1];if(a==="$"||a==="`"||a==='"'||a==="\\"){s+=a,r+=2;continue}s+=o,r++;continue}if(o==="$"){i();let{part:a,endIndex:l}=oo(e,t,r,!0);a&&n.push(a),r=l;continue}if(o==="`"){i();let{part:a,endIndex:l}=e.parseBacktickSubstitution(t,r,!0);n.push(a),r=l;continue}s+=o,r++}return i(),n}function Dh(e,t,n){let r=[],s=n,i="",o=()=>{i&&(r.push(M.literal(i)),i="")};for(;s<t.length&&t[s]!=='"';){let a=t[s];if(a==="\\"&&s+1<t.length){let l=t[s+1];if('"\\$`\n'.includes(l)){i+=l,s+=2;continue}i+=a,s++;continue}if(a==="$"){o();let{part:l,endIndex:c}=oo(e,t,s,!0);l&&r.push(l),s=c;continue}if(a==="`"){o();let{part:l,endIndex:c}=e.parseBacktickSubstitution(t,s,!0);r.push(l),s=c;continue}i+=a,s++}return o(),{part:M.doubleQuoted(r),endIndex:s}}function un(e,t,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!0){if(r)return[M.singleQuoted(t)];if(n){let m=nc(e,t);return[M.doubleQuoted(m)]}if(t.length>=2&&t[0]==='"'&&t[t.length-1]==='"'){let m=t.slice(1,-1),E=!1;for(let S=0;S<m.length;S++){if(m[S]==='"'){E=!0;break}m[S]==="\\"&&S+1<m.length&&S++}if(!E){let S=nc(e,m);return[M.doubleQuoted(S)]}}let f=[],d=0,h="",p=()=>{h&&(f.push(M.literal(h)),h="")};for(;d<t.length;){let m=t[d];if(m==="\\"&&d+1<t.length){let E=t[d+1];if(l){p(),f.push(M.escaped(E)),d+=2;continue}if(!i&&!o){E!==`
69
+ `&&(p(),f.push(M.escaped(E))),d+=2;continue}let S=i?E==="$"||E==="`"||E===`
70
70
  `:E==="$"||E==="`"||E==='"'||E==="'"||E===`
71
- `||c&&E==="}",g=o?"*?[]\\".includes(E):"*?[]\\(){}.^+".includes(E);b?E!==`
72
- `&&(h+=E):g?(p(),f.push(F.escaped(E))):h+=`\\${E}`,d+=2;continue}if(m==="'"&&!o&&!i){p();let E=t.indexOf("'",d+1);if(E===-1){h+=t.slice(d);break}f.push(F.singleQuoted(t.slice(d+1,E))),d=E+1;continue}if(m==='"'&&!i){p();let{part:E,endIndex:b}=wh(e,t,d+1);f.push(E),d=b+1;continue}if(m==="$"&&t[d+1]==="'"){p();let{part:E,endIndex:b}=zl(e,t,d+2);f.push(E),d=b;continue}if(m==="$"){p();let{part:E,endIndex:b}=Yi(e,t,d);E&&f.push(E),d=b;continue}if(m==="`"){p();let{part:E,endIndex:b}=e.parseBacktickSubstitution(t,d);f.push(E),d=b;continue}if((m==="<"||m===">")&&t[d+1]==="("&&!i&&!o){p();let{part:E,endIndex:b}=e.parseProcessSubstitutionFromString(t,d);f.push(E),d=b;continue}if(m==="~"){let E=d>0?t[d-1]:"";if(d===0&&u||E==="="||s&&E===":"){let g=Bl(e,t,d),y=t[g];if(y===void 0||y==="/"||y===":"){p();let S=t.slice(d+1,g)||null;f.push({type:"TildeExpansion",user:S}),d=g;continue}}}if("@*+?!".includes(m)&&d+1<t.length&&t[d+1]==="("){let E=mh(t,d+1);if(E!==-1){p();let b=t.slice(d,E+1);f.push({type:"Glob",pattern:b}),d=E+1;continue}}if(m==="*"||m==="?"||m==="["){p();let{pattern:E,endIndex:b}=Vl(e,t,d);f.push({type:"Glob",pattern:l?ph(E):E}),d=b;continue}if(m==="{"&&!s&&!a&&!i){let E=Ul(e,t,d,ln);if(E){p(),f.push(E.part),d=E.endIndex;continue}}h+=m,d++}return p(),f}var Z=class e{tokens=[];pos=0;pendingHeredocs=[];parseBudget;ownsParseBudget;_input="";processLineState;constructor(t){this.parseBudget=t??new ls,this.ownsParseBudget=t===void 0}getInput(){return this._input}checkIterationLimit(){let t=this.current();this.parseBudget.chargeIteration(t?.line??1,t?.column??1)}enterDepth(){let t=this.current();return this.parseBudget.enter(t?.line??1,t?.column??1)}withDepth(t){let n=this.enterDepth();try{return t()}finally{n()}}parse(t,n){this.ownsParseBudget&&this.parseBudget.reset();let r=this.ownsParseBudget?void 0:this.enterDepth();try{if(t.length>Ti)throw new xe(`Input too large: ${t.length} bytes exceeds limit of ${Ti}`,1,1);this._input=t,this.processLineState=void 0;let s=new as(t,n);if(this.tokens=s.tokenize(),this.tokens.length>gr)throw new xe(`Too many tokens: ${this.tokens.length} exceeds limit of ${gr}`,1,1);return this.pos=0,this.pendingHeredocs=[],this.parseBudget.chargeTokens(this.tokens.length),this.parseScript()}finally{r?.()}}parseTokens(t){this.ownsParseBudget&&this.parseBudget.reset();let n=this.ownsParseBudget?void 0:this.enterDepth();try{return this.tokens=t,this.pos=0,this.pendingHeredocs=[],this.processLineState=void 0,this.parseBudget.chargeTokens(t.length),this.parseScript()}finally{n?.()}}current(){return this.tokens[this.pos]||this.tokens[this.tokens.length-1]}peek(t=0){return this.tokens[this.pos+t]||this.tokens[this.tokens.length-1]}advance(){let t=this.current();return this.pos<this.tokens.length-1&&this.pos++,t}getPos(){return this.pos}getSourceLine(t=this.current()){let n=this.processLineState;return n?(n.currentPhysicalLine===void 0?n.currentPhysicalLine=t.line:t.line>n.currentPhysicalLine&&(n.currentPhysicalLine=t.line,n.currentLogicalLine+=1),n.currentLogicalLine):t.line}check(t,n,r,s,...i){let o=this.tokens[this.pos]?.type;return o===t||n!==void 0&&o===n||r!==void 0&&o===r||s!==void 0&&o===s?!0:i.length>0?i.includes(o):!1}expect(t,n){if(this.check(t))return this.advance();let r=this.current();throw new xe(n||`Expected ${t}, got ${r.type}`,r.line,r.column,r)}error(t){let n=this.current();throw new xe(t,n.line,n.column,n)}skipNewlines(){for(;this.check(w.NEWLINE,w.COMMENT);)this.check(w.NEWLINE)?(this.advance(),this.processHeredocs()):this.advance()}skipSeparators(t=!0){for(;;){if(this.check(w.NEWLINE)){this.advance(),this.processHeredocs();continue}if(this.check(w.SEMICOLON,w.COMMENT)){this.advance();continue}if(t&&this.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)){this.advance();continue}break}}addPendingHeredoc(t,n,r,s){this.pendingHeredocs.push({redirect:t,delimiter:n,stripTabs:r,quoted:s})}processHeredocs(){for(let t of this.pendingHeredocs)if(this.check(w.HEREDOC_CONTENT)){let n=this.advance(),r;t.quoted?r=F.word([F.literal(n.value)]):r=this.parseWordFromString(n.value,!1,!1,!1,!0),t.redirect.target=F.hereDoc(t.delimiter,r,t.stripTabs,t.quoted,n.heredocTerminated??!1)}this.pendingHeredocs=[]}isStatementEnd(){return this.check(w.EOF,w.NEWLINE,w.SEMICOLON,w.AMP,w.AND_AND,w.OR_OR,w.RPAREN,w.RBRACE,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)}isCommandStart(){let t=this.current().type;return this.isWord()||t===w.ASSIGNMENT_WORD||t===w.FD_VARIABLE||t===w.LPAREN||t===w.LBRACE||t===w.DPAREN_START||t===w.DBRACK_START||br(this)}parseScript(){let t=[],r=0;for(this.skipNewlines();!this.check(w.EOF);){r++,r>1e4&&this.error("Parser stuck: too many iterations (>10000)");let s=this.checkUnexpectedToken();if(s){t.push(s),this.skipSeparators(!1);continue}let i=this.pos,o=this.parseStatement();o&&t.push(o),this.check(w.HEREDOC_CONTENT)&&this.processHeredocs(),this.skipSeparators(!1),this.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)&&this.error(`syntax error near unexpected token \`${this.current().value}'`),this.pos===i&&!this.check(w.EOF)&&this.error(`syntax error near unexpected token \`${this.current().value}'`)}return F.script(t)}checkUnexpectedToken(){let t=this.current().type,n=this.current().value;if(this.currentTokenJoinsProcessSubstitution())return null;if((t===w.DO||t===w.DONE||t===w.THEN||t===w.ELSE||t===w.ELIF||t===w.FI||t===w.ESAC)&&this.error(`syntax error near unexpected token \`${n}'`),t===w.RBRACE||t===w.RPAREN){let r=`syntax error near unexpected token \`${n}'`;return this.advance(),F.statement([F.pipeline([F.simpleCommand(null,[],[],[])])],[],!1,{message:r,token:n})}return(t===w.DSEMI||t===w.SEMI_AND||t===w.SEMI_SEMI_AND)&&this.error(`syntax error near unexpected token \`${n}'`),t===w.SEMICOLON&&this.error(`syntax error near unexpected token \`${n}'`),(t===w.AMP||t===w.AND_AND||t===w.OR_OR||t===w.PIPE||t===w.PIPE_AMP)&&this.error(`syntax error near unexpected token \`${n}'`),null}parseStatement(){if(this.skipNewlines(),!this.isCommandStart())return null;let t=this.current().start,n=[],r=[],s=!1,i=this.parsePipeline();for(n.push(i);this.check(w.AND_AND,w.OR_OR);){let l=this.advance();r.push(l.type===w.AND_AND?"&&":"||"),this.skipNewlines();let c=this.parsePipeline();n.push(c)}this.check(w.AMP)&&(this.advance(),s=!0);let o=this.pos>0?this.tokens[this.pos-1].end:t,a=this._input.slice(t,o);return F.statement(n,r,s,void 0,a)}parseTimePrefix(){if(!this.check(w.TIME)||this.currentTokenJoinsProcessSubstitution())return;this.advance();let t=!1;return this.check(w.WORD,w.NAME)&&this.current().value==="-p"&&(this.advance(),t=!0),t}parsePipeline(){let t=!1,n=!1,r=0;for(;this.check(w.BANG)&&!this.currentTokenJoinsProcessSubstitution();)this.advance(),r++;if(r===0){let l=this.parseTimePrefix();if(l!==void 0)for(t=!0,n=l;this.check(w.BANG)&&!this.currentTokenJoinsProcessSubstitution();)this.advance(),r++}let s=r%2===1,i=[],o=[],a=this.parseCommand();for(i.push(a);this.check(w.PIPE,w.PIPE_AMP);){let l=this.advance();this.skipNewlines(),o.push(l.type===w.PIPE_AMP);let c=this.parseCommand();i.push(c)}return F.pipeline(i,s,t,n,o.length>0?o:void 0)}parseCommand(){if(this.currentTokenJoinsProcessSubstitution())return Vi(this);let t=this.current();switch(t.type){case w.IF:return zi(this);case w.FOR:return Ui(this);case w.WHILE:return ji(this);case w.UNTIL:return qi(this);case w.CASE:return Gi(this);case w.LPAREN:return Hi(this);case w.LBRACE:return Zi(this);case w.DPAREN_START:return this.dparenClosesWithSpacedParens()?this.parseNestedSubshellsFromDparen():this.parseArithmeticCommand();case w.DBRACK_START:return this.parseConditionalCommand();case w.FUNCTION:return this.parseFunctionDef();case w.TIME:break;case w.BANG:this.error(`syntax error near unexpected token \`${t.value}'`);break;default:Ii(t.type)&&this.error(`syntax error near unexpected token \`${t.value}'`)}return this.check(w.NAME,w.WORD)&&this.peek(1).type===w.LPAREN&&this.peek(2).type===w.RPAREN?this.parseFunctionDef():Vi(this)}dparenClosesWithSpacedParens(){let t=1,n=1;for(;n<this.tokens.length-this.pos;){let r=this.peek(n);if(r.type===w.EOF)return!1;if(r.type===w.DPAREN_START||r.type===w.LPAREN)t++;else if(r.type===w.DPAREN_END){if(t-=2,t<=0)return!1}else if(r.type===w.RPAREN&&(t--,t===0&&this.peek(n+1).type===w.RPAREN))return!0;n++}return!1}parseNestedSubshellsFromDparen(){this.advance();let t=this.parseCompoundList();this.expect(w.RPAREN),this.expect(w.RPAREN);let n=this.parseOptionalRedirections(),r=F.subshell(t,[]);return F.subshell([F.statement([F.pipeline([r],!1,!1,!1)])],n)}isWord(){return this.isWordToken(Oe.Default)||this.isProcessSubstitutionStart()||this.currentTokenJoinsProcessSubstitution()}isWordToken(t){let n=this.current().type;return n===w.WORD||n===w.NAME||n===w.NUMBER||Ii(n)||n===w.BANG||n===w.ASSIGNMENT_WORD&&(t&Oe.Regex)!==0}isProcessSubstitutionStart(t=0){let n=this.peek(t),r=this.peek(t+1);return(n.type===w.LESS||n.type===w.GREAT)&&r.type===w.LPAREN&&n.end===r.start}currentTokenJoinsProcessSubstitution(){return this.current().type===w.COMMENT||!this.isAdjacentWordToken(Oe.Default)?!1:this.current().end===this.peek(1).start&&this.isProcessSubstitutionStart(1)}isAdjacentWordToken(t){let n=this.current().type;return this.isWordToken(t)||n===w.ASSIGNMENT_WORD||n===w.COMMENT||n===w.LBRACE||n===w.RBRACE||n===w.DBRACK_START||n===w.DBRACK_END||n===w.FD_VARIABLE}parseWord(t=Oe.Default){if(this.isProcessSubstitutionStart())return this.parseAdjacentWordParts([],this.current().start,t);let n=this.advance(),r=this.parseWordToken(n,t);return this.parseAdjacentWordParts(r.parts,n.end,t)}parseAdjacentWordParts(t,n,r=Oe.Default){for(;n===this.current().start;){if(this.isProcessSubstitutionStart()){t.push(this.parseProcessSubstitution()),n=this.tokens[this.pos-1].end;continue}if(!this.isAdjacentWordToken(r))break;let s=this.advance();t.push(...this.parseWordToken(s,r,t.length===0).parts),n=s.end}return F.word(t)}parseWordNoBraceExpansion(){return this.parseWord(Oe.NoBraceExpansion)}parseWordForRegex(){return this.parseWord(Oe.NoBraceExpansion|Oe.Regex)}parseWordToken(t,n,r=!0){return t.type===w.LBRACE||t.type===w.RBRACE||t.type===w.DBRACK_START||t.type===w.DBRACK_END||t.type===w.FD_VARIABLE?F.word([F.literal(t.type===w.FD_VARIABLE?`{${t.value}}`:t.value)]):this.parseWordFromString(t.value,t.quoted,t.singleQuoted,(n&Oe.Assignment)!==0,!1,(n&Oe.NoBraceExpansion)!==0,(n&Oe.Regex)!==0,r)}parseWordFromString(t,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1,l=!0){let c=ln(this,t,n,r,s,i,!1,o,a,!1,l);return F.word(c)}parseCommandSubstitution(t,n){return ml(t,n,()=>new e(this.parseBudget),r=>this.error(r))}parseProcessSubstitutionFromString(t,n){return yl(t,n,()=>new e(this.parseBudget),r=>this.error(r))}parseProcessSubstitution(){let t=this.advance();this.expect(w.LPAREN);let n=this.processLineState,r=this.getSourceLine(t);this.processLineState={currentLogicalLine:r};let s;try{s=F.script(this.parseCompoundList())}finally{this.processLineState=n}return this.check(w.EOF)&&this.error("unexpected EOF while looking for matching `)'"),this.expect(w.RPAREN),F.processSubstitution(s,t.type===w.LESS?"input":"output")}parseBacktickSubstitution(t,n,r=!1){return gl(t,n,r,()=>new e(this.parseBudget),s=>this.error(s))}isDollarDparenSubshell(t,n){return hl(t,n)}parseArithmeticExpansion(t,n){let r=n+3,s=1,i=0,o=r;for(;o<t.length-1&&s>0;)t[o]==="$"&&t[o+1]==="("?t[o+2]==="("?(s++,o+=3):(i++,o+=2):t[o]==="("&&t[o+1]==="("?(s++,o+=2):t[o]===")"&&t[o+1]===")"?i>0?(i--,o++):(s--,s>0&&(o+=2)):t[o]==="("?(i++,o++):(t[o]===")"&&i>0&&i--,o++);let a=t.slice(r,o),l=this.parseArithmeticExpression(a);return{part:F.arithmeticExpansion(l),endIndex:o+2}}parseArithmeticCommand(){let t=this.expect(w.DPAREN_START),n="",r=1,s=0,i=!1,o=!1;for(;r>0&&!this.check(w.EOF);){if(i){if(i=!1,s>0){s--,n+=")";continue}if(this.check(w.RPAREN)){r--,o=!0,this.advance();continue}if(this.check(w.DPAREN_END)){r--,o=!0;continue}n+=")";continue}if(this.check(w.DPAREN_START))r++,n+="((",this.advance();else if(this.check(w.DPAREN_END))s>=2?(s-=2,n+="))",this.advance()):s===1?(s--,n+=")",i=!0,this.advance()):(r--,o=!0,r>0&&(n+="))"),this.advance());else if(this.check(w.LPAREN))s++,n+="(",this.advance();else if(this.check(w.RPAREN))s>0&&s--,n+=")",this.advance();else{let c=this.current().value,u=n.length>0?n[n.length-1]:"";n.length>0&&!n.endsWith(" ")&&!(c==="="&&/[|&^+\-*/%<>]$/.test(n))&&!(c==="<"&&u==="<")&&!(c===">"&&u===">")&&(n+=" "),n+=c,this.advance()}}o||this.expect(w.DPAREN_END);let a=this.parseArithmeticExpression(n.trim()),l=this.parseOptionalRedirections();return F.arithmeticCommand(a,l,this.getSourceLine(t))}parseConditionalCommand(){let t=this.expect(w.DBRACK_START),n=Ki(this);this.expect(w.DBRACK_END);let r=this.parseOptionalRedirections();return F.conditionalCommand(n,r,this.getSourceLine(t))}parseFunctionDef(){let t;if(this.check(w.FUNCTION)){if(this.advance(),this.check(w.NAME)||this.check(w.WORD))t=this.advance().value;else{let s=this.current();throw new xe("Expected function name",s.line,s.column,s)}this.check(w.LPAREN)&&(this.advance(),this.expect(w.RPAREN))}else t=this.advance().value,t.includes("$")&&this.error(`\`${t}': not a valid identifier`),this.expect(w.LPAREN),this.expect(w.RPAREN);this.skipNewlines();let n=this.parseCompoundCommandBody({forFunctionBody:!0}),r=this.parseOptionalRedirections();return F.functionDef(t,n,r)}parseCompoundCommandBody(t){let n=t?.forFunctionBody;if(this.check(w.LBRACE))return Zi(this,{skipRedirections:n});if(this.check(w.LPAREN))return Hi(this,{skipRedirections:n});if(this.check(w.IF))return zi(this,{skipRedirections:n});if(this.check(w.FOR))return Ui(this,{skipRedirections:n});if(this.check(w.WHILE))return ji(this,{skipRedirections:n});if(this.check(w.UNTIL))return qi(this,{skipRedirections:n});if(this.check(w.CASE))return Gi(this,{skipRedirections:n});this.error("Expected compound command for function body")}parseCompoundList(){let t=this.enterDepth();try{let n=[];for(this.skipNewlines();(this.currentTokenJoinsProcessSubstitution()||!this.check(w.EOF,w.FI,w.ELSE,w.ELIF,w.THEN,w.DO,w.DONE,w.ESAC,w.RPAREN,w.RBRACE,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND))&&this.isCommandStart();){this.checkIterationLimit();let r=this.pos,s=this.parseStatement();if(s&&n.push(s),this.skipSeparators(),this.pos===r&&!s)break}return n}finally{t()}}parseOptionalRedirections(){let t=[];for(;br(this);){this.checkIterationLimit();let n=this.pos;if(t.push(ds(this)),this.pos===n)break}return t}parseArithmeticExpression(t){return ie(this,t)}};function je(e,t){return new Z().parse(e,t)}function Ar(e){return In(e)}function In(e){return e.statements.map(Kl).join(`
73
- `)}function Kl(e){let t=[];for(let r=0;r<e.pipelines.length;r++)t.push(bh(e.pipelines[r])),r<e.operators.length&&t.push(e.operators[r]);let n=t.join(" ");return e.background&&(n+=" &"),n}function bh(e){let t=[];e.timed&&t.push(e.timePosix?"time -p":"time"),e.negated&&t.push("!");let n=[];for(let s=0;s<e.commands.length;s++)if(n.push(Xl(e.commands[s])),s<e.commands.length-1){let i=e.pipeStderr?.[s];n.push(i?"|&":"|")}return(t.length>0?`${t.join(" ")} `:"")+n.join(" ")}function Xl(e){switch(e.type){case"SimpleCommand":return Sh(e);case"If":return Rh(e);case"For":return Oh(e);case"CStyleFor":return Dh(e);case"While":return Ih(e);case"Until":return Th(e);case"Case":return _h(e);case"Subshell":return Fh(e);case"Group":return Mh(e);case"ArithmeticCommand":return Bh(e);case"ConditionalCommand":return Wh(e);case"FunctionDef":return Vh(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function Sh(e){let t=[];for(let n of e.assignments)t.push(Ah(n));e.name&&t.push(ge(e.name));for(let n of e.args)t.push(ge(n));for(let n of e.redirections)t.push(ec(n));return t.join(" ")}function Ah(e){let t=e.append?"+=":"=";if(e.array){let n=e.array.map(ge).join(" ");return`${e.name}${t}(${n})`}return e.value?`${e.name}${t}${ge(e.value)}`:`${e.name}${t}`}function ge(e){return e.parts.map(t=>hs(t,!1)).join("")}function cn(e){return e.parts.map(t=>hs(t,!0)).join("")}function hs(e,t){switch(e.type){case"Literal":return t?kh(e.value):vh(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(n=>hs(n,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Yl(e);case"CommandSubstitution":return e.legacy?`\`${In(e.body)}\``:`$(${In(e.body)})`;case"ArithmeticExpansion":return`$((${he(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${In(e.body)})`:`>(${In(e.body)})`;case"BraceExpansion":return Ch(e);case"TildeExpansion":return e.user!==null?`~${e.user}`:"~";case"Glob":return e.pattern;default:{let n=e;throw new Error(`Unsupported word part type: ${n.type}`)}}}function vh(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function kh(e){return e.replace(/[$`"\\]/g,"\\$&")}function Ph(e,t){return e.parts.map(n=>xh(n,t)).join("")}function xh(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Yl(e);case"CommandSubstitution":return e.legacy?`\`${In(e.body)}\``:`$(${In(e.body)})`;case"ArithmeticExpansion":return`$((${he(e.expression.expression)}))`;default:return hs(e,!1)}}function Yl(e){return e.operation?`\${${Jl(e.parameter,e.operation)}}`:$h(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function $h(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function Jl(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${cn(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${cn(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?cn(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${cn(t.word)}`;case"Substring":{let n=he(t.offset.expression);return t.length?`${e}:${n}:${he(t.length.expression)}`:`${e}:${n}`}case"PatternRemoval":{let n=t.side==="prefix"?"#":"%",r=t.greedy?`${n}${n}`:n;return`${e}${r}${cn(t.pattern)}`}case"PatternReplacement":{let n="/";t.all?n="//":t.anchor==="start"?n="/#":t.anchor==="end"&&(n="/%");let r=t.replacement?`/${cn(t.replacement)}`:"";return`${e}${n}${cn(t.pattern)}${r}`}case"CaseModification":{let n=t.direction==="upper"?"^":",",r=t.all?`${n}${n}`:n,s=t.pattern?cn(t.pattern):"";return`${e}${r}${s}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${Jl(e,t.innerOp)}`:`!${e}`;case"ArrayKeys":return`!${t.array}[${t.star?"*":"@"}]`;case"VarNamePrefix":return`!${t.prefix}${t.star?"*":"@"}`;default:{let n=t;throw new Error(`Unsupported parameter operation type: ${n.type}`)}}}function Ch(e){return`{${e.items.map(Nh).join(",")}}`}function Nh(e){if(e.type==="Word")return ge(e.word);let t=e.startStr??String(e.start),n=e.endStr??String(e.end);return e.step!==void 0?`${t}..${n}..${e.step}`:`${t}..${n}`}function ec(e){let t=e.fdVariable?`{${e.fdVariable}}`:e.fd!==null?String(e.fd):"";if(e.operator==="<<"||e.operator==="<<-"){let n=e.target;if(n.terminated===!1)throw new Error("Cannot serialize an unterminated here-document");let r=n.quoted?`'${n.delimiter}'`:n.delimiter,s=Ph(n.content,n.quoted);return`${t}${e.operator}${r}
74
- ${s}${n.delimiter}`}return e.operator==="<<<"?`${t}<<< ${ge(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${ge(e.target)}`:`${t}${e.operator} ${ge(e.target)}`}function Et(e){return e.length===0?"":` ${e.map(ec).join(" ")}`}function dt(e){return e.map(Kl).join(`
75
- `)}function Rh(e){let t=[];for(let n=0;n<e.clauses.length;n++){let r=e.clauses[n],s=n===0?"if":"elif";t.push(`${s} ${dt(r.condition)}; then
76
- ${dt(r.body)}`)}return e.elseBody&&t.push(`else
77
- ${dt(e.elseBody)}`),`${t.join(`
71
+ `||c&&E==="}",g=o?"*?[]\\".includes(E):"*?[]\\(){}.^+".includes(E);S?E!==`
72
+ `&&(h+=E):g?(p(),f.push(M.escaped(E))):h+=`\\${E}`,d+=2;continue}if(m==="'"&&!o&&!i){p();let E=t.indexOf("'",d+1);if(E===-1){h+=t.slice(d);break}f.push(M.singleQuoted(t.slice(d+1,E))),d=E+1;continue}if(m==='"'&&!i){p();let{part:E,endIndex:S}=Dh(e,t,d+1);f.push(E),d=S+1;continue}if(m==="$"&&t[d+1]==="'"){p();let{part:E,endIndex:S}=Ql(e,t,d+2);f.push(E),d=S;continue}if(m==="$"){p();let{part:E,endIndex:S}=oo(e,t,d);E&&f.push(E),d=S;continue}if(m==="`"){p();let{part:E,endIndex:S}=e.parseBacktickSubstitution(t,d);f.push(E),d=S;continue}if((m==="<"||m===">")&&t[d+1]==="("&&!i&&!o){p();let{part:E,endIndex:S}=e.parseProcessSubstitutionFromString(t,d);f.push(E),d=S;continue}if(m==="~"){let E=d>0?t[d-1]:"";if(d===0&&u||E==="="||s&&E===":"){let g=Gl(e,t,d),y=t[g];if(y===void 0||y==="/"||y===":"){p();let b=t.slice(d+1,g)||null;f.push({type:"TildeExpansion",user:b}),d=g;continue}}}if("@*+?!".includes(m)&&d+1<t.length&&t[d+1]==="("){let E=Nh(t,d+1);if(E!==-1){p();let S=t.slice(d,E+1);f.push({type:"Glob",pattern:S}),d=E+1;continue}}if(m==="*"||m==="?"||m==="["){p();let{pattern:E,endIndex:S}=Zl(e,t,d);f.push({type:"Glob",pattern:l?Ch(E):E}),d=S;continue}if(m==="{"&&!s&&!a&&!i){let E=Kl(e,t,d,un);if(E){p(),f.push(E.part),d=E.endIndex;continue}}h+=m,d++}return p(),f}var Q=class e{tokens=[];pos=0;pendingHeredocs=[];parseBudget;ownsParseBudget;_input="";processLineState;constructor(t){this.parseBudget=t??new ps,this.ownsParseBudget=t===void 0}getInput(){return this._input}checkIterationLimit(){let t=this.current();this.parseBudget.chargeIteration(t?.line??1,t?.column??1)}enterDepth(){let t=this.current();return this.parseBudget.enter(t?.line??1,t?.column??1)}withDepth(t){let n=this.enterDepth();try{return t()}finally{n()}}parse(t,n){this.ownsParseBudget&&this.parseBudget.reset();let r=this.ownsParseBudget?void 0:this.enterDepth();try{if(t.length>zi)throw new Ce(`Input too large: ${t.length} bytes exceeds limit of ${zi}`,1,1);this._input=t,this.processLineState=void 0;let s=new hs(t,n);if(this.tokens=s.tokenize(),this.tokens.length>vr)throw new Ce(`Too many tokens: ${this.tokens.length} exceeds limit of ${vr}`,1,1);return this.pos=0,this.pendingHeredocs=[],this.parseBudget.chargeTokens(this.tokens.length),this.parseScript()}finally{r?.()}}parseTokens(t){this.ownsParseBudget&&this.parseBudget.reset();let n=this.ownsParseBudget?void 0:this.enterDepth();try{return this.tokens=t,this.pos=0,this.pendingHeredocs=[],this.processLineState=void 0,this.parseBudget.chargeTokens(t.length),this.parseScript()}finally{n?.()}}current(){return this.tokens[this.pos]||this.tokens[this.tokens.length-1]}peek(t=0){return this.tokens[this.pos+t]||this.tokens[this.tokens.length-1]}advance(){let t=this.current();return this.pos<this.tokens.length-1&&this.pos++,t}getPos(){return this.pos}getSourceLine(t=this.current()){let n=this.processLineState;return n?(n.currentPhysicalLine===void 0?n.currentPhysicalLine=t.line:t.line>n.currentPhysicalLine&&(n.currentPhysicalLine=t.line,n.currentLogicalLine+=1),n.currentLogicalLine):t.line}check(t,n,r,s,...i){let o=this.tokens[this.pos]?.type;return o===t||n!==void 0&&o===n||r!==void 0&&o===r||s!==void 0&&o===s?!0:i.length>0?i.includes(o):!1}expect(t,n){if(this.check(t))return this.advance();let r=this.current();throw new Ce(n||`Expected ${t}, got ${r.type}`,r.line,r.column,r)}error(t){let n=this.current();throw new Ce(t,n.line,n.column,n)}skipNewlines(){for(;this.check(w.NEWLINE,w.COMMENT);)this.check(w.NEWLINE)?(this.advance(),this.processHeredocs()):this.advance()}skipSeparators(t=!0){for(;;){if(this.check(w.NEWLINE)){this.advance(),this.processHeredocs();continue}if(this.check(w.SEMICOLON,w.COMMENT)){this.advance();continue}if(t&&this.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)){this.advance();continue}break}}addPendingHeredoc(t,n,r,s){this.pendingHeredocs.push({redirect:t,delimiter:n,stripTabs:r,quoted:s})}processHeredocs(){for(let t of this.pendingHeredocs)if(this.check(w.HEREDOC_CONTENT)){let n=this.advance(),r;t.quoted?r=M.word([M.literal(n.value)]):r=this.parseWordFromString(n.value,!1,!1,!1,!0),t.redirect.target=M.hereDoc(t.delimiter,r,t.stripTabs,t.quoted,n.heredocTerminated??!1)}this.pendingHeredocs=[]}isStatementEnd(){return this.check(w.EOF,w.NEWLINE,w.SEMICOLON,w.AMP,w.AND_AND,w.OR_OR,w.RPAREN,w.RBRACE,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)}isCommandStart(){let t=this.current().type;return this.isWord()||t===w.ASSIGNMENT_WORD||t===w.FD_VARIABLE||t===w.LPAREN||t===w.LBRACE||t===w.DPAREN_START||t===w.DBRACK_START||Pr(this)}parseScript(){let t=[],r=0;for(this.skipNewlines();!this.check(w.EOF);){r++,r>1e4&&this.error("Parser stuck: too many iterations (>10000)");let s=this.checkUnexpectedToken();if(s){t.push(s),this.skipSeparators(!1);continue}let i=this.pos,o=this.parseStatement();o&&t.push(o),this.check(w.HEREDOC_CONTENT)&&this.processHeredocs(),this.skipSeparators(!1),this.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)&&this.error(`syntax error near unexpected token \`${this.current().value}'`),this.pos===i&&!this.check(w.EOF)&&this.error(`syntax error near unexpected token \`${this.current().value}'`)}return M.script(t)}checkUnexpectedToken(){let t=this.current().type,n=this.current().value;if(this.currentTokenJoinsProcessSubstitution())return null;if((t===w.DO||t===w.DONE||t===w.THEN||t===w.ELSE||t===w.ELIF||t===w.FI||t===w.ESAC)&&this.error(`syntax error near unexpected token \`${n}'`),t===w.RBRACE||t===w.RPAREN){let r=`syntax error near unexpected token \`${n}'`;return this.advance(),M.statement([M.pipeline([M.simpleCommand(null,[],[],[])])],[],!1,{message:r,token:n})}return(t===w.DSEMI||t===w.SEMI_AND||t===w.SEMI_SEMI_AND)&&this.error(`syntax error near unexpected token \`${n}'`),t===w.SEMICOLON&&this.error(`syntax error near unexpected token \`${n}'`),(t===w.AMP||t===w.AND_AND||t===w.OR_OR||t===w.PIPE||t===w.PIPE_AMP)&&this.error(`syntax error near unexpected token \`${n}'`),null}parseStatement(){if(this.skipNewlines(),!this.isCommandStart())return null;let t=this.current().start,n=[],r=[],s=!1,i=this.parsePipeline();for(n.push(i);this.check(w.AND_AND,w.OR_OR);){let l=this.advance();r.push(l.type===w.AND_AND?"&&":"||"),this.skipNewlines();let c=this.parsePipeline();n.push(c)}this.check(w.AMP)&&(this.advance(),s=!0);let o=this.pos>0?this.tokens[this.pos-1].end:t,a=this._input.slice(t,o);return M.statement(n,r,s,void 0,a)}parseTimePrefix(){if(!this.check(w.TIME)||this.currentTokenJoinsProcessSubstitution())return;this.advance();let t=!1;return this.check(w.WORD,w.NAME)&&this.current().value==="-p"&&(this.advance(),t=!0),t}parsePipeline(){let t=!1,n=!1,r=0;for(;this.check(w.BANG)&&!this.currentTokenJoinsProcessSubstitution();)this.advance(),r++;if(r===0){let l=this.parseTimePrefix();if(l!==void 0)for(t=!0,n=l;this.check(w.BANG)&&!this.currentTokenJoinsProcessSubstitution();)this.advance(),r++}let s=r%2===1,i=[],o=[],a=this.parseCommand();for(i.push(a);this.check(w.PIPE,w.PIPE_AMP);){let l=this.advance();this.skipNewlines(),o.push(l.type===w.PIPE_AMP);let c=this.parseCommand();i.push(c)}return M.pipeline(i,s,t,n,o.length>0?o:void 0)}parseCommand(){if(this.currentTokenJoinsProcessSubstitution())return Qi(this);let t=this.current();switch(t.type){case w.IF:return Ki(this);case w.FOR:return Xi(this);case w.WHILE:return Yi(this);case w.UNTIL:return Ji(this);case w.CASE:return eo(this);case w.LPAREN:return to(this);case w.LBRACE:return no(this);case w.DPAREN_START:return this.dparenClosesWithSpacedParens()?this.parseNestedSubshellsFromDparen():this.parseArithmeticCommand();case w.DBRACK_START:return this.parseConditionalCommand();case w.FUNCTION:return this.parseFunctionDef();case w.TIME:break;case w.BANG:this.error(`syntax error near unexpected token \`${t.value}'`);break;default:Vi(t.type)&&this.error(`syntax error near unexpected token \`${t.value}'`)}return this.check(w.NAME,w.WORD)&&this.peek(1).type===w.LPAREN&&this.peek(2).type===w.RPAREN?this.parseFunctionDef():Qi(this)}dparenClosesWithSpacedParens(){let t=1,n=1;for(;n<this.tokens.length-this.pos;){let r=this.peek(n);if(r.type===w.EOF)return!1;if(r.type===w.DPAREN_START||r.type===w.LPAREN)t++;else if(r.type===w.DPAREN_END){if(t-=2,t<=0)return!1}else if(r.type===w.RPAREN&&(t--,t===0&&this.peek(n+1).type===w.RPAREN))return!0;n++}return!1}parseNestedSubshellsFromDparen(){this.advance();let t=this.parseCompoundList();this.expect(w.RPAREN),this.expect(w.RPAREN);let n=this.parseOptionalRedirections(),r=M.subshell(t,[]);return M.subshell([M.statement([M.pipeline([r],!1,!1,!1)])],n)}isWord(){return this.isWordToken(De.Default)||this.isProcessSubstitutionStart()||this.currentTokenJoinsProcessSubstitution()}isWordToken(t){let n=this.current().type;return n===w.WORD||n===w.NAME||n===w.NUMBER||Vi(n)||n===w.BANG||n===w.ASSIGNMENT_WORD&&(t&De.Regex)!==0}isProcessSubstitutionStart(t=0){let n=this.peek(t),r=this.peek(t+1);return(n.type===w.LESS||n.type===w.GREAT)&&r.type===w.LPAREN&&n.end===r.start}currentTokenJoinsProcessSubstitution(){return this.current().type===w.COMMENT||!this.isAdjacentWordToken(De.Default)?!1:this.current().end===this.peek(1).start&&this.isProcessSubstitutionStart(1)}isAdjacentWordToken(t){let n=this.current().type;return this.isWordToken(t)||n===w.ASSIGNMENT_WORD||n===w.COMMENT||n===w.LBRACE||n===w.RBRACE||n===w.DBRACK_START||n===w.DBRACK_END||n===w.FD_VARIABLE}parseWord(t=De.Default){if(this.isProcessSubstitutionStart())return this.parseAdjacentWordParts([],this.current().start,t);let n=this.advance(),r=this.parseWordToken(n,t);return this.parseAdjacentWordParts(r.parts,n.end,t)}parseAdjacentWordParts(t,n,r=De.Default){for(;n===this.current().start;){if(this.isProcessSubstitutionStart()){t.push(this.parseProcessSubstitution()),n=this.tokens[this.pos-1].end;continue}if(!this.isAdjacentWordToken(r))break;let s=this.advance();t.push(...this.parseWordToken(s,r,t.length===0).parts),n=s.end}return M.word(t)}parseWordNoBraceExpansion(){return this.parseWord(De.NoBraceExpansion)}parseWordForRegex(){return this.parseWord(De.NoBraceExpansion|De.Regex)}parseWordToken(t,n,r=!0){return t.type===w.LBRACE||t.type===w.RBRACE||t.type===w.DBRACK_START||t.type===w.DBRACK_END||t.type===w.FD_VARIABLE?M.word([M.literal(t.type===w.FD_VARIABLE?`{${t.value}}`:t.value)]):this.parseWordFromString(t.value,t.quoted,t.singleQuoted,(n&De.Assignment)!==0,!1,(n&De.NoBraceExpansion)!==0,(n&De.Regex)!==0,r)}parseWordFromString(t,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1,l=!0){let c=un(this,t,n,r,s,i,!1,o,a,!1,l);return M.word(c)}parseCommandSubstitution(t,n){return Al(t,n,()=>new e(this.parseBudget),r=>this.error(r))}parseProcessSubstitutionFromString(t,n){return vl(t,n,()=>new e(this.parseBudget),r=>this.error(r))}parseProcessSubstitution(){let t=this.advance();this.expect(w.LPAREN);let n=this.processLineState,r=this.getSourceLine(t);this.processLineState={currentLogicalLine:r};let s;try{s=M.script(this.parseCompoundList())}finally{this.processLineState=n}return this.check(w.EOF)&&this.error("unexpected EOF while looking for matching `)'"),this.expect(w.RPAREN),M.processSubstitution(s,t.type===w.LESS?"input":"output")}parseBacktickSubstitution(t,n,r=!1){return kl(t,n,r,()=>new e(this.parseBudget),s=>this.error(s))}isDollarDparenSubshell(t,n){return bl(t,n)}parseArithmeticExpansion(t,n){let r=n+3,s=1,i=0,o=r;for(;o<t.length-1&&s>0;)t[o]==="$"&&t[o+1]==="("?t[o+2]==="("?(s++,o+=3):(i++,o+=2):t[o]==="("&&t[o+1]==="("?(s++,o+=2):t[o]===")"&&t[o+1]===")"?i>0?(i--,o++):(s--,s>0&&(o+=2)):t[o]==="("?(i++,o++):(t[o]===")"&&i>0&&i--,o++);let a=t.slice(r,o),l=this.parseArithmeticExpression(a);return{part:M.arithmeticExpansion(l),endIndex:o+2}}parseArithmeticCommand(){let t=this.expect(w.DPAREN_START),n="",r=1,s=0,i=!1,o=!1;for(;r>0&&!this.check(w.EOF);){if(i){if(i=!1,s>0){s--,n+=")";continue}if(this.check(w.RPAREN)){r--,o=!0,this.advance();continue}if(this.check(w.DPAREN_END)){r--,o=!0;continue}n+=")";continue}if(this.check(w.DPAREN_START))r++,n+="((",this.advance();else if(this.check(w.DPAREN_END))s>=2?(s-=2,n+="))",this.advance()):s===1?(s--,n+=")",i=!0,this.advance()):(r--,o=!0,r>0&&(n+="))"),this.advance());else if(this.check(w.LPAREN))s++,n+="(",this.advance();else if(this.check(w.RPAREN))s>0&&s--,n+=")",this.advance();else{let c=this.current().value,u=n.length>0?n[n.length-1]:"";n.length>0&&!n.endsWith(" ")&&!(c==="="&&/[|&^+\-*/%<>]$/.test(n))&&!(c==="<"&&u==="<")&&!(c===">"&&u===">")&&(n+=" "),n+=c,this.advance()}}o||this.expect(w.DPAREN_END);let a=this.parseArithmeticExpression(n.trim()),l=this.parseOptionalRedirections();return M.arithmeticCommand(a,l,this.getSourceLine(t))}parseConditionalCommand(){let t=this.expect(w.DBRACK_START),n=so(this);this.expect(w.DBRACK_END);let r=this.parseOptionalRedirections();return M.conditionalCommand(n,r,this.getSourceLine(t))}parseFunctionDef(){let t;if(this.check(w.FUNCTION)){if(this.advance(),this.check(w.NAME)||this.check(w.WORD))t=this.advance().value;else{let s=this.current();throw new Ce("Expected function name",s.line,s.column,s)}this.check(w.LPAREN)&&(this.advance(),this.expect(w.RPAREN))}else t=this.advance().value,t.includes("$")&&this.error(`\`${t}': not a valid identifier`),this.expect(w.LPAREN),this.expect(w.RPAREN);this.skipNewlines();let n=this.parseCompoundCommandBody({forFunctionBody:!0}),r=this.parseOptionalRedirections();return M.functionDef(t,n,r)}parseCompoundCommandBody(t){let n=t?.forFunctionBody;if(this.check(w.LBRACE))return no(this,{skipRedirections:n});if(this.check(w.LPAREN))return to(this,{skipRedirections:n});if(this.check(w.IF))return Ki(this,{skipRedirections:n});if(this.check(w.FOR))return Xi(this,{skipRedirections:n});if(this.check(w.WHILE))return Yi(this,{skipRedirections:n});if(this.check(w.UNTIL))return Ji(this,{skipRedirections:n});if(this.check(w.CASE))return eo(this,{skipRedirections:n});this.error("Expected compound command for function body")}parseCompoundList(){let t=this.enterDepth();try{let n=[];for(this.skipNewlines();(this.currentTokenJoinsProcessSubstitution()||!this.check(w.EOF,w.FI,w.ELSE,w.ELIF,w.THEN,w.DO,w.DONE,w.ESAC,w.RPAREN,w.RBRACE,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND))&&this.isCommandStart();){this.checkIterationLimit();let r=this.pos,s=this.parseStatement();if(s&&n.push(s),this.skipSeparators(),this.pos===r&&!s)break}return n}finally{t()}}parseOptionalRedirections(){let t=[];for(;Pr(this);){this.checkIterationLimit();let n=this.pos;if(t.push(ws(this)),this.pos===n)break}return t}parseArithmeticExpression(t){return oe(this,t)}};function qe(e,t){return new Q().parse(e,t)}function Cr(e){return Ln(e)}function Ln(e){return e.statements.map(rc).join(`
73
+ `)}function rc(e){let t=[];for(let r=0;r<e.pipelines.length;r++)t.push(Th(e.pipelines[r])),r<e.operators.length&&t.push(e.operators[r]);let n=t.join(" ");return e.background&&(n+=" &"),n}function Th(e){let t=[];e.timed&&t.push(e.timePosix?"time -p":"time"),e.negated&&t.push("!");let n=[];for(let s=0;s<e.commands.length;s++)if(n.push(sc(e.commands[s])),s<e.commands.length-1){let i=e.pipeStderr?.[s];n.push(i?"|&":"|")}return(t.length>0?`${t.join(" ")} `:"")+n.join(" ")}function sc(e){switch(e.type){case"SimpleCommand":return _h(e);case"If":return jh(e);case"For":return qh(e);case"CStyleFor":return Gh(e);case"While":return Hh(e);case"Until":return Zh(e);case"Case":return Qh(e);case"Subshell":return Xh(e);case"Group":return Yh(e);case"ArithmeticCommand":return Jh(e);case"ConditionalCommand":return ep(e);case"FunctionDef":return tp(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function _h(e){let t=[];for(let n of e.assignments)t.push(Lh(n));e.name&&t.push(we(e.name));for(let n of e.args)t.push(we(n));for(let n of e.redirections)t.push(ac(n));return t.join(" ")}function Lh(e){let t=e.append?"+=":"=";if(e.array){let n=e.array.map(we).join(" ");return`${e.name}${t}(${n})`}return e.value?`${e.name}${t}${we(e.value)}`:`${e.name}${t}`}function we(e){return e.parts.map(t=>Es(t,!1)).join("")}function fn(e){return e.parts.map(t=>Es(t,!0)).join("")}function Es(e,t){switch(e.type){case"Literal":return t?Mh(e.value):Fh(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(n=>Es(n,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return ic(e);case"CommandSubstitution":return e.legacy?`\`${Ln(e.body)}\``:`$(${Ln(e.body)})`;case"ArithmeticExpansion":return`$((${pe(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${Ln(e.body)})`:`>(${Ln(e.body)})`;case"BraceExpansion":return zh(e);case"TildeExpansion":return e.user!==null?`~${e.user}`:"~";case"Glob":return e.pattern;default:{let n=e;throw new Error(`Unsupported word part type: ${n.type}`)}}}function Fh(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function Mh(e){return e.replace(/[$`"\\]/g,"\\$&")}function Bh(e,t){return e.parts.map(n=>Wh(n,t)).join("")}function Wh(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return ic(e);case"CommandSubstitution":return e.legacy?`\`${Ln(e.body)}\``:`$(${Ln(e.body)})`;case"ArithmeticExpansion":return`$((${pe(e.expression.expression)}))`;default:return Es(e,!1)}}function ic(e){return e.operation?`\${${oc(e.parameter,e.operation)}}`:Vh(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function Vh(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function oc(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${fn(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${fn(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?fn(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${fn(t.word)}`;case"Substring":{let n=pe(t.offset.expression);return t.length?`${e}:${n}:${pe(t.length.expression)}`:`${e}:${n}`}case"PatternRemoval":{let n=t.side==="prefix"?"#":"%",r=t.greedy?`${n}${n}`:n;return`${e}${r}${fn(t.pattern)}`}case"PatternReplacement":{let n="/";t.all?n="//":t.anchor==="start"?n="/#":t.anchor==="end"&&(n="/%");let r=t.replacement?`/${fn(t.replacement)}`:"";return`${e}${n}${fn(t.pattern)}${r}`}case"CaseModification":{let n=t.direction==="upper"?"^":",",r=t.all?`${n}${n}`:n,s=t.pattern?fn(t.pattern):"";return`${e}${r}${s}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${oc(e,t.innerOp)}`:`!${e}`;case"ArrayKeys":return`!${t.array}[${t.star?"*":"@"}]`;case"VarNamePrefix":return`!${t.prefix}${t.star?"*":"@"}`;default:{let n=t;throw new Error(`Unsupported parameter operation type: ${n.type}`)}}}function zh(e){return`{${e.items.map(Uh).join(",")}}`}function Uh(e){if(e.type==="Word")return we(e.word);let t=e.startStr??String(e.start),n=e.endStr??String(e.end);return e.step!==void 0?`${t}..${n}..${e.step}`:`${t}..${n}`}function ac(e){let t=e.fdVariable?`{${e.fdVariable}}`:e.fd!==null?String(e.fd):"";if(e.operator==="<<"||e.operator==="<<-"){let n=e.target;if(n.terminated===!1)throw new Error("Cannot serialize an unterminated here-document");let r=n.quoted?`'${n.delimiter}'`:n.delimiter,s=Bh(n.content,n.quoted);return`${t}${e.operator}${r}
74
+ ${s}${n.delimiter}`}return e.operator==="<<<"?`${t}<<< ${we(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${we(e.target)}`:`${t}${e.operator} ${we(e.target)}`}function At(e){return e.length===0?"":` ${e.map(ac).join(" ")}`}function pt(e){return e.map(rc).join(`
75
+ `)}function jh(e){let t=[];for(let n=0;n<e.clauses.length;n++){let r=e.clauses[n],s=n===0?"if":"elif";t.push(`${s} ${pt(r.condition)}; then
76
+ ${pt(r.body)}`)}return e.elseBody&&t.push(`else
77
+ ${pt(e.elseBody)}`),`${t.join(`
78
78
  `)}
79
- fi${Et(e.redirections)}`}function Oh(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let n=e.words.map(ge).join(" ");t=`for ${e.variable} in ${n}`}return`${t}; do
80
- ${dt(e.body)}
81
- done${Et(e.redirections)}`}function Dh(e){let t=e.init?he(e.init.expression):"",n=e.condition?he(e.condition.expression):"",r=e.update?he(e.update.expression):"";return`for ((${t}; ${n}; ${r})); do
82
- ${dt(e.body)}
83
- done${Et(e.redirections)}`}function Ih(e){return`while ${dt(e.condition)}; do
84
- ${dt(e.body)}
85
- done${Et(e.redirections)}`}function Th(e){return`until ${dt(e.condition)}; do
86
- ${dt(e.body)}
87
- done${Et(e.redirections)}`}function _h(e){let t=e.items.map(Lh).join(`
88
- `);return`case ${ge(e.word)} in
79
+ fi${At(e.redirections)}`}function qh(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let n=e.words.map(we).join(" ");t=`for ${e.variable} in ${n}`}return`${t}; do
80
+ ${pt(e.body)}
81
+ done${At(e.redirections)}`}function Gh(e){let t=e.init?pe(e.init.expression):"",n=e.condition?pe(e.condition.expression):"",r=e.update?pe(e.update.expression):"";return`for ((${t}; ${n}; ${r})); do
82
+ ${pt(e.body)}
83
+ done${At(e.redirections)}`}function Hh(e){return`while ${pt(e.condition)}; do
84
+ ${pt(e.body)}
85
+ done${At(e.redirections)}`}function Zh(e){return`until ${pt(e.condition)}; do
86
+ ${pt(e.body)}
87
+ done${At(e.redirections)}`}function Qh(e){let t=e.items.map(Kh).join(`
88
+ `);return`case ${we(e.word)} in
89
89
  ${t}
90
- esac${Et(e.redirections)}`}function Lh(e){let t=e.patterns.map(ge).join(" | "),n=dt(e.body);return n?`${t})
90
+ esac${At(e.redirections)}`}function Kh(e){let t=e.patterns.map(we).join(" | "),n=pt(e.body);return n?`${t})
91
91
  ${n}
92
92
  ${e.terminator}`:`${t})
93
- ${e.terminator}`}function Fh(e){return`(${dt(e.body)})${Et(e.redirections)}`}function Mh(e){return`{ ${dt(e.body)}; }${Et(e.redirections)}`}function Bh(e){return`((${he(e.expression.expression)}))${Et(e.redirections)}`}function Wh(e){return`[[ ${Dn(e.expression)} ]]${Et(e.redirections)}`}function Vh(e){let t=Xl(e.body);return`${e.name}() ${t}${Et(e.redirections)}`}function he(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${he(e.left)} ${e.operator} ${he(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${he(e.operand)}`:`${he(e.operand)}${e.operator}`;case"ArithTernary":return`${he(e.condition)} ? ${he(e.consequent)} : ${he(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${he(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${he(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${he(e.target)}[${he(e.subscript)}]`:he(e.target)} ${e.operator} ${he(e.value)}`;case"ArithDynamicElement":return`${he(e.nameExpr)}[${he(e.subscript)}]`;case"ArithGroup":return`(${he(e.expression)})`;case"ArithNested":return`$((${he(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${he(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(he).join("");case"ArithDoubleSubscript":return`${e.array}[${he(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function Dn(e){switch(e.type){case"CondBinary":return`${ge(e.left)} ${e.operator} ${ge(e.right)}`;case"CondUnary":return`${e.operator} ${ge(e.operand)}`;case"CondNot":return`! ${Dn(e.operand)}`;case"CondAnd":return`${Dn(e.left)} && ${Dn(e.right)}`;case"CondOr":return`${Dn(e.left)} || ${Dn(e.right)}`;case"CondGroup":return`( ${Dn(e.expression)} )`;case"CondWord":return ge(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var zh="BASH_ALIAS_";function ps(e,t,n,r){let s=B(t);if(s>n-r.value)throw new $(`alias expansion exceeds string length limit (${n} bytes)`,"string_length");return r.value+=s,e+t}function tc(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function nc(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function rc(e,t){return e.env.get(`${zh}${t}`)}function ic(e,t,n){return oc(e,t,n)}function oc(e,t,n,r=!0){if(!t.name||!tc(t.name))return t;let s=nc(t.name);if(!s)return t;let i=rc(e,s);if(!i||n.has(s))return t;try{n.add(s);let o=new Z,a={value:0},l=ps("",i,e.limits.maxStringLength,a),c=i.endsWith(" ");if(!c)for(let h of t.args){let p=ge(h);l=ps(l,` ${p}`,e.limits.maxStringLength,a)}let u;try{u=o.parse(l)}catch(h){if(h instanceof xe)throw h;return t}if(u.statements.length!==1||u.statements[0].pipelines.length!==1||u.statements[0].pipelines[0].commands.length!==1)return sc(e,t,i);let f=u.statements[0].pipelines[0].commands[0];if(f.type!=="SimpleCommand")return sc(e,t,i);let d={...f,assignments:[...t.assignments,...f.assignments],redirections:[...f.redirections,...t.redirections],line:t.line};if(c&&t.args.length>0){d={...d,args:[...d.args,...t.args]};let h=1;for(;r&&d.args.length>0;){let p=d.args[0];if(!tc(p))break;let m=nc(p),E=m?rc(e,m):null;if(!E)break;if(h>=e.limits.maxCallDepth)throw new $(`alias expansion depth limit exceeded (${e.limits.maxCallDepth})`,"recursion");h++;let b={type:"SimpleCommand",name:p,args:d.args.slice(1),assignments:[],redirections:[]},g=oc(e,b,n,!1);if(g===b||(d={...d,name:g.name,args:[...g.args]},!E.endsWith(" ")))break}}return d}catch(o){throw n.delete(s),o}}function sc(e,t,n){let r={value:0},s=ps("",n,e.limits.maxStringLength,r);for(let c of t.args){let u=ge(c);s=ps(s,` ${u}`,e.limits.maxStringLength,r)}let i=new Z,o=i.parseWordFromString("eval",!1,!1),a=0;for(let c of s)c==="'"&&a++;if(r.value+2+a*3>e.limits.maxStringLength)throw new $(`alias expansion exceeds string length limit (${e.limits.maxStringLength} bytes)`,"string_length");let l=i.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:o,args:[l],assignments:t.assignments,redirections:t.redirections,line:t.line}}var Uh=new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9a-fA-F"]]);function Ji(e){return Uh.get(e)??""}function ac(e){let t=[],n="",r=0;for(;r<e.length;){let s=e[r];if(s==="["){for(n+=s,r++,r<e.length&&(e[r]==="!"||e[r]==="^")&&(n+=e[r],r++),r<e.length&&e[r]==="]"&&(n+=e[r],r++);r<e.length&&e[r]!=="]";){if(e[r]==="["&&r+1<e.length&&e[r+1]===":"){let i=e.indexOf(":]",r+2);if(i!==-1){n+=e.slice(r,i+2),r=i+2;continue}}if(e[r]==="\\"&&r+1<e.length){n+=e[r]+e[r+1],r+=2;continue}n+=e[r],r++}r<e.length&&e[r]==="]"&&(n+=e[r],r++)}else s===":"?(n!==""&&t.push(n),n="",r++):s==="\\"&&r+1<e.length?(n+=s+e[r+1],r+=2):(n+=s,r++)}return n!==""&&t.push(n),t}function lc(e){let t="^";for(let n=0;n<e.length;n++){let r=e[n];if(r==="*")t+="[^/]*";else if(r==="?")t+="[^/]";else if(r==="["){let s=n+1,i="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(i+="^",s++),s<e.length&&e[s]==="]"&&(i+="\\]",s++);let o=s;for(;o<e.length;){if(e[o]==="\\"&&o+1<e.length){o+=2;continue}if(e[o]==="["&&o+1<e.length&&e[o+1]===":"){let l=e.indexOf(":]",o+2);if(l!==-1){o=l+2;continue}}if(e[o]==="]")break;o++}let a=s;for(;s<e.length&&e[s]!=="]";){if(e[s]==="["&&s+1<e.length&&e[s+1]===":"){let l=e.indexOf(":]",s+2);if(l!==-1){let c=e.slice(s+2,l),u=Ji(c);i+=u,s=l+2;continue}}if(e[s]==="\\"&&s+1<e.length){i+=`\\${e[s+1]}`,s+=2;continue}if(e[s]==="-"){let l=s===a,c=s+1===o;l||c?i+="\\-":i+="-"}else i+=e[s];s++}i+="]",t+=i,n=s}else if(r==="\\"&&n+1<e.length){let s=e[n+1];/[.+^${}()|\\*?[\]]/.test(s)?t+=`\\${s}`:t+=s,n++}else/[.+^${}()|]/.test(r)?t+=`\\${r}`:t+=r}return t+="$",ye(t)}function eo(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function to(e){let t=[],n="",r=0,s=!1,i=0;for(;i<e.length;){let o=e[i];if(o==="'"&&!s){s=!0,n+="\0QUOTE_START\0",i++;continue}if(o==="'"&&s){s=!1,n+="\0QUOTE_END\0",i++;continue}if(s){n+=o,i++;continue}if(o==="\\"){n+=o,i+1<e.length?(n+=e[i+1],i+=2):i++;continue}o==="("?(r++,n+=o):o===")"?(r--,n+=o):o==="|"&&r===0?(t.push(n),n=""):n+=o,i++}return t.push(n),t}var cc=5,un=class{fs;cwd;globignorePatterns=[];hasGlobignore=!1;globstar=!1;nullglob=!1;failglob=!1;dotglob=!1;extglob=!1;globskipdots=!0;ops={count:0};maxOps;consumeOperation;constructor(t,n,r,s){this.fs=t,this.cwd=n,typeof s=="boolean"?(this.globstar=s,this.maxOps=1e5):s?(this.globstar=s.globstar??!1,this.nullglob=s.nullglob??!1,this.failglob=s.failglob??!1,this.dotglob=s.dotglob??!1,this.extglob=s.extglob??!1,this.globskipdots=s.globskipdots??!0,this.maxOps=s.maxGlobOperations??1e5,this.consumeOperation=s.consumeOperation):this.maxOps=1e5;let i=r?.get("GLOBIGNORE");i!==void 0&&i!==""&&(this.hasGlobignore=!0,this.globignorePatterns=ac(i))}checkOpsLimit(){if(++this.ops.count>this.maxOps)throw new $(`Glob operation limit exceeded (${this.maxOps})`,"glob_operations");this.consumeOperation?.()}hasNullglob(){return this.nullglob}hasFailglob(){return this.failglob}filterGlobignore(t){return!this.hasGlobignore&&!this.globskipdots?t:t.filter(n=>{let r=n.split("/").pop()||n;if((this.hasGlobignore||this.globskipdots)&&(r==="."||r===".."))return!1;if(this.hasGlobignore){for(let s of this.globignorePatterns)if(this.matchGlobignorePattern(n,s))return!1}return!0})}matchGlobignorePattern(t,n){return lc(n).test(t)}isGlobPattern(t){return!!(t.includes("*")||t.includes("?")||/\[.*\]/.test(t)||this.extglob&&/[@*+?!]\(/.test(t))}async expandArgs(t,n){let r=t.map((o,a)=>(n?.[a]??!1)||!this.isGlobPattern(o)?null:this.expand(o)),s=await Promise.all(r.map(o=>o||Promise.resolve(null))),i=[];for(let o=0;o<t.length;o++){let a=s[o];a===null?i.push(t[o]):a.length>0?i.push(...a):i.push(t[o])}return i}async expand(t){if(this.globstar){let r=t.split("/"),s=0;for(let i of r)if(i==="**"&&(s++,s>cc))throw new $(`Glob pattern has too many ** segments (max ${cc})`,"glob_operations")}let n;if(t.includes("**")&&this.globstar&&this.isGlobstarValid(t))n=await this.expandRecursive(t);else{let r=t.replace(/\*\*+/g,"*");n=await this.expandSimple(r)}return this.filterGlobignore(n)}isGlobstarValid(t){let n=t.split("/");for(let r of n)if(r.includes("**")&&r!=="**")return!1;return!0}hasGlobChars(t){return!!(t.includes("*")||t.includes("?")||/\[.*\]/.test(t)||this.extglob&&/[@*+?!]\(/.test(t))}async expandSimple(t){let n=t.startsWith("/"),r=t.split("/").filter(c=>c!==""),s=-1;for(let c=0;c<r.length;c++)if(this.hasGlobChars(r[c])){s=c;break}if(s===-1)return[t];let i,o;if(s===0)n?(i="/",o="/"):(i=this.cwd,o="");else{let c=r.slice(0,s);n?(i=`/${c.join("/")}`,o=`/${c.join("/")}`):(i=this.fs.resolvePath(this.cwd,c.join("/")),o=c.join("/"))}let a=r.slice(s);return(await this.expandSegments(i,o,a)).sort()}async expandSegments(t,n,r){if(this.checkOpsLimit(),r.length===0)return[n];let[s,...i]=r,o=[];try{if(this.fs.readdirWithFileTypes){this.checkOpsLimit();let a=await this.fs.readdirWithFileTypes(t),l=[],c=[...a],u=this.dotglob||this.hasGlobignore;if(s.startsWith(".")||this.dotglob){let d=a.some(p=>p.name==="."),h=a.some(p=>p.name==="..");d||c.push({name:".",isFile:!1,isDirectory:!0,isSymbolicLink:!1}),h||c.push({name:"..",isFile:!1,isDirectory:!0,isSymbolicLink:!1})}for(let d of c)if(!(d.name.startsWith(".")&&!s.startsWith(".")&&!u)&&this.matchPattern(d.name,s)){let h=t==="/"?`/${d.name}`:`${t}/${d.name}`,p;n===""?p=d.name:n==="/"?p=`/${d.name}`:p=`${n}/${d.name}`,i.length===0?l.push(Promise.resolve([p])):d.isDirectory&&l.push(this.expandSegments(h,p,i))}let f=await Promise.all(l);for(let d of f)o.push(...d)}else{this.checkOpsLimit();let a=await this.fs.readdir(t),l=[],c=[...a],u=this.dotglob||this.hasGlobignore;(s.startsWith(".")||this.dotglob)&&(a.includes(".")||c.push("."),a.includes("..")||c.push(".."));for(let d of c)if(!(d.startsWith(".")&&!s.startsWith(".")&&!u)&&this.matchPattern(d,s)){let h=t==="/"?`/${d}`:`${t}/${d}`,p;n===""?p=d:n==="/"?p=`/${d}`:p=`${n}/${d}`,i.length===0?l.push(Promise.resolve([p])):l.push((async()=>{try{if(this.checkOpsLimit(),(await this.fs.stat(h)).isDirectory)return this.expandSegments(h,p,i)}catch(m){if(m instanceof $)throw m}return[]})())}let f=await Promise.all(l);for(let d of f)o.push(...d)}}catch(a){if(a instanceof $)throw a}return o}async expandRecursive(t){let n=[],r=t.indexOf("**"),s=t.slice(0,r).replace(/\/$/,"")||".",o=t.slice(r+2).replace(/^\//,"");return o.includes("**")&&this.isGlobstarValid(o)?(await this.walkDirectoryMultiGlobstar(s,o,n),[...new Set(n)].sort()):(await this.walkDirectory(s,o,n),n.sort())}async walkDirectoryMultiGlobstar(t,n,r){this.checkOpsLimit();let s=this.fs.resolvePath(this.cwd,t);try{this.checkOpsLimit();let i=this.fs.readdirWithFileTypes?await this.fs.readdirWithFileTypes(s):null;if(i){let o=[];for(let c of i){let u=t==="."?c.name:`${t}/${c.name}`;c.isDirectory&&o.push(u)}let a=t==="."?n:`${t}/${n}`,l=await this.expandRecursive(a);r.push(...l);for(let c=0;c<o.length;c+=100){let u=o.slice(c,c+100);await Promise.all(u.map(f=>this.walkDirectoryMultiGlobstar(f,n,r)))}}else{this.checkOpsLimit();let o=await this.fs.readdir(s),a=[];for(let u of o){let f=t==="."?u:`${t}/${u}`,d=this.fs.resolvePath(this.cwd,f);try{this.checkOpsLimit(),(await this.fs.stat(d)).isDirectory&&a.push(f)}catch(h){if(h instanceof $)throw h}}let l=t==="."?n:`${t}/${n}`,c=await this.expandRecursive(l);r.push(...c);for(let u=0;u<a.length;u+=100){let f=a.slice(u,u+100);await Promise.all(f.map(d=>this.walkDirectoryMultiGlobstar(d,n,r)))}}}catch(i){if(i instanceof $)throw i}}async walkDirectory(t,n,r){this.checkOpsLimit();let s=this.fs.resolvePath(this.cwd,t);try{if(this.fs.readdirWithFileTypes){this.checkOpsLimit();let i=await this.fs.readdirWithFileTypes(s),o=[],a=[];for(let l of i){let c=t==="."?l.name:`${t}/${l.name}`;l.isDirectory?a.push(c):n&&this.matchPattern(l.name,n)&&o.push(c)}r.push(...o);for(let l=0;l<a.length;l+=100){let c=a.slice(l,l+100);await Promise.all(c.map(u=>this.walkDirectory(u,n,r)))}}else{this.checkOpsLimit();let i=await this.fs.readdir(s),o=[];for(let l=0;l<i.length;l+=100){let c=i.slice(l,l+100),u=await Promise.all(c.map(async f=>{let d=t==="."?f:`${t}/${f}`,h=this.fs.resolvePath(this.cwd,d);try{this.checkOpsLimit();let p=await this.fs.stat(h);return{name:f,path:d,isDirectory:p.isDirectory}}catch(p){if(p instanceof $)throw p;return null}}));o.push(...u.filter(f=>f!==null))}for(let l of o)!l.isDirectory&&n&&this.matchPattern(l.name,n)&&r.push(l.path);let a=o.filter(l=>l.isDirectory);for(let l=0;l<a.length;l+=100){let c=a.slice(l,l+100);await Promise.all(c.map(u=>this.walkDirectory(u.path,n,r)))}}}catch(i){if(i instanceof $)throw i}}matchPattern(t,n){return this.patternToRegex(n).test(t)}patternToRegex(t){let n=this.patternToRegexStr(t);return ye(`^${n}$`)}patternToRegexStr(t){let n="",r=!1;for(let s=0;s<t.length;s++){if(t.slice(s,s+13)==="\0QUOTE_START\0"){r=!0,s+=12;continue}if(t.slice(s,s+11)==="\0QUOTE_END\0"){r=!1,s+=10;continue}let i=t[s];if(r){/[.+^${}()|\\*?[\]]/.test(i)?n+=`\\${i}`:n+=i;continue}if(this.extglob&&(i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&s+1<t.length&&t[s+1]==="("){let o=eo(t,s+1);if(o!==-1){let a=t.slice(s+2,o),l=to(a),c=l.map(f=>this.patternToRegexStr(f)),u=c.length>0?c.join("|"):"(?:)";if(i==="@")n+=`(?:${u})`;else if(i==="*")n+=`(?:${u})*`;else if(i==="+")n+=`(?:${u})+`;else if(i==="?")n+=`(?:${u})?`;else if(i==="!")if(o<t.length-1){let d=l.map(p=>this.computePatternLength(p));if(d.every(p=>p!==null)&&d.every(p=>p===d[0])&&d[0]!==null){let p=d[0];if(p===0)n+="(?:.+)";else{let m=[];p>0&&m.push(`.{0,${p-1}}`),m.push(`.{${p+1},}`),m.push(`(?!(?:${u})).{${p}}`),n+=`(?:${m.join("|")})`}}else n+=`(?:(?!(?:${u})).)*?`}else n+=`(?!(?:${u})$).*`;s=o;continue}}if(i==="*")n+=".*";else if(i==="?")n+=".";else if(i==="["){let o=s+1,a="[";o<t.length&&(t[o]==="^"||t[o]==="!")&&(a+="^",o++),o<t.length&&t[o]==="]"&&(a+="\\]",o++);let l=o;for(;l<t.length;){if(t[l]==="\\"&&l+1<t.length){l+=2;continue}if(t[l]==="["&&l+1<t.length&&t[l+1]===":"){let u=t.indexOf(":]",l+2);if(u!==-1){l=u+2;continue}}if(t[l]==="]")break;l++}let c=o;for(;o<t.length&&t[o]!=="]";){if(t[o]==="["&&o+1<t.length&&t[o+1]===":"){let u=t.indexOf(":]",o+2);if(u!==-1){let f=t.slice(o+2,u),d=Ji(f);a+=d,o=u+2;continue}}if(t[o]==="\\"&&o+1<t.length){a+=`\\${t[o+1]}`,o+=2;continue}if(t[o]==="-"){let u=o===c,f=o+1===l;u||f?a+="\\-":a+="-"}else a+=t[o];o++}a+="]",n+=a,s=o}else if(i==="\\"&&s+1<t.length){let o=t[s+1];/[.+^${}()|\\*?[\]]/.test(o)?n+=`\\${o}`:n+=o,s++}else/[.+^${}()|]/.test(i)?n+=`\\${i}`:n+=i}return n}computePatternLength(t){let n=0,r=0,s=!1;for(;r<t.length;){if(t.slice(r,r+13)==="\0QUOTE_START\0"){s=!0,r+=13;continue}if(t.slice(r,r+11)==="\0QUOTE_END\0"){s=!1,r+=11;continue}let i=t[r];if(s){n+=1,r++;continue}if((i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&r+1<t.length&&t[r+1]==="("){let o=eo(t,r+1);if(o!==-1){if(i==="@"){let a=t.slice(r+2,o),c=to(a).map(u=>this.computePatternLength(u));if(c.every(u=>u!==null)&&c.every(u=>u===c[0])){n+=c[0],r=o+1;continue}return null}return null}}if(i==="*")return null;if(i==="?"){n+=1,r++;continue}if(i==="["){let o=t.indexOf("]",r+1);if(o!==-1){n+=1,r=o+1;continue}n+=1,r++;continue}if(i==="\\"){n+=1,r+=2;continue}n+=1,r++}return n}};function no(e){for(let t=0;t<e.length;t++){if(e[t]==="\\"){t++;continue}if(e[t]==="$"){let n=e[t+1];if(n==="{"||n&&/[a-zA-Z_]/.test(n))return!0}}return!1}function jh(e){if(!e.operation)return!1;let t=e.operation,n;if((t.type==="DefaultValue"||t.type==="AssignDefault"||t.type==="UseAlternative"||t.type==="ErrorIfUnset")&&(n=t.word?.parts),!n)return!1;for(let r of n)if(r.type==="DoubleQuoted"||r.type==="SingleQuoted")return!0;return!1}function uc(e){if(!e.operation)return!1;let t=e.operation,n;if((t.type==="DefaultValue"||t.type==="AssignDefault"||t.type==="UseAlternative"||t.type==="ErrorIfUnset")&&(n=t.word?.parts),!n||n.length===0)return!1;for(let r of n)if(r.type!=="DoubleQuoted"&&r.type!=="SingleQuoted")return!1;return!0}function vr(e){let t=!1,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1;for(let l of e){if((l.type==="SingleQuoted"||l.type==="DoubleQuoted")&&(t=!0,l.type==="DoubleQuoted"))for(let c of l.parts)c.type==="ParameterExpansion"&&(c.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/)&&(!c.operation||c.operation.type==="PatternRemoval"||c.operation.type==="PatternReplacement")&&(s=!0),(c.operation?.type==="VarNamePrefix"||c.operation?.type==="ArrayKeys")&&(o=!0),c.operation?.type==="Indirection"&&(a=!0));l.type==="CommandSubstitution"&&(n=!0),l.type==="ParameterExpansion"&&(i=!0,(l.parameter==="@"||l.parameter==="*")&&(r=!0),jh(l)&&(t=!0),(l.operation?.type==="VarNamePrefix"||l.operation?.type==="ArrayKeys")&&(o=!0),l.operation?.type==="Indirection"&&(a=!0)),l.type==="Glob"&&no(l.pattern)&&(i=!0)}return{hasQuoted:t,hasCommandSub:n,hasArrayVar:r,hasArrayAtExpansion:s,hasParamExpansion:i,hasVarNamePrefixExpansion:o,hasIndirection:a}}var qh=`
94
- `;function Tn(e,t){if(e>=t)throw new $(`array element limit exceeded (${t})`,"array_elements")}function ro(e,t,n,r,s){Tn(e.length,s),Tn(t.length,s),e.push(n),t.push(r)}function ke(e){return e.get("IFS")??qh}function De(e){return e.get("IFS")===""}function ms(e){let t=ke(e);if(t==="")return!0;for(let n of t)if(n!==" "&&n!==" "&&n!==`
95
- `)return!1;return!0}function fc(e){let t=!1,n=[];for(let r of e.split(""))r==="-"?t=!0:/[\\^$.*+?()[\]{}|]/.test(r)?n.push(`\\${r}`):r===" "?n.push("\\t"):r===`
96
- `?n.push("\\n"):n.push(r);return t&&n.push("\\-"),n.join("")}function X(e){let t=e.get("IFS");return t===void 0?" ":t[0]||""}var Gh=`
97
- `;function Hh(e){return Gh.includes(e)}function so(e){let t=new Set,n=new Set;for(let r of e)Hh(r)?t.add(r):n.add(r);return{whitespace:t,nonWhitespace:n}}function io(e,t,n,r,s){if(t==="")return e===""?{words:[],wordStarts:[]}:(Tn(0,n),{words:[e],wordStarts:[0]});let{whitespace:i,nonWhitespace:o}=so(t),a=[],l=[],c=0;for(;c<e.length&&i.has(e[c]);)c++;if(c>=e.length)return{words:[],wordStarts:[]};if(o.has(e[c]))for(ro(a,l,"",c,n),c++;c<e.length&&i.has(e[c]);)c++;for(;c<e.length&&!(r!==void 0&&a.length>=r);){let u=c;for(;c<e.length;){let f=e[c];if(!s&&f==="\\"){c++,c<e.length&&c++;continue}if(i.has(f)||o.has(f))break;c++}if(ro(a,l,e.substring(u,c),u,n),c>=e.length)break;for(;c<e.length&&i.has(e[c]);)c++;if(c<e.length&&o.has(e[c])){for(c++;c<e.length&&i.has(e[c]);)c++;for(;c<e.length&&o.has(e[c])&&!(r!==void 0&&a.length>=r);)for(ro(a,l,"",c,n),c++;c<e.length&&i.has(e[c]);)c++}}return{words:a,wordStarts:l}}function ys(e,t,n){if(t==="")return e&&Tn(0,n),{words:e?[e]:[],hadLeadingDelimiter:!1,hadTrailingDelimiter:!1};if(e==="")return{words:[],hadLeadingDelimiter:!1,hadTrailingDelimiter:!1};let{whitespace:r,nonWhitespace:s}=so(t),i=[],o=0,a=!1,l=!1,c=o;for(;o<e.length&&r.has(e[o]);)o++;if(o>c&&(a=!0),o>=e.length)return{words:[],hadLeadingDelimiter:!0,hadTrailingDelimiter:!0};if(s.has(e[o]))for(Tn(i.length,n),i.push(""),o++;o<e.length&&r.has(e[o]);)o++;for(;o<e.length;){let u=o;for(;o<e.length;){let d=e[o];if(r.has(d)||s.has(d))break;o++}if(Tn(i.length,n),i.push(e.substring(u,o)),o>=e.length){l=!1;break}let f=o;for(;o<e.length&&r.has(e[o]);)o++;if(o<e.length&&s.has(e[o])){for(o++;o<e.length&&r.has(e[o]);)o++;for(;o<e.length&&s.has(e[o]);)for(Tn(i.length,n),i.push(""),o++;o<e.length&&r.has(e[o]);)o++}o>=e.length&&o>f&&(l=!0)}return{words:i,hadLeadingDelimiter:a,hadTrailingDelimiter:l}}function de(e,t,n){return ys(e,t,n).words}function Zh(e,t){for(let n of e)if(t.has(n))return!0;return!1}function dc(e,t,n){if(t==="")return e;let{whitespace:r,nonWhitespace:s}=so(t),i=e.length;for(;i>0&&r.has(e[i-1]);){if(!n&&i>=2){let a=0,l=i-2;for(;l>=0&&e[l]==="\\";)a++,l--;if(a%2===1)break}i--}let o=e.substring(0,i);if(o.length>=1&&s.has(o[o.length-1])){if(!n&&o.length>=2){let l=0,c=o.length-2;for(;c>=0&&o[c]==="\\";)l++,c--;if(l%2===1)return o}let a=o.substring(0,o.length-1);if(!Zh(a,s))return a}return o}function ue(e,t){return e.state.namerefs?.has(t)??!1}function Ht(e,t){e.state.namerefs??=new Set,e.state.namerefs.add(t)}function hc(e,t){e.state.namerefs?.delete(t),e.state.boundNamerefs?.delete(t),e.state.invalidNamerefs?.delete(t)}function pc(e,t){e.state.invalidNamerefs??=new Set,e.state.invalidNamerefs.add(t)}function mc(e,t){return e.state.invalidNamerefs?.has(t)??!1}function oo(e,t){e.state.boundNamerefs??=new Set,e.state.boundNamerefs.add(t)}function gs(e,t){let n=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(n){let s=n[1],i=Re(e,s),o=e.state.associativeArrays?.has(s)??!1;return i||o}return Re(e,t)?!0:e.state.env.has(t)}function qe(e,t,n=100){if(!ue(e,t)||mc(e,t))return t;let r=new Set,s=t;for(;n-- >0;){if(r.has(s))return;if(r.add(s),!ue(e,s))return s;let i=e.state.env.get(s);if(i===void 0||i===""||!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(i))return s;s=i}}function _n(e,t){if(ue(e,t))return e.state.env.get(t)}function ws(e,t,n,r=100){if(!ue(e,t)||mc(e,t))return t;let s=new Set,i=t;for(;r-- >0;){if(s.has(i))return;if(s.add(i),!ue(e,i))return i;let o=e.state.env.get(i);if(o===void 0||o==="")return n!==void 0?/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)&&gs(e,n)?i:null:i;if(!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(o))return i;i=o}}function yc(e,t){let n=t.replace(/\$\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g,(r,s)=>e.state.env.get(s)??"");return n=n.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(r,s)=>e.state.env.get(s)??""),n}function Q(e,t){return t==="FUNCNAME"?(e.state.funcNameStack??[]).map((i,o)=>[o,i]):t==="BASH_LINENO"?(e.state.callLineStack??[]).map((i,o)=>[o,String(i)]):t==="BASH_SOURCE"?(e.state.sourceStack??[]).map((i,o)=>[o,i]):e.state.associativeArrays?.has(t)?Ot(e,t).map(i=>[i,le(e,t,i)??""]):ve(e,t).map(s=>[s,le(e,t,s)??""])}function bt(e,t){return t==="FUNCNAME"?(e.state.funcNameStack?.length??0)>0:t==="BASH_LINENO"?(e.state.callLineStack?.length??0)>0:t==="BASH_SOURCE"?(e.state.sourceStack?.length??0)>0:e.state.associativeArrays?.has(t)?Re(e,t):Re(e,t)}async function ae(e,t,n=!0,r=!1){switch(t){case"?":return String(e.state.lastExitCode);case"$":return String(e.state.virtualPid);case"#":return e.state.env.get("#")||"0";case"@":return e.state.env.get("@")||"";case"_":return e.state.lastArg;case"-":{let o="";return o+="h",e.state.options.errexit&&(o+="e"),e.state.options.noglob&&(o+="f"),e.state.options.nounset&&(o+="u"),e.state.options.verbose&&(o+="v"),e.state.options.xtrace&&(o+="x"),o+="B",e.state.options.noclobber&&(o+="C"),o+="s",o}case"*":{let o=Number.parseInt(e.state.env.get("#")||"0",10);if(o===0)return"";let a=[];for(let l=1;l<=o;l++)a.push(e.state.env.get(String(l))||"");return a.join(X(e.state.env))}case"0":return e.state.env.get("0")||"bash";case"PWD":return e.state.env.get("PWD")??"";case"OLDPWD":return e.state.env.get("OLDPWD")??"";case"PPID":return String(e.state.virtualPpid);case"UID":return String(e.state.virtualUid);case"EUID":return String(e.state.virtualUid);case"RANDOM":return String(Math.floor(Math.random()*32768));case"SECONDS":return String(Math.floor((Date.now()-e.state.startTime)/1e3));case"BASH_VERSION":return ol;case"!":return String(e.state.lastBackgroundPid);case"BASHPID":return String(e.state.bashPid);case"LINENO":return String(e.state.currentLine);case"FUNCNAME":{let o=e.state.funcNameStack?.[0];if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Qe("FUNCNAME");return""}case"BASH_LINENO":{let o=e.state.callLineStack?.[0];if(o!==void 0)return String(o);if(n&&e.state.options.nounset)throw new Qe("BASH_LINENO");return""}case"BASH_SOURCE":{let o=e.state.sourceStack?.[0];if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Qe("BASH_SOURCE");return""}}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[\]$/.test(t))throw new nt(`\${${t}}`);let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let o=s[1],a=s[2];if(ue(e,o)){let f=qe(e,o);if(f&&f!==o){if(f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/))return"";o=f}}if(a==="@"||a==="*"){let f=Q(e,o);if(f.length>0)return f.map(([,h])=>h).join(" ");let d=e.state.env.get(o);return d!==void 0?d:""}if(o==="FUNCNAME"){let f=Number.parseInt(a,10);return!Number.isNaN(f)&&f>=0?e.state.funcNameStack?.[f]??"":""}if(o==="BASH_LINENO"){let f=Number.parseInt(a,10);if(!Number.isNaN(f)&&f>=0){let d=e.state.callLineStack?.[f];return d!==void 0?String(d):""}return""}if(o==="BASH_SOURCE"){let f=Number.parseInt(a,10);return!Number.isNaN(f)&&f>=0?e.state.sourceStack?.[f]??"":""}if(e.state.associativeArrays?.has(o)){let f=is(a);f=yc(e,f);let d=le(e,o,f);if(d===void 0&&n&&e.state.options.nounset)throw new Qe(`${o}[${a}]`);return d||""}let c;if(/^-?\d+$/.test(a))c=Number.parseInt(a,10);else try{let f=new Z,d=ie(f,a);c=await J(e,d.expression)}catch{let f=e.state.env.get(a);c=f?Number.parseInt(f,10):0,Number.isNaN(c)&&(c=0)}if(c<0){let f=Q(e,o),d=e.state.currentLine;if(f.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${d}: ${o}: bad array subscript
93
+ ${e.terminator}`}function Xh(e){return`(${pt(e.body)})${At(e.redirections)}`}function Yh(e){return`{ ${pt(e.body)}; }${At(e.redirections)}`}function Jh(e){return`((${pe(e.expression.expression)}))${At(e.redirections)}`}function ep(e){return`[[ ${_n(e.expression)} ]]${At(e.redirections)}`}function tp(e){let t=sc(e.body);return`${e.name}() ${t}${At(e.redirections)}`}function pe(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${pe(e.left)} ${e.operator} ${pe(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${pe(e.operand)}`:`${pe(e.operand)}${e.operator}`;case"ArithTernary":return`${pe(e.condition)} ? ${pe(e.consequent)} : ${pe(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${pe(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${pe(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${pe(e.target)}[${pe(e.subscript)}]`:pe(e.target)} ${e.operator} ${pe(e.value)}`;case"ArithDynamicElement":return`${pe(e.nameExpr)}[${pe(e.subscript)}]`;case"ArithGroup":return`(${pe(e.expression)})`;case"ArithNested":return`$((${pe(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${pe(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(pe).join("");case"ArithDoubleSubscript":return`${e.array}[${pe(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function _n(e){switch(e.type){case"CondBinary":return`${we(e.left)} ${e.operator} ${we(e.right)}`;case"CondUnary":return`${e.operator} ${we(e.operand)}`;case"CondNot":return`! ${_n(e.operand)}`;case"CondAnd":return`${_n(e.left)} && ${_n(e.right)}`;case"CondOr":return`${_n(e.left)} || ${_n(e.right)}`;case"CondGroup":return`( ${_n(e.expression)} )`;case"CondWord":return we(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var np="BASH_ALIAS_";function bs(e,t,n,r){let s=W(t);if(s>n-r.value)throw new C(`alias expansion exceeds string length limit (${n} bytes)`,"string_length");return r.value+=s,e+t}function lc(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function cc(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function uc(e,t){return e.env.get(`${np}${t}`)}function dc(e,t,n){return hc(e,t,n)}function hc(e,t,n,r=!0){if(!t.name||!lc(t.name))return t;let s=cc(t.name);if(!s)return t;let i=uc(e,s);if(!i||n.has(s))return t;try{n.add(s);let o=new Q,a={value:0},l=bs("",i,e.limits.maxStringLength,a),c=i.endsWith(" ");if(!c)for(let h of t.args){let p=we(h);l=bs(l,` ${p}`,e.limits.maxStringLength,a)}let u;try{u=o.parse(l)}catch(h){if(h instanceof Ce)throw h;return t}if(u.statements.length!==1||u.statements[0].pipelines.length!==1||u.statements[0].pipelines[0].commands.length!==1)return fc(e,t,i);let f=u.statements[0].pipelines[0].commands[0];if(f.type!=="SimpleCommand")return fc(e,t,i);let d={...f,assignments:[...t.assignments,...f.assignments],redirections:[...f.redirections,...t.redirections],line:t.line};if(c&&t.args.length>0){d={...d,args:[...d.args,...t.args]};let h=1;for(;r&&d.args.length>0;){let p=d.args[0];if(!lc(p))break;let m=cc(p),E=m?uc(e,m):null;if(!E)break;if(h>=e.limits.maxCallDepth)throw new C(`alias expansion depth limit exceeded (${e.limits.maxCallDepth})`,"recursion");h++;let S={type:"SimpleCommand",name:p,args:d.args.slice(1),assignments:[],redirections:[]},g=hc(e,S,n,!1);if(g===S||(d={...d,name:g.name,args:[...g.args]},!E.endsWith(" ")))break}}return d}catch(o){throw n.delete(s),o}}function fc(e,t,n){let r={value:0},s=bs("",n,e.limits.maxStringLength,r);for(let c of t.args){let u=we(c);s=bs(s,` ${u}`,e.limits.maxStringLength,r)}let i=new Q,o=i.parseWordFromString("eval",!1,!1),a=0;for(let c of s)c==="'"&&a++;if(r.value+2+a*3>e.limits.maxStringLength)throw new C(`alias expansion exceeds string length limit (${e.limits.maxStringLength} bytes)`,"string_length");let l=i.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:o,args:[l],assignments:t.assignments,redirections:t.redirections,line:t.line}}var rp=new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9a-fA-F"]]);function ao(e){return rp.get(e)??""}function pc(e){let t=[],n="",r=0;for(;r<e.length;){let s=e[r];if(s==="["){for(n+=s,r++,r<e.length&&(e[r]==="!"||e[r]==="^")&&(n+=e[r],r++),r<e.length&&e[r]==="]"&&(n+=e[r],r++);r<e.length&&e[r]!=="]";){if(e[r]==="["&&r+1<e.length&&e[r+1]===":"){let i=e.indexOf(":]",r+2);if(i!==-1){n+=e.slice(r,i+2),r=i+2;continue}}if(e[r]==="\\"&&r+1<e.length){n+=e[r]+e[r+1],r+=2;continue}n+=e[r],r++}r<e.length&&e[r]==="]"&&(n+=e[r],r++)}else s===":"?(n!==""&&t.push(n),n="",r++):s==="\\"&&r+1<e.length?(n+=s+e[r+1],r+=2):(n+=s,r++)}return n!==""&&t.push(n),t}function mc(e){let t="^";for(let n=0;n<e.length;n++){let r=e[n];if(r==="*")t+="[^/]*";else if(r==="?")t+="[^/]";else if(r==="["){let s=n+1,i="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(i+="^",s++),s<e.length&&e[s]==="]"&&(i+="\\]",s++);let o=s;for(;o<e.length;){if(e[o]==="\\"&&o+1<e.length){o+=2;continue}if(e[o]==="["&&o+1<e.length&&e[o+1]===":"){let l=e.indexOf(":]",o+2);if(l!==-1){o=l+2;continue}}if(e[o]==="]")break;o++}let a=s;for(;s<e.length&&e[s]!=="]";){if(e[s]==="["&&s+1<e.length&&e[s+1]===":"){let l=e.indexOf(":]",s+2);if(l!==-1){let c=e.slice(s+2,l),u=ao(c);i+=u,s=l+2;continue}}if(e[s]==="\\"&&s+1<e.length){i+=`\\${e[s+1]}`,s+=2;continue}if(e[s]==="-"){let l=s===a,c=s+1===o;l||c?i+="\\-":i+="-"}else i+=e[s];s++}i+="]",t+=i,n=s}else if(r==="\\"&&n+1<e.length){let s=e[n+1];/[.+^${}()|\\*?[\]]/.test(s)?t+=`\\${s}`:t+=s,n++}else/[.+^${}()|]/.test(r)?t+=`\\${r}`:t+=r}return t+="$",ge(t)}function lo(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function co(e){let t=[],n="",r=0,s=!1,i=0;for(;i<e.length;){let o=e[i];if(o==="'"&&!s){s=!0,n+="\0QUOTE_START\0",i++;continue}if(o==="'"&&s){s=!1,n+="\0QUOTE_END\0",i++;continue}if(s){n+=o,i++;continue}if(o==="\\"){n+=o,i+1<e.length?(n+=e[i+1],i+=2):i++;continue}o==="("?(r++,n+=o):o===")"?(r--,n+=o):o==="|"&&r===0?(t.push(n),n=""):n+=o,i++}return t.push(n),t}var yc=5,dn=class{fs;cwd;globignorePatterns=[];hasGlobignore=!1;globstar=!1;nullglob=!1;failglob=!1;dotglob=!1;extglob=!1;globskipdots=!0;ops={count:0};maxOps;consumeOperation;constructor(t,n,r,s){this.fs=t,this.cwd=n,typeof s=="boolean"?(this.globstar=s,this.maxOps=1e5):s?(this.globstar=s.globstar??!1,this.nullglob=s.nullglob??!1,this.failglob=s.failglob??!1,this.dotglob=s.dotglob??!1,this.extglob=s.extglob??!1,this.globskipdots=s.globskipdots??!0,this.maxOps=s.maxGlobOperations??1e5,this.consumeOperation=s.consumeOperation):this.maxOps=1e5;let i=r?.get("GLOBIGNORE");i!==void 0&&i!==""&&(this.hasGlobignore=!0,this.globignorePatterns=pc(i))}checkOpsLimit(){if(++this.ops.count>this.maxOps)throw new C(`Glob operation limit exceeded (${this.maxOps})`,"glob_operations");this.consumeOperation?.()}hasNullglob(){return this.nullglob}hasFailglob(){return this.failglob}filterGlobignore(t){return!this.hasGlobignore&&!this.globskipdots?t:t.filter(n=>{let r=n.split("/").pop()||n;if((this.hasGlobignore||this.globskipdots)&&(r==="."||r===".."))return!1;if(this.hasGlobignore){for(let s of this.globignorePatterns)if(this.matchGlobignorePattern(n,s))return!1}return!0})}matchGlobignorePattern(t,n){return mc(n).test(t)}isGlobPattern(t){return!!(t.includes("*")||t.includes("?")||/\[.*\]/.test(t)||this.extglob&&/[@*+?!]\(/.test(t))}async expandArgs(t,n){let r=t.map((o,a)=>(n?.[a]??!1)||!this.isGlobPattern(o)?null:this.expand(o)),s=await Promise.all(r.map(o=>o||Promise.resolve(null))),i=[];for(let o=0;o<t.length;o++){let a=s[o];a===null?i.push(t[o]):a.length>0?i.push(...a):i.push(t[o])}return i}async expand(t){if(this.globstar){let r=t.split("/"),s=0;for(let i of r)if(i==="**"&&(s++,s>yc))throw new C(`Glob pattern has too many ** segments (max ${yc})`,"glob_operations")}let n;if(t.includes("**")&&this.globstar&&this.isGlobstarValid(t))n=await this.expandRecursive(t);else{let r=t.replace(/\*\*+/g,"*");n=await this.expandSimple(r)}return this.filterGlobignore(n)}isGlobstarValid(t){let n=t.split("/");for(let r of n)if(r.includes("**")&&r!=="**")return!1;return!0}hasGlobChars(t){return!!(t.includes("*")||t.includes("?")||/\[.*\]/.test(t)||this.extglob&&/[@*+?!]\(/.test(t))}async expandSimple(t){let n=t.startsWith("/"),r=t.split("/").filter(c=>c!==""),s=-1;for(let c=0;c<r.length;c++)if(this.hasGlobChars(r[c])){s=c;break}if(s===-1)return[t];let i,o;if(s===0)n?(i="/",o="/"):(i=this.cwd,o="");else{let c=r.slice(0,s);n?(i=`/${c.join("/")}`,o=`/${c.join("/")}`):(i=this.fs.resolvePath(this.cwd,c.join("/")),o=c.join("/"))}let a=r.slice(s);return(await this.expandSegments(i,o,a)).sort()}async expandSegments(t,n,r){if(this.checkOpsLimit(),r.length===0)return[n];let[s,...i]=r,o=[];try{if(this.fs.readdirWithFileTypes){this.checkOpsLimit();let a=await this.fs.readdirWithFileTypes(t),l=[],c=[...a],u=this.dotglob||this.hasGlobignore;if(s.startsWith(".")||this.dotglob){let d=a.some(p=>p.name==="."),h=a.some(p=>p.name==="..");d||c.push({name:".",isFile:!1,isDirectory:!0,isSymbolicLink:!1}),h||c.push({name:"..",isFile:!1,isDirectory:!0,isSymbolicLink:!1})}for(let d of c)if(!(d.name.startsWith(".")&&!s.startsWith(".")&&!u)&&this.matchPattern(d.name,s)){let h=t==="/"?`/${d.name}`:`${t}/${d.name}`,p;n===""?p=d.name:n==="/"?p=`/${d.name}`:p=`${n}/${d.name}`,i.length===0?l.push(Promise.resolve([p])):d.isDirectory&&l.push(this.expandSegments(h,p,i))}let f=await Promise.all(l);for(let d of f)o.push(...d)}else{this.checkOpsLimit();let a=await this.fs.readdir(t),l=[],c=[...a],u=this.dotglob||this.hasGlobignore;(s.startsWith(".")||this.dotglob)&&(a.includes(".")||c.push("."),a.includes("..")||c.push(".."));for(let d of c)if(!(d.startsWith(".")&&!s.startsWith(".")&&!u)&&this.matchPattern(d,s)){let h=t==="/"?`/${d}`:`${t}/${d}`,p;n===""?p=d:n==="/"?p=`/${d}`:p=`${n}/${d}`,i.length===0?l.push(Promise.resolve([p])):l.push((async()=>{try{if(this.checkOpsLimit(),(await this.fs.stat(h)).isDirectory)return this.expandSegments(h,p,i)}catch(m){if(m instanceof C)throw m}return[]})())}let f=await Promise.all(l);for(let d of f)o.push(...d)}}catch(a){if(a instanceof C)throw a}return o}async expandRecursive(t){let n=[],r=t.indexOf("**"),s=t.slice(0,r).replace(/\/$/,"")||".",o=t.slice(r+2).replace(/^\//,"");return o.includes("**")&&this.isGlobstarValid(o)?(await this.walkDirectoryMultiGlobstar(s,o,n),[...new Set(n)].sort()):(await this.walkDirectory(s,o,n),n.sort())}async walkDirectoryMultiGlobstar(t,n,r){this.checkOpsLimit();let s=this.fs.resolvePath(this.cwd,t);try{this.checkOpsLimit();let i=this.fs.readdirWithFileTypes?await this.fs.readdirWithFileTypes(s):null;if(i){let o=[];for(let c of i){let u=t==="."?c.name:`${t}/${c.name}`;c.isDirectory&&o.push(u)}let a=t==="."?n:`${t}/${n}`,l=await this.expandRecursive(a);r.push(...l);for(let c=0;c<o.length;c+=100){let u=o.slice(c,c+100);await Promise.all(u.map(f=>this.walkDirectoryMultiGlobstar(f,n,r)))}}else{this.checkOpsLimit();let o=await this.fs.readdir(s),a=[];for(let u of o){let f=t==="."?u:`${t}/${u}`,d=this.fs.resolvePath(this.cwd,f);try{this.checkOpsLimit(),(await this.fs.stat(d)).isDirectory&&a.push(f)}catch(h){if(h instanceof C)throw h}}let l=t==="."?n:`${t}/${n}`,c=await this.expandRecursive(l);r.push(...c);for(let u=0;u<a.length;u+=100){let f=a.slice(u,u+100);await Promise.all(f.map(d=>this.walkDirectoryMultiGlobstar(d,n,r)))}}}catch(i){if(i instanceof C)throw i}}async walkDirectory(t,n,r){this.checkOpsLimit();let s=this.fs.resolvePath(this.cwd,t);try{if(this.fs.readdirWithFileTypes){this.checkOpsLimit();let i=await this.fs.readdirWithFileTypes(s),o=[],a=[];for(let l of i){let c=t==="."?l.name:`${t}/${l.name}`;l.isDirectory?a.push(c):n&&this.matchPattern(l.name,n)&&o.push(c)}r.push(...o);for(let l=0;l<a.length;l+=100){let c=a.slice(l,l+100);await Promise.all(c.map(u=>this.walkDirectory(u,n,r)))}}else{this.checkOpsLimit();let i=await this.fs.readdir(s),o=[];for(let l=0;l<i.length;l+=100){let c=i.slice(l,l+100),u=await Promise.all(c.map(async f=>{let d=t==="."?f:`${t}/${f}`,h=this.fs.resolvePath(this.cwd,d);try{this.checkOpsLimit();let p=await this.fs.stat(h);return{name:f,path:d,isDirectory:p.isDirectory}}catch(p){if(p instanceof C)throw p;return null}}));o.push(...u.filter(f=>f!==null))}for(let l of o)!l.isDirectory&&n&&this.matchPattern(l.name,n)&&r.push(l.path);let a=o.filter(l=>l.isDirectory);for(let l=0;l<a.length;l+=100){let c=a.slice(l,l+100);await Promise.all(c.map(u=>this.walkDirectory(u.path,n,r)))}}}catch(i){if(i instanceof C)throw i}}matchPattern(t,n){return this.patternToRegex(n).test(t)}patternToRegex(t){let n=this.patternToRegexStr(t);return ge(`^${n}$`)}patternToRegexStr(t){let n="",r=!1;for(let s=0;s<t.length;s++){if(t.slice(s,s+13)==="\0QUOTE_START\0"){r=!0,s+=12;continue}if(t.slice(s,s+11)==="\0QUOTE_END\0"){r=!1,s+=10;continue}let i=t[s];if(r){/[.+^${}()|\\*?[\]]/.test(i)?n+=`\\${i}`:n+=i;continue}if(this.extglob&&(i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&s+1<t.length&&t[s+1]==="("){let o=lo(t,s+1);if(o!==-1){let a=t.slice(s+2,o),l=co(a),c=l.map(f=>this.patternToRegexStr(f)),u=c.length>0?c.join("|"):"(?:)";if(i==="@")n+=`(?:${u})`;else if(i==="*")n+=`(?:${u})*`;else if(i==="+")n+=`(?:${u})+`;else if(i==="?")n+=`(?:${u})?`;else if(i==="!")if(o<t.length-1){let d=l.map(p=>this.computePatternLength(p));if(d.every(p=>p!==null)&&d.every(p=>p===d[0])&&d[0]!==null){let p=d[0];if(p===0)n+="(?:.+)";else{let m=[];p>0&&m.push(`.{0,${p-1}}`),m.push(`.{${p+1},}`),m.push(`(?!(?:${u})).{${p}}`),n+=`(?:${m.join("|")})`}}else n+=`(?:(?!(?:${u})).)*?`}else n+=`(?!(?:${u})$).*`;s=o;continue}}if(i==="*")n+=".*";else if(i==="?")n+=".";else if(i==="["){let o=s+1,a="[";o<t.length&&(t[o]==="^"||t[o]==="!")&&(a+="^",o++),o<t.length&&t[o]==="]"&&(a+="\\]",o++);let l=o;for(;l<t.length;){if(t[l]==="\\"&&l+1<t.length){l+=2;continue}if(t[l]==="["&&l+1<t.length&&t[l+1]===":"){let u=t.indexOf(":]",l+2);if(u!==-1){l=u+2;continue}}if(t[l]==="]")break;l++}let c=o;for(;o<t.length&&t[o]!=="]";){if(t[o]==="["&&o+1<t.length&&t[o+1]===":"){let u=t.indexOf(":]",o+2);if(u!==-1){let f=t.slice(o+2,u),d=ao(f);a+=d,o=u+2;continue}}if(t[o]==="\\"&&o+1<t.length){a+=`\\${t[o+1]}`,o+=2;continue}if(t[o]==="-"){let u=o===c,f=o+1===l;u||f?a+="\\-":a+="-"}else a+=t[o];o++}a+="]",n+=a,s=o}else if(i==="\\"&&s+1<t.length){let o=t[s+1];/[.+^${}()|\\*?[\]]/.test(o)?n+=`\\${o}`:n+=o,s++}else/[.+^${}()|]/.test(i)?n+=`\\${i}`:n+=i}return n}computePatternLength(t){let n=0,r=0,s=!1;for(;r<t.length;){if(t.slice(r,r+13)==="\0QUOTE_START\0"){s=!0,r+=13;continue}if(t.slice(r,r+11)==="\0QUOTE_END\0"){s=!1,r+=11;continue}let i=t[r];if(s){n+=1,r++;continue}if((i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&r+1<t.length&&t[r+1]==="("){let o=lo(t,r+1);if(o!==-1){if(i==="@"){let a=t.slice(r+2,o),c=co(a).map(u=>this.computePatternLength(u));if(c.every(u=>u!==null)&&c.every(u=>u===c[0])){n+=c[0],r=o+1;continue}return null}return null}}if(i==="*")return null;if(i==="?"){n+=1,r++;continue}if(i==="["){let o=t.indexOf("]",r+1);if(o!==-1){n+=1,r=o+1;continue}n+=1,r++;continue}if(i==="\\"){n+=1,r+=2;continue}n+=1,r++}return n}};function uo(e){for(let t=0;t<e.length;t++){if(e[t]==="\\"){t++;continue}if(e[t]==="$"){let n=e[t+1];if(n==="{"||n&&/[a-zA-Z_]/.test(n))return!0}}return!1}function sp(e){if(!e.operation)return!1;let t=e.operation,n;if((t.type==="DefaultValue"||t.type==="AssignDefault"||t.type==="UseAlternative"||t.type==="ErrorIfUnset")&&(n=t.word?.parts),!n)return!1;for(let r of n)if(r.type==="DoubleQuoted"||r.type==="SingleQuoted")return!0;return!1}function gc(e){if(!e.operation)return!1;let t=e.operation,n;if((t.type==="DefaultValue"||t.type==="AssignDefault"||t.type==="UseAlternative"||t.type==="ErrorIfUnset")&&(n=t.word?.parts),!n||n.length===0)return!1;for(let r of n)if(r.type!=="DoubleQuoted"&&r.type!=="SingleQuoted")return!1;return!0}function Nr(e){let t=!1,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1;for(let l of e){if((l.type==="SingleQuoted"||l.type==="DoubleQuoted")&&(t=!0,l.type==="DoubleQuoted"))for(let c of l.parts)c.type==="ParameterExpansion"&&(c.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/)&&(!c.operation||c.operation.type==="PatternRemoval"||c.operation.type==="PatternReplacement")&&(s=!0),(c.operation?.type==="VarNamePrefix"||c.operation?.type==="ArrayKeys")&&(o=!0),c.operation?.type==="Indirection"&&(a=!0));l.type==="CommandSubstitution"&&(n=!0),l.type==="ParameterExpansion"&&(i=!0,(l.parameter==="@"||l.parameter==="*")&&(r=!0),sp(l)&&(t=!0),(l.operation?.type==="VarNamePrefix"||l.operation?.type==="ArrayKeys")&&(o=!0),l.operation?.type==="Indirection"&&(a=!0)),l.type==="Glob"&&uo(l.pattern)&&(i=!0)}return{hasQuoted:t,hasCommandSub:n,hasArrayVar:r,hasArrayAtExpansion:s,hasParamExpansion:i,hasVarNamePrefixExpansion:o,hasIndirection:a}}var ip=`
94
+ `;function Fn(e,t){if(e>=t)throw new C(`array element limit exceeded (${t})`,"array_elements")}function fo(e,t,n,r,s){Fn(e.length,s),Fn(t.length,s),e.push(n),t.push(r)}function Pe(e){return e.get("IFS")??ip}function Ie(e){return e.get("IFS")===""}function Ss(e){let t=Pe(e);if(t==="")return!0;for(let n of t)if(n!==" "&&n!==" "&&n!==`
95
+ `)return!1;return!0}function wc(e){let t=!1,n=[];for(let r of e.split(""))r==="-"?t=!0:/[\\^$.*+?()[\]{}|]/.test(r)?n.push(`\\${r}`):r===" "?n.push("\\t"):r===`
96
+ `?n.push("\\n"):n.push(r);return t&&n.push("\\-"),n.join("")}function Y(e){let t=e.get("IFS");return t===void 0?" ":t[0]||""}var op=`
97
+ `;function ap(e){return op.includes(e)}function ho(e){let t=new Set,n=new Set;for(let r of e)ap(r)?t.add(r):n.add(r);return{whitespace:t,nonWhitespace:n}}function po(e,t,n,r,s){if(t==="")return e===""?{words:[],wordStarts:[]}:(Fn(0,n),{words:[e],wordStarts:[0]});let{whitespace:i,nonWhitespace:o}=ho(t),a=[],l=[],c=0;for(;c<e.length&&i.has(e[c]);)c++;if(c>=e.length)return{words:[],wordStarts:[]};if(o.has(e[c]))for(fo(a,l,"",c,n),c++;c<e.length&&i.has(e[c]);)c++;for(;c<e.length&&!(r!==void 0&&a.length>=r);){let u=c;for(;c<e.length;){let f=e[c];if(!s&&f==="\\"){c++,c<e.length&&c++;continue}if(i.has(f)||o.has(f))break;c++}if(fo(a,l,e.substring(u,c),u,n),c>=e.length)break;for(;c<e.length&&i.has(e[c]);)c++;if(c<e.length&&o.has(e[c])){for(c++;c<e.length&&i.has(e[c]);)c++;for(;c<e.length&&o.has(e[c])&&!(r!==void 0&&a.length>=r);)for(fo(a,l,"",c,n),c++;c<e.length&&i.has(e[c]);)c++}}return{words:a,wordStarts:l}}function As(e,t,n){if(t==="")return e&&Fn(0,n),{words:e?[e]:[],hadLeadingDelimiter:!1,hadTrailingDelimiter:!1};if(e==="")return{words:[],hadLeadingDelimiter:!1,hadTrailingDelimiter:!1};let{whitespace:r,nonWhitespace:s}=ho(t),i=[],o=0,a=!1,l=!1,c=o;for(;o<e.length&&r.has(e[o]);)o++;if(o>c&&(a=!0),o>=e.length)return{words:[],hadLeadingDelimiter:!0,hadTrailingDelimiter:!0};if(s.has(e[o]))for(Fn(i.length,n),i.push(""),o++;o<e.length&&r.has(e[o]);)o++;for(;o<e.length;){let u=o;for(;o<e.length;){let d=e[o];if(r.has(d)||s.has(d))break;o++}if(Fn(i.length,n),i.push(e.substring(u,o)),o>=e.length){l=!1;break}let f=o;for(;o<e.length&&r.has(e[o]);)o++;if(o<e.length&&s.has(e[o])){for(o++;o<e.length&&r.has(e[o]);)o++;for(;o<e.length&&s.has(e[o]);)for(Fn(i.length,n),i.push(""),o++;o<e.length&&r.has(e[o]);)o++}o>=e.length&&o>f&&(l=!0)}return{words:i,hadLeadingDelimiter:a,hadTrailingDelimiter:l}}function he(e,t,n){return As(e,t,n).words}function lp(e,t){for(let n of e)if(t.has(n))return!0;return!1}function Ec(e,t,n){if(t==="")return e;let{whitespace:r,nonWhitespace:s}=ho(t),i=e.length;for(;i>0&&r.has(e[i-1]);){if(!n&&i>=2){let a=0,l=i-2;for(;l>=0&&e[l]==="\\";)a++,l--;if(a%2===1)break}i--}let o=e.substring(0,i);if(o.length>=1&&s.has(o[o.length-1])){if(!n&&o.length>=2){let l=0,c=o.length-2;for(;c>=0&&o[c]==="\\";)l++,c--;if(l%2===1)return o}let a=o.substring(0,o.length-1);if(!lp(a,s))return a}return o}function fe(e,t){return e.state.namerefs?.has(t)??!1}function Qt(e,t){e.state.namerefs??=new Set,e.state.namerefs.add(t)}function bc(e,t){e.state.namerefs?.delete(t),e.state.boundNamerefs?.delete(t),e.state.invalidNamerefs?.delete(t)}function Sc(e,t){e.state.invalidNamerefs??=new Set,e.state.invalidNamerefs.add(t)}function Ac(e,t){return e.state.invalidNamerefs?.has(t)??!1}function mo(e,t){e.state.boundNamerefs??=new Set,e.state.boundNamerefs.add(t)}function vs(e,t){let n=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(n){let s=n[1],i=Oe(e,s),o=e.state.associativeArrays?.has(s)??!1;return i||o}return Oe(e,t)?!0:e.state.env.has(t)}function Ge(e,t,n=100){if(!fe(e,t)||Ac(e,t))return t;let r=new Set,s=t;for(;n-- >0;){if(r.has(s))return;if(r.add(s),!fe(e,s))return s;let i=e.state.env.get(s);if(i===void 0||i===""||!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(i))return s;s=i}}function Mn(e,t){if(fe(e,t))return e.state.env.get(t)}function ks(e,t,n,r=100){if(!fe(e,t)||Ac(e,t))return t;let s=new Set,i=t;for(;r-- >0;){if(s.has(i))return;if(s.add(i),!fe(e,i))return i;let o=e.state.env.get(i);if(o===void 0||o==="")return n!==void 0?/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)&&vs(e,n)?i:null:i;if(!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(o))return i;i=o}}function vc(e,t){let n=t.replace(/\$\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g,(r,s)=>e.state.env.get(s)??"");return n=n.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(r,s)=>e.state.env.get(s)??""),n}function K(e,t){return t==="FUNCNAME"?(e.state.funcNameStack??[]).map((i,o)=>[o,i]):t==="BASH_LINENO"?(e.state.callLineStack??[]).map((i,o)=>[o,String(i)]):t==="BASH_SOURCE"?(e.state.sourceStack??[]).map((i,o)=>[o,i]):e.state.associativeArrays?.has(t)?Tt(e,t).map(i=>[i,ce(e,t,i)??""]):xe(e,t).map(s=>[s,ce(e,t,s)??""])}function vt(e,t){return t==="FUNCNAME"?(e.state.funcNameStack?.length??0)>0:t==="BASH_LINENO"?(e.state.callLineStack?.length??0)>0:t==="BASH_SOURCE"?(e.state.sourceStack?.length??0)>0:e.state.associativeArrays?.has(t)?Oe(e,t):Oe(e,t)}async function le(e,t,n=!0,r=!1){switch(t){case"?":return String(e.state.lastExitCode);case"$":return String(e.state.virtualPid);case"#":return e.state.env.get("#")||"0";case"@":return e.state.env.get("@")||"";case"_":return e.state.lastArg;case"-":{let o="";return o+="h",e.state.options.errexit&&(o+="e"),e.state.options.noglob&&(o+="f"),e.state.options.nounset&&(o+="u"),e.state.options.verbose&&(o+="v"),e.state.options.xtrace&&(o+="x"),o+="B",e.state.options.noclobber&&(o+="C"),o+="s",o}case"*":{let o=Number.parseInt(e.state.env.get("#")||"0",10);if(o===0)return"";let a=[];for(let l=1;l<=o;l++)a.push(e.state.env.get(String(l))||"");return a.join(Y(e.state.env))}case"0":return e.state.env.get("0")||"bash";case"PWD":return e.state.env.get("PWD")??"";case"OLDPWD":return e.state.env.get("OLDPWD")??"";case"PPID":return String(e.state.virtualPpid);case"UID":return String(e.state.virtualUid);case"EUID":return String(e.state.virtualUid);case"RANDOM":return String(Math.floor(Math.random()*32768));case"SECONDS":return String(Math.floor((Date.now()-e.state.startTime)/1e3));case"BASH_VERSION":return fl;case"!":return String(e.state.lastBackgroundPid);case"BASHPID":return String(e.state.bashPid);case"LINENO":return String(e.state.currentLine);case"FUNCNAME":{let o=e.state.funcNameStack?.[0];if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Ke("FUNCNAME");return""}case"BASH_LINENO":{let o=e.state.callLineStack?.[0];if(o!==void 0)return String(o);if(n&&e.state.options.nounset)throw new Ke("BASH_LINENO");return""}case"BASH_SOURCE":{let o=e.state.sourceStack?.[0];if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Ke("BASH_SOURCE");return""}}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[\]$/.test(t))throw new rt(`\${${t}}`);let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let o=s[1],a=s[2];if(fe(e,o)){let f=Ge(e,o);if(f&&f!==o){if(f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/))return"";o=f}}if(a==="@"||a==="*"){let f=K(e,o);if(f.length>0)return f.map(([,h])=>h).join(" ");let d=e.state.env.get(o);return d!==void 0?d:""}if(o==="FUNCNAME"){let f=Number.parseInt(a,10);return!Number.isNaN(f)&&f>=0?e.state.funcNameStack?.[f]??"":""}if(o==="BASH_LINENO"){let f=Number.parseInt(a,10);if(!Number.isNaN(f)&&f>=0){let d=e.state.callLineStack?.[f];return d!==void 0?String(d):""}return""}if(o==="BASH_SOURCE"){let f=Number.parseInt(a,10);return!Number.isNaN(f)&&f>=0?e.state.sourceStack?.[f]??"":""}if(e.state.associativeArrays?.has(o)){let f=fs(a);f=vc(e,f);let d=ce(e,o,f);if(d===void 0&&n&&e.state.options.nounset)throw new Ke(`${o}[${a}]`);return d||""}let c;if(/^-?\d+$/.test(a))c=Number.parseInt(a,10);else try{let f=new Q,d=oe(f,a);c=await ee(e,d.expression)}catch{let f=e.state.env.get(a);c=f?Number.parseInt(f,10):0,Number.isNaN(c)&&(c=0)}if(c<0){let f=K(e,o),d=e.state.currentLine;if(f.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${d}: ${o}: bad array subscript
98
98
  `,"";let p=Math.max(...f.map(([E])=>typeof E=="number"?E:0))+1+c;return p<0?(e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${d}: ${o}: bad array subscript
99
- `,""):le(e,o,p)||""}let u=le(e,o,c);if(u!==void 0)return u;if(c===0){let f=e.state.env.get(o);if(f!==void 0)return f}if(n&&e.state.options.nounset)throw new Qe(`${o}[${c}]`);return""}if(/^[1-9][0-9]*$/.test(t)){let o=e.state.env.get(t);if(o===void 0&&n&&e.state.options.nounset)throw new Qe(t);return o||""}if(ue(e,t)){let o=qe(e,t);if(o===void 0)return"";if(o!==t)return await ae(e,o,n,r);let a=e.state.env.get(t);if((a===void 0||a==="")&&n&&e.state.options.nounset)throw new Qe(t);return a||""}let i=e.state.env.get(t);if(i!==void 0)return e.state.tempEnvBindings?.some(o=>o.has(t))&&(e.state.accessedTempEnvVars=e.state.accessedTempEnvVars||new Set,e.state.accessedTempEnvVars.add(t)),i;if(bt(e,t)){let o=le(e,t,0);if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Qe(t);return""}if(n&&e.state.options.nounset)throw new Qe(t);return""}async function It(e,t){if(new Set(["?","$","#","_","-","0","PPID","UID","EUID","RANDOM","SECONDS","BASH_VERSION","!","BASHPID","LINENO"]).has(t))return!0;if(t==="@"||t==="*")return Number.parseInt(e.state.env.get("#")||"0",10)>0;if(t==="PWD"||t==="OLDPWD")return e.state.env.has(t);let r=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(r){let s=r[1],i=r[2];if(ue(e,s)){let l=qe(e,s);if(l&&l!==s){if(l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/))return!1;s=l}}if(i==="@"||i==="*")return Q(e,s).length>0?!0:e.state.env.has(s);if(e.state.associativeArrays?.has(s)){let l=yc(e,is(i));return on(e,s,l)}let a;if(/^-?\d+$/.test(i))a=Number.parseInt(i,10);else try{let l=new Z,c=ie(l,i);a=await J(e,c.expression)}catch{let l=e.state.env.get(i);a=l?Number.parseInt(l,10):0,Number.isNaN(a)&&(a=0)}if(a<0){let l=Q(e,s);if(l.length===0)return!1;let u=Math.max(...l.map(([f])=>typeof f=="number"?f:0))+1+a;return u<0?!1:on(e,s,u)}return on(e,s,a)}if(ue(e,t)){let s=qe(e,t);return s===void 0||s===t?e.state.env.has(t):It(e,s)}return e.state.env.has(t)?!0:bt(e,t)?on(e,t,0):!1}async function gc(e,t){let n="",r=0;for(;r<t.length;){if(t[r]==="$"){if(t[r+1]==="{"){let s=1,i=r+2;for(;i<t.length&&s>0;)t[i]==="{"?s++:t[i]==="}"&&s--,i++;n+=t.slice(r,i),r=i;continue}if(t[r+1]==="("){let s=1,i=r+2;for(;i<t.length&&s>0;)t[i]==="("?s++:t[i]===")"&&s--,i++;n+=t.slice(r,i),r=i;continue}if(/[a-zA-Z_]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await ae(e,i);n+=o,r=s;continue}if(/[0-9]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[0-9]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await ae(e,i);n+=o,r=s;continue}if(/[*@#?\-!$]/.test(t[r+1]||"")){let s=t[r+1],i=await ae(e,s);n+=i,r+=2;continue}}if(t[r]==='"'){for(n+='"',r++;r<t.length&&t[r]!=='"';)if(t[r]==="$"&&/[a-zA-Z_]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await ae(e,i);n+=o,r=s}else t[r]==="\\"?(n+=t[r],r++,r<t.length&&(n+=t[r],r++)):(n+=t[r],r++);r<t.length&&(n+='"',r++);continue}n+=t[r],r++}return n}async function ao(e,t){let n=t,r=t.startsWith('"')&&t.endsWith('"'),s=t.startsWith("'")&&t.endsWith("'");if((r||s)&&(n=t.slice(1,-1)),s)return n;let i="",o=0;for(;o<n.length;)if(n[o]==="$")if(n[o+1]==="("){let a=1,l=o+2;for(;l<n.length&&a>0;)n[l]==="("&&n[l-1]==="$"||n[l]==="("?a++:n[l]===")"&&a--,l++;let c=n.slice(o+2,l-1);if(e.execFn){let u=await e.execFn(c,{signal:e.state.signal});i+=u.stdout.replace(/\n+$/,""),u.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+u.stderr)}o=l}else if(n[o+1]==="{"){let a=1,l=o+2;for(;l<n.length&&a>0;)n[l]==="{"?a++:n[l]==="}"&&a--,l++;let c=n.slice(o+2,l-1),u=await ae(e,c);i+=u,o=l}else if(/[a-zA-Z_]/.test(n[o+1]||"")){let a=o+1;for(;a<n.length&&/[a-zA-Z0-9_]/.test(n[a]);)a++;let l=n.slice(o+1,a),c=await ae(e,l);i+=c,o=a}else i+=n[o],o++;else if(n[o]==="`"){let a=o+1;for(;a<n.length&&n[a]!=="`";)a++;let l=n.slice(o+1,a);if(e.execFn){let c=await e.execFn(l,{signal:e.state.signal});i+=c.stdout.replace(/\n+$/,""),c.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+c.stderr)}o=a+1}else i+=n[o],o++;return i}var kr=1e4,lo={maxResults:kr,maxStringBytes:10*1024*1024};function Es(e,t,n,r){if(e.length>=n.maxResults)return!1;let s=B(t);if(s>n.maxStringBytes-r.value)throw new $(`brace expansion string limit exceeded (${n.maxStringBytes} bytes)`,"string_length");return e.push(t),r.value+=s,!0}function Qh(e,t,n,r,s,i=lo){let o=n??1;o===0&&(o=1);let a=Math.abs(o),l=[],c=0;if(r?.match(/^-?0\d/)&&(c=Math.max(c,r.replace(/^-/,"").length)),s?.match(/^-?0\d/)&&(c=Math.max(c,s.replace(/^-/,"").length)),c>i.maxStringBytes)throw new $(`brace expansion padding limit exceeded (${i.maxStringBytes} bytes)`,"string_length");let u={value:0},f=d=>{if(c>0){let h=d<0,p=String(Math.abs(d)).padStart(c,"0");return h?`-${p}`:p}return String(d)};if(e<=t)for(let d=e,h=0;d<=t&&h<kr&&Es(l,f(d),i,u);d+=a,h++);else for(let d=e,h=0;d>=t&&h<kr&&Es(l,f(d),i,u);d-=a,h++);return l}function Kh(e,t,n,r=lo){let s=n??1;s===0&&(s=1);let i=e.charCodeAt(0),o=t.charCodeAt(0),a=Math.abs(s),l=e>="A"&&e<="Z",c=e>="a"&&e<="z",u=t>="A"&&t<="Z",f=t>="a"&&t<="z";if(l&&f||c&&u){let p=n!==void 0?`..${n}`:"";throw new jr(`{${e}..${t}${p}}: invalid sequence`)}let d=[],h={value:0};if(i<=o)for(let p=i,m=0;p<=o&&m<kr&&Es(d,String.fromCharCode(p),r,h);p+=a,m++);else for(let p=i,m=0;p>=o&&m<kr&&Es(d,String.fromCharCode(p),r,h);p-=a,m++);return d}function co(e,t,n,r,s,i=lo){let o=n!==void 0?`..${n}`:"";return typeof e=="number"&&typeof t=="number"?{expanded:Qh(e,t,n,r,s,i),literal:`{${e}..${t}${o}}`}:typeof e=="string"&&typeof t=="string"?{expanded:Kh(e,t,n,i),literal:`{${e}..${t}${o}}`}:{expanded:null,literal:`{${e}..${t}${o}}`}}function wc(e){if(e.statements.length!==1)return null;let t=e.statements[0];if(t.operators.length!==0||t.pipelines.length!==1)return null;let n=t.pipelines[0];if(n.negated||n.commands.length!==1)return null;let r=n.commands[0];if(r.type!=="SimpleCommand")return null;let s=r;if(s.name!==null||s.args.length!==0||s.assignments.length!==0||s.redirections.length!==1)return null;let i=s.redirections[0];return i.operator!=="<"||i.target.type!=="Word"?null:{target:i.target}}function Tt(e,t){return!!(/[*?[]/.test(e)||t&&/[@*+?!]\(/.test(e))}function uo(e){let t="",n=0;for(;n<e.length;)e[n]==="\\"&&n+1<e.length?(t+=e[n+1],n+=2):(t+=e[n],n++);return t}function it(e){return e.replace(/([*?[\]\\()|])/g,"\\$1")}function Qn(e){return e.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&")}function ne(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ee(e,t,n=!1){let r="",s=0;for(;s<e.length;){let i=e[s];if(n&&(i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&s+1<e.length&&e[s+1]==="("){let o=Xh(e,s+1);if(o!==-1){let a=e.slice(s+2,o),c=Yh(a).map(f=>ee(f,t,n)),u=c.length>0?c.join("|"):"(?:)";i==="@"?r+=`(?:${u})`:i==="*"?r+=`(?:${u})*`:i==="+"?r+=`(?:${u})+`:i==="?"?r+=`(?:${u})?`:i==="!"&&(r+=`(?!(?:${u})$).*`),s=o+1;continue}}if(i==="\\")if(s+1<e.length){let o=e[s+1];/[\\^$.|+(){}[\]*?]/.test(o)?r+=`\\${o}`:r+=o,s+=2}else r+="\\\\",s++;else if(i==="*")r+=t?".*":".*?",s++;else if(i==="?")r+=".",s++;else if(i==="["){let o=Jh(e,s);if(o===-1)r+="\\[",s++;else{let a=e.slice(s+1,o);r+=ep(a),s=o+1}}else/[\^$.|+(){}]/.test(i)?(r+=`\\${i}`,s++):(r+=i,s++)}return r}function Xh(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function Yh(e){let t=[],n="",r=0,s=0;for(;s<e.length;){let i=e[s];if(i==="\\"){n+=i,s+1<e.length?(n+=e[s+1],s+=2):s++;continue}i==="("?(r++,n+=i):i===")"?(r--,n+=i):i==="|"&&r===0?(t.push(n),n=""):n+=i,s++}return t.push(n),t}function Jh(e,t){let n=t+1;for(n<e.length&&e[n]==="^"&&n++,n<e.length&&e[n]==="]"&&n++;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==="]")return n;if(e[n]==="'"){let r=e.indexOf("'",n+1);if(r!==-1){n=r+1;continue}}if(e[n]==="["&&n+1<e.length&&e[n+1]===":"){let r=e.indexOf(":]",n+2);if(r!==-1){n=r+2;continue}}n++}return-1}function ep(e){let t="[",n=0;for((e[0]==="^"||e[0]==="!")&&(t+="^",n++);n<e.length;){if(e[n]==="'"){let s=e.indexOf("'",n+1);if(s!==-1){let i=e.slice(n+1,s);for(let o of i)o==="\\"?t+="\\\\":o==="]"?t+="\\]":o==="^"&&t==="["?t+="\\^":t+=o;n=s+1;continue}}if(e[n]==="["&&n+1<e.length&&e[n+1]===":"){let s=e.indexOf(":]",n+2);if(s!==-1){let i=e.slice(n+2,s);t+=np(i),n=s+2;continue}}let r=e[n];r==="\\"?n+1<e.length?(t+=`\\${e[n+1]}`,n+=2):(t+="\\\\",n++):r==="-"&&n>0&&n<e.length-1?(t+="-",n++):r==="^"&&n===0?(t+="^",n++):(r==="]"&&n===0?t+="\\]":t+=r,n++)}return t+="]",t}var tp=new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]);function np(e){return tp.get(e)??""}function St(e,t,n,r,s){if(r==="prefix")return e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal"),ye(`^${n}`,"s").replace(t,"");let i=ye(`${n}$`,"s");if(s)return e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal"),i.replace(t,"");e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal");let o=ye(`^(?:.*)(${n})$`,"s").exec(t);if(!o)return t;let a=o[1]??"";return t.slice(0,t.length-a.length)}function Kn(e,t){let n=new Set;for(let r of e.state.env.keys())r.startsWith(t)&&n.add(r);for(let r of e.state.arrays?.keys()??[])r.startsWith(t)&&n.add(r);return[...n].sort()}function bs(e,t,n,r,s){let i=new Un(e.limits.maxStringLength,"pattern replacement",()=>new $(`pattern replacement: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length"));n.lastIndex=0;let o=0,a=n.exec(t);for(;a!==null&&(e.executionScope.consumeLimited("pattern_operations",1,e.limits.maxGlobOperations,"pattern replacement"),!(s&&a[0].length===0&&a.index===t.length||(i.append(t.slice(o,a.index)),i.append(r),o=a.index+a[0].length,!s)));)a[0].length===0&&(o++,n.lastIndex<=a.index&&(n.lastIndex=a.index+1)),a=n.exec(t);return i.append(t.slice(o)),n.lastIndex=0,i.build()}function Ec(e){let t=[],n=0;return{append(r){let s=B(r);if(s>e-n)throw new $(`prompt expansion exceeds string length limit (${e} bytes)`,"string_length");r&&t.push(r),n+=s},build:()=>t.join("")}}function rp(e,t,n){let r=(o,a=2)=>String(o).padStart(a,"0");if(e===""){let o=r(t.getHours()),a=r(t.getMinutes()),l=r(t.getSeconds());return`${o}:${a}:${l}`}let s=Ec(n),i=0;for(;i<e.length;)if(e[i]==="%"){if(i+1>=e.length){s.append("%"),i++;continue}let o=e[i+1];switch(o){case"H":s.append(r(t.getHours()));break;case"M":s.append(r(t.getMinutes()));break;case"S":s.append(r(t.getSeconds()));break;case"d":s.append(r(t.getDate()));break;case"m":s.append(r(t.getMonth()+1));break;case"Y":s.append(String(t.getFullYear()));break;case"y":s.append(r(t.getFullYear()%100));break;case"I":{let a=t.getHours()%12;a===0&&(a=12),s.append(r(a));break}case"p":s.append(t.getHours()<12?"AM":"PM");break;case"P":s.append(t.getHours()<12?"am":"pm");break;case"%":s.append("%");break;case"a":{let a=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];s.append(a[t.getDay()]);break}case"b":{let a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];s.append(a[t.getMonth()]);break}default:s.append(`%${o}`)}i+=2}else s.append(e[i]),i++;return s.build()}function Pr(e,t){let n=Ec(e.limits.maxStringLength),r=0,s=e.state.env.get("USER")||e.state.env.get("LOGNAME")||"user",i=e.state.env.get("HOSTNAME")||"localhost",o=i.split(".")[0],a=e.state.env.get("PWD")||"/",l=e.state.env.get("HOME")||"/",c=a.startsWith(l)?`~${a.slice(l.length)}`:a,u=a.split("/").pop()||a,f=new Date,d=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],p=e.state.env.get("__COMMAND_NUMBER")||"1";for(;r<t.length;){let m=t[r];if(m==="\\"){if(r+1>=t.length){n.append("\\"),r++;continue}let E=t[r+1];if(E>="0"&&E<="7"){let b="",g=r+1;for(;g<t.length&&g<r+4&&t[g]>="0"&&t[g]<="7";)b+=t[g],g++;let y=Number.parseInt(b,8)%256;n.append(String.fromCharCode(y)),r=g;continue}switch(E){case"\\":n.append("\\"),r+=2;break;case"a":n.append("\x07"),r+=2;break;case"e":n.append("\x1B"),r+=2;break;case"n":n.append(`
100
- `),r+=2;break;case"r":n.append("\r"),r+=2;break;case"$":n.append("$"),r+=2;break;case"[":case"]":r+=2;break;case"u":n.append(s),r+=2;break;case"h":n.append(o),r+=2;break;case"H":n.append(i),r+=2;break;case"w":n.append(c),r+=2;break;case"W":n.append(u),r+=2;break;case"d":{let b=String(f.getDate()).padStart(2," ");n.append(`${d[f.getDay()]} ${h[f.getMonth()]} ${b}`),r+=2;break}case"t":{let b=String(f.getHours()).padStart(2,"0"),g=String(f.getMinutes()).padStart(2,"0"),y=String(f.getSeconds()).padStart(2,"0");n.append(`${b}:${g}:${y}`),r+=2;break}case"T":{let b=f.getHours()%12;b===0&&(b=12);let g=String(b).padStart(2,"0"),y=String(f.getMinutes()).padStart(2,"0"),S=String(f.getSeconds()).padStart(2,"0");n.append(`${g}:${y}:${S}`),r+=2;break}case"@":{let b=f.getHours()%12;b===0&&(b=12);let g=String(b).padStart(2,"0"),y=String(f.getMinutes()).padStart(2,"0"),S=f.getHours()<12?"AM":"PM";n.append(`${g}:${y} ${S}`),r+=2;break}case"A":{let b=String(f.getHours()).padStart(2,"0"),g=String(f.getMinutes()).padStart(2,"0");n.append(`${b}:${g}`),r+=2;break}case"D":if(r+2<t.length&&t[r+2]==="{"){let b=t.indexOf("}",r+3);if(b!==-1){let g=t.slice(r+3,b);n.append(rp(g,f,e.limits.maxStringLength)),r=b+1}else n.append("\\D"),r+=2}else n.append("\\D"),r+=2;break;case"s":n.append("bash"),r+=2;break;case"v":n.append("5.0"),r+=2;break;case"V":n.append("5.0.0"),r+=2;break;case"j":n.append("0"),r+=2;break;case"l":n.append("tty"),r+=2;break;case"#":n.append(p),r+=2;break;case"!":n.append(p),r+=2;break;case"x":n.append("\\x"),r+=2;break;default:n.append(`\\${E}`),r+=2}}else n.append(m),r++}return n.build()}function fn(e){if(e==="")return"''";if(/[\n\r\t\x00-\x1f\x7f']/.test(e)){let n="$'";for(let r of e)switch(r){case"'":n+="\\'";break;case"\\":n+="\\\\";break;case`
101
- `:n+="\\n";break;case"\r":n+="\\r";break;case" ":n+="\\t";break;default:{let s=r.charCodeAt(0);s<32||s===127?n+=`\\${s.toString(8).padStart(3,"0")}`:n+=r}}return`${n}'`}return`'${e}'`}function Je(e,t){e.state.readonlyVars=e.state.readonlyVars||new Set,e.state.readonlyVars.add(t)}function Ge(e,t){return e.state.readonlyVars?.has(t)??!1}function fe(e,t,n="bash"){if(Ge(e,t)){let r=`${n}: ${t}: readonly variable
102
- `;throw new q(1,"",r)}return null}function At(e,t){let n=e.state.exportedVars?.has(t)??!1;if(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(t),e.state.localScopes.length>0&&e.state.localScopes[e.state.localScopes.length-1].has(t)&&!n){for(e.state.localExportedVars||(e.state.localExportedVars=[]);e.state.localExportedVars.length<e.state.localScopes.length;)e.state.localExportedVars.push(new Set);e.state.localExportedVars[e.state.localExportedVars.length-1].add(t)}}function Ss(e,t){e.state.exportedVars?.delete(t)}function dn(e,t){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t))return"";let n="",r=Pe(e,t)?.kind==="indexed",s=e.state.associativeArrays?.has(t)??!1;return r&&!s&&(n+="a"),s&&(n+="A"),e.state.integerVars?.has(t)&&(n+="i"),ue(e,t)&&(n+="n"),Ge(e,t)&&(n+="r"),e.state.exportedVars?.has(t)&&(n+="x"),n}async function bc(e,t,n,r){return e.coverage?.hit("bash:expansion:default_value"),(n.isUnset||t.checkEmpty&&n.isEmpty)&&t.word?r(e,t.word.parts,n.inDoubleQuotes):n.effectiveValue}async function Sc(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:assign_default"),(r.isUnset||n.checkEmpty&&r.isEmpty)&&n.word){let o=await s(e,n.word.parts,r.inDoubleQuotes),a=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(a){let[,l,c]=a,u;if(/^\d+$/.test(c))u=Number.parseInt(c,10);else{try{let f=new Z,d=ie(f,c);u=await J(e,d.expression)}catch{let f=e.state.env.get(c);u=f?Number.parseInt(f,10):0}Number.isNaN(u)&&(u=0)}G(e,l,u,o)}else e.state.env.set(t,o);return o}return r.effectiveValue}async function Ac(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:error_if_unset"),r.isUnset||n.checkEmpty&&r.isEmpty){let o=n.word?await s(e,n.word.parts,r.inDoubleQuotes):`${t}: parameter null or not set`;throw new q(1,"",`bash: ${o}
103
- `)}return r.effectiveValue}async function vc(e,t,n,r){return e.coverage?.hit("bash:expansion:use_alternative"),!(n.isUnset||t.checkEmpty&&n.isEmpty)&&t.word?r(e,t.word.parts,n.inDoubleQuotes):""}async function kc(e,t,n,r,s){e.coverage?.hit("bash:expansion:pattern_removal");let i="",o=e.state.shoptOptions.extglob;if(n.pattern)for(let a of n.pattern.parts)if(a.type==="Glob")i+=ee(a.pattern,n.greedy,o);else if(a.type==="Literal")i+=ee(a.value,n.greedy,o);else if(a.type==="SingleQuoted"||a.type==="Escaped")i+=ne(a.value);else if(a.type==="DoubleQuoted"){let l=await r(e,a.parts);i+=ne(l)}else if(a.type==="ParameterExpansion"){let l=await s(e,a);i+=ee(l,n.greedy,o)}else{let l=await s(e,a);i+=ne(l)}return St(e,t,i,n.side,n.greedy)}async function Pc(e,t,n,r,s){e.coverage?.hit("bash:expansion:pattern_replacement");let i="",o=e.state.shoptOptions.extglob;if(n.pattern)for(let c of n.pattern.parts)if(c.type==="Glob")i+=ee(c.pattern,!0,o);else if(c.type==="Literal")i+=ee(c.value,!0,o);else if(c.type==="SingleQuoted"||c.type==="Escaped")i+=ne(c.value);else if(c.type==="DoubleQuoted"){let u=await r(e,c.parts);i+=ne(u)}else if(c.type==="ParameterExpansion"){let u=await s(e,c);i+=ee(u,!0,o)}else{let u=await s(e,c);i+=ne(u)}let a=n.replacement?await r(e,n.replacement.parts):"";if(n.anchor==="start"?i=`^${i}`:n.anchor==="end"&&(i=`${i}$`),i==="")return t;let l=n.all?"gs":"s";try{let c=ye(i,l);return bs(e,t,c,a,n.all)}catch(c){if(c instanceof $)throw c;return t}}function xc(e,t,n){e.coverage?.hit("bash:expansion:length");let r=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(r){let s=r[1],i=Q(e,s);return i.length>0?String(i.length):e.state.env.get(s)!==void 0?"1":"0"}if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t)&&bt(e,t)){if(t==="FUNCNAME"){let i=e.state.funcNameStack?.[0]||"";return String([...i].length)}if(t==="BASH_LINENO"){let i=e.state.callLineStack?.[0];return String(i!==void 0?[...String(i)].length:0)}let s=le(e,t,0)||"";return String([...s].length)}return String([...n].length)}async function $c(e,t,n,r){e.coverage?.hit("bash:expansion:substring");let s=await J(e,r.offset.expression),i=r.length?await J(e,r.length.expression):void 0;if(t==="@"||t==="*"){let c=Number.parseInt(e.state.env.get("#")||"0",10),u=[];for(let p=1;p<=c;p++)u.push(e.state.env.get(String(p))||"");let f=e.state.env.get("0")||"bash",d,h;if(s<=0)if(d=[f,...u],s<0){if(h=d.length+s,h<0)return""}else h=0;else d=u,h=s-1;if(h<0||h>=d.length)return"";if(i!==void 0){let p=i<0?d.length+i:h+i;return d.slice(h,Math.max(h,p)).join(" ")}return d.slice(h).join(" ")}let o=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(o){let c=o[1];if(e.state.associativeArrays?.has(c))throw new q(1,"",`bash: \${${c}[@]: 0: 3}: bad substitution
104
- `);let u=Q(e,c),f=0;if(s<0){if(u.length>0){let d=u[u.length-1][0],p=(typeof d=="number"?d:0)+1+s;if(p<0||(f=u.findIndex(([m])=>typeof m=="number"&&m>=p),f<0))return""}}else if(f=u.findIndex(([d])=>typeof d=="number"&&d>=s),f<0)return"";if(i!==void 0){if(i<0)throw new ce(`${o[1]}[@]: substring expression < 0`);return u.slice(f,f+i).map(([,d])=>d).join(" ")}return u.slice(f).map(([,d])=>d).join(" ")}let a=[...n],l=s;if(l<0&&(l=Math.max(0,a.length+l)),i!==void 0){if(i<0){let c=a.length+i;return a.slice(l,Math.max(l,c)).join("")}return a.slice(l,l+i).join("")}return a.slice(l).join("")}async function Cc(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:case_modification"),n.pattern){let i=e.state.shoptOptions.extglob,o="";for(let f of n.pattern.parts)if(f.type==="Glob")o+=ee(f.pattern,!0,i);else if(f.type==="Literal")o+=ee(f.value,!0,i);else if(f.type==="SingleQuoted"||f.type==="Escaped")o+=ne(f.value);else if(f.type==="DoubleQuoted"){let d=await r(e,f.parts);o+=ne(d)}else if(f.type==="ParameterExpansion"){let d=await s(e,f);o+=ee(d,!0,i)}let a=ye(`^(?:${o})$`),l=n.direction==="upper"?f=>f.toUpperCase():f=>f.toLowerCase(),c="",u=!1;for(let f of t)!n.all&&u?c+=f:a.test(f)?(c+=l(f),u=!0):c+=f;return c}return n.direction==="upper"?n.all?t.toUpperCase():t.charAt(0).toUpperCase()+t.slice(1):n.all?t.toLowerCase():t.charAt(0).toLowerCase()+t.slice(1)}function Nc(e,t,n,r,s){e.coverage?.hit("bash:expansion:transform");let i=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(i&&s.operator==="Q")return Q(e,i[1]).map(([,c])=>fn(c)).join(" ");if(i&&s.operator==="a")return dn(e,i[1]);let o=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[.+\]$/);if(o&&s.operator==="a")return dn(e,o[1]);switch(s.operator){case"Q":return r?"":fn(n);case"P":return Pr(e,n);case"a":return dn(e,t);case"A":return r?"":`${t}=${fn(n)}`;case"E":return n.replace(/\\([\\abefnrtv'"?])/g,(a,l)=>{switch(l){case"\\":return"\\";case"a":return"\x07";case"b":return"\b";case"e":return"\x1B";case"f":return"\f";case"n":return`
105
- `;case"r":return"\r";case"t":return" ";case"v":return"\v";case"'":return"'";case'"':return'"';case"?":return"?";default:return l}});case"K":case"k":return r?"":fn(n);case"u":return n.charAt(0).toUpperCase()+n.slice(1);case"U":return n.toUpperCase();case"L":return n.toLowerCase();default:return n}}async function Rc(e,t,n,r,s,i,o=!1){if(e.coverage?.hit("bash:expansion:indirection"),ue(e,t))return _n(e,t)||"";let a=/^[a-zA-Z_][a-zA-Z0-9_]*\[([@*])\]$/.test(t);if(r){if(s.innerOp?.type==="UseAlternative")return"";throw new nt(`\${!${t}}`)}let l=n;if(a&&(l===""||l.includes(" ")))throw new nt(`\${!${t}}`);let c=l.match(/^[a-zA-Z_][a-zA-Z0-9_]*\[(.+)\]$/);if(c&&c[1].includes("~"))throw new nt(`\${!${t}}`);if(s.innerOp){let u={type:"ParameterExpansion",parameter:l,operation:s.innerOp};return i(e,u,o)}return await ae(e,l)}function Oc(e,t){e.coverage?.hit("bash:expansion:array_keys");let r=Q(e,t.array).map(([s])=>String(s));return t.star?r.join(X(e.state.env)):r.join(" ")}function Dc(e,t){e.coverage?.hit("bash:expansion:var_name_prefix");let n=Kn(e,t.prefix);return t.star?n.join(X(e.state.env)):n.join(" ")}function Ic(e,t,n,r){let s=Number.parseInt(e.state.env.get("#")||"0",10),i=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(t==="*")return{isEmpty:s===0,effectiveValue:n};if(t==="@")return{isEmpty:s===0||s===1&&e.state.env.get("1")==="",effectiveValue:n};if(i){let[,o,a]=i,l=Q(e,o);if(l.length===0)return{isEmpty:!0,effectiveValue:""};if(a==="*"){let c=X(e.state.env),u=l.map(([,f])=>f).join(c);return{isEmpty:r?u==="":!1,effectiveValue:u}}return{isEmpty:l.length===1&&l.every(([,c])=>c===""),effectiveValue:l.map(([,c])=>c).join(" ")}}return{isEmpty:n==="",effectiveValue:n}}function Tc(e){let t=0;for(;t<e.length;){let n=e[t];if(n==="\\"&&t+1<e.length){t+=2;continue}if(n==="'"){let r=e.indexOf("'",t+1);if(r!==-1){t=r+1;continue}}if(n==="$"&&t+1<e.length&&e[t+1]==="("||n==="`")return!0;t++}return!1}function _c(e,t){let n=1,r=t,s=!1,i=!1;for(;r<e.length&&n>0;){let o=e[r];if(o==="\\"&&!s&&r+1<e.length){r+=2;continue}if(o==="'"&&!i){s=!s,r++;continue}if(o==='"'&&!s){i=!i,r++;continue}if(!s&&!i){if(o==="(")n++;else if(o===")"&&(n--,n===0))return r}r++}return-1}async function As(e,t){let n=new Z,r;try{r=n.parse(t)}catch{return""}let s=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let i=new Map(e.state.env),o=ft(e.state.arrays),a=e.state.cwd,l=e.state.suppressVerbose;e.state.suppressVerbose=!0;try{let c=await e.executeScript(r),u=c.exitCode;return e.state.env=i,e.state.arrays=o,e.state.cwd=a,e.state.suppressVerbose=l,e.state.lastExitCode=u,e.state.env.set("?",String(u)),c.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+c.stderr),e.state.bashPid=s,c.stdout.replace(/\n+$/,"")}catch(c){return e.state.env=i,e.state.arrays=o,e.state.cwd=a,e.state.bashPid=s,e.state.suppressVerbose=l,Hr(c),c instanceof q?(e.state.lastExitCode=c.exitCode,e.state.env.set("?",String(c.exitCode)),c.stdout?.replace(/\n+$/,"")??""):""}}function fo(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="'"){let i=t.indexOf("'",r+1);if(i!==-1){let o=t.slice(r+1,i);n+=it(o),r=i+1;continue}}if(s==='"'){let i=-1,o=r+1;for(;o<t.length;){if(t[o]==="\\"){o+=2;continue}if(t[o]==='"'){i=o;break}o++}if(i!==-1){let a=t.slice(r+1,i),l=sp(e,a);n+=it(l),r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}if(s==="\\"&&r+1<t.length){n+=s+t[r+1],r+=2;continue}n+=s,r++}return n}function sp(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="\\"&&r+1<t.length){let i=t[r+1];if(i==="$"||i==="`"||i==="\\"||i==='"'){n+=i,r+=2;continue}n+=s,r++;continue}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}n+=s,r++}return n}async function Lc(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="'"){let i=t.indexOf("'",r+1);if(i!==-1){let o=t.slice(r+1,i);n+=it(o),r=i+1;continue}}if(s==='"'){let i=-1,o=r+1;for(;o<t.length;){if(t[o]==="\\"){o+=2;continue}if(t[o]==='"'){i=o;break}o++}if(i!==-1){let a=t.slice(r+1,i),l=await ip(e,a);n+=it(l),r=i+1;continue}}if(s==="$"&&r+1<t.length&&t[r+1]==="("){let i=_c(t,r+2);if(i!==-1){let o=t.slice(r+2,i),a=await As(e,o);n+=a,r=i+1;continue}}if(s==="`"){let i=t.indexOf("`",r+1);if(i!==-1){let o=t.slice(r+1,i),a=await As(e,o);n+=a,r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}if(s==="\\"&&r+1<t.length){n+=s+t[r+1],r+=2;continue}n+=s,r++}return n}async function ip(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="\\"&&r+1<t.length){let i=t[r+1];if(i==="$"||i==="`"||i==="\\"||i==='"'){n+=i,r+=2;continue}n+=s,r++;continue}if(s==="$"&&r+1<t.length&&t[r+1]==="("){let i=_c(t,r+2);if(i!==-1){let o=t.slice(r+2,i),a=await As(e,o);n+=a,r=i+1;continue}}if(s==="`"){let i=t.indexOf("`",r+1);if(i!==-1){let o=t.slice(r+1,i),a=await As(e,o);n+=a,r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}n+=s,r++}return n}function ho(e,t){if(!t.startsWith("~"))return t;e.coverage?.hit("bash:expansion:tilde");let n=e.state.env.get("HOME")!==void 0?e.state.env.get("HOME"):"/home/user";if(t==="~"||t.startsWith("~/"))return n+t.slice(1);let r=1;for(;r<t.length&&/[a-zA-Z0-9_-]/.test(t[r]);)r++;let s=t.slice(1,r),i=t.slice(r);return i!==""&&!i.startsWith("/")?t:s==="root"?`/root${i}`:t}function hn(e,t){return t.split(":").map(n=>ho(e,n)).join(":")}function Ie(e,t,n,r){if(e.length>n-t.length)throw new $(`${r} element limit exceeded (${n})`,"array_elements");for(let s of t)e.push(s)}async function op(e,t,n,r){let s="";for(let i of t.parts)if(i.type==="Glob")s+=ee(i.pattern,!0,e.state.shoptOptions.extglob);else if(i.type==="Literal")s+=ee(i.value,!0,e.state.shoptOptions.extglob);else if(i.type==="SingleQuoted"||i.type==="Escaped")s+=ne(i.value);else if(i.type==="DoubleQuoted"){let o=await n(e,i.parts);s+=ne(o)}else if(i.type==="ParameterExpansion"){let o=await r(e,i);s+=ee(o,!0,e.state.shoptOptions.extglob)}else{let o=await r(e,i);s+=ne(o)}return s}async function Fc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0];if(s.parts.length!==1||s.parts[0].type!=="ParameterExpansion"||s.parts[0].operation?.type!=="PatternReplacement")return null;let i=s.parts[0],o=i.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!o)return null;let a=o[1],l=o[2]==="*",c=i.operation,u=Q(e,a),f=u.map(([,E])=>E);if(u.length===0){let E=e.state.env.get(a);E!==void 0&&f.push(E)}if(f.length===0)return{values:[],quoted:!0};let d="";c.pattern&&(d=await op(e,c.pattern,n,r));let h=c.replacement?await n(e,c.replacement.parts):"",p=d;c.anchor==="start"?p=`^${d}`:c.anchor==="end"&&(p=`${d}$`);let m=[];try{let E=ye(p,c.all?"g":"");for(let b of f)m.push(E.replace(b,h))}catch{m.push(...f)}if(l){let E=X(e.state.env);return{values:[m.join(E)],quoted:!0}}return{values:m,quoted:!0}}async function Mc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0];if(s.parts.length!==1||s.parts[0].type!=="ParameterExpansion"||s.parts[0].operation?.type!=="PatternRemoval")return null;let i=s.parts[0],o=i.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!o)return null;let a=o[1],l=o[2]==="*",c=i.operation,u=Q(e,a),f=u.map(([,m])=>m);if(u.length===0){let m=e.state.env.get(a);m!==void 0&&f.push(m)}if(f.length===0)return{values:[],quoted:!0};let d="",h=e.state.shoptOptions.extglob;if(c.pattern)for(let m of c.pattern.parts)if(m.type==="Glob")d+=ee(m.pattern,c.greedy,h);else if(m.type==="Literal")d+=ee(m.value,c.greedy,h);else if(m.type==="SingleQuoted"||m.type==="Escaped")d+=ne(m.value);else if(m.type==="DoubleQuoted"){let E=await n(e,m.parts);d+=ne(E)}else if(m.type==="ParameterExpansion"){let E=await r(e,m);d+=ee(E,c.greedy,h)}else{let E=await r(e,m);d+=ne(E)}let p=[];for(let m of f)p.push(St(e,m,d,c.side,c.greedy));if(l){let m=X(e.state.env);return{values:[p.join(m)],quoted:!0}}return{values:p,quoted:!0}}async function Bc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation?.type!=="DefaultValue"&&n.parts[0].operation?.type!=="UseAlternative"&&n.parts[0].operation?.type!=="AssignDefault")return null;let r=n.parts[0],s=r.operation,i=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/),o,a=!1;if(i){let l=i[1];a=i[2]==="*";let c=Q(e,l),u=c.length>0||e.state.env.has(l),f=c.length===0||c.length===1&&c.every(([,h])=>h===""),d=s.checkEmpty??!1;if(s.type==="UseAlternative"?o=u&&!(d&&f):o=!u||d&&f,!o){if(c.length>0){let p=c.map(([,m])=>m);if(a){let m=X(e.state.env);return{values:[p.join(m)],quoted:!0}}return{values:p,quoted:!0}}let h=e.state.env.get(l);return h!==void 0?{values:[h],quoted:!0}:{values:[],quoted:!0}}}else{let l=r.parameter,c=await It(e,l),u=await ae(e,l),f=u==="",d=s.checkEmpty??!1;if(s.type==="UseAlternative"?o=c&&!(d&&f):o=!c||d&&f,!o)return{values:[u],quoted:!0}}if(o&&s.word){let l=s.word.parts,c=null,u=!1;for(let f of l)if(f.type==="ParameterExpansion"&&!f.operation){let d=f.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(d){c=d[1],u=d[2]==="*";break}}if(c){let f=Q(e,c);if(f.length>0){let h=f.map(([,p])=>p);if(u||a){let p=X(e.state.env);return{values:[h.join(p)],quoted:!0}}return{values:h,quoted:!0}}let d=e.state.env.get(c);return d!==void 0?{values:[d],quoted:!0}:{values:[],quoted:!0}}}return null}async function Wc(e,t,n,r,s){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let i=t[0],o=-1,a="",l=!1,c=null;for(let m=0;m<i.parts.length;m++){let E=i.parts[m];if(E.type==="ParameterExpansion"&&(E.operation?.type==="PatternRemoval"||E.operation?.type==="PatternReplacement")){let b=E.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(b){o=m,a=b[1],l=b[2]==="*",c=E.operation;break}}}if(o===-1||o===0&&o===i.parts.length-1)return null;let u="";for(let m=0;m<o;m++)u+=await r(e,i.parts[m]);let f="";for(let m=o+1;m<i.parts.length;m++)f+=await r(e,i.parts[m]);let d=Q(e,a),h=d.map(([,m])=>m);if(d.length===0){let m=e.state.env.get(a);if(m!==void 0)h=[m];else{if(l)return{values:[u+f],quoted:!0};let E=u+f;return{values:E?[E]:[],quoted:!0}}}if(c?.type==="PatternRemoval"){let m=c,E="",b=e.state.shoptOptions.extglob;if(m.pattern)for(let g of m.pattern.parts)if(g.type==="Glob")E+=ee(g.pattern,m.greedy,b);else if(g.type==="Literal")E+=ee(g.value,m.greedy,b);else if(g.type==="SingleQuoted"||g.type==="Escaped")E+=ne(g.value);else if(g.type==="DoubleQuoted"){let y=await s(e,g.parts);E+=ne(y)}else if(g.type==="ParameterExpansion"){let y=await r(e,g);E+=ee(y,m.greedy,b)}else{let y=await r(e,g);E+=ne(y)}h=h.map(g=>St(e,g,E,m.side,m.greedy))}else if(c?.type==="PatternReplacement"){let m=c,E="";if(m.pattern)for(let y of m.pattern.parts)if(y.type==="Glob")E+=ee(y.pattern,!0,e.state.shoptOptions.extglob);else if(y.type==="Literal")E+=ee(y.value,!0,e.state.shoptOptions.extglob);else if(y.type==="SingleQuoted"||y.type==="Escaped")E+=ne(y.value);else if(y.type==="DoubleQuoted"){let S=await s(e,y.parts);E+=ne(S)}else if(y.type==="ParameterExpansion"){let S=await r(e,y);E+=ee(S,!0,e.state.shoptOptions.extglob)}else{let S=await r(e,y);E+=ne(S)}let b=m.replacement?await s(e,m.replacement.parts):"",g=E;m.anchor==="start"?g=`^${E}`:m.anchor==="end"&&(g=`${E}$`);try{let y=ye(g,m.all?"g":"");h=h.map(S=>y.replace(S,b))}catch{}}if(l){let m=X(e.state.env);return{values:[u+h.join(m)+f],quoted:!0}}return h.length===1?{values:[u+h[0]+f],quoted:!0}:{values:[u+h[0],...h.slice(1,-1),h[h.length-1]+f],quoted:!0}}async function Vc(e,t,n,r){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o="",a=!1;for(let h=0;h<s.parts.length;h++){let p=s.parts[h];if(p.type==="ParameterExpansion"&&!p.operation){let m=p.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(m){i=h,o=m[1],a=m[2]==="*";break}}}if(i===-1)return null;let l="";for(let h=0;h<i;h++)l+=await r(e,s.parts[h]);let c="";for(let h=i+1;h<s.parts.length;h++)c+=await r(e,s.parts[h]);let u=Q(e,o),f=u.map(([,h])=>h);if(u.length===0){let h=e.state.env.get(o);if(h!==void 0)return{values:[l+h+c],quoted:!0};if(a)return{values:[l+c],quoted:!0};let p=l+c;return{values:p?[p]:[],quoted:!0}}if(a){let h=X(e.state.env);return{values:[l+f.join(h)+c],quoted:!0}}return f.length===1?{values:[l+f[0]+c],quoted:!0}:{values:[l+f[0],...f.slice(1,-1),f[f.length-1]+c],quoted:!0}}async function zc(e,t,n){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let r=t[0];if(r.parts.length!==1||r.parts[0].type!=="ParameterExpansion"||r.parts[0].operation?.type!=="Substring")return null;let s=r.parts[0],i=s.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!i)return null;let o=i[1],a=i[2]==="*",l=s.operation;if(e.state.associativeArrays?.has(o))throw new q(1,"",`bash: \${${o}[@]: 0: 3}: bad substitution
106
- `);let c=l.offset?await n(e,l.offset.expression):0,u=l.length?await n(e,l.length.expression):void 0,f=Q(e,o);if(f.length>e.limits.maxArrayElements)throw new $(`array transform element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let d=0;if(c<0){if(f.length>0){let p=f[f.length-1][0],E=(typeof p=="number"?p:0)+1+c;if(E<0)return{values:[],quoted:!0};d=f.findIndex(([b])=>typeof b=="number"&&b>=E),d<0&&(d=f.length)}}else d=f.findIndex(([p])=>typeof p=="number"&&p>=c),d<0&&(d=f.length);let h;if(u!==void 0){if(u<0)throw new ce(`${o}[@]: substring expression < 0`);h=f.slice(d,d+u).map(([,p])=>p)}else h=f.slice(d).map(([,p])=>p);if(h.length===0)return{values:[],quoted:!0};if(a){let p=X(e.state.env);return{values:[h.join(p)],quoted:!0}}return{values:h,quoted:!0}}function Uc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation?.type!=="Transform")return null;let r=n.parts[0],s=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!s)return null;let i=s[1],o=s[2]==="*",a=r.operation,l=Q(e,i);if(l.length===0){let d=e.state.env.get(i);if(d!==void 0){let h;switch(a.operator){case"a":h="";break;case"P":h=Pr(e,d);break;case"Q":h=fn(d);break;default:h=d}if(B(h)>e.limits.maxStringLength)throw new $(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[h],quoted:!0}}return o?{values:[""],quoted:!0}:{values:[],quoted:!0}}let c=dn(e,i),u=[],f=0;for(let[,d]of l){let h;switch(a.operator){case"a":h=c;break;case"P":h=Pr(e,d);break;case"Q":h=fn(d);break;case"u":h=d.charAt(0).toUpperCase()+d.slice(1);break;case"U":h=d.toUpperCase();break;case"L":h=d.toLowerCase();break;default:h=d}let p=B(h);if(p>e.limits.maxStringLength-f)throw new $(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");u.push(h),f+=p}if(o){let d=X(e.state.env);if(Math.max(0,u.length-1)*B(d)>e.limits.maxStringLength-f)throw new $(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u.join(d)],quoted:!0}}return{values:u,quoted:!0}}function jc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion")return null;let r=n.parts[0];if(r.operation)return null;let s=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(@)\]$/);if(!s)return null;let i=s[1];if(ue(e,i)){let l=_n(e,i);if(l?.endsWith("[@]")||l?.endsWith("[*]"))return{values:[],quoted:!0}}let o=Q(e,i);if(o.length>0)return{values:o.map(([,l])=>l),quoted:!0};let a=e.state.env.get(i);return a!==void 0?{values:[a],quoted:!0}:{values:[],quoted:!0}}function qc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation)return null;let s=n.parts[0].parameter;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)||!ue(e,s))return null;let i=_n(e,s);if(!i)return null;let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(@)\]$/);if(!o)return null;let a=o[1],l=Q(e,a);if(l.length>0)return{values:l.map(([,u])=>u),quoted:!0};let c=e.state.env.get(a);return c!==void 0?{values:[c],quoted:!0}:{values:[],quoted:!0}}async function Gc(e,t,n,r,s){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let i=t[0];if(i.parts.length!==1||i.parts[0].type!=="ParameterExpansion"||i.parts[0].operation?.type!=="Indirection")return null;let o=i.parts[0],a=o.operation,l=await ae(e,o.parameter),c=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!c){if(!a.innerOp&&(l==="@"||l==="*")){let p=Number.parseInt(e.state.env.get("#")||"0",10),m=[];for(let E=1;E<=p;E++)m.push(e.state.env.get(String(E))||"");return l==="*"?{values:[m.join(X(e.state.env))],quoted:!0}:{values:m,quoted:!0}}return null}let u=c[1],f=c[2]==="*",d=Q(e,u);if(a.innerOp){if(a.innerOp.type==="Substring")return ap(e,d,u,f,a.innerOp);if(a.innerOp.type==="DefaultValue"||a.innerOp.type==="UseAlternative"||a.innerOp.type==="AssignDefault"||a.innerOp.type==="ErrorIfUnset")return lp(e,d,u,f,a.innerOp,s);if(a.innerOp.type==="Transform"&&a.innerOp.operator==="a"){let m=dn(e,u),E=d.map(()=>m);return f?{values:[E.join(X(e.state.env))],quoted:!0}:{values:E,quoted:!0}}let p=[];for(let[,m]of d){let E={type:"ParameterExpansion",parameter:"_indirect_elem_",operation:a.innerOp},b=e.state.env.get("_indirect_elem_");e.state.env.set("_indirect_elem_",m);try{let g=await r(e,E,!0);p.push(g)}finally{b!==void 0?e.state.env.set("_indirect_elem_",b):e.state.env.delete("_indirect_elem_")}}return f?{values:[p.join(X(e.state.env))],quoted:!0}:{values:p,quoted:!0}}if(d.length>0){let p=d.map(([,m])=>m);return f?{values:[p.join(X(e.state.env))],quoted:!0}:{values:p,quoted:!0}}let h=e.state.env.get(u);return h!==void 0?{values:[h],quoted:!0}:{values:[],quoted:!0}}async function ap(e,t,n,r,s){let i=s.offset?await J(e,s.offset.expression):0,o=s.length?await J(e,s.length.expression):void 0,a=0;if(i<0){if(t.length>0){let u=t[t.length-1][0],d=(typeof u=="number"?u:0)+1+i;if(d<0)return{values:[],quoted:!0};if(a=t.findIndex(([h])=>typeof h=="number"&&h>=d),a<0)return{values:[],quoted:!0}}}else if(a=t.findIndex(([u])=>typeof u=="number"&&u>=i),a<0)return{values:[],quoted:!0};let l;if(o!==void 0){if(o<0)throw new ce(`${n}[@]: substring expression < 0`);l=t.slice(a,a+o)}else l=t.slice(a);let c=l.map(([,u])=>u);return r?{values:[c.join(X(e.state.env))],quoted:!0}:{values:c,quoted:!0}}async function lp(e,t,n,r,s,i){let o=s.checkEmpty??!1,a=t.map(([,u])=>u),l=t.length===0,c=t.length===0;if(s.type==="UseAlternative")return!c&&!(o&&l)&&s.word?{values:[await i(e,s.word.parts,!0)],quoted:!0}:{values:[],quoted:!0};if(s.type==="DefaultValue")return(c||o&&l)&&s.word?{values:[await i(e,s.word.parts,!0)],quoted:!0}:r?{values:[a.join(X(e.state.env))],quoted:!0}:{values:a,quoted:!0};if(s.type==="AssignDefault"){if((c||o&&l)&&s.word){let f=await i(e,s.word.parts,!0);return G(e,n,0,f),{values:[f],quoted:!0}}return r?{values:[a.join(X(e.state.env))],quoted:!0}:{values:a,quoted:!0}}return r?{values:[a.join(X(e.state.env))],quoted:!0}:{values:a,quoted:!0}}async function Hc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="UseAlternative"&&t[0].operation?.type!=="DefaultValue")return null;let n=t[0],r=n.operation,s=r?.word;if(!s||s.parts.length!==1||s.parts[0].type!=="DoubleQuoted")return null;let i=s.parts[0];if(i.parts.length!==1||i.parts[0].type!=="ParameterExpansion"||i.parts[0].operation?.type!=="Indirection")return null;let o=i.parts[0],l=(await ae(e,o.parameter)).match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!l)return null;let c=await It(e,n.parameter),u=await ae(e,n.parameter)==="",f=r.checkEmpty??!1,d;if(r.type==="UseAlternative"?d=c&&!(f&&u):d=!c||f&&u,d){let h=l[1],p=l[2]==="*",m=Q(e,h);if(m.length>0){let b=m.map(([,g])=>g);return p?{values:[b.join(X(e.state.env))],quoted:!0}:{values:b,quoted:!0}}let E=e.state.env.get(h);return E!==void 0?{values:[E],quoted:!0}:{values:[],quoted:!0}}return{values:[],quoted:!1}}async function Zc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="Indirection")return null;let n=t[0],s=n.operation.innerOp;if(!s||s.type!=="UseAlternative"&&s.type!=="DefaultValue")return null;let i=s.word;if(!i||i.parts.length!==1||i.parts[0].type!=="DoubleQuoted")return null;let o=i.parts[0];if(o.parts.length!==1||o.parts[0].type!=="ParameterExpansion"||o.parts[0].operation?.type!=="Indirection")return null;let a=o.parts[0],c=(await ae(e,a.parameter)).match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!c)return null;let u=await ae(e,n.parameter),f=await It(e,n.parameter),d=u==="",h=s.checkEmpty??!1,p;if(s.type==="UseAlternative"?p=f&&!(h&&d):p=!f||h&&d,p){let m=c[1],E=c[2]==="*",b=Q(e,m);if(b.length>0){let y=b.map(([,S])=>S);return E?{values:[y.join(X(e.state.env))],quoted:!0}:{values:y,quoted:!0}}let g=e.state.env.get(m);return g!==void 0?{values:[g],quoted:!0}:{values:[],quoted:!0}}return{values:[],quoted:!1}}function Qc(e){let t=Number.parseInt(e.state.env.get("#")||"0",10);if(t>e.limits.maxArrayElements)throw new $(`positional parameter element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let n=[],r=0;for(let s=1;s<=t;s++){let i=e.state.env.get(String(s))||"",o=B(i);if(o>e.limits.maxStringLength-r)throw new $(`positional parameter string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");n.push(i),r+=o}return n}function vs(e,t,n){if(B(t)>n-B(e))throw new $(`positional expansion string limit exceeded (${n} bytes)`,"string_length");return e+t}function po(e,t,n,r){if(e.length>=r.limits.maxArrayElements)throw new $(`positional expansion element limit exceeded (${r.limits.maxArrayElements})`,"array_elements");let s=B(t);if(s>r.limits.maxStringLength-n.value)throw new $(`positional expansion string limit exceeded (${r.limits.maxStringLength} bytes)`,"string_length");e.push(t),n.value+=s}async function Kc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let g=0;g<s.parts.length;g++){let y=s.parts[g];if(y.type==="ParameterExpansion"&&(y.parameter==="@"||y.parameter==="*")&&y.operation?.type==="Substring"){i=g,o=y.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=l.offset?await n(e,l.offset.expression):0,u=l.length?await n(e,l.length.expression):void 0,f=Number.parseInt(e.state.env.get("#")||"0",10),d=[];for(let g=1;g<=f;g++)d.push(e.state.env.get(String(g))||"");let h=e.state.env.get("0")||"bash",p;if(c<=0){let g=[h,...d],y=g.length+c;if(y<0)p=[];else{let S=c<0?y:0;if(u!==void 0){let A=u<0?g.length+u:S+u;p=g.slice(S,Math.max(S,A))}else p=g.slice(S)}}else{let g=c-1;if(g>=d.length)p=[];else if(u!==void 0){let y=u<0?d.length+u:g+u;p=d.slice(g,Math.max(g,y))}else p=d.slice(g)}let m="";for(let g=0;g<i;g++)m+=await r(e,s.parts[g]);let E="";for(let g=i+1;g<s.parts.length;g++)E+=await r(e,s.parts[g]);if(p.length===0){let g=m+E;return{values:g?[g]:[],quoted:!0}}if(o){let g=X(e.state.env);return{values:[m+p.join(g)+E],quoted:!0}}return p.length===1?{values:[m+p[0]+E],quoted:!0}:{values:[m+p[0],...p.slice(1,-1),p[p.length-1]+E],quoted:!0}}async function Xc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let g=0;g<s.parts.length;g++){let y=s.parts[g];if(y.type==="ParameterExpansion"&&(y.parameter==="@"||y.parameter==="*")&&y.operation?.type==="PatternReplacement"){i=g,o=y.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=Qc(e),u="";for(let g=0;g<i;g++)u=vs(u,await n(e,s.parts[g]),e.limits.maxStringLength);let f="";for(let g=i+1;g<s.parts.length;g++)f=vs(f,await n(e,s.parts[g]),e.limits.maxStringLength);if(c.length===0){let g=u+f;return{values:g?[g]:[],quoted:!0}}let d="";if(l.pattern)for(let g of l.pattern.parts)if(g.type==="Glob")d+=ee(g.pattern,!0,e.state.shoptOptions.extglob);else if(g.type==="Literal")d+=ee(g.value,!0,e.state.shoptOptions.extglob);else if(g.type==="SingleQuoted"||g.type==="Escaped")d+=ne(g.value);else if(g.type==="DoubleQuoted"){let y=await r(e,g.parts);d+=ne(y)}else if(g.type==="ParameterExpansion"){let y=await n(e,g);d+=ee(y,!0,e.state.shoptOptions.extglob)}else{let y=await n(e,g);d+=ne(y)}let h=l.replacement?await r(e,l.replacement.parts):"",p=d;l.anchor==="start"?p=`^${d}`:l.anchor==="end"&&(p=`${d}$`);let m=[],E={value:0};try{let g=ye(p,l.all?"g":"");for(let y of c){let S=0;g.lastIndex=0;for(let P=g.exec(y);P&&(S++,!!l.all);P=g.exec(y))P[0].length===0&&g.lastIndex++;let A=B(y),k=B(h),v=0,x=/\$(?:\$|&|\d+|<[^>]+>|`|')/g;for(;x.exec(h)!==null;)v++;if(A+S*k+S*v*A>e.limits.maxStringLength-E.value)throw new $(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");po(m,g.replace(y,h),E,e)}}catch(g){if(g instanceof $)throw g;for(let y of c)po(m,y,E,e)}if(o){let g=X(e.state.env);if(E.value+Math.max(0,m.length-1)*B(g)+B(u)+B(f)>e.limits.maxStringLength)throw new $(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u+m.join(g)+f],quoted:!0}}if(B(u)+E.value+B(f)>e.limits.maxStringLength)throw new $(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return m.length===1?{values:[u+m[0]+f],quoted:!0}:{values:[u+m[0],...m.slice(1,-1),m[m.length-1]+f],quoted:!0}}async function Yc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let b=0;b<s.parts.length;b++){let g=s.parts[b];if(g.type==="ParameterExpansion"&&(g.parameter==="@"||g.parameter==="*")&&g.operation?.type==="PatternRemoval"){i=b,o=g.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=Qc(e),u="";for(let b=0;b<i;b++)u=vs(u,await n(e,s.parts[b]),e.limits.maxStringLength);let f="";for(let b=i+1;b<s.parts.length;b++)f=vs(f,await n(e,s.parts[b]),e.limits.maxStringLength);if(c.length===0){let b=u+f;return{values:b?[b]:[],quoted:!0}}let d="",h=e.state.shoptOptions.extglob;if(l.pattern)for(let b of l.pattern.parts)if(b.type==="Glob")d+=ee(b.pattern,l.greedy,h);else if(b.type==="Literal")d+=ee(b.value,l.greedy,h);else if(b.type==="SingleQuoted"||b.type==="Escaped")d+=ne(b.value);else if(b.type==="DoubleQuoted"){let g=await r(e,b.parts);d+=ne(g)}else if(b.type==="ParameterExpansion"){let g=await n(e,b);d+=ee(g,l.greedy,h)}else{let g=await n(e,b);d+=ne(g)}let p=[],m={value:0};for(let b of c)po(p,St(e,b,d,l.side,l.greedy),m,e);if(o){let b=X(e.state.env);if(m.value+Math.max(0,p.length-1)*B(b)+B(u)+B(f)>e.limits.maxStringLength)throw new $(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u+p.join(b)+f],quoted:!0}}if(B(u)+m.value+B(f)>e.limits.maxStringLength)throw new $(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return p.length===1?{values:[u+p[0]+f],quoted:!0}:{values:[u+p[0],...p.slice(1,-1),p[p.length-1]+f],quoted:!0}}async function Jc(e,t,n){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let r=t[0],s=-1,i=!1;for(let d=0;d<r.parts.length;d++){let h=r.parts[d];if(h.type==="ParameterExpansion"&&(h.parameter==="@"||h.parameter==="*")){s=d,i=h.parameter==="*";break}}if(s===-1)return null;let o=r.parts[s];if(o.type==="ParameterExpansion"&&o.operation)return null;let a=Number.parseInt(e.state.env.get("#")||"0",10),l="";for(let d=0;d<s;d++)l+=await n(e,r.parts[d]);let c="";for(let d=s+1;d<r.parts.length;d++)c+=await n(e,r.parts[d]);if(a===0){if(i)return{values:[l+c],quoted:!0};let d=l+c;return{values:d?[d]:[],quoted:!0}}let u=[];for(let d=1;d<=a;d++)u.push(e.state.env.get(String(d))||"");if(i){let d=X(e.state.env);return{values:[l+u.join(d)+c],quoted:!0}}return u.length===1?{values:[l+u[0]+c],quoted:!0}:{values:[l+u[0],...u.slice(1,-1),u[u.length-1]+c],quoted:!0}}function _t(e,t,n,r){if(t.length>=e.limits.maxArrayElements)throw new $(`unquoted expansion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let s=B(n);if(s>e.limits.maxStringLength-r.value)throw new $(`unquoted expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");t.push(n),r.value+=s}function mo(e,t,n,r){let s=B(n),i=Math.max(0,t.length-1);if(s>0&&i>Math.floor((e.limits.maxStringLength-r)/s))throw new $(`unquoted expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return t.join(n)}function cp(e){return new un(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")})}async function ks(e,t){if(e.state.options.noglob)return t;let n=cp(e),r=[];for(let s of t)if(Tt(s,e.state.shoptOptions.extglob)){let i=await n.expand(s);if(i.length>0)Ie(r,i,e.limits.maxArrayElements,"unquoted glob expansion");else{if(n.hasFailglob())throw new Yt(s);n.hasNullglob()||r.push(s)}}else r.push(s);return r}async function eu(e,t,n,r){let s=-1,i="",o=!1;for(let S=0;S<t.length;S++){let A=t[S];if(A.type==="ParameterExpansion"&&A.operation?.type==="PatternReplacement"){let k=A.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(k){s=S,i=k[1],o=k[2]==="*";break}}}if(s===-1)return null;let l=t[s].operation,c=Q(e,i),u=c.map(([,S])=>S);if(c.length===0){let S=e.state.env.get(i);S!==void 0&&(u=[S])}if(u.length===0)return{values:[],quoted:!1};let f="";if(l.pattern)for(let S of l.pattern.parts)if(S.type==="Glob")f+=ee(S.pattern,!0,e.state.shoptOptions.extglob);else if(S.type==="Literal")f+=ee(S.value,!0,e.state.shoptOptions.extglob);else if(S.type==="SingleQuoted"||S.type==="Escaped")f+=ne(S.value);else if(S.type==="DoubleQuoted"){let A=await n(e,S.parts);f+=ne(A)}else if(S.type==="ParameterExpansion"){let A=await r(e,S);f+=ee(A,!0,e.state.shoptOptions.extglob)}else{let A=await r(e,S);f+=ne(A)}let d=l.replacement?await n(e,l.replacement.parts):"",h=f;l.anchor==="start"?h=`^${f}`:l.anchor==="end"&&(h=`${f}$`);let p=[],m={value:0};try{let S=ye(h,l.all?"g":"");for(let A of u)_t(e,p,bs(e,A,S,d,l.all),m)}catch(S){if(S instanceof $)throw S;for(let A of u)_t(e,p,A,m)}let E=ke(e.state.env),b=De(e.state.env);if(o){let S=X(e.state.env),A=mo(e,p,S,m.value);return b?{values:A?[A]:[],quoted:!1}:{values:de(A,E,e.limits.maxArrayElements),quoted:!1}}if(b)return{values:p,quoted:!1};let g=[],y={value:0};for(let S of p)if(S==="")_t(e,g,"",y);else for(let A of de(S,E,e.limits.maxArrayElements))_t(e,g,A,y);return{values:g,quoted:!1}}async function tu(e,t,n,r){let s=-1,i="",o=!1;for(let y=0;y<t.length;y++){let S=t[y];if(S.type==="ParameterExpansion"&&S.operation?.type==="PatternRemoval"){let A=S.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(A){s=y,i=A[1],o=A[2]==="*";break}}}if(s===-1)return null;let l=t[s].operation,c=Q(e,i),u=c.map(([,y])=>y);if(c.length===0){let y=e.state.env.get(i);y!==void 0&&(u=[y])}if(u.length===0)return{values:[],quoted:!1};let f="",d=e.state.shoptOptions.extglob;if(l.pattern)for(let y of l.pattern.parts)if(y.type==="Glob")f+=ee(y.pattern,l.greedy,d);else if(y.type==="Literal")f+=ee(y.value,l.greedy,d);else if(y.type==="SingleQuoted"||y.type==="Escaped")f+=ne(y.value);else if(y.type==="DoubleQuoted"){let S=await n(e,y.parts);f+=ne(S)}else if(y.type==="ParameterExpansion"){let S=await r(e,y);f+=ee(S,l.greedy,d)}else{let S=await r(e,y);f+=ne(S)}let h=[],p={value:0};for(let y of u)_t(e,h,St(e,y,f,l.side,l.greedy),p);let m=ke(e.state.env),E=De(e.state.env);if(o){let y=X(e.state.env),S=mo(e,h,y,p.value);return E?{values:S?[S]:[],quoted:!1}:{values:de(S,m,e.limits.maxArrayElements),quoted:!1}}if(E)return{values:h,quoted:!1};let b=[],g={value:0};for(let y of h)if(y==="")_t(e,b,"",g);else for(let S of de(y,m,e.limits.maxArrayElements))_t(e,b,S,g);return{values:b,quoted:!1}}async function nu(e,t,n,r){let s=-1,i=!1;for(let g=0;g<t.length;g++){let y=t[g];if(y.type==="ParameterExpansion"&&(y.parameter==="@"||y.parameter==="*")&&y.operation?.type==="PatternRemoval"){s=g,i=y.parameter==="*";break}}if(s===-1)return null;let a=t[s].operation,l=Number.parseInt(e.state.env.get("#")||"0",10),c=[];for(let g=1;g<=l;g++)c.push(e.state.env.get(String(g))||"");if(c.length===0)return{values:[],quoted:!1};let u="",f=e.state.shoptOptions.extglob;if(a.pattern)for(let g of a.pattern.parts)if(g.type==="Glob")u+=ee(g.pattern,a.greedy,f);else if(g.type==="Literal")u+=ee(g.value,a.greedy,f);else if(g.type==="SingleQuoted"||g.type==="Escaped")u+=ne(g.value);else if(g.type==="DoubleQuoted"){let y=await n(e,g.parts);u+=ne(y)}else if(g.type==="ParameterExpansion"){let y=await r(e,g);u+=ee(y,a.greedy,f)}else{let y=await r(e,g);u+=ne(y)}let d=[],h={value:0};for(let g of c)_t(e,d,St(e,g,u,a.side,a.greedy),h);let p=ke(e.state.env),m=De(e.state.env);if(i){let g=X(e.state.env),y=mo(e,d,g,h.value);return m?{values:y?[y]:[],quoted:!1}:{values:de(y,p,e.limits.maxArrayElements),quoted:!1}}if(m)return{values:d,quoted:!1};let E=[],b={value:0};for(let g of d)if(g==="")_t(e,E,"",b);else for(let y of de(g,p,e.limits.maxArrayElements))_t(e,E,y,b);return{values:E,quoted:!1}}async function ru(e,t,n,r){let s=-1,i=!1;for(let y=0;y<t.length;y++){let S=t[y];if(S.type==="ParameterExpansion"&&(S.parameter==="@"||S.parameter==="*")&&S.operation?.type==="Substring"){s=y,i=S.parameter==="*";break}}if(s===-1)return null;let a=t[s].operation,l=a.offset?await n(e,a.offset.expression):0,c=a.length?await n(e,a.length.expression):void 0,u=Number.parseInt(e.state.env.get("#")||"0",10),f=[];for(let y=1;y<=u;y++)f.push(e.state.env.get(String(y))||"");let d=e.state.env.get("0")||"bash",h;if(l<=0){let y=[d,...f],S=y.length+l;if(S<0)h=[];else{let A=l<0?S:0;if(c!==void 0){let k=c<0?y.length+c:A+c;h=y.slice(A,Math.max(A,k))}else h=y.slice(A)}}else{let y=l-1;if(y>=f.length)h=[];else if(c!==void 0){let S=c<0?f.length+c:y+c;h=f.slice(y,Math.max(y,S))}else h=f.slice(y)}let p="";for(let y=0;y<s;y++)p+=await r(e,t[y]);let m="";for(let y=s+1;y<t.length;y++)m+=await r(e,t[y]);let E=ke(e.state.env),b=De(e.state.env);if(h.length===0){let y=p+m;return y?b?{values:[y],quoted:!1}:{values:de(y,E,e.limits.maxArrayElements),quoted:!1}:{values:[],quoted:!1}}let g;if(i){let y=X(e.state.env),S=p+h.join(y)+m;b?g=S?[S]:[]:g=de(S,E,e.limits.maxArrayElements)}else if(b)h.length===1?g=[p+h[0]+m]:g=[p+h[0],...h.slice(1,-1),h[h.length-1]+m];else{g=[];for(let y=0;y<h.length;y++){let S=h[y];if(y===0&&(S=p+S),y===h.length-1&&(S=S+m),S==="")g.push("");else{let A=de(S,E,e.limits.maxArrayElements);Ie(g,A,e.limits.maxArrayElements,"unquoted expansion")}}}return{values:await ks(e,g),quoted:!1}}async function su(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].parameter!=="@"&&t[0].parameter!=="*"||t[0].operation)return null;let n=t[0].parameter==="*",r=Number.parseInt(e.state.env.get("#")||"0",10);if(r===0)return{values:[],quoted:!1};let s=[];for(let c=1;c<=r;c++)s.push(e.state.env.get(String(c))||"");let i=ke(e.state.env),o=De(e.state.env),a=ms(e.state.env),l;if(n)if(o)l=s.filter(c=>c!=="");else{let c=X(e.state.env),u=s.join(c);l=de(u,i,e.limits.maxArrayElements)}else if(o)l=s.filter(c=>c!=="");else if(a){l=[];for(let c of s){if(c==="")continue;let u=de(c,i,e.limits.maxArrayElements);Ie(l,u,e.limits.maxArrayElements,"unquoted expansion")}}else{l=[];for(let c of s)if(c==="")l.push("");else{let u=de(c,i,e.limits.maxArrayElements);Ie(l,u,e.limits.maxArrayElements,"unquoted expansion")}for(;l.length>0&&l[l.length-1]==="";)l.pop()}return{values:await ks(e,l),quoted:!1}}async function iu(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation)return null;let n=t[0].parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!n)return null;let r=n[1],s=n[2]==="*",i=Q(e,r),o;if(i.length===0){let f=e.state.env.get(r);if(f!==void 0)o=[f];else return{values:[],quoted:!1}}else o=i.map(([,f])=>f);let a=ke(e.state.env),l=De(e.state.env),c=ms(e.state.env),u;if(s)if(l)u=o.filter(f=>f!=="");else{let f=X(e.state.env),d=o.join(f);u=de(d,a,e.limits.maxArrayElements)}else if(l)u=o.filter(f=>f!=="");else if(c){u=[];for(let f of o){if(f==="")continue;let d=de(f,a,e.limits.maxArrayElements);Ie(u,d,e.limits.maxArrayElements,"unquoted expansion")}}else{u=[];for(let f of o)if(f==="")u.push("");else{let d=de(f,a,e.limits.maxArrayElements);Ie(u,d,e.limits.maxArrayElements,"unquoted expansion")}for(;u.length>0&&u[u.length-1]==="";)u.pop()}return{values:await ks(e,u),quoted:!1}}function ou(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="VarNamePrefix")return null;let n=t[0].operation,r=Kn(e,n.prefix);if(r.length===0)return{values:[],quoted:!1};let s=ke(e.state.env),i=De(e.state.env),o;if(n.star)if(i)o=r;else{let a=X(e.state.env),l=r.join(a);o=de(l,s,e.limits.maxArrayElements)}else if(i)o=r;else{o=[];for(let a of r){let l=de(a,s,e.limits.maxArrayElements);Ie(o,l,e.limits.maxArrayElements,"unquoted expansion")}}return{values:o,quoted:!1}}function au(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="ArrayKeys")return null;let n=t[0].operation,s=Q(e,n.array).map(([l])=>String(l));if(s.length===0)return{values:[],quoted:!1};let i=ke(e.state.env),o=De(e.state.env),a;if(n.star)if(o)a=s;else{let l=X(e.state.env),c=s.join(l);a=de(c,i,e.limits.maxArrayElements)}else if(o)a=s;else{a=[];for(let l of s){let c=de(l,i,e.limits.maxArrayElements);Ie(a,c,e.limits.maxArrayElements,"unquoted expansion")}}return{values:a,quoted:!1}}async function lu(e,t,n){let r=-1;for(let d=0;d<t.length;d++){let h=t[d];if(h.type==="ParameterExpansion"&&(h.parameter==="@"||h.parameter==="*")&&!h.operation){r=d;break}}if(r===-1||t.length<=1)return null;let s=Number.parseInt(e.state.env.get("#")||"0",10),i=[];for(let d=1;d<=s;d++)i.push(e.state.env.get(String(d))||"");let o="";for(let d=0;d<r;d++)o+=await n(e,t[d]);let a="";for(let d=r+1;d<t.length;d++)a+=await n(e,t[d]);let l=ke(e.state.env),c=De(e.state.env),u=ms(e.state.env);if(s===0){let d=o+a;return{values:d?[d]:[],quoted:!1}}let f;{let d=[];for(let h=0;h<i.length;h++){let p=i[h];h===0&&(p=o+p),h===i.length-1&&(p=p+a),d.push(p)}if(c)f=d.filter(h=>h!=="");else if(u){f=[];for(let h of d){if(h==="")continue;let p=de(h,l,e.limits.maxArrayElements);Ie(f,p,e.limits.maxArrayElements,"unquoted expansion")}}else{f=[];for(let h of d)if(h==="")f.push("");else{let p=de(h,l,e.limits.maxArrayElements);Ie(f,p,e.limits.maxArrayElements,"unquoted expansion")}for(;f.length>0&&f[f.length-1]==="";)f.pop()}}return f.length===0?{values:[],quoted:!1}:{values:await ks(e,f),quoted:!1}}async function fu(e,t,n){e.coverage?.hit("bash:expansion:word_glob");let r=t.parts,{hasQuoted:s,hasCommandSub:i,hasArrayVar:o,hasArrayAtExpansion:a,hasParamExpansion:l,hasVarNamePrefixExpansion:c,hasIndirection:u}=vr(r),d=n.hasBraceExpansion(r)?await n.expandWordWithBracesAsync(e,t):null;if(d&&d.length>1)return up(e,d,s);let h=await fp(e,r,a,c,u,n);if(h!==null)return h;let p=await hp(e,r,n);if(p!==null)return p;let m=await pp(e,r,n);if(m!==null)return m;let E=await yp(e,r,n.expandPart);if(E!==null)return uu(e,E);if((i||o||l)&&!De(e.state.env)){let g=ke(e.state.env),y=n.buildIfsCharClassPattern(g),S=await n.smartWordSplit(e,r,g,y,n.expandPart);return uu(e,S)}let b=await n.expandWordAsync(e,t);return gp(e,t,r,b,s,n.expandWordForGlobbing)}async function up(e,t,n){let r=[];for(let s of t)if(!(!n&&s===""))if(!n&&!e.state.options.noglob&&Tt(s,e.state.shoptOptions.extglob)){let i=await Ps(e,s);Ie(r,i,e.limits.maxArrayElements,"brace/glob expansion")}else r.push(s);return{values:r,quoted:!1}}async function fp(e,t,n,r,s,i){if(n){let o=jc(e,t);if(o!==null)return o}{let o=qc(e,t);if(o!==null)return o}{let o=await Bc(e,t);if(o!==null)return o}{let o=await Wc(e,t,n,i.expandPart,i.expandWordPartsAsync);if(o!==null)return o}{let o=await Vc(e,t,n,i.expandPart);if(o!==null)return o}{let o=await zc(e,t,i.evaluateArithmetic);if(o!==null)return o}{let o=Uc(e,t);if(o!==null)return o}{let o=await Fc(e,t,i.expandWordPartsAsync,i.expandPart);if(o!==null)return o}{let o=await Mc(e,t,i.expandWordPartsAsync,i.expandPart);if(o!==null)return o}if(r&&t.length===1&&t[0].type==="DoubleQuoted"){let o=dp(e,t);if(o!==null)return o}{let o=await Gc(e,t,s,i.expandParameterAsync,i.expandWordPartsAsync);if(o!==null)return o}{let o=await Hc(e,t);if(o!==null)return o}{let o=await Zc(e,t);if(o!==null)return o}return null}function dp(e,t){let n=t[0];if(n.type!=="DoubleQuoted")return null;if(n.parts.length===1&&n.parts[0].type==="ParameterExpansion"&&n.parts[0].operation?.type==="VarNamePrefix"){let r=n.parts[0].operation,s=Kn(e,r.prefix);return r.star?{values:[s.join(X(e.state.env))],quoted:!0}:{values:s,quoted:!0}}if(n.parts.length===1&&n.parts[0].type==="ParameterExpansion"&&n.parts[0].operation?.type==="ArrayKeys"){let r=n.parts[0].operation,i=Q(e,r.array).map(([o])=>String(o));return r.star?{values:[i.join(X(e.state.env))],quoted:!0}:{values:i,quoted:!0}}return null}async function hp(e,t,n){{let r=await Kc(e,t,n.evaluateArithmetic,n.expandPart);if(r!==null)return r}{let r=await Xc(e,t,n.expandPart,n.expandWordPartsAsync);if(r!==null)return r}{let r=await Yc(e,t,n.expandPart,n.expandWordPartsAsync);if(r!==null)return r}{let r=await Jc(e,t,n.expandPart);if(r!==null)return r}return null}async function pp(e,t,n){{let r=await eu(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await tu(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await nu(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await ru(e,t,n.evaluateArithmetic,n.expandPart);if(r!==null)return r}{let r=await su(e,t);if(r!==null)return r}{let r=await iu(e,t);if(r!==null)return r}{let r=ou(e,t);if(r!==null)return r}{let r=au(e,t);if(r!==null)return r}{let r=await lu(e,t,n.expandPart);if(r!==null)return r}return null}function cu(e){if(e.type!=="DoubleQuoted")return null;for(let t=0;t<e.parts.length;t++){let n=e.parts[t];if(n.type!=="ParameterExpansion"||n.operation)continue;let r=n.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(r)return{type:"array",name:r[1],atIndex:t,isStar:r[2]==="*"};if(n.parameter==="@"||n.parameter==="*")return{type:"positional",atIndex:t,isStar:n.parameter==="*"}}return null}async function mp(e,t,n,r){let s="";for(let a=0;a<n.atIndex;a++)s+=await r(e,t.parts[a]);let i="";for(let a=n.atIndex+1;a<t.parts.length;a++)i+=await r(e,t.parts[a]);let o;if(n.type==="array"){if(o=Q(e,n.name).map(([,l])=>l),o.length===0){let l=e.state.env.get(n.name);l!==void 0&&(o=[l])}}else{let a=Number.parseInt(e.state.env.get("#")||"0",10);o=[];for(let l=1;l<=a;l++)o.push(e.state.env.get(String(l))||"")}if(n.isStar){let a=X(e.state.env),l=o.join(a);return[s+l+i]}if(o.length===0){let a=s+i;return a?[a]:[]}return o.length===1?[s+o[0]+i]:[s+o[0],...o.slice(1,-1),o[o.length-1]+i]}async function yp(e,t,n){if(t.length<2)return null;let r=!1;for(let l of t)if(cu(l)){r=!0;break}if(!r)return null;let s=ke(e.state.env),i=De(e.state.env),o=[];for(let l of t){let c=cu(l);if(c&&l.type==="DoubleQuoted"){let u=await mp(e,l,c,n);o.push(u)}else if(l.type==="DoubleQuoted"||l.type==="SingleQuoted"){let u=await n(e,l);o.push([u])}else if(l.type==="Literal")o.push([l.value]);else if(l.type==="ParameterExpansion"){let u=await n(e,l);if(i)o.push(u?[u]:[]);else{let f=de(u,s,e.limits.maxArrayElements);o.push(f)}}else{let u=await n(e,l);if(i)o.push(u?[u]:[]);else{let f=de(u,s,e.limits.maxArrayElements);o.push(f)}}}let a=[];for(let l of o)if(l.length!==0)if(a.length===0)Ie(a,l,e.limits.maxArrayElements,"word expansion");else{let c=a.length-1;a[c]=a[c]+l[0];for(let u=1;u<l.length;u++)a.push(l[u])}return a}async function uu(e,t){if(e.state.options.noglob)return{values:t,quoted:!1};let n=[];for(let r of t)if(Tt(r,e.state.shoptOptions.extglob)){let s=await Ps(e,r);Ie(n,s,e.limits.maxArrayElements,"glob expansion")}else n.push(r);return{values:n,quoted:!1}}async function Ps(e,t){let n=new un(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")}),r=await n.expand(t);if(r.length>0)return r;if(n.hasFailglob())throw new Yt(t);return n.hasNullglob()?[]:[t]}async function gp(e,t,n,r,s,i){let o=n.some(a=>a.type==="Glob");if(!e.state.options.noglob&&o){let a=await i(e,t);if(Tt(a,e.state.shoptOptions.extglob)){let c=await Ps(e,a);if(c.length>0&&c[0]!==a)return{values:c,quoted:!1};if(c.length===0)return{values:[],quoted:!1}}let l=uo(r);if(!De(e.state.env)){let c=ke(e.state.env);return{values:de(l,c,e.limits.maxArrayElements),quoted:!1}}return{values:[l],quoted:!1}}if(!s&&!e.state.options.noglob&&Tt(r,e.state.shoptOptions.extglob)){let a=await i(e,t);if(Tt(a,e.state.shoptOptions.extglob)){let l=await Ps(e,a);if(l.length>0&&l[0]!==a)return{values:l,quoted:!1}}}if(r===""&&!s)return{values:[],quoted:!1};if(o&&!s){let a=uo(r);if(!De(e.state.env)){let l=ke(e.state.env);return{values:de(a,l,e.limits.maxArrayElements),quoted:!1}}return{values:[a],quoted:!1}}return{values:[r],quoted:s}}function Be(e,t,n){if(t.length>=e.limits.maxArrayElements)throw new $(`word splitting element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");t.push(n)}async function hu(e,t){let n=t.operation;if(!n||n.type!=="DefaultValue"&&n.type!=="AssignDefault"&&n.type!=="UseAlternative")return null;let r=n.word;if(!r||r.parts.length===0)return null;let s=await It(e,t.parameter),o=await ae(e,t.parameter,!1)==="",a=n.checkEmpty??!1,l;return n.type==="UseAlternative"?l=s&&!(a&&o):l=!s||a&&o,l?r.parts:null}function wp(e){return e.type==="SingleQuoted"?!0:e.type==="DoubleQuoted"?e.parts.every(n=>n.type==="Literal"):!1}async function Ep(e,t){if(t.type!=="ParameterExpansion")return null;let n=await hu(e,t);if(!n||n.length<=1)return null;let r=n.some(i=>wp(i)),s=n.some(i=>i.type==="Literal"||i.type==="ParameterExpansion"||i.type==="CommandSubstitution"||i.type==="ArithmeticExpansion");return r&&s?n:null}function bp(e){return e.type==="DoubleQuoted"||e.type==="SingleQuoted"||e.type==="Literal"?!1:e.type==="Glob"?no(e.pattern):!(!(e.type==="ParameterExpansion"||e.type==="CommandSubstitution"||e.type==="ArithmeticExpansion")||e.type==="ParameterExpansion"&&uc(e))}async function pu(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:word_split"),t.length===1&&t[0].type==="ParameterExpansion"){let d=t[0],h=await hu(e,d);if(h&&h.length>0&&h.length>1&&h.some(m=>m.type==="DoubleQuoted"||m.type==="SingleQuoted")&&h.some(m=>m.type==="Literal"||m.type==="ParameterExpansion"||m.type==="CommandSubstitution"||m.type==="ArithmeticExpansion"))return du(e,h,n,r,s)}let i=[],o=!1;for(let d of t){let h=bp(d),p=d.type==="DoubleQuoted"||d.type==="SingleQuoted",m=h?await Ep(e,d):null,E=await s(e,d);i.push({value:E,isSplittable:h,isQuoted:p,mixedDefaultParts:m??void 0}),h&&(o=!0)}if(!o){let d=i.map(h=>h.value).join("");return d?[d]:[]}let a=[],l="",c=!1,u=!1,f=!1;for(let d of i)if(!d.isSplittable)u?d.isQuoted&&d.value===""?(l!==""&&Be(e,a,l),Be(e,a,""),c=!0,l="",u=!1,f=!0):d.value!==""?(l!==""&&Be(e,a,l),l=d.value,u=!1,f=!1):(l+=d.value,f=!1):(l+=d.value,f=d.isQuoted&&d.value==="");else if(d.mixedDefaultParts){let h=await du(e,d.mixedDefaultParts,n,r,s);if(h.length!==0)if(h.length===1)l+=h[0],c=!0;else{l+=h[0],Be(e,a,l),c=!0;for(let p=1;p<h.length-1;p++)Be(e,a,h[p]);l=h[h.length-1]}u=!1,f=!1}else{let{words:h,hadLeadingDelimiter:p,hadTrailingDelimiter:m}=ys(d.value,n,e.limits.maxArrayElements);if(f&&p&&l===""&&(Be(e,a,""),c=!0),h.length===0)m&&(u=!0);else if(h.length===1)l+=h[0],c=!0,u=m;else{l+=h[0],Be(e,a,l),c=!0;for(let E=1;E<h.length-1;E++)Be(e,a,h[E]);l=h[h.length-1],u=m}f=!1}return l!==""?Be(e,a,l):a.length===0&&c&&Be(e,a,""),a}function Sp(e,t){return e.length>0&&t.includes(e[0])}async function du(e,t,n,r,s){let i=[];for(let u of t){let d=!(u.type==="DoubleQuoted"||u.type==="SingleQuoted"),h=await s(e,u);i.push({value:h,isSplittable:d})}let o=[],a="",l=!1,c=!1;for(let u of i)if(!u.isSplittable)c&&u.value!==""?(a!==""&&Be(e,o,a),a=u.value,c=!1):a+=u.value;else{Sp(u.value,n)&&a!==""&&(Be(e,o,a),a="",l=!0);let{words:d,hadTrailingDelimiter:h}=ys(u.value,n,e.limits.maxArrayElements);if(d.length===0)h&&(c=!0);else if(d.length===1)a+=d[0],l=!0,c=h;else{a+=d[0],Be(e,o,a),l=!0;for(let p=1;p<d.length-1;p++)Be(e,o,d[p]);a=d[d.length-1],c=h}}return a!==""?Be(e,o,a):o.length===0&&l&&Be(e,o,""),o}function mu(e){switch(e.type){case"Literal":return e.value;case"SingleQuoted":return e.value;case"Escaped":return e.value;default:return null}}function yu(e){switch(e.type){case"SingleQuoted":case"Escaped":case"DoubleQuoted":return!0;case"Literal":return e.value==="";default:return!1}}var Lt=class{baseFs;mounts=new Map;constructor(t){if(this.baseFs=t?.base??new Ve,t?.mounts)for(let{mountPoint:n,filesystem:r}of t.mounts)this.mount(n,r)}mount(t,n){this.validateMountPath(t);let r=V(t);this.validateMount(r),this.mounts.set(r,{mountPoint:r,filesystem:n})}unmount(t){let n=V(t);if(!this.mounts.has(n))throw new Error(`No filesystem mounted at '${t}'`);this.mounts.delete(n)}getMounts(){return Array.from(this.mounts.values()).map(t=>({mountPoint:t.mountPoint,filesystem:t.filesystem}))}isMountPoint(t){let n=V(t);return this.mounts.has(n)}validateMountPath(t){let n=t.split("/");for(let r of n)if(r==="."||r==="..")throw new Error(`Invalid mount point '${t}': contains '.' or '..' segments`)}validateMount(t){if(t==="/")throw new Error("Cannot mount at root '/'");for(let n of this.mounts.keys())if(n!==t){if(t.startsWith(`${n}/`))throw new Error(`Cannot mount at '${t}': inside existing mount '${n}'`);if(n.startsWith(`${t}/`))throw new Error(`Cannot mount at '${t}': would contain existing mount '${n}'`)}}routePath(t){z(t,"access");let n=V(t),r=null,s=0;for(let i of this.mounts.values()){let o=i.mountPoint;if(n===o)return{fs:i.filesystem,relativePath:"/"};n.startsWith(`${o}/`)&&o.length>s&&(r=i,s=o.length)}if(r){let i=n.slice(s);return{fs:r.filesystem,relativePath:i||"/"}}return{fs:this.baseFs,relativePath:n}}getChildMountPoints(t){let n=V(t),r=n==="/"?"/":`${n}/`,s=[];for(let i of this.mounts.keys())if(i.startsWith(r)){let a=i.slice(r.length).split("/")[0];a&&!s.includes(a)&&s.push(a)}return s}async readFile(t,n){let{fs:r,relativePath:s}=this.routePath(t);return r.readFile(s,n)}async readFileBytes(t){let{fs:n,relativePath:r}=this.routePath(t);return zn(n,r)}async readFileBuffer(t){let{fs:n,relativePath:r}=this.routePath(t);return n.readFileBuffer(r)}async writeFile(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.writeFile(i,n,r)}async appendFile(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.appendFile(i,n,r)}async exists(t){let n=V(t);if(this.mounts.has(n)||this.getChildMountPoints(n).length>0)return!0;let{fs:s,relativePath:i}=this.routePath(t);return s.exists(i)}async stat(t){let n=V(t),r=this.mounts.get(n);if(r)try{return await r.filesystem.stat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(n).length>0)try{return await this.baseFs.stat(n)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.stat(o)}async lstat(t){let n=V(t),r=this.mounts.get(n);if(r)try{return await r.filesystem.lstat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(n).length>0)try{return await this.baseFs.lstat(n)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.lstat(o)}async mkdir(t,n){let r=V(t);if(this.mounts.has(r)){if(n?.recursive)return;throw new Error(`EEXIST: directory already exists, mkdir '${t}'`)}if(this.getChildMountPoints(r).length>0&&n?.recursive)return;let{fs:i,relativePath:o}=this.routePath(t);return i.mkdir(o,n)}async readdir(t){let n=V(t),r=new Set,s=null,{fs:i,relativePath:o}=this.routePath(t);try{let l=await i.readdir(o);for(let c of l)r.add(c)}catch(l){let c=l.code,u=l.message||"";if(c!=="ENOENT"&&!u.includes("ENOENT"))throw l;s=l}let a=this.getChildMountPoints(n);for(let l of a)r.add(l);if(r.size===0&&s&&!this.mounts.has(n))throw s;return Array.from(r).sort()}async rm(t,n){let r=V(t);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot remove '${t}'`);if(this.getChildMountPoints(r).length>0)throw new Error(`EBUSY: contains mount points, cannot remove '${t}'`);let{fs:i,relativePath:o}=this.routePath(t);return i.rm(o,n)}async cp(t,n,r){if((await this.stat(t)).isDirectory&&Ut(t,n))throw new Error(`EINVAL: cannot copy '${t}' into itself, '${n}'`);let i=this.routePath(t),o=this.routePath(n);return i.fs===o.fs?i.fs.cp(i.relativePath,o.relativePath,r):this.crossMountCopy(t,n,r)}async mv(t,n){let r=V(t);if((await this.stat(t)).isDirectory&&Ut(t,n))throw new Error(`EINVAL: cannot move '${t}' into itself, '${n}'`);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot move '${t}'`);let i=this.routePath(t),o=this.routePath(n);if(i.fs===o.fs)return i.fs.mv(i.relativePath,o.relativePath);await this.cp(t,n,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,n){return tn(t,n)}getAllPaths(){let t=new Set;for(let n of this.baseFs.getAllPaths())t.add(n);for(let n of this.mounts.keys()){let r=n.split("/").filter(Boolean),s="";for(let o of r)s=`${s}/${o}`,t.add(s);let i=this.mounts.get(n);if(i)for(let o of i.filesystem.getAllPaths())o==="/"?t.add(n):t.add(`${n}${o}`)}return Array.from(t).sort()}async chmod(t,n){let r=V(t),s=this.mounts.get(r);if(s)return s.filesystem.chmod("/",n);let{fs:i,relativePath:o}=this.routePath(t);return i.chmod(o,n)}async symlink(t,n){let{fs:r,relativePath:s}=this.routePath(n);return r.symlink(t,s)}async link(t,n){let r=this.routePath(t),s=this.routePath(n);if(r.fs!==s.fs)throw new Error(`EXDEV: cross-device link not permitted, link '${t}' -> '${n}'`);return r.fs.link(r.relativePath,s.relativePath)}async readlink(t){let{fs:n,relativePath:r}=this.routePath(t);return n.readlink(r)}async realpath(t){let n=V(t);if(this.mounts.get(n))return n;let{fs:s,relativePath:i}=this.routePath(t),o=await s.realpath(i);for(let[a,l]of this.mounts)if(n===a||n.startsWith(`${a}/`))return o==="/"?a:`${a}${o}`;return o}async crossMountCopy(t,n,r){let s=await this.lstat(t);if(s.isFile){let i=await this.readFileBuffer(t);await this.writeFile(n,i),await this.chmod(n,s.mode)}else if(s.isDirectory){if(!r?.recursive)throw new Error(`cp: ${t} is a directory (not copied)`);await this.mkdir(n,{recursive:!0});let i=await this.readdir(t);for(let o of i){let a=jt(t,o),l=jt(n,o);await this.crossMountCopy(a,l,r)}}else if(s.isSymbolicLink){let i=await this.readlink(t);await this.symlink(i,n)}}async utimes(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.utimes(i,n,r)}};var xs="/dev/fd",wu=63,Ap=10,gu=wu-Ap+1,yo=class extends Ve{isLiveDescriptor;constructor(t){super(),this.isLiveDescriptor=t}assertLiveDescriptor(t,n){this.isLiveDescriptor(t)||this.refuse(t,n)}refuse(t,n){throw new Error(`EROFS: read-only file system, ${n} '${xs}${t}'`)}async writeFile(t,n,r){return this.assertLiveDescriptor(t,"write"),super.writeFile(t,n,r)}async appendFile(t,n,r){return this.assertLiveDescriptor(t,"append"),super.appendFile(t,n,r)}async rm(t,n){return this.assertLiveDescriptor(t,"rm"),super.rm(t,n)}async mkdir(t,n){this.refuse(t,"mkdir")}async cp(t,n){this.refuse(n,"cp")}async mv(t,n){this.refuse(n,"mv")}async symlink(t,n){this.refuse(n,"symlink")}async link(t,n){this.refuse(n,"link")}async chmod(t,n){this.refuse(t,"chmod")}async utimes(t,n,r){this.refuse(t,"utimes")}};function vp(e){let t=new yo(n=>Eu(e).some(r=>r.path===`${xs}${n}`));e.fs=new Lt({base:e.fs,mounts:[{mountPoint:xs,filesystem:t}]}),e.state.processSubstitutionFsMounted=!0}async function kp(e,t,n){try{await e.fs.writeFile(t,n,"binary");return}catch(r){if(e.state.processSubstitutionFsMounted)throw r;vp(e)}await e.fs.writeFile(t,n,"binary")}async function Pp(e,t){try{await e.fs.rm(t,{force:!0})}catch{}}function Eu(e){let t=e.state.processSubstitutions;if(t)return t;let n=[];return e.state.processSubstitutions=n,n}async function bu(e,t,n){let r=e.substitutionDepth??0,s=e.limits.maxSubstitutionDepth;if(r>=s)throw new $(`Process substitution nesting limit exceeded (${s})`,"substitution_depth");let i=e.substitutionDepth,o=new Map(e.state.env),a=ft(e.state.arrays),l=e.state.cwd,c=e.state.bashPid,u=e.state.suppressVerbose,f=e.state.groupStdin,d=e.state.lastExitCode,h=e.state.env.get("?");e.substitutionDepth=r+1,e.state.bashPid=e.state.nextVirtualPid++,e.state.suppressVerbose=!0,n!==void 0&&(e.state.groupStdin=n);let p;try{p=await e.executeScript(t)}catch(m){if(m instanceof $)throw m;if(m instanceof q)return{stdout:m.stdout,stderr:m.stderr,exitCode:m.exitCode};throw m}finally{e.substitutionDepth=i,e.state.env=o,e.state.arrays=a,e.state.cwd=l,e.state.bashPid=c,e.state.suppressVerbose=u,e.state.groupStdin=f,e.state.lastExitCode=d,h!==void 0?e.state.env.set("?",h):e.state.env.delete("?")}return p}async function Su(e,t){let n=Eu(e);if(n.length>=gu)throw new $(`Process substitution limit exceeded (${gu} concurrent)`,"file_descriptors");let r="";if(t.direction==="input"){let o=await bu(e,t.body,void 0);if(o.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+o.stderr),r=Vt(o),r.length>e.limits.maxStringLength)throw new $(`process substitution: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length")}let s=wu-n.length,i=`${xs}/${s}`;n.push({fd:s,path:i,direction:t.direction,body:t.body});try{await kp(e,i,r)}catch(o){throw n.pop(),o}return i}function Au(e){return e.state.processSubstitutions?.length??0}var xp={stdout:"",stderr:""};async function go(e,t){let n=e.state.processSubstitutions;if(!n||n.length<=t)return xp;let r="",s="";for(;n.length>t;){let i=n[n.length-1],o="";if(i.direction==="output")try{o=await zn(e.fs,i.path)}catch{}if(await Pp(e,i.path),n.pop(),i.direction==="output"){let a=await bu(e,i.body,o);r+=Vt(a),s+=a.stderr}}return{stdout:r,stderr:s}}function pn(e,t,n){if(e.length>t)throw new $(`${n}: string length limit exceeded (${t} bytes)`,"string_length")}async function vt(e,t,n=!1){let r=[];for(let s of t)r.push(await ot(e,s,n));return r.join("")}function $p(e){return yu(e)}function ku(e){if(e.parts.length===0)return!0;for(let t of e.parts)if(!$p(t))return!1;return!0}function Cp(e,t,n=!1){let r=mu(t);if(r!==null)return r;switch(t.type){case"TildeExpansion":return n?t.user===null?"~":`~${t.user}`:(e.coverage?.hit("bash:expansion:tilde"),t.user===null?e.state.env.get("HOME")??"/home/user":t.user==="root"?"/root":`~${t.user}`);case"Glob":return fo(e,t.pattern);default:return null}}async function oe(e,t){return Eo(e,t)}async function Pu(e,t){let n=[];for(let r of t.parts)if(r.type==="Escaped")n.push(Qn(r.value));else if(r.type==="SingleQuoted")n.push(r.value);else if(r.type==="DoubleQuoted"){let s=await vt(e,r.parts);n.push(s)}else if(r.type==="TildeExpansion"){let s=await ot(e,r);n.push(Qn(s))}else n.push(await ot(e,r));return n.join("")}async function xu(e,t){let n=[];for(let r of t.parts)if(r.type==="Escaped"){let s=r.value;"()|*?[]".includes(s)?n.push(`\\${s}`):n.push(s)}else if(r.type==="SingleQuoted")n.push(it(r.value));else if(r.type==="DoubleQuoted"){let s=await vt(e,r.parts);n.push(it(s))}else n.push(await ot(e,r));return n.join("")}async function $u(e,t){let n=[];for(let r of t.parts)if(r.type==="SingleQuoted")n.push(it(r.value));else if(r.type==="Escaped"){let s=r.value;"*?[]\\()|".includes(s)?n.push(`\\${s}`):n.push(s)}else if(r.type==="DoubleQuoted"){let s=await vt(e,r.parts);n.push(it(s))}else r.type==="Glob"?Tc(r.pattern)?n.push(await Lc(e,r.pattern)):n.push(fo(e,r.pattern)):r.type==="Literal"?n.push(r.value):n.push(await ot(e,r));return n.join("")}function Cs(e){for(let t of e)if(t.type==="BraceExpansion"||t.type==="DoubleQuoted"&&Cs(t.parts))return!0;return!1}var vu=1e5;async function Cu(e,t,n={count:0}){let r=()=>{n.count++,e.executionScope.consumeLimited("brace_operations",1,Math.min(vu,e.limits.maxBraceExpansionResults),"brace expansion")},s=(o,a)=>{if(o.length>=e.limits.maxBraceExpansionResults)throw new $(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");r(),o.push(a)},i=[[]];for(let o of t)if(o.type==="BraceExpansion"){let a=[],l=!1,c="";for(let d of o.items)if(d.type==="Range"){let h=co(d.start,d.end,d.step,d.startStr,d.endStr,{maxResults:e.limits.maxBraceExpansionResults,maxStringBytes:e.limits.maxStringLength});if(h.expanded)for(let p of h.expanded)s(a,p);else{l=!0,c=h.literal;break}}else{let h=await Cu(e,d.word.parts,n);for(let p of h){let m=[];for(let E of p)typeof E=="string"?m.push(E):m.push(await ot(e,E));s(a,m.join(""))}}if(l){for(let d of i)r(),d.push(c);continue}if(i.length*a.length>e.limits.maxBraceExpansionResults||n.count>vu)throw new $(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");let f=[];for(let d of i)for(let h of a){if(f.length>=e.limits.maxBraceExpansionResults)throw new $(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");r(),f.push([...d,h])}i=f}else for(let a of i)r(),a.push(o);return i}async function Nu(e,t){let n=t.parts;if(!Cs(n))return[await oe(e,t)];let r=await Cu(e,n),s=[];for(let i of r){let o=[];for(let a of i)typeof a=="string"?o.push(a):o.push(await ot(e,a));s.push(ho(e,o.join("")))}return s}function Np(){return{expandWordAsync:Eo,expandWordForGlobbing:$u,expandWordWithBracesAsync:Nu,expandWordPartsAsync:vt,expandPart:ot,expandParameterAsync:$s,hasBraceExpansion:Cs,evaluateArithmetic:J,buildIfsCharClassPattern:fc,smartWordSplit:pu}}async function kt(e,t){return fu(e,t,Np())}function Rp(e){for(let t of e){if(t.type==="ParameterExpansion")return t.parameter;if(t.type==="Literal")return t.value}return""}function wo(e,t){if(Number.parseInt(e.state.env.get("#")||"0",10)<2)return!1;function r(s){for(let i of s)if(i.type==="DoubleQuoted"){for(let o of i.parts)if(o.type==="ParameterExpansion"&&o.parameter==="@"&&!o.operation)return!0}return!1}return r(t.parts)}async function Ru(e,t){if(wo(e,t))return{error:`bash: $@: ambiguous redirect
107
- `};let n=t.parts,{hasQuoted:r}=vr(n);if(Cs(n)&&(await Nu(e,t)).length>1)return{error:`bash: ${n.map(h=>h.type==="Literal"?h.value:h.type==="BraceExpansion"?`{${h.items.map(m=>{if(m.type==="Range"){let E=m.step?`..${m.step}`:"";return`${m.startStr??m.start}..${m.endStr??m.end}${E}`}return m.word.parts.map(E=>E.type==="Literal"?E.value:"").join("")}).join(",")}}`:"").join("")}: ambiguous redirect
108
- `};let s=await Eo(e,t),{hasParamExpansion:i,hasCommandSub:o}=vr(n);if((i||o)&&!r&&!De(e.state.env)){let f=ke(e.state.env);if(de(s,f,e.limits.maxArrayElements).length>1)return{error:`bash: $${Rp(n)}: ambiguous redirect
109
- `}}if(r||e.state.options.noglob||n.some(f=>f.type==="ProcessSubstitution"))return{target:s};let l=await $u(e,t);if(!Tt(l,e.state.shoptOptions.extglob))return{target:s};let c=new un(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")}),u=await c.expand(l);return u.length===0?c.hasFailglob()?{error:`bash: no match: ${s}
99
+ `,""):ce(e,o,p)||""}let u=ce(e,o,c);if(u!==void 0)return u;if(c===0){let f=e.state.env.get(o);if(f!==void 0)return f}if(n&&e.state.options.nounset)throw new Ke(`${o}[${c}]`);return""}if(/^[1-9][0-9]*$/.test(t)){let o=e.state.env.get(t);if(o===void 0&&n&&e.state.options.nounset)throw new Ke(t);return o||""}if(fe(e,t)){let o=Ge(e,t);if(o===void 0)return"";if(o!==t)return await le(e,o,n,r);let a=e.state.env.get(t);if((a===void 0||a==="")&&n&&e.state.options.nounset)throw new Ke(t);return a||""}let i=e.state.env.get(t);if(i!==void 0)return e.state.tempEnvBindings?.some(o=>o.has(t))&&(e.state.accessedTempEnvVars=e.state.accessedTempEnvVars||new Set,e.state.accessedTempEnvVars.add(t)),i;if(vt(e,t)){let o=ce(e,t,0);if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Ke(t);return""}if(n&&e.state.options.nounset)throw new Ke(t);return""}async function Lt(e,t){if(new Set(["?","$","#","_","-","0","PPID","UID","EUID","RANDOM","SECONDS","BASH_VERSION","!","BASHPID","LINENO"]).has(t))return!0;if(t==="@"||t==="*")return Number.parseInt(e.state.env.get("#")||"0",10)>0;if(t==="PWD"||t==="OLDPWD")return e.state.env.has(t);let r=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(r){let s=r[1],i=r[2];if(fe(e,s)){let l=Ge(e,s);if(l&&l!==s){if(l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/))return!1;s=l}}if(i==="@"||i==="*")return K(e,s).length>0?!0:e.state.env.has(s);if(e.state.associativeArrays?.has(s)){let l=vc(e,fs(i));return cn(e,s,l)}let a;if(/^-?\d+$/.test(i))a=Number.parseInt(i,10);else try{let l=new Q,c=oe(l,i);a=await ee(e,c.expression)}catch{let l=e.state.env.get(i);a=l?Number.parseInt(l,10):0,Number.isNaN(a)&&(a=0)}if(a<0){let l=K(e,s);if(l.length===0)return!1;let u=Math.max(...l.map(([f])=>typeof f=="number"?f:0))+1+a;return u<0?!1:cn(e,s,u)}return cn(e,s,a)}if(fe(e,t)){let s=Ge(e,t);return s===void 0||s===t?e.state.env.has(t):Lt(e,s)}return e.state.env.has(t)?!0:vt(e,t)?cn(e,t,0):!1}async function kc(e,t){let n="",r=0;for(;r<t.length;){if(t[r]==="$"){if(t[r+1]==="{"){let s=1,i=r+2;for(;i<t.length&&s>0;)t[i]==="{"?s++:t[i]==="}"&&s--,i++;n+=t.slice(r,i),r=i;continue}if(t[r+1]==="("){let s=1,i=r+2;for(;i<t.length&&s>0;)t[i]==="("?s++:t[i]===")"&&s--,i++;n+=t.slice(r,i),r=i;continue}if(/[a-zA-Z_]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await le(e,i);n+=o,r=s;continue}if(/[0-9]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[0-9]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await le(e,i);n+=o,r=s;continue}if(/[*@#?\-!$]/.test(t[r+1]||"")){let s=t[r+1],i=await le(e,s);n+=i,r+=2;continue}}if(t[r]==='"'){for(n+='"',r++;r<t.length&&t[r]!=='"';)if(t[r]==="$"&&/[a-zA-Z_]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await le(e,i);n+=o,r=s}else t[r]==="\\"?(n+=t[r],r++,r<t.length&&(n+=t[r],r++)):(n+=t[r],r++);r<t.length&&(n+='"',r++);continue}n+=t[r],r++}return n}async function yo(e,t){let n=t,r=t.startsWith('"')&&t.endsWith('"'),s=t.startsWith("'")&&t.endsWith("'");if((r||s)&&(n=t.slice(1,-1)),s)return n;let i="",o=0;for(;o<n.length;)if(n[o]==="$")if(n[o+1]==="("){let a=1,l=o+2;for(;l<n.length&&a>0;)n[l]==="("&&n[l-1]==="$"||n[l]==="("?a++:n[l]===")"&&a--,l++;let c=n.slice(o+2,l-1);if(e.execFn){let u=await e.execFn(c,{signal:e.state.signal});i+=u.stdout.replace(/\n+$/,""),u.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+u.stderr)}o=l}else if(n[o+1]==="{"){let a=1,l=o+2;for(;l<n.length&&a>0;)n[l]==="{"?a++:n[l]==="}"&&a--,l++;let c=n.slice(o+2,l-1),u=await le(e,c);i+=u,o=l}else if(/[a-zA-Z_]/.test(n[o+1]||"")){let a=o+1;for(;a<n.length&&/[a-zA-Z0-9_]/.test(n[a]);)a++;let l=n.slice(o+1,a),c=await le(e,l);i+=c,o=a}else i+=n[o],o++;else if(n[o]==="`"){let a=o+1;for(;a<n.length&&n[a]!=="`";)a++;let l=n.slice(o+1,a);if(e.execFn){let c=await e.execFn(l,{signal:e.state.signal});i+=c.stdout.replace(/\n+$/,""),c.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+c.stderr)}o=a+1}else i+=n[o],o++;return i}var Rr=1e4,go={maxResults:Rr,maxStringBytes:10*1024*1024};function xs(e,t,n,r){if(e.length>=n.maxResults)return!1;let s=W(t);if(s>n.maxStringBytes-r.value)throw new C(`brace expansion string limit exceeded (${n.maxStringBytes} bytes)`,"string_length");return e.push(t),r.value+=s,!0}function cp(e,t,n,r,s,i=go){let o=n??1;o===0&&(o=1);let a=Math.abs(o),l=[],c=0;if(r?.match(/^-?0\d/)&&(c=Math.max(c,r.replace(/^-/,"").length)),s?.match(/^-?0\d/)&&(c=Math.max(c,s.replace(/^-/,"").length)),c>i.maxStringBytes)throw new C(`brace expansion padding limit exceeded (${i.maxStringBytes} bytes)`,"string_length");let u={value:0},f=d=>{if(c>0){let h=d<0,p=String(Math.abs(d)).padStart(c,"0");return h?`-${p}`:p}return String(d)};if(e<=t)for(let d=e,h=0;d<=t&&h<Rr&&xs(l,f(d),i,u);d+=a,h++);else for(let d=e,h=0;d>=t&&h<Rr&&xs(l,f(d),i,u);d-=a,h++);return l}function up(e,t,n,r=go){let s=n??1;s===0&&(s=1);let i=e.charCodeAt(0),o=t.charCodeAt(0),a=Math.abs(s),l=e>="A"&&e<="Z",c=e>="a"&&e<="z",u=t>="A"&&t<="Z",f=t>="a"&&t<="z";if(l&&f||c&&u){let p=n!==void 0?`..${n}`:"";throw new Qr(`{${e}..${t}${p}}: invalid sequence`)}let d=[],h={value:0};if(i<=o)for(let p=i,m=0;p<=o&&m<Rr&&xs(d,String.fromCharCode(p),r,h);p+=a,m++);else for(let p=i,m=0;p>=o&&m<Rr&&xs(d,String.fromCharCode(p),r,h);p-=a,m++);return d}function wo(e,t,n,r,s,i=go){let o=n!==void 0?`..${n}`:"";return typeof e=="number"&&typeof t=="number"?{expanded:cp(e,t,n,r,s,i),literal:`{${e}..${t}${o}}`}:typeof e=="string"&&typeof t=="string"?{expanded:up(e,t,n,i),literal:`{${e}..${t}${o}}`}:{expanded:null,literal:`{${e}..${t}${o}}`}}function xc(e){if(e.statements.length!==1)return null;let t=e.statements[0];if(t.operators.length!==0||t.pipelines.length!==1)return null;let n=t.pipelines[0];if(n.negated||n.commands.length!==1)return null;let r=n.commands[0];if(r.type!=="SimpleCommand")return null;let s=r;if(s.name!==null||s.args.length!==0||s.assignments.length!==0||s.redirections.length!==1)return null;let i=s.redirections[0];return i.operator!=="<"||i.target.type!=="Word"?null:{target:i.target}}function Ft(e,t){return!!(/[*?[]/.test(e)||t&&/[@*+?!]\(/.test(e))}function Eo(e){let t="",n=0;for(;n<e.length;)e[n]==="\\"&&n+1<e.length?(t+=e[n+1],n+=2):(t+=e[n],n++);return t}function ot(e){return e.replace(/([*?[\]\\()|])/g,"\\$1")}function Yn(e){return e.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&")}function re(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function te(e,t,n=!1){let r="",s=0;for(;s<e.length;){let i=e[s];if(n&&(i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&s+1<e.length&&e[s+1]==="("){let o=fp(e,s+1);if(o!==-1){let a=e.slice(s+2,o),c=dp(a).map(f=>te(f,t,n)),u=c.length>0?c.join("|"):"(?:)";i==="@"?r+=`(?:${u})`:i==="*"?r+=`(?:${u})*`:i==="+"?r+=`(?:${u})+`:i==="?"?r+=`(?:${u})?`:i==="!"&&(r+=`(?!(?:${u})$).*`),s=o+1;continue}}if(i==="\\")if(s+1<e.length){let o=e[s+1];/[\\^$.|+(){}[\]*?]/.test(o)?r+=`\\${o}`:r+=o,s+=2}else r+="\\\\",s++;else if(i==="*")r+=t?".*":".*?",s++;else if(i==="?")r+=".",s++;else if(i==="["){let o=hp(e,s);if(o===-1)r+="\\[",s++;else{let a=e.slice(s+1,o);r+=pp(a),s=o+1}}else/[\^$.|+(){}]/.test(i)?(r+=`\\${i}`,s++):(r+=i,s++)}return r}function fp(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function dp(e){let t=[],n="",r=0,s=0;for(;s<e.length;){let i=e[s];if(i==="\\"){n+=i,s+1<e.length?(n+=e[s+1],s+=2):s++;continue}i==="("?(r++,n+=i):i===")"?(r--,n+=i):i==="|"&&r===0?(t.push(n),n=""):n+=i,s++}return t.push(n),t}function hp(e,t){let n=t+1;for(n<e.length&&e[n]==="^"&&n++,n<e.length&&e[n]==="]"&&n++;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==="]")return n;if(e[n]==="'"){let r=e.indexOf("'",n+1);if(r!==-1){n=r+1;continue}}if(e[n]==="["&&n+1<e.length&&e[n+1]===":"){let r=e.indexOf(":]",n+2);if(r!==-1){n=r+2;continue}}n++}return-1}function pp(e){let t="[",n=0;for((e[0]==="^"||e[0]==="!")&&(t+="^",n++);n<e.length;){if(e[n]==="'"){let s=e.indexOf("'",n+1);if(s!==-1){let i=e.slice(n+1,s);for(let o of i)o==="\\"?t+="\\\\":o==="]"?t+="\\]":o==="^"&&t==="["?t+="\\^":t+=o;n=s+1;continue}}if(e[n]==="["&&n+1<e.length&&e[n+1]===":"){let s=e.indexOf(":]",n+2);if(s!==-1){let i=e.slice(n+2,s);t+=yp(i),n=s+2;continue}}let r=e[n];r==="\\"?n+1<e.length?(t+=`\\${e[n+1]}`,n+=2):(t+="\\\\",n++):r==="-"&&n>0&&n<e.length-1?(t+="-",n++):r==="^"&&n===0?(t+="^",n++):(r==="]"&&n===0?t+="\\]":t+=r,n++)}return t+="]",t}var mp=new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]);function yp(e){return mp.get(e)??""}function kt(e,t,n,r,s){if(r==="prefix")return e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal"),ge(`^${n}`,"s").replace(t,"");let i=ge(`${n}$`,"s");if(s)return e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal"),i.replace(t,"");e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal");let o=ge(`^(?:.*)(${n})$`,"s").exec(t);if(!o)return t;let a=o[1]??"";return t.slice(0,t.length-a.length)}function Jn(e,t){let n=new Set;for(let r of e.state.env.keys())r.startsWith(t)&&n.add(r);for(let r of e.state.arrays?.keys()??[])r.startsWith(t)&&n.add(r);return[...n].sort()}function Ps(e,t,n,r,s){let i=new Gn(e.limits.maxStringLength,"pattern replacement",()=>new C(`pattern replacement: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length"));n.lastIndex=0;let o=0,a=n.exec(t);for(;a!==null&&(e.executionScope.consumeLimited("pattern_operations",1,e.limits.maxGlobOperations,"pattern replacement"),!(s&&a[0].length===0&&a.index===t.length||(i.append(t.slice(o,a.index)),i.append(r),o=a.index+a[0].length,!s)));)a[0].length===0&&(o++,n.lastIndex<=a.index&&(n.lastIndex=a.index+1)),a=n.exec(t);return i.append(t.slice(o)),n.lastIndex=0,i.build()}function Pc(e){let t=[],n=0;return{append(r){let s=W(r);if(s>e-n)throw new C(`prompt expansion exceeds string length limit (${e} bytes)`,"string_length");r&&t.push(r),n+=s},build:()=>t.join("")}}function gp(e,t,n){let r=(o,a=2)=>String(o).padStart(a,"0");if(e===""){let o=r(t.getHours()),a=r(t.getMinutes()),l=r(t.getSeconds());return`${o}:${a}:${l}`}let s=Pc(n),i=0;for(;i<e.length;)if(e[i]==="%"){if(i+1>=e.length){s.append("%"),i++;continue}let o=e[i+1];switch(o){case"H":s.append(r(t.getHours()));break;case"M":s.append(r(t.getMinutes()));break;case"S":s.append(r(t.getSeconds()));break;case"d":s.append(r(t.getDate()));break;case"m":s.append(r(t.getMonth()+1));break;case"Y":s.append(String(t.getFullYear()));break;case"y":s.append(r(t.getFullYear()%100));break;case"I":{let a=t.getHours()%12;a===0&&(a=12),s.append(r(a));break}case"p":s.append(t.getHours()<12?"AM":"PM");break;case"P":s.append(t.getHours()<12?"am":"pm");break;case"%":s.append("%");break;case"a":{let a=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];s.append(a[t.getDay()]);break}case"b":{let a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];s.append(a[t.getMonth()]);break}default:s.append(`%${o}`)}i+=2}else s.append(e[i]),i++;return s.build()}function Or(e,t){let n=Pc(e.limits.maxStringLength),r=0,s=e.state.env.get("USER")||e.state.env.get("LOGNAME")||"user",i=e.state.env.get("HOSTNAME")||"localhost",o=i.split(".")[0],a=e.state.env.get("PWD")||"/",l=e.state.env.get("HOME")||"/",c=a.startsWith(l)?`~${a.slice(l.length)}`:a,u=a.split("/").pop()||a,f=new Date,d=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],p=e.state.env.get("__COMMAND_NUMBER")||"1";for(;r<t.length;){let m=t[r];if(m==="\\"){if(r+1>=t.length){n.append("\\"),r++;continue}let E=t[r+1];if(E>="0"&&E<="7"){let S="",g=r+1;for(;g<t.length&&g<r+4&&t[g]>="0"&&t[g]<="7";)S+=t[g],g++;let y=Number.parseInt(S,8)%256;n.append(String.fromCharCode(y)),r=g;continue}switch(E){case"\\":n.append("\\"),r+=2;break;case"a":n.append("\x07"),r+=2;break;case"e":n.append("\x1B"),r+=2;break;case"n":n.append(`
100
+ `),r+=2;break;case"r":n.append("\r"),r+=2;break;case"$":n.append("$"),r+=2;break;case"[":case"]":r+=2;break;case"u":n.append(s),r+=2;break;case"h":n.append(o),r+=2;break;case"H":n.append(i),r+=2;break;case"w":n.append(c),r+=2;break;case"W":n.append(u),r+=2;break;case"d":{let S=String(f.getDate()).padStart(2," ");n.append(`${d[f.getDay()]} ${h[f.getMonth()]} ${S}`),r+=2;break}case"t":{let S=String(f.getHours()).padStart(2,"0"),g=String(f.getMinutes()).padStart(2,"0"),y=String(f.getSeconds()).padStart(2,"0");n.append(`${S}:${g}:${y}`),r+=2;break}case"T":{let S=f.getHours()%12;S===0&&(S=12);let g=String(S).padStart(2,"0"),y=String(f.getMinutes()).padStart(2,"0"),b=String(f.getSeconds()).padStart(2,"0");n.append(`${g}:${y}:${b}`),r+=2;break}case"@":{let S=f.getHours()%12;S===0&&(S=12);let g=String(S).padStart(2,"0"),y=String(f.getMinutes()).padStart(2,"0"),b=f.getHours()<12?"AM":"PM";n.append(`${g}:${y} ${b}`),r+=2;break}case"A":{let S=String(f.getHours()).padStart(2,"0"),g=String(f.getMinutes()).padStart(2,"0");n.append(`${S}:${g}`),r+=2;break}case"D":if(r+2<t.length&&t[r+2]==="{"){let S=t.indexOf("}",r+3);if(S!==-1){let g=t.slice(r+3,S);n.append(gp(g,f,e.limits.maxStringLength)),r=S+1}else n.append("\\D"),r+=2}else n.append("\\D"),r+=2;break;case"s":n.append("bash"),r+=2;break;case"v":n.append("5.0"),r+=2;break;case"V":n.append("5.0.0"),r+=2;break;case"j":n.append("0"),r+=2;break;case"l":n.append("tty"),r+=2;break;case"#":n.append(p),r+=2;break;case"!":n.append(p),r+=2;break;case"x":n.append("\\x"),r+=2;break;default:n.append(`\\${E}`),r+=2}}else n.append(m),r++}return n.build()}function hn(e){if(e==="")return"''";if(/[\n\r\t\x00-\x1f\x7f']/.test(e)){let n="$'";for(let r of e)switch(r){case"'":n+="\\'";break;case"\\":n+="\\\\";break;case`
101
+ `:n+="\\n";break;case"\r":n+="\\r";break;case" ":n+="\\t";break;default:{let s=r.charCodeAt(0);s<32||s===127?n+=`\\${s.toString(8).padStart(3,"0")}`:n+=r}}return`${n}'`}return`'${e}'`}function et(e,t){e.state.readonlyVars=e.state.readonlyVars||new Set,e.state.readonlyVars.add(t)}function He(e,t){return e.state.readonlyVars?.has(t)??!1}function de(e,t,n="bash"){if(He(e,t)){let r=`${n}: ${t}: readonly variable
102
+ `;throw new G(1,"",r)}return null}function xt(e,t){let n=e.state.exportedVars?.has(t)??!1;if(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(t),e.state.localScopes.length>0&&e.state.localScopes[e.state.localScopes.length-1].has(t)&&!n){for(e.state.localExportedVars||(e.state.localExportedVars=[]);e.state.localExportedVars.length<e.state.localScopes.length;)e.state.localExportedVars.push(new Set);e.state.localExportedVars[e.state.localExportedVars.length-1].add(t)}}function $s(e,t){e.state.exportedVars?.delete(t)}function pn(e,t){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t))return"";let n="",r=$e(e,t)?.kind==="indexed",s=e.state.associativeArrays?.has(t)??!1;return r&&!s&&(n+="a"),s&&(n+="A"),e.state.integerVars?.has(t)&&(n+="i"),fe(e,t)&&(n+="n"),He(e,t)&&(n+="r"),e.state.exportedVars?.has(t)&&(n+="x"),n}async function $c(e,t,n,r){return e.coverage?.hit("bash:expansion:default_value"),(n.isUnset||t.checkEmpty&&n.isEmpty)&&t.word?r(e,t.word.parts,n.inDoubleQuotes):n.effectiveValue}async function Cc(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:assign_default"),(r.isUnset||n.checkEmpty&&r.isEmpty)&&n.word){let o=await s(e,n.word.parts,r.inDoubleQuotes),a=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(a){let[,l,c]=a,u;if(/^\d+$/.test(c))u=Number.parseInt(c,10);else{try{let f=new Q,d=oe(f,c);u=await ee(e,d.expression)}catch{let f=e.state.env.get(c);u=f?Number.parseInt(f,10):0}Number.isNaN(u)&&(u=0)}H(e,l,u,o)}else e.state.env.set(t,o);return o}return r.effectiveValue}async function Nc(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:error_if_unset"),r.isUnset||n.checkEmpty&&r.isEmpty){let o=n.word?await s(e,n.word.parts,r.inDoubleQuotes):`${t}: parameter null or not set`;throw new G(1,"",`bash: ${o}
103
+ `)}return r.effectiveValue}async function Rc(e,t,n,r){return e.coverage?.hit("bash:expansion:use_alternative"),!(n.isUnset||t.checkEmpty&&n.isEmpty)&&t.word?r(e,t.word.parts,n.inDoubleQuotes):""}async function Oc(e,t,n,r,s){e.coverage?.hit("bash:expansion:pattern_removal");let i="",o=e.state.shoptOptions.extglob;if(n.pattern)for(let a of n.pattern.parts)if(a.type==="Glob")i+=te(a.pattern,n.greedy,o);else if(a.type==="Literal")i+=te(a.value,n.greedy,o);else if(a.type==="SingleQuoted"||a.type==="Escaped")i+=re(a.value);else if(a.type==="DoubleQuoted"){let l=await r(e,a.parts);i+=re(l)}else if(a.type==="ParameterExpansion"){let l=await s(e,a);i+=te(l,n.greedy,o)}else{let l=await s(e,a);i+=re(l)}return kt(e,t,i,n.side,n.greedy)}async function Dc(e,t,n,r,s){e.coverage?.hit("bash:expansion:pattern_replacement");let i="",o=e.state.shoptOptions.extglob;if(n.pattern)for(let c of n.pattern.parts)if(c.type==="Glob")i+=te(c.pattern,!0,o);else if(c.type==="Literal")i+=te(c.value,!0,o);else if(c.type==="SingleQuoted"||c.type==="Escaped")i+=re(c.value);else if(c.type==="DoubleQuoted"){let u=await r(e,c.parts);i+=re(u)}else if(c.type==="ParameterExpansion"){let u=await s(e,c);i+=te(u,!0,o)}else{let u=await s(e,c);i+=re(u)}let a=n.replacement?await r(e,n.replacement.parts):"";if(n.anchor==="start"?i=`^${i}`:n.anchor==="end"&&(i=`${i}$`),i==="")return t;let l=n.all?"gs":"s";try{let c=ge(i,l);return Ps(e,t,c,a,n.all)}catch(c){if(c instanceof C)throw c;return t}}function Ic(e,t,n){e.coverage?.hit("bash:expansion:length");let r=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(r){let s=r[1],i=K(e,s);return i.length>0?String(i.length):e.state.env.get(s)!==void 0?"1":"0"}if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t)&&vt(e,t)){if(t==="FUNCNAME"){let i=e.state.funcNameStack?.[0]||"";return String([...i].length)}if(t==="BASH_LINENO"){let i=e.state.callLineStack?.[0];return String(i!==void 0?[...String(i)].length:0)}let s=ce(e,t,0)||"";return String([...s].length)}return String([...n].length)}async function Tc(e,t,n,r){e.coverage?.hit("bash:expansion:substring");let s=await ee(e,r.offset.expression),i=r.length?await ee(e,r.length.expression):void 0;if(t==="@"||t==="*"){let c=Number.parseInt(e.state.env.get("#")||"0",10),u=[];for(let p=1;p<=c;p++)u.push(e.state.env.get(String(p))||"");let f=e.state.env.get("0")||"bash",d,h;if(s<=0)if(d=[f,...u],s<0){if(h=d.length+s,h<0)return""}else h=0;else d=u,h=s-1;if(h<0||h>=d.length)return"";if(i!==void 0){let p=i<0?d.length+i:h+i;return d.slice(h,Math.max(h,p)).join(" ")}return d.slice(h).join(" ")}let o=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(o){let c=o[1];if(e.state.associativeArrays?.has(c))throw new G(1,"",`bash: \${${c}[@]: 0: 3}: bad substitution
104
+ `);let u=K(e,c),f=0;if(s<0){if(u.length>0){let d=u[u.length-1][0],p=(typeof d=="number"?d:0)+1+s;if(p<0||(f=u.findIndex(([m])=>typeof m=="number"&&m>=p),f<0))return""}}else if(f=u.findIndex(([d])=>typeof d=="number"&&d>=s),f<0)return"";if(i!==void 0){if(i<0)throw new ue(`${o[1]}[@]: substring expression < 0`);return u.slice(f,f+i).map(([,d])=>d).join(" ")}return u.slice(f).map(([,d])=>d).join(" ")}let a=[...n],l=s;if(l<0&&(l=Math.max(0,a.length+l)),i!==void 0){if(i<0){let c=a.length+i;return a.slice(l,Math.max(l,c)).join("")}return a.slice(l,l+i).join("")}return a.slice(l).join("")}async function _c(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:case_modification"),n.pattern){let i=e.state.shoptOptions.extglob,o="";for(let f of n.pattern.parts)if(f.type==="Glob")o+=te(f.pattern,!0,i);else if(f.type==="Literal")o+=te(f.value,!0,i);else if(f.type==="SingleQuoted"||f.type==="Escaped")o+=re(f.value);else if(f.type==="DoubleQuoted"){let d=await r(e,f.parts);o+=re(d)}else if(f.type==="ParameterExpansion"){let d=await s(e,f);o+=te(d,!0,i)}let a=ge(`^(?:${o})$`),l=n.direction==="upper"?f=>f.toUpperCase():f=>f.toLowerCase(),c="",u=!1;for(let f of t)!n.all&&u?c+=f:a.test(f)?(c+=l(f),u=!0):c+=f;return c}return n.direction==="upper"?n.all?t.toUpperCase():t.charAt(0).toUpperCase()+t.slice(1):n.all?t.toLowerCase():t.charAt(0).toLowerCase()+t.slice(1)}function Lc(e,t,n,r,s){e.coverage?.hit("bash:expansion:transform");let i=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(i&&s.operator==="Q")return K(e,i[1]).map(([,c])=>hn(c)).join(" ");if(i&&s.operator==="a")return pn(e,i[1]);let o=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[.+\]$/);if(o&&s.operator==="a")return pn(e,o[1]);switch(s.operator){case"Q":return r?"":hn(n);case"P":return Or(e,n);case"a":return pn(e,t);case"A":return r?"":`${t}=${hn(n)}`;case"E":return n.replace(/\\([\\abefnrtv'"?])/g,(a,l)=>{switch(l){case"\\":return"\\";case"a":return"\x07";case"b":return"\b";case"e":return"\x1B";case"f":return"\f";case"n":return`
105
+ `;case"r":return"\r";case"t":return" ";case"v":return"\v";case"'":return"'";case'"':return'"';case"?":return"?";default:return l}});case"K":case"k":return r?"":hn(n);case"u":return n.charAt(0).toUpperCase()+n.slice(1);case"U":return n.toUpperCase();case"L":return n.toLowerCase();default:return n}}async function Fc(e,t,n,r,s,i,o=!1){if(e.coverage?.hit("bash:expansion:indirection"),fe(e,t))return Mn(e,t)||"";let a=/^[a-zA-Z_][a-zA-Z0-9_]*\[([@*])\]$/.test(t);if(r){if(s.innerOp?.type==="UseAlternative")return"";throw new rt(`\${!${t}}`)}let l=n;if(a&&(l===""||l.includes(" ")))throw new rt(`\${!${t}}`);let c=l.match(/^[a-zA-Z_][a-zA-Z0-9_]*\[(.+)\]$/);if(c&&c[1].includes("~"))throw new rt(`\${!${t}}`);if(s.innerOp){let u={type:"ParameterExpansion",parameter:l,operation:s.innerOp};return i(e,u,o)}return await le(e,l)}function Mc(e,t){e.coverage?.hit("bash:expansion:array_keys");let r=K(e,t.array).map(([s])=>String(s));return t.star?r.join(Y(e.state.env)):r.join(" ")}function Bc(e,t){e.coverage?.hit("bash:expansion:var_name_prefix");let n=Jn(e,t.prefix);return t.star?n.join(Y(e.state.env)):n.join(" ")}function Wc(e,t,n,r){let s=Number.parseInt(e.state.env.get("#")||"0",10),i=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(t==="*")return{isEmpty:s===0,effectiveValue:n};if(t==="@")return{isEmpty:s===0||s===1&&e.state.env.get("1")==="",effectiveValue:n};if(i){let[,o,a]=i,l=K(e,o);if(l.length===0)return{isEmpty:!0,effectiveValue:""};if(a==="*"){let c=Y(e.state.env),u=l.map(([,f])=>f).join(c);return{isEmpty:r?u==="":!1,effectiveValue:u}}return{isEmpty:l.length===1&&l.every(([,c])=>c===""),effectiveValue:l.map(([,c])=>c).join(" ")}}return{isEmpty:n==="",effectiveValue:n}}function Vc(e){let t=0;for(;t<e.length;){let n=e[t];if(n==="\\"&&t+1<e.length){t+=2;continue}if(n==="'"){let r=e.indexOf("'",t+1);if(r!==-1){t=r+1;continue}}if(n==="$"&&t+1<e.length&&e[t+1]==="("||n==="`")return!0;t++}return!1}function zc(e,t){let n=1,r=t,s=!1,i=!1;for(;r<e.length&&n>0;){let o=e[r];if(o==="\\"&&!s&&r+1<e.length){r+=2;continue}if(o==="'"&&!i){s=!s,r++;continue}if(o==='"'&&!s){i=!i,r++;continue}if(!s&&!i){if(o==="(")n++;else if(o===")"&&(n--,n===0))return r}r++}return-1}async function Cs(e,t){let n=new Q,r;try{r=n.parse(t)}catch{return""}let s=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let i=new Map(e.state.env),o=ht(e.state.arrays),a=e.state.cwd,l=e.state.suppressVerbose;e.state.suppressVerbose=!0;try{let c=await e.executeScript(r),u=c.exitCode;return e.state.env=i,e.state.arrays=o,e.state.cwd=a,e.state.suppressVerbose=l,e.state.lastExitCode=u,e.state.env.set("?",String(u)),c.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+c.stderr),e.state.bashPid=s,c.stdout.replace(/\n+$/,"")}catch(c){return e.state.env=i,e.state.arrays=o,e.state.cwd=a,e.state.bashPid=s,e.state.suppressVerbose=l,Yr(c),c instanceof G?(e.state.lastExitCode=c.exitCode,e.state.env.set("?",String(c.exitCode)),c.stdout?.replace(/\n+$/,"")??""):""}}function bo(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="'"){let i=t.indexOf("'",r+1);if(i!==-1){let o=t.slice(r+1,i);n+=ot(o),r=i+1;continue}}if(s==='"'){let i=-1,o=r+1;for(;o<t.length;){if(t[o]==="\\"){o+=2;continue}if(t[o]==='"'){i=o;break}o++}if(i!==-1){let a=t.slice(r+1,i),l=wp(e,a);n+=ot(l),r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}if(s==="\\"&&r+1<t.length){n+=s+t[r+1],r+=2;continue}n+=s,r++}return n}function wp(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="\\"&&r+1<t.length){let i=t[r+1];if(i==="$"||i==="`"||i==="\\"||i==='"'){n+=i,r+=2;continue}n+=s,r++;continue}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}n+=s,r++}return n}async function Uc(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="'"){let i=t.indexOf("'",r+1);if(i!==-1){let o=t.slice(r+1,i);n+=ot(o),r=i+1;continue}}if(s==='"'){let i=-1,o=r+1;for(;o<t.length;){if(t[o]==="\\"){o+=2;continue}if(t[o]==='"'){i=o;break}o++}if(i!==-1){let a=t.slice(r+1,i),l=await Ep(e,a);n+=ot(l),r=i+1;continue}}if(s==="$"&&r+1<t.length&&t[r+1]==="("){let i=zc(t,r+2);if(i!==-1){let o=t.slice(r+2,i),a=await Cs(e,o);n+=a,r=i+1;continue}}if(s==="`"){let i=t.indexOf("`",r+1);if(i!==-1){let o=t.slice(r+1,i),a=await Cs(e,o);n+=a,r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}if(s==="\\"&&r+1<t.length){n+=s+t[r+1],r+=2;continue}n+=s,r++}return n}async function Ep(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="\\"&&r+1<t.length){let i=t[r+1];if(i==="$"||i==="`"||i==="\\"||i==='"'){n+=i,r+=2;continue}n+=s,r++;continue}if(s==="$"&&r+1<t.length&&t[r+1]==="("){let i=zc(t,r+2);if(i!==-1){let o=t.slice(r+2,i),a=await Cs(e,o);n+=a,r=i+1;continue}}if(s==="`"){let i=t.indexOf("`",r+1);if(i!==-1){let o=t.slice(r+1,i),a=await Cs(e,o);n+=a,r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}n+=s,r++}return n}function So(e,t){if(!t.startsWith("~"))return t;e.coverage?.hit("bash:expansion:tilde");let n=e.state.env.get("HOME")!==void 0?e.state.env.get("HOME"):"/home/user";if(t==="~"||t.startsWith("~/"))return n+t.slice(1);let r=1;for(;r<t.length&&/[a-zA-Z0-9_-]/.test(t[r]);)r++;let s=t.slice(1,r),i=t.slice(r);return i!==""&&!i.startsWith("/")?t:s==="root"?`/root${i}`:t}function mn(e,t){return t.split(":").map(n=>So(e,n)).join(":")}function Te(e,t,n,r){if(e.length>n-t.length)throw new C(`${r} element limit exceeded (${n})`,"array_elements");for(let s of t)e.push(s)}async function bp(e,t,n,r){let s="";for(let i of t.parts)if(i.type==="Glob")s+=te(i.pattern,!0,e.state.shoptOptions.extglob);else if(i.type==="Literal")s+=te(i.value,!0,e.state.shoptOptions.extglob);else if(i.type==="SingleQuoted"||i.type==="Escaped")s+=re(i.value);else if(i.type==="DoubleQuoted"){let o=await n(e,i.parts);s+=re(o)}else if(i.type==="ParameterExpansion"){let o=await r(e,i);s+=te(o,!0,e.state.shoptOptions.extglob)}else{let o=await r(e,i);s+=re(o)}return s}async function jc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0];if(s.parts.length!==1||s.parts[0].type!=="ParameterExpansion"||s.parts[0].operation?.type!=="PatternReplacement")return null;let i=s.parts[0],o=i.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!o)return null;let a=o[1],l=o[2]==="*",c=i.operation,u=K(e,a),f=u.map(([,E])=>E);if(u.length===0){let E=e.state.env.get(a);E!==void 0&&f.push(E)}if(f.length===0)return{values:[],quoted:!0};let d="";c.pattern&&(d=await bp(e,c.pattern,n,r));let h=c.replacement?await n(e,c.replacement.parts):"",p=d;c.anchor==="start"?p=`^${d}`:c.anchor==="end"&&(p=`${d}$`);let m=[];try{let E=ge(p,c.all?"g":"");for(let S of f)m.push(E.replace(S,h))}catch{m.push(...f)}if(l){let E=Y(e.state.env);return{values:[m.join(E)],quoted:!0}}return{values:m,quoted:!0}}async function qc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0];if(s.parts.length!==1||s.parts[0].type!=="ParameterExpansion"||s.parts[0].operation?.type!=="PatternRemoval")return null;let i=s.parts[0],o=i.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!o)return null;let a=o[1],l=o[2]==="*",c=i.operation,u=K(e,a),f=u.map(([,m])=>m);if(u.length===0){let m=e.state.env.get(a);m!==void 0&&f.push(m)}if(f.length===0)return{values:[],quoted:!0};let d="",h=e.state.shoptOptions.extglob;if(c.pattern)for(let m of c.pattern.parts)if(m.type==="Glob")d+=te(m.pattern,c.greedy,h);else if(m.type==="Literal")d+=te(m.value,c.greedy,h);else if(m.type==="SingleQuoted"||m.type==="Escaped")d+=re(m.value);else if(m.type==="DoubleQuoted"){let E=await n(e,m.parts);d+=re(E)}else if(m.type==="ParameterExpansion"){let E=await r(e,m);d+=te(E,c.greedy,h)}else{let E=await r(e,m);d+=re(E)}let p=[];for(let m of f)p.push(kt(e,m,d,c.side,c.greedy));if(l){let m=Y(e.state.env);return{values:[p.join(m)],quoted:!0}}return{values:p,quoted:!0}}async function Gc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation?.type!=="DefaultValue"&&n.parts[0].operation?.type!=="UseAlternative"&&n.parts[0].operation?.type!=="AssignDefault")return null;let r=n.parts[0],s=r.operation,i=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/),o,a=!1;if(i){let l=i[1];a=i[2]==="*";let c=K(e,l),u=c.length>0||e.state.env.has(l),f=c.length===0||c.length===1&&c.every(([,h])=>h===""),d=s.checkEmpty??!1;if(s.type==="UseAlternative"?o=u&&!(d&&f):o=!u||d&&f,!o){if(c.length>0){let p=c.map(([,m])=>m);if(a){let m=Y(e.state.env);return{values:[p.join(m)],quoted:!0}}return{values:p,quoted:!0}}let h=e.state.env.get(l);return h!==void 0?{values:[h],quoted:!0}:{values:[],quoted:!0}}}else{let l=r.parameter,c=await Lt(e,l),u=await le(e,l),f=u==="",d=s.checkEmpty??!1;if(s.type==="UseAlternative"?o=c&&!(d&&f):o=!c||d&&f,!o)return{values:[u],quoted:!0}}if(o&&s.word){let l=s.word.parts,c=null,u=!1;for(let f of l)if(f.type==="ParameterExpansion"&&!f.operation){let d=f.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(d){c=d[1],u=d[2]==="*";break}}if(c){let f=K(e,c);if(f.length>0){let h=f.map(([,p])=>p);if(u||a){let p=Y(e.state.env);return{values:[h.join(p)],quoted:!0}}return{values:h,quoted:!0}}let d=e.state.env.get(c);return d!==void 0?{values:[d],quoted:!0}:{values:[],quoted:!0}}}return null}async function Hc(e,t,n,r,s){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let i=t[0],o=-1,a="",l=!1,c=null;for(let m=0;m<i.parts.length;m++){let E=i.parts[m];if(E.type==="ParameterExpansion"&&(E.operation?.type==="PatternRemoval"||E.operation?.type==="PatternReplacement")){let S=E.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(S){o=m,a=S[1],l=S[2]==="*",c=E.operation;break}}}if(o===-1||o===0&&o===i.parts.length-1)return null;let u="";for(let m=0;m<o;m++)u+=await r(e,i.parts[m]);let f="";for(let m=o+1;m<i.parts.length;m++)f+=await r(e,i.parts[m]);let d=K(e,a),h=d.map(([,m])=>m);if(d.length===0){let m=e.state.env.get(a);if(m!==void 0)h=[m];else{if(l)return{values:[u+f],quoted:!0};let E=u+f;return{values:E?[E]:[],quoted:!0}}}if(c?.type==="PatternRemoval"){let m=c,E="",S=e.state.shoptOptions.extglob;if(m.pattern)for(let g of m.pattern.parts)if(g.type==="Glob")E+=te(g.pattern,m.greedy,S);else if(g.type==="Literal")E+=te(g.value,m.greedy,S);else if(g.type==="SingleQuoted"||g.type==="Escaped")E+=re(g.value);else if(g.type==="DoubleQuoted"){let y=await s(e,g.parts);E+=re(y)}else if(g.type==="ParameterExpansion"){let y=await r(e,g);E+=te(y,m.greedy,S)}else{let y=await r(e,g);E+=re(y)}h=h.map(g=>kt(e,g,E,m.side,m.greedy))}else if(c?.type==="PatternReplacement"){let m=c,E="";if(m.pattern)for(let y of m.pattern.parts)if(y.type==="Glob")E+=te(y.pattern,!0,e.state.shoptOptions.extglob);else if(y.type==="Literal")E+=te(y.value,!0,e.state.shoptOptions.extglob);else if(y.type==="SingleQuoted"||y.type==="Escaped")E+=re(y.value);else if(y.type==="DoubleQuoted"){let b=await s(e,y.parts);E+=re(b)}else if(y.type==="ParameterExpansion"){let b=await r(e,y);E+=te(b,!0,e.state.shoptOptions.extglob)}else{let b=await r(e,y);E+=re(b)}let S=m.replacement?await s(e,m.replacement.parts):"",g=E;m.anchor==="start"?g=`^${E}`:m.anchor==="end"&&(g=`${E}$`);try{let y=ge(g,m.all?"g":"");h=h.map(b=>y.replace(b,S))}catch{}}if(l){let m=Y(e.state.env);return{values:[u+h.join(m)+f],quoted:!0}}return h.length===1?{values:[u+h[0]+f],quoted:!0}:{values:[u+h[0],...h.slice(1,-1),h[h.length-1]+f],quoted:!0}}async function Zc(e,t,n,r){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o="",a=!1;for(let h=0;h<s.parts.length;h++){let p=s.parts[h];if(p.type==="ParameterExpansion"&&!p.operation){let m=p.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(m){i=h,o=m[1],a=m[2]==="*";break}}}if(i===-1)return null;let l="";for(let h=0;h<i;h++)l+=await r(e,s.parts[h]);let c="";for(let h=i+1;h<s.parts.length;h++)c+=await r(e,s.parts[h]);let u=K(e,o),f=u.map(([,h])=>h);if(u.length===0){let h=e.state.env.get(o);if(h!==void 0)return{values:[l+h+c],quoted:!0};if(a)return{values:[l+c],quoted:!0};let p=l+c;return{values:p?[p]:[],quoted:!0}}if(a){let h=Y(e.state.env);return{values:[l+f.join(h)+c],quoted:!0}}return f.length===1?{values:[l+f[0]+c],quoted:!0}:{values:[l+f[0],...f.slice(1,-1),f[f.length-1]+c],quoted:!0}}async function Qc(e,t,n){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let r=t[0];if(r.parts.length!==1||r.parts[0].type!=="ParameterExpansion"||r.parts[0].operation?.type!=="Substring")return null;let s=r.parts[0],i=s.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!i)return null;let o=i[1],a=i[2]==="*",l=s.operation;if(e.state.associativeArrays?.has(o))throw new G(1,"",`bash: \${${o}[@]: 0: 3}: bad substitution
106
+ `);let c=l.offset?await n(e,l.offset.expression):0,u=l.length?await n(e,l.length.expression):void 0,f=K(e,o);if(f.length>e.limits.maxArrayElements)throw new C(`array transform element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let d=0;if(c<0){if(f.length>0){let p=f[f.length-1][0],E=(typeof p=="number"?p:0)+1+c;if(E<0)return{values:[],quoted:!0};d=f.findIndex(([S])=>typeof S=="number"&&S>=E),d<0&&(d=f.length)}}else d=f.findIndex(([p])=>typeof p=="number"&&p>=c),d<0&&(d=f.length);let h;if(u!==void 0){if(u<0)throw new ue(`${o}[@]: substring expression < 0`);h=f.slice(d,d+u).map(([,p])=>p)}else h=f.slice(d).map(([,p])=>p);if(h.length===0)return{values:[],quoted:!0};if(a){let p=Y(e.state.env);return{values:[h.join(p)],quoted:!0}}return{values:h,quoted:!0}}function Kc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation?.type!=="Transform")return null;let r=n.parts[0],s=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!s)return null;let i=s[1],o=s[2]==="*",a=r.operation,l=K(e,i);if(l.length===0){let d=e.state.env.get(i);if(d!==void 0){let h;switch(a.operator){case"a":h="";break;case"P":h=Or(e,d);break;case"Q":h=hn(d);break;default:h=d}if(W(h)>e.limits.maxStringLength)throw new C(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[h],quoted:!0}}return o?{values:[""],quoted:!0}:{values:[],quoted:!0}}let c=pn(e,i),u=[],f=0;for(let[,d]of l){let h;switch(a.operator){case"a":h=c;break;case"P":h=Or(e,d);break;case"Q":h=hn(d);break;case"u":h=d.charAt(0).toUpperCase()+d.slice(1);break;case"U":h=d.toUpperCase();break;case"L":h=d.toLowerCase();break;default:h=d}let p=W(h);if(p>e.limits.maxStringLength-f)throw new C(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");u.push(h),f+=p}if(o){let d=Y(e.state.env);if(Math.max(0,u.length-1)*W(d)>e.limits.maxStringLength-f)throw new C(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u.join(d)],quoted:!0}}return{values:u,quoted:!0}}function Xc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion")return null;let r=n.parts[0];if(r.operation)return null;let s=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(@)\]$/);if(!s)return null;let i=s[1];if(fe(e,i)){let l=Mn(e,i);if(l?.endsWith("[@]")||l?.endsWith("[*]"))return{values:[],quoted:!0}}let o=K(e,i);if(o.length>0)return{values:o.map(([,l])=>l),quoted:!0};let a=e.state.env.get(i);return a!==void 0?{values:[a],quoted:!0}:{values:[],quoted:!0}}function Yc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation)return null;let s=n.parts[0].parameter;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)||!fe(e,s))return null;let i=Mn(e,s);if(!i)return null;let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(@)\]$/);if(!o)return null;let a=o[1],l=K(e,a);if(l.length>0)return{values:l.map(([,u])=>u),quoted:!0};let c=e.state.env.get(a);return c!==void 0?{values:[c],quoted:!0}:{values:[],quoted:!0}}async function Jc(e,t,n,r,s){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let i=t[0];if(i.parts.length!==1||i.parts[0].type!=="ParameterExpansion"||i.parts[0].operation?.type!=="Indirection")return null;let o=i.parts[0],a=o.operation,l=await le(e,o.parameter),c=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!c){if(!a.innerOp&&(l==="@"||l==="*")){let p=Number.parseInt(e.state.env.get("#")||"0",10),m=[];for(let E=1;E<=p;E++)m.push(e.state.env.get(String(E))||"");return l==="*"?{values:[m.join(Y(e.state.env))],quoted:!0}:{values:m,quoted:!0}}return null}let u=c[1],f=c[2]==="*",d=K(e,u);if(a.innerOp){if(a.innerOp.type==="Substring")return Sp(e,d,u,f,a.innerOp);if(a.innerOp.type==="DefaultValue"||a.innerOp.type==="UseAlternative"||a.innerOp.type==="AssignDefault"||a.innerOp.type==="ErrorIfUnset")return Ap(e,d,u,f,a.innerOp,s);if(a.innerOp.type==="Transform"&&a.innerOp.operator==="a"){let m=pn(e,u),E=d.map(()=>m);return f?{values:[E.join(Y(e.state.env))],quoted:!0}:{values:E,quoted:!0}}let p=[];for(let[,m]of d){let E={type:"ParameterExpansion",parameter:"_indirect_elem_",operation:a.innerOp},S=e.state.env.get("_indirect_elem_");e.state.env.set("_indirect_elem_",m);try{let g=await r(e,E,!0);p.push(g)}finally{S!==void 0?e.state.env.set("_indirect_elem_",S):e.state.env.delete("_indirect_elem_")}}return f?{values:[p.join(Y(e.state.env))],quoted:!0}:{values:p,quoted:!0}}if(d.length>0){let p=d.map(([,m])=>m);return f?{values:[p.join(Y(e.state.env))],quoted:!0}:{values:p,quoted:!0}}let h=e.state.env.get(u);return h!==void 0?{values:[h],quoted:!0}:{values:[],quoted:!0}}async function Sp(e,t,n,r,s){let i=s.offset?await ee(e,s.offset.expression):0,o=s.length?await ee(e,s.length.expression):void 0,a=0;if(i<0){if(t.length>0){let u=t[t.length-1][0],d=(typeof u=="number"?u:0)+1+i;if(d<0)return{values:[],quoted:!0};if(a=t.findIndex(([h])=>typeof h=="number"&&h>=d),a<0)return{values:[],quoted:!0}}}else if(a=t.findIndex(([u])=>typeof u=="number"&&u>=i),a<0)return{values:[],quoted:!0};let l;if(o!==void 0){if(o<0)throw new ue(`${n}[@]: substring expression < 0`);l=t.slice(a,a+o)}else l=t.slice(a);let c=l.map(([,u])=>u);return r?{values:[c.join(Y(e.state.env))],quoted:!0}:{values:c,quoted:!0}}async function Ap(e,t,n,r,s,i){let o=s.checkEmpty??!1,a=t.map(([,u])=>u),l=t.length===0,c=t.length===0;if(s.type==="UseAlternative")return!c&&!(o&&l)&&s.word?{values:[await i(e,s.word.parts,!0)],quoted:!0}:{values:[],quoted:!0};if(s.type==="DefaultValue")return(c||o&&l)&&s.word?{values:[await i(e,s.word.parts,!0)],quoted:!0}:r?{values:[a.join(Y(e.state.env))],quoted:!0}:{values:a,quoted:!0};if(s.type==="AssignDefault"){if((c||o&&l)&&s.word){let f=await i(e,s.word.parts,!0);return H(e,n,0,f),{values:[f],quoted:!0}}return r?{values:[a.join(Y(e.state.env))],quoted:!0}:{values:a,quoted:!0}}return r?{values:[a.join(Y(e.state.env))],quoted:!0}:{values:a,quoted:!0}}async function eu(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="UseAlternative"&&t[0].operation?.type!=="DefaultValue")return null;let n=t[0],r=n.operation,s=r?.word;if(!s||s.parts.length!==1||s.parts[0].type!=="DoubleQuoted")return null;let i=s.parts[0];if(i.parts.length!==1||i.parts[0].type!=="ParameterExpansion"||i.parts[0].operation?.type!=="Indirection")return null;let o=i.parts[0],l=(await le(e,o.parameter)).match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!l)return null;let c=await Lt(e,n.parameter),u=await le(e,n.parameter)==="",f=r.checkEmpty??!1,d;if(r.type==="UseAlternative"?d=c&&!(f&&u):d=!c||f&&u,d){let h=l[1],p=l[2]==="*",m=K(e,h);if(m.length>0){let S=m.map(([,g])=>g);return p?{values:[S.join(Y(e.state.env))],quoted:!0}:{values:S,quoted:!0}}let E=e.state.env.get(h);return E!==void 0?{values:[E],quoted:!0}:{values:[],quoted:!0}}return{values:[],quoted:!1}}async function tu(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="Indirection")return null;let n=t[0],s=n.operation.innerOp;if(!s||s.type!=="UseAlternative"&&s.type!=="DefaultValue")return null;let i=s.word;if(!i||i.parts.length!==1||i.parts[0].type!=="DoubleQuoted")return null;let o=i.parts[0];if(o.parts.length!==1||o.parts[0].type!=="ParameterExpansion"||o.parts[0].operation?.type!=="Indirection")return null;let a=o.parts[0],c=(await le(e,a.parameter)).match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!c)return null;let u=await le(e,n.parameter),f=await Lt(e,n.parameter),d=u==="",h=s.checkEmpty??!1,p;if(s.type==="UseAlternative"?p=f&&!(h&&d):p=!f||h&&d,p){let m=c[1],E=c[2]==="*",S=K(e,m);if(S.length>0){let y=S.map(([,b])=>b);return E?{values:[y.join(Y(e.state.env))],quoted:!0}:{values:y,quoted:!0}}let g=e.state.env.get(m);return g!==void 0?{values:[g],quoted:!0}:{values:[],quoted:!0}}return{values:[],quoted:!1}}function nu(e){let t=Number.parseInt(e.state.env.get("#")||"0",10);if(t>e.limits.maxArrayElements)throw new C(`positional parameter element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let n=[],r=0;for(let s=1;s<=t;s++){let i=e.state.env.get(String(s))||"",o=W(i);if(o>e.limits.maxStringLength-r)throw new C(`positional parameter string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");n.push(i),r+=o}return n}function Ns(e,t,n){if(W(t)>n-W(e))throw new C(`positional expansion string limit exceeded (${n} bytes)`,"string_length");return e+t}function Ao(e,t,n,r){if(e.length>=r.limits.maxArrayElements)throw new C(`positional expansion element limit exceeded (${r.limits.maxArrayElements})`,"array_elements");let s=W(t);if(s>r.limits.maxStringLength-n.value)throw new C(`positional expansion string limit exceeded (${r.limits.maxStringLength} bytes)`,"string_length");e.push(t),n.value+=s}async function ru(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let g=0;g<s.parts.length;g++){let y=s.parts[g];if(y.type==="ParameterExpansion"&&(y.parameter==="@"||y.parameter==="*")&&y.operation?.type==="Substring"){i=g,o=y.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=l.offset?await n(e,l.offset.expression):0,u=l.length?await n(e,l.length.expression):void 0,f=Number.parseInt(e.state.env.get("#")||"0",10),d=[];for(let g=1;g<=f;g++)d.push(e.state.env.get(String(g))||"");let h=e.state.env.get("0")||"bash",p;if(c<=0){let g=[h,...d],y=g.length+c;if(y<0)p=[];else{let b=c<0?y:0;if(u!==void 0){let A=u<0?g.length+u:b+u;p=g.slice(b,Math.max(b,A))}else p=g.slice(b)}}else{let g=c-1;if(g>=d.length)p=[];else if(u!==void 0){let y=u<0?d.length+u:g+u;p=d.slice(g,Math.max(g,y))}else p=d.slice(g)}let m="";for(let g=0;g<i;g++)m+=await r(e,s.parts[g]);let E="";for(let g=i+1;g<s.parts.length;g++)E+=await r(e,s.parts[g]);if(p.length===0){let g=m+E;return{values:g?[g]:[],quoted:!0}}if(o){let g=Y(e.state.env);return{values:[m+p.join(g)+E],quoted:!0}}return p.length===1?{values:[m+p[0]+E],quoted:!0}:{values:[m+p[0],...p.slice(1,-1),p[p.length-1]+E],quoted:!0}}async function su(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let g=0;g<s.parts.length;g++){let y=s.parts[g];if(y.type==="ParameterExpansion"&&(y.parameter==="@"||y.parameter==="*")&&y.operation?.type==="PatternReplacement"){i=g,o=y.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=nu(e),u="";for(let g=0;g<i;g++)u=Ns(u,await n(e,s.parts[g]),e.limits.maxStringLength);let f="";for(let g=i+1;g<s.parts.length;g++)f=Ns(f,await n(e,s.parts[g]),e.limits.maxStringLength);if(c.length===0){let g=u+f;return{values:g?[g]:[],quoted:!0}}let d="";if(l.pattern)for(let g of l.pattern.parts)if(g.type==="Glob")d+=te(g.pattern,!0,e.state.shoptOptions.extglob);else if(g.type==="Literal")d+=te(g.value,!0,e.state.shoptOptions.extglob);else if(g.type==="SingleQuoted"||g.type==="Escaped")d+=re(g.value);else if(g.type==="DoubleQuoted"){let y=await r(e,g.parts);d+=re(y)}else if(g.type==="ParameterExpansion"){let y=await n(e,g);d+=te(y,!0,e.state.shoptOptions.extglob)}else{let y=await n(e,g);d+=re(y)}let h=l.replacement?await r(e,l.replacement.parts):"",p=d;l.anchor==="start"?p=`^${d}`:l.anchor==="end"&&(p=`${d}$`);let m=[],E={value:0};try{let g=ge(p,l.all?"g":"");for(let y of c){let b=0;g.lastIndex=0;for(let P=g.exec(y);P&&(b++,!!l.all);P=g.exec(y))P[0].length===0&&g.lastIndex++;let A=W(y),k=W(h),v=0,$=/\$(?:\$|&|\d+|<[^>]+>|`|')/g;for(;$.exec(h)!==null;)v++;if(A+b*k+b*v*A>e.limits.maxStringLength-E.value)throw new C(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");Ao(m,g.replace(y,h),E,e)}}catch(g){if(g instanceof C)throw g;for(let y of c)Ao(m,y,E,e)}if(o){let g=Y(e.state.env);if(E.value+Math.max(0,m.length-1)*W(g)+W(u)+W(f)>e.limits.maxStringLength)throw new C(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u+m.join(g)+f],quoted:!0}}if(W(u)+E.value+W(f)>e.limits.maxStringLength)throw new C(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return m.length===1?{values:[u+m[0]+f],quoted:!0}:{values:[u+m[0],...m.slice(1,-1),m[m.length-1]+f],quoted:!0}}async function iu(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let S=0;S<s.parts.length;S++){let g=s.parts[S];if(g.type==="ParameterExpansion"&&(g.parameter==="@"||g.parameter==="*")&&g.operation?.type==="PatternRemoval"){i=S,o=g.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=nu(e),u="";for(let S=0;S<i;S++)u=Ns(u,await n(e,s.parts[S]),e.limits.maxStringLength);let f="";for(let S=i+1;S<s.parts.length;S++)f=Ns(f,await n(e,s.parts[S]),e.limits.maxStringLength);if(c.length===0){let S=u+f;return{values:S?[S]:[],quoted:!0}}let d="",h=e.state.shoptOptions.extglob;if(l.pattern)for(let S of l.pattern.parts)if(S.type==="Glob")d+=te(S.pattern,l.greedy,h);else if(S.type==="Literal")d+=te(S.value,l.greedy,h);else if(S.type==="SingleQuoted"||S.type==="Escaped")d+=re(S.value);else if(S.type==="DoubleQuoted"){let g=await r(e,S.parts);d+=re(g)}else if(S.type==="ParameterExpansion"){let g=await n(e,S);d+=te(g,l.greedy,h)}else{let g=await n(e,S);d+=re(g)}let p=[],m={value:0};for(let S of c)Ao(p,kt(e,S,d,l.side,l.greedy),m,e);if(o){let S=Y(e.state.env);if(m.value+Math.max(0,p.length-1)*W(S)+W(u)+W(f)>e.limits.maxStringLength)throw new C(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u+p.join(S)+f],quoted:!0}}if(W(u)+m.value+W(f)>e.limits.maxStringLength)throw new C(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return p.length===1?{values:[u+p[0]+f],quoted:!0}:{values:[u+p[0],...p.slice(1,-1),p[p.length-1]+f],quoted:!0}}async function ou(e,t,n){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let r=t[0],s=-1,i=!1;for(let d=0;d<r.parts.length;d++){let h=r.parts[d];if(h.type==="ParameterExpansion"&&(h.parameter==="@"||h.parameter==="*")){s=d,i=h.parameter==="*";break}}if(s===-1)return null;let o=r.parts[s];if(o.type==="ParameterExpansion"&&o.operation)return null;let a=Number.parseInt(e.state.env.get("#")||"0",10),l="";for(let d=0;d<s;d++)l+=await n(e,r.parts[d]);let c="";for(let d=s+1;d<r.parts.length;d++)c+=await n(e,r.parts[d]);if(a===0){if(i)return{values:[l+c],quoted:!0};let d=l+c;return{values:d?[d]:[],quoted:!0}}let u=[];for(let d=1;d<=a;d++)u.push(e.state.env.get(String(d))||"");if(i){let d=Y(e.state.env);return{values:[l+u.join(d)+c],quoted:!0}}return u.length===1?{values:[l+u[0]+c],quoted:!0}:{values:[l+u[0],...u.slice(1,-1),u[u.length-1]+c],quoted:!0}}function Mt(e,t,n,r){if(t.length>=e.limits.maxArrayElements)throw new C(`unquoted expansion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let s=W(n);if(s>e.limits.maxStringLength-r.value)throw new C(`unquoted expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");t.push(n),r.value+=s}function vo(e,t,n,r){let s=W(n),i=Math.max(0,t.length-1);if(s>0&&i>Math.floor((e.limits.maxStringLength-r)/s))throw new C(`unquoted expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return t.join(n)}function vp(e){return new dn(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")})}async function Rs(e,t){if(e.state.options.noglob)return t;let n=vp(e),r=[];for(let s of t)if(Ft(s,e.state.shoptOptions.extglob)){let i=await n.expand(s);if(i.length>0)Te(r,i,e.limits.maxArrayElements,"unquoted glob expansion");else{if(n.hasFailglob())throw new en(s);n.hasNullglob()||r.push(s)}}else r.push(s);return r}async function au(e,t,n,r){let s=-1,i="",o=!1;for(let b=0;b<t.length;b++){let A=t[b];if(A.type==="ParameterExpansion"&&A.operation?.type==="PatternReplacement"){let k=A.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(k){s=b,i=k[1],o=k[2]==="*";break}}}if(s===-1)return null;let l=t[s].operation,c=K(e,i),u=c.map(([,b])=>b);if(c.length===0){let b=e.state.env.get(i);b!==void 0&&(u=[b])}if(u.length===0)return{values:[],quoted:!1};let f="";if(l.pattern)for(let b of l.pattern.parts)if(b.type==="Glob")f+=te(b.pattern,!0,e.state.shoptOptions.extglob);else if(b.type==="Literal")f+=te(b.value,!0,e.state.shoptOptions.extglob);else if(b.type==="SingleQuoted"||b.type==="Escaped")f+=re(b.value);else if(b.type==="DoubleQuoted"){let A=await n(e,b.parts);f+=re(A)}else if(b.type==="ParameterExpansion"){let A=await r(e,b);f+=te(A,!0,e.state.shoptOptions.extglob)}else{let A=await r(e,b);f+=re(A)}let d=l.replacement?await n(e,l.replacement.parts):"",h=f;l.anchor==="start"?h=`^${f}`:l.anchor==="end"&&(h=`${f}$`);let p=[],m={value:0};try{let b=ge(h,l.all?"g":"");for(let A of u)Mt(e,p,Ps(e,A,b,d,l.all),m)}catch(b){if(b instanceof C)throw b;for(let A of u)Mt(e,p,A,m)}let E=Pe(e.state.env),S=Ie(e.state.env);if(o){let b=Y(e.state.env),A=vo(e,p,b,m.value);return S?{values:A?[A]:[],quoted:!1}:{values:he(A,E,e.limits.maxArrayElements),quoted:!1}}if(S)return{values:p,quoted:!1};let g=[],y={value:0};for(let b of p)if(b==="")Mt(e,g,"",y);else for(let A of he(b,E,e.limits.maxArrayElements))Mt(e,g,A,y);return{values:g,quoted:!1}}async function lu(e,t,n,r){let s=-1,i="",o=!1;for(let y=0;y<t.length;y++){let b=t[y];if(b.type==="ParameterExpansion"&&b.operation?.type==="PatternRemoval"){let A=b.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(A){s=y,i=A[1],o=A[2]==="*";break}}}if(s===-1)return null;let l=t[s].operation,c=K(e,i),u=c.map(([,y])=>y);if(c.length===0){let y=e.state.env.get(i);y!==void 0&&(u=[y])}if(u.length===0)return{values:[],quoted:!1};let f="",d=e.state.shoptOptions.extglob;if(l.pattern)for(let y of l.pattern.parts)if(y.type==="Glob")f+=te(y.pattern,l.greedy,d);else if(y.type==="Literal")f+=te(y.value,l.greedy,d);else if(y.type==="SingleQuoted"||y.type==="Escaped")f+=re(y.value);else if(y.type==="DoubleQuoted"){let b=await n(e,y.parts);f+=re(b)}else if(y.type==="ParameterExpansion"){let b=await r(e,y);f+=te(b,l.greedy,d)}else{let b=await r(e,y);f+=re(b)}let h=[],p={value:0};for(let y of u)Mt(e,h,kt(e,y,f,l.side,l.greedy),p);let m=Pe(e.state.env),E=Ie(e.state.env);if(o){let y=Y(e.state.env),b=vo(e,h,y,p.value);return E?{values:b?[b]:[],quoted:!1}:{values:he(b,m,e.limits.maxArrayElements),quoted:!1}}if(E)return{values:h,quoted:!1};let S=[],g={value:0};for(let y of h)if(y==="")Mt(e,S,"",g);else for(let b of he(y,m,e.limits.maxArrayElements))Mt(e,S,b,g);return{values:S,quoted:!1}}async function cu(e,t,n,r){let s=-1,i=!1;for(let g=0;g<t.length;g++){let y=t[g];if(y.type==="ParameterExpansion"&&(y.parameter==="@"||y.parameter==="*")&&y.operation?.type==="PatternRemoval"){s=g,i=y.parameter==="*";break}}if(s===-1)return null;let a=t[s].operation,l=Number.parseInt(e.state.env.get("#")||"0",10),c=[];for(let g=1;g<=l;g++)c.push(e.state.env.get(String(g))||"");if(c.length===0)return{values:[],quoted:!1};let u="",f=e.state.shoptOptions.extglob;if(a.pattern)for(let g of a.pattern.parts)if(g.type==="Glob")u+=te(g.pattern,a.greedy,f);else if(g.type==="Literal")u+=te(g.value,a.greedy,f);else if(g.type==="SingleQuoted"||g.type==="Escaped")u+=re(g.value);else if(g.type==="DoubleQuoted"){let y=await n(e,g.parts);u+=re(y)}else if(g.type==="ParameterExpansion"){let y=await r(e,g);u+=te(y,a.greedy,f)}else{let y=await r(e,g);u+=re(y)}let d=[],h={value:0};for(let g of c)Mt(e,d,kt(e,g,u,a.side,a.greedy),h);let p=Pe(e.state.env),m=Ie(e.state.env);if(i){let g=Y(e.state.env),y=vo(e,d,g,h.value);return m?{values:y?[y]:[],quoted:!1}:{values:he(y,p,e.limits.maxArrayElements),quoted:!1}}if(m)return{values:d,quoted:!1};let E=[],S={value:0};for(let g of d)if(g==="")Mt(e,E,"",S);else for(let y of he(g,p,e.limits.maxArrayElements))Mt(e,E,y,S);return{values:E,quoted:!1}}async function uu(e,t,n,r){let s=-1,i=!1;for(let y=0;y<t.length;y++){let b=t[y];if(b.type==="ParameterExpansion"&&(b.parameter==="@"||b.parameter==="*")&&b.operation?.type==="Substring"){s=y,i=b.parameter==="*";break}}if(s===-1)return null;let a=t[s].operation,l=a.offset?await n(e,a.offset.expression):0,c=a.length?await n(e,a.length.expression):void 0,u=Number.parseInt(e.state.env.get("#")||"0",10),f=[];for(let y=1;y<=u;y++)f.push(e.state.env.get(String(y))||"");let d=e.state.env.get("0")||"bash",h;if(l<=0){let y=[d,...f],b=y.length+l;if(b<0)h=[];else{let A=l<0?b:0;if(c!==void 0){let k=c<0?y.length+c:A+c;h=y.slice(A,Math.max(A,k))}else h=y.slice(A)}}else{let y=l-1;if(y>=f.length)h=[];else if(c!==void 0){let b=c<0?f.length+c:y+c;h=f.slice(y,Math.max(y,b))}else h=f.slice(y)}let p="";for(let y=0;y<s;y++)p+=await r(e,t[y]);let m="";for(let y=s+1;y<t.length;y++)m+=await r(e,t[y]);let E=Pe(e.state.env),S=Ie(e.state.env);if(h.length===0){let y=p+m;return y?S?{values:[y],quoted:!1}:{values:he(y,E,e.limits.maxArrayElements),quoted:!1}:{values:[],quoted:!1}}let g;if(i){let y=Y(e.state.env),b=p+h.join(y)+m;S?g=b?[b]:[]:g=he(b,E,e.limits.maxArrayElements)}else if(S)h.length===1?g=[p+h[0]+m]:g=[p+h[0],...h.slice(1,-1),h[h.length-1]+m];else{g=[];for(let y=0;y<h.length;y++){let b=h[y];if(y===0&&(b=p+b),y===h.length-1&&(b=b+m),b==="")g.push("");else{let A=he(b,E,e.limits.maxArrayElements);Te(g,A,e.limits.maxArrayElements,"unquoted expansion")}}}return{values:await Rs(e,g),quoted:!1}}async function fu(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].parameter!=="@"&&t[0].parameter!=="*"||t[0].operation)return null;let n=t[0].parameter==="*",r=Number.parseInt(e.state.env.get("#")||"0",10);if(r===0)return{values:[],quoted:!1};let s=[];for(let c=1;c<=r;c++)s.push(e.state.env.get(String(c))||"");let i=Pe(e.state.env),o=Ie(e.state.env),a=Ss(e.state.env),l;if(n)if(o)l=s.filter(c=>c!=="");else{let c=Y(e.state.env),u=s.join(c);l=he(u,i,e.limits.maxArrayElements)}else if(o)l=s.filter(c=>c!=="");else if(a){l=[];for(let c of s){if(c==="")continue;let u=he(c,i,e.limits.maxArrayElements);Te(l,u,e.limits.maxArrayElements,"unquoted expansion")}}else{l=[];for(let c of s)if(c==="")l.push("");else{let u=he(c,i,e.limits.maxArrayElements);Te(l,u,e.limits.maxArrayElements,"unquoted expansion")}for(;l.length>0&&l[l.length-1]==="";)l.pop()}return{values:await Rs(e,l),quoted:!1}}async function du(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation)return null;let n=t[0].parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!n)return null;let r=n[1],s=n[2]==="*",i=K(e,r),o;if(i.length===0){let f=e.state.env.get(r);if(f!==void 0)o=[f];else return{values:[],quoted:!1}}else o=i.map(([,f])=>f);let a=Pe(e.state.env),l=Ie(e.state.env),c=Ss(e.state.env),u;if(s)if(l)u=o.filter(f=>f!=="");else{let f=Y(e.state.env),d=o.join(f);u=he(d,a,e.limits.maxArrayElements)}else if(l)u=o.filter(f=>f!=="");else if(c){u=[];for(let f of o){if(f==="")continue;let d=he(f,a,e.limits.maxArrayElements);Te(u,d,e.limits.maxArrayElements,"unquoted expansion")}}else{u=[];for(let f of o)if(f==="")u.push("");else{let d=he(f,a,e.limits.maxArrayElements);Te(u,d,e.limits.maxArrayElements,"unquoted expansion")}for(;u.length>0&&u[u.length-1]==="";)u.pop()}return{values:await Rs(e,u),quoted:!1}}function hu(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="VarNamePrefix")return null;let n=t[0].operation,r=Jn(e,n.prefix);if(r.length===0)return{values:[],quoted:!1};let s=Pe(e.state.env),i=Ie(e.state.env),o;if(n.star)if(i)o=r;else{let a=Y(e.state.env),l=r.join(a);o=he(l,s,e.limits.maxArrayElements)}else if(i)o=r;else{o=[];for(let a of r){let l=he(a,s,e.limits.maxArrayElements);Te(o,l,e.limits.maxArrayElements,"unquoted expansion")}}return{values:o,quoted:!1}}function pu(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="ArrayKeys")return null;let n=t[0].operation,s=K(e,n.array).map(([l])=>String(l));if(s.length===0)return{values:[],quoted:!1};let i=Pe(e.state.env),o=Ie(e.state.env),a;if(n.star)if(o)a=s;else{let l=Y(e.state.env),c=s.join(l);a=he(c,i,e.limits.maxArrayElements)}else if(o)a=s;else{a=[];for(let l of s){let c=he(l,i,e.limits.maxArrayElements);Te(a,c,e.limits.maxArrayElements,"unquoted expansion")}}return{values:a,quoted:!1}}async function mu(e,t,n){let r=-1;for(let d=0;d<t.length;d++){let h=t[d];if(h.type==="ParameterExpansion"&&(h.parameter==="@"||h.parameter==="*")&&!h.operation){r=d;break}}if(r===-1||t.length<=1)return null;let s=Number.parseInt(e.state.env.get("#")||"0",10),i=[];for(let d=1;d<=s;d++)i.push(e.state.env.get(String(d))||"");let o="";for(let d=0;d<r;d++)o+=await n(e,t[d]);let a="";for(let d=r+1;d<t.length;d++)a+=await n(e,t[d]);let l=Pe(e.state.env),c=Ie(e.state.env),u=Ss(e.state.env);if(s===0){let d=o+a;return{values:d?[d]:[],quoted:!1}}let f;{let d=[];for(let h=0;h<i.length;h++){let p=i[h];h===0&&(p=o+p),h===i.length-1&&(p=p+a),d.push(p)}if(c)f=d.filter(h=>h!=="");else if(u){f=[];for(let h of d){if(h==="")continue;let p=he(h,l,e.limits.maxArrayElements);Te(f,p,e.limits.maxArrayElements,"unquoted expansion")}}else{f=[];for(let h of d)if(h==="")f.push("");else{let p=he(h,l,e.limits.maxArrayElements);Te(f,p,e.limits.maxArrayElements,"unquoted expansion")}for(;f.length>0&&f[f.length-1]==="";)f.pop()}}return f.length===0?{values:[],quoted:!1}:{values:await Rs(e,f),quoted:!1}}async function wu(e,t,n){e.coverage?.hit("bash:expansion:word_glob");let r=t.parts,{hasQuoted:s,hasCommandSub:i,hasArrayVar:o,hasArrayAtExpansion:a,hasParamExpansion:l,hasVarNamePrefixExpansion:c,hasIndirection:u}=Nr(r),d=n.hasBraceExpansion(r)?await n.expandWordWithBracesAsync(e,t):null;if(d&&d.length>1)return kp(e,d,s);let h=await xp(e,r,a,c,u,n);if(h!==null)return h;let p=await $p(e,r,n);if(p!==null)return p;let m=await Cp(e,r,n);if(m!==null)return m;let E=await Rp(e,r,n.expandPart);if(E!==null)return gu(e,E);if((i||o||l)&&!Ie(e.state.env)){let g=Pe(e.state.env),y=n.buildIfsCharClassPattern(g),b=await n.smartWordSplit(e,r,g,y,n.expandPart);return gu(e,b)}let S=await n.expandWordAsync(e,t);return Op(e,t,r,S,s,n.expandWordForGlobbing)}async function kp(e,t,n){let r=[];for(let s of t)if(!(!n&&s===""))if(!n&&!e.state.options.noglob&&Ft(s,e.state.shoptOptions.extglob)){let i=await Os(e,s);Te(r,i,e.limits.maxArrayElements,"brace/glob expansion")}else r.push(s);return{values:r,quoted:!1}}async function xp(e,t,n,r,s,i){if(n){let o=Xc(e,t);if(o!==null)return o}{let o=Yc(e,t);if(o!==null)return o}{let o=await Gc(e,t);if(o!==null)return o}{let o=await Hc(e,t,n,i.expandPart,i.expandWordPartsAsync);if(o!==null)return o}{let o=await Zc(e,t,n,i.expandPart);if(o!==null)return o}{let o=await Qc(e,t,i.evaluateArithmetic);if(o!==null)return o}{let o=Kc(e,t);if(o!==null)return o}{let o=await jc(e,t,i.expandWordPartsAsync,i.expandPart);if(o!==null)return o}{let o=await qc(e,t,i.expandWordPartsAsync,i.expandPart);if(o!==null)return o}if(r&&t.length===1&&t[0].type==="DoubleQuoted"){let o=Pp(e,t);if(o!==null)return o}{let o=await Jc(e,t,s,i.expandParameterAsync,i.expandWordPartsAsync);if(o!==null)return o}{let o=await eu(e,t);if(o!==null)return o}{let o=await tu(e,t);if(o!==null)return o}return null}function Pp(e,t){let n=t[0];if(n.type!=="DoubleQuoted")return null;if(n.parts.length===1&&n.parts[0].type==="ParameterExpansion"&&n.parts[0].operation?.type==="VarNamePrefix"){let r=n.parts[0].operation,s=Jn(e,r.prefix);return r.star?{values:[s.join(Y(e.state.env))],quoted:!0}:{values:s,quoted:!0}}if(n.parts.length===1&&n.parts[0].type==="ParameterExpansion"&&n.parts[0].operation?.type==="ArrayKeys"){let r=n.parts[0].operation,i=K(e,r.array).map(([o])=>String(o));return r.star?{values:[i.join(Y(e.state.env))],quoted:!0}:{values:i,quoted:!0}}return null}async function $p(e,t,n){{let r=await ru(e,t,n.evaluateArithmetic,n.expandPart);if(r!==null)return r}{let r=await su(e,t,n.expandPart,n.expandWordPartsAsync);if(r!==null)return r}{let r=await iu(e,t,n.expandPart,n.expandWordPartsAsync);if(r!==null)return r}{let r=await ou(e,t,n.expandPart);if(r!==null)return r}return null}async function Cp(e,t,n){{let r=await au(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await lu(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await cu(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await uu(e,t,n.evaluateArithmetic,n.expandPart);if(r!==null)return r}{let r=await fu(e,t);if(r!==null)return r}{let r=await du(e,t);if(r!==null)return r}{let r=hu(e,t);if(r!==null)return r}{let r=pu(e,t);if(r!==null)return r}{let r=await mu(e,t,n.expandPart);if(r!==null)return r}return null}function yu(e){if(e.type!=="DoubleQuoted")return null;for(let t=0;t<e.parts.length;t++){let n=e.parts[t];if(n.type!=="ParameterExpansion"||n.operation)continue;let r=n.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(r)return{type:"array",name:r[1],atIndex:t,isStar:r[2]==="*"};if(n.parameter==="@"||n.parameter==="*")return{type:"positional",atIndex:t,isStar:n.parameter==="*"}}return null}async function Np(e,t,n,r){let s="";for(let a=0;a<n.atIndex;a++)s+=await r(e,t.parts[a]);let i="";for(let a=n.atIndex+1;a<t.parts.length;a++)i+=await r(e,t.parts[a]);let o;if(n.type==="array"){if(o=K(e,n.name).map(([,l])=>l),o.length===0){let l=e.state.env.get(n.name);l!==void 0&&(o=[l])}}else{let a=Number.parseInt(e.state.env.get("#")||"0",10);o=[];for(let l=1;l<=a;l++)o.push(e.state.env.get(String(l))||"")}if(n.isStar){let a=Y(e.state.env),l=o.join(a);return[s+l+i]}if(o.length===0){let a=s+i;return a?[a]:[]}return o.length===1?[s+o[0]+i]:[s+o[0],...o.slice(1,-1),o[o.length-1]+i]}async function Rp(e,t,n){if(t.length<2)return null;let r=!1;for(let l of t)if(yu(l)){r=!0;break}if(!r)return null;let s=Pe(e.state.env),i=Ie(e.state.env),o=[];for(let l of t){let c=yu(l);if(c&&l.type==="DoubleQuoted"){let u=await Np(e,l,c,n);o.push(u)}else if(l.type==="DoubleQuoted"||l.type==="SingleQuoted"){let u=await n(e,l);o.push([u])}else if(l.type==="Literal")o.push([l.value]);else if(l.type==="ParameterExpansion"){let u=await n(e,l);if(i)o.push(u?[u]:[]);else{let f=he(u,s,e.limits.maxArrayElements);o.push(f)}}else{let u=await n(e,l);if(i)o.push(u?[u]:[]);else{let f=he(u,s,e.limits.maxArrayElements);o.push(f)}}}let a=[];for(let l of o)if(l.length!==0)if(a.length===0)Te(a,l,e.limits.maxArrayElements,"word expansion");else{let c=a.length-1;a[c]=a[c]+l[0];for(let u=1;u<l.length;u++)a.push(l[u])}return a}async function gu(e,t){if(e.state.options.noglob)return{values:t,quoted:!1};let n=[];for(let r of t)if(Ft(r,e.state.shoptOptions.extglob)){let s=await Os(e,r);Te(n,s,e.limits.maxArrayElements,"glob expansion")}else n.push(r);return{values:n,quoted:!1}}async function Os(e,t){let n=new dn(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")}),r=await n.expand(t);if(r.length>0)return r;if(n.hasFailglob())throw new en(t);return n.hasNullglob()?[]:[t]}async function Op(e,t,n,r,s,i){let o=n.some(a=>a.type==="Glob");if(!e.state.options.noglob&&o){let a=await i(e,t);if(Ft(a,e.state.shoptOptions.extglob)){let c=await Os(e,a);if(c.length>0&&c[0]!==a)return{values:c,quoted:!1};if(c.length===0)return{values:[],quoted:!1}}let l=Eo(r);if(!Ie(e.state.env)){let c=Pe(e.state.env);return{values:he(l,c,e.limits.maxArrayElements),quoted:!1}}return{values:[l],quoted:!1}}if(!s&&!e.state.options.noglob&&Ft(r,e.state.shoptOptions.extglob)){let a=await i(e,t);if(Ft(a,e.state.shoptOptions.extglob)){let l=await Os(e,a);if(l.length>0&&l[0]!==a)return{values:l,quoted:!1}}}if(r===""&&!s)return{values:[],quoted:!1};if(o&&!s){let a=Eo(r);if(!Ie(e.state.env)){let l=Pe(e.state.env);return{values:he(a,l,e.limits.maxArrayElements),quoted:!1}}return{values:[a],quoted:!1}}return{values:[r],quoted:s}}function We(e,t,n){if(t.length>=e.limits.maxArrayElements)throw new C(`word splitting element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");t.push(n)}async function bu(e,t){let n=t.operation;if(!n||n.type!=="DefaultValue"&&n.type!=="AssignDefault"&&n.type!=="UseAlternative")return null;let r=n.word;if(!r||r.parts.length===0)return null;let s=await Lt(e,t.parameter),o=await le(e,t.parameter,!1)==="",a=n.checkEmpty??!1,l;return n.type==="UseAlternative"?l=s&&!(a&&o):l=!s||a&&o,l?r.parts:null}function Dp(e){return e.type==="SingleQuoted"?!0:e.type==="DoubleQuoted"?e.parts.every(n=>n.type==="Literal"):!1}async function Ip(e,t){if(t.type!=="ParameterExpansion")return null;let n=await bu(e,t);if(!n||n.length<=1)return null;let r=n.some(i=>Dp(i)),s=n.some(i=>i.type==="Literal"||i.type==="ParameterExpansion"||i.type==="CommandSubstitution"||i.type==="ArithmeticExpansion");return r&&s?n:null}function Tp(e){return e.type==="DoubleQuoted"||e.type==="SingleQuoted"||e.type==="Literal"?!1:e.type==="Glob"?uo(e.pattern):!(!(e.type==="ParameterExpansion"||e.type==="CommandSubstitution"||e.type==="ArithmeticExpansion")||e.type==="ParameterExpansion"&&gc(e))}async function Su(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:word_split"),t.length===1&&t[0].type==="ParameterExpansion"){let d=t[0],h=await bu(e,d);if(h&&h.length>0&&h.length>1&&h.some(m=>m.type==="DoubleQuoted"||m.type==="SingleQuoted")&&h.some(m=>m.type==="Literal"||m.type==="ParameterExpansion"||m.type==="CommandSubstitution"||m.type==="ArithmeticExpansion"))return Eu(e,h,n,r,s)}let i=[],o=!1;for(let d of t){let h=Tp(d),p=d.type==="DoubleQuoted"||d.type==="SingleQuoted",m=h?await Ip(e,d):null,E=await s(e,d);i.push({value:E,isSplittable:h,isQuoted:p,mixedDefaultParts:m??void 0}),h&&(o=!0)}if(!o){let d=i.map(h=>h.value).join("");return d?[d]:[]}let a=[],l="",c=!1,u=!1,f=!1;for(let d of i)if(!d.isSplittable)u?d.isQuoted&&d.value===""?(l!==""&&We(e,a,l),We(e,a,""),c=!0,l="",u=!1,f=!0):d.value!==""?(l!==""&&We(e,a,l),l=d.value,u=!1,f=!1):(l+=d.value,f=!1):(l+=d.value,f=d.isQuoted&&d.value==="");else if(d.mixedDefaultParts){let h=await Eu(e,d.mixedDefaultParts,n,r,s);if(h.length!==0)if(h.length===1)l+=h[0],c=!0;else{l+=h[0],We(e,a,l),c=!0;for(let p=1;p<h.length-1;p++)We(e,a,h[p]);l=h[h.length-1]}u=!1,f=!1}else{let{words:h,hadLeadingDelimiter:p,hadTrailingDelimiter:m}=As(d.value,n,e.limits.maxArrayElements);if(f&&p&&l===""&&(We(e,a,""),c=!0),h.length===0)m&&(u=!0);else if(h.length===1)l+=h[0],c=!0,u=m;else{l+=h[0],We(e,a,l),c=!0;for(let E=1;E<h.length-1;E++)We(e,a,h[E]);l=h[h.length-1],u=m}f=!1}return l!==""?We(e,a,l):a.length===0&&c&&We(e,a,""),a}function _p(e,t){return e.length>0&&t.includes(e[0])}async function Eu(e,t,n,r,s){let i=[];for(let u of t){let d=!(u.type==="DoubleQuoted"||u.type==="SingleQuoted"),h=await s(e,u);i.push({value:h,isSplittable:d})}let o=[],a="",l=!1,c=!1;for(let u of i)if(!u.isSplittable)c&&u.value!==""?(a!==""&&We(e,o,a),a=u.value,c=!1):a+=u.value;else{_p(u.value,n)&&a!==""&&(We(e,o,a),a="",l=!0);let{words:d,hadTrailingDelimiter:h}=As(u.value,n,e.limits.maxArrayElements);if(d.length===0)h&&(c=!0);else if(d.length===1)a+=d[0],l=!0,c=h;else{a+=d[0],We(e,o,a),l=!0;for(let p=1;p<d.length-1;p++)We(e,o,d[p]);a=d[d.length-1],c=h}}return a!==""?We(e,o,a):o.length===0&&l&&We(e,o,""),o}function Au(e){switch(e.type){case"Literal":return e.value;case"SingleQuoted":return e.value;case"Escaped":return e.value;default:return null}}function vu(e){switch(e.type){case"SingleQuoted":case"Escaped":case"DoubleQuoted":return!0;case"Literal":return e.value==="";default:return!1}}var Pt=class{baseFs;mounts=new Map;constructor(t){if(this.baseFs=t?.base??new ze,t?.mounts)for(let{mountPoint:n,filesystem:r}of t.mounts)this.mount(n,r)}mount(t,n){this.validateMountPath(t);let r=z(t);this.validateMount(r),this.mounts.set(r,{mountPoint:r,filesystem:n})}unmount(t){let n=z(t);if(!this.mounts.has(n))throw new Error(`No filesystem mounted at '${t}'`);this.mounts.delete(n)}getMounts(){return Array.from(this.mounts.values()).map(t=>({mountPoint:t.mountPoint,filesystem:t.filesystem}))}diff(t){let n=t?.space??"vfs",r=[],s=[],i=[];for(let o of this.mounts.values()){let a=o.filesystem;if(typeof a.diff!="function")throw new x("EINVAL",`mounted filesystem at '${o.mountPoint}' does not support diff()`);let l=a.diff(),c=u=>{if(n==="vfs")return o.mountPoint==="/"?u:`${o.mountPoint}${u}`;if(typeof a.rootDir!="string")throw new x("EINVAL",`cannot produce a host-space diff: mount at '${o.mountPoint}' has no real root`);return`${a.rootDir}${u}`};for(let u of l.writes)r.push({...u,path:c(u.path)});for(let u=0;u<l.deletions.length;u++)s.push(c(l.deletions[u])),i.push(l.deletionChangedAt?.[u]??0)}return{writes:r,deletions:s,...i.length>0&&{deletionChangedAt:i}}}restamp(t,n,r="full"){let{fs:s,relativePath:i}=this.routePath(t),o=s.restamp;typeof o=="function"&&o.call(s,i,n,r)}isMountPoint(t){let n=z(t);return this.mounts.has(n)}validateMountPath(t){let n=t.split("/");for(let r of n)if(r==="."||r==="..")throw new Error(`Invalid mount point '${t}': contains '.' or '..' segments`)}validateMount(t){if(t==="/")throw new Error("Cannot mount at root '/'");for(let n of this.mounts.keys())if(n!==t){if(t.startsWith(`${n}/`))throw new Error(`Cannot mount at '${t}': inside existing mount '${n}'`);if(n.startsWith(`${t}/`))throw new Error(`Cannot mount at '${t}': would contain existing mount '${n}'`)}}routePath(t){U(t,"access");let n=z(t),r=null,s=0;for(let i of this.mounts.values()){let o=i.mountPoint;if(n===o)return{fs:i.filesystem,relativePath:"/"};n.startsWith(`${o}/`)&&o.length>s&&(r=i,s=o.length)}if(r){let i=n.slice(s);return{fs:r.filesystem,relativePath:i||"/"}}return{fs:this.baseFs,relativePath:n}}getChildMountPoints(t){let n=z(t),r=n==="/"?"/":`${n}/`,s=[];for(let i of this.mounts.keys())if(i.startsWith(r)){let a=i.slice(r.length).split("/")[0];a&&!s.includes(a)&&s.push(a)}return s}async readFile(t,n){let{fs:r,relativePath:s}=this.routePath(t);return r.readFile(s,n)}async readFileBytes(t){let{fs:n,relativePath:r}=this.routePath(t);return qn(n,r)}async readFileBuffer(t){let{fs:n,relativePath:r}=this.routePath(t);return n.readFileBuffer(r)}async writeFile(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.writeFile(i,n,r)}async appendFile(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.appendFile(i,n,r)}async exists(t){let n=z(t);if(this.mounts.has(n)||this.getChildMountPoints(n).length>0)return!0;let{fs:s,relativePath:i}=this.routePath(t);return s.exists(i)}async stat(t){let n=z(t),r=this.mounts.get(n);if(r)try{return await r.filesystem.stat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:St,size:0,mtime:new Date}}if(this.getChildMountPoints(n).length>0)try{return await this.baseFs.stat(n)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:St,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.stat(o)}async lstat(t){let n=z(t),r=this.mounts.get(n);if(r)try{return await r.filesystem.lstat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:St,size:0,mtime:new Date}}if(this.getChildMountPoints(n).length>0)try{return await this.baseFs.lstat(n)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:St,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.lstat(o)}async mkdir(t,n){let r=z(t);if(this.mounts.has(r)){if(n?.recursive)return;throw new x("EEXIST",`directory already exists, mkdir '${t}'`)}if(this.getChildMountPoints(r).length>0&&n?.recursive)return;let{fs:i,relativePath:o}=this.routePath(t);return i.mkdir(o,n)}async readdir(t){let n=z(t),r=new Set,s=null,{fs:i,relativePath:o}=this.routePath(t);try{let l=await i.readdir(o);for(let c of l)r.add(c)}catch(l){if(!ft(l,"ENOENT"))throw l;s=l}let a=this.getChildMountPoints(n);for(let l of a)r.add(l);if(r.size===0&&s&&!this.mounts.has(n))throw s;return Array.from(r).sort()}async rm(t,n){let r=z(t);if(this.mounts.has(r))throw new x("EBUSY",`mount point, cannot remove '${t}'`);if(this.getChildMountPoints(r).length>0)throw new x("EBUSY",`contains mount points, cannot remove '${t}'`);let{fs:i,relativePath:o}=this.routePath(t);return i.rm(o,n)}async cp(t,n,r){if((await this.stat(t)).isDirectory&&qt(t,n))throw new x("EINVAL",`cannot copy '${t}' into itself, '${n}'`);let i=this.routePath(t),o=this.routePath(n);return i.fs===o.fs?i.fs.cp(i.relativePath,o.relativePath,r):this.crossMountCopy(t,n,r)}async mv(t,n){let r=z(t);if((await this.stat(t)).isDirectory&&qt(t,n))throw new x("EINVAL",`cannot move '${t}' into itself, '${n}'`);if(this.mounts.has(r))throw new x("EBUSY",`mount point, cannot move '${t}'`);let i=this.routePath(t),o=this.routePath(n);if(i.fs===o.fs)return i.fs.mv(i.relativePath,o.relativePath);await this.cp(t,n,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,n){return sn(t,n)}getAllPaths(){let t=new Set;for(let n of this.baseFs.getAllPaths())t.add(n);for(let n of this.mounts.keys()){let r=n.split("/").filter(Boolean),s="";for(let o of r)s=`${s}/${o}`,t.add(s);let i=this.mounts.get(n);if(i)for(let o of i.filesystem.getAllPaths())o==="/"?t.add(n):t.add(`${n}${o}`)}return Array.from(t).sort()}async chmod(t,n){let r=z(t),s=this.mounts.get(r);if(s)return s.filesystem.chmod("/",n);let{fs:i,relativePath:o}=this.routePath(t);return i.chmod(o,n)}async symlink(t,n){let{fs:r,relativePath:s}=this.routePath(n);return r.symlink(t,s)}async link(t,n){let r=this.routePath(t),s=this.routePath(n);if(r.fs!==s.fs)throw new x("EXDEV",`cross-device link not permitted, link '${t}' -> '${n}'`);return r.fs.link(r.relativePath,s.relativePath)}async readlink(t){let{fs:n,relativePath:r}=this.routePath(t);return n.readlink(r)}async realpath(t){let n=z(t);if(this.mounts.get(n))return n;let{fs:s,relativePath:i}=this.routePath(t),o=await s.realpath(i);for(let[a,l]of this.mounts)if(n===a||n.startsWith(`${a}/`))return o==="/"?a:`${a}${o}`;return o}async crossMountCopy(t,n,r){let s=await this.lstat(t);if(s.isFile){let i=await this.readFileBuffer(t);await this.writeFile(n,i),await this.chmod(n,s.mode)}else if(s.isDirectory){if(!r?.recursive)throw new Error(`cp: ${t} is a directory (not copied)`);await this.mkdir(n,{recursive:!0});let i=await this.readdir(t);for(let o of i){let a=Gt(t,o),l=Gt(n,o);await this.crossMountCopy(a,l,r)}}else if(s.isSymbolicLink){let i=await this.readlink(t);await this.symlink(i,n)}}async utimes(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.utimes(i,n,r)}};var Ds="/dev/fd",xu=63,Lp=10,ku=xu-Lp+1,ko=class extends ze{isLiveDescriptor;constructor(t){super(),this.isLiveDescriptor=t}assertLiveDescriptor(t,n){this.isLiveDescriptor(t)||this.refuse(t,n)}refuse(t,n){throw new x("EROFS",`read-only file system, ${n} '${Ds}${t}'`)}async writeFile(t,n,r){return this.assertLiveDescriptor(t,"write"),super.writeFile(t,n,r)}async appendFile(t,n,r){return this.assertLiveDescriptor(t,"append"),super.appendFile(t,n,r)}async rm(t,n){return this.assertLiveDescriptor(t,"rm"),super.rm(t,n)}async mkdir(t,n){this.refuse(t,"mkdir")}async cp(t,n){this.refuse(n,"cp")}async mv(t,n){this.refuse(n,"mv")}async symlink(t,n){this.refuse(n,"symlink")}async link(t,n){this.refuse(n,"link")}async chmod(t,n){this.refuse(t,"chmod")}async utimes(t,n,r){this.refuse(t,"utimes")}};function Fp(e){let t=new ko(n=>Pu(e).some(r=>r.path===`${Ds}${n}`));e.fs=new Pt({base:e.fs,mounts:[{mountPoint:Ds,filesystem:t}]}),e.state.processSubstitutionFsMounted=!0}async function Mp(e,t,n){try{await e.fs.writeFile(t,n,"binary");return}catch(r){if(e.state.processSubstitutionFsMounted)throw r;Fp(e)}await e.fs.writeFile(t,n,"binary")}async function Bp(e,t){try{await e.fs.rm(t,{force:!0})}catch{}}function Pu(e){let t=e.state.processSubstitutions;if(t)return t;let n=[];return e.state.processSubstitutions=n,n}async function $u(e,t,n){let r=e.substitutionDepth??0,s=e.limits.maxSubstitutionDepth;if(r>=s)throw new C(`Process substitution nesting limit exceeded (${s})`,"substitution_depth");let i=e.substitutionDepth,o=new Map(e.state.env),a=ht(e.state.arrays),l=e.state.cwd,c=e.state.bashPid,u=e.state.suppressVerbose,f=e.state.groupStdin,d=e.state.lastExitCode,h=e.state.env.get("?");e.substitutionDepth=r+1,e.state.bashPid=e.state.nextVirtualPid++,e.state.suppressVerbose=!0,n!==void 0&&(e.state.groupStdin=n);let p;try{p=await e.executeScript(t)}catch(m){if(m instanceof C)throw m;if(m instanceof G)return{stdout:m.stdout,stderr:m.stderr,exitCode:m.exitCode};throw m}finally{e.substitutionDepth=i,e.state.env=o,e.state.arrays=a,e.state.cwd=l,e.state.bashPid=c,e.state.suppressVerbose=u,e.state.groupStdin=f,e.state.lastExitCode=d,h!==void 0?e.state.env.set("?",h):e.state.env.delete("?")}return p}async function Cu(e,t){let n=Pu(e);if(n.length>=ku)throw new C(`Process substitution limit exceeded (${ku} concurrent)`,"file_descriptors");let r="";if(t.direction==="input"){let o=await $u(e,t.body,void 0);if(o.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+o.stderr),r=Ut(o),r.length>e.limits.maxStringLength)throw new C(`process substitution: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length")}let s=xu-n.length,i=`${Ds}/${s}`;n.push({fd:s,path:i,direction:t.direction,body:t.body});try{await Mp(e,i,r)}catch(o){throw n.pop(),o}return i}function Nu(e){return e.state.processSubstitutions?.length??0}var Wp={stdout:"",stderr:""};async function xo(e,t){let n=e.state.processSubstitutions;if(!n||n.length<=t)return Wp;let r="",s="";for(;n.length>t;){let i=n[n.length-1],o="";if(i.direction==="output")try{o=await qn(e.fs,i.path)}catch{}if(await Bp(e,i.path),n.pop(),i.direction==="output"){let a=await $u(e,i.body,o);r+=Ut(a),s+=a.stderr}}return{stdout:r,stderr:s}}function yn(e,t,n){if(e.length>t)throw new C(`${n}: string length limit exceeded (${t} bytes)`,"string_length")}async function $t(e,t,n=!1){let r=[];for(let s of t)r.push(await at(e,s,n));return r.join("")}function Vp(e){return vu(e)}function Ou(e){if(e.parts.length===0)return!0;for(let t of e.parts)if(!Vp(t))return!1;return!0}function zp(e,t,n=!1){let r=Au(t);if(r!==null)return r;switch(t.type){case"TildeExpansion":return n?t.user===null?"~":`~${t.user}`:(e.coverage?.hit("bash:expansion:tilde"),t.user===null?e.state.env.get("HOME")??"/home/user":t.user==="root"?"/root":`~${t.user}`);case"Glob":return bo(e,t.pattern);default:return null}}async function ae(e,t){return $o(e,t)}async function Du(e,t){let n=[];for(let r of t.parts)if(r.type==="Escaped")n.push(Yn(r.value));else if(r.type==="SingleQuoted")n.push(r.value);else if(r.type==="DoubleQuoted"){let s=await $t(e,r.parts);n.push(s)}else if(r.type==="TildeExpansion"){let s=await at(e,r);n.push(Yn(s))}else n.push(await at(e,r));return n.join("")}async function Iu(e,t){let n=[];for(let r of t.parts)if(r.type==="Escaped"){let s=r.value;"()|*?[]".includes(s)?n.push(`\\${s}`):n.push(s)}else if(r.type==="SingleQuoted")n.push(ot(r.value));else if(r.type==="DoubleQuoted"){let s=await $t(e,r.parts);n.push(ot(s))}else n.push(await at(e,r));return n.join("")}async function Tu(e,t){let n=[];for(let r of t.parts)if(r.type==="SingleQuoted")n.push(ot(r.value));else if(r.type==="Escaped"){let s=r.value;"*?[]\\()|".includes(s)?n.push(`\\${s}`):n.push(s)}else if(r.type==="DoubleQuoted"){let s=await $t(e,r.parts);n.push(ot(s))}else r.type==="Glob"?Vc(r.pattern)?n.push(await Uc(e,r.pattern)):n.push(bo(e,r.pattern)):r.type==="Literal"?n.push(r.value):n.push(await at(e,r));return n.join("")}function Ts(e){for(let t of e)if(t.type==="BraceExpansion"||t.type==="DoubleQuoted"&&Ts(t.parts))return!0;return!1}var Ru=1e5;async function _u(e,t,n={count:0}){let r=()=>{n.count++,e.executionScope.consumeLimited("brace_operations",1,Math.min(Ru,e.limits.maxBraceExpansionResults),"brace expansion")},s=(o,a)=>{if(o.length>=e.limits.maxBraceExpansionResults)throw new C(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");r(),o.push(a)},i=[[]];for(let o of t)if(o.type==="BraceExpansion"){let a=[],l=!1,c="";for(let d of o.items)if(d.type==="Range"){let h=wo(d.start,d.end,d.step,d.startStr,d.endStr,{maxResults:e.limits.maxBraceExpansionResults,maxStringBytes:e.limits.maxStringLength});if(h.expanded)for(let p of h.expanded)s(a,p);else{l=!0,c=h.literal;break}}else{let h=await _u(e,d.word.parts,n);for(let p of h){let m=[];for(let E of p)typeof E=="string"?m.push(E):m.push(await at(e,E));s(a,m.join(""))}}if(l){for(let d of i)r(),d.push(c);continue}if(i.length*a.length>e.limits.maxBraceExpansionResults||n.count>Ru)throw new C(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");let f=[];for(let d of i)for(let h of a){if(f.length>=e.limits.maxBraceExpansionResults)throw new C(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");r(),f.push([...d,h])}i=f}else for(let a of i)r(),a.push(o);return i}async function Lu(e,t){let n=t.parts;if(!Ts(n))return[await ae(e,t)];let r=await _u(e,n),s=[];for(let i of r){let o=[];for(let a of i)typeof a=="string"?o.push(a):o.push(await at(e,a));s.push(So(e,o.join("")))}return s}function Up(){return{expandWordAsync:$o,expandWordForGlobbing:Tu,expandWordWithBracesAsync:Lu,expandWordPartsAsync:$t,expandPart:at,expandParameterAsync:Is,hasBraceExpansion:Ts,evaluateArithmetic:ee,buildIfsCharClassPattern:wc,smartWordSplit:Su}}async function Ct(e,t){return wu(e,t,Up())}function jp(e){for(let t of e){if(t.type==="ParameterExpansion")return t.parameter;if(t.type==="Literal")return t.value}return""}function Po(e,t){if(Number.parseInt(e.state.env.get("#")||"0",10)<2)return!1;function r(s){for(let i of s)if(i.type==="DoubleQuoted"){for(let o of i.parts)if(o.type==="ParameterExpansion"&&o.parameter==="@"&&!o.operation)return!0}return!1}return r(t.parts)}async function Fu(e,t){if(Po(e,t))return{error:`bash: $@: ambiguous redirect
107
+ `};let n=t.parts,{hasQuoted:r}=Nr(n);if(Ts(n)&&(await Lu(e,t)).length>1)return{error:`bash: ${n.map(h=>h.type==="Literal"?h.value:h.type==="BraceExpansion"?`{${h.items.map(m=>{if(m.type==="Range"){let E=m.step?`..${m.step}`:"";return`${m.startStr??m.start}..${m.endStr??m.end}${E}`}return m.word.parts.map(E=>E.type==="Literal"?E.value:"").join("")}).join(",")}}`:"").join("")}: ambiguous redirect
108
+ `};let s=await $o(e,t),{hasParamExpansion:i,hasCommandSub:o}=Nr(n);if((i||o)&&!r&&!Ie(e.state.env)){let f=Pe(e.state.env);if(he(s,f,e.limits.maxArrayElements).length>1)return{error:`bash: $${jp(n)}: ambiguous redirect
109
+ `}}if(r||e.state.options.noglob||n.some(f=>f.type==="ProcessSubstitution"))return{target:s};let l=await Tu(e,t);if(!Ft(l,e.state.shoptOptions.extglob))return{target:s};let c=new dn(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")}),u=await c.expand(l);return u.length===0?c.hasFailglob()?{error:`bash: no match: ${s}
110
110
  `}:{target:s}:u.length===1?{target:u[0]}:{error:`bash: ${s}: ambiguous redirect
111
- `}}async function Eo(e,t){let n=t.parts,r=n.length;if(r===1){let o=await ot(e,n[0]);return pn(o,e.limits.maxStringLength,"word expansion"),o}let s=[];for(let o=0;o<r;o++)s.push(await ot(e,n[o]));let i=s.join("");return pn(i,e.limits.maxStringLength,"word expansion"),i}async function ot(e,t,n=!1){if(t.type==="ParameterExpansion")return $s(e,t,n);let r=Cp(e,t,n);if(r!==null)return r;switch(t.type){case"DoubleQuoted":{let s=[];for(let i of t.parts)s.push(await ot(e,i,!0));return s.join("")}case"CommandSubstitution":{let s=wc(t.body);if(s)try{let h=await oe(e,s.target),p=h.startsWith("/")?h:`${e.state.cwd}/${h}`,m=await e.fs.readFile(p);e.state.lastExitCode=0,e.state.env.set("?","0");let E=m.replace(/\n+$/,"");return pn(E,e.limits.maxStringLength,"command substitution"),E}catch(h){if(h instanceof $)throw h;return e.state.lastExitCode=1,e.state.env.set("?","1"),""}let i=e.substitutionDepth??0,o=e.limits.maxSubstitutionDepth;if(i>=o)throw new $(`Command substitution nesting limit exceeded (${o})`,"substitution_depth");let a=e.substitutionDepth;e.substitutionDepth=i+1;let l=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let c=new Map(e.state.env),u=ft(e.state.arrays),f=e.state.cwd,d=e.state.suppressVerbose;e.state.suppressVerbose=!0;try{let h=await e.executeScript(t.body),p=h.exitCode;e.state.env=c,e.state.arrays=u,e.state.cwd=f,e.state.suppressVerbose=d,e.state.lastExitCode=p,e.state.env.set("?",String(p)),h.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+h.stderr),e.state.bashPid=l,e.substitutionDepth=a;let m=h.stdout.replace(/\n+$/,"");return pn(m,e.limits.maxStringLength,"command substitution"),m}catch(h){if(e.state.env=c,e.state.arrays=u,e.state.cwd=f,e.state.bashPid=l,e.substitutionDepth=a,e.state.suppressVerbose=d,h instanceof $)throw h;if(h instanceof q){e.state.lastExitCode=h.exitCode,e.state.env.set("?",String(h.exitCode)),h.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+h.stderr);let p=h.stdout.replace(/\n+$/,"");return pn(p,e.limits.maxStringLength,"command substitution"),p}throw h}}case"ProcessSubstitution":return Su(e,t);case"ArithmeticExpansion":{let s=t.expression.originalText;if(s&&/\$[a-zA-Z_][a-zA-Z0-9_]*(?![{[(])/.test(s)){let o=await gc(e,s),a=new Z,l=ie(a,o);return String(await J(e,l.expression,!0))}return String(await J(e,t.expression.expression,!0))}case"BraceExpansion":{let s=[];for(let i of t.items)if(i.type==="Range"){let o=co(i.start,i.end,i.step,i.startStr,i.endStr,{maxResults:e.limits.maxBraceExpansionResults,maxStringBytes:e.limits.maxStringLength});if(o.expanded)s.push(...o.expanded);else return o.literal}else s.push(await oe(e,i.word));return s.join(" ")}default:return""}}async function $s(e,t,n=!1){let{parameter:r}=t,{operation:s}=t,i=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(i){let[,d,h]=i;if(e.state.associativeArrays?.has(d)||h.includes("$(")||h.includes("`")||h.includes("${")){let m=await ao(e,h);r=`${d}[${m}]`}}else if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)&&ue(e,r)){let d=qe(e,r);if(d&&d!==r){let h=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(h){let[,p,m]=h;if(e.state.associativeArrays?.has(p)||m.includes("$(")||m.includes("`")||m.includes("${")){let b=await ao(e,m);r=`${p}[${b}]`}}}}let o=s&&(s.type==="DefaultValue"||s.type==="AssignDefault"||s.type==="UseAlternative"||s.type==="ErrorIfUnset"),a=await ae(e,r,!o);if(!s)return a;let l=!await It(e,r),{isEmpty:c,effectiveValue:u}=Ic(e,r,a,n),f={value:a,isUnset:l,isEmpty:c,effectiveValue:u,inDoubleQuotes:n};switch(s.type){case"DefaultValue":return bc(e,s,f,vt);case"AssignDefault":return Sc(e,r,s,f,vt);case"ErrorIfUnset":return Ac(e,r,s,f,vt);case"UseAlternative":return vc(e,s,f,vt);case"PatternRemoval":{let d=await kc(e,a,s,vt,ot);return pn(d,e.limits.maxStringLength,"pattern removal"),d}case"PatternReplacement":{let d=await Pc(e,a,s,vt,ot);return pn(d,e.limits.maxStringLength,"pattern replacement"),d}case"Length":return xc(e,r,a);case"LengthSliceError":throw new nt(r);case"BadSubstitution":throw new nt(s.text);case"Substring":return $c(e,r,a,s);case"CaseModification":{let d=await Cc(e,a,s,vt,$s);return pn(d,e.limits.maxStringLength,"case modification"),d}case"Transform":return Nc(e,r,a,l,s);case"Indirection":return Rc(e,r,a,l,s,$s,n);case"ArrayKeys":return Oc(e,s);case"VarNamePrefix":return Dc(e,s);default:return a}}function Du(){return{visited:new Set,depth:0}}function Op(e,t,n){switch(n){case"+":return e+t;case"-":return e-t;case"*":return e*t;case"/":if(t===0)throw new ce("division by 0");return Math.trunc(e/t);case"%":if(t===0)throw new ce("division by 0");return e%t;case"**":if(t<0)throw new ce("exponent less than 0");return e**t;case"<<":return e<<t;case">>":return e>>t;case"<":return e<t?1:0;case"<=":return e<=t?1:0;case">":return e>t?1:0;case">=":return e>=t?1:0;case"==":return e===t?1:0;case"!=":return e!==t?1:0;case"&":return e&t;case"|":return e|t;case"^":return e^t;case",":return t;default:return 0}}function Ou(e,t,n){switch(n){case"=":return t;case"+=":return e+t;case"-=":return e-t;case"*=":return e*t;case"/=":return t!==0?Math.trunc(e/t):0;case"%=":return t!==0?e%t:0;case"<<=":return e<<t;case">>=":return e>>t;case"&=":return e&t;case"|=":return e|t;case"^=":return e^t;default:return t}}function Dp(e,t){switch(t){case"-":return-e;case"+":return+e;case"!":return e===0?1:0;case"~":return~e;default:return e}}async function Ip(e,t){let n=e.state.env.get(t);if(n!==void 0)return n;let r=le(e,t,0);return r!==void 0?r:await ae(e,t)}async function Tp(e,t,n){if(!t)return 0;let r=Number.parseInt(t,10);if(!Number.isNaN(r)&&/^-?\d+$/.test(t.trim()))return r;let s=t.trim();if(!s)return 0;let i=new Z,{expr:o,pos:a}=Zn(i,s,0);if(a<s.length){let l=s.slice(a).trim(),c=l.split(/\s+/)[0]||l;throw new ce(`syntax error in expression (error token is "${c}")`,"","")}return await Yn(e,o,!1,n)}async function Ns(e,t,n,r){if(r.depth>100)throw new ce("maximum variable indirection depth exceeded");if(r.visited.has(t))throw new ce(`arithmetic variable cycle detected at ${t}`);r.visited.add(t),r.depth++;try{return await Tp(e,n,r)}finally{r.depth--,r.visited.delete(t)}}async function bo(e,t,n){if(n.depth>100)throw new ce("maximum variable indirection depth exceeded");if(n.visited.has(t))throw new ce(`arithmetic variable cycle detected at ${t}`);n.visited.add(t),n.depth++;try{let r=await Ip(e,t);if(!r)return 0;let s=Number.parseInt(r,10);if(!Number.isNaN(s)&&/^-?\d+$/.test(r.trim()))return s;let i=r.trim();if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return await bo(e,i,n);let o=new Z,{expr:a,pos:l}=Zn(o,i,0);if(l<i.length){let c=i.slice(l).trim(),u=c.split(/\s+/)[0]||c;throw new ce(`${i}: syntax error in expression (error token is "${u}")`)}return await Yn(e,a,!1,n)}finally{n.depth--,n.visited.delete(t)}}async function Rs(e,t){if(t.startsWith("#")){let f=t.slice(1),d=f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(d){let p=d[1],m=Q(e,p);return String(m.length)}let h=e.state.env.get(f)||"";return String(h.length)}if(t.startsWith("!")){let f=t.slice(1),d=e.state.env.get(f)||"";return e.state.env.get(d)||""}let n=[":-",":=",":?",":+","-","=","?","+"],r=-1,s="";for(let f of n){let d=t.indexOf(f);d>0&&(r===-1||d<r)&&(r=d,s=f)}if(r===-1)return await ae(e,t);let i=t.slice(0,r),o=t.slice(r+s.length),a=e.state.env.get(i),l=a===void 0,c=a==="",u=s.startsWith(":");switch(s){case":-":case"-":return l||u&&c?o:a||"";case":=":case"=":return l||u&&c?(e.state.env.set(i,o),o):a||"";case":+":case"+":return!(l||u&&c)?o:"";case":?":case"?":{if(l||u&&c)throw new Error(o||`${i}: parameter null or not set`);return a||""}default:return a||""}}async function J(e,t,n=!1){return Yn(e,t,n,Du())}async function Yn(e,t,n,r){let s=(i,o=n)=>Yn(e,i,o,r);switch(t.type){case"ArithNumber":if(Number.isNaN(t.value))throw new ce("value too great for base");return t.value;case"ArithVariable":return await bo(e,t.name,r);case"ArithSpecialVar":{let o=(await ae(e,t.name)).trim();if(!o)return 0;let a=Number.parseInt(o,10);if(!Number.isNaN(a)&&/^-?\d+$/.test(o))return a;let l=new Z,{expr:c}=Zn(l,o,0);return await s(c)}case"ArithNested":return await s(t.expression);case"ArithCommandSubst":{if(e.execFn){let i=await e.execFn(t.command,{signal:e.state.signal});i.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+i.stderr);let o=i.stdout.trim();return Number.parseInt(o,10)||0}return 0}case"ArithBracedExpansion":{let i=await Rs(e,t.content);return Number.parseInt(i,10)||0}case"ArithDynamicBase":{let i=await Rs(e,t.baseExpr),o=Number.parseInt(i,10);if(o<2||o>64)return 0;let a=`${o}#${t.value}`;return wr(a)}case"ArithDynamicNumber":{let o=await Rs(e,t.prefix)+t.suffix;return wr(o)}case"ArithArrayElement":{let i=e.state.associativeArrays?.has(t.array),o=async a=>{let l=le(e,t.array,a);return l!==void 0?await Ns(e,`${t.array}[${a}]`,l,r):0};if(t.stringKey!==void 0)return await o(t.stringKey);if(i&&t.index?.type==="ArithVariable"&&!t.index.hasDollarPrefix)return await o(t.index.name);if(i&&t.index?.type==="ArithVariable"&&t.index.hasDollarPrefix){let a=await ae(e,t.index.name);return await o(a)}if(t.index){let a=await s(t.index);if(a<0){let u=Q(e,t.array),f=e.state.currentLine;if(u.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${f}: ${t.array}: bad array subscript
111
+ `}}async function $o(e,t){let n=t.parts,r=n.length;if(r===1){let o=await at(e,n[0]);return yn(o,e.limits.maxStringLength,"word expansion"),o}let s=[];for(let o=0;o<r;o++)s.push(await at(e,n[o]));let i=s.join("");return yn(i,e.limits.maxStringLength,"word expansion"),i}async function at(e,t,n=!1){if(t.type==="ParameterExpansion")return Is(e,t,n);let r=zp(e,t,n);if(r!==null)return r;switch(t.type){case"DoubleQuoted":{let s=[];for(let i of t.parts)s.push(await at(e,i,!0));return s.join("")}case"CommandSubstitution":{let s=xc(t.body);if(s)try{let h=await ae(e,s.target),p=h.startsWith("/")?h:`${e.state.cwd}/${h}`,m=await e.fs.readFile(p);e.state.lastExitCode=0,e.state.env.set("?","0");let E=m.replace(/\n+$/,"");return yn(E,e.limits.maxStringLength,"command substitution"),E}catch(h){if(h instanceof C)throw h;return e.state.lastExitCode=1,e.state.env.set("?","1"),""}let i=e.substitutionDepth??0,o=e.limits.maxSubstitutionDepth;if(i>=o)throw new C(`Command substitution nesting limit exceeded (${o})`,"substitution_depth");let a=e.substitutionDepth;e.substitutionDepth=i+1;let l=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let c=new Map(e.state.env),u=ht(e.state.arrays),f=e.state.cwd,d=e.state.suppressVerbose;e.state.suppressVerbose=!0;try{let h=await e.executeScript(t.body),p=h.exitCode;e.state.env=c,e.state.arrays=u,e.state.cwd=f,e.state.suppressVerbose=d,e.state.lastExitCode=p,e.state.env.set("?",String(p)),h.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+h.stderr),e.state.bashPid=l,e.substitutionDepth=a;let m=h.stdout.replace(/\n+$/,"");return yn(m,e.limits.maxStringLength,"command substitution"),m}catch(h){if(e.state.env=c,e.state.arrays=u,e.state.cwd=f,e.state.bashPid=l,e.substitutionDepth=a,e.state.suppressVerbose=d,h instanceof C)throw h;if(h instanceof G){e.state.lastExitCode=h.exitCode,e.state.env.set("?",String(h.exitCode)),h.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+h.stderr);let p=h.stdout.replace(/\n+$/,"");return yn(p,e.limits.maxStringLength,"command substitution"),p}throw h}}case"ProcessSubstitution":return Cu(e,t);case"ArithmeticExpansion":{let s=t.expression.originalText;if(s&&/\$[a-zA-Z_][a-zA-Z0-9_]*(?![{[(])/.test(s)){let o=await kc(e,s),a=new Q,l=oe(a,o);return String(await ee(e,l.expression,!0))}return String(await ee(e,t.expression.expression,!0))}case"BraceExpansion":{let s=[];for(let i of t.items)if(i.type==="Range"){let o=wo(i.start,i.end,i.step,i.startStr,i.endStr,{maxResults:e.limits.maxBraceExpansionResults,maxStringBytes:e.limits.maxStringLength});if(o.expanded)s.push(...o.expanded);else return o.literal}else s.push(await ae(e,i.word));return s.join(" ")}default:return""}}async function Is(e,t,n=!1){let{parameter:r}=t,{operation:s}=t,i=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(i){let[,d,h]=i;if(e.state.associativeArrays?.has(d)||h.includes("$(")||h.includes("`")||h.includes("${")){let m=await yo(e,h);r=`${d}[${m}]`}}else if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)&&fe(e,r)){let d=Ge(e,r);if(d&&d!==r){let h=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(h){let[,p,m]=h;if(e.state.associativeArrays?.has(p)||m.includes("$(")||m.includes("`")||m.includes("${")){let S=await yo(e,m);r=`${p}[${S}]`}}}}let o=s&&(s.type==="DefaultValue"||s.type==="AssignDefault"||s.type==="UseAlternative"||s.type==="ErrorIfUnset"),a=await le(e,r,!o);if(!s)return a;let l=!await Lt(e,r),{isEmpty:c,effectiveValue:u}=Wc(e,r,a,n),f={value:a,isUnset:l,isEmpty:c,effectiveValue:u,inDoubleQuotes:n};switch(s.type){case"DefaultValue":return $c(e,s,f,$t);case"AssignDefault":return Cc(e,r,s,f,$t);case"ErrorIfUnset":return Nc(e,r,s,f,$t);case"UseAlternative":return Rc(e,s,f,$t);case"PatternRemoval":{let d=await Oc(e,a,s,$t,at);return yn(d,e.limits.maxStringLength,"pattern removal"),d}case"PatternReplacement":{let d=await Dc(e,a,s,$t,at);return yn(d,e.limits.maxStringLength,"pattern replacement"),d}case"Length":return Ic(e,r,a);case"LengthSliceError":throw new rt(r);case"BadSubstitution":throw new rt(s.text);case"Substring":return Tc(e,r,a,s);case"CaseModification":{let d=await _c(e,a,s,$t,Is);return yn(d,e.limits.maxStringLength,"case modification"),d}case"Transform":return Lc(e,r,a,l,s);case"Indirection":return Fc(e,r,a,l,s,Is,n);case"ArrayKeys":return Mc(e,s);case"VarNamePrefix":return Bc(e,s);default:return a}}function Bu(){return{visited:new Set,depth:0}}function qp(e,t,n){switch(n){case"+":return e+t;case"-":return e-t;case"*":return e*t;case"/":if(t===0)throw new ue("division by 0");return Math.trunc(e/t);case"%":if(t===0)throw new ue("division by 0");return e%t;case"**":if(t<0)throw new ue("exponent less than 0");return e**t;case"<<":return e<<t;case">>":return e>>t;case"<":return e<t?1:0;case"<=":return e<=t?1:0;case">":return e>t?1:0;case">=":return e>=t?1:0;case"==":return e===t?1:0;case"!=":return e!==t?1:0;case"&":return e&t;case"|":return e|t;case"^":return e^t;case",":return t;default:return 0}}function Mu(e,t,n){switch(n){case"=":return t;case"+=":return e+t;case"-=":return e-t;case"*=":return e*t;case"/=":return t!==0?Math.trunc(e/t):0;case"%=":return t!==0?e%t:0;case"<<=":return e<<t;case">>=":return e>>t;case"&=":return e&t;case"|=":return e|t;case"^=":return e^t;default:return t}}function Gp(e,t){switch(t){case"-":return-e;case"+":return+e;case"!":return e===0?1:0;case"~":return~e;default:return e}}async function Hp(e,t){let n=e.state.env.get(t);if(n!==void 0)return n;let r=ce(e,t,0);return r!==void 0?r:await le(e,t)}async function Zp(e,t,n){if(!t)return 0;let r=Number.parseInt(t,10);if(!Number.isNaN(r)&&/^-?\d+$/.test(t.trim()))return r;let s=t.trim();if(!s)return 0;let i=new Q,{expr:o,pos:a}=Xn(i,s,0);if(a<s.length){let l=s.slice(a).trim(),c=l.split(/\s+/)[0]||l;throw new ue(`syntax error in expression (error token is "${c}")`,"","")}return await tr(e,o,!1,n)}async function _s(e,t,n,r){if(r.depth>100)throw new ue("maximum variable indirection depth exceeded");if(r.visited.has(t))throw new ue(`arithmetic variable cycle detected at ${t}`);r.visited.add(t),r.depth++;try{return await Zp(e,n,r)}finally{r.depth--,r.visited.delete(t)}}async function Co(e,t,n){if(n.depth>100)throw new ue("maximum variable indirection depth exceeded");if(n.visited.has(t))throw new ue(`arithmetic variable cycle detected at ${t}`);n.visited.add(t),n.depth++;try{let r=await Hp(e,t);if(!r)return 0;let s=Number.parseInt(r,10);if(!Number.isNaN(s)&&/^-?\d+$/.test(r.trim()))return s;let i=r.trim();if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return await Co(e,i,n);let o=new Q,{expr:a,pos:l}=Xn(o,i,0);if(l<i.length){let c=i.slice(l).trim(),u=c.split(/\s+/)[0]||c;throw new ue(`${i}: syntax error in expression (error token is "${u}")`)}return await tr(e,a,!1,n)}finally{n.depth--,n.visited.delete(t)}}async function Ls(e,t){if(t.startsWith("#")){let f=t.slice(1),d=f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(d){let p=d[1],m=K(e,p);return String(m.length)}let h=e.state.env.get(f)||"";return String(h.length)}if(t.startsWith("!")){let f=t.slice(1),d=e.state.env.get(f)||"";return e.state.env.get(d)||""}let n=[":-",":=",":?",":+","-","=","?","+"],r=-1,s="";for(let f of n){let d=t.indexOf(f);d>0&&(r===-1||d<r)&&(r=d,s=f)}if(r===-1)return await le(e,t);let i=t.slice(0,r),o=t.slice(r+s.length),a=e.state.env.get(i),l=a===void 0,c=a==="",u=s.startsWith(":");switch(s){case":-":case"-":return l||u&&c?o:a||"";case":=":case"=":return l||u&&c?(e.state.env.set(i,o),o):a||"";case":+":case"+":return!(l||u&&c)?o:"";case":?":case"?":{if(l||u&&c)throw new Error(o||`${i}: parameter null or not set`);return a||""}default:return a||""}}async function ee(e,t,n=!1){return tr(e,t,n,Bu())}async function tr(e,t,n,r){let s=(i,o=n)=>tr(e,i,o,r);switch(t.type){case"ArithNumber":if(Number.isNaN(t.value))throw new ue("value too great for base");return t.value;case"ArithVariable":return await Co(e,t.name,r);case"ArithSpecialVar":{let o=(await le(e,t.name)).trim();if(!o)return 0;let a=Number.parseInt(o,10);if(!Number.isNaN(a)&&/^-?\d+$/.test(o))return a;let l=new Q,{expr:c}=Xn(l,o,0);return await s(c)}case"ArithNested":return await s(t.expression);case"ArithCommandSubst":{if(e.execFn){let i=await e.execFn(t.command,{signal:e.state.signal});i.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+i.stderr);let o=i.stdout.trim();return Number.parseInt(o,10)||0}return 0}case"ArithBracedExpansion":{let i=await Ls(e,t.content);return Number.parseInt(i,10)||0}case"ArithDynamicBase":{let i=await Ls(e,t.baseExpr),o=Number.parseInt(i,10);if(o<2||o>64)return 0;let a=`${o}#${t.value}`;return kr(a)}case"ArithDynamicNumber":{let o=await Ls(e,t.prefix)+t.suffix;return kr(o)}case"ArithArrayElement":{let i=e.state.associativeArrays?.has(t.array),o=async a=>{let l=ce(e,t.array,a);return l!==void 0?await _s(e,`${t.array}[${a}]`,l,r):0};if(t.stringKey!==void 0)return await o(t.stringKey);if(i&&t.index?.type==="ArithVariable"&&!t.index.hasDollarPrefix)return await o(t.index.name);if(i&&t.index?.type==="ArithVariable"&&t.index.hasDollarPrefix){let a=await le(e,t.index.name);return await o(a)}if(t.index){let a=await s(t.index);if(a<0){let u=K(e,t.array),f=e.state.currentLine;if(u.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${f}: ${t.array}: bad array subscript
112
112
  `,0;let h=Math.max(...u.map(([p])=>typeof p=="number"?p:0))+1+a;if(h<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${f}: ${t.array}: bad array subscript
113
- `,0;a=h}let l=`${t.array}[${a}]`,c=le(e,t.array,a);if(c!==void 0)return Ns(e,l,c,r);if(a===0){let u=e.state.env.get(t.array);if(u!==void 0)return Ns(e,t.array,u,r)}if(e.state.options.nounset&&!(e.state.env.has(t.array)||Re(e,t.array)))throw new Qe(`${t.array}[${a}]`);return 0}return 0}case"ArithDoubleSubscript":throw new ce("double subscript","","");case"ArithNumberSubscript":throw new ce(`${t.number}${t.errorToken}: syntax error: invalid arithmetic operator (error token is "${t.errorToken}")`);case"ArithSyntaxError":throw new ce(t.message,"","",!0);case"ArithSingleQuote":{if(n)throw new ce(`syntax error: operand expected (error token is "'${t.content}'")`);return t.value}case"ArithBinary":{if(t.operator==="||")return await s(t.left)||await s(t.right)?1:0;if(t.operator==="&&")return await s(t.left)&&await s(t.right)?1:0;let i=await s(t.left),o=await s(t.right);return Op(i,o,t.operator)}case"ArithUnary":{let i=await s(t.operand);if(t.operator==="++"||t.operator==="--"){if(t.operand.type==="ArithVariable"){let o=t.operand.name,a=Number.parseInt(await ae(e,o),10)||0,l=t.operator==="++"?a+1:a-1;return e.state.env.set(o,String(l)),t.prefix?l:a}if(t.operand.type==="ArithArrayElement"){let o=t.operand.array,a=e.state.associativeArrays?.has(o),l;if(t.operand.stringKey!==void 0)l=t.operand.stringKey;else if(a&&t.operand.index?.type==="ArithVariable"&&!t.operand.index.hasDollarPrefix)l=t.operand.index.name;else if(a&&t.operand.index?.type==="ArithVariable"&&t.operand.index.hasDollarPrefix)l=await ae(e,t.operand.index.name);else if(t.operand.index){let f=await s(t.operand.index);l=String(f)}else return i;let c=Number.parseInt(le(e,o,l)||"0",10)||0,u=t.operator==="++"?c+1:c-1;return G(e,o,l,String(u),a?"associative":"indexed"),t.prefix?u:c}if(t.operand.type==="ArithConcat"){let o="";for(let a of t.operand.parts)o+=await Xn(e,a,n,r);if(o&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){let a=Number.parseInt(e.state.env.get(o)||"0",10)||0,l=t.operator==="++"?a+1:a-1;return e.state.env.set(o,String(l)),t.prefix?l:a}}if(t.operand.type==="ArithDynamicElement"){let o="";if(t.operand.nameExpr.type==="ArithConcat")for(let a of t.operand.nameExpr.parts)o+=await Xn(e,a,n,r);else t.operand.nameExpr.type==="ArithVariable"&&(o=t.operand.nameExpr.hasDollarPrefix?await ae(e,t.operand.nameExpr.name):t.operand.nameExpr.name);if(o&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){let a=await s(t.operand.subscript),l=Number.parseInt(le(e,o,a)||"0",10)||0,c=t.operator==="++"?l+1:l-1;return G(e,o,a,String(c)),t.prefix?c:l}}return i}return Dp(i,t.operator)}case"ArithTernary":return await s(t.condition)?await s(t.consequent):await s(t.alternate);case"ArithAssignment":{let i=t.variable,o=i,a;if(t.stringKey!==void 0)a=t.stringKey;else if(t.subscript){let d=e.state.associativeArrays?.has(i);if(d&&t.subscript.type==="ArithVariable"&&!t.subscript.hasDollarPrefix)a=t.subscript.name;else if(d&&t.subscript.type==="ArithVariable"&&t.subscript.hasDollarPrefix)a=await ae(e,t.subscript.name)||"\\";else if(d){let h=await s(t.subscript);a=String(h)}else{let h=await s(t.subscript);if(h<0){let p=Q(e,i);p.length>0&&(h=Math.max(...p.map(([E])=>typeof E=="number"?E:0))+1+h)}a=String(h)}}let l=a===void 0?e.state.env.get(o):le(e,i,a),c=Number.parseInt(l||"0",10)||0,u=await s(t.value),f=Ou(c,u,t.operator);return a===void 0?e.state.env.set(o,String(f)):G(e,i,a,String(f),e.state.associativeArrays?.has(i)?"associative":"indexed"),f}case"ArithGroup":return await s(t.expression);case"ArithConcat":{let i="";for(let o of t.parts)i+=await Xn(e,o,n,r);return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)?await bo(e,i,r):Number.parseInt(i,10)||0}case"ArithDynamicAssignment":{let i="";if(t.target.type==="ArithConcat")for(let u of t.target.parts)i+=await Xn(e,u,n,r);else t.target.type==="ArithVariable"&&(i=t.target.hasDollarPrefix?await ae(e,t.target.name):t.target.name);if(!i||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return 0;let o=i;if(t.subscript){let u=await s(t.subscript);o=`${i}_${u}`}let a=Number.parseInt(e.state.env.get(o)||"0",10)||0,l=await s(t.value),c=Ou(a,l,t.operator);return e.state.env.set(o,String(c)),c}case"ArithDynamicElement":{let i="";if(t.nameExpr.type==="ArithConcat")for(let c of t.nameExpr.parts)i+=await Xn(e,c,n,r);else t.nameExpr.type==="ArithVariable"&&(i=t.nameExpr.hasDollarPrefix?await ae(e,t.nameExpr.name):t.nameExpr.name);if(!i||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return 0;let o=await s(t.subscript),a=`${i}_${o}`,l=e.state.env.get(a);return l!==void 0?Ns(e,a,l,r):0}default:return 0}}async function Xn(e,t,n=!1,r=Du()){switch(t.type){case"ArithNumber":return String(t.value);case"ArithSingleQuote":return String(await Yn(e,t,n,r));case"ArithVariable":return t.hasDollarPrefix?await ae(e,t.name):t.name;case"ArithSpecialVar":return await ae(e,t.name);case"ArithBracedExpansion":return await Rs(e,t.content);case"ArithCommandSubst":return e.execFn?(await e.execFn(t.command,{signal:e.state.signal})).stdout.trim():"0";case"ArithConcat":{let s="";for(let i of t.parts)s+=await Xn(e,i,n,r);return s}default:return String(await Yn(e,t,n,r))}}async function Iu(e,t){let n="",r=0;for(let A of t.parts){let k=A.type==="Literal"?A.value:"\0",v=B(k);if(v>e.limits.maxStringLength-r)throw new $(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");n+=k,r+=v}let s=n.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!s||!n.endsWith(")"))return null;let i=s[1],o=[],a=[],l=!1,c="",u=0,f=0,d=!1,h=!0,p=A=>{let k=B(A);if(k>e.limits.maxStringLength-f-u)throw new $(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");c+=A,u+=k},m=(A,k=!1)=>{if(o.length>=e.limits.maxArrayElements)throw new $(`array assignment element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let v=B(A);if(v>e.limits.maxStringLength-f)throw new $(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");o.push(A),a.push(k),f+=v},E=()=>{m(c,h),c="",u=0,d=!1,h=!0};for(let A of t.parts)if(A.type==="Literal"){let k=A.value;if(!l){let v=k.indexOf("=(");v!==-1&&(l=!0,k=k.slice(v+2))}if(l){k.endsWith(")")&&(k=k.slice(0,-1));for(let v of k)/\s/.test(v)?(c||d)&&E():p(v)}}else if(l)if(A.type==="BraceExpansion")if(/^\[.+\]=/.test(c))p(Gn({type:"Word",parts:[A]}));else{(c||d)&&E();let v=await kt(e,{type:"Word",parts:[A]});for(let x of v.values)m(x)}else{(A.type==="SingleQuoted"||A.type==="DoubleQuoted"||A.type==="Escaped")&&(d=!0),h=!1;let k=await oe(e,{type:"Word",parts:[A]});p(k)}(c||d)&&E();let b=o.splice(0),g=a.splice(0);f=0;for(let A=0;A<b.length;A++){let k=b[A];if(!g[A]){m(k);continue}let v=k.match(/^(\[[^\]]+\]=)(.*)$/s);if(v){let x=hn(e,v[2]);k=v[1]+x}if(k.includes("{")&&k.includes("}")){let x=new Z().parseWordFromString(k,!1,!1);if(x.parts.some(R=>R.type==="BraceExpansion")){let R=await kt(e,x);for(let P of R.values)m(P);continue}}m(k)}let y=[`${i}=(`],S=B(y[0]);for(let A=0;A<o.length;A++){let k=o[A],v;/^\[.+\]=/.test(k)?v=k:k===""?v="''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(k)&&!k.startsWith("'")&&!k.startsWith('"')?v=`'${k.replace(/'/g,"'\\''")}'`:v=k;let x=`${A>0?" ":""}${v}`,R=B(x);if(R+1>e.limits.maxStringLength-S)throw new $(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");y.push(x),S+=R}return y.push(")"),y.join("")}async function Tu(e,t){let n=-1,r=-1,s=!1;for(let m=0;m<t.parts.length;m++){let E=t.parts[m];if(E.type==="Literal"){let b=E.value.indexOf("+=");if(b!==-1){let y=E.value.slice(0,b);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(y)){n=m,r=b,s=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(y)){n=m,r=b,s=!0;break}}let g=E.value.indexOf("=");if(g!==-1&&(g===0||E.value[g-1]!=="+")){let y=E.value.slice(0,g);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(y)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(y)){n=m,r=g;break}}}}if(n===-1)return null;let i=t.parts.slice(0,n),o=t.parts[n];if(o.type!=="Literal")return null;let a=s?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(n+1),f="";for(let m of i)f+=await oe(e,{type:"Word",parts:[m]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},h=d.parts.length>0?await oe(e,d):"";return`${f}${s?"+=":"="}${h}`}var _p=["tar","yq","xan","sqlite3","python3","python"];function _u(e){return _p.includes(e)}var re=Object.freeze({stdout:"",stderr:"",exitCode:0,internalStdinConsumed:0});function te(e=""){return{stdout:e,stderr:"",exitCode:0}}function T(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function L(e,t,n){return{stdout:e,stderr:t,exitCode:n}}function be(e){return{stdout:"",stderr:"",exitCode:e?0:1,internalStdinConsumed:0}}function mn(e,t,n="",r=""){throw new $(e,t,n,r)}function Lu(e){let t=e.state.fileDescriptors;if(t&&t.size>=e.limits.maxFileDescriptors)throw new $(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors")}function So(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Jt;return re}if(t.length>1)throw new q(1,"",`bash: break: too many arguments
114
- `);let n=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new q(128,"",`bash: break: ${t[0]}: numeric argument required
115
- `);n=r}throw new et(n)}async function Ao(e,t){let n,r=!1,s=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")s=!1,i++;else if(t[i]==="-P")s=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length===0||o[0]==="~"?n=e.state.env.get("HOME")||"/":o[0]==="-"?(n=e.state.previousDir,r=!0):n=o[0],!n.startsWith("/")&&!n.startsWith("./")&&!n.startsWith("../")&&n!=="."&&n!==".."){let f=e.state.env.get("CDPATH");if(f){let d=f.split(":").filter(h=>h);for(let h of d){let p=h.startsWith("/")?`${h}/${n}`:`${e.state.cwd}/${h}/${n}`;try{if((await e.fs.stat(p)).isDirectory){n=p,r=!0;break}}catch{}}}}let l=(n.startsWith("/")?n:`${e.state.cwd}/${n}`).split("/").filter(f=>f&&f!=="."),c="";for(let f of l)if(f==="..")c=c.split("/").slice(0,-1).join("/")||"/";else{c=c?`${c}/${f}`:`/${f}`;try{if(!(await e.fs.stat(c)).isDirectory)return T(`bash: cd: ${n}: Not a directory
116
- `)}catch{return T(`bash: cd: ${n}: No such file or directory
117
- `)}}let u=c||"/";if(s)try{u=await e.fs.realpath(u)}catch{}return e.state.previousDir=e.state.cwd,e.state.cwd=u,e.state.env.set("PWD",e.state.cwd),e.state.env.set("OLDPWD",e.state.previousDir),te(r?`${u}
118
- `:"")}function vo(e,t){return e.fs.resolvePath(e.state.cwd,t)}var Lp=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function Os(e){return Lp.includes(e)}async function Ds(e,t,n){let r=vo(e,n);switch(t){case"-e":case"-a":return e.fs.exists(r);case"-f":return await e.fs.exists(r)?(await e.fs.stat(r)).isFile:!1;case"-d":return await e.fs.exists(r)?(await e.fs.stat(r)).isDirectory:!1;case"-r":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&256)!==0:!1;case"-w":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&128)!==0:!1;case"-x":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&64)!==0:!1;case"-s":return await e.fs.exists(r)?(await e.fs.stat(r)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(r)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&512)!==0:!1;case"-g":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(r);case"-b":return!1;case"-c":return["/dev/null","/dev/zero","/dev/random","/dev/urandom","/dev/tty","/dev/stdin","/dev/stdout","/dev/stderr"].includes(r);case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(r);default:return!1}}var Fp=["-nt","-ot","-ef"];function Is(e){return Fp.includes(e)}async function Ts(e,t,n,r){let s=vo(e,n),i=vo(e,r);switch(t){case"-nt":{let[o,a]=await Promise.all([e.fs.stat(s).catch(()=>null),e.fs.stat(i).catch(()=>null)]);return o!==null&&(a===null||o.mtime>a.mtime)}case"-ot":{let[o,a]=await Promise.all([e.fs.stat(s).catch(()=>null),e.fs.stat(i).catch(()=>null)]);return a!==null&&(o===null||o.mtime<a.mtime)}case"-ef":try{let[o,a]=await Promise.all([e.fs.realpath(s),e.fs.realpath(i)]);if(o===a)return!0;let[l,c]=await Promise.all([e.fs.stat(s),e.fs.stat(i)]);return l.dev!==void 0&&l.ino!==void 0&&c.dev!==void 0&&c.ino!==void 0?l.dev===c.dev&&l.ino===c.ino:l.identity&&c.identity?l.identity===c.identity:!1}catch{return!1}default:return!1}}var Mp=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function _s(e){return Mp.has(e)}function Ls(e,t,n){switch(e){case"-eq":return t===n;case"-ne":return t!==n;case"-lt":return t<n;case"-le":return t<=n;case"-gt":return t>n;case"-ge":return t>=n}}function xr(e){return e==="="||e==="=="||e==="!="}function Fs(e,t,n,r=!1,s=!1,i=!1,o=256){if(r){let l=Jn(t,n,s,i,o);return e==="!="?!l:l}if(s){let l=t.toLowerCase()===n.toLowerCase();return e==="!="?!l:l}let a=t===n;return e==="!="?!a:a}var Bp=new Set(["-z","-n"]);function Ms(e){return Bp.has(e)}function Bs(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Ws(e,t){let n=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(n){let r=n[1],s=n[2];if(e.state.associativeArrays?.has(r)){let a=s;return(a.startsWith("'")&&a.endsWith("'")||a.startsWith('"')&&a.endsWith('"'))&&(a=a.slice(1,-1)),a=a.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(l,c)=>e.state.env.get(c)||""),on(e,r,a)}let o;try{let a=new Z,l=ie(a,s);o=await J(e,l.expression)}catch{if(/^-?\d+$/.test(s))o=Number.parseInt(s,10);else{let a=e.state.env.get(s);o=a?Number.parseInt(a,10):0}}if(o<0){let a=ve(e,r),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
113
+ `,0;a=h}let l=`${t.array}[${a}]`,c=ce(e,t.array,a);if(c!==void 0)return _s(e,l,c,r);if(a===0){let u=e.state.env.get(t.array);if(u!==void 0)return _s(e,t.array,u,r)}if(e.state.options.nounset&&!(e.state.env.has(t.array)||Oe(e,t.array)))throw new Ke(`${t.array}[${a}]`);return 0}return 0}case"ArithDoubleSubscript":throw new ue("double subscript","","");case"ArithNumberSubscript":throw new ue(`${t.number}${t.errorToken}: syntax error: invalid arithmetic operator (error token is "${t.errorToken}")`);case"ArithSyntaxError":throw new ue(t.message,"","",!0);case"ArithSingleQuote":{if(n)throw new ue(`syntax error: operand expected (error token is "'${t.content}'")`);return t.value}case"ArithBinary":{if(t.operator==="||")return await s(t.left)||await s(t.right)?1:0;if(t.operator==="&&")return await s(t.left)&&await s(t.right)?1:0;let i=await s(t.left),o=await s(t.right);return qp(i,o,t.operator)}case"ArithUnary":{let i=await s(t.operand);if(t.operator==="++"||t.operator==="--"){if(t.operand.type==="ArithVariable"){let o=t.operand.name,a=Number.parseInt(await le(e,o),10)||0,l=t.operator==="++"?a+1:a-1;return e.state.env.set(o,String(l)),t.prefix?l:a}if(t.operand.type==="ArithArrayElement"){let o=t.operand.array,a=e.state.associativeArrays?.has(o),l;if(t.operand.stringKey!==void 0)l=t.operand.stringKey;else if(a&&t.operand.index?.type==="ArithVariable"&&!t.operand.index.hasDollarPrefix)l=t.operand.index.name;else if(a&&t.operand.index?.type==="ArithVariable"&&t.operand.index.hasDollarPrefix)l=await le(e,t.operand.index.name);else if(t.operand.index){let f=await s(t.operand.index);l=String(f)}else return i;let c=Number.parseInt(ce(e,o,l)||"0",10)||0,u=t.operator==="++"?c+1:c-1;return H(e,o,l,String(u),a?"associative":"indexed"),t.prefix?u:c}if(t.operand.type==="ArithConcat"){let o="";for(let a of t.operand.parts)o+=await er(e,a,n,r);if(o&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){let a=Number.parseInt(e.state.env.get(o)||"0",10)||0,l=t.operator==="++"?a+1:a-1;return e.state.env.set(o,String(l)),t.prefix?l:a}}if(t.operand.type==="ArithDynamicElement"){let o="";if(t.operand.nameExpr.type==="ArithConcat")for(let a of t.operand.nameExpr.parts)o+=await er(e,a,n,r);else t.operand.nameExpr.type==="ArithVariable"&&(o=t.operand.nameExpr.hasDollarPrefix?await le(e,t.operand.nameExpr.name):t.operand.nameExpr.name);if(o&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){let a=await s(t.operand.subscript),l=Number.parseInt(ce(e,o,a)||"0",10)||0,c=t.operator==="++"?l+1:l-1;return H(e,o,a,String(c)),t.prefix?c:l}}return i}return Gp(i,t.operator)}case"ArithTernary":return await s(t.condition)?await s(t.consequent):await s(t.alternate);case"ArithAssignment":{let i=t.variable,o=i,a;if(t.stringKey!==void 0)a=t.stringKey;else if(t.subscript){let d=e.state.associativeArrays?.has(i);if(d&&t.subscript.type==="ArithVariable"&&!t.subscript.hasDollarPrefix)a=t.subscript.name;else if(d&&t.subscript.type==="ArithVariable"&&t.subscript.hasDollarPrefix)a=await le(e,t.subscript.name)||"\\";else if(d){let h=await s(t.subscript);a=String(h)}else{let h=await s(t.subscript);if(h<0){let p=K(e,i);p.length>0&&(h=Math.max(...p.map(([E])=>typeof E=="number"?E:0))+1+h)}a=String(h)}}let l=a===void 0?e.state.env.get(o):ce(e,i,a),c=Number.parseInt(l||"0",10)||0,u=await s(t.value),f=Mu(c,u,t.operator);return a===void 0?e.state.env.set(o,String(f)):H(e,i,a,String(f),e.state.associativeArrays?.has(i)?"associative":"indexed"),f}case"ArithGroup":return await s(t.expression);case"ArithConcat":{let i="";for(let o of t.parts)i+=await er(e,o,n,r);return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)?await Co(e,i,r):Number.parseInt(i,10)||0}case"ArithDynamicAssignment":{let i="";if(t.target.type==="ArithConcat")for(let u of t.target.parts)i+=await er(e,u,n,r);else t.target.type==="ArithVariable"&&(i=t.target.hasDollarPrefix?await le(e,t.target.name):t.target.name);if(!i||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return 0;let o=i;if(t.subscript){let u=await s(t.subscript);o=`${i}_${u}`}let a=Number.parseInt(e.state.env.get(o)||"0",10)||0,l=await s(t.value),c=Mu(a,l,t.operator);return e.state.env.set(o,String(c)),c}case"ArithDynamicElement":{let i="";if(t.nameExpr.type==="ArithConcat")for(let c of t.nameExpr.parts)i+=await er(e,c,n,r);else t.nameExpr.type==="ArithVariable"&&(i=t.nameExpr.hasDollarPrefix?await le(e,t.nameExpr.name):t.nameExpr.name);if(!i||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return 0;let o=await s(t.subscript),a=`${i}_${o}`,l=e.state.env.get(a);return l!==void 0?_s(e,a,l,r):0}default:return 0}}async function er(e,t,n=!1,r=Bu()){switch(t.type){case"ArithNumber":return String(t.value);case"ArithSingleQuote":return String(await tr(e,t,n,r));case"ArithVariable":return t.hasDollarPrefix?await le(e,t.name):t.name;case"ArithSpecialVar":return await le(e,t.name);case"ArithBracedExpansion":return await Ls(e,t.content);case"ArithCommandSubst":return e.execFn?(await e.execFn(t.command,{signal:e.state.signal})).stdout.trim():"0";case"ArithConcat":{let s="";for(let i of t.parts)s+=await er(e,i,n,r);return s}default:return String(await tr(e,t,n,r))}}async function Wu(e,t){let n="",r=0;for(let A of t.parts){let k=A.type==="Literal"?A.value:"\0",v=W(k);if(v>e.limits.maxStringLength-r)throw new C(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");n+=k,r+=v}let s=n.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!s||!n.endsWith(")"))return null;let i=s[1],o=[],a=[],l=!1,c="",u=0,f=0,d=!1,h=!0,p=A=>{let k=W(A);if(k>e.limits.maxStringLength-f-u)throw new C(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");c+=A,u+=k},m=(A,k=!1)=>{if(o.length>=e.limits.maxArrayElements)throw new C(`array assignment element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let v=W(A);if(v>e.limits.maxStringLength-f)throw new C(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");o.push(A),a.push(k),f+=v},E=()=>{m(c,h),c="",u=0,d=!1,h=!0};for(let A of t.parts)if(A.type==="Literal"){let k=A.value;if(!l){let v=k.indexOf("=(");v!==-1&&(l=!0,k=k.slice(v+2))}if(l){k.endsWith(")")&&(k=k.slice(0,-1));for(let v of k)/\s/.test(v)?(c||d)&&E():p(v)}}else if(l)if(A.type==="BraceExpansion")if(/^\[.+\]=/.test(c))p(Qn({type:"Word",parts:[A]}));else{(c||d)&&E();let v=await Ct(e,{type:"Word",parts:[A]});for(let $ of v.values)m($)}else{(A.type==="SingleQuoted"||A.type==="DoubleQuoted"||A.type==="Escaped")&&(d=!0),h=!1;let k=await ae(e,{type:"Word",parts:[A]});p(k)}(c||d)&&E();let S=o.splice(0),g=a.splice(0);f=0;for(let A=0;A<S.length;A++){let k=S[A];if(!g[A]){m(k);continue}let v=k.match(/^(\[[^\]]+\]=)(.*)$/s);if(v){let $=mn(e,v[2]);k=v[1]+$}if(k.includes("{")&&k.includes("}")){let $=new Q().parseWordFromString(k,!1,!1);if($.parts.some(O=>O.type==="BraceExpansion")){let O=await Ct(e,$);for(let P of O.values)m(P);continue}}m(k)}let y=[`${i}=(`],b=W(y[0]);for(let A=0;A<o.length;A++){let k=o[A],v;/^\[.+\]=/.test(k)?v=k:k===""?v="''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(k)&&!k.startsWith("'")&&!k.startsWith('"')?v=`'${k.replace(/'/g,"'\\''")}'`:v=k;let $=`${A>0?" ":""}${v}`,O=W($);if(O+1>e.limits.maxStringLength-b)throw new C(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");y.push($),b+=O}return y.push(")"),y.join("")}async function Vu(e,t){let n=-1,r=-1,s=!1;for(let m=0;m<t.parts.length;m++){let E=t.parts[m];if(E.type==="Literal"){let S=E.value.indexOf("+=");if(S!==-1){let y=E.value.slice(0,S);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(y)){n=m,r=S,s=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(y)){n=m,r=S,s=!0;break}}let g=E.value.indexOf("=");if(g!==-1&&(g===0||E.value[g-1]!=="+")){let y=E.value.slice(0,g);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(y)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(y)){n=m,r=g;break}}}}if(n===-1)return null;let i=t.parts.slice(0,n),o=t.parts[n];if(o.type!=="Literal")return null;let a=s?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(n+1),f="";for(let m of i)f+=await ae(e,{type:"Word",parts:[m]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},h=d.parts.length>0?await ae(e,d):"";return`${f}${s?"+=":"="}${h}`}var Qp=["tar","yq","xan","sqlite3","python3","python"];function zu(e){return Qp.includes(e)}var se=Object.freeze({stdout:"",stderr:"",exitCode:0,internalStdinConsumed:0});function ne(e=""){return{stdout:e,stderr:"",exitCode:0}}function _(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function F(e,t,n){return{stdout:e,stderr:t,exitCode:n}}function Se(e){return{stdout:"",stderr:"",exitCode:e?0:1,internalStdinConsumed:0}}function gn(e,t,n="",r=""){throw new C(e,t,n,r)}function Uu(e){let t=e.state.fileDescriptors;if(t&&t.size>=e.limits.maxFileDescriptors)throw new C(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors")}function No(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new tn;return se}if(t.length>1)throw new G(1,"",`bash: break: too many arguments
114
+ `);let n=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new G(128,"",`bash: break: ${t[0]}: numeric argument required
115
+ `);n=r}throw new tt(n)}async function Ro(e,t){let n,r=!1,s=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")s=!1,i++;else if(t[i]==="-P")s=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length===0||o[0]==="~"?n=e.state.env.get("HOME")||"/":o[0]==="-"?(n=e.state.previousDir,r=!0):n=o[0],!n.startsWith("/")&&!n.startsWith("./")&&!n.startsWith("../")&&n!=="."&&n!==".."){let f=e.state.env.get("CDPATH");if(f){let d=f.split(":").filter(h=>h);for(let h of d){let p=h.startsWith("/")?`${h}/${n}`:`${e.state.cwd}/${h}/${n}`;try{if((await e.fs.stat(p)).isDirectory){n=p,r=!0;break}}catch{}}}}let l=(n.startsWith("/")?n:`${e.state.cwd}/${n}`).split("/").filter(f=>f&&f!=="."),c="";for(let f of l)if(f==="..")c=c.split("/").slice(0,-1).join("/")||"/";else{c=c?`${c}/${f}`:`/${f}`;try{if(!(await e.fs.stat(c)).isDirectory)return _(`bash: cd: ${n}: Not a directory
116
+ `)}catch{return _(`bash: cd: ${n}: No such file or directory
117
+ `)}}let u=c||"/";if(s)try{u=await e.fs.realpath(u)}catch{}return e.state.previousDir=e.state.cwd,e.state.cwd=u,e.state.env.set("PWD",e.state.cwd),e.state.env.set("OLDPWD",e.state.previousDir),ne(r?`${u}
118
+ `:"")}function Oo(e,t){return e.fs.resolvePath(e.state.cwd,t)}var Kp=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function Fs(e){return Kp.includes(e)}async function Ms(e,t,n){let r=Oo(e,n);switch(t){case"-e":case"-a":return e.fs.exists(r);case"-f":return await e.fs.exists(r)?(await e.fs.stat(r)).isFile:!1;case"-d":return await e.fs.exists(r)?(await e.fs.stat(r)).isDirectory:!1;case"-r":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&256)!==0:!1;case"-w":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&128)!==0:!1;case"-x":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&64)!==0:!1;case"-s":return await e.fs.exists(r)?(await e.fs.stat(r)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(r)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&512)!==0:!1;case"-g":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(r);case"-b":return!1;case"-c":return["/dev/null","/dev/zero","/dev/random","/dev/urandom","/dev/tty","/dev/stdin","/dev/stdout","/dev/stderr"].includes(r);case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(r);default:return!1}}var Xp=["-nt","-ot","-ef"];function Bs(e){return Xp.includes(e)}async function Ws(e,t,n,r){let s=Oo(e,n),i=Oo(e,r);switch(t){case"-nt":{let[o,a]=await Promise.all([e.fs.stat(s).catch(()=>null),e.fs.stat(i).catch(()=>null)]);return o!==null&&(a===null||o.mtime>a.mtime)}case"-ot":{let[o,a]=await Promise.all([e.fs.stat(s).catch(()=>null),e.fs.stat(i).catch(()=>null)]);return a!==null&&(o===null||o.mtime<a.mtime)}case"-ef":try{let[o,a]=await Promise.all([e.fs.realpath(s),e.fs.realpath(i)]);if(o===a)return!0;let[l,c]=await Promise.all([e.fs.stat(s),e.fs.stat(i)]);return l.dev!==void 0&&l.ino!==void 0&&c.dev!==void 0&&c.ino!==void 0?l.dev===c.dev&&l.ino===c.ino:l.identity&&c.identity?l.identity===c.identity:!1}catch{return!1}default:return!1}}var Yp=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function Vs(e){return Yp.has(e)}function zs(e,t,n){switch(e){case"-eq":return t===n;case"-ne":return t!==n;case"-lt":return t<n;case"-le":return t<=n;case"-gt":return t>n;case"-ge":return t>=n}}function Dr(e){return e==="="||e==="=="||e==="!="}function Us(e,t,n,r=!1,s=!1,i=!1,o=256){if(r){let l=nr(t,n,s,i,o);return e==="!="?!l:l}if(s){let l=t.toLowerCase()===n.toLowerCase();return e==="!="?!l:l}let a=t===n;return e==="!="?!a:a}var Jp=new Set(["-z","-n"]);function js(e){return Jp.has(e)}function qs(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Gs(e,t){let n=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(n){let r=n[1],s=n[2];if(e.state.associativeArrays?.has(r)){let a=s;return(a.startsWith("'")&&a.endsWith("'")||a.startsWith('"')&&a.endsWith('"'))&&(a=a.slice(1,-1)),a=a.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(l,c)=>e.state.env.get(c)||""),cn(e,r,a)}let o;try{let a=new Q,l=oe(a,s);o=await ee(e,l.expression)}catch{if(/^-?\d+$/.test(s))o=Number.parseInt(s,10);else{let a=e.state.env.get(s);o=a?Number.parseInt(a,10):0}}if(o<0){let a=xe(e,r),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
119
119
  `,!1;if(o=Math.max(...a)+1+o,o<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
120
- `,!1}return on(e,r,o)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Ot(e,t).length>0:ve(e,t).length>0}async function yn(e,t){switch(t.type){case"CondBinary":{let n=await oe(e,t.left),r=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),s;if(t.operator==="=~")if(r){let i=await oe(e,t.right);s=Qn(i)}else s=await Pu(e,t.right);else xr(t.operator)&&!r?s=await xu(e,t.right):s=await oe(e,t.right);if(xr(t.operator)){let i=e.state.shoptOptions.nocasematch;return Fs(t.operator,n,s,!r,i,!0,e.limits.maxCallDepth)}if(_s(t.operator))return Ls(t.operator,await Mu(e,n),await Mu(e,s));if(Is(t.operator))return Ts(e,t.operator,n,s);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=jp(s),l=ye(o,i?"i":"").match(n);if(Ee(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)G(e,"BASH_REMATCH",c,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return n<s;case">":return n>s;default:return!1}}case"CondUnary":{let n=await oe(e,t.operand);return Os(t.operator)?Ds(e,t.operator,n):Ms(t.operator)?Bs(t.operator,n):t.operator==="-v"?await Ws(e,n):t.operator==="-o"?Po(e,n):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await oe(e,t.operand.expression.word)})`!=="":!await yn(e,t.operand);case"CondAnd":return await yn(e,t.left)?await yn(e,t.right):!1;case"CondOr":return await yn(e,t.left)?!0:await yn(e,t.right);case"CondGroup":return await yn(e,t.expression);case"CondWord":return await oe(e,t.word)!=="";default:return!1}}async function $r(e,t){if(t.length===0)return L("","",1);if(t.length===1)return be(!!t[0]);if(t.length===2){let r=t[0],s=t[1];return r==="("?T(`test: '(' without matching ')'
121
- `,2):Os(r)?be(await Ds(e,r,s)):Ms(r)?be(Bs(r,s)):r==="!"?be(!s):r==="-v"?be(await Ws(e,s)):r==="-o"?be(Po(e,s)):r==="="||r==="=="||r==="!="||r==="<"||r===">"||r==="-eq"||r==="-ne"||r==="-lt"||r==="-le"||r==="-gt"||r==="-ge"||r==="-nt"||r==="-ot"||r==="-ef"?T(`test: ${r}: unary operator expected
122
- `,2):L("","",1)}if(t.length===3){let r=t[0],s=t[1],i=t[2];if(xr(s))return be(Fs(s,r,i));if(_s(s)){let o=Vs(r),a=Vs(i);return!o.valid||!a.valid?L("","",2):be(Ls(s,o.value,a.value))}if(Is(s))return be(await Ts(e,s,r,i));switch(s){case"-a":return be(r!==""&&i!=="");case"-o":return be(r!==""||i!=="");case">":return be(r>i);case"<":return be(r<i)}if(r==="!"){let o=await $r(e,[s,i]);return L("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return be(s!=="")}if(t.length===4){if(t[0]==="!"){let r=await $r(e,t.slice(1));return L("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return $r(e,[t[1],t[2]])}let n=await Wu(e,t,0);return n.pos<t.length?T(`test: too many arguments
123
- `,2):be(n.value)}async function Wu(e,t,n){return Wp(e,t,n)}async function Wp(e,t,n){let{value:r,pos:s}=await Fu(e,t,n);for(;t[s]==="-o";){let i=await Fu(e,t,s+1);r=r||i.value,s=i.pos}return{value:r,pos:s}}async function Fu(e,t,n){let{value:r,pos:s}=await ko(e,t,n);for(;t[s]==="-a";){let i=await ko(e,t,s+1);r=r&&i.value,s=i.pos}return{value:r,pos:s}}async function ko(e,t,n){let r=e.executionScope.enterDepth("test_expression",e.limits.maxCallDepth,"test expression");try{if(t[n]==="!"){let{value:s,pos:i}=await ko(e,t,n+1);return{value:!s,pos:i}}return Vp(e,t,n)}finally{r.release()}}async function Vp(e,t,n){let r=t[n];if(r==="("){let{value:i,pos:o}=await Wu(e,t,n+1);return{value:i,pos:t[o]===")"?o+1:o}}let s=t[n+1];if(xr(s)){let i=r,o=t[n+2]??"";return{value:Fs(s,i,o),pos:n+3}}if(_s(s)){let i=Vs(r),o=Vs(t[n+2]??"0");return!i.valid||!o.valid?{value:!1,pos:n+3}:{value:Ls(s,i.value,o.value),pos:n+3}}if(Is(s)){let i=r,o=t[n+2]??"";return{value:await Ts(e,s,i,o),pos:n+3}}if(Os(r)){let i=t[n+1]??"";return{value:await Ds(e,r,i),pos:n+2}}if(Ms(r)){let i=t[n+1]??"";return{value:Bs(r,i),pos:n+2}}if(r==="-v"){let i=t[n+1]??"";return{value:await Ws(e,i),pos:n+2}}if(r==="-o"){let i=t[n+1]??"";return{value:Po(e,i),pos:n+2}}return{value:r!==void 0&&r!=="",pos:n+1}}function Jn(e,t,n=!1,r=!1,s=256){r&&zp(t,s);let i=`^${Vu(t,r)}$`;return ye(i,n?"is":"s").test(e)}function zp(e,t){let n=0,r=[];for(let s=0;s<e.length;s++){if(e[s]==="\\"){s++;continue}if(e[s]==="("){let i=s>0&&"@*+?!".includes(e[s-1]);if(r.push(i),i&&n++,n>t)throw new $(`extglob maximum depth (${t}) exceeded`,"recursion")}else e[s]===")"&&r.length>0&&r.pop()&&n--}}function Vu(e,t){let n="";for(let r=0;r<e.length;r++){let s=e[r];if(t&&(s==="@"||s==="*"||s==="+"||s==="?"||s==="!")&&r+1<e.length&&e[r+1]==="("){let i=zu(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=Uu(o),l=a.map(u=>Vu(u,t)),c=l.length>0?l.join("|"):"(?:)";if(s==="@")n+=`(?:${c})`;else if(s==="*")n+=`(?:${c})*`;else if(s==="+")n+=`(?:${c})+`;else if(s==="?")n+=`(?:${c})?`;else if(s==="!")if(i<e.length-1){let f=a.map(h=>ju(h,t));if(f.every(h=>h!==null)&&f.every(h=>h===f[0])&&f[0]!==null){let h=f[0];if(h===0)n+="(?:.+)";else{let p=[];h>0&&p.push(`.{0,${h-1}}`),p.push(`.{${h+1},}`),p.push(`(?!(?:${c})).{${h}}`),n+=`(?:${p.join("|")})`}}else n+=`(?:(?!(?:${c})).)*?`}else n+=`(?!(?:${c})$).*`;r=i;continue}}if(s==="\\")if(r+1<e.length){let i=e[r+1];/[\\^$.|+(){}[\]*?]/.test(i)?n+=`\\${i}`:n+=i,r++}else n+="\\\\";else if(s==="*")n+=".*";else if(s==="?")n+=".";else if(s==="["){let i=e.indexOf("]",r+1);i!==-1?(n+=e.slice(r,i+1),r=i):n+="\\["}else/[\\^$.|+(){}]/.test(s)?n+=`\\${s}`:n+=s}return n}function zu(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function Uu(e){let t=[],n="",r=0,s=0;for(;s<e.length;){let i=e[s];if(i==="\\"){n+=i,s+1<e.length?(n+=e[s+1],s+=2):s++;continue}i==="("?(r++,n+=i):i===")"?(r--,n+=i):i==="|"&&r===0?(t.push(n),n=""):n+=i,s++}return t.push(n),t}function ju(e,t){let n=0,r=0;for(;r<e.length;){let s=e[r];if(t&&(s==="@"||s==="*"||s==="+"||s==="?"||s==="!")&&r+1<e.length&&e[r+1]==="("){let i=zu(e,r+1);if(i!==-1){if(s==="@"){let o=e.slice(r+2,i),l=Uu(o).map(c=>ju(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){n+=l[0],r=i+1;continue}return null}return null}}if(s==="*")return null;if(s==="?"){n+=1,r++;continue}if(s==="["){let i=e.indexOf("]",r+1);if(i!==-1){n+=1,r=i+1;continue}n+=1,r++;continue}if(s==="\\"){n+=1,r+=2;continue}n+=1,r++}return n}function Po(e,t){let r=new Map([["errexit",()=>e.state.options.errexit===!0],["nounset",()=>e.state.options.nounset===!0],["pipefail",()=>e.state.options.pipefail===!0],["xtrace",()=>e.state.options.xtrace===!0],["e",()=>e.state.options.errexit===!0],["u",()=>e.state.options.nounset===!0],["x",()=>e.state.options.xtrace===!0]]).get(t);return r?r():!1}async function Mu(e,t){if(t=t.trim(),t==="")return 0;if(/^[+-]?(\d+#[a-zA-Z0-9@_]+|0[xX][0-9a-fA-F]+|0[0-7]+|\d+)$/.test(t))return Bu(t);try{let n=new Z,r=ie(n,t);return await J(e,r.expression)}catch{return Bu(t)}}function Up(e,t){let n=0;for(let r of e){let s;if(r>="0"&&r<="9")s=r.charCodeAt(0)-48;else if(r>="a"&&r<="z")s=r.charCodeAt(0)-97+10;else if(r>="A"&&r<="Z")s=r.charCodeAt(0)-65+36;else if(r==="@")s=62;else if(r==="_")s=63;else return Number.NaN;if(s>=t)return Number.NaN;n=n*t+s}return n}function Bu(e){if(e=e.trim(),e==="")return 0;let t=!1;e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let n,r=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(r){let s=Number.parseInt(r[1],10);s>=2&&s<=64?n=Up(r[2],s):n=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?n=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?n=Number.parseInt(e,8):n=Number.parseInt(e,10);return Number.isNaN(n)&&(n=0),t?-n:n}function Vs(e){if(e=e.trim(),e==="")return{value:0,valid:!0};let t=!1;if(e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1)),!/^\d+$/.test(e))return{value:0,valid:!1};let n=Number.parseInt(e,10);return Number.isNaN(n)?{value:0,valid:!1}:{value:t?-n:n,valid:!0}}function jp(e){let t="",n=0;for(;n<e.length;)if(e[n]==="\\"&&n+1<e.length)t+=e[n]+e[n+1],n+=2;else if(e[n]==="["){let r=qp(e,n);t+=r.converted,n=r.endIndex}else t+=e[n],n++;return t}function qp(e,t){let n=t+1,r="[";n<e.length&&(e[n]==="^"||e[n]==="!")&&(r+="^",n++);let s=!1;n<e.length&&e[n]==="]"&&(s=!0,n++);let i=!1;n<e.length&&e[n]==="["&&n+1<e.length&&e[n+1]!==":"&&(i=!0,n++);let o="",a=!1;for(;n<e.length;){let l=e[n];if(l==="]"){a=!0,n++;break}if(l==="["&&n+1<e.length&&e[n+1]===":"){let c=e.indexOf(":]",n+2);if(c!==-1){let u=e.slice(n+2,c);o+=Gp(u),n=c+2;continue}}if(l==="["&&n+1<e.length){let c=e[n+1];if(c==="."||c==="="){let u=`${c}]`,f=e.indexOf(u,n+2);if(f!==-1){let d=e.slice(n+2,f);o+=d,n=f+2;continue}}}if(l==="\\"&&n+1<e.length){o+=l+e[n+1],n+=2;continue}o+=l,n++}return a?(s&&(r+="\\]"),i&&(r+="\\["),r+=o,r+="]",{converted:r,endIndex:n}):{converted:"\\[",endIndex:t+1}}function Gp(e){return new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]).get(e)??""}function xo(e,t,n){if(n&&e.length>=n.maxElements)throw new $(`array element limit exceeded (${n.maxElements})`,"array_elements");e.push(t)}function Zt(e,t){if(t&&B(e)>t.maxStringBytes)throw new $(`array assignment string limit exceeded (${t.maxStringBytes} bytes)`,"string_length");let n=[],r="",s=!1,i=!1,o=!1,a=!1;for(let l of e){if(o){r+=l,o=!1,a=!0;continue}if(l==="\\"){o=!0;continue}if(l==="'"&&!i){s||(a=!0),s=!s;continue}if(l==='"'&&!s){i||(a=!0),i=!i;continue}if((l===" "||l===" "||l===`
124
- `)&&!s&&!i){a&&(xo(n,r,t),r="",a=!1);continue}r+=l,a=!0}return a&&xo(n,r,t),n}function zs(e,t){if(t&&B(e)>t.maxStringBytes)throw new $(`array assignment string limit exceeded (${t.maxStringBytes} bytes)`,"string_length");let n=[],r=0;for(;r<e.length;){for(;r<e.length&&/\s/.test(e[r]);)r++;if(r>=e.length)break;if(e[r]!=="["){r++;continue}r++;let s="";if(e[r]==="'"||e[r]==='"'){let o=e[r];for(r++;r<e.length&&e[r]!==o;)s+=e[r],r++;e[r]===o&&r++}else for(;r<e.length&&e[r]!=="]"&&e[r]!=="=";)s+=e[r],r++;for(;r<e.length&&e[r]!=="]";)r++;if(e[r]==="]"&&r++,e[r]!=="=")continue;r++;let i="";if(e[r]==="'"||e[r]==='"'){let o=e[r];for(r++;r<e.length&&e[r]!==o;)e[r]==="\\"&&r+1<e.length&&r++,i+=e[r],r++;e[r]===o&&r++}else for(;r<e.length&&!/\s/.test(e[r]);)i+=e[r],r++;xo(n,[s,i],t)}return n}function qu(e,t){let n=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(n)return{name:n[1],isArray:!0,arrayElements:Zt(n[2],t)};let r=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(r)return{name:r[1],isArray:!1,arrayIndex:r[2],value:r[3]};if(e.includes("=")){let s=e.indexOf("=");return{name:e.slice(0,s),isArray:!1,value:e.slice(s+1)}}return{name:e,isArray:!1}}async function Hp(e,t){try{let n=new Z,r=ie(n,t);return await J(e,r.expression)}catch{let n=parseInt(t,10);return Number.isNaN(n)?0:n}}async function Gu(e,t,n={}){let{name:r,isArray:s,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=n;if(c){let u=fe(e,r);if(u)return u}if(s&&i){e.executionScope.consumeWork(i.length,"array assignment");let u=Pe(e,r),f=u?Ue(u):void 0,d=e.state.env.get(r);try{Ee(e,r);for(let h=0;h<i.length;h++)G(e,r,h,i[h]);e.state.env.delete(r)}catch(h){throw e.state.arrays??=new Map,f?e.state.arrays.set(r,f):e.state.arrays.delete(r),d===void 0?e.state.env.delete(r):e.state.env.set(r,d),h}}else if(a!==void 0&&o!==void 0){let u=await Hp(e,a);G(e,r,u,o)}else o!==void 0&&e.state.env.set(r,o);return l&&Je(e,r),null}function gn(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function $o(e,t){return e.state.localVarDepth?.get(t)}function Us(e,t){e.state.localVarDepth?.delete(t)}function Hu(e,t,n){e.state.localVarStack=e.state.localVarStack||new Map;let r=e.state.localVarStack.get(t)||[];r.push({value:n,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,r)}function js(e,t){let n=e.state.localVarStack?.get(t);if(!(!n||n.length===0))return n.pop()}function Zu(e,t){if(e.state.localVarStack)for(let[n,r]of e.state.localVarStack.entries()){for(;r.length>0&&r[r.length-1].scopeIndex===t;)r.pop();r.length===0&&e.state.localVarStack.delete(n)}}var Co="__file__:",No="__file_append__:",Do="__rw__:",Ro="__dupout__:",Oo="__dupin__:",Se=3;function Zp(e){let t=e.slice(Do.length),n=t.indexOf(":");if(n===-1)return null;let r=Number.parseInt(t.slice(0,n),10);if(Number.isNaN(r)||r<0)return null;let s=n+1,i=t.slice(s,s+r),o=t.slice(s+r+1),a=o.indexOf(":");if(a===-1)return null;let l=Number.parseInt(o.slice(0,a),10);return Number.isNaN(l)||l<0?null:{path:i,position:l,content:o.slice(a+1)}}function Qu(e,t){let n=Number.parseInt(e.slice(t.length),10);return Number.isNaN(n)?null:n}function Qp(e){if(e.startsWith(Co))return{kind:"output",path:e.slice(Co.length),append:!1};if(e.startsWith(No))return{kind:"output",path:e.slice(No.length),append:!0};if(e.startsWith(Do)){let t=Zp(e);if(t)return{kind:"readwrite",...t}}if(e.startsWith(Ro)){let t=Qu(e,Ro);if(t!==null)return{kind:"dup-out",sourceFd:t}}if(e.startsWith(Oo)){let t=Qu(e,Oo);if(t!==null)return{kind:"dup-in",sourceFd:t}}return{kind:"input",content:e}}function Io(e){switch(e.kind){case"input":return e.content;case"output":return`${e.append?No:Co}${e.path}`;case"readwrite":return`${Do}${e.path.length}:${e.path}:${e.position}:${e.content}`;case"dup-out":return`${Ro}${e.sourceFd}`;case"dup-in":return`${Oo}${e.sourceFd}`;case"closed":throw new Error("Closed descriptors have no table encoding")}}function Kp(e){return e.state.fileDescriptors??=new Map,e.state.fileDescriptors}function Xp(e,t,n){n?(e.state.inputFds??=new Set,e.state.inputFds.add(t)):e.state.inputFds?.delete(t)}function er(e,t){return e.state.fdAliases?.get(t)}function wn(e,t){return[...er(e,t)??[t]]}function Ku(e,t){let n=er(e,t);if(n&&(n.delete(t),e.state.fdAliases?.delete(t),n.size<2))for(let r of n)e.state.fdAliases?.delete(r)}function To(e,t,n){if(t===n)return;e.state.fdAliases??=new Map;let r=er(e,n)??new Set([n]);r.add(t);for(let s of r)e.state.fdAliases.set(s,r)}function qs(e,t){return e.state.fileDescriptors?.get(t)}function at(e,t){let n=qs(e,t);if(n!==void 0)return e.state.inputFds?.has(t)?{kind:"input",content:n}:Qp(n)}function Ln(e,t){return e.state.fileDescriptors?.has(t)===!0}function _o(e,t,n,r){let s=Kp(e);s.has(t)||Lu(e),s.set(t,n),Xp(e,t,r)}function Gs(e,t,n,r=!1){Ku(e,t),_o(e,t,n,r)}function ht(e,t,n){Gs(e,t,Io(n),n.kind==="input")}function Ft(e,t){e.state.fileDescriptors?.delete(t),e.state.inputFds?.delete(t),Ku(e,t)}function Hs(e,t,n){let r=qs(e,n);return r===void 0?!1:(Gs(e,t,r,e.state.inputFds?.has(n)===!0),To(e,t,n),!0)}function Lo(e,t,n){let r=qs(e,n);if(r===void 0)return!1;if(t===n)return!0;let s=e.state.inputFds?.has(n)===!0,i=[...er(e,n)??[]].filter(a=>a!==n);Ft(e,n),Gs(e,t,r,s);let o=i.find(a=>Ln(e,a));return o!==void 0&&To(e,t,o),!0}function Zs(e,t){let n=at(e,t);if(n===void 0)return{error:"not-open"};switch(n.kind){case"input":return{content:n.content};case"readwrite":return{content:n.content.slice(n.position)};case"output":case"dup-out":return{error:"write-only"};case"dup-in":return{error:"not-open"};case"closed":return{error:"not-open"}}}function En(e,t,n){let r=at(e,t);if(r===void 0)return;let s;if(r.kind==="input")s={kind:"input",content:r.content.slice(n)};else if(r.kind==="readwrite")s={...r,position:r.position+n};else return;let i=Io(s),o=s.kind==="input";for(let a of er(e,t)??[t])_o(e,a,i,o)}async function Fo(e,t,n,r,s){if(t.kind==="output")return await e.fs.appendFile(t.path,r,s),!0;let o=n.map(u=>at(e,u)).find(u=>u?.kind==="readwrite")??t;if(o.kind!=="readwrite")return!1;let a=o.content.slice(0,o.position)+r+o.content.slice(o.position+r.length),l={...o,position:o.position+r.length,content:a};await e.fs.writeFile(o.path,a,s);let c=Io(l);for(let u of n)Ln(e,u)&&_o(e,u,c,!1);return!0}function bn(e,t,n){if(t.has(n))return;let r=er(e,n);t.set(n,{raw:qs(e,n),isInput:e.state.inputFds?.has(n)===!0,aliases:r?[...r].filter(s=>s!==n):[]})}function Qs(e,t){let n=e.state.fileDescriptors;if(n)for(let[r,{raw:s,isInput:i,aliases:o}]of t){if(s===void 0){Ft(e,r);continue}Gs(e,r,s,i);let a=o.find(l=>n.has(l));a!==void 0&&To(e,r,a)}}function Mo(e){switch(e.operator){case"<":case"<>":case"<<":case"<<-":case"<<<":case"<&":return e.fd??0;case">":case">>":case">|":case">&":return e.fd??1;default:return null}}function Xu(e){if(e.fdVariable)return!1;let t=Mo(e);return t!==null&&t>=Se}async function Yp(e,t,n,r){try{if(!await e.fs.exists(t))return null;if((await e.fs.stat(t)).isDirectory)return`bash: ${n}: Is a directory
120
+ `,!1}return cn(e,r,o)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Tt(e,t).length>0:xe(e,t).length>0}async function wn(e,t){switch(t.type){case"CondBinary":{let n=await ae(e,t.left),r=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),s;if(t.operator==="=~")if(r){let i=await ae(e,t.right);s=Yn(i)}else s=await Du(e,t.right);else Dr(t.operator)&&!r?s=await Iu(e,t.right):s=await ae(e,t.right);if(Dr(t.operator)){let i=e.state.shoptOptions.nocasematch;return Us(t.operator,n,s,!r,i,!0,e.limits.maxCallDepth)}if(Vs(t.operator))return zs(t.operator,await qu(e,n),await qu(e,s));if(Bs(t.operator))return Ws(e,t.operator,n,s);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=sm(s),l=ge(o,i?"i":"").match(n);if(be(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)H(e,"BASH_REMATCH",c,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return n<s;case">":return n>s;default:return!1}}case"CondUnary":{let n=await ae(e,t.operand);return Fs(t.operator)?Ms(e,t.operator,n):js(t.operator)?qs(t.operator,n):t.operator==="-v"?await Gs(e,n):t.operator==="-o"?Io(e,n):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await ae(e,t.operand.expression.word)})`!=="":!await wn(e,t.operand);case"CondAnd":return await wn(e,t.left)?await wn(e,t.right):!1;case"CondOr":return await wn(e,t.left)?!0:await wn(e,t.right);case"CondGroup":return await wn(e,t.expression);case"CondWord":return await ae(e,t.word)!=="";default:return!1}}async function rr(e,t){if(t.length===0)return F("","",1);if(t.length===1)return Se(!!t[0]);if(t.length===2){let r=t[0],s=t[1];return r==="("?_(`test: '(' without matching ')'
121
+ `,2):Fs(r)?Se(await Ms(e,r,s)):js(r)?Se(qs(r,s)):r==="!"?Se(!s):r==="-v"?Se(await Gs(e,s)):r==="-o"?Se(Io(e,s)):r==="="||r==="=="||r==="!="||r==="<"||r===">"||r==="-eq"||r==="-ne"||r==="-lt"||r==="-le"||r==="-gt"||r==="-ge"||r==="-nt"||r==="-ot"||r==="-ef"?_(`test: ${r}: unary operator expected
122
+ `,2):F("","",1)}if(t.length===3){let r=t[0],s=t[1],i=t[2];if(Dr(s))return Se(Us(s,r,i));if(Vs(s)){let o=Hs(r),a=Hs(i);return!o.valid||!a.valid?F("","",2):Se(zs(s,o.value,a.value))}if(Bs(s))return Se(await Ws(e,s,r,i));switch(s){case"-a":return Se(r!==""&&i!=="");case"-o":return Se(r!==""||i!=="");case">":return Se(r>i);case"<":return Se(r<i)}if(r==="!"){let o=await rr(e,[s,i]);return F("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return Se(s!=="")}if(t.length===4){if(t[0]==="!"){let r=await rr(e,t.slice(1));return F("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return rr(e,[t[1],t[2]])}let n=await Hu(e,t,0);return n.pos<t.length?_(`test: too many arguments
123
+ `,2):Se(n.value)}async function Hu(e,t,n){return em(e,t,n)}async function em(e,t,n){let{value:r,pos:s}=await ju(e,t,n);for(;t[s]==="-o";){let i=await ju(e,t,s+1);r=r||i.value,s=i.pos}return{value:r,pos:s}}async function ju(e,t,n){let{value:r,pos:s}=await Do(e,t,n);for(;t[s]==="-a";){let i=await Do(e,t,s+1);r=r&&i.value,s=i.pos}return{value:r,pos:s}}async function Do(e,t,n){let r=e.executionScope.enterDepth("test_expression",e.limits.maxCallDepth,"test expression");try{if(t[n]==="!"){let{value:s,pos:i}=await Do(e,t,n+1);return{value:!s,pos:i}}return tm(e,t,n)}finally{r.release()}}async function tm(e,t,n){let r=t[n];if(r==="("){let{value:i,pos:o}=await Hu(e,t,n+1);return{value:i,pos:t[o]===")"?o+1:o}}let s=t[n+1];if(Dr(s)){let i=r,o=t[n+2]??"";return{value:Us(s,i,o),pos:n+3}}if(Vs(s)){let i=Hs(r),o=Hs(t[n+2]??"0");return!i.valid||!o.valid?{value:!1,pos:n+3}:{value:zs(s,i.value,o.value),pos:n+3}}if(Bs(s)){let i=r,o=t[n+2]??"";return{value:await Ws(e,s,i,o),pos:n+3}}if(Fs(r)){let i=t[n+1]??"";return{value:await Ms(e,r,i),pos:n+2}}if(js(r)){let i=t[n+1]??"";return{value:qs(r,i),pos:n+2}}if(r==="-v"){let i=t[n+1]??"";return{value:await Gs(e,i),pos:n+2}}if(r==="-o"){let i=t[n+1]??"";return{value:Io(e,i),pos:n+2}}return{value:r!==void 0&&r!=="",pos:n+1}}function nr(e,t,n=!1,r=!1,s=256){r&&nm(t,s);let i=`^${Zu(t,r)}$`;return ge(i,n?"is":"s").test(e)}function nm(e,t){let n=0,r=[];for(let s=0;s<e.length;s++){if(e[s]==="\\"){s++;continue}if(e[s]==="("){let i=s>0&&"@*+?!".includes(e[s-1]);if(r.push(i),i&&n++,n>t)throw new C(`extglob maximum depth (${t}) exceeded`,"recursion")}else e[s]===")"&&r.length>0&&r.pop()&&n--}}function Zu(e,t){let n="";for(let r=0;r<e.length;r++){let s=e[r];if(t&&(s==="@"||s==="*"||s==="+"||s==="?"||s==="!")&&r+1<e.length&&e[r+1]==="("){let i=Qu(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=Ku(o),l=a.map(u=>Zu(u,t)),c=l.length>0?l.join("|"):"(?:)";if(s==="@")n+=`(?:${c})`;else if(s==="*")n+=`(?:${c})*`;else if(s==="+")n+=`(?:${c})+`;else if(s==="?")n+=`(?:${c})?`;else if(s==="!")if(i<e.length-1){let f=a.map(h=>Xu(h,t));if(f.every(h=>h!==null)&&f.every(h=>h===f[0])&&f[0]!==null){let h=f[0];if(h===0)n+="(?:.+)";else{let p=[];h>0&&p.push(`.{0,${h-1}}`),p.push(`.{${h+1},}`),p.push(`(?!(?:${c})).{${h}}`),n+=`(?:${p.join("|")})`}}else n+=`(?:(?!(?:${c})).)*?`}else n+=`(?!(?:${c})$).*`;r=i;continue}}if(s==="\\")if(r+1<e.length){let i=e[r+1];/[\\^$.|+(){}[\]*?]/.test(i)?n+=`\\${i}`:n+=i,r++}else n+="\\\\";else if(s==="*")n+=".*";else if(s==="?")n+=".";else if(s==="["){let i=e.indexOf("]",r+1);i!==-1?(n+=e.slice(r,i+1),r=i):n+="\\["}else/[\\^$.|+(){}]/.test(s)?n+=`\\${s}`:n+=s}return n}function Qu(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function Ku(e){let t=[],n="",r=0,s=0;for(;s<e.length;){let i=e[s];if(i==="\\"){n+=i,s+1<e.length?(n+=e[s+1],s+=2):s++;continue}i==="("?(r++,n+=i):i===")"?(r--,n+=i):i==="|"&&r===0?(t.push(n),n=""):n+=i,s++}return t.push(n),t}function Xu(e,t){let n=0,r=0;for(;r<e.length;){let s=e[r];if(t&&(s==="@"||s==="*"||s==="+"||s==="?"||s==="!")&&r+1<e.length&&e[r+1]==="("){let i=Qu(e,r+1);if(i!==-1){if(s==="@"){let o=e.slice(r+2,i),l=Ku(o).map(c=>Xu(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){n+=l[0],r=i+1;continue}return null}return null}}if(s==="*")return null;if(s==="?"){n+=1,r++;continue}if(s==="["){let i=e.indexOf("]",r+1);if(i!==-1){n+=1,r=i+1;continue}n+=1,r++;continue}if(s==="\\"){n+=1,r+=2;continue}n+=1,r++}return n}function Io(e,t){let r=new Map([["errexit",()=>e.state.options.errexit===!0],["nounset",()=>e.state.options.nounset===!0],["pipefail",()=>e.state.options.pipefail===!0],["xtrace",()=>e.state.options.xtrace===!0],["e",()=>e.state.options.errexit===!0],["u",()=>e.state.options.nounset===!0],["x",()=>e.state.options.xtrace===!0]]).get(t);return r?r():!1}async function qu(e,t){if(t=t.trim(),t==="")return 0;if(/^[+-]?(\d+#[a-zA-Z0-9@_]+|0[xX][0-9a-fA-F]+|0[0-7]+|\d+)$/.test(t))return Gu(t);try{let n=new Q,r=oe(n,t);return await ee(e,r.expression)}catch{return Gu(t)}}function rm(e,t){let n=0;for(let r of e){let s;if(r>="0"&&r<="9")s=r.charCodeAt(0)-48;else if(r>="a"&&r<="z")s=r.charCodeAt(0)-97+10;else if(r>="A"&&r<="Z")s=r.charCodeAt(0)-65+36;else if(r==="@")s=62;else if(r==="_")s=63;else return Number.NaN;if(s>=t)return Number.NaN;n=n*t+s}return n}function Gu(e){if(e=e.trim(),e==="")return 0;let t=!1;e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let n,r=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(r){let s=Number.parseInt(r[1],10);s>=2&&s<=64?n=rm(r[2],s):n=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?n=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?n=Number.parseInt(e,8):n=Number.parseInt(e,10);return Number.isNaN(n)&&(n=0),t?-n:n}function Hs(e){if(e=e.trim(),e==="")return{value:0,valid:!0};let t=!1;if(e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1)),!/^\d+$/.test(e))return{value:0,valid:!1};let n=Number.parseInt(e,10);return Number.isNaN(n)?{value:0,valid:!1}:{value:t?-n:n,valid:!0}}function sm(e){let t="",n=0;for(;n<e.length;)if(e[n]==="\\"&&n+1<e.length)t+=e[n]+e[n+1],n+=2;else if(e[n]==="["){let r=im(e,n);t+=r.converted,n=r.endIndex}else t+=e[n],n++;return t}function im(e,t){let n=t+1,r="[";n<e.length&&(e[n]==="^"||e[n]==="!")&&(r+="^",n++);let s=!1;n<e.length&&e[n]==="]"&&(s=!0,n++);let i=!1;n<e.length&&e[n]==="["&&n+1<e.length&&e[n+1]!==":"&&(i=!0,n++);let o="",a=!1;for(;n<e.length;){let l=e[n];if(l==="]"){a=!0,n++;break}if(l==="["&&n+1<e.length&&e[n+1]===":"){let c=e.indexOf(":]",n+2);if(c!==-1){let u=e.slice(n+2,c);o+=om(u),n=c+2;continue}}if(l==="["&&n+1<e.length){let c=e[n+1];if(c==="."||c==="="){let u=`${c}]`,f=e.indexOf(u,n+2);if(f!==-1){let d=e.slice(n+2,f);o+=d,n=f+2;continue}}}if(l==="\\"&&n+1<e.length){o+=l+e[n+1],n+=2;continue}o+=l,n++}return a?(s&&(r+="\\]"),i&&(r+="\\["),r+=o,r+="]",{converted:r,endIndex:n}):{converted:"\\[",endIndex:t+1}}function om(e){return new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]).get(e)??""}function To(e,t,n){if(n&&e.length>=n.maxElements)throw new C(`array element limit exceeded (${n.maxElements})`,"array_elements");e.push(t)}function Kt(e,t){if(t&&W(e)>t.maxStringBytes)throw new C(`array assignment string limit exceeded (${t.maxStringBytes} bytes)`,"string_length");let n=[],r="",s=!1,i=!1,o=!1,a=!1;for(let l of e){if(o){r+=l,o=!1,a=!0;continue}if(l==="\\"){o=!0;continue}if(l==="'"&&!i){s||(a=!0),s=!s;continue}if(l==='"'&&!s){i||(a=!0),i=!i;continue}if((l===" "||l===" "||l===`
124
+ `)&&!s&&!i){a&&(To(n,r,t),r="",a=!1);continue}r+=l,a=!0}return a&&To(n,r,t),n}function Zs(e,t){if(t&&W(e)>t.maxStringBytes)throw new C(`array assignment string limit exceeded (${t.maxStringBytes} bytes)`,"string_length");let n=[],r=0;for(;r<e.length;){for(;r<e.length&&/\s/.test(e[r]);)r++;if(r>=e.length)break;if(e[r]!=="["){r++;continue}r++;let s="";if(e[r]==="'"||e[r]==='"'){let o=e[r];for(r++;r<e.length&&e[r]!==o;)s+=e[r],r++;e[r]===o&&r++}else for(;r<e.length&&e[r]!=="]"&&e[r]!=="=";)s+=e[r],r++;for(;r<e.length&&e[r]!=="]";)r++;if(e[r]==="]"&&r++,e[r]!=="=")continue;r++;let i="";if(e[r]==="'"||e[r]==='"'){let o=e[r];for(r++;r<e.length&&e[r]!==o;)e[r]==="\\"&&r+1<e.length&&r++,i+=e[r],r++;e[r]===o&&r++}else for(;r<e.length&&!/\s/.test(e[r]);)i+=e[r],r++;To(n,[s,i],t)}return n}function Yu(e,t){let n=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(n)return{name:n[1],isArray:!0,arrayElements:Kt(n[2],t)};let r=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(r)return{name:r[1],isArray:!1,arrayIndex:r[2],value:r[3]};if(e.includes("=")){let s=e.indexOf("=");return{name:e.slice(0,s),isArray:!1,value:e.slice(s+1)}}return{name:e,isArray:!1}}async function am(e,t){try{let n=new Q,r=oe(n,t);return await ee(e,r.expression)}catch{let n=parseInt(t,10);return Number.isNaN(n)?0:n}}async function Ju(e,t,n={}){let{name:r,isArray:s,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=n;if(c){let u=de(e,r);if(u)return u}if(s&&i){e.executionScope.consumeWork(i.length,"array assignment");let u=$e(e,r),f=u?je(u):void 0,d=e.state.env.get(r);try{be(e,r);for(let h=0;h<i.length;h++)H(e,r,h,i[h]);e.state.env.delete(r)}catch(h){throw e.state.arrays??=new Map,f?e.state.arrays.set(r,f):e.state.arrays.delete(r),d===void 0?e.state.env.delete(r):e.state.env.set(r,d),h}}else if(a!==void 0&&o!==void 0){let u=await am(e,a);H(e,r,u,o)}else o!==void 0&&e.state.env.set(r,o);return l&&et(e,r),null}function En(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function _o(e,t){return e.state.localVarDepth?.get(t)}function Qs(e,t){e.state.localVarDepth?.delete(t)}function ef(e,t,n){e.state.localVarStack=e.state.localVarStack||new Map;let r=e.state.localVarStack.get(t)||[];r.push({value:n,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,r)}function Ks(e,t){let n=e.state.localVarStack?.get(t);if(!(!n||n.length===0))return n.pop()}function tf(e,t){if(e.state.localVarStack)for(let[n,r]of e.state.localVarStack.entries()){for(;r.length>0&&r[r.length-1].scopeIndex===t;)r.pop();r.length===0&&e.state.localVarStack.delete(n)}}var Lo="__file__:",Fo="__file_append__:",Wo="__rw__:",Mo="__dupout__:",Bo="__dupin__:",Ae=3;function lm(e){let t=e.slice(Wo.length),n=t.indexOf(":");if(n===-1)return null;let r=Number.parseInt(t.slice(0,n),10);if(Number.isNaN(r)||r<0)return null;let s=n+1,i=t.slice(s,s+r),o=t.slice(s+r+1),a=o.indexOf(":");if(a===-1)return null;let l=Number.parseInt(o.slice(0,a),10);return Number.isNaN(l)||l<0?null:{path:i,position:l,content:o.slice(a+1)}}function nf(e,t){let n=Number.parseInt(e.slice(t.length),10);return Number.isNaN(n)?null:n}function cm(e){if(e.startsWith(Lo))return{kind:"output",path:e.slice(Lo.length),append:!1};if(e.startsWith(Fo))return{kind:"output",path:e.slice(Fo.length),append:!0};if(e.startsWith(Wo)){let t=lm(e);if(t)return{kind:"readwrite",...t}}if(e.startsWith(Mo)){let t=nf(e,Mo);if(t!==null)return{kind:"dup-out",sourceFd:t}}if(e.startsWith(Bo)){let t=nf(e,Bo);if(t!==null)return{kind:"dup-in",sourceFd:t}}return{kind:"input",content:e}}function Vo(e){switch(e.kind){case"input":return e.content;case"output":return`${e.append?Fo:Lo}${e.path}`;case"readwrite":return`${Wo}${e.path.length}:${e.path}:${e.position}:${e.content}`;case"dup-out":return`${Mo}${e.sourceFd}`;case"dup-in":return`${Bo}${e.sourceFd}`;case"closed":throw new Error("Closed descriptors have no table encoding")}}function um(e){return e.state.fileDescriptors??=new Map,e.state.fileDescriptors}function fm(e,t,n){n?(e.state.inputFds??=new Set,e.state.inputFds.add(t)):e.state.inputFds?.delete(t)}function sr(e,t){return e.state.fdAliases?.get(t)}function bn(e,t){return[...sr(e,t)??[t]]}function rf(e,t){let n=sr(e,t);if(n&&(n.delete(t),e.state.fdAliases?.delete(t),n.size<2))for(let r of n)e.state.fdAliases?.delete(r)}function zo(e,t,n){if(t===n)return;e.state.fdAliases??=new Map;let r=sr(e,n)??new Set([n]);r.add(t);for(let s of r)e.state.fdAliases.set(s,r)}function Xs(e,t){return e.state.fileDescriptors?.get(t)}function lt(e,t){let n=Xs(e,t);if(n!==void 0)return e.state.inputFds?.has(t)?{kind:"input",content:n}:cm(n)}function Bn(e,t){return e.state.fileDescriptors?.has(t)===!0}function Uo(e,t,n,r){let s=um(e);s.has(t)||Uu(e),s.set(t,n),fm(e,t,r)}function Ys(e,t,n,r=!1){rf(e,t),Uo(e,t,n,r)}function mt(e,t,n){Ys(e,t,Vo(n),n.kind==="input")}function Bt(e,t){e.state.fileDescriptors?.delete(t),e.state.inputFds?.delete(t),rf(e,t)}function Js(e,t,n){let r=Xs(e,n);return r===void 0?!1:(Ys(e,t,r,e.state.inputFds?.has(n)===!0),zo(e,t,n),!0)}function jo(e,t,n){let r=Xs(e,n);if(r===void 0)return!1;if(t===n)return!0;let s=e.state.inputFds?.has(n)===!0,i=[...sr(e,n)??[]].filter(a=>a!==n);Bt(e,n),Ys(e,t,r,s);let o=i.find(a=>Bn(e,a));return o!==void 0&&zo(e,t,o),!0}function ei(e,t){let n=lt(e,t);if(n===void 0)return{error:"not-open"};switch(n.kind){case"input":return{content:n.content};case"readwrite":return{content:n.content.slice(n.position)};case"output":case"dup-out":return{error:"write-only"};case"dup-in":return{error:"not-open"};case"closed":return{error:"not-open"}}}function Sn(e,t,n){let r=lt(e,t);if(r===void 0)return;let s;if(r.kind==="input")s={kind:"input",content:r.content.slice(n)};else if(r.kind==="readwrite")s={...r,position:r.position+n};else return;let i=Vo(s),o=s.kind==="input";for(let a of sr(e,t)??[t])Uo(e,a,i,o)}async function qo(e,t,n,r,s){if(t.kind==="output")return await e.fs.appendFile(t.path,r,s),!0;let o=n.map(u=>lt(e,u)).find(u=>u?.kind==="readwrite")??t;if(o.kind!=="readwrite")return!1;let a=o.content.slice(0,o.position)+r+o.content.slice(o.position+r.length),l={...o,position:o.position+r.length,content:a};await e.fs.writeFile(o.path,a,s);let c=Vo(l);for(let u of n)Bn(e,u)&&Uo(e,u,c,!1);return!0}function An(e,t,n){if(t.has(n))return;let r=sr(e,n);t.set(n,{raw:Xs(e,n),isInput:e.state.inputFds?.has(n)===!0,aliases:r?[...r].filter(s=>s!==n):[]})}function ti(e,t){let n=e.state.fileDescriptors;if(n)for(let[r,{raw:s,isInput:i,aliases:o}]of t){if(s===void 0){Bt(e,r);continue}Ys(e,r,s,i);let a=o.find(l=>n.has(l));a!==void 0&&zo(e,r,a)}}function Go(e){switch(e.operator){case"<":case"<>":case"<<":case"<<-":case"<<<":case"<&":return e.fd??0;case">":case">>":case">|":case">&":return e.fd??1;default:return null}}function sf(e){if(e.fdVariable)return!1;let t=Go(e);return t!==null&&t>=Ae}async function dm(e,t,n,r){try{if(!await e.fs.exists(t))return null;if((await e.fs.stat(t)).isDirectory)return`bash: ${n}: Is a directory
125
125
  `;if(r.checkNoclobber&&e.state.options.noclobber&&!r.isClobber&&n!=="/dev/null")return`bash: ${n}: cannot overwrite existing file
126
126
  `}catch{return`bash: ${n}: cannot open redirect target
127
- `}return null}function Yu(e){let n=Math.min(e.length,8192);for(let r=0;r<n;r++)if(e.charCodeAt(r)>127)return"utf8";return"binary"}var Cr="scoped",ef="bare",tf="persistent",Jp=e=>new $(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors"),em=(e,t)=>Ln(e,t)||(e.state.fileDescriptors?.size??0)<e.limits.maxFileDescriptors,Ju=e=>{let t=Math.max(e.state.nextFd??10,10);for(;Ln(e,t);)t+=1;return t},Ks=e=>{let t=e.endsWith("-"),n=t?e.slice(0,-1):e;return/^\d+$/.test(n)?{sourceFd:Number.parseInt(n,10),move:t}:null},tm=(e,t,n)=>{let r=at(e,t);return t<Se?r?{kind:"entry",entry:r,descriptors:wn(e,t)}:{kind:"standard",fd:t}:r?n?r.kind==="input"||r.kind==="readwrite"||r.kind==="dup-in"?{kind:"entry",entry:r,descriptors:wn(e,t)}:null:r.kind==="output"||r.kind==="readwrite"||r.kind==="dup-out"?{kind:"entry",entry:r,descriptors:wn(e,t)}:null:null};async function tr(e,t,n,r,s=!0){let i=e.fs.resolvePath(e.state.cwd,t),o=await Yp(e,i,t,{checkNoclobber:!n,isClobber:r});if(o)return{error:L("",o,1)};if(t==="/dev/full")return{error:L("",`bash: /dev/full: No space left on device
128
- `,1)};if(t==="/dev/stdout")return{entry:{kind:"dup-out",sourceFd:1}};if(t==="/dev/stderr")return{entry:{kind:"dup-out",sourceFd:2}};try{n?await e.fs.appendFile(i,"","binary"):await e.fs.writeFile(i,"","binary")}catch(a){if(!s)throw a;return{error:L("",`bash: ${t}: cannot open redirect target
129
- `,1)}}return{entry:{kind:"output",path:i,append:n}}}async function Bo(e,t,n){let r=e.fs.resolvePath(e.state.cwd,t);try{let s=await e.fs.readFile(r);return n?{entry:{kind:"readwrite",path:r,position:0,content:s}}:{entry:{kind:"input",content:s}}}catch{if(!n)return{error:L("",`bash: ${t}: No such file or directory
130
- `,1)};try{return await e.fs.writeFile(r,"","binary"),{entry:{kind:"readwrite",path:r,position:0,content:""}}}catch{return{error:L("",`bash: ${t}: No such file or directory
131
- `,1)}}}}var nm=async(e,t)=>{let n=await oe(e,t.content);return t.stripTabs?n.split(`
127
+ `}return null}function of(e){let n=Math.min(e.length,8192);for(let r=0;r<n;r++)if(e.charCodeAt(r)>127)return"utf8";return"binary"}var Ir="scoped",lf="bare",cf="persistent",hm=e=>new C(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors"),pm=(e,t)=>Bn(e,t)||(e.state.fileDescriptors?.size??0)<e.limits.maxFileDescriptors,af=e=>{let t=Math.max(e.state.nextFd??10,10);for(;Bn(e,t);)t+=1;return t},ni=e=>{let t=e.endsWith("-"),n=t?e.slice(0,-1):e;return/^\d+$/.test(n)?{sourceFd:Number.parseInt(n,10),move:t}:null},mm=(e,t,n)=>{let r=lt(e,t);return t<Ae?r?{kind:"entry",entry:r,descriptors:bn(e,t)}:{kind:"standard",fd:t}:r?n?r.kind==="input"||r.kind==="readwrite"||r.kind==="dup-in"?{kind:"entry",entry:r,descriptors:bn(e,t)}:null:r.kind==="output"||r.kind==="readwrite"||r.kind==="dup-out"?{kind:"entry",entry:r,descriptors:bn(e,t)}:null:null};async function ir(e,t,n,r,s=!0){let i=e.fs.resolvePath(e.state.cwd,t),o=await dm(e,i,t,{checkNoclobber:!n,isClobber:r});if(o)return{error:F("",o,1)};if(t==="/dev/full")return{error:F("",`bash: /dev/full: No space left on device
128
+ `,1)};if(t==="/dev/stdout")return{entry:{kind:"dup-out",sourceFd:1}};if(t==="/dev/stderr")return{entry:{kind:"dup-out",sourceFd:2}};try{n?await e.fs.appendFile(i,"","binary"):await e.fs.writeFile(i,"","binary")}catch(a){if(!s)throw a;return{error:F("",`bash: ${t}: cannot open redirect target
129
+ `,1)}}return{entry:{kind:"output",path:i,append:n}}}async function Ho(e,t,n){let r=e.fs.resolvePath(e.state.cwd,t);try{let s=await e.fs.readFile(r);return n?{entry:{kind:"readwrite",path:r,position:0,content:s}}:{entry:{kind:"input",content:s}}}catch{if(!n)return{error:F("",`bash: ${t}: No such file or directory
130
+ `,1)};try{return await e.fs.writeFile(r,"","binary"),{entry:{kind:"readwrite",path:r,position:0,content:""}}}catch{return{error:F("",`bash: ${t}: No such file or directory
131
+ `,1)}}}}var ym=async(e,t)=>{let n=await ae(e,t.content);return t.stripTabs?n.split(`
132
132
  `).map(r=>r.replace(/^\t+/,"")).join(`
133
- `):n};async function rm(e,t,n,r){let s=new Map,i=new Map,o=(g,y)=>e.state.closedStandardFds?.has(g)?{kind:"closed"}:at(e,g)??y,a=new Map([[0,o(0,{kind:"dup-in",sourceFd:0})],[1,o(1,{kind:"dup-out",sourceFd:1})],[2,o(2,{kind:"dup-out",sourceFd:2})]]),l=r.numericSnapshot,c,u=-1,f=a.get(0);f?.kind==="input"?(c=f.content,u=0):f?.kind==="readwrite"&&(c=f.content.slice(f.position),u=0);let d=()=>({targets:s,dupSources:i,standardRoutes:a,stdin:c,stdinSourceFd:u,error:null}),h=async(g,y,S)=>{let A={...d(),error:await Sn(e,g,t.slice(0,y),s,i,a)};return S?{...A,errorCause:S}:A},p=async(g,y)=>{if(em(e,g))return null;let S=Jp(e);return h(L("",S.stderr,$.EXIT_CODE),y,S)},m=(g,y)=>{g!==null&&g<Se&&a.set(g,y),r.policy==="persistent"&&g!==null&&g<Se&&(e.state.closedStandardFds?.delete(g),ht(e,g,y))},E=(g,y)=>{a.set(g,y),bn(e,r.standardSnapshot,g),r.standardClosedSnapshot.has(g)||r.standardClosedSnapshot.set(g,e.state.closedStandardFds?.has(g)===!0),e.state.closedStandardFds?.delete(g),ht(e,g,y)},b=(g,y)=>{if(g<Se){let S=a.get(g);return S?.kind==="closed"?null:S?{kind:"entry",entry:S,descriptors:wn(e,g)}:{kind:"standard",fd:g}}return tm(e,g,y)};for(let g=0;g<t.length;g++){let y=t[g],S=Mo(y);if(y.target.type==="HereDoc"){let v=await nm(e,y.target);if(y.fdVariable){try{fe(e,y.fdVariable)}catch(P){if(!(P instanceof q))throw P;return h(L(P.stdout,P.stderr,P.exitCode),g,P)}let x=Ju(e),R=await p(x,g);if(R)return R;bn(e,r.fdVariableSnapshot,x),r.fdVariableEnv.has(y.fdVariable)||r.fdVariableEnv.set(y.fdVariable,e.state.env.get(y.fdVariable)),ht(e,x,{kind:"input",content:v}),e.state.env.set(y.fdVariable,String(x)),e.state.nextFd=x+1}else if(S!==null&&S>=Se){let x=await p(S,g);if(x)return x;bn(e,l,S),ht(e,S,{kind:"input",content:v})}else if(S===0||S===null)c=Kt(v),u=-1,m(S,{kind:"input",content:c});else{let x={kind:"input",content:v};r.policy==="persistent"?m(S,x):E(S,x)}continue}let A,k=y.operator===">&"||y.operator==="<&";if(k){if(wo(e,y.target))return h(L("",`bash: $@: ambiguous redirect
134
- `,1),g);A=await oe(e,y.target)}else if(y.operator==="<<<")A=await oe(e,y.target);else{let v=await Ru(e,y.target);if("error"in v)return h(L("",v.error,1),g);A=v.target}if(s.set(g,A),A.includes("\0"))return h(L("",`bash: ${A.replace(/\0/g,"")}: No such file or directory
135
- `,1),g);if(y.fdVariable){try{fe(e,y.fdVariable)}catch(O){if(!(O instanceof q))throw O;return h(L(O.stdout,O.stderr,O.exitCode),g,O)}if(k&&A==="-"){let O=Number.parseInt(e.state.env.get(y.fdVariable)??"",10);Number.isNaN(O)||(bn(e,r.fdVariableSnapshot,O),Ft(e,O));continue}let v=Ju(e),x=k?Ks(A):null;if(x&&!b(x.sourceFd,y.operator==="<&"))return h(L("",`bash: ${x.sourceFd}: Bad file descriptor
136
- `,1),g);if(!(x?.move===!0&&x.sourceFd>=Se)){let O=await p(v,g);if(O)return O}bn(e,r.fdVariableSnapshot,v),r.fdVariableEnv.has(y.fdVariable)||r.fdVariableEnv.set(y.fdVariable,e.state.env.get(y.fdVariable));let P,C;if(k){let O=x;if(O){let W=b(O.sourceFd,y.operator==="<&");if(!W)return h(L("",`bash: ${O.sourceFd}: Bad file descriptor
137
- `,1),g);C=O,W.kind==="standard"?P={kind:y.operator==="<&"?"dup-in":"dup-out",sourceFd:W.fd}:O.sourceFd<Se&&(P=W.entry)}else{if(y.operator==="<&")return h(L("",`bash: ${A}: ambiguous redirect
138
- `,1),g);let W=await tr(e,A,!1,!1);if(W.error)return h(W.error,g);P=W.entry}}else if(y.operator===">"||y.operator===">|"||y.operator===">>"||y.operator==="&>"||y.operator==="&>>"){let O=y.operator===">>"||y.operator==="&>>",W=await tr(e,A,O,y.operator===">|");if(W.error)return h(W.error,g);P=W.entry}else if(y.operator==="<<<")P={kind:"input",content:`${A}
139
- `};else if(y.operator==="<"||y.operator==="<>"){let O=await Bo(e,A,y.operator==="<>");if(O.error)return h(O.error,g);P=O.entry}if(C&&C.sourceFd>=Se){if(!(C.move?Lo(e,v,C.sourceFd):Hs(e,v,C.sourceFd)))return h(L("",`bash: ${C.sourceFd}: Bad file descriptor
140
- `,1),g)}else P&&ht(e,v,P);C?.move&&C.sourceFd!==v&&C.sourceFd<Se&&Ft(e,C.sourceFd),e.state.env.set(y.fdVariable,String(v)),e.state.nextFd=v+1;continue}if(Xu(y)){let v=S;if(k&&A==="-"){bn(e,l,v),Ft(e,v);continue}let x=k?Ks(A):null;if(x&&!b(x.sourceFd,y.operator==="<&"))return h(L("",`bash: ${x.sourceFd}: Bad file descriptor
141
- `,1),g);if(!(x?.move===!0&&x.sourceFd>=Se)){let P=await p(v,g);if(P)return P}if(bn(e,l,v),k){let P=x;if(!P){if(y.operator==="<&")return h(L("",`bash: ${A}: ambiguous redirect
142
- `,1),g);let O=await tr(e,A,!1,!1);if(O.error)return h(O.error,g);ht(e,v,O.entry);continue}let C=b(P.sourceFd,y.operator==="<&");if(!C)return h(L("",`bash: ${P.sourceFd}: Bad file descriptor
143
- `,1),g);if(C.kind==="standard")ht(e,v,{kind:y.operator==="<&"?"dup-in":"dup-out",sourceFd:C.fd});else if(P.sourceFd<Se)ht(e,v,C.entry);else if(!(P.move?Lo(e,v,P.sourceFd):Hs(e,v,P.sourceFd)))return h(L("",`bash: ${P.sourceFd}: Bad file descriptor
144
- `,1),g);P.move&&P.sourceFd!==v&&P.sourceFd<Se&&Ft(e,P.sourceFd);continue}if(y.operator===">"||y.operator===">|"||y.operator===">>"){let P=await tr(e,A,y.operator===">>",y.operator===">|");if(P.error)return h(P.error,g);ht(e,v,P.entry)}else if(y.operator==="<<<")ht(e,v,{kind:"input",content:`${A}
145
- `});else if(y.operator==="<"||y.operator==="<>"){let P=await Bo(e,A,y.operator==="<>");if(P.error)return h(P.error,g);ht(e,v,P.entry)}continue}if(k){if(A==="-"){S===0&&(c="",u=-1),S!==null&&S<Se&&(a.set(S,{kind:"closed"}),r.policy==="persistent"&&(Ft(e,S),e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(S)));continue}let v=Ks(A);if(!v){if(y.operator==="<&")return h(L("",`bash: ${A}: ambiguous redirect
146
- `,1),g);let R=await tr(e,A,!1,!1,!1);if(R.error)return h(R.error,g);let P=R.entry;i.set(g,{kind:"entry",entry:P,descriptors:[]}),y.fd==null?(m(1,P),m(2,P)):m(S,P);continue}let x=b(v.sourceFd,y.operator==="<&");if(!x)return h(L("",`bash: ${v.sourceFd}: Bad file descriptor
147
- `,1),g);if(i.set(g,x),x.kind==="entry"&&r.policy==="persistent"&&S!==null&&S<Se&&v.sourceFd>=Se){if(!Hs(e,S,v.sourceFd))return h(L("",`bash: ${v.sourceFd}: Bad file descriptor
148
- `,1),g);a.set(S,at(e,S)),e.state.closedStandardFds?.delete(S)}else x.kind==="standard"?m(S,{kind:y.operator==="<&"?"dup-in":"dup-out",sourceFd:x.fd}):m(S,x.entry);if(y.operator==="<&"&&S===0)if(x.kind==="standard")c=x.fd===0?n:"",u=-1;else if(x.entry.kind==="input"||x.entry.kind==="readwrite"){let R=v.sourceFd<Se&&!Ln(e,v.sourceFd)?{content:x.entry.kind==="input"?x.entry.content:x.entry.content.slice(x.entry.position)}:Zs(e,v.sourceFd);if("error"in R)return h(L("",`bash: ${v.sourceFd}: Bad file descriptor
149
- `,1),g);c=R.content,u=Ln(e,v.sourceFd)?v.sourceFd:-1}else c=n,u=-1;v.move&&(v.sourceFd>=Se?Ft(e,v.sourceFd):(a.set(v.sourceFd,{kind:"closed"}),r.policy==="persistent"&&(Ft(e,v.sourceFd),e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(v.sourceFd))));continue}if(y.operator===">"||y.operator===">|"||y.operator===">>"||y.operator==="&>"||y.operator==="&>>"){let v=await tr(e,A,y.operator===">>"||y.operator==="&>>",y.operator===">|",!1);if(v.error)return h(v.error,g);let x=v.entry;y.operator==="&>"||y.operator==="&>>"?(m(1,x),m(2,x)):m(S,x);continue}if(y.operator==="<<<")c=Kt(`${A}
150
- `),u=-1,m(S,{kind:"input",content:c});else if(y.operator==="<"){let v=e.fs.resolvePath(e.state.cwd,A);try{c=await zn(e.fs,v),u=-1,m(S,{kind:"input",content:c})}catch{return h(L("",`bash: ${A}: No such file or directory
151
- `,1),g)}}else if(y.operator==="<>"){let v=await Bo(e,A,!0);if(v.error)return h(v.error,g);let x=v.entry;m(S,x),S===0&&x.kind==="readwrite"&&(c=x.content,u=-1)}}return d()}function nr(e,t,n){let r={numericSnapshot:new Map,fdVariableSnapshot:new Map,standardSnapshot:new Map,standardClosedSnapshot:new Map,fdVariableEnv:new Map,nextFd:e.state.nextFd,policy:n},s=!1;return{prepare:(i="")=>rm(e,t,i,r),finish:()=>{if(!s){if(s=!0,n!=="persistent"&&Qs(e,r.numericSnapshot),n!=="persistent"){Qs(e,r.standardSnapshot);for(let[i,o]of r.standardClosedSnapshot)o?(e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(i)):e.state.closedStandardFds?.delete(i)}if(n==="bare"){Qs(e,r.fdVariableSnapshot);for(let[i,o]of r.fdVariableEnv)o===void 0?e.state.env.delete(i):e.state.env.set(i,o);e.state.nextFd=r.nextFd}}}}}function rr(e){if(!e.error)throw new Error("Expected a redirection error");if(e.errorCause)throw e.errorCause.stdout=e.error.stdout,e.errorCause.stderr=e.error.stderr,e.errorCause;return e.error}async function Wo(e,t,n,r){let s=t instanceof q||t instanceof Me||t instanceof Ze?t.exitCode:t instanceof $?$.EXIT_CODE:0,i=await Sn(e,L(t.stdout,t.stderr,s),n,r.targets,r.dupSources,r.standardRoutes);t.stdout=i.stdout,t.stderr=i.stderr,t.internalOutputAccounting=i.internalOutputAccounting??{stdout:B(i.stdout),stderr:B(i.stderr)}}async function lt(e,t,n,r){let s=nr(e,t,Cr),i;try{if(i=await s.prepare(n),i.error)return rr(i);let o=e.state.groupStdin,a=e.state.groupStdinSourceFd;i.stdin!==void 0&&(e.state.groupStdin=i.stdin,e.state.groupStdinSourceFd=i.stdinSourceFd);try{let l=await r(i);return await Sn(e,l,t,i.targets,i.dupSources,i.standardRoutes)}finally{i.stdin!==void 0&&(e.state.groupStdin=o,e.state.groupStdinSourceFd=a)}}catch(o){throw!(o instanceof Xt)||!i||await Wo(e,o,t,i),o}finally{s.finish()}}async function Sn(e,t,n,r,s=new Map,i=new Map,o="bash",a=!1){n.length>0&&(t=e.executionScope.accountResult(t,"redirection"));let{stdout:l,stderr:c,exitCode:u}=t,d=t.stdoutKind==="bytes"||t.stdoutKind===void 0&&t.stdoutEncoding==="binary"?"binary":"utf8",h=S=>d,p={kind:"live-stdout"},m={kind:"live-stderr"},E=S=>{if(!S)return null;if(S.kind==="entry"){if(S.entry.kind==="dup-out"){if(S.entry.sourceFd===1)return{kind:"live-stdout"};if(S.entry.sourceFd===2)return{kind:"live-stderr"}}return S.entry.kind==="output"||S.entry.kind==="readwrite"?{kind:"descriptor",source:S}:null}return S.fd===1?p:S.fd===2?m:null},b=S=>{let A=i.get(S)??at(e,S);return A?A.kind==="closed"?{kind:"invalid-output",fd:S}:A.kind==="input"||A.kind==="dup-in"?{kind:"invalid-output",fd:S}:A.kind==="dup-out"?A.sourceFd===1?{kind:"live-stdout"}:A.sourceFd===2?{kind:"live-stderr"}:null:A.kind==="output"||A.kind==="readwrite"?{kind:"descriptor",source:{kind:"entry",entry:A,descriptors:wn(e,S)}}:null:null};p=b(1)??p,m=b(2)??m;for(let S=0;S<n.length;S++){let A=n[S];if(A.target.type==="HereDoc"||A.fdVariable)continue;let k=r.get(S);if(k!==void 0)switch(A.operator){case">":case">|":case">>":{let v=A.fd??1;if(v!==1&&v!==2)break;let x=A.operator===">>";if(k==="/dev/stdout"){v===2&&(m=p);break}if(k==="/dev/stderr"){v===1&&(p=m);break}if(k==="/dev/full"){c+=`bash: echo: write error: No space left on device
152
- `,u=1,v===1&&(l="");break}if(k==="/dev/null"&&v===2){m={kind:"discard"};break}let R=e.fs.resolvePath(e.state.cwd,k);v===1?p={kind:"file",path:R,append:x}:m={kind:"file",path:R,append:x};break}case">&":case"<&":{let v=A.fd??(A.operator==="<&"?0:1);if(v>=Se||v===0)break;if(k==="-"){v===1?p={kind:"discard"}:m={kind:"discard"};break}let x=E(s.get(S));if(!x)break;A.fd==null&&Ks(k)===null?(p=x,m=x):v===1?p=x:v===2&&(m=x);break}case"&>":{p={kind:"file",path:e.fs.resolvePath(e.state.cwd,k),append:!1},m=p;break}case"&>>":{p={kind:"file",path:e.fs.resolvePath(e.state.cwd,k),append:!0},m=p;break}}}if(l!==""||c!==""){let S=l,A=c;l="",c="",p.kind==="invalid-output"&&S!==""&&(S="",A+=`${a?"":"bash: "}${o}: write error: Bad file descriptor
153
- `,u=1),m.kind==="invalid-output"&&(A="");let k=async(v,x,R)=>{v.append?await e.fs.appendFile(v.path,x,R):await e.fs.writeFile(v.path,x,R)};if(p===m&&(p.kind==="file"||p.kind==="descriptor")){let v=S+A;v!==""&&(p.kind==="file"?await k(p,v,h(v)):await Fo(e,p.source.entry,p.source.descriptors,v,h(v)))}else for(let[v,x,R]of[[S,p,!0],[A,m,!1]])if(v!=="")switch(x.kind){case"live-stdout":l+=v;break;case"live-stderr":c+=v;break;case"file":await k(x,v,R?h(v):Yu(v));break;case"descriptor":await Fo(e,x.source.entry,x.source.descriptors,v,R?h(v):Yu(v));break;case"invalid-output":break;case"discard":break}}let g=L(l,c,u);if(t.stdoutKind&&(g.stdoutKind=t.stdoutKind),t.stdoutEncoding==="binary"&&(g.stdoutEncoding="binary"),t.internalPipeStatusOverride&&(g.internalPipeStatusOverride=t.internalPipeStatusOverride),n.length>0||e.state.fileDescriptors?.has(1)===!0||e.state.fileDescriptors?.has(2)===!0){let S=(t.internalOutputAccounting?.stdout??0)+(t.internalOutputAccounting?.stderr??0),A=B(g.stdout),k=B(g.stderr),v=Math.min(A,S);g.internalOutputAccounting={stdout:v,stderr:Math.min(k,S-v)},e.executionScope.accountResult(g,"redirection")}else t.internalOutputAccounting&&(g.internalOutputAccounting=t.internalOutputAccounting);return g}function nf(e,t){if(e.state.options.posix&&yr.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
154
- `;throw new q(2,"",r)}let n={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,n),re}async function Xs(e,t,n,r="",s,i=!1){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,mn(`${t.name}: maximum recursion depth (${e.limits.maxCallDepth}) exceeded, increase executionLimits.maxCallDepth`,"recursion")),e.state.funcNameStack||(e.state.funcNameStack=[]),e.state.callLineStack||(e.state.callLineStack=[]),e.state.sourceStack||(e.state.sourceStack=[]),e.state.funcNameStack.unshift(t.name),e.state.callLineStack.unshift(s??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localArrayScopes??=[],e.state.localArrayScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let o=new Map,a=Number.parseInt(e.state.env.get("#")??"0",10),l=Math.max(n.length,a);for(let h=0;h<l;h++){let p=String(h+1);o.set(p,e.state.env.get(p)),h<n.length?e.state.env.set(p,n[h]):e.state.env.delete(p)}o.set("@",e.state.env.get("@")),o.set("#",e.state.env.get("#")),e.state.env.set("@",n.join(" ")),e.state.env.set("#",String(n.length));let c=!1,u=()=>{if(c)return;c=!0;let h=e.state.localScopes.length-1,p=e.state.localScopes.pop(),m=e.state.localArrayScopes?.pop();if(p)for(let[E,b]of p)b===void 0?e.state.env.delete(E):e.state.env.set(E,b);if(m){e.state.arrays??=new Map;for(let[E,b]of m)b===void 0?(e.state.arrays.delete(E),e.state.associativeArrays?.delete(E)):(e.state.arrays.set(E,Ue(b)),e.state.associativeArrays??=new Set,b.kind==="associative"?e.state.associativeArrays.add(E):e.state.associativeArrays.delete(E))}if(Zu(e,h),e.state.fullyUnsetLocals)for(let[E,b]of e.state.fullyUnsetLocals.entries())b===h&&e.state.fullyUnsetLocals.delete(E);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let E=e.state.localExportedVars.pop();if(E)for(let b of E)e.state.exportedVars?.delete(b)}for(let[E,b]of o)b===void 0?e.state.env.delete(E):e.state.env.set(E,b);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},f=null,d=nr(e,t.redirections,Cr);try{if(f=await d.prepare(r),f.error)return rr(f);let h=f.stdin??r,p=i||f.stdin!==void 0||r!=="",m=await e.executeCommand(t.body,h,p);return Sn(e,m,t.redirections,f.targets,f.dupSources,f.standardRoutes)}catch(h){if(h instanceof Xt&&f&&(await Wo(e,h,t.redirections,f),h instanceof Me))return L(h.stdout,h.stderr,h.exitCode);throw h}finally{d.finish(),u()}}var sf=e=>e.type==="Escaped"?F.literal(`\\${e.value}`):e.type==="DoubleQuoted"?{...e,parts:e.parts.map(sf)}:e,of=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],Uo=[".",":","[","alias","bg","bind","break","builtin","caller","cd","command","compgen","complete","compopt","continue","declare","dirs","disown","echo","enable","eval","exec","exit","export","false","fc","fg","getopts","hash","help","history","jobs","kill","let","local","logout","mapfile","popd","printf","pushd","pwd","read","readarray","readonly","return","set","shift","shopt","source","suspend","test","times","trap","true","type","typeset","ulimit","umask","unalias","unset","wait"],sm=["autocd","assoc_expand_once","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","dotglob","execfail","expand_aliases","extdebug","extglob","extquote","failglob","force_fignore","globasciiranges","globstar","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lastpipe","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","nocaseglob","nocasematch","nullglob","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath","xpg_echo"],im=Uo;async function jo(e,t){let n=[],r=null,s="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=null,d=null,h=[],p=["alias","arrayvar","binding","builtin","command","directory","disabled","enabled","export","file","function","group","helptopic","hostname","job","keyword","running","service","setopt","shopt","signal","stopped","user","variable"];for(let k=0;k<t.length;k++){let v=t[k];if(v==="-v")n.push("variable");else if(v==="-e")n.push("export");else if(v==="-f")n.push("file");else if(v==="-d")n.push("directory");else if(v==="-k")n.push("keyword");else if(v==="-A"){if(k++,k>=t.length)return T(`compgen: -A: option requires an argument
155
- `,2);let x=t[k];if(!p.includes(x))return T(`compgen: ${x}: invalid action name
156
- `,2);n.push(x)}else if(v==="-W"){if(k++,k>=t.length)return T(`compgen: -W: option requires an argument
157
- `,2);r=t[k]}else if(v==="-P"){if(k++,k>=t.length)return T(`compgen: -P: option requires an argument
158
- `,2);s=t[k]}else if(v==="-S"){if(k++,k>=t.length)return T(`compgen: -S: option requires an argument
159
- `,2);i=t[k]}else if(v==="-o"){if(k++,k>=t.length)return T(`compgen: -o: option requires an argument
160
- `,2);let x=t[k];if(x==="plusdirs")a=!0;else if(x==="dirnames")l=!0;else if(x==="default")c=!0;else if(!(x==="filenames"||x==="nospace"||x==="bashdefault"||x==="noquote"))return T(`compgen: ${x}: invalid option name
161
- `,2)}else if(v==="-F"){if(k++,k>=t.length)return T(`compgen: -F: option requires an argument
162
- `,2);f=t[k]}else if(v==="-C"){if(k++,k>=t.length)return T(`compgen: -C: option requires an argument
163
- `,2);d=t[k]}else if(v==="-X"){if(k++,k>=t.length)return T(`compgen: -X: option requires an argument
164
- `,2);u=t[k]}else if(v==="-G"){if(k++,k>=t.length)return T(`compgen: -G: option requires an argument
165
- `,2)}else if(v==="--"){h.push(...t.slice(k+1));break}else v.startsWith("-")||h.push(v)}o=h[0]??null;let m=[],E=new Set,b=()=>e.limits.maxArrayElements-m.length,g=k=>{for(let v of k){if(m.length>=e.limits.maxArrayElements)throw new $(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(B(v)>e.limits.maxStringLength)throw new $(`compgen: completion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");e.executionScope.consumeWork(1,"compgen completion"),m.push(v),E.add(v)}};if(l){let k=await Vo(e,o,b());g(k)}if(c){let k=await rf(e,o,b());g(k)}for(let k of n)if(k==="variable"){let v=om(e,o,b());g(v)}else if(k==="export"){let v=am(e,o,b());g(v)}else if(k==="function"){let v=lm(e,o,b());g(v)}else if(k==="builtin"){let v=cm(e,o,b());g(v)}else if(k==="keyword"){let v=um(e,o,b());g(v)}else if(k==="alias"){let v=fm(e,o,b());g(v)}else if(k==="shopt"){let v=dm(e,o,b());g(v)}else if(k==="helptopic"){let v=hm(e,o,b());g(v)}else if(k==="directory"){let v=await Vo(e,o,b());g(v)}else if(k==="file"){let v=await rf(e,o,b());g(v)}else if(k==="user"){let v=pm(e,o,b());g(v)}else if(k==="command"){let v=await mm(e,o,b());g(v)}if(r!==null)try{let k=await ym(e,r),v=gm(e,k,b(),o);for(let x of v)g([x])}catch(k){if(k instanceof $)throw k;return L("","",1)}if(a){let k=await Vo(e,o,b(),E);for(let v of k)E.has(v)||g([v])}let y="";if(f!==null){let k=e.state.functions.get(f);if(k){let v=new Map,x=Pe(e,"COMP_WORDS"),R=x?Ue(x):void 0;Ee(e,"COMP_WORDS"),pr(e,"COMP_WORDS"),v.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),v.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),v.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let P=Pe(e,"COMPREPLY"),C=P?Ue(P):void 0,O=e.state.env.get("COMPREPLY");Ee(e,"COMPREPLY"),e.state.env.delete("COMPREPLY");let W=["compgen",h[0]??"",""];try{let K=await Xs(e,k,W,"");if(K.exitCode!==0)return zo(e,v),sr(e,"COMP_WORDS",R),sr(e,"COMPREPLY",C),O!==void 0&&e.state.env.set("COMPREPLY",O),L("",K.stderr,1);y=K.stdout;let N=wm(e,b());g(N)}catch(K){if(K instanceof $)throw K;return zo(e,v),sr(e,"COMP_WORDS",R),sr(e,"COMPREPLY",C),O!==void 0&&e.state.env.set("COMPREPLY",O),L("","",1)}zo(e,v),sr(e,"COMP_WORDS",R),sr(e,"COMPREPLY",C),O!==void 0&&e.state.env.set("COMPREPLY",O)}}if(d!==null)try{let k=je(d),v=await e.executeScript(k);if(v.exitCode!==0)return L("",v.stderr,v.exitCode);if(v.stdout)for(let x of Em(v.stdout))x.length>0&&g([x])}catch(k){if(k.name==="ParseException")return T(`compgen: -C: ${k.message}
166
- `,2);throw k}let S=m;if(u!==null){let k=u.startsWith("!"),v=k?u.slice(1):u;S=m.filter(x=>{let R=Jn(x,v,!1,!0,e.limits.maxCallDepth);return k?R:!R})}if(S.length===0&&o!==null)return L(y,"",1);let A=new Un(e.limits.maxOutputSize,"compgen");A.append(y);for(let k of S)A.append(s).append(k).append(i).append(`
167
- `);return te(A.build())}function om(e,t,n){let r=pt(e,t,n);for(let s of e.state.env.keys())/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)&&r.add(s);for(let s of e.state.arrays?.keys()??[])r.add(s);return r.build()}function am(e,t,n){let r=pt(e,t,n),s=e.state.exportedVars??new Set;for(let i of s)e.state.env.has(i)&&r.add(i);return r.build()}function lm(e,t,n){let r=pt(e,t,n);for(let s of e.state.functions.keys())r.add(s);return r.build()}function cm(e,t,n){let r=pt(e,t,n);for(let s of Uo)r.add(s);return r.build()}function um(e,t,n){let r=pt(e,t,n);for(let s of of)r.add(s);return r.build()}function fm(e,t,n){let r=pt(e,t,n);for(let s of e.state.env.keys())if(s.startsWith("BASH_ALIAS_")){let i=s.slice(11);r.add(i)}return r.build()}function dm(e,t,n){let r=pt(e,t,n);for(let s of sm)r.add(s);return r.build()}function hm(e,t,n){let r=pt(e,t,n);for(let s of im)r.add(s);return r.build()}async function Vo(e,t,n=e.limits.maxArrayElements,r){let s=pt(e,null,n,r);try{let i=e.state.cwd,o=t??"";if(t){let l=t.lastIndexOf("/");if(l!==-1){let c=t.slice(0,l)||"/";o=t.slice(l+1),c.startsWith("/")?i=c:i=`${e.state.cwd}/${c}`}}let a=await e.fs.readdir(i);for(let l of a){e.executionScope.consumeWork(1,"compgen directory scan");let c=`${i}/${l}`;try{if((await e.fs.stat(c)).isDirectory&&(!o||l.startsWith(o)))if(t?.includes("/")){let f=t.lastIndexOf("/"),d=t.slice(0,f+1);s.add(d+l)}else s.add(l)}catch(u){if(u instanceof $)throw u}}}catch(i){if(i instanceof $)throw i}return s.build()}async function rf(e,t,n=e.limits.maxArrayElements){let r=pt(e,null,n);try{let s=e.state.cwd,i=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let l=t.slice(0,a)||"/";i=t.slice(a+1),l.startsWith("/")?s=l:s=`${e.state.cwd}/${l}`}}let o=await e.fs.readdir(s);for(let a of o)if(e.executionScope.consumeWork(1,"compgen file scan"),!i||a.startsWith(i))if(t?.includes("/")){let l=t.lastIndexOf("/"),c=t.slice(0,l+1);r.add(c+a)}else r.add(a)}catch(s){if(s instanceof $)throw s}return r.build()}function pm(e,t,n){let r=pt(e,t,n);return r.add("root"),r.add("nobody"),r.build()}async function mm(e,t,n){let r=pt(e,t,n);for(let i of Uo)r.add(i);for(let i of e.state.functions.keys())r.add(i);for(let i of e.state.env.keys())i.startsWith("BASH_ALIAS_")&&r.add(i.slice(11));for(let i of of)r.add(i);let s=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of s.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)r.add(a)}catch(o){if(o instanceof $)throw o}return r.build()}function pt(e,t,n,r){let s=new Set;return{add(i){if(e.executionScope.consumeWork(1,"compgen candidate collection"),!(t!==null&&!i.startsWith(t))&&!r?.has(i)&&!s.has(i)){if(s.size>=n)throw new $(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(B(i)>e.limits.maxStringLength)throw new $(`compgen: completion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");s.add(i)}},build(){return Array.from(s).sort()}}}async function ym(e,t){let r=new Z().parseWordFromString(t,!1,!1);return await oe(e,F.word(r.parts.map(sf)))}function gm(e,t,n,r){let s=e.state.env.get("IFS")??`
168
- `;if(s.length===0){if(r!==null&&!t.startsWith(r))return[];if(n===0)throw new $(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");return[t]}let i=new Set(s.split("")),o=[],a=u=>{if(!(r!==null&&!u.startsWith(r))){if(o.length>=n)throw new $(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");o.push(u)}},l="",c=0;for(;c<t.length;){let u=t[c];if(u==="\\"&&c+1<t.length){let f=t[c+1];l+=f,c+=2}else i.has(u)?(l.length>0&&(a(l),l=""),c++):(l+=u,c++)}return l.length>0&&a(l),o}function zo(e,t){for(let[n,r]of t)r===void 0?e.state.env.delete(n):e.state.env.set(n,r)}function sr(e,t,n){e.state.arrays??=new Map,n?e.state.arrays.set(t,Ue(n)):e.state.arrays.delete(t)}function wm(e,t){let n=[],r=s=>{if(n.length>=t)throw new $(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");n.push(s)};if(Re(e,"COMPREPLY")){let s=Q(e,"COMPREPLY");for(let[,i]of s)r(i)}else{let s=e.state.env.get("COMPREPLY");s!==void 0&&r(s)}return n}function*Em(e){let t=0;for(;t<=e.length;){let n=e.indexOf(`
169
- `,t),r=n===-1?e.length:n;if(r>t&&(yield e.slice(t,r)),n===-1)return;t=n+1}}function Nr(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<32||n===127)return!0}return!1}function qo(e){let t="$'";for(let n=0;n<e.length;n++){let r=e[n],s=e.charCodeAt(n);s===7?t+="\\a":s===8?t+="\\b":s===9?t+="\\t":s===10?t+="\\n":s===11?t+="\\v":s===12?t+="\\f":s===13?t+="\\r":s===27?t+="\\e":s===39?t+="\\'":s===92?t+="\\\\":s<32||s===127?t+=`\\${s.toString(8).padStart(3,"0")}`:t+=r}return t+="'",t}function af(e){if(Nr(e))return lf(e);if(e==="")return 2;if(/^[a-zA-Z0-9_/.:\-@%+,=]+$/.test(e))return B(e);let t=B(e)+2;for(let n of e)n==="'"&&(t+=3);return t}function Ae(e){return Nr(e)?qo(e):e===""?"''":/^[a-zA-Z0-9_/.:\-@%+,=]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Ys(e){if(Nr(e))return lf(e);let t=B(e)+2;for(let n of e)(n==="\\"||n==='"'||n==="$"||n==="`")&&t++;return t}function An(e){return Nr(e)?qo(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/`/g,"\\`")}"`}function lf(e){let t=3;for(let n of e){let r=n.codePointAt(0)??0;r===7||r===8||r===9||r===10||r===11||r===12||r===13||r===27||r===39||r===92?t+=2:r<32||r===127?t+=4:t+=B(n)}return t}function Rr(e){return Nr(e)?qo(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/`/g,"\\`")}"`}var bm=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Ho(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let n=!1,r=!1,s=!1,i,o,a,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")n=!0;else if(d==="-r")r=!0;else if(d==="-D")s=!0;else if(d==="-W"){if(f++,f>=t.length)return T(`complete: -W: option requires an argument
170
- `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return T(`complete: -F: option requires an argument
171
- `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return T(`complete: -o: option requires an argument
172
- `,2);let h=t[f];if(!bm.includes(h))return T(`complete: ${h}: invalid option name
173
- `,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return T(`complete: -A: option requires an argument
174
- `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return T(`complete: -C: option requires an argument
175
- `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return T(`complete: -G: option requires an argument
176
- `,2)}else if(d==="-P"){if(f++,f>=t.length)return T(`complete: -P: option requires an argument
177
- `,2)}else if(d==="-S"){if(f++,f>=t.length)return T(`complete: -S: option requires an argument
178
- `,2)}else if(d==="-X"){if(f++,f>=t.length)return T(`complete: -X: option requires an argument
179
- `,2)}else if(d==="--"){u.push(...t.slice(f+1));break}else d.startsWith("-")||u.push(d)}if(r){if(u.length===0)return e.state.completionSpecs.clear(),e.state.defaultCompletionSpec=void 0,e.state.emptyCompletionSpec=void 0,te("");for(let f of u)e.state.completionSpecs.delete(f);return te("")}if(n)return u.length===0?Go(e):Go(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!s)return Go(e);if(o&&u.length===0&&!s)return T(`complete: -F: option requires a command name
180
- `,2);if(s){let f={isDefault:!0};return i!==void 0&&(f.wordlist=i),o!==void 0&&(f.function=o),a!==void 0&&(f.command=a),l.length>0&&(f.options=l),c.length>0&&(f.actions=c),e.state.defaultCompletionSpec=f,te("")}for(let f of u){let d=Object.create(null);i!==void 0&&(d.wordlist=i),o!==void 0&&(d.function=o),a!==void 0&&(d.command=a),l.length>0&&(d.options=l),c.length>0&&(d.actions=c),e.state.completionSpecs.set(f,d)}return te("")}function Go(e,t){let n=e.state.completionSpecs??new Map;if(n.size===0&&!e.state.defaultCompletionSpec){if(t&&t.length>0){let i="";for(let o of t)i+=`complete: ${o}: no completion specification
181
- `;return L("",i,1)}return te("")}let r=[],s=t||Array.from(n.keys());for(let i of s){let o=n.get(i);if(!o){if(t)return L(r.join(`
133
+ `):n};async function gm(e,t,n,r){let s=new Map,i=new Map,o=(g,y)=>e.state.closedStandardFds?.has(g)?{kind:"closed"}:lt(e,g)??y,a=new Map([[0,o(0,{kind:"dup-in",sourceFd:0})],[1,o(1,{kind:"dup-out",sourceFd:1})],[2,o(2,{kind:"dup-out",sourceFd:2})]]),l=r.numericSnapshot,c,u=-1,f=a.get(0);f?.kind==="input"?(c=f.content,u=0):f?.kind==="readwrite"&&(c=f.content.slice(f.position),u=0);let d=()=>({targets:s,dupSources:i,standardRoutes:a,stdin:c,stdinSourceFd:u,error:null}),h=async(g,y,b)=>{let A={...d(),error:await vn(e,g,t.slice(0,y),s,i,a)};return b?{...A,errorCause:b}:A},p=async(g,y)=>{if(pm(e,g))return null;let b=hm(e);return h(F("",b.stderr,C.EXIT_CODE),y,b)},m=(g,y)=>{g!==null&&g<Ae&&a.set(g,y),r.policy==="persistent"&&g!==null&&g<Ae&&(e.state.closedStandardFds?.delete(g),mt(e,g,y))},E=(g,y)=>{a.set(g,y),An(e,r.standardSnapshot,g),r.standardClosedSnapshot.has(g)||r.standardClosedSnapshot.set(g,e.state.closedStandardFds?.has(g)===!0),e.state.closedStandardFds?.delete(g),mt(e,g,y)},S=(g,y)=>{if(g<Ae){let b=a.get(g);return b?.kind==="closed"?null:b?{kind:"entry",entry:b,descriptors:bn(e,g)}:{kind:"standard",fd:g}}return mm(e,g,y)};for(let g=0;g<t.length;g++){let y=t[g],b=Go(y);if(y.target.type==="HereDoc"){let v=await ym(e,y.target);if(y.fdVariable){try{de(e,y.fdVariable)}catch(P){if(!(P instanceof G))throw P;return h(F(P.stdout,P.stderr,P.exitCode),g,P)}let $=af(e),O=await p($,g);if(O)return O;An(e,r.fdVariableSnapshot,$),r.fdVariableEnv.has(y.fdVariable)||r.fdVariableEnv.set(y.fdVariable,e.state.env.get(y.fdVariable)),mt(e,$,{kind:"input",content:v}),e.state.env.set(y.fdVariable,String($)),e.state.nextFd=$+1}else if(b!==null&&b>=Ae){let $=await p(b,g);if($)return $;An(e,l,b),mt(e,b,{kind:"input",content:v})}else if(b===0||b===null)c=Yt(v),u=-1,m(b,{kind:"input",content:c});else{let $={kind:"input",content:v};r.policy==="persistent"?m(b,$):E(b,$)}continue}let A,k=y.operator===">&"||y.operator==="<&";if(k){if(Po(e,y.target))return h(F("",`bash: $@: ambiguous redirect
134
+ `,1),g);A=await ae(e,y.target)}else if(y.operator==="<<<")A=await ae(e,y.target);else{let v=await Fu(e,y.target);if("error"in v)return h(F("",v.error,1),g);A=v.target}if(s.set(g,A),A.includes("\0"))return h(F("",`bash: ${A.replace(/\0/g,"")}: No such file or directory
135
+ `,1),g);if(y.fdVariable){try{de(e,y.fdVariable)}catch(D){if(!(D instanceof G))throw D;return h(F(D.stdout,D.stderr,D.exitCode),g,D)}if(k&&A==="-"){let D=Number.parseInt(e.state.env.get(y.fdVariable)??"",10);Number.isNaN(D)||(An(e,r.fdVariableSnapshot,D),Bt(e,D));continue}let v=af(e),$=k?ni(A):null;if($&&!S($.sourceFd,y.operator==="<&"))return h(F("",`bash: ${$.sourceFd}: Bad file descriptor
136
+ `,1),g);if(!($?.move===!0&&$.sourceFd>=Ae)){let D=await p(v,g);if(D)return D}An(e,r.fdVariableSnapshot,v),r.fdVariableEnv.has(y.fdVariable)||r.fdVariableEnv.set(y.fdVariable,e.state.env.get(y.fdVariable));let P,N;if(k){let D=$;if(D){let V=S(D.sourceFd,y.operator==="<&");if(!V)return h(F("",`bash: ${D.sourceFd}: Bad file descriptor
137
+ `,1),g);N=D,V.kind==="standard"?P={kind:y.operator==="<&"?"dup-in":"dup-out",sourceFd:V.fd}:D.sourceFd<Ae&&(P=V.entry)}else{if(y.operator==="<&")return h(F("",`bash: ${A}: ambiguous redirect
138
+ `,1),g);let V=await ir(e,A,!1,!1);if(V.error)return h(V.error,g);P=V.entry}}else if(y.operator===">"||y.operator===">|"||y.operator===">>"||y.operator==="&>"||y.operator==="&>>"){let D=y.operator===">>"||y.operator==="&>>",V=await ir(e,A,D,y.operator===">|");if(V.error)return h(V.error,g);P=V.entry}else if(y.operator==="<<<")P={kind:"input",content:`${A}
139
+ `};else if(y.operator==="<"||y.operator==="<>"){let D=await Ho(e,A,y.operator==="<>");if(D.error)return h(D.error,g);P=D.entry}if(N&&N.sourceFd>=Ae){if(!(N.move?jo(e,v,N.sourceFd):Js(e,v,N.sourceFd)))return h(F("",`bash: ${N.sourceFd}: Bad file descriptor
140
+ `,1),g)}else P&&mt(e,v,P);N?.move&&N.sourceFd!==v&&N.sourceFd<Ae&&Bt(e,N.sourceFd),e.state.env.set(y.fdVariable,String(v)),e.state.nextFd=v+1;continue}if(sf(y)){let v=b;if(k&&A==="-"){An(e,l,v),Bt(e,v);continue}let $=k?ni(A):null;if($&&!S($.sourceFd,y.operator==="<&"))return h(F("",`bash: ${$.sourceFd}: Bad file descriptor
141
+ `,1),g);if(!($?.move===!0&&$.sourceFd>=Ae)){let P=await p(v,g);if(P)return P}if(An(e,l,v),k){let P=$;if(!P){if(y.operator==="<&")return h(F("",`bash: ${A}: ambiguous redirect
142
+ `,1),g);let D=await ir(e,A,!1,!1);if(D.error)return h(D.error,g);mt(e,v,D.entry);continue}let N=S(P.sourceFd,y.operator==="<&");if(!N)return h(F("",`bash: ${P.sourceFd}: Bad file descriptor
143
+ `,1),g);if(N.kind==="standard")mt(e,v,{kind:y.operator==="<&"?"dup-in":"dup-out",sourceFd:N.fd});else if(P.sourceFd<Ae)mt(e,v,N.entry);else if(!(P.move?jo(e,v,P.sourceFd):Js(e,v,P.sourceFd)))return h(F("",`bash: ${P.sourceFd}: Bad file descriptor
144
+ `,1),g);P.move&&P.sourceFd!==v&&P.sourceFd<Ae&&Bt(e,P.sourceFd);continue}if(y.operator===">"||y.operator===">|"||y.operator===">>"){let P=await ir(e,A,y.operator===">>",y.operator===">|");if(P.error)return h(P.error,g);mt(e,v,P.entry)}else if(y.operator==="<<<")mt(e,v,{kind:"input",content:`${A}
145
+ `});else if(y.operator==="<"||y.operator==="<>"){let P=await Ho(e,A,y.operator==="<>");if(P.error)return h(P.error,g);mt(e,v,P.entry)}continue}if(k){if(A==="-"){b===0&&(c="",u=-1),b!==null&&b<Ae&&(a.set(b,{kind:"closed"}),r.policy==="persistent"&&(Bt(e,b),e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(b)));continue}let v=ni(A);if(!v){if(y.operator==="<&")return h(F("",`bash: ${A}: ambiguous redirect
146
+ `,1),g);let O=await ir(e,A,!1,!1,!1);if(O.error)return h(O.error,g);let P=O.entry;i.set(g,{kind:"entry",entry:P,descriptors:[]}),y.fd==null?(m(1,P),m(2,P)):m(b,P);continue}let $=S(v.sourceFd,y.operator==="<&");if(!$)return h(F("",`bash: ${v.sourceFd}: Bad file descriptor
147
+ `,1),g);if(i.set(g,$),$.kind==="entry"&&r.policy==="persistent"&&b!==null&&b<Ae&&v.sourceFd>=Ae){if(!Js(e,b,v.sourceFd))return h(F("",`bash: ${v.sourceFd}: Bad file descriptor
148
+ `,1),g);a.set(b,lt(e,b)),e.state.closedStandardFds?.delete(b)}else $.kind==="standard"?m(b,{kind:y.operator==="<&"?"dup-in":"dup-out",sourceFd:$.fd}):m(b,$.entry);if(y.operator==="<&"&&b===0)if($.kind==="standard")c=$.fd===0?n:"",u=-1;else if($.entry.kind==="input"||$.entry.kind==="readwrite"){let O=v.sourceFd<Ae&&!Bn(e,v.sourceFd)?{content:$.entry.kind==="input"?$.entry.content:$.entry.content.slice($.entry.position)}:ei(e,v.sourceFd);if("error"in O)return h(F("",`bash: ${v.sourceFd}: Bad file descriptor
149
+ `,1),g);c=O.content,u=Bn(e,v.sourceFd)?v.sourceFd:-1}else c=n,u=-1;v.move&&(v.sourceFd>=Ae?Bt(e,v.sourceFd):(a.set(v.sourceFd,{kind:"closed"}),r.policy==="persistent"&&(Bt(e,v.sourceFd),e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(v.sourceFd))));continue}if(y.operator===">"||y.operator===">|"||y.operator===">>"||y.operator==="&>"||y.operator==="&>>"){let v=await ir(e,A,y.operator===">>"||y.operator==="&>>",y.operator===">|",!1);if(v.error)return h(v.error,g);let $=v.entry;y.operator==="&>"||y.operator==="&>>"?(m(1,$),m(2,$)):m(b,$);continue}if(y.operator==="<<<")c=Yt(`${A}
150
+ `),u=-1,m(b,{kind:"input",content:c});else if(y.operator==="<"){let v=e.fs.resolvePath(e.state.cwd,A);try{c=await qn(e.fs,v),u=-1,m(b,{kind:"input",content:c})}catch{return h(F("",`bash: ${A}: No such file or directory
151
+ `,1),g)}}else if(y.operator==="<>"){let v=await Ho(e,A,!0);if(v.error)return h(v.error,g);let $=v.entry;m(b,$),b===0&&$.kind==="readwrite"&&(c=$.content,u=-1)}}return d()}function or(e,t,n){let r={numericSnapshot:new Map,fdVariableSnapshot:new Map,standardSnapshot:new Map,standardClosedSnapshot:new Map,fdVariableEnv:new Map,nextFd:e.state.nextFd,policy:n},s=!1;return{prepare:(i="")=>gm(e,t,i,r),finish:()=>{if(!s){if(s=!0,n!=="persistent"&&ti(e,r.numericSnapshot),n!=="persistent"){ti(e,r.standardSnapshot);for(let[i,o]of r.standardClosedSnapshot)o?(e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(i)):e.state.closedStandardFds?.delete(i)}if(n==="bare"){ti(e,r.fdVariableSnapshot);for(let[i,o]of r.fdVariableEnv)o===void 0?e.state.env.delete(i):e.state.env.set(i,o);e.state.nextFd=r.nextFd}}}}}function ar(e){if(!e.error)throw new Error("Expected a redirection error");if(e.errorCause)throw e.errorCause.stdout=e.error.stdout,e.errorCause.stderr=e.error.stderr,e.errorCause;return e.error}async function Zo(e,t,n,r){let s=t instanceof G||t instanceof Be||t instanceof Qe?t.exitCode:t instanceof C?C.EXIT_CODE:0,i=await vn(e,F(t.stdout,t.stderr,s),n,r.targets,r.dupSources,r.standardRoutes);t.stdout=i.stdout,t.stderr=i.stderr,t.internalOutputAccounting=i.internalOutputAccounting??{stdout:W(i.stdout),stderr:W(i.stderr)}}async function ct(e,t,n,r){let s=or(e,t,Ir),i;try{if(i=await s.prepare(n),i.error)return ar(i);let o=e.state.groupStdin,a=e.state.groupStdinSourceFd;i.stdin!==void 0&&(e.state.groupStdin=i.stdin,e.state.groupStdinSourceFd=i.stdinSourceFd);try{let l=await r(i);return await vn(e,l,t,i.targets,i.dupSources,i.standardRoutes)}finally{i.stdin!==void 0&&(e.state.groupStdin=o,e.state.groupStdinSourceFd=a)}}catch(o){throw!(o instanceof Jt)||!i||await Zo(e,o,t,i),o}finally{s.finish()}}async function vn(e,t,n,r,s=new Map,i=new Map,o="bash",a=!1){n.length>0&&(t=e.executionScope.accountResult(t,"redirection"));let{stdout:l,stderr:c,exitCode:u}=t,d=t.stdoutKind==="bytes"||t.stdoutKind===void 0&&t.stdoutEncoding==="binary"?"binary":"utf8",h=b=>d,p={kind:"live-stdout"},m={kind:"live-stderr"},E=b=>{if(!b)return null;if(b.kind==="entry"){if(b.entry.kind==="dup-out"){if(b.entry.sourceFd===1)return{kind:"live-stdout"};if(b.entry.sourceFd===2)return{kind:"live-stderr"}}return b.entry.kind==="output"||b.entry.kind==="readwrite"?{kind:"descriptor",source:b}:null}return b.fd===1?p:b.fd===2?m:null},S=b=>{let A=i.get(b)??lt(e,b);return A?A.kind==="closed"?{kind:"invalid-output",fd:b}:A.kind==="input"||A.kind==="dup-in"?{kind:"invalid-output",fd:b}:A.kind==="dup-out"?A.sourceFd===1?{kind:"live-stdout"}:A.sourceFd===2?{kind:"live-stderr"}:null:A.kind==="output"||A.kind==="readwrite"?{kind:"descriptor",source:{kind:"entry",entry:A,descriptors:bn(e,b)}}:null:null};p=S(1)??p,m=S(2)??m;for(let b=0;b<n.length;b++){let A=n[b];if(A.target.type==="HereDoc"||A.fdVariable)continue;let k=r.get(b);if(k!==void 0)switch(A.operator){case">":case">|":case">>":{let v=A.fd??1;if(v!==1&&v!==2)break;let $=A.operator===">>";if(k==="/dev/stdout"){v===2&&(m=p);break}if(k==="/dev/stderr"){v===1&&(p=m);break}if(k==="/dev/full"){c+=`bash: echo: write error: No space left on device
152
+ `,u=1,v===1&&(l="");break}if(k==="/dev/null"&&v===2){m={kind:"discard"};break}let O=e.fs.resolvePath(e.state.cwd,k);v===1?p={kind:"file",path:O,append:$}:m={kind:"file",path:O,append:$};break}case">&":case"<&":{let v=A.fd??(A.operator==="<&"?0:1);if(v>=Ae||v===0)break;if(k==="-"){v===1?p={kind:"discard"}:m={kind:"discard"};break}let $=E(s.get(b));if(!$)break;A.fd==null&&ni(k)===null?(p=$,m=$):v===1?p=$:v===2&&(m=$);break}case"&>":{p={kind:"file",path:e.fs.resolvePath(e.state.cwd,k),append:!1},m=p;break}case"&>>":{p={kind:"file",path:e.fs.resolvePath(e.state.cwd,k),append:!0},m=p;break}}}if(l!==""||c!==""){let b=l,A=c;l="",c="",p.kind==="invalid-output"&&b!==""&&(b="",A+=`${a?"":"bash: "}${o}: write error: Bad file descriptor
153
+ `,u=1),m.kind==="invalid-output"&&(A="");let k=async(v,$,O)=>{v.append?await e.fs.appendFile(v.path,$,O):await e.fs.writeFile(v.path,$,O)};if(p===m&&(p.kind==="file"||p.kind==="descriptor")){let v=b+A;v!==""&&(p.kind==="file"?await k(p,v,h(v)):await qo(e,p.source.entry,p.source.descriptors,v,h(v)))}else for(let[v,$,O]of[[b,p,!0],[A,m,!1]])if(v!=="")switch($.kind){case"live-stdout":l+=v;break;case"live-stderr":c+=v;break;case"file":await k($,v,O?h(v):of(v));break;case"descriptor":await qo(e,$.source.entry,$.source.descriptors,v,O?h(v):of(v));break;case"invalid-output":break;case"discard":break}}let g=F(l,c,u);if(t.stdoutKind&&(g.stdoutKind=t.stdoutKind),t.stdoutEncoding==="binary"&&(g.stdoutEncoding="binary"),t.internalPipeStatusOverride&&(g.internalPipeStatusOverride=t.internalPipeStatusOverride),n.length>0||e.state.fileDescriptors?.has(1)===!0||e.state.fileDescriptors?.has(2)===!0){let b=(t.internalOutputAccounting?.stdout??0)+(t.internalOutputAccounting?.stderr??0),A=W(g.stdout),k=W(g.stderr),v=Math.min(A,b);g.internalOutputAccounting={stdout:v,stderr:Math.min(k,b-v)},e.executionScope.accountResult(g,"redirection")}else t.internalOutputAccounting&&(g.internalOutputAccounting=t.internalOutputAccounting);return g}function uf(e,t){if(e.state.options.posix&&Sr.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
154
+ `;throw new G(2,"",r)}let n={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,n),se}async function ri(e,t,n,r="",s,i=!1){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,gn(`${t.name}: maximum recursion depth (${e.limits.maxCallDepth}) exceeded, increase executionLimits.maxCallDepth`,"recursion")),e.state.funcNameStack||(e.state.funcNameStack=[]),e.state.callLineStack||(e.state.callLineStack=[]),e.state.sourceStack||(e.state.sourceStack=[]),e.state.funcNameStack.unshift(t.name),e.state.callLineStack.unshift(s??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localArrayScopes??=[],e.state.localArrayScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let o=new Map,a=Number.parseInt(e.state.env.get("#")??"0",10),l=Math.max(n.length,a);for(let h=0;h<l;h++){let p=String(h+1);o.set(p,e.state.env.get(p)),h<n.length?e.state.env.set(p,n[h]):e.state.env.delete(p)}o.set("@",e.state.env.get("@")),o.set("#",e.state.env.get("#")),e.state.env.set("@",n.join(" ")),e.state.env.set("#",String(n.length));let c=!1,u=()=>{if(c)return;c=!0;let h=e.state.localScopes.length-1,p=e.state.localScopes.pop(),m=e.state.localArrayScopes?.pop();if(p)for(let[E,S]of p)S===void 0?e.state.env.delete(E):e.state.env.set(E,S);if(m){e.state.arrays??=new Map;for(let[E,S]of m)S===void 0?(e.state.arrays.delete(E),e.state.associativeArrays?.delete(E)):(e.state.arrays.set(E,je(S)),e.state.associativeArrays??=new Set,S.kind==="associative"?e.state.associativeArrays.add(E):e.state.associativeArrays.delete(E))}if(tf(e,h),e.state.fullyUnsetLocals)for(let[E,S]of e.state.fullyUnsetLocals.entries())S===h&&e.state.fullyUnsetLocals.delete(E);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let E=e.state.localExportedVars.pop();if(E)for(let S of E)e.state.exportedVars?.delete(S)}for(let[E,S]of o)S===void 0?e.state.env.delete(E):e.state.env.set(E,S);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},f=null,d=or(e,t.redirections,Ir);try{if(f=await d.prepare(r),f.error)return ar(f);let h=f.stdin??r,p=i||f.stdin!==void 0||r!=="",m=await e.executeCommand(t.body,h,p);return vn(e,m,t.redirections,f.targets,f.dupSources,f.standardRoutes)}catch(h){if(h instanceof Jt&&f&&(await Zo(e,h,t.redirections,f),h instanceof Be))return F(h.stdout,h.stderr,h.exitCode);throw h}finally{d.finish(),u()}}function Wt(e,t,n,r){let s=n+W(t)+1;if(s>r)throw new C(`shopt: output size limit exceeded (${r} bytes)`,"output_size");return e.push(t),s}var ii=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],ff=["autocd","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","execfail","extdebug","extquote","force_fignore","globasciiranges","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath"],df=[...ii,...ff];function si(e){return ii.includes(e)}function wm(e){return ff.includes(e)}function hf(e,t){let n=e.limits.maxArrayElements;if(t.length>n)throw new C(`shopt: argument limit exceeded (${n})`,"array_elements");let r=Math.min(e.limits.maxOutputSize,e.limits.maxStringLength),s=!1,i=!1,o=!1,a=!1,l=!1,c=[],u=0;for(;u<t.length;){let E=t[u];if(E==="--"){u++;break}if(E.startsWith("-")&&E.length>1){for(let S=1;S<E.length;S++){let g=E[S];switch(g){case"s":s=!0;break;case"u":i=!0;break;case"p":o=!0;break;case"q":a=!0;break;case"o":l=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${g}: invalid option
155
+ `}}}u++}else break}for(;u<t.length;)c.push(t[u]),u++;if(l)return Em(e,c,s,i,o,a);if(s&&i)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
156
+ `};if(c.length===0){if(s||i){let S=[];for(let g of ii){let y=e.state.shoptOptions[g];s&&y?S.push(o?`shopt -s ${g}`:`${g} on`):i&&!y&&S.push(o?`shopt -u ${g}`:`${g} off`)}return{exitCode:0,stdout:S.length>0?`${S.join(`
157
+ `)}
158
+ `:"",stderr:""}}let E=[];for(let S of ii){let g=e.state.shoptOptions[S];E.push(o?`shopt ${g?"-s":"-u"} ${S}`:`${S} ${g?"on":"off"}`)}return{exitCode:0,stdout:`${E.join(`
159
+ `)}
160
+ `,stderr:""}}let f=!1,d=[],h=0,p=[],m=0;for(let E of c){if(!si(E)&&!wm(E)){h=Wt(d,`shopt: ${E}: invalid shell option name`,h,r),f=!0;continue}if(s)si(E)&&(e.state.shoptOptions[E]=!0,Bi(e));else if(i)si(E)&&(e.state.shoptOptions[E]=!1,Bi(e));else if(si(E)){let S=e.state.shoptOptions[E];a?S||(f=!0):o?(m=Wt(p,`shopt ${S?"-s":"-u"} ${E}`,m,r),S||(f=!0)):(m=Wt(p,`${E} ${S?"on":"off"}`,m,r),S||(f=!0))}else a?f=!0:o?(m=Wt(p,`shopt -u ${E}`,m,r),f=!0):(m=Wt(p,`${E} off`,m,r),f=!0)}return{exitCode:f?1:0,stdout:p.length>0?`${p.join(`
161
+ `)}
162
+ `:"",stderr:d.length>0?`${d.join(`
163
+ `)}
164
+ `:""}}function Em(e,t,n,r,s,i){let o=Math.min(e.limits.maxOutputSize,e.limits.maxStringLength),a=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["posix","posix"],["allexport","allexport"],["noclobber","noclobber"],["noglob","noglob"],["noexec","noexec"],["vi","vi"],["emacs","emacs"]]),l=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],c=[...a.keys(),...l].sort();if(t.length===0){let m=[];for(let E of c){let S=l.includes(E),g=a.get(E),y=S||!g?!1:e.state.options[g];n&&!y||r&&y||m.push(s?`set ${y?"-o":"+o"} ${E}`:`${E} ${y?"on":"off"}`)}return{exitCode:0,stdout:m.length>0?`${m.join(`
165
+ `)}
166
+ `:"",stderr:""}}let u=!1,f=[],d=0,h=[],p=0;for(let m of t){let E=a.has(m),S=l.includes(m);if(!E&&!S){d=Wt(f,`shopt: ${m}: invalid option name`,d,o),u=!0;continue}if(S){n||r||(i?u=!0:s?(p=Wt(h,`set +o ${m}`,p,o),u=!0):(p=Wt(h,`${m} off`,p,o),u=!0));continue}let g=a.get(m);if(g)if(n)g==="vi"?e.state.options.emacs=!1:g==="emacs"&&(e.state.options.vi=!1),e.state.options[g]=!0,Kn(e);else if(r)e.state.options[g]=!1,Kn(e);else{let y=e.state.options[g];i?y||(u=!0):s?(p=Wt(h,`set ${y?"-o":"+o"} ${m}`,p,o),y||(u=!0)):(p=Wt(h,`${m} ${y?"on":"off"}`,p,o),y||(u=!0))}}return{exitCode:u?1:0,stdout:h.length>0?`${h.join(`
167
+ `)}
168
+ `:"",stderr:f.length>0?`${f.join(`
169
+ `)}
170
+ `:""}}var mf=e=>e.type==="Escaped"?M.literal(`\\${e.value}`):e.type==="DoubleQuoted"?{...e,parts:e.parts.map(mf)}:e,yf=Ar,Xo=Dt,bm=df,Sm=Xo;async function Yo(e,t){let n=[],r=null,s="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=null,d=null,h=[],p=["alias","arrayvar","binding","builtin","command","directory","disabled","enabled","export","file","function","group","helptopic","hostname","job","keyword","running","service","setopt","shopt","signal","stopped","user","variable"];for(let k=0;k<t.length;k++){let v=t[k];if(v==="-v")n.push("variable");else if(v==="-e")n.push("export");else if(v==="-f")n.push("file");else if(v==="-d")n.push("directory");else if(v==="-k")n.push("keyword");else if(v==="-A"){if(k++,k>=t.length)return _(`compgen: -A: option requires an argument
171
+ `,2);let $=t[k];if(!p.includes($))return _(`compgen: ${$}: invalid action name
172
+ `,2);n.push($)}else if(v==="-W"){if(k++,k>=t.length)return _(`compgen: -W: option requires an argument
173
+ `,2);r=t[k]}else if(v==="-P"){if(k++,k>=t.length)return _(`compgen: -P: option requires an argument
174
+ `,2);s=t[k]}else if(v==="-S"){if(k++,k>=t.length)return _(`compgen: -S: option requires an argument
175
+ `,2);i=t[k]}else if(v==="-o"){if(k++,k>=t.length)return _(`compgen: -o: option requires an argument
176
+ `,2);let $=t[k];if($==="plusdirs")a=!0;else if($==="dirnames")l=!0;else if($==="default")c=!0;else if(!($==="filenames"||$==="nospace"||$==="bashdefault"||$==="noquote"))return _(`compgen: ${$}: invalid option name
177
+ `,2)}else if(v==="-F"){if(k++,k>=t.length)return _(`compgen: -F: option requires an argument
178
+ `,2);f=t[k]}else if(v==="-C"){if(k++,k>=t.length)return _(`compgen: -C: option requires an argument
179
+ `,2);d=t[k]}else if(v==="-X"){if(k++,k>=t.length)return _(`compgen: -X: option requires an argument
180
+ `,2);u=t[k]}else if(v==="-G"){if(k++,k>=t.length)return _(`compgen: -G: option requires an argument
181
+ `,2)}else if(v==="--"){h.push(...t.slice(k+1));break}else v.startsWith("-")||h.push(v)}o=h[0]??null;let m=[],E=new Set,S=()=>e.limits.maxArrayElements-m.length,g=k=>{for(let v of k){if(m.length>=e.limits.maxArrayElements)throw new C(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(W(v)>e.limits.maxStringLength)throw new C(`compgen: completion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");e.executionScope.consumeWork(1,"compgen completion"),m.push(v),E.add(v)}};if(l){let k=await Qo(e,o,S());g(k)}if(c){let k=await pf(e,o,S());g(k)}for(let k of n)if(k==="variable"){let v=Am(e,o,S());g(v)}else if(k==="export"){let v=vm(e,o,S());g(v)}else if(k==="function"){let v=km(e,o,S());g(v)}else if(k==="builtin"){let v=xm(e,o,S());g(v)}else if(k==="keyword"){let v=Pm(e,o,S());g(v)}else if(k==="alias"){let v=$m(e,o,S());g(v)}else if(k==="shopt"){let v=Cm(e,o,S());g(v)}else if(k==="helptopic"){let v=Nm(e,o,S());g(v)}else if(k==="directory"){let v=await Qo(e,o,S());g(v)}else if(k==="file"){let v=await pf(e,o,S());g(v)}else if(k==="user"){let v=Rm(e,o,S());g(v)}else if(k==="command"){let v=await Om(e,o,S());g(v)}if(r!==null)try{let k=await Dm(e,r),v=Im(e,k,S(),o);for(let $ of v)g([$])}catch(k){if(k instanceof C)throw k;return F("","",1)}if(a){let k=await Qo(e,o,S(),E);for(let v of k)E.has(v)||g([v])}let y="";if(f!==null){let k=e.state.functions.get(f);if(k){let v=new Map,$=$e(e,"COMP_WORDS"),O=$?je($):void 0;be(e,"COMP_WORDS"),Er(e,"COMP_WORDS"),v.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),v.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),v.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let P=$e(e,"COMPREPLY"),N=P?je(P):void 0,D=e.state.env.get("COMPREPLY");be(e,"COMPREPLY"),e.state.env.delete("COMPREPLY");let V=["compgen",h[0]??"",""];try{let X=await ri(e,k,V,"");if(X.exitCode!==0)return Ko(e,v),lr(e,"COMP_WORDS",O),lr(e,"COMPREPLY",N),D!==void 0&&e.state.env.set("COMPREPLY",D),F("",X.stderr,1);y=X.stdout;let R=Tm(e,S());g(R)}catch(X){if(X instanceof C)throw X;return Ko(e,v),lr(e,"COMP_WORDS",O),lr(e,"COMPREPLY",N),D!==void 0&&e.state.env.set("COMPREPLY",D),F("","",1)}Ko(e,v),lr(e,"COMP_WORDS",O),lr(e,"COMPREPLY",N),D!==void 0&&e.state.env.set("COMPREPLY",D)}}if(d!==null)try{let k=qe(d),v=await e.executeScript(k);if(v.exitCode!==0)return F("",v.stderr,v.exitCode);if(v.stdout)for(let $ of _m(v.stdout))$.length>0&&g([$])}catch(k){if(k.name==="ParseException")return _(`compgen: -C: ${k.message}
182
+ `,2);throw k}let b=m;if(u!==null){let k=u.startsWith("!"),v=k?u.slice(1):u;b=m.filter($=>{let O=nr($,v,!1,!0,e.limits.maxCallDepth);return k?O:!O})}if(b.length===0&&o!==null)return F(y,"",1);let A=new Gn(e.limits.maxOutputSize,"compgen");A.append(y);for(let k of b)A.append(s).append(k).append(i).append(`
183
+ `);return ne(A.build())}function Am(e,t,n){let r=yt(e,t,n);for(let s of e.state.env.keys())/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)&&r.add(s);for(let s of e.state.arrays?.keys()??[])r.add(s);return r.build()}function vm(e,t,n){let r=yt(e,t,n),s=e.state.exportedVars??new Set;for(let i of s)e.state.env.has(i)&&r.add(i);return r.build()}function km(e,t,n){let r=yt(e,t,n);for(let s of e.state.functions.keys())r.add(s);return r.build()}function xm(e,t,n){let r=yt(e,t,n);for(let s of Xo)r.add(s);return r.build()}function Pm(e,t,n){let r=yt(e,t,n);for(let s of yf)r.add(s);return r.build()}function $m(e,t,n){let r=yt(e,t,n);for(let s of e.state.env.keys())if(s.startsWith("BASH_ALIAS_")){let i=s.slice(11);r.add(i)}return r.build()}function Cm(e,t,n){let r=yt(e,t,n);for(let s of bm)r.add(s);return r.build()}function Nm(e,t,n){let r=yt(e,t,n);for(let s of Sm)r.add(s);return r.build()}async function Qo(e,t,n=e.limits.maxArrayElements,r){let s=yt(e,null,n,r);try{let i=e.state.cwd,o=t??"";if(t){let l=t.lastIndexOf("/");if(l!==-1){let c=t.slice(0,l)||"/";o=t.slice(l+1),c.startsWith("/")?i=c:i=`${e.state.cwd}/${c}`}}let a=await e.fs.readdir(i);for(let l of a){e.executionScope.consumeWork(1,"compgen directory scan");let c=`${i}/${l}`;try{if((await e.fs.stat(c)).isDirectory&&(!o||l.startsWith(o)))if(t?.includes("/")){let f=t.lastIndexOf("/"),d=t.slice(0,f+1);s.add(d+l)}else s.add(l)}catch(u){if(u instanceof C)throw u}}}catch(i){if(i instanceof C)throw i}return s.build()}async function pf(e,t,n=e.limits.maxArrayElements){let r=yt(e,null,n);try{let s=e.state.cwd,i=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let l=t.slice(0,a)||"/";i=t.slice(a+1),l.startsWith("/")?s=l:s=`${e.state.cwd}/${l}`}}let o=await e.fs.readdir(s);for(let a of o)if(e.executionScope.consumeWork(1,"compgen file scan"),!i||a.startsWith(i))if(t?.includes("/")){let l=t.lastIndexOf("/"),c=t.slice(0,l+1);r.add(c+a)}else r.add(a)}catch(s){if(s instanceof C)throw s}return r.build()}function Rm(e,t,n){let r=yt(e,t,n);return r.add("root"),r.add("nobody"),r.build()}async function Om(e,t,n){let r=yt(e,t,n);for(let i of Xo)r.add(i);for(let i of e.state.functions.keys())r.add(i);for(let i of e.state.env.keys())i.startsWith("BASH_ALIAS_")&&r.add(i.slice(11));for(let i of yf)r.add(i);let s=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of s.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)r.add(a)}catch(o){if(o instanceof C)throw o}return r.build()}function yt(e,t,n,r){let s=new Set;return{add(i){if(e.executionScope.consumeWork(1,"compgen candidate collection"),!(t!==null&&!i.startsWith(t))&&!r?.has(i)&&!s.has(i)){if(s.size>=n)throw new C(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(W(i)>e.limits.maxStringLength)throw new C(`compgen: completion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");s.add(i)}},build(){return Array.from(s).sort()}}}async function Dm(e,t){let r=new Q().parseWordFromString(t,!1,!1);return await ae(e,M.word(r.parts.map(mf)))}function Im(e,t,n,r){let s=e.state.env.get("IFS")??`
184
+ `;if(s.length===0){if(r!==null&&!t.startsWith(r))return[];if(n===0)throw new C(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");return[t]}let i=new Set(s.split("")),o=[],a=u=>{if(!(r!==null&&!u.startsWith(r))){if(o.length>=n)throw new C(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");o.push(u)}},l="",c=0;for(;c<t.length;){let u=t[c];if(u==="\\"&&c+1<t.length){let f=t[c+1];l+=f,c+=2}else i.has(u)?(l.length>0&&(a(l),l=""),c++):(l+=u,c++)}return l.length>0&&a(l),o}function Ko(e,t){for(let[n,r]of t)r===void 0?e.state.env.delete(n):e.state.env.set(n,r)}function lr(e,t,n){e.state.arrays??=new Map,n?e.state.arrays.set(t,je(n)):e.state.arrays.delete(t)}function Tm(e,t){let n=[],r=s=>{if(n.length>=t)throw new C(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");n.push(s)};if(Oe(e,"COMPREPLY")){let s=K(e,"COMPREPLY");for(let[,i]of s)r(i)}else{let s=e.state.env.get("COMPREPLY");s!==void 0&&r(s)}return n}function*_m(e){let t=0;for(;t<=e.length;){let n=e.indexOf(`
185
+ `,t),r=n===-1?e.length:n;if(r>t&&(yield e.slice(t,r)),n===-1)return;t=n+1}}function Tr(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<32||n===127)return!0}return!1}function Jo(e){let t="$'";for(let n=0;n<e.length;n++){let r=e[n],s=e.charCodeAt(n);s===7?t+="\\a":s===8?t+="\\b":s===9?t+="\\t":s===10?t+="\\n":s===11?t+="\\v":s===12?t+="\\f":s===13?t+="\\r":s===27?t+="\\e":s===39?t+="\\'":s===92?t+="\\\\":s<32||s===127?t+=`\\${s.toString(8).padStart(3,"0")}`:t+=r}return t+="'",t}function gf(e){if(Tr(e))return wf(e);if(e==="")return 2;if(/^[a-zA-Z0-9_/.:\-@%+,=]+$/.test(e))return W(e);let t=W(e)+2;for(let n of e)n==="'"&&(t+=3);return t}function ve(e){return Tr(e)?Jo(e):e===""?"''":/^[a-zA-Z0-9_/.:\-@%+,=]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function oi(e){if(Tr(e))return wf(e);let t=W(e)+2;for(let n of e)(n==="\\"||n==='"'||n==="$"||n==="`")&&t++;return t}function kn(e){return Tr(e)?Jo(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/`/g,"\\`")}"`}function wf(e){let t=3;for(let n of e){let r=n.codePointAt(0)??0;r===7||r===8||r===9||r===10||r===11||r===12||r===13||r===27||r===39||r===92?t+=2:r<32||r===127?t+=4:t+=W(n)}return t}function _r(e){return Tr(e)?Jo(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/`/g,"\\`")}"`}var Lm=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function ta(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let n=!1,r=!1,s=!1,i,o,a,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")n=!0;else if(d==="-r")r=!0;else if(d==="-D")s=!0;else if(d==="-W"){if(f++,f>=t.length)return _(`complete: -W: option requires an argument
186
+ `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return _(`complete: -F: option requires an argument
187
+ `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return _(`complete: -o: option requires an argument
188
+ `,2);let h=t[f];if(!Lm.includes(h))return _(`complete: ${h}: invalid option name
189
+ `,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return _(`complete: -A: option requires an argument
190
+ `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return _(`complete: -C: option requires an argument
191
+ `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return _(`complete: -G: option requires an argument
192
+ `,2)}else if(d==="-P"){if(f++,f>=t.length)return _(`complete: -P: option requires an argument
193
+ `,2)}else if(d==="-S"){if(f++,f>=t.length)return _(`complete: -S: option requires an argument
194
+ `,2)}else if(d==="-X"){if(f++,f>=t.length)return _(`complete: -X: option requires an argument
195
+ `,2)}else if(d==="--"){u.push(...t.slice(f+1));break}else d.startsWith("-")||u.push(d)}if(r){if(u.length===0)return e.state.completionSpecs.clear(),e.state.defaultCompletionSpec=void 0,e.state.emptyCompletionSpec=void 0,ne("");for(let f of u)e.state.completionSpecs.delete(f);return ne("")}if(n)return u.length===0?ea(e):ea(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!s)return ea(e);if(o&&u.length===0&&!s)return _(`complete: -F: option requires a command name
196
+ `,2);if(s){let f={isDefault:!0};return i!==void 0&&(f.wordlist=i),o!==void 0&&(f.function=o),a!==void 0&&(f.command=a),l.length>0&&(f.options=l),c.length>0&&(f.actions=c),e.state.defaultCompletionSpec=f,ne("")}for(let f of u){let d=Object.create(null);i!==void 0&&(d.wordlist=i),o!==void 0&&(d.function=o),a!==void 0&&(d.command=a),l.length>0&&(d.options=l),c.length>0&&(d.actions=c),e.state.completionSpecs.set(f,d)}return ne("")}function ea(e,t){let n=e.state.completionSpecs??new Map;if(n.size===0&&!e.state.defaultCompletionSpec){if(t&&t.length>0){let i="";for(let o of t)i+=`complete: ${o}: no completion specification
197
+ `;return F("",i,1)}return ne("")}let r=[],s=t||Array.from(n.keys());for(let i of s){let o=n.get(i);if(!o){if(t)return F(r.join(`
182
198
  `)+(r.length>0?`
183
199
  `:""),`complete: ${i}: no completion specification
184
- `,1);continue}let a="complete";if(o.options)for(let l of o.options)a+=` -o ${Ae(l)}`;if(o.actions)for(let l of o.actions)a+=` -A ${Ae(l)}`;o.wordlist!==void 0&&(o.wordlist.includes(" ")||o.wordlist.includes("'")?a+=` -W ${Ae(o.wordlist)}`:a+=` -W ${Ae(o.wordlist)}`),o.function!==void 0&&(a+=` -F ${Ae(o.function)}`),o.command!==void 0&&(a+=` -C ${Ae(o.command)}`),o.isDefault&&(a+=" -D"),a+=`${i.startsWith("-")?" -- ":" "}${Ae(i)}`,r.push(a)}if(!t&&e.state.defaultCompletionSpec){let i=e.state.defaultCompletionSpec,o="complete";for(let a of i.options??[])o+=` -o ${Ae(a)}`;for(let a of i.actions??[])o+=` -A ${Ae(a)}`;i.wordlist!==void 0&&(o+=` -W ${Ae(i.wordlist)}`),i.function!==void 0&&(o+=` -F ${Ae(i.function)}`),i.command!==void 0&&(o+=` -C ${Ae(i.command)}`),o+=" -D",r.push(o)}return r.length===0?te(""):te(`${r.join(`
200
+ `,1);continue}let a="complete";if(o.options)for(let l of o.options)a+=` -o ${ve(l)}`;if(o.actions)for(let l of o.actions)a+=` -A ${ve(l)}`;o.wordlist!==void 0&&(o.wordlist.includes(" ")||o.wordlist.includes("'")?a+=` -W ${ve(o.wordlist)}`:a+=` -W ${ve(o.wordlist)}`),o.function!==void 0&&(a+=` -F ${ve(o.function)}`),o.command!==void 0&&(a+=` -C ${ve(o.command)}`),o.isDefault&&(a+=" -D"),a+=`${i.startsWith("-")?" -- ":" "}${ve(i)}`,r.push(a)}if(!t&&e.state.defaultCompletionSpec){let i=e.state.defaultCompletionSpec,o="complete";for(let a of i.options??[])o+=` -o ${ve(a)}`;for(let a of i.actions??[])o+=` -A ${ve(a)}`;i.wordlist!==void 0&&(o+=` -W ${ve(i.wordlist)}`),i.function!==void 0&&(o+=` -F ${ve(i.function)}`),i.command!==void 0&&(o+=` -C ${ve(i.command)}`),o+=" -D",r.push(o)}return r.length===0?ne(""):ne(`${r.join(`
185
201
  `)}
186
- `)}var cf=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Zo(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let n=!1,r=!1,s=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")n=!0;else if(l==="-E")r=!0;else if(l==="-o"){if(a++,a>=t.length)return T(`compopt: -o: option requires an argument
187
- `,2);let c=t[a];if(!cf.includes(c))return T(`compopt: ${c}: invalid option name
188
- `,2);s.push(c)}else if(l==="+o"){if(a++,a>=t.length)return T(`compopt: +o: option requires an argument
189
- `,2);let c=t[a];if(!cf.includes(c))return T(`compopt: ${c}: invalid option name
190
- `,2);i.push(c)}else if(l==="--"){o.push(...t.slice(a+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&o.push(l)}if(n){let a=e.state.defaultCompletionSpec??{isDefault:!0},l=new Set(a.options??[]);for(let c of s)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.defaultCompletionSpec=a,te("")}if(r){let a=e.state.emptyCompletionSpec??Object.create(null),l=new Set(a.options??[]);for(let c of s)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.emptyCompletionSpec=a,te("")}if(o.length>0){for(let a of o){let l=e.state.completionSpecs.get(a)??{},c=new Set(l.options??[]);for(let u of s)c.add(u);for(let u of i)c.delete(u);l.options=c.size>0?Array.from(c):void 0,e.state.completionSpecs.set(a,l)}return te("")}return T(`compopt: not currently executing completion function
191
- `,1)}function Qo(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Jt;return re}if(t.length>1)throw new q(1,"",`bash: continue: too many arguments
192
- `);let n=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new q(1,"",`bash: continue: ${t[0]}: numeric argument required
193
- `);n=r}throw new tt(n)}function uf(e,t){let n="";return e.state.integerVars?.has(t)&&(n+="i"),e.state.lowercaseVars?.has(t)&&(n+="l"),ue(e,t)&&(n+="n"),e.state.readonlyVars?.has(t)&&(n+="r"),e.state.uppercaseVars?.has(t)&&(n+="u"),e.state.exportedVars?.has(t)&&(n+="x"),n===""?"--":`-${n}`}function Ko(e){return Ae(e)}function Xo(e){return`'${e.replace(/'/g,"'\\''")}'`}function ff(e,t){let n="",r="",s=!1;for(let i of t){let o=uf(e,i);if(e.state.associativeArrays?.has(i)){let u=Ot(e,i);if(u.length===0)n+=`declare -A ${i}=()
194
- `;else{let f=u.map(d=>{let h=le(e,i,d)??"",p=Ko(h);return`[${Xo(d)}]=${p}`});n+=`declare -A ${i}=(${f.join(" ")})
195
- `}continue}let l=ve(e,i);if(l.length>0){let u=l.map(f=>{let d=le(e,i,f)??"";return`[${f}]=${An(d)}`});n+=`declare -a ${i}=(${u.join(" ")})
196
- `;continue}if(Re(e,i)){n+=`declare -a ${i}=()
197
- `;continue}let c=e.state.env.get(i);if(c!==void 0)n+=`declare ${o} ${i}=${Rr(c)}
202
+ `)}var Ef=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function na(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let n=!1,r=!1,s=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")n=!0;else if(l==="-E")r=!0;else if(l==="-o"){if(a++,a>=t.length)return _(`compopt: -o: option requires an argument
203
+ `,2);let c=t[a];if(!Ef.includes(c))return _(`compopt: ${c}: invalid option name
204
+ `,2);s.push(c)}else if(l==="+o"){if(a++,a>=t.length)return _(`compopt: +o: option requires an argument
205
+ `,2);let c=t[a];if(!Ef.includes(c))return _(`compopt: ${c}: invalid option name
206
+ `,2);i.push(c)}else if(l==="--"){o.push(...t.slice(a+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&o.push(l)}if(n){let a=e.state.defaultCompletionSpec??{isDefault:!0},l=new Set(a.options??[]);for(let c of s)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.defaultCompletionSpec=a,ne("")}if(r){let a=e.state.emptyCompletionSpec??Object.create(null),l=new Set(a.options??[]);for(let c of s)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.emptyCompletionSpec=a,ne("")}if(o.length>0){for(let a of o){let l=e.state.completionSpecs.get(a)??{},c=new Set(l.options??[]);for(let u of s)c.add(u);for(let u of i)c.delete(u);l.options=c.size>0?Array.from(c):void 0,e.state.completionSpecs.set(a,l)}return ne("")}return _(`compopt: not currently executing completion function
207
+ `,1)}function ra(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new tn;return se}if(t.length>1)throw new G(1,"",`bash: continue: too many arguments
208
+ `);let n=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new G(1,"",`bash: continue: ${t[0]}: numeric argument required
209
+ `);n=r}throw new nt(n)}function bf(e,t){let n="";return e.state.integerVars?.has(t)&&(n+="i"),e.state.lowercaseVars?.has(t)&&(n+="l"),fe(e,t)&&(n+="n"),e.state.readonlyVars?.has(t)&&(n+="r"),e.state.uppercaseVars?.has(t)&&(n+="u"),e.state.exportedVars?.has(t)&&(n+="x"),n===""?"--":`-${n}`}function sa(e){return ve(e)}function ia(e){return`'${e.replace(/'/g,"'\\''")}'`}function Sf(e,t){let n="",r="",s=!1;for(let i of t){let o=bf(e,i);if(e.state.associativeArrays?.has(i)){let u=Tt(e,i);if(u.length===0)n+=`declare -A ${i}=()
210
+ `;else{let f=u.map(d=>{let h=ce(e,i,d)??"",p=sa(h);return`[${ia(d)}]=${p}`});n+=`declare -A ${i}=(${f.join(" ")})
211
+ `}continue}let l=xe(e,i);if(l.length>0){let u=l.map(f=>{let d=ce(e,i,f)??"";return`[${f}]=${kn(d)}`});n+=`declare -a ${i}=(${u.join(" ")})
212
+ `;continue}if(Oe(e,i)){n+=`declare -a ${i}=()
213
+ `;continue}let c=e.state.env.get(i);if(c!==void 0)n+=`declare ${o} ${i}=${_r(c)}
198
214
  `;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?n+=`declare ${o} ${i}
199
215
  `:(r+=`bash: declare: ${i}: not found
200
- `,s=!0)}}return L(n,r,s?1:0)}function df(e,t){let{filterExport:n,filterReadonly:r,filterNameref:s,filterIndexedArray:i,filterAssocArray:o}=t,a=n||r||s||i||o,l="",c=new Set;for(let f of e.state.env.keys())f.startsWith("BASH_")||c.add(f);for(let f of e.state.arrays?.keys()??[])c.add(f);if(e.state.localVarDepth)for(let f of e.state.localVarDepth.keys())c.add(f);if(e.state.associativeArrays)for(let f of e.state.associativeArrays)c.add(f);let u=Array.from(c).sort();for(let f of u){let d=uf(e,f),h=e.state.associativeArrays?.has(f),p=ve(e,f),m=!h&&Re(e,f);if(a&&(o&&!h||i&&!m||n&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||s&&!ue(e,f)))continue;if(h){let b=Ot(e,f);if(b.length===0)l+=`declare -A ${f}=()
201
- `;else{let g=b.map(y=>{let S=le(e,f,y)??"",A=Ko(S);return`[${Xo(y)}]=${A}`});l+=`declare -A ${f}=(${g.join(" ")})
202
- `}continue}if(p.length>0){let b=p.map(g=>{let y=le(e,f,g)??"";return`[${g}]=${An(y)}`});l+=`declare -a ${f}=(${b.join(" ")})
203
- `;continue}if(Re(e,f)){l+=`declare -a ${f}=()
204
- `;continue}let E=e.state.env.get(f);E!==void 0&&(l+=`declare ${d} ${f}=${Rr(E)}
205
- `)}return te(l)}function hf(e){let t="",n=Array.from(e.state.associativeArrays??[]).sort();for(let r of n){let s=Ot(e,r);if(s.length===0)t+=`declare -A ${r}=()
206
- `;else{let i=s.map(o=>{let a=le(e,r,o)??"",l=Ko(a);return`[${Xo(o)}]=${l}`});t+=`declare -A ${r}=(${i.join(" ")})
207
- `}}return te(t)}function pf(e){let t="",n=new Set(Array.from(e.state.arrays??[]).filter(([,s])=>s.kind==="indexed").map(([s])=>s)),r=Array.from(n).sort();for(let s of r){let i=ve(e,s);if(i.length===0)t+=`declare -a ${s}=()
208
- `;else{let o=i.map(a=>{let l=le(e,s,a)??"";return`[${a}]=${An(l)}`});t+=`declare -a ${s}=(${o.join(" ")})
209
- `}}return te(t)}function mf(e){let t="",n=new Set;for(let s of e.state.env.keys())s.startsWith("BASH_")||n.add(s);let r=Array.from(n).sort();for(let s of r){if(e.state.associativeArrays?.has(s)||ve(e,s).length>0||Re(e,s))continue;let a=e.state.env.get(s);a!==void 0&&(t+=`${s}=${Ae(a)}
210
- `)}return te(t)}function Yo(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function Or(e,t){return e.state.integerVars?.has(t)??!1}function Jo(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Sm(e,t){return e.state.lowercaseVars?.has(t)??!1}function ea(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Am(e,t){return e.state.uppercaseVars?.has(t)??!1}function ir(e,t,n){return Sm(e,t)?n.toLowerCase():Am(e,t)?n.toUpperCase():n}async function yf(e,t){try{let n=new Z,r=ie(n,t),s=await J(e,r.expression);return String(s)}catch{return"0"}}function vm(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let n=t[0],r=n.length;if(e[r]!=="[")return null;let s=0,i=r+1;for(;r<e.length;r++)if(e[r]==="[")s++;else if(e[r]==="]"&&(s--,s===0))break;if(s!==0)return null;let o=e.slice(i,r);if(r++,e[r]!=="=")return null;r++;let a=e.slice(r);return{name:n,indexExpr:o,value:a}}async function ta(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength},r=!1,s=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!1,f=!1,d=!1,h=!1,p=!1,m=!1,E=!1,b=!1,g=[];for(let P=0;P<t.length;P++){let C=t[P];if(C==="-a")r=!0;else if(C==="-A")s=!0;else if(C==="-r")i=!0;else if(C==="-x")o=!0;else if(C==="-p")a=!0;else if(C==="-n")l=!0;else if(C==="+n")c=!0;else if(C==="+a")u=!0;else if(C==="+x")f=!0;else if(C==="--"){g.push(...t.slice(P+1));break}else if(C.startsWith("+")){for(let O of C.slice(1))if(O==="n")c=!0;else if(O==="a")u=!0;else if(O==="x")f=!0;else if(O!=="r"){if(O!=="i"){if(!(O==="f"||O==="F"))return L("",`bash: typeset: +${O}: invalid option
211
- `,2)}}}else if(C==="-i")d=!0;else if(C==="-l")h=!0;else if(C==="-u")p=!0;else if(C==="-f")m=!0;else if(C==="-F")E=!0;else if(C==="-g")b=!0;else if(C.startsWith("-"))for(let O of C.slice(1))if(O==="a")r=!0;else if(O==="A")s=!0;else if(O==="r")i=!0;else if(O==="x")o=!0;else if(O==="p")a=!0;else if(O==="n")l=!0;else if(O==="i")d=!0;else if(O==="l")h=!0;else if(O==="u")p=!0;else if(O==="f")m=!0;else if(O==="F")E=!0;else if(O==="g")b=!0;else return L("",`bash: typeset: -${O}: invalid option
212
- `,2);else g.push(C)}let S=e.state.localScopes.length>0&&!b,A=P=>{if(!S)return;let C=e.state.localScopes[e.state.localScopes.length-1];C.has(P)||C.set(P,e.state.env.get(P))},k=P=>{if(!S)return;let C=e.state.localScopes[e.state.localScopes.length-1];for(C.has(P)||C.set(P,e.state.env.get(P)),e.state.localArrayScopes??=[];e.state.localArrayScopes.length<e.state.localScopes.length;)e.state.localArrayScopes.push(new Map);let O=e.state.localArrayScopes.at(-1);if(O&&!O.has(P)){let W=Pe(e,P);O.set(P,W?Ue(W):void 0)}},v=P=>{S&&gn(e,P)};if(E){if(g.length===0){let O=Array.from(e.state.functions.keys()).sort(),W="";for(let K of O)W+=`declare -f ${K}
213
- `;return te(W)}let P=!0,C="";for(let O of g)e.state.functions.has(O)?C+=`${O}
214
- `:P=!1;return L(C,"",P?0:1)}if(m){if(g.length===0){let C="",O=Array.from(e.state.functions.keys()).sort();for(let W of O)C+=`${W} ()
216
+ `,s=!0)}}return F(n,r,s?1:0)}function Af(e,t){let{filterExport:n,filterReadonly:r,filterNameref:s,filterIndexedArray:i,filterAssocArray:o}=t,a=n||r||s||i||o,l="",c=new Set;for(let f of e.state.env.keys())f.startsWith("BASH_")||c.add(f);for(let f of e.state.arrays?.keys()??[])c.add(f);if(e.state.localVarDepth)for(let f of e.state.localVarDepth.keys())c.add(f);if(e.state.associativeArrays)for(let f of e.state.associativeArrays)c.add(f);let u=Array.from(c).sort();for(let f of u){let d=bf(e,f),h=e.state.associativeArrays?.has(f),p=xe(e,f),m=!h&&Oe(e,f);if(a&&(o&&!h||i&&!m||n&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||s&&!fe(e,f)))continue;if(h){let S=Tt(e,f);if(S.length===0)l+=`declare -A ${f}=()
217
+ `;else{let g=S.map(y=>{let b=ce(e,f,y)??"",A=sa(b);return`[${ia(y)}]=${A}`});l+=`declare -A ${f}=(${g.join(" ")})
218
+ `}continue}if(p.length>0){let S=p.map(g=>{let y=ce(e,f,g)??"";return`[${g}]=${kn(y)}`});l+=`declare -a ${f}=(${S.join(" ")})
219
+ `;continue}if(Oe(e,f)){l+=`declare -a ${f}=()
220
+ `;continue}let E=e.state.env.get(f);E!==void 0&&(l+=`declare ${d} ${f}=${_r(E)}
221
+ `)}return ne(l)}function vf(e){let t="",n=Array.from(e.state.associativeArrays??[]).sort();for(let r of n){let s=Tt(e,r);if(s.length===0)t+=`declare -A ${r}=()
222
+ `;else{let i=s.map(o=>{let a=ce(e,r,o)??"",l=sa(a);return`[${ia(o)}]=${l}`});t+=`declare -A ${r}=(${i.join(" ")})
223
+ `}}return ne(t)}function kf(e){let t="",n=new Set(Array.from(e.state.arrays??[]).filter(([,s])=>s.kind==="indexed").map(([s])=>s)),r=Array.from(n).sort();for(let s of r){let i=xe(e,s);if(i.length===0)t+=`declare -a ${s}=()
224
+ `;else{let o=i.map(a=>{let l=ce(e,s,a)??"";return`[${a}]=${kn(l)}`});t+=`declare -a ${s}=(${o.join(" ")})
225
+ `}}return ne(t)}function xf(e){let t="",n=new Set;for(let s of e.state.env.keys())s.startsWith("BASH_")||n.add(s);let r=Array.from(n).sort();for(let s of r){if(e.state.associativeArrays?.has(s)||xe(e,s).length>0||Oe(e,s))continue;let a=e.state.env.get(s);a!==void 0&&(t+=`${s}=${ve(a)}
226
+ `)}return ne(t)}function oa(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function Lr(e,t){return e.state.integerVars?.has(t)??!1}function aa(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Fm(e,t){return e.state.lowercaseVars?.has(t)??!1}function la(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Mm(e,t){return e.state.uppercaseVars?.has(t)??!1}function cr(e,t,n){return Fm(e,t)?n.toLowerCase():Mm(e,t)?n.toUpperCase():n}async function Pf(e,t){try{let n=new Q,r=oe(n,t),s=await ee(e,r.expression);return String(s)}catch{return"0"}}function Bm(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let n=t[0],r=n.length;if(e[r]!=="[")return null;let s=0,i=r+1;for(;r<e.length;r++)if(e[r]==="[")s++;else if(e[r]==="]"&&(s--,s===0))break;if(s!==0)return null;let o=e.slice(i,r);if(r++,e[r]!=="=")return null;r++;let a=e.slice(r);return{name:n,indexExpr:o,value:a}}async function ai(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength},r=!1,s=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!1,f=!1,d=!1,h=!1,p=!1,m=!1,E=!1,S=!1,g=[];for(let P=0;P<t.length;P++){let N=t[P];if(N==="-a")r=!0;else if(N==="-A")s=!0;else if(N==="-r")i=!0;else if(N==="-x")o=!0;else if(N==="-p")a=!0;else if(N==="-n")l=!0;else if(N==="+n")c=!0;else if(N==="+a")u=!0;else if(N==="+x")f=!0;else if(N==="--"){g.push(...t.slice(P+1));break}else if(N.startsWith("+")){for(let D of N.slice(1))if(D==="n")c=!0;else if(D==="a")u=!0;else if(D==="x")f=!0;else if(D!=="r"){if(D!=="i"){if(!(D==="f"||D==="F"))return F("",`bash: typeset: +${D}: invalid option
227
+ `,2)}}}else if(N==="-i")d=!0;else if(N==="-l")h=!0;else if(N==="-u")p=!0;else if(N==="-f")m=!0;else if(N==="-F")E=!0;else if(N==="-g")S=!0;else if(N.startsWith("-"))for(let D of N.slice(1))if(D==="a")r=!0;else if(D==="A")s=!0;else if(D==="r")i=!0;else if(D==="x")o=!0;else if(D==="p")a=!0;else if(D==="n")l=!0;else if(D==="i")d=!0;else if(D==="l")h=!0;else if(D==="u")p=!0;else if(D==="f")m=!0;else if(D==="F")E=!0;else if(D==="g")S=!0;else return F("",`bash: typeset: -${D}: invalid option
228
+ `,2);else g.push(N)}let b=e.state.localScopes.length>0&&!S,A=P=>{if(!b)return;let N=e.state.localScopes[e.state.localScopes.length-1];N.has(P)||N.set(P,e.state.env.get(P))},k=P=>{if(!b)return;let N=e.state.localScopes[e.state.localScopes.length-1];for(N.has(P)||N.set(P,e.state.env.get(P)),e.state.localArrayScopes??=[];e.state.localArrayScopes.length<e.state.localScopes.length;)e.state.localArrayScopes.push(new Map);let D=e.state.localArrayScopes.at(-1);if(D&&!D.has(P)){let V=$e(e,P);D.set(P,V?je(V):void 0)}},v=P=>{b&&En(e,P)};if(E){if(g.length===0){let D=Array.from(e.state.functions.keys()).sort(),V="";for(let X of D)V+=`declare -f ${X}
229
+ `;return ne(V)}let P=!0,N="";for(let D of g)e.state.functions.has(D)?N+=`${D}
230
+ `:P=!1;return F(N,"",P?0:1)}if(m){if(g.length===0){let N="",D=Array.from(e.state.functions.keys()).sort();for(let V of D)N+=`${V} ()
215
231
  {
216
232
  # function body
217
233
  }
218
- `;return te(C)}let P=!0;for(let C of g)e.state.functions.has(C)||(P=!1);return L("","",P?0:1)}if(a&&g.length>0)return ff(e,g);if(a&&g.length===0)return df(e,{filterExport:o,filterReadonly:i,filterNameref:l,filterIndexedArray:r,filterAssocArray:s});if(g.length===0&&s&&!a)return hf(e);if(g.length===0&&r&&!a)return pf(e);if(g.length===0&&!a)return mf(e);let x="",R=0;for(let P of g){let C=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(C&&!u){let N=C[1],U=C[2],j=fe(e,N);if(j)return j;if(s&&ve(e,N).length>0){x+=`bash: declare: ${N}: cannot convert indexed to associative array
219
- `,R=1;continue}if((r||!s&&!r)&&e.state.associativeArrays?.has(N)){x+=`bash: declare: ${N}: cannot convert associative to indexed array
220
- `,R=1;continue}let D=s&&U.includes("[")?zs(U,n):void 0,I=D===void 0?Zt(U,{...n,maxElements:s?n.maxElements*2:n.maxElements}):void 0;if(e.executionScope.consumeWork(D?.length??I?.length??0,"declare array assignment"),k(N),s?(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(N),sn(e,N,"associative")):sn(e,N,"indexed"),Ee(e,N),e.state.env.delete(N),s&&U.includes("["))for(let[M,se]of D??[])G(e,N,M,hn(e,se),"associative");else if(s){let M=I??[];for(let se=0;se<M.length;se+=2){let Y=M[se],Fe=se+1<M.length?M[se+1]:"";G(e,N,Y,Fe,"associative")}}else{let M=I??[];if(M.some(Y=>/^\[[^\]]+\]=/.test(Y))){let Y=0;for(let Fe of M){let yt=Fe.match(/^\[([^\]]+)\]=(.*)$/);if(yt){let Bt=yt[1],gt=yt[2],wt;if(/^-?\d+$/.test(Bt))wt=Number.parseInt(Bt,10);else try{let Wt=new Z,yd=ie(Wt,Bt);wt=await J(e,yd.expression)}catch{wt=0}G(e,N,wt,hn(e,gt)),Y=wt+1}else G(e,N,Y,Fe),Y++}}else for(let Y=0;Y<M.length;Y++)G(e,N,Y,M[Y])}v(N),i&&Je(e,N),o&&At(e,N);continue}if(c){let N=P.includes("=")?P.slice(0,P.indexOf("=")):P;if(hc(e,N),!P.includes("="))continue}if(f){let N=P.includes("=")?P.slice(0,P.indexOf("=")):P;if(Ss(e,N),!P.includes("="))continue}let O=vm(P);if(O){let{name:N,indexExpr:U,value:j}=O,D=fe(e,N);if(D)return D;k(N);let I;try{let M=new Z,se=ie(M,U);I=await J(e,se.expression)}catch{let M=parseInt(U,10);I=Number.isNaN(M)?0:M}G(e,N,I,j),v(N),i&&Je(e,N),o&&At(e,N);continue}let W=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(W&&!u){let N=W[1],U=W[2],j=fe(e,N);if(j)return j;k(N);let D=Zt(U,n);if(e.state.associativeArrays?.has(N)){let I=zs(U,n);e.executionScope.consumeWork(I.length,"declare array append"),Cn(e,N,I.map(([M])=>M));for(let[M,se]of I)G(e,N,M,se,"associative")}else{e.executionScope.consumeWork(D.length,"declare array append");let I=ve(e,N),M=0,se=e.state.env.get(N);I.length===0&&se!==void 0?(G(e,N,0,se),e.state.env.delete(N),M=1):I.length>0&&(M=Math.max(...I)+1),Cn(e,N,Array.from({length:D.length},(Y,Fe)=>M+Fe));for(let Y=0;Y<D.length;Y++)G(e,N,M+Y,D[Y])}v(N),i&&Je(e,N),o&&At(e,N);continue}let K=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(K){let N=K[1],U=K[2],j=fe(e,N);if(j)return j;A(N),d&&Yo(e,N),h&&Jo(e,N),p&&ea(e,N);let I=ve(e,N).length>0||e.state.associativeArrays?.has(N);if(Or(e,N)){let M=e.state.env.get(N)??"0",se=parseInt(M,10)||0,Y=parseInt(await yf(e,U),10)||0;U=String(se+Y),e.state.env.set(N,U)}else if(I){U=ir(e,N,U);let M=le(e,N,0)??"";G(e,N,0,en([M,U],"",e.limits.maxStringLength,"declare append"))}else{U=ir(e,N,U);let M=e.state.env.get(N)??"";e.state.env.set(N,en([M,U],"",e.limits.maxStringLength,"declare append"))}v(N),i&&Je(e,N),o&&At(e,N),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(N));continue}if(P.includes("=")){let N=P.indexOf("="),U=P.slice(0,N),j=P.slice(N+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(U)){x+=`bash: typeset: \`${U}': not a valid identifier
221
- `,R=1;continue}let D=fe(e,U);if(D)return D;if(A(U),l){if(j!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(j)){x+=`bash: declare: \`${j}': invalid variable name for name reference
222
- `,R=1;continue}e.state.env.set(U,j),Ht(e,U),j!==""&&gs(e,j)&&oo(e,U),v(U),i&&Je(e,U),o&&At(e,U);continue}if(d&&Yo(e,U),h&&Jo(e,U),p&&ea(e,U),Or(e,U)&&(j=await yf(e,j)),j=ir(e,U,j),ue(e,U)){let I=qe(e,U);I&&I!==U?e.state.env.set(I,j):e.state.env.set(U,j)}else e.state.env.set(U,j);v(U),i&&Je(e,U),o&&At(e,U),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(U))}else{let N=P;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(N)){x+=`bash: typeset: \`${N}': not a valid identifier
223
- `,R=1;continue}if(r||s?k(N):A(N),l){Ht(e,N);let j=e.state.env.get(N);j!==void 0&&j!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(j)?pc(e,N):j&&gs(e,j)&&oo(e,N),v(N),i&&Je(e,N),o&&At(e,N);continue}if(d&&Yo(e,N),h&&Jo(e,N),p&&ea(e,N),s){if(ve(e,N).length>0){x+=`bash: declare: ${N}: cannot convert indexed to associative array
224
- `,R=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(N),sn(e,N,"associative")}let U=Re(e,N);!e.state.env.has(N)&&!U&&(r||s?sn(e,N,s?"associative":"indexed"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(N))),v(N),i&&Je(e,N),o&&At(e,N)}}return L("",x,R)}async function na(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength},r=!1,s=!1,i=!1,o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-a")r=!0;else if(l==="-A")s=!0;else if(l==="-p")i=!0;else if(l==="--"){o.push(...t.slice(a+1));break}else l.startsWith("-")||o.push(l)}if(o.length===0){let a="",l=Array.from(e.state.readonlyVars||[]).sort();for(let c of l){let u=e.state.env.get(c);if(u!==void 0){let f=u.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -r ${c}="${f}"
225
- `}}return te(a)}for(let a of o){let l=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(l){let d=l[1],h=l[2],p=fe(e,d);if(p)return p;let m=Zt(h,n);if(e.state.associativeArrays?.has(d)){let E=zs(h,n);e.executionScope.consumeWork(E.length,"readonly array append"),Cn(e,d,E.map(([b])=>b));for(let[b,g]of E)G(e,d,b,g,"associative")}else{e.executionScope.consumeWork(m.length,"readonly array append");let E=ve(e,d),b=0,g=e.state.env.get(d);E.length===0&&g!==void 0?(G(e,d,0,g),e.state.env.delete(d),b=1):E.length>0&&(b=Math.max(...E)+1),Cn(e,d,Array.from({length:m.length},(y,S)=>b+S));for(let y=0;y<m.length;y++)G(e,d,b+y,m[y])}Je(e,d);continue}let c=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(c){let d=c[1],h=c[2],p=fe(e,d);if(p)return p;let m=e.state.env.get(d)??"";e.state.env.set(d,en([m,h],"",e.limits.maxStringLength,"readonly append")),Je(e,d);continue}let u=qu(a,n);if(u.value===void 0&&!u.isArray){Je(e,u.name);continue}let f=await Gu(e,u,{makeReadonly:!0});if(f)return f}return re}function ra(e){return e.state.directoryStack??=[],e.state.directoryStack}function Dr(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function km(e){let t=e.split("/").filter(r=>r&&r!=="."),n=[];for(let r of t)r===".."?n.pop():n.push(r);return`/${n.join("/")}`}async function sa(e,t){let n=ra(e),r;for(let a=0;a<t.length;a++){let l=t[a];if(l==="--"){if(a+1<t.length){if(r!==void 0)return T(`bash: pushd: too many arguments
226
- `,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return T(`bash: pushd: ${l}: invalid option
227
- `,2);if(r!==void 0)return T(`bash: pushd: too many arguments
228
- `,2);r=l}}if(r===void 0){if(n.length<2)return T(`bash: pushd: no other directory
229
- `,1);let a=n[0];n[0]=n[1],n[1]=a,r=n[0]}let s;if(r.startsWith("/"))s=r;else if(r===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),s=`/${a.join("/")}`}else r==="."?s=e.state.cwd:r.startsWith("~")?s=(e.state.env.get("HOME")||"/")+r.slice(1):s=`${e.state.cwd}/${r}`;s=km(s);try{if(!(await e.fs.stat(s)).isDirectory)return T(`bash: pushd: ${r}: Not a directory
230
- `,1)}catch{return T(`bash: pushd: ${r}: No such file or directory
231
- `,1)}n.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=s,e.state.env.set("PWD",s),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",o=`${[s,...n].map(a=>Dr(a,i)).join(" ")}
232
- `;return te(o)}function ia(e,t){let n=ra(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?T(`bash: popd: ${o}: invalid option
233
- `,2):T(`bash: popd: too many arguments
234
- `,2);if(n.length===0)return T(`bash: popd: directory stack empty
235
- `,1);let r=n.shift();if(!r)return T(`bash: popd: directory stack empty
236
- `,1);e.state.previousDir=e.state.cwd,e.state.cwd=r,e.state.env.set("PWD",r),e.state.env.set("OLDPWD",e.state.previousDir);let s=e.state.env.get("HOME")||"",i=`${[r,...n].map(o=>Dr(o,s)).join(" ")}
237
- `;return te(i)}function oa(e,t){let n=ra(e),r=!1,s=!1,i=!1,o=!1;for(let u of t)if(u!=="--")if(u.startsWith("-"))for(let f of u.slice(1))if(f==="c")r=!0;else if(f==="l")s=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return T(`bash: dirs: -${f}: invalid option
238
- `,2);else return T(`bash: dirs: too many arguments
239
- `,1);if(r)return e.state.directoryStack=[],re;let a=[e.state.cwd,...n],l=e.state.env.get("HOME")||"",c;return o?(c=a.map((u,f)=>{let d=s?u:Dr(u,l);return` ${f} ${d}`}).join(`
234
+ `;return ne(N)}let P=!0;for(let N of g)e.state.functions.has(N)||(P=!1);return F("","",P?0:1)}if(a&&g.length>0)return Sf(e,g);if(a&&g.length===0)return Af(e,{filterExport:o,filterReadonly:i,filterNameref:l,filterIndexedArray:r,filterAssocArray:s});if(g.length===0&&s&&!a)return vf(e);if(g.length===0&&r&&!a)return kf(e);if(g.length===0&&!a)return xf(e);let $="",O=0;for(let P of g){let N=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(N&&!u){let R=N[1],j=N[2],q=de(e,R);if(q)return q;if(s&&xe(e,R).length>0){$+=`bash: declare: ${R}: cannot convert indexed to associative array
235
+ `,O=1;continue}if((r||!s&&!r)&&e.state.associativeArrays?.has(R)){$+=`bash: declare: ${R}: cannot convert associative to indexed array
236
+ `,O=1;continue}let I=s&&j.includes("[")?Zs(j,n):void 0,T=I===void 0?Kt(j,{...n,maxElements:s?n.maxElements*2:n.maxElements}):void 0;if(e.executionScope.consumeWork(I?.length??T?.length??0,"declare array assignment"),k(R),s?(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(R),ln(e,R,"associative")):ln(e,R,"indexed"),be(e,R),e.state.env.delete(R),s&&j.includes("["))for(let[B,ie]of I??[])H(e,R,B,mn(e,ie),"associative");else if(s){let B=T??[];for(let ie=0;ie<B.length;ie+=2){let J=B[ie],Me=ie+1<B.length?B[ie+1]:"";H(e,R,J,Me,"associative")}}else{let B=T??[];if(B.some(J=>/^\[[^\]]+\]=/.test(J))){let J=0;for(let Me of B){let wt=Me.match(/^\[([^\]]+)\]=(.*)$/);if(wt){let Vt=wt[1],Et=wt[2],bt;if(/^-?\d+$/.test(Vt))bt=Number.parseInt(Vt,10);else try{let zt=new Q,Cd=oe(zt,Vt);bt=await ee(e,Cd.expression)}catch{bt=0}H(e,R,bt,mn(e,Et)),J=bt+1}else H(e,R,J,Me),J++}}else for(let J=0;J<B.length;J++)H(e,R,J,B[J])}v(R),i&&et(e,R),o&&xt(e,R);continue}if(c){let R=P.includes("=")?P.slice(0,P.indexOf("=")):P;if(bc(e,R),!P.includes("="))continue}if(f){let R=P.includes("=")?P.slice(0,P.indexOf("=")):P;if($s(e,R),!P.includes("="))continue}let D=Bm(P);if(D){let{name:R,indexExpr:j,value:q}=D,I=de(e,R);if(I)return I;k(R);let T;try{let B=new Q,ie=oe(B,j);T=await ee(e,ie.expression)}catch{let B=parseInt(j,10);T=Number.isNaN(B)?0:B}H(e,R,T,q),v(R),i&&et(e,R),o&&xt(e,R);continue}let V=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(V&&!u){let R=V[1],j=V[2],q=de(e,R);if(q)return q;k(R);let I=Kt(j,n);if(e.state.associativeArrays?.has(R)){let T=Zs(j,n);e.executionScope.consumeWork(T.length,"declare array append"),On(e,R,T.map(([B])=>B));for(let[B,ie]of T)H(e,R,B,ie,"associative")}else{e.executionScope.consumeWork(I.length,"declare array append");let T=xe(e,R),B=0,ie=e.state.env.get(R);T.length===0&&ie!==void 0?(H(e,R,0,ie),e.state.env.delete(R),B=1):T.length>0&&(B=Math.max(...T)+1),On(e,R,Array.from({length:I.length},(J,Me)=>B+Me));for(let J=0;J<I.length;J++)H(e,R,B+J,I[J])}v(R),i&&et(e,R),o&&xt(e,R);continue}let X=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(X){let R=X[1],j=X[2],q=de(e,R);if(q)return q;A(R),d&&oa(e,R),h&&aa(e,R),p&&la(e,R);let T=xe(e,R).length>0||e.state.associativeArrays?.has(R);if(Lr(e,R)){let B=e.state.env.get(R)??"0",ie=parseInt(B,10)||0,J=parseInt(await Pf(e,j),10)||0;j=String(ie+J),e.state.env.set(R,j)}else if(T){j=cr(e,R,j);let B=ce(e,R,0)??"";H(e,R,0,nn([B,j],"",e.limits.maxStringLength,"declare append"))}else{j=cr(e,R,j);let B=e.state.env.get(R)??"";e.state.env.set(R,nn([B,j],"",e.limits.maxStringLength,"declare append"))}v(R),i&&et(e,R),o&&xt(e,R),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(R));continue}if(P.includes("=")){let R=P.indexOf("="),j=P.slice(0,R),q=P.slice(R+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(j)){$+=`bash: typeset: \`${j}': not a valid identifier
237
+ `,O=1;continue}let I=de(e,j);if(I)return I;if(A(j),l){if(q!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(q)){$+=`bash: declare: \`${q}': invalid variable name for name reference
238
+ `,O=1;continue}e.state.env.set(j,q),Qt(e,j),q!==""&&vs(e,q)&&mo(e,j),v(j),i&&et(e,j),o&&xt(e,j);continue}if(d&&oa(e,j),h&&aa(e,j),p&&la(e,j),Lr(e,j)&&(q=await Pf(e,q)),q=cr(e,j,q),fe(e,j)){let T=Ge(e,j);T&&T!==j?e.state.env.set(T,q):e.state.env.set(j,q)}else e.state.env.set(j,q);v(j),i&&et(e,j),o&&xt(e,j),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(j))}else{let R=P;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(R)){$+=`bash: typeset: \`${R}': not a valid identifier
239
+ `,O=1;continue}if(r||s?k(R):A(R),l){Qt(e,R);let q=e.state.env.get(R);q!==void 0&&q!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(q)?Sc(e,R):q&&vs(e,q)&&mo(e,R),v(R),i&&et(e,R),o&&xt(e,R);continue}if(d&&oa(e,R),h&&aa(e,R),p&&la(e,R),s){if(xe(e,R).length>0){$+=`bash: declare: ${R}: cannot convert indexed to associative array
240
+ `,O=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(R),ln(e,R,"associative")}let j=Oe(e,R);!e.state.env.has(R)&&!j&&(r||s?ln(e,R,s?"associative":"indexed"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(R))),v(R),i&&et(e,R),o&&xt(e,R)}}return F("",$,O)}async function ca(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength},r=!1,s=!1,i=!1,o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-a")r=!0;else if(l==="-A")s=!0;else if(l==="-p")i=!0;else if(l==="--"){o.push(...t.slice(a+1));break}else l.startsWith("-")||o.push(l)}if(o.length===0){let a="",l=Array.from(e.state.readonlyVars||[]).sort();for(let c of l){let u=e.state.env.get(c);if(u!==void 0){let f=u.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -r ${c}="${f}"
241
+ `}}return ne(a)}for(let a of o){let l=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(l){let d=l[1],h=l[2],p=de(e,d);if(p)return p;let m=Kt(h,n);if(e.state.associativeArrays?.has(d)){let E=Zs(h,n);e.executionScope.consumeWork(E.length,"readonly array append"),On(e,d,E.map(([S])=>S));for(let[S,g]of E)H(e,d,S,g,"associative")}else{e.executionScope.consumeWork(m.length,"readonly array append");let E=xe(e,d),S=0,g=e.state.env.get(d);E.length===0&&g!==void 0?(H(e,d,0,g),e.state.env.delete(d),S=1):E.length>0&&(S=Math.max(...E)+1),On(e,d,Array.from({length:m.length},(y,b)=>S+b));for(let y=0;y<m.length;y++)H(e,d,S+y,m[y])}et(e,d);continue}let c=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(c){let d=c[1],h=c[2],p=de(e,d);if(p)return p;let m=e.state.env.get(d)??"";e.state.env.set(d,nn([m,h],"",e.limits.maxStringLength,"readonly append")),et(e,d);continue}let u=Yu(a,n);if(u.value===void 0&&!u.isArray){et(e,u.name);continue}let f=await Ju(e,u,{makeReadonly:!0});if(f)return f}return se}function ua(e){return e.state.directoryStack??=[],e.state.directoryStack}function Fr(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function Wm(e){let t=e.split("/").filter(r=>r&&r!=="."),n=[];for(let r of t)r===".."?n.pop():n.push(r);return`/${n.join("/")}`}async function fa(e,t){let n=ua(e),r;for(let a=0;a<t.length;a++){let l=t[a];if(l==="--"){if(a+1<t.length){if(r!==void 0)return _(`bash: pushd: too many arguments
242
+ `,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return _(`bash: pushd: ${l}: invalid option
243
+ `,2);if(r!==void 0)return _(`bash: pushd: too many arguments
244
+ `,2);r=l}}if(r===void 0){if(n.length<2)return _(`bash: pushd: no other directory
245
+ `,1);let a=n[0];n[0]=n[1],n[1]=a,r=n[0]}let s;if(r.startsWith("/"))s=r;else if(r===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),s=`/${a.join("/")}`}else r==="."?s=e.state.cwd:r.startsWith("~")?s=(e.state.env.get("HOME")||"/")+r.slice(1):s=`${e.state.cwd}/${r}`;s=Wm(s);try{if(!(await e.fs.stat(s)).isDirectory)return _(`bash: pushd: ${r}: Not a directory
246
+ `,1)}catch{return _(`bash: pushd: ${r}: No such file or directory
247
+ `,1)}n.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=s,e.state.env.set("PWD",s),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",o=`${[s,...n].map(a=>Fr(a,i)).join(" ")}
248
+ `;return ne(o)}function da(e,t){let n=ua(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?_(`bash: popd: ${o}: invalid option
249
+ `,2):_(`bash: popd: too many arguments
250
+ `,2);if(n.length===0)return _(`bash: popd: directory stack empty
251
+ `,1);let r=n.shift();if(!r)return _(`bash: popd: directory stack empty
252
+ `,1);e.state.previousDir=e.state.cwd,e.state.cwd=r,e.state.env.set("PWD",r),e.state.env.set("OLDPWD",e.state.previousDir);let s=e.state.env.get("HOME")||"",i=`${[r,...n].map(o=>Fr(o,s)).join(" ")}
253
+ `;return ne(i)}function ha(e,t){let n=ua(e),r=!1,s=!1,i=!1,o=!1;for(let u of t)if(u!=="--")if(u.startsWith("-"))for(let f of u.slice(1))if(f==="c")r=!0;else if(f==="l")s=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return _(`bash: dirs: -${f}: invalid option
254
+ `,2);else return _(`bash: dirs: too many arguments
255
+ `,1);if(r)return e.state.directoryStack=[],se;let a=[e.state.cwd,...n],l=e.state.env.get("HOME")||"",c;return o?(c=a.map((u,f)=>{let d=s?u:Fr(u,l);return` ${f} ${d}`}).join(`
240
256
  `),c+=`
241
- `):i?c=a.map(u=>s?u:Dr(u,l)).join(`
257
+ `):i?c=a.map(u=>s?u:Fr(u,l)).join(`
242
258
  `)+`
243
- `:c=a.map(u=>s?u:Dr(u,l)).join(" ")+`
244
- `,te(c)}async function Js(e,t,n,r=!1){let s=t;if(s.length>0){let l=s[0];if(l==="--")s=s.slice(1);else if(l.startsWith("-")&&l!=="-"&&l.length>1)return T(`bash: eval: ${l}: invalid option
259
+ `:c=a.map(u=>s?u:Fr(u,l)).join(" ")+`
260
+ `,ne(c)}async function pa(e,t,n,r=!1){let s=t;if(s.length>0){let l=s[0];if(l==="--")s=s.slice(1);else if(l.startsWith("-")&&l!=="-"&&l.length>1)return _(`bash: eval: ${l}: invalid option
245
261
  eval: usage: eval [arg ...]
246
- `,2)}if(s.length===0)return re;let i=s.join(" ");if(i.trim()==="")return re;let o=e.state.groupStdin,a=r||n!==void 0&&n!=="";a&&(e.state.groupStdin=n??"");try{let l=je(i);return await e.executeScript(l)}catch(l){if(l instanceof et||l instanceof tt||l instanceof Me||l instanceof q||l instanceof Ne)throw l;if(l.name==="ParseException")return T(`bash: eval: ${l.message}
247
- `);throw l}finally{(a||o!==void 0&&e.state.groupStdin===void 0)&&(e.state.groupStdin=o)}}function aa(e,t){let n,r="";if(t.length===0)n=e.state.lastExitCode;else{let s=t[0];if(s===""||!/^-?\d+$/.test(s))r=`bash: exit: ${s}: numeric argument required
248
- `,n=2;else{let i=BigInt(s);n=Number((i%256n+256n)%256n)}}throw new q(n,"",r)}function la(e,t){let n=!1,r=[];for(let o of t)o==="-n"?n=!0:o==="-p"||o==="--"||r.push(o);if(r.length===0&&!n){let o="",a=e.state.exportedVars??new Set,l=Array.from(a).sort();for(let c of l){let u=e.state.env.get(c);u!==void 0&&(o+=`declare -x ${c}=${Rr(u)}
249
- `)}return te(o)}if(n){for(let o of r){let a,l;if(o.includes("=")){let c=o.indexOf("=");a=o.slice(0,c),l=o.slice(c+1)}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a))return L("",`bash: export: \`${o}': not a valid identifier
250
- `,1);l!==void 0&&(fe(e,a),e.state.env.set(a,l)),Ss(e,a)}return re}let s="",i=0;for(let o of r){let a,l,c=!1,u=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(u)a=u[1],l=u[2],c=!0;else if(o.includes("=")){let f=o.indexOf("=");a=o.slice(0,f),l=o.slice(f+1)}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a)){s+=`bash: export: \`${o}': not a valid identifier
251
- `,i=1;continue}if(l!==void 0)if(fe(e,a),c){let f=e.state.env.get(a)??"";e.state.env.set(a,f+l)}else e.state.env.set(a,l);else e.state.env.has(a)||e.state.env.set(a,"");At(e,a)}return L("",s,i)}function ei(e,t){if(t.length<2)return T(`bash: getopts: usage: getopts optstring name [arg ...]
252
- `);let n=t[0],r=t[1],s=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r),i=n.startsWith(":"),o=i?n.slice(1):n,a;if(t.length>2)a=t.slice(2);else{let m=Number.parseInt(e.state.env.get("#")||"0",10);a=[];for(let E=1;E<=m;E++)a.push(e.state.env.get(String(E))||"")}let l=Number.parseInt(e.state.env.get("OPTIND")||"1",10);l<1&&(l=1);let c=Number.parseInt(e.state.env.get("__GETOPTS_CHARINDEX")||"0",10);if(e.state.env.set("OPTARG",""),l>a.length)return s||e.state.env.set(r,"?"),e.state.env.set("OPTIND",String(a.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:s?2:1,stdout:"",stderr:""};let u=a[l-1];if(!u||u==="-"||!u.startsWith("-"))return s||e.state.env.set(r,"?"),{exitCode:s?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),s||e.state.env.set(r,"?"),{exitCode:s?2:1,stdout:"",stderr:""};let f=c===0?1:c,d=u[f];if(!d)return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),ei(e,t);let h=o.indexOf(d);if(h===-1){let m="";return i?e.state.env.set("OPTARG",d):m=`bash: illegal option -- ${d}
262
+ `,2)}if(s.length===0)return se;let i=s.join(" ");if(i.trim()==="")return se;let o=e.state.groupStdin,a=r||n!==void 0&&n!=="";a&&(e.state.groupStdin=n??"");try{let l=qe(i);return await e.executeScript(l)}catch(l){if(l instanceof tt||l instanceof nt||l instanceof Be||l instanceof G||l instanceof Re)throw l;if(l.name==="ParseException")return _(`bash: eval: ${l.message}
263
+ `);throw l}finally{(a||o!==void 0&&e.state.groupStdin===void 0)&&(e.state.groupStdin=o)}}function ma(e,t){let n,r="";if(t.length===0)n=e.state.lastExitCode;else{let s=t[0];if(s===""||!/^-?\d+$/.test(s))r=`bash: exit: ${s}: numeric argument required
264
+ `,n=2;else{let i=BigInt(s);n=Number((i%256n+256n)%256n)}}throw new G(n,"",r)}function ya(e,t){let n=!1,r=[];for(let o of t)o==="-n"?n=!0:o==="-p"||o==="--"||r.push(o);if(r.length===0&&!n){let o="",a=e.state.exportedVars??new Set,l=Array.from(a).sort();for(let c of l){let u=e.state.env.get(c);u!==void 0&&(o+=`declare -x ${c}=${_r(u)}
265
+ `)}return ne(o)}if(n){for(let o of r){let a,l;if(o.includes("=")){let c=o.indexOf("=");a=o.slice(0,c),l=o.slice(c+1)}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a))return F("",`bash: export: \`${o}': not a valid identifier
266
+ `,1);l!==void 0&&(de(e,a),e.state.env.set(a,l)),$s(e,a)}return se}let s="",i=0;for(let o of r){let a,l,c=!1,u=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(u)a=u[1],l=u[2],c=!0;else if(o.includes("=")){let f=o.indexOf("=");a=o.slice(0,f),l=o.slice(f+1)}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a)){s+=`bash: export: \`${o}': not a valid identifier
267
+ `,i=1;continue}if(l!==void 0)if(de(e,a),c){let f=e.state.env.get(a)??"";e.state.env.set(a,f+l)}else e.state.env.set(a,l);else e.state.env.has(a)||e.state.env.set(a,"");xt(e,a)}return F("",s,i)}function li(e,t){if(t.length<2)return _(`bash: getopts: usage: getopts optstring name [arg ...]
268
+ `);let n=t[0],r=t[1],s=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r),i=n.startsWith(":"),o=i?n.slice(1):n,a;if(t.length>2)a=t.slice(2);else{let m=Number.parseInt(e.state.env.get("#")||"0",10);a=[];for(let E=1;E<=m;E++)a.push(e.state.env.get(String(E))||"")}let l=Number.parseInt(e.state.env.get("OPTIND")||"1",10);l<1&&(l=1);let c=Number.parseInt(e.state.env.get("__GETOPTS_CHARINDEX")||"0",10);if(e.state.env.set("OPTARG",""),l>a.length)return s||e.state.env.set(r,"?"),e.state.env.set("OPTIND",String(a.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:s?2:1,stdout:"",stderr:""};let u=a[l-1];if(!u||u==="-"||!u.startsWith("-"))return s||e.state.env.set(r,"?"),{exitCode:s?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),s||e.state.env.set(r,"?"),{exitCode:s?2:1,stdout:"",stderr:""};let f=c===0?1:c,d=u[f];if(!d)return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),li(e,t);let h=o.indexOf(d);if(h===-1){let m="";return i?e.state.env.set("OPTARG",d):m=`bash: illegal option -- ${d}
253
269
  `,s||e.state.env.set(r,"?"),f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0")),{exitCode:s?2:0,stdout:"",stderr:m}}if(h+1<o.length&&o[h+1]===":")if(f+1<u.length)e.state.env.set("OPTARG",u.slice(f+1)),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0");else{if(l>=a.length){let m="";return i?(e.state.env.set("OPTARG",d),s||e.state.env.set(r,":")):(m=`bash: option requires an argument -- ${d}
254
- `,s||e.state.env.set(r,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:s?2:0,stdout:"",stderr:m}}e.state.env.set("OPTARG",a[l]),e.state.env.set("OPTIND",String(l+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"));return s||e.state.env.set(r,d),{exitCode:s?2:0,stdout:"",stderr:""}}async function ca(e,t){e.state.hashTable||(e.state.hashTable=new Map);let n=!1,r=!1,s=!1,i=!1,o=!1,a="",l=[],c=0;for(;c<t.length;){let p=t[c];if(p==="--"){c++,l.push(...t.slice(c));break}if(p==="-r")n=!0,c++;else if(p==="-d")r=!0,c++;else if(p==="-l")s=!0,c++;else if(p==="-t")o=!0,c++;else if(p==="-p"){if(i=!0,c++,c>=t.length)return T(`bash: hash: -p: option requires an argument
255
- `,1);a=t[c],c++}else if(p.startsWith("-")&&p.length>1){for(let m of p.slice(1))if(m==="r")n=!0;else if(m==="d")r=!0;else if(m==="l")s=!0;else if(m==="t")o=!0;else return m==="p"?T(`bash: hash: -p: option requires an argument
256
- `,1):T(`bash: hash: -${m}: invalid option
257
- `,1);c++}else l.push(p),c++}if(n)return e.state.hashTable.clear(),re;if(r){if(l.length===0)return T(`bash: hash: -d: option requires an argument
270
+ `,s||e.state.env.set(r,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:s?2:0,stdout:"",stderr:m}}e.state.env.set("OPTARG",a[l]),e.state.env.set("OPTIND",String(l+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"));return s||e.state.env.set(r,d),{exitCode:s?2:0,stdout:"",stderr:""}}async function ga(e,t){e.state.hashTable||(e.state.hashTable=new Map);let n=!1,r=!1,s=!1,i=!1,o=!1,a="",l=[],c=0;for(;c<t.length;){let p=t[c];if(p==="--"){c++,l.push(...t.slice(c));break}if(p==="-r")n=!0,c++;else if(p==="-d")r=!0,c++;else if(p==="-l")s=!0,c++;else if(p==="-t")o=!0,c++;else if(p==="-p"){if(i=!0,c++,c>=t.length)return _(`bash: hash: -p: option requires an argument
271
+ `,1);a=t[c],c++}else if(p.startsWith("-")&&p.length>1){for(let m of p.slice(1))if(m==="r")n=!0;else if(m==="d")r=!0;else if(m==="l")s=!0;else if(m==="t")o=!0;else return m==="p"?_(`bash: hash: -p: option requires an argument
272
+ `,1):_(`bash: hash: -${m}: invalid option
273
+ `,1);c++}else l.push(p),c++}if(n)return e.state.hashTable.clear(),se;if(r){if(l.length===0)return _(`bash: hash: -d: option requires an argument
258
274
  `,1);let p=!1,m="";for(let E of l)e.state.hashTable.has(E)?e.state.hashTable.delete(E):(m+=`bash: hash: ${E}: not found
259
- `,p=!0);return p?T(m,1):re}if(o){if(l.length===0)return T(`bash: hash: -t: option requires an argument
260
- `,1);let p="",m=!1,E="";for(let b of l){let g=e.state.hashTable.get(b);g?l.length>1?p+=`${b} ${g}
275
+ `,p=!0);return p?_(m,1):se}if(o){if(l.length===0)return _(`bash: hash: -t: option requires an argument
276
+ `,1);let p="",m=!1,E="";for(let S of l){let g=e.state.hashTable.get(S);g?l.length>1?p+=`${S} ${g}
261
277
  `:p+=`${g}
262
- `:(E+=`bash: hash: ${b}: not found
263
- `,m=!0)}return m?{exitCode:1,stdout:p,stderr:E}:te(p)}if(i){if(l.length===0)return T(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
264
- `,1);let p=l[0];return e.state.hashTable.set(p,a),re}if(l.length===0){if(e.state.hashTable.size===0)return te(`hash: hash table empty
265
- `);let p="";if(s)for(let[m,E]of e.state.hashTable){let b=m.startsWith("-")?" --":"";p+=`builtin hash -p ${Ae(E)}${b} ${Ae(m)}
278
+ `:(E+=`bash: hash: ${S}: not found
279
+ `,m=!0)}return m?{exitCode:1,stdout:p,stderr:E}:ne(p)}if(i){if(l.length===0)return _(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
280
+ `,1);let p=l[0];return e.state.hashTable.set(p,a),se}if(l.length===0){if(e.state.hashTable.size===0)return ne(`hash: hash table empty
281
+ `);let p="";if(s)for(let[m,E]of e.state.hashTable){let S=m.startsWith("-")?" --":"";p+=`builtin hash -p ${ve(E)}${S} ${ve(m)}
266
282
  `}else{p=`hits command
267
283
  `;for(let[,m]of e.state.hashTable)p+=` 1 ${m}
268
- `}return te(p)}let u=!1,f="",h=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let p of l){if(p.includes("/")){f+=`bash: hash: ${p}: cannot use / in name
269
- `,u=!0;continue}let m=!1;for(let E of h){if(!E)continue;let b=`${E}/${p}`;if(await e.fs.exists(b)){e.state.hashTable.set(p,b),m=!0;break}}m||(f+=`bash: hash: ${p}: not found
270
- `,u=!0)}return u?T(f,1):re}var gf=new Map([[":",[": [arguments]",`Null command.
284
+ `}return ne(p)}let u=!1,f="",h=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let p of l){if(p.includes("/")){f+=`bash: hash: ${p}: cannot use / in name
285
+ `,u=!0;continue}let m=!1;for(let E of h){if(!E)continue;let S=`${E}/${p}`;if(await e.fs.exists(S)){e.state.hashTable.set(p,S),m=!0;break}}m||(f+=`bash: hash: ${p}: not found
286
+ `,u=!0)}return u?_(f,1):se}var $f=new Map([[":",[": [arguments]",`Null command.
271
287
  No effect; the command does nothing.
272
288
  Exit Status:
273
289
  Always succeeds.`]],[".",[". filename [arguments]",`Execute commands from a file in the current shell.
@@ -331,7 +347,12 @@ eval: usage: eval [arg ...]
331
347
  -V print a more verbose description of each COMMAND
332
348
 
333
349
  Exit Status:
334
- Returns exit status of COMMAND, or failure if COMMAND is not found.`]],["compgen",["compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]",`Display possible completions depending on the options.
350
+ Returns exit status of COMMAND, or failure if COMMAND is not found.`]],["compopt",["compopt [-o option] [-DE] [name ...]",`Modify completion options for each NAME.
351
+ Intended to be used from within a shell function generating possible
352
+ completions. just-bash accepts and validates the options; completion
353
+ behavior is not interactive.
354
+ Exit Status:
355
+ Returns success unless an invalid option is supplied.`]],["compgen",["compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]",`Display possible completions depending on the options.
335
356
  Intended to be used from within a shell function generating possible
336
357
  completions. If the optional WORD argument is supplied, matches against
337
358
  WORD are generated.
@@ -612,37 +633,37 @@ eval: usage: eval [arg ...]
612
633
  job specification, and reports its termination status.
613
634
  Exit Status:
614
635
  Returns the status of the last ID; fails if ID is invalid or an invalid
615
- option is given.`]]]),wf=[...gf.keys()].sort();function ua(e,t){let n=!1,r=[],s=0;for(;s<t.length;){let l=t[s];if(l==="--"){for(s++;s<t.length;)r.push(t[s]),s++;break}if(l.startsWith("-")&&l.length>1){for(let c=1;c<l.length;c++){let u=l[c];if(u==="s")n=!0;else return T(`bash: help: -${u}: invalid option
616
- `,2)}s++}else r.push(l),s++}if(r.length===0)return xm();let i="",o=!1,a="";for(let l of r){let c=Pm(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
617
- `,o=!0;continue}for(let u of c){let f=gf.get(u);if(!f)continue;let[d,h]=f;n?i+=`${u}: ${d}
636
+ option is given.`]]]),Cf=[...$f.keys()].sort();function wa(e,t){let n=!1,r=[],s=0;for(;s<t.length;){let l=t[s];if(l==="--"){for(s++;s<t.length;)r.push(t[s]),s++;break}if(l.startsWith("-")&&l.length>1){for(let c=1;c<l.length;c++){let u=l[c];if(u==="s")n=!0;else return _(`bash: help: -${u}: invalid option
637
+ `,2)}s++}else r.push(l),s++}if(r.length===0)return zm();let i="",o=!1,a="";for(let l of r){let c=Vm(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
638
+ `,o=!0;continue}for(let u of c){let f=$f.get(u);if(!f)continue;let[d,h]=f;n?i+=`${u}: ${d}
618
639
  `:i+=`${u}: ${d}
619
640
  ${h}
620
- `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function Pm(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),n=ye(`^${t}$`);return wf.filter(r=>n.test(r))}function xm(){let e=[];e.push("just-bash shell builtins"),e.push("These shell commands are defined internally. Type `help' to see this list."),e.push("Type `help name' to find out more about the function `name'."),e.push("");let t=36,n=wf.slice(),r=Math.ceil(n.length/2);for(let s=0;s<r;s++){let i=n[s]||"",o=n[s+r]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return te(`${e.join(`
641
+ `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function Vm(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),n=ge(`^${t}$`);return Cf.filter(r=>n.test(r))}function zm(){let e=[];e.push("just-bash shell builtins"),e.push("These shell commands are defined internally. Type `help' to see this list."),e.push("Type `help name' to find out more about the function `name'."),e.push("");let t=36,n=Cf.slice(),r=Math.ceil(n.length/2);for(let s=0;s<r;s++){let i=n[s]||"",o=n[s+r]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return ne(`${e.join(`
621
642
  `)}
622
- `)}function $m(e){let t=[],n="",r=0;for(let s of e){for(let i of s)i==="("?r++:i===")"&&r--;n?n+=` ${s}`:n=s,r===0&&(t.push(n),n="")}return n&&t.push(n),t}async function fa(e,t){if(t.length===0)return T(`bash: let: expression expected
623
- `);let n=$m(t),r=0;for(let s of n)try{let o=je(`(( ${s} ))`).statements[0];if(o&&o.pipelines.length>0&&o.pipelines[0].commands.length>0){let a=o.pipelines[0].commands[0];a.type==="ArithmeticCommand"&&(r=await J(e,a.expression.expression))}}catch(i){return T(`bash: let: ${s}: ${i.message}
624
- `)}return L("","",r===0?1:0)}async function da(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength};if(e.state.localScopes.length===0)return T(`bash: local: can only be used in a function
625
- `);let r=e.state.localScopes[e.state.localScopes.length-1];for(e.state.localArrayScopes??=[];e.state.localArrayScopes.length<e.state.localScopes.length;)e.state.localArrayScopes.push(new Map);let s=e.state.localArrayScopes.at(-1),i=d=>{if(r.has(d)||r.set(d,e.state.env.get(d)),s&&!s.has(d)){let h=Pe(e,d);s.set(d,h?Ue(h):void 0)}},o="",a=0,l=!1,c=!1,u=!1,f=[];for(let d of t)if(d==="-n")l=!0;else if(d==="-a")c=!0;else if(d==="-p")u=!0;else if(d.startsWith("-")&&!d.includes("="))for(let h of d.slice(1))h==="n"?l=!0:h==="a"?c=!0:h==="p"&&(u=!0);else f.push(d);if(f.length===0){let d="",h=Array.from(r.keys()).sort();for(let p of h){let m=e.state.env.get(p);m!==void 0&&(d+=`${p}=${m}
626
- `)}return L(d,"",0)}for(let d of f){let h,p,m=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(m){h=m[1];let S=m[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(h)){o+=`bash: local: \`${d}': not a valid identifier
627
- `,a=1;continue}fe(e,h,"bash");let A=Zt(S,n);e.executionScope.consumeWork(A.length,"local array assignment"),i(h),Ee(e,h),sn(e,h,"indexed");for(let k=0;k<A.length;k++)G(e,h,k,A[k]);gn(e,h),l&&Ht(e,h);continue}let E=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(E){h=E[1];let S=E[2];fe(e,h,"bash"),i(h);let A=Zt(S,n);e.executionScope.consumeWork(A.length,"local array append");let k=ve(e,h),v=0,x=e.state.env.get(h);k.length===0&&x!==void 0?(G(e,h,0,x),e.state.env.delete(h),v=1):k.length>0&&(v=Math.max(...k)+1),Cn(e,h,Array.from({length:A.length},(R,P)=>v+P));for(let R=0;R<A.length;R++)G(e,h,v+R,A[R]);gn(e,h),l&&Ht(e,h);continue}let b=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(b){h=b[1];let S=b[2];fe(e,h,"bash"),r.has(h)||r.set(h,e.state.env.get(h));let A=e.state.env.get(h)??"";e.state.env.set(h,en([A,S],"",e.limits.maxStringLength,"local append")),gn(e,h),l&&Ht(e,h);continue}let g=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(g){h=g[1];let S=g[2],A=g[3];fe(e,h,"bash"),i(h);let k;try{let v=new Z,x=ie(v,S);k=await J(e,x.expression)}catch{let v=parseInt(S,10);k=Number.isNaN(v)?0:v}G(e,h,k,A),gn(e,h),l&&Ht(e,h);continue}if(d.includes("=")){let S=d.indexOf("=");h=d.slice(0,S),p=d.slice(S+1)}else h=d;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(h)){o+=`bash: local: \`${d}': not a valid identifier
628
- `,a=1;continue}let y=r.has(h);if(p!==void 0){let S=e.state.env.get(h);if(e.state.tempEnvBindings){let A=e.state.accessedTempEnvVars?.has(h),k=e.state.mutatedTempEnvVars?.has(h);if(!A&&!k)for(let v=e.state.tempEnvBindings.length-1;v>=0;v--){let x=e.state.tempEnvBindings[v];if(x.has(h)){S=x.get(h);break}}}Hu(e,h,S)}if(!y){let S=e.state.env.get(h);if(e.state.tempEnvBindings)for(let A=e.state.tempEnvBindings.length-1;A>=0;A--){let k=e.state.tempEnvBindings[A];if(k.has(h)){S=k.get(h);break}}r.set(h,S),c&&i(h)}if(c&&p===void 0)Ee(e,h),sn(e,h,"indexed");else if(p!==void 0){if(fe(e,h,"bash"),l&&p!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(p)){o+=`bash: local: \`${p}': invalid variable name for name reference
629
- `,a=1;continue}e.state.env.set(h,p),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(h))}else{let S=e.state.tempEnvBindings?.some(A=>A.has(h));!y&&!S&&e.state.env.delete(h)}gn(e,h),l&&Ht(e,h)}return L("",o,a)}function ha(e,t,n){let r=`
643
+ `)}function Um(e){let t=[],n="",r=0;for(let s of e){for(let i of s)i==="("?r++:i===")"&&r--;n?n+=` ${s}`:n=s,r===0&&(t.push(n),n="")}return n&&t.push(n),t}async function Ea(e,t){if(t.length===0)return _(`bash: let: expression expected
644
+ `);let n=Um(t),r=0;for(let s of n)try{let o=qe(`(( ${s} ))`).statements[0];if(o&&o.pipelines.length>0&&o.pipelines[0].commands.length>0){let a=o.pipelines[0].commands[0];a.type==="ArithmeticCommand"&&(r=await ee(e,a.expression.expression))}}catch(i){return _(`bash: let: ${s}: ${i.message}
645
+ `)}return F("","",r===0?1:0)}async function ba(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength};if(e.state.localScopes.length===0)return _(`bash: local: can only be used in a function
646
+ `);let r=e.state.localScopes[e.state.localScopes.length-1];for(e.state.localArrayScopes??=[];e.state.localArrayScopes.length<e.state.localScopes.length;)e.state.localArrayScopes.push(new Map);let s=e.state.localArrayScopes.at(-1),i=d=>{if(r.has(d)||r.set(d,e.state.env.get(d)),s&&!s.has(d)){let h=$e(e,d);s.set(d,h?je(h):void 0)}},o="",a=0,l=!1,c=!1,u=!1,f=[];for(let d of t)if(d==="-n")l=!0;else if(d==="-a")c=!0;else if(d==="-p")u=!0;else if(d.startsWith("-")&&!d.includes("="))for(let h of d.slice(1))h==="n"?l=!0:h==="a"?c=!0:h==="p"&&(u=!0);else f.push(d);if(f.length===0){let d="",h=Array.from(r.keys()).sort();for(let p of h){let m=e.state.env.get(p);m!==void 0&&(d+=`${p}=${m}
647
+ `)}return F(d,"",0)}for(let d of f){let h,p,m=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(m){h=m[1];let b=m[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(h)){o+=`bash: local: \`${d}': not a valid identifier
648
+ `,a=1;continue}de(e,h,"bash");let A=Kt(b,n);e.executionScope.consumeWork(A.length,"local array assignment"),i(h),be(e,h),ln(e,h,"indexed");for(let k=0;k<A.length;k++)H(e,h,k,A[k]);En(e,h),l&&Qt(e,h);continue}let E=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(E){h=E[1];let b=E[2];de(e,h,"bash"),i(h);let A=Kt(b,n);e.executionScope.consumeWork(A.length,"local array append");let k=xe(e,h),v=0,$=e.state.env.get(h);k.length===0&&$!==void 0?(H(e,h,0,$),e.state.env.delete(h),v=1):k.length>0&&(v=Math.max(...k)+1),On(e,h,Array.from({length:A.length},(O,P)=>v+P));for(let O=0;O<A.length;O++)H(e,h,v+O,A[O]);En(e,h),l&&Qt(e,h);continue}let S=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(S){h=S[1];let b=S[2];de(e,h,"bash"),r.has(h)||r.set(h,e.state.env.get(h));let A=e.state.env.get(h)??"";e.state.env.set(h,nn([A,b],"",e.limits.maxStringLength,"local append")),En(e,h),l&&Qt(e,h);continue}let g=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(g){h=g[1];let b=g[2],A=g[3];de(e,h,"bash"),i(h);let k;try{let v=new Q,$=oe(v,b);k=await ee(e,$.expression)}catch{let v=parseInt(b,10);k=Number.isNaN(v)?0:v}H(e,h,k,A),En(e,h),l&&Qt(e,h);continue}if(d.includes("=")){let b=d.indexOf("=");h=d.slice(0,b),p=d.slice(b+1)}else h=d;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(h)){o+=`bash: local: \`${d}': not a valid identifier
649
+ `,a=1;continue}let y=r.has(h);if(p!==void 0){let b=e.state.env.get(h);if(e.state.tempEnvBindings){let A=e.state.accessedTempEnvVars?.has(h),k=e.state.mutatedTempEnvVars?.has(h);if(!A&&!k)for(let v=e.state.tempEnvBindings.length-1;v>=0;v--){let $=e.state.tempEnvBindings[v];if($.has(h)){b=$.get(h);break}}}ef(e,h,b)}if(!y){let b=e.state.env.get(h);if(e.state.tempEnvBindings)for(let A=e.state.tempEnvBindings.length-1;A>=0;A--){let k=e.state.tempEnvBindings[A];if(k.has(h)){b=k.get(h);break}}r.set(h,b),c&&i(h)}if(c&&p===void 0)be(e,h),ln(e,h,"indexed");else if(p!==void 0){if(de(e,h,"bash"),l&&p!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(p)){o+=`bash: local: \`${p}': invalid variable name for name reference
650
+ `,a=1;continue}e.state.env.set(h,p),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(h))}else{let b=e.state.tempEnvBindings?.some(A=>A.has(h));!y&&!b&&e.state.env.delete(h)}En(e,h),l&&Qt(e,h)}return F("",o,a)}function ci(e,t,n){let r=`
630
651
  `,s=0,i=0,o=0,a=!1,l="MAPFILE",c=0;for(;c<t.length;){let g=t[c];g==="-d"&&c+1<t.length?(r=t[c+1]===""?"\0":t[c+1]||`
631
- `,c+=2):g==="-n"&&c+1<t.length?(s=Number.parseInt(t[c+1],10)||0,c+=2):g==="-O"&&c+1<t.length?(i=Number.parseInt(t[c+1],10)||0,c+=2):g==="-s"&&c+1<t.length?(o=Number.parseInt(t[c+1],10)||0,c+=2):g==="-t"?(a=!0,c++):g==="-u"||g==="-C"||g==="-c"?c+=2:(g.startsWith("-")||(l=g),c++)}if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(l))return L("",`mapfile: ${l}: not a valid identifier
632
- `,1);if(!Number.isSafeInteger(i)||i<0)return L("",`mapfile: invalid array origin
633
- `,1);fe(e,l,"mapfile");let u=n;!u&&e.state.groupStdin!==void 0&&(u=e.state.groupStdin);let f=[],d=0,h=0,p=0,m=e.limits.maxArrayElements,E=g=>{if(B(g)>e.limits.maxStringLength)throw new $(`mapfile: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");f.push(g)};for(;d<u.length;){e.executionScope.consumeWork(1,"mapfile input");let g=u.indexOf(r,d);if(g===-1){if(d<u.length){if(p<o)p++;else if(s===0||h<s){let A=u.slice(d),k=A.indexOf("\0");if(k!==-1&&(A=A.substring(0,k)),f.length>=m)return L("",`mapfile: array element limit exceeded (${m})
634
- `,1);E(A),h++}}break}let y=u.slice(d,g),S=y.indexOf("\0");if(S!==-1&&(y=y.substring(0,S)),!a&&r!=="\0"&&(y+=r),d=g+r.length,p<o){p++;continue}if(s>0&&h>=s)break;if(f.length>=m)return L("",`mapfile: array element limit exceeded (${m})
635
- `,1);E(y),h++}let b=new Set(i===0?[]:e.state.arrays?.get(l)?.elements.keys()??[]);for(let g=0;g<f.length;g++)if(b.add(String(i+g)),b.size>m)return L("",`mapfile: array element limit exceeded (${m})
636
- `,1);i===0&&Ee(e,l);for(let g=0;g<f.length;g++)G(e,l,i+g,f[g]);return e.state.groupStdin!==void 0&&!n&&(e.state.groupStdin=""),{...L("","",0),internalStdinConsumed:u.length}}function pa(e,t,n,r=-1){let s=!1,i=`
637
- `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],h=0,p=!1,m=(D,I)=>{let M=1;for(;M<D.length;){let se=D[M];if(se==="r")s=!0,M++;else if(se==="s")M++;else{if(se==="d")return M+1<D.length?(i=D.substring(M+1),{nextArgIndex:I+1}):I+1<t.length?(i=t[I+1],{nextArgIndex:I+2}):{nextArgIndex:I+1};if(se==="n"){if(M+1<D.length){let Y=D.substring(M+1);return a=Number.parseInt(Y,10),(Number.isNaN(a)||a<0)&&(p=!0,a=0),{nextArgIndex:I+1}}else if(I+1<t.length)return a=Number.parseInt(t[I+1],10),(Number.isNaN(a)||a<0)&&(p=!0,a=0),{nextArgIndex:I+2};return{nextArgIndex:I+1}}else if(se==="N"){if(M+1<D.length){let Y=D.substring(M+1);return l=Number.parseInt(Y,10),(Number.isNaN(l)||l<0)&&(p=!0,l=0),{nextArgIndex:I+1}}else if(I+1<t.length)return l=Number.parseInt(t[I+1],10),(Number.isNaN(l)||l<0)&&(p=!0,l=0),{nextArgIndex:I+2};return{nextArgIndex:I+1}}else{if(se==="a")return M+1<D.length?(c=D.substring(M+1),{nextArgIndex:I+1}):I+1<t.length?(c=t[I+1],{nextArgIndex:I+2}):{nextArgIndex:I+1};if(se==="p")return M+1<D.length?(o=D.substring(M+1),{nextArgIndex:I+1}):I+1<t.length?(o=t[I+1],{nextArgIndex:I+2}):{nextArgIndex:I+1};if(se==="u"){if(M+1<D.length){let Y=D.substring(M+1);return u=Number.parseInt(Y,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:I+1}}else if(I+1<t.length)return u=Number.parseInt(t[I+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:I+2};return{nextArgIndex:I+1}}else if(se==="t"){if(M+1<D.length){let Y=D.substring(M+1);return f=Number.parseFloat(Y),Number.isNaN(f)&&(f=0),{nextArgIndex:I+1}}else if(I+1<t.length)return f=Number.parseFloat(t[I+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:I+2};return{nextArgIndex:I+1}}else if(se==="e"||se==="i"||se==="P"){if(se==="i"&&I+1<t.length)return{nextArgIndex:I+2};M++}else M++}}}return{nextArgIndex:I+1}};for(;h<t.length;){let D=t[h];if(D.startsWith("-")&&D.length>1&&D!=="--"){let I=m(D,h);if(I.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(I.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=I.nextArgIndex}else if(D==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(D),h++}if(p)return L("","",1);d.length===0&&c===null&&d.push("REPLY");let E=new Set;c&&E.add(c);for(let D of d)E.add(D);l>=0&&d.length===0&&E.add("REPLY");for(let D of E){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(D))return L("",`bash: read: \`${D}': not a valid identifier
638
- `,1);fe(e,D,"bash")}if(f===0){if(c)Ee(e,c);else{for(let D of d)e.state.env.set(D,"");d.length===0&&e.state.env.set("REPLY","")}return L("","",0)}if(f<0&&f!==-1)return L("","",1);let b=n,g=at(e,u),y=u>0&&!(g?.kind==="dup-in"&&g.sourceFd===0);if(y){let D=Zs(e,u);if("error"in D){let M=D.error==="write-only"||u===1||u===2?`bash: read: read error: ${u}: Bad file descriptor
652
+ `,c+=2):g==="-n"&&c+1<t.length?(s=Number.parseInt(t[c+1],10)||0,c+=2):g==="-O"&&c+1<t.length?(i=Number.parseInt(t[c+1],10)||0,c+=2):g==="-s"&&c+1<t.length?(o=Number.parseInt(t[c+1],10)||0,c+=2):g==="-t"?(a=!0,c++):g==="-u"||g==="-C"||g==="-c"?c+=2:(g.startsWith("-")||(l=g),c++)}if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(l))return F("",`mapfile: ${l}: not a valid identifier
653
+ `,1);if(!Number.isSafeInteger(i)||i<0)return F("",`mapfile: invalid array origin
654
+ `,1);de(e,l,"mapfile");let u=n;!u&&e.state.groupStdin!==void 0&&(u=e.state.groupStdin);let f=[],d=0,h=0,p=0,m=e.limits.maxArrayElements,E=g=>{if(W(g)>e.limits.maxStringLength)throw new C(`mapfile: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");f.push(g)};for(;d<u.length;){e.executionScope.consumeWork(1,"mapfile input");let g=u.indexOf(r,d);if(g===-1){if(d<u.length){if(p<o)p++;else if(s===0||h<s){let A=u.slice(d),k=A.indexOf("\0");if(k!==-1&&(A=A.substring(0,k)),f.length>=m)return F("",`mapfile: array element limit exceeded (${m})
655
+ `,1);E(A),h++}}break}let y=u.slice(d,g),b=y.indexOf("\0");if(b!==-1&&(y=y.substring(0,b)),!a&&r!=="\0"&&(y+=r),d=g+r.length,p<o){p++;continue}if(s>0&&h>=s)break;if(f.length>=m)return F("",`mapfile: array element limit exceeded (${m})
656
+ `,1);E(y),h++}let S=new Set(i===0?[]:e.state.arrays?.get(l)?.elements.keys()??[]);for(let g=0;g<f.length;g++)if(S.add(String(i+g)),S.size>m)return F("",`mapfile: array element limit exceeded (${m})
657
+ `,1);i===0&&be(e,l);for(let g=0;g<f.length;g++)H(e,l,i+g,f[g]);return e.state.groupStdin!==void 0&&!n&&(e.state.groupStdin=""),{...F("","",0),internalStdinConsumed:u.length}}function Sa(e,t,n,r=-1){let s=!1,i=`
658
+ `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],h=0,p=!1,m=(I,T)=>{let B=1;for(;B<I.length;){let ie=I[B];if(ie==="r")s=!0,B++;else if(ie==="s")B++;else{if(ie==="d")return B+1<I.length?(i=I.substring(B+1),{nextArgIndex:T+1}):T+1<t.length?(i=t[T+1],{nextArgIndex:T+2}):{nextArgIndex:T+1};if(ie==="n"){if(B+1<I.length){let J=I.substring(B+1);return a=Number.parseInt(J,10),(Number.isNaN(a)||a<0)&&(p=!0,a=0),{nextArgIndex:T+1}}else if(T+1<t.length)return a=Number.parseInt(t[T+1],10),(Number.isNaN(a)||a<0)&&(p=!0,a=0),{nextArgIndex:T+2};return{nextArgIndex:T+1}}else if(ie==="N"){if(B+1<I.length){let J=I.substring(B+1);return l=Number.parseInt(J,10),(Number.isNaN(l)||l<0)&&(p=!0,l=0),{nextArgIndex:T+1}}else if(T+1<t.length)return l=Number.parseInt(t[T+1],10),(Number.isNaN(l)||l<0)&&(p=!0,l=0),{nextArgIndex:T+2};return{nextArgIndex:T+1}}else{if(ie==="a")return B+1<I.length?(c=I.substring(B+1),{nextArgIndex:T+1}):T+1<t.length?(c=t[T+1],{nextArgIndex:T+2}):{nextArgIndex:T+1};if(ie==="p")return B+1<I.length?(o=I.substring(B+1),{nextArgIndex:T+1}):T+1<t.length?(o=t[T+1],{nextArgIndex:T+2}):{nextArgIndex:T+1};if(ie==="u"){if(B+1<I.length){let J=I.substring(B+1);return u=Number.parseInt(J,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:T+1}}else if(T+1<t.length)return u=Number.parseInt(t[T+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:T+2};return{nextArgIndex:T+1}}else if(ie==="t"){if(B+1<I.length){let J=I.substring(B+1);return f=Number.parseFloat(J),Number.isNaN(f)&&(f=0),{nextArgIndex:T+1}}else if(T+1<t.length)return f=Number.parseFloat(t[T+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:T+2};return{nextArgIndex:T+1}}else if(ie==="e"||ie==="i"||ie==="P"){if(ie==="i"&&T+1<t.length)return{nextArgIndex:T+2};B++}else B++}}}return{nextArgIndex:T+1}};for(;h<t.length;){let I=t[h];if(I.startsWith("-")&&I.length>1&&I!=="--"){let T=m(I,h);if(T.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(T.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=T.nextArgIndex}else if(I==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(I),h++}if(p)return F("","",1);d.length===0&&c===null&&d.push("REPLY");let E=new Set;c&&E.add(c);for(let I of d)E.add(I);l>=0&&d.length===0&&E.add("REPLY");for(let I of E){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(I))return F("",`bash: read: \`${I}': not a valid identifier
659
+ `,1);de(e,I,"bash")}if(f===0){if(c)be(e,c);else{for(let I of d)e.state.env.set(I,"");d.length===0&&e.state.env.set("REPLY","")}return F("","",0)}if(f<0&&f!==-1)return F("","",1);let S=n,g=lt(e,u),y=u>0&&!(g?.kind==="dup-in"&&g.sourceFd===0);if(y){let I=ei(e,u);if("error"in I){let B=I.error==="write-only"||u===1||u===2?`bash: read: read error: ${u}: Bad file descriptor
639
660
  `:`bash: read: ${u}: invalid file descriptor: Bad file descriptor
640
- `;return L("",M,1)}b=D.content}else!b&&e.state.groupStdin!==void 0&&(b=e.state.groupStdin);let S=i===""?"\0":i,A="",k=0,v=D=>{let I=B(D);if(I>e.limits.maxStringLength-k)throw new $(`read: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");A+=D,k+=I},x=D=>{if(B(D)>e.limits.maxStringLength)throw new $(`read: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length")},R=0,P=!0,C=D=>{y?En(e,u,D):r>=0?En(e,r,D):e.state.groupStdin!==void 0&&!n&&(e.state.groupStdin=b.substring(D),e.state.groupStdinSourceFd!==void 0&&En(e,e.state.groupStdinSourceFd,D))};if(l>=0){let D=Math.min(l,b.length);A=b.substring(0,D),x(A),R=D,P=D>=l,C(R);let I=d[0]||"REPLY";e.state.env.set(I,A);for(let M=1;M<d.length;M++)e.state.env.set(d[M],"");return L("","",P?0:1)}else if(a>=0){let D=0,I=0,M=!1;for(;I<b.length&&D<a;){let se=b[I];if(se===S){R=I+1,M=!0;break}if(!s&&se==="\\"&&I+1<b.length){let Y=b[I+1];if(Y===S&&S===`
641
- `){I+=2,R=I;continue}if(Y===S){I+=2,D++,v(Y),R=I;continue}v(Y),I+=2,D++,R=I}else v(se),I++,D++,R=I}P=D>=a||M,C(R)}else{R=0;let D=0;for(;D<b.length;){let I=b[D];if(I===S){R=D+S.length,P=!0;break}if(!s&&I==="\\"&&D+1<b.length){let M=b[D+1];if(M===`
642
- `){D+=2;continue}if(M===S){v(M),D+=2;continue}v(I),v(M),D+=2;continue}v(I),D++}if(D>=b.length&&(P=!1,R=D,A.length===0&&b.length===0)){for(let I of d)e.state.env.set(I,"");return c&&Ee(e,c),L("","",1)}C(R)}S===`
661
+ `;return F("",B,1)}S=I.content}else!S&&e.state.groupStdin!==void 0&&(S=e.state.groupStdin);let b=i===""?"\0":i,A="",k=0,v=I=>{let T=W(I);if(T>e.limits.maxStringLength-k)throw new C(`read: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");A+=I,k+=T},$=I=>{if(W(I)>e.limits.maxStringLength)throw new C(`read: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length")},O=0,P=!0,N=I=>{y?Sn(e,u,I):r>=0?Sn(e,r,I):e.state.groupStdin!==void 0&&!n&&(e.state.groupStdin=S.substring(I),e.state.groupStdinSourceFd!==void 0&&Sn(e,e.state.groupStdinSourceFd,I))};if(l>=0){let I=Math.min(l,S.length);A=S.substring(0,I),$(A),O=I,P=I>=l,N(O);let T=d[0]||"REPLY";e.state.env.set(T,A);for(let B=1;B<d.length;B++)e.state.env.set(d[B],"");return F("","",P?0:1)}else if(a>=0){let I=0,T=0,B=!1;for(;T<S.length&&I<a;){let ie=S[T];if(ie===b){O=T+1,B=!0;break}if(!s&&ie==="\\"&&T+1<S.length){let J=S[T+1];if(J===b&&b===`
662
+ `){T+=2,O=T;continue}if(J===b){T+=2,I++,v(J),O=T;continue}v(J),T+=2,I++,O=T}else v(ie),T++,I++,O=T}P=I>=a||B,N(O)}else{O=0;let I=0;for(;I<S.length;){let T=S[I];if(T===b){O=I+b.length,P=!0;break}if(!s&&T==="\\"&&I+1<S.length){let B=S[I+1];if(B===`
663
+ `){I+=2;continue}if(B===b){v(B),I+=2;continue}v(T),v(B),I+=2;continue}v(T),I++}if(I>=S.length&&(P=!1,O=I,A.length===0&&S.length===0)){for(let T of d)e.state.env.set(T,"");return c&&be(e,c),F("","",1)}N(O)}b===`
643
664
  `&&A.endsWith(`
644
- `)&&(A=A.slice(0,-1));let O=D=>s?D:D.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",O(A)),L("","",P?0:1);let W=ke(e.state.env),K=e.limits.maxArrayElements;if(c){let{words:D}=io(A,W,K,void 0,s);Ee(e,c);for(let I=0;I<D.length;I++)G(e,c,I,O(D[I]));return L("","",P?0:1)}let N=d.length,{words:U,wordStarts:j}=io(A,W,K,N,s);for(let D=0;D<d.length;D++){let I=d[D];if(D<d.length-1)e.state.env.set(I,O(U[D]??""));else if(D<j.length){let M=A.substring(j[D]);M=dc(M,W,s),M=O(M),e.state.env.set(I,M)}else e.state.env.set(I,"")}return L("","",P?0:1)}function ma(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return T("bash: return: can only `return' from a function or sourced script\n");let n=e.state.lastExitCode;if(t.length>0){let r=t[0],s=Number.parseInt(r,10);if(r===""||Number.isNaN(s)||!/^-?\d+$/.test(r))return T(`bash: return: ${r}: numeric argument required
645
- `,2);n=(s%256+256)%256}throw new Me(n)}var Ir=`set: usage: set [-eux] [+eux] [-o option] [+o option]
665
+ `)&&(A=A.slice(0,-1));let D=I=>s?I:I.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",D(A)),F("","",P?0:1);let V=Pe(e.state.env),X=e.limits.maxArrayElements;if(c){let{words:I}=po(A,V,X,void 0,s);be(e,c);for(let T=0;T<I.length;T++)H(e,c,T,D(I[T]));return F("","",P?0:1)}let R=d.length,{words:j,wordStarts:q}=po(A,V,X,R,s);for(let I=0;I<d.length;I++){let T=d[I];if(I<d.length-1)e.state.env.set(T,D(j[I]??""));else if(I<q.length){let B=A.substring(q[I]);B=Ec(B,V,s),B=D(B),e.state.env.set(T,B)}else e.state.env.set(T,"")}return F("","",P?0:1)}function Aa(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return _("bash: return: can only `return' from a function or sourced script\n");let n=e.state.lastExitCode;if(t.length>0){let r=t[0],s=Number.parseInt(r,10);if(r===""||Number.isNaN(s)||!/^-?\d+$/.test(r))return _(`bash: return: ${r}: numeric argument required
666
+ `,2);n=(s%256+256)%256}throw new Be(n)}var Mr=`set: usage: set [-eux] [+eux] [-o option] [+o option]
646
667
  Options:
647
668
  -e Exit immediately if a command exits with non-zero status
648
669
  +e Disable -e
@@ -658,78 +679,62 @@ Options:
658
679
  +o pipefail Disable pipefail
659
680
  -o xtrace Same as -x
660
681
  +o xtrace Disable xtrace
661
- `,Ef=new Map([["e","errexit"],["u","nounset"],["x","xtrace"],["v","verbose"],["f","noglob"],["C","noclobber"],["a","allexport"],["n","noexec"],["h",null],["b",null],["m",null],["B",null],["H",null],["P",null],["T",null],["E",null],["p",null]]),ti=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["noclobber","noclobber"],["noglob","noglob"],["allexport","allexport"],["noexec","noexec"],["posix","posix"],["vi","vi"],["emacs","emacs"],["notify",null],["monitor",null],["braceexpand",null],["histexpand",null],["physical",null],["functrace",null],["errtrace",null],["privileged",null],["hashall",null],["ignoreeof",null],["interactive-comments",null],["keyword",null],["onecmd",null]]),Af=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],vf=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function ya(e,t,n){t!==null&&(n&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=n,Hn(e))}function Cm(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Nm(e,t,n){let r=ve(e,n);if(r.length===0){t.append(n).append("=()");return}t.append(n).append("=(");for(let s=0;s<r.length;s++){let i=r[s],o=le(e,n,i)??"";s>0&&t.append(" "),t.append(`[${i}]=`),t.reserve(Ys(o)),t.append(An(o))}t.append(")")}function Rm(e,t){if(/^[a-zA-Z0-9_]+$/.test(t)){e.append(t);return}e.reserve(Ys(t)),e.append(An(t))}function Om(e,t,n){let r=Ot(e,n);if(r.length===0){t.append(n).append("=()");return}t.append(n).append("=(");for(let s=0;s<r.length;s++){let i=r[s],o=le(e,n,i)??"";s>0&&t.append(" "),t.append("["),Rm(t,i),t.append("]="),t.reserve(Ys(o)),t.append(An(o))}t.append(" )")}function Dm(e){let t=new Set,n=e.state.associativeArrays??new Set;for(let[r,s]of e.state.arrays??[])s.kind==="indexed"&&!n.has(r)&&t.add(r);return t}function Im(e){return e.state.associativeArrays??new Set}function bf(e){let t=Af.map(r=>`${r.padEnd(16)}${e.state.options[r]?"on":"off"}`),n=vf.map(r=>`${r.padEnd(16)}off`);return`${[...t,...n].sort().join(`
662
- `)}
663
- `}function Sf(e){let t=Af.map(r=>`set ${e.state.options[r]?"-o":"+o"} ${r}`),n=vf.map(r=>`set +o ${r}`);return`${[...t,...n].sort().join(`
664
- `)}
665
- `}function wa(e,t){if(t.includes("--help"))return te(Ir);if(t.length===0){let i=Dm(e),o=Im(e),a=[];for(let[u,f]of e.state.env)/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)&&(i.has(u)||o.has(u)||a.push([u,f]));let l=[...a.map(([u,f])=>({kind:"scalar",name:u,value:f})),...Array.from(i,u=>({kind:"indexed",name:u})),...Array.from(o,u=>({kind:"associative",name:u}))];l.sort((u,f)=>u.name<f.name?-1:u.name>f.name?1:0);let c=new Un(e.limits.maxOutputSize,"set");for(let u of l)e.executionScope.consumeWork(1,"set variable listing"),u.kind==="scalar"?(c.append(u.name).append("="),c.reserve(af(u.value)),c.append(Ae(u.value))):u.kind==="indexed"?Nm(e,c,u.name):Om(e,c,u.name),c.append(`
666
- `);return te(c.build())}let n=[],r=()=>n.length>0?te(n.join("")):re,s=0;for(;s<t.length;){let i=t[s];if((i==="-o"||i==="+o")&&Cm(t,s)){let o=t[s+1];if(!ti.has(o)){let a=`bash: set: ${o}: invalid option name
667
- ${Ir}`;if(e.state.options.posix)throw new ct(1,"",a);return T(a)}ya(e,ti.get(o)??null,i==="-o"),s+=2;continue}if(i==="-o"){n.push(bf(e)),s++;continue}if(i==="+o"){n.push(Sf(e)),s++;continue}if(i.length>1&&(i[0]==="-"||i[0]==="+")&&i[1]!=="-"){let o=i[0]==="-",a=0;for(let l=1;l<i.length;l++){let c=i[l];if(c==="o"){let u=s+1+a;if(u<t.length&&!t[u].startsWith("-")&&!t[u].startsWith("+")){let d=t[u];if(!ti.has(d)){let h=`bash: set: ${d}: invalid option name
668
- ${Ir}`;if(e.state.options.posix)throw new ct(1,"",h);return T(h)}ya(e,ti.get(d)??null,o),a++;continue}n.push(o?bf(e):Sf(e));continue}if(!Ef.has(c)){let u=`bash: set: ${i[0]}${c}: invalid option
669
- ${Ir}`;if(e.state.options.posix)throw new ct(1,"",u);return T(u)}ya(e,Ef.get(c)??null,o)}s+=1+a;continue}if(i==="--")return ga(e,t.slice(s+1)),r();if(i==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,Hn(e),s+1<t.length)return ga(e,t.slice(s+1)),r();s++;continue}if(i==="+"){s++;continue}if(i.startsWith("-")||i.startsWith("+")){let o=`bash: set: ${i}: invalid option
670
- ${Ir}`;if(e.state.options.posix)throw new ct(1,"",o);return T(o)}return ga(e,t.slice(s)),r()}return r()}function ga(e,t){let n=1;for(;e.state.env.has(String(n));)e.state.env.delete(String(n)),n++;for(let r=0;r<t.length;r++)e.state.env.set(String(r+1),t[r]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function Ea(e,t){let n=1;if(t.length>0){let o=Number.parseInt(t[0],10);if(Number.isNaN(o)||o<0){let a=`bash: shift: ${t[0]}: numeric argument required
671
- `;if(e.state.options.posix)throw new ct(1,"",a);return T(a)}n=o}let r=Number.parseInt(e.state.env.get("#")||"0",10);if(n>r){let o=`bash: shift: shift count out of range
672
- `;if(e.state.options.posix)throw new ct(1,"",o);return T(o)}if(n===0)return re;let s=[];for(let o=1;o<=r;o++)s.push(e.state.env.get(String(o))||"");let i=s.slice(n);for(let o=1;o<=r;o++)e.state.env.delete(String(o));for(let o=0;o<i.length;o++)e.state.env.set(String(o+1),i[o]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),re}async function ba(e,t){let n=t;if(n.length>0&&n[0]==="--"&&(n=n.slice(1)),n.length===0)return L("",`bash: source: filename argument required
673
- `,2);let r=n[0],s=null,i=null;if(r.includes("/")){let c=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(c),s=c}catch{}}else{let u=(e.state.env.get("PATH")||"").split(":").filter(f=>f);for(let f of u){let d=e.fs.resolvePath(e.state.cwd,`${f}/${r}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),s=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(f),s=f}catch{}}}if(i===null)return T(`bash: ${r}: No such file or directory
674
- `);let o=new Map;if(n.length>1){for(let u=1;u<=9;u++)o.set(String(u),e.state.env.get(String(u)));o.set("#",e.state.env.get("#")),o.set("@",e.state.env.get("@"));let c=n.slice(1);e.state.env.set("#",String(c.length)),e.state.env.set("@",c.join(" "));for(let u=0;u<c.length&&u<9;u++)e.state.env.set(String(u+1),c[u]);for(let u=c.length+1;u<=9;u++)e.state.env.delete(String(u))}let a=e.state.currentSource,l=()=>{if(e.state.sourceDepth--,e.state.currentSource=a,n.length>1)for(let[c,u]of o)u===void 0?e.state.env.delete(c):e.state.env.set(c,u)};if(e.state.sourceDepth++,e.state.sourceDepth>e.limits.maxSourceDepth)throw e.state.sourceDepth--,new $(`source: maximum nesting depth (${e.limits.maxSourceDepth}) exceeded, increase executionLimits.maxSourceDepth`,"recursion");e.state.currentSource=r;try{let c=je(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof q)throw c;if(c instanceof Me)return L(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return T(`bash: ${r}: ${c.message}
675
- `);throw c}}function kf(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Tm(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Pf(e,t){if(Tm(t))return null;try{let n=new Z,r=ie(n,t);return await J(e,r.expression)}catch{let n=parseInt(t,10);return Number.isNaN(n)?0:n}}function xf(e,t){if(e.state.localVarStack?.has(t)){let r=js(e,t);if(r){r.value===void 0?e.state.env.delete(t):e.state.env.set(t,r.value);let s=e.state.localVarStack?.get(t);if(!s||s.length===0)Us(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),Sa(e,t);else{let i=s[s.length-1];e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,i.scopeIndex+1)}return!0}return e.state.env.delete(t),Us(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let r=e.state.localScopes.length-1;r>=0;r--){let s=e.state.localScopes[r];if(s.has(t)){let i=s.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),s.delete(t);let o=!1;for(let a=r-1;a>=0;a--)if(e.state.localScopes[a].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,a+1),o=!0;break}return o||Us(e,t),!0}}return!1}function Sa(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let n=e.state.tempEnvBindings.length-1;n>=0;n--){let r=e.state.tempEnvBindings[n];if(r.has(t)){let s=r.get(t);return s===void 0?e.state.env.delete(t):e.state.env.set(t,s),r.delete(t),!0}}return!1}async function $f(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let n=t.slice(1,-1),s=new Z().parseWordFromString(n,!0,!1);return oe(e,s)}if(t.includes("$")){let r=new Z().parseWordFromString(t,!1,!1);return oe(e,r)}return t}async function Aa(e,t){let n="both",r="",s=0;for(let i of t){if(i==="-v"){n="variable";continue}if(i==="-f"){n="function";continue}if(n==="function"){e.state.functions.delete(i);continue}if(n==="variable"){let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],h=c[2];if(Ge(e,d)){r+=`bash: unset: ${d}: cannot unset: readonly variable
676
- `,s=1;continue}if(h==="@"||h==="*"){mr(e,d),e.state.env.delete(d);continue}let p=e.state.associativeArrays?.has(d);if(p){let y=await $f(e,h);Nn(e,d,y);continue}let m=bt(e,d),E=e.state.declaredVars?.has(d);if((e.state.env.has(d)||E)&&!m&&!p){r+=`bash: unset: ${d}: not an array variable
677
- `,s=1;continue}let g=await Pf(e,h);if(g===null&&m){r+=`bash: unset: ${h}: not a valid identifier
678
- `,s=1;continue}if(g===null)continue;if(g<0){let y=Q(e,d),S=y.length,A=e.state.currentLine;if(S===0){r+=`bash: line ${A}: unset: [${g}]: bad array subscript
679
- `,s=1;continue}let k=S+g;if(k<0){r+=`bash: line ${A}: unset: [${g}]: bad array subscript
680
- `,s=1;continue}let v=y[k][0];Nn(e,d,v);continue}Nn(e,d,g);continue}if(!kf(i)){r+=`bash: unset: \`${i}': not a valid identifier
681
- `,s=1;continue}let u=i;if(ue(e,i)){let d=qe(e,i);d&&d!==i&&(u=d)}if(Ge(e,u)){r+=`bash: unset: ${u}: cannot unset: readonly variable
682
- `,s=1;continue}mr(e,u);let f=$o(e,u);if(f!==void 0&&f!==e.state.callDepth)xf(e,u);else if(e.state.fullyUnsetLocals?.has(u))e.state.env.delete(u);else if(f!==void 0){let d=e.state.accessedTempEnvVars?.has(u),h=e.state.mutatedTempEnvVars?.has(u);if((d||h)&&e.state.localVarStack?.has(u)){let p=js(e,u);p?p.value===void 0?e.state.env.delete(u):e.state.env.set(u,p.value):e.state.env.delete(u)}else e.state.env.delete(u)}else Sa(e,u)||e.state.env.delete(u);e.state.exportedVars?.delete(u);continue}let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(o){let c=o[1],u=o[2];if(Ge(e,c)){r+=`bash: unset: ${c}: cannot unset: readonly variable
683
- `,s=1;continue}if(u==="@"||u==="*"){mr(e,c),e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let m=await $f(e,u);Nn(e,c,m);continue}let d=bt(e,c);if(e.state.env.has(c)&&!d&&!f){r+=`bash: unset: ${c}: not an array variable
684
- `,s=1;continue}let p=await Pf(e,u);if(p===null&&d){r+=`bash: unset: ${u}: not a valid identifier
685
- `,s=1;continue}if(p===null)continue;if(p<0){let m=Q(e,c),E=m.length,b=e.state.currentLine;if(E===0){r+=`bash: line ${b}: unset: [${p}]: bad array subscript
686
- `,s=1;continue}let g=E+p;if(g<0){r+=`bash: line ${b}: unset: [${p}]: bad array subscript
687
- `,s=1;continue}let y=m[g][0];Nn(e,c,y);continue}Nn(e,c,p);continue}if(!kf(i)){r+=`bash: unset: \`${i}': not a valid identifier
688
- `,s=1;continue}let a=i;if(ue(e,i)){let c=qe(e,i);c&&c!==i&&(a=c)}if(Ge(e,a)){r+=`bash: unset: ${a}: cannot unset: readonly variable
689
- `,s=1;continue}mr(e,a);let l=$o(e,a);if(l!==void 0&&l!==e.state.callDepth)xf(e,a);else if(e.state.fullyUnsetLocals?.has(a))e.state.env.delete(a);else if(l!==void 0){let c=e.state.accessedTempEnvVars?.has(a),u=e.state.mutatedTempEnvVars?.has(a);if((c||u)&&e.state.localVarStack?.has(a)){let f=js(e,a);f?f.value===void 0?e.state.env.delete(a):e.state.env.set(a,f.value):e.state.env.delete(a)}else e.state.env.delete(a)}else Sa(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return L("",r,s)}function Mt(e,t,n,r){let s=n+B(t)+1;if(s>r)throw new $(`shopt: output size limit exceeded (${r} bytes)`,"output_size");return e.push(t),s}var va=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],_m=["autocd","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","execfail","extdebug","extquote","force_fignore","globasciiranges","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath"];function ni(e){return va.includes(e)}function Lm(e){return _m.includes(e)}function Cf(e,t){let n=e.limits.maxArrayElements;if(t.length>n)throw new $(`shopt: argument limit exceeded (${n})`,"array_elements");let r=Math.min(e.limits.maxOutputSize,e.limits.maxStringLength),s=!1,i=!1,o=!1,a=!1,l=!1,c=[],u=0;for(;u<t.length;){let E=t[u];if(E==="--"){u++;break}if(E.startsWith("-")&&E.length>1){for(let b=1;b<E.length;b++){let g=E[b];switch(g){case"s":s=!0;break;case"u":i=!0;break;case"p":o=!0;break;case"q":a=!0;break;case"o":l=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${g}: invalid option
690
- `}}}u++}else break}for(;u<t.length;)c.push(t[u]),u++;if(l)return Fm(e,c,s,i,o,a);if(s&&i)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
691
- `};if(c.length===0){if(s||i){let b=[];for(let g of va){let y=e.state.shoptOptions[g];s&&y?b.push(o?`shopt -s ${g}`:`${g} on`):i&&!y&&b.push(o?`shopt -u ${g}`:`${g} off`)}return{exitCode:0,stdout:b.length>0?`${b.join(`
692
- `)}
693
- `:"",stderr:""}}let E=[];for(let b of va){let g=e.state.shoptOptions[b];E.push(o?`shopt ${g?"-s":"-u"} ${b}`:`${b} ${g?"on":"off"}`)}return{exitCode:0,stdout:`${E.join(`
694
- `)}
695
- `,stderr:""}}let f=!1,d=[],h=0,p=[],m=0;for(let E of c){if(!ni(E)&&!Lm(E)){h=Mt(d,`shopt: ${E}: invalid shell option name`,h,r),f=!0;continue}if(s)ni(E)&&(e.state.shoptOptions[E]=!0,Oi(e));else if(i)ni(E)&&(e.state.shoptOptions[E]=!1,Oi(e));else if(ni(E)){let b=e.state.shoptOptions[E];a?b||(f=!0):o?(m=Mt(p,`shopt ${b?"-s":"-u"} ${E}`,m,r),b||(f=!0)):(m=Mt(p,`${E} ${b?"on":"off"}`,m,r),b||(f=!0))}else a?f=!0:o?(m=Mt(p,`shopt -u ${E}`,m,r),f=!0):(m=Mt(p,`${E} off`,m,r),f=!0)}return{exitCode:f?1:0,stdout:p.length>0?`${p.join(`
682
+ `,Nf=new Map([["e","errexit"],["u","nounset"],["x","xtrace"],["v","verbose"],["f","noglob"],["C","noclobber"],["a","allexport"],["n","noexec"],["h",null],["b",null],["m",null],["B",null],["H",null],["P",null],["T",null],["E",null],["p",null]]),ui=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["noclobber","noclobber"],["noglob","noglob"],["allexport","allexport"],["noexec","noexec"],["posix","posix"],["vi","vi"],["emacs","emacs"],["notify",null],["monitor",null],["braceexpand",null],["histexpand",null],["physical",null],["functrace",null],["errtrace",null],["privileged",null],["hashall",null],["ignoreeof",null],["interactive-comments",null],["keyword",null],["onecmd",null]]),Df=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],If=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function va(e,t,n){t!==null&&(n&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=n,Kn(e))}function jm(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function qm(e,t,n){let r=xe(e,n);if(r.length===0){t.append(n).append("=()");return}t.append(n).append("=(");for(let s=0;s<r.length;s++){let i=r[s],o=ce(e,n,i)??"";s>0&&t.append(" "),t.append(`[${i}]=`),t.reserve(oi(o)),t.append(kn(o))}t.append(")")}function Gm(e,t){if(/^[a-zA-Z0-9_]+$/.test(t)){e.append(t);return}e.reserve(oi(t)),e.append(kn(t))}function Hm(e,t,n){let r=Tt(e,n);if(r.length===0){t.append(n).append("=()");return}t.append(n).append("=(");for(let s=0;s<r.length;s++){let i=r[s],o=ce(e,n,i)??"";s>0&&t.append(" "),t.append("["),Gm(t,i),t.append("]="),t.reserve(oi(o)),t.append(kn(o))}t.append(" )")}function Zm(e){let t=new Set,n=e.state.associativeArrays??new Set;for(let[r,s]of e.state.arrays??[])s.kind==="indexed"&&!n.has(r)&&t.add(r);return t}function Qm(e){return e.state.associativeArrays??new Set}function Rf(e){let t=Df.map(r=>`${r.padEnd(16)}${e.state.options[r]?"on":"off"}`),n=If.map(r=>`${r.padEnd(16)}off`);return`${[...t,...n].sort().join(`
696
683
  `)}
697
- `:"",stderr:d.length>0?`${d.join(`
698
- `)}
699
- `:""}}function Fm(e,t,n,r,s,i){let o=Math.min(e.limits.maxOutputSize,e.limits.maxStringLength),a=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["posix","posix"],["allexport","allexport"],["noclobber","noclobber"],["noglob","noglob"],["noexec","noexec"],["vi","vi"],["emacs","emacs"]]),l=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],c=[...a.keys(),...l].sort();if(t.length===0){let m=[];for(let E of c){let b=l.includes(E),g=a.get(E),y=b||!g?!1:e.state.options[g];n&&!y||r&&y||m.push(s?`set ${y?"-o":"+o"} ${E}`:`${E} ${y?"on":"off"}`)}return{exitCode:0,stdout:m.length>0?`${m.join(`
700
- `)}
701
- `:"",stderr:""}}let u=!1,f=[],d=0,h=[],p=0;for(let m of t){let E=a.has(m),b=l.includes(m);if(!E&&!b){d=Mt(f,`shopt: ${m}: invalid option name`,d,o),u=!0;continue}if(b){n||r||(i?u=!0:s?(p=Mt(h,`set +o ${m}`,p,o),u=!0):(p=Mt(h,`${m} off`,p,o),u=!0));continue}let g=a.get(m);if(g)if(n)g==="vi"?e.state.options.emacs=!1:g==="emacs"&&(e.state.options.vi=!1),e.state.options[g]=!0,Hn(e);else if(r)e.state.options[g]=!1,Hn(e);else{let y=e.state.options[g];i?y||(u=!0):s?(p=Mt(h,`set ${y?"-o":"+o"} ${m}`,p,o),y||(u=!0)):(p=Mt(h,`${m} ${y?"on":"off"}`,p,o),y||(u=!0))}}return{exitCode:u?1:0,stdout:h.length>0?`${h.join(`
702
- `)}
703
- `:"",stderr:f.length>0?`${f.join(`
684
+ `}function Of(e){let t=Df.map(r=>`set ${e.state.options[r]?"-o":"+o"} ${r}`),n=If.map(r=>`set +o ${r}`);return`${[...t,...n].sort().join(`
704
685
  `)}
705
- `:""}}function Mm(e){return e!==null&&typeof e=="object"&&"then"in e&&typeof e.then=="function"}function pe(e,t,n,r){return((...s)=>{dr(t,n,`${r} call`);let i=e(...s);return Mm(i)?i.then(o=>(dr(t,n,`${r} post-await`),o),o=>{throw dr(t,n,`${r} post-await`),o}):(dr(t,n,`${r} return`),i)})}function Bm(e,t,n){let r={readFile:pe(e.readFile.bind(e),t,n,"fs.readFile"),...typeof e.readFileBytes=="function"?{readFileBytes:pe(e.readFileBytes.bind(e),t,n,"fs.readFileBytes")}:Object.create(null),readFileBuffer:pe(e.readFileBuffer.bind(e),t,n,"fs.readFileBuffer"),writeFile:pe(e.writeFile.bind(e),t,n,"fs.writeFile"),appendFile:pe(e.appendFile.bind(e),t,n,"fs.appendFile"),exists:pe(e.exists.bind(e),t,n,"fs.exists"),stat:pe(e.stat.bind(e),t,n,"fs.stat"),mkdir:pe(e.mkdir.bind(e),t,n,"fs.mkdir"),readdir:pe(e.readdir.bind(e),t,n,"fs.readdir"),rm:pe(e.rm.bind(e),t,n,"fs.rm"),cp:pe(e.cp.bind(e),t,n,"fs.cp"),mv:pe(e.mv.bind(e),t,n,"fs.mv"),resolvePath:pe(e.resolvePath.bind(e),t,n,"fs.resolvePath"),getAllPaths:pe(e.getAllPaths.bind(e),t,n,"fs.getAllPaths"),chmod:pe(e.chmod.bind(e),t,n,"fs.chmod"),symlink:pe(e.symlink.bind(e),t,n,"fs.symlink"),link:pe(e.link.bind(e),t,n,"fs.link"),readlink:pe(e.readlink.bind(e),t,n,"fs.readlink"),lstat:pe(e.lstat.bind(e),t,n,"fs.lstat"),realpath:pe(e.realpath.bind(e),t,n,"fs.realpath"),utimes:pe(e.utimes.bind(e),t,n,"fs.utimes")};return e.readdirWithFileTypes&&(r.readdirWithFileTypes=pe(e.readdirWithFileTypes.bind(e),t,n,"fs.readdirWithFileTypes")),r}function ka(e,t){if(!e.requireDefenseContext)return e;let n=`command:${t}`,r=Object.getOwnPropertyDescriptors(e);r.fs={value:Bm(e.fs,e.requireDefenseContext,n),enumerable:!0,configurable:!0,writable:!0};let s=Object.defineProperties(Object.create(Object.getPrototypeOf(e)),r);return e.exec&&(s.exec=pe(e.exec,e.requireDefenseContext,n,"exec")),e.origCommand&&(s.origCommand=pe(e.origCommand,e.requireDefenseContext,n,"origCommand")),e.fetch&&(s.fetch=pe(e.fetch,e.requireDefenseContext,n,"fetch")),e.sleep&&(s.sleep=pe(e.sleep,e.requireDefenseContext,n,"sleep")),e.getRegisteredCommands&&(s.getRegisteredCommands=pe(e.getRegisteredCommands,e.requireDefenseContext,n,"getRegisteredCommands")),s}var Nf="+ ";async function Rf(e){let t=e.state.env.get("PS4");if(t===void 0)return Nf;if(t==="")return"";let n=e.state.options.xtrace;e.state.options.xtrace=!1;try{let s=new Z().parseWordFromString(t,!1,!1);return await oe(e,s)}catch(r){if(r instanceof ce&&!r.fatal)return t;if(r instanceof Xt||r instanceof Error&&r.name==="AbortError")throw r;return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
706
- `,t||Nf}finally{e.state.options.xtrace=n}}function Wm(e){return e.map(t=>Vm(t)).join(" ")}function Vm(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let n=/[\x00-\x1f\x7f]/.test(e),r=e.includes(`
686
+ `}function xa(e,t){if(t.includes("--help"))return ne(Mr);if(t.length===0){let i=Zm(e),o=Qm(e),a=[];for(let[u,f]of e.state.env)/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)&&(i.has(u)||o.has(u)||a.push([u,f]));let l=[...a.map(([u,f])=>({kind:"scalar",name:u,value:f})),...Array.from(i,u=>({kind:"indexed",name:u})),...Array.from(o,u=>({kind:"associative",name:u}))];l.sort((u,f)=>u.name<f.name?-1:u.name>f.name?1:0);let c=new Gn(e.limits.maxOutputSize,"set");for(let u of l)e.executionScope.consumeWork(1,"set variable listing"),u.kind==="scalar"?(c.append(u.name).append("="),c.reserve(gf(u.value)),c.append(ve(u.value))):u.kind==="indexed"?qm(e,c,u.name):Hm(e,c,u.name),c.append(`
687
+ `);return ne(c.build())}let n=[],r=()=>n.length>0?ne(n.join("")):se,s=0;for(;s<t.length;){let i=t[s];if((i==="-o"||i==="+o")&&jm(t,s)){let o=t[s+1];if(!ui.has(o)){let a=`bash: set: ${o}: invalid option name
688
+ ${Mr}`;if(e.state.options.posix)throw new ut(1,"",a);return _(a)}va(e,ui.get(o)??null,i==="-o"),s+=2;continue}if(i==="-o"){n.push(Rf(e)),s++;continue}if(i==="+o"){n.push(Of(e)),s++;continue}if(i.length>1&&(i[0]==="-"||i[0]==="+")&&i[1]!=="-"){let o=i[0]==="-",a=0;for(let l=1;l<i.length;l++){let c=i[l];if(c==="o"){let u=s+1+a;if(u<t.length&&!t[u].startsWith("-")&&!t[u].startsWith("+")){let d=t[u];if(!ui.has(d)){let h=`bash: set: ${d}: invalid option name
689
+ ${Mr}`;if(e.state.options.posix)throw new ut(1,"",h);return _(h)}va(e,ui.get(d)??null,o),a++;continue}n.push(o?Rf(e):Of(e));continue}if(!Nf.has(c)){let u=`bash: set: ${i[0]}${c}: invalid option
690
+ ${Mr}`;if(e.state.options.posix)throw new ut(1,"",u);return _(u)}va(e,Nf.get(c)??null,o)}s+=1+a;continue}if(i==="--")return ka(e,t.slice(s+1)),r();if(i==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,Kn(e),s+1<t.length)return ka(e,t.slice(s+1)),r();s++;continue}if(i==="+"){s++;continue}if(i.startsWith("-")||i.startsWith("+")){let o=`bash: set: ${i}: invalid option
691
+ ${Mr}`;if(e.state.options.posix)throw new ut(1,"",o);return _(o)}return ka(e,t.slice(s)),r()}return r()}function ka(e,t){let n=1;for(;e.state.env.has(String(n));)e.state.env.delete(String(n)),n++;for(let r=0;r<t.length;r++)e.state.env.set(String(r+1),t[r]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function Pa(e,t){let n=1;if(t.length>0){let o=Number.parseInt(t[0],10);if(Number.isNaN(o)||o<0){let a=`bash: shift: ${t[0]}: numeric argument required
692
+ `;if(e.state.options.posix)throw new ut(1,"",a);return _(a)}n=o}let r=Number.parseInt(e.state.env.get("#")||"0",10);if(n>r){let o=`bash: shift: shift count out of range
693
+ `;if(e.state.options.posix)throw new ut(1,"",o);return _(o)}if(n===0)return se;let s=[];for(let o=1;o<=r;o++)s.push(e.state.env.get(String(o))||"");let i=s.slice(n);for(let o=1;o<=r;o++)e.state.env.delete(String(o));for(let o=0;o<i.length;o++)e.state.env.set(String(o+1),i[o]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),se}async function fi(e,t){let n=t;if(n.length>0&&n[0]==="--"&&(n=n.slice(1)),n.length===0)return F("",`bash: source: filename argument required
694
+ `,2);let r=n[0],s=null,i=null;if(r.includes("/")){let c=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(c),s=c}catch{}}else{let u=(e.state.env.get("PATH")||"").split(":").filter(f=>f);for(let f of u){let d=e.fs.resolvePath(e.state.cwd,`${f}/${r}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),s=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(f),s=f}catch{}}}if(i===null)return _(`bash: ${r}: No such file or directory
695
+ `);let o=new Map;if(n.length>1){for(let u=1;u<=9;u++)o.set(String(u),e.state.env.get(String(u)));o.set("#",e.state.env.get("#")),o.set("@",e.state.env.get("@"));let c=n.slice(1);e.state.env.set("#",String(c.length)),e.state.env.set("@",c.join(" "));for(let u=0;u<c.length&&u<9;u++)e.state.env.set(String(u+1),c[u]);for(let u=c.length+1;u<=9;u++)e.state.env.delete(String(u))}let a=e.state.currentSource,l=()=>{if(e.state.sourceDepth--,e.state.currentSource=a,n.length>1)for(let[c,u]of o)u===void 0?e.state.env.delete(c):e.state.env.set(c,u)};if(e.state.sourceDepth++,e.state.sourceDepth>e.limits.maxSourceDepth)throw e.state.sourceDepth--,new C(`source: maximum nesting depth (${e.limits.maxSourceDepth}) exceeded, increase executionLimits.maxSourceDepth`,"recursion");e.state.currentSource=r;try{let c=qe(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof G)throw c;if(c instanceof Be)return F(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return _(`bash: ${r}: ${c.message}
696
+ `);throw c}}function Tf(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Km(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function _f(e,t){if(Km(t))return null;try{let n=new Q,r=oe(n,t);return await ee(e,r.expression)}catch{let n=parseInt(t,10);return Number.isNaN(n)?0:n}}function Lf(e,t){if(e.state.localVarStack?.has(t)){let r=Ks(e,t);if(r){r.value===void 0?e.state.env.delete(t):e.state.env.set(t,r.value);let s=e.state.localVarStack?.get(t);if(!s||s.length===0)Qs(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),$a(e,t);else{let i=s[s.length-1];e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,i.scopeIndex+1)}return!0}return e.state.env.delete(t),Qs(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let r=e.state.localScopes.length-1;r>=0;r--){let s=e.state.localScopes[r];if(s.has(t)){let i=s.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),s.delete(t);let o=!1;for(let a=r-1;a>=0;a--)if(e.state.localScopes[a].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,a+1),o=!0;break}return o||Qs(e,t),!0}}return!1}function $a(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let n=e.state.tempEnvBindings.length-1;n>=0;n--){let r=e.state.tempEnvBindings[n];if(r.has(t)){let s=r.get(t);return s===void 0?e.state.env.delete(t):e.state.env.set(t,s),r.delete(t),!0}}return!1}async function Ff(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let n=t.slice(1,-1),s=new Q().parseWordFromString(n,!0,!1);return ae(e,s)}if(t.includes("$")){let r=new Q().parseWordFromString(t,!1,!1);return ae(e,r)}return t}async function Ca(e,t){let n="both",r="",s=0;for(let i of t){if(i==="-v"){n="variable";continue}if(i==="-f"){n="function";continue}if(n==="function"){e.state.functions.delete(i);continue}if(n==="variable"){let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],h=c[2];if(He(e,d)){r+=`bash: unset: ${d}: cannot unset: readonly variable
697
+ `,s=1;continue}if(h==="@"||h==="*"){br(e,d),e.state.env.delete(d);continue}let p=e.state.associativeArrays?.has(d);if(p){let y=await Ff(e,h);Dn(e,d,y);continue}let m=vt(e,d),E=e.state.declaredVars?.has(d);if((e.state.env.has(d)||E)&&!m&&!p){r+=`bash: unset: ${d}: not an array variable
698
+ `,s=1;continue}let g=await _f(e,h);if(g===null&&m){r+=`bash: unset: ${h}: not a valid identifier
699
+ `,s=1;continue}if(g===null)continue;if(g<0){let y=K(e,d),b=y.length,A=e.state.currentLine;if(b===0){r+=`bash: line ${A}: unset: [${g}]: bad array subscript
700
+ `,s=1;continue}let k=b+g;if(k<0){r+=`bash: line ${A}: unset: [${g}]: bad array subscript
701
+ `,s=1;continue}let v=y[k][0];Dn(e,d,v);continue}Dn(e,d,g);continue}if(!Tf(i)){r+=`bash: unset: \`${i}': not a valid identifier
702
+ `,s=1;continue}let u=i;if(fe(e,i)){let d=Ge(e,i);d&&d!==i&&(u=d)}if(He(e,u)){r+=`bash: unset: ${u}: cannot unset: readonly variable
703
+ `,s=1;continue}br(e,u);let f=_o(e,u);if(f!==void 0&&f!==e.state.callDepth)Lf(e,u);else if(e.state.fullyUnsetLocals?.has(u))e.state.env.delete(u);else if(f!==void 0){let d=e.state.accessedTempEnvVars?.has(u),h=e.state.mutatedTempEnvVars?.has(u);if((d||h)&&e.state.localVarStack?.has(u)){let p=Ks(e,u);p?p.value===void 0?e.state.env.delete(u):e.state.env.set(u,p.value):e.state.env.delete(u)}else e.state.env.delete(u)}else $a(e,u)||e.state.env.delete(u);e.state.exportedVars?.delete(u);continue}let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(o){let c=o[1],u=o[2];if(He(e,c)){r+=`bash: unset: ${c}: cannot unset: readonly variable
704
+ `,s=1;continue}if(u==="@"||u==="*"){br(e,c),e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let m=await Ff(e,u);Dn(e,c,m);continue}let d=vt(e,c);if(e.state.env.has(c)&&!d&&!f){r+=`bash: unset: ${c}: not an array variable
705
+ `,s=1;continue}let p=await _f(e,u);if(p===null&&d){r+=`bash: unset: ${u}: not a valid identifier
706
+ `,s=1;continue}if(p===null)continue;if(p<0){let m=K(e,c),E=m.length,S=e.state.currentLine;if(E===0){r+=`bash: line ${S}: unset: [${p}]: bad array subscript
707
+ `,s=1;continue}let g=E+p;if(g<0){r+=`bash: line ${S}: unset: [${p}]: bad array subscript
708
+ `,s=1;continue}let y=m[g][0];Dn(e,c,y);continue}Dn(e,c,p);continue}if(!Tf(i)){r+=`bash: unset: \`${i}': not a valid identifier
709
+ `,s=1;continue}let a=i;if(fe(e,i)){let c=Ge(e,i);c&&c!==i&&(a=c)}if(He(e,a)){r+=`bash: unset: ${a}: cannot unset: readonly variable
710
+ `,s=1;continue}br(e,a);let l=_o(e,a);if(l!==void 0&&l!==e.state.callDepth)Lf(e,a);else if(e.state.fullyUnsetLocals?.has(a))e.state.env.delete(a);else if(l!==void 0){let c=e.state.accessedTempEnvVars?.has(a),u=e.state.mutatedTempEnvVars?.has(a);if((c||u)&&e.state.localVarStack?.has(a)){let f=Ks(e,a);f?f.value===void 0?e.state.env.delete(a):e.state.env.set(a,f.value):e.state.env.delete(a)}else e.state.env.delete(a)}else $a(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return F("",r,s)}function Xm(e){return e!==null&&typeof e=="object"&&"then"in e&&typeof e.then=="function"}function me(e,t,n,r){return((...s)=>{gr(t,n,`${r} call`);let i=e(...s);return Xm(i)?i.then(o=>(gr(t,n,`${r} post-await`),o),o=>{throw gr(t,n,`${r} post-await`),o}):(gr(t,n,`${r} return`),i)})}function Ym(e,t,n){let r={readFile:me(e.readFile.bind(e),t,n,"fs.readFile"),...typeof e.readFileBytes=="function"?{readFileBytes:me(e.readFileBytes.bind(e),t,n,"fs.readFileBytes")}:Object.create(null),readFileBuffer:me(e.readFileBuffer.bind(e),t,n,"fs.readFileBuffer"),writeFile:me(e.writeFile.bind(e),t,n,"fs.writeFile"),appendFile:me(e.appendFile.bind(e),t,n,"fs.appendFile"),exists:me(e.exists.bind(e),t,n,"fs.exists"),stat:me(e.stat.bind(e),t,n,"fs.stat"),mkdir:me(e.mkdir.bind(e),t,n,"fs.mkdir"),readdir:me(e.readdir.bind(e),t,n,"fs.readdir"),rm:me(e.rm.bind(e),t,n,"fs.rm"),cp:me(e.cp.bind(e),t,n,"fs.cp"),mv:me(e.mv.bind(e),t,n,"fs.mv"),resolvePath:me(e.resolvePath.bind(e),t,n,"fs.resolvePath"),getAllPaths:me(e.getAllPaths.bind(e),t,n,"fs.getAllPaths"),chmod:me(e.chmod.bind(e),t,n,"fs.chmod"),symlink:me(e.symlink.bind(e),t,n,"fs.symlink"),link:me(e.link.bind(e),t,n,"fs.link"),readlink:me(e.readlink.bind(e),t,n,"fs.readlink"),lstat:me(e.lstat.bind(e),t,n,"fs.lstat"),realpath:me(e.realpath.bind(e),t,n,"fs.realpath"),utimes:me(e.utimes.bind(e),t,n,"fs.utimes")};return e.readdirWithFileTypes&&(r.readdirWithFileTypes=me(e.readdirWithFileTypes.bind(e),t,n,"fs.readdirWithFileTypes")),r}function Na(e,t){if(!e.requireDefenseContext)return e;let n=`command:${t}`,r=Object.getOwnPropertyDescriptors(e);r.fs={value:Ym(e.fs,e.requireDefenseContext,n),enumerable:!0,configurable:!0,writable:!0};let s=Object.defineProperties(Object.create(Object.getPrototypeOf(e)),r);return e.exec&&(s.exec=me(e.exec,e.requireDefenseContext,n,"exec")),e.origCommand&&(s.origCommand=me(e.origCommand,e.requireDefenseContext,n,"origCommand")),e.fetch&&(s.fetch=me(e.fetch,e.requireDefenseContext,n,"fetch")),e.sleep&&(s.sleep=me(e.sleep,e.requireDefenseContext,n,"sleep")),e.getRegisteredCommands&&(s.getRegisteredCommands=me(e.getRegisteredCommands,e.requireDefenseContext,n,"getRegisteredCommands")),s}var Mf="+ ";async function Bf(e){let t=e.state.env.get("PS4");if(t===void 0)return Mf;if(t==="")return"";let n=e.state.options.xtrace;e.state.options.xtrace=!1;try{let s=new Q().parseWordFromString(t,!1,!1);return await ae(e,s)}catch(r){if(r instanceof ue&&!r.fatal)return t;if(r instanceof Jt||r instanceof Error&&r.name==="AbortError")throw r;return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
711
+ `,t||Mf}finally{e.state.options.xtrace=n}}function Jm(e){return e.map(t=>ey(t)).join(" ")}function ey(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let n=/[\x00-\x1f\x7f]/.test(e),r=e.includes(`
707
712
  `),s=e.includes(" "),i=e.includes("\\"),o=e.includes("'");if(n||r||s||i){let l="";for(let c of e){let u=c.charCodeAt(0);c===`
708
- `?l+="\\n":c===" "?l+="\\t":c==="\\"?l+="\\\\":c==="'"?l+="'":c==='"'?l+='"':u<32||u===127?u<256?l+=`\\x${u.toString(16).padStart(2,"0")}`:l+=`\\u${u.toString(16).padStart(4,"0")}`:l+=c}return`$'${l}'`}return o?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function Of(e,t,n){if(!e.state.options.xtrace)return"";let r=await Rf(e),s=[t,...n],i=Wm(s);return`${r}${i}
709
- `}async function Df(e,t,n){return e.state.options.xtrace?`${await Rf(e)}${t}=${n}
710
- `:""}function ri(e,t,n){return en([t,n],"",e.limits.maxStringLength,"array assignment")}async function If(e,t){let n=new Map,r="";for(let s of t.assignments){let i=s.name;if(s.array){let u=await zm(e,t,i,s.array,s.append,n);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:u.error};if(r+=u.xtraceOutput,u.continueToNext)continue}let o=s.value?await oe(e,s.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:L("",`bash: ${i}: bad array subscript
711
- `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await Hm(e,t,l[1],l[2],o,s.append,n);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:u.error};if(u.continueToNext)continue}let c=await Zm(e,t,i,o,s.append,n);if(c.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:c.error};r+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:r,tempAssignments:n}}async function zm(e,t,n,r,s,i){let o="";if(/\[.+\]$/.test(n))return{continueToNext:!1,xtraceOutput:"",error:L("",`bash: ${n}: cannot assign list to array member
712
- `,1)};if(ue(e,n)){let p=_n(e,n);if(p===void 0||p==="")throw new q(1,"","");let m=qe(e,n);if(m&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(m))return{continueToNext:!1,xtraceOutput:"",error:L("",`bash: ${n}: cannot assign list to array member
713
- `,1)}}if(Ge(e,n)){if(t.name)return o+=`bash: ${n}: readonly variable
714
- `,{continueToNext:!0,xtraceOutput:o};let p=fe(e,n);if(p)return{continueToNext:!1,xtraceOutput:"",error:p}}let a=e.state.associativeArrays?.has(n),l=Pe(e,n),c=l?Ue(l):void 0,u=e.state.env.get(n),f=()=>{e.state.arrays??=new Map,c?e.state.arrays.set(n,c):e.state.arrays.delete(n),u===void 0?e.state.env.delete(n):e.state.env.set(n,u)},d=Um(r),h=()=>{Ee(e,n),e.state.env.delete(n)};try{a&&d?await jm(e,t,n,r,s,h,p=>{o+=p}):d?await qm(e,n,r,s,h):await Gm(e,n,r,s,h)}catch(p){throw f(),p}if(t.name){i.set(n,e.state.env.get(n));let m=`(${r.map(E=>Gn(E)).join(" ")})`;e.state.env.set(n,m)}return{continueToNext:!0,xtraceOutput:o}}function Um(e){return e.some(t=>{if(t.parts.length>=2){let n=t.parts[0],r=t.parts[1];if(n.type!=="Glob"||!n.pattern.startsWith("["))return!1;if(n.pattern==="["&&(r.type==="DoubleQuoted"||r.type==="SingleQuoted")){if(t.parts.length<3)return!1;let s=t.parts[2];return s.type!=="Literal"?!1:s.value.startsWith("]=")||s.value.startsWith("]+=")}return r.type!=="Literal"?!1:r.value.startsWith("]")?r.value.startsWith("]=")||r.value.startsWith("]+="):n.pattern.endsWith("]")?r.value.startsWith("=")||r.value.startsWith("+="):!1}return!1})}async function jm(e,t,n,r,s,i,o){let a=[];for(let l of r){if(a.length>=e.limits.maxArrayElements)throw new $(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let c=$i(l);if(c){let{key:u,valueParts:f,append:d}=c,h;f.length>0?(h=await oe(e,{type:"Word",parts:f}),f.every(m=>m.type==="Literal"||m.type==="TildeExpansion")&&(h=hn(e,h))):h="",a.push({type:"keyed",key:u,value:h,append:d})}else{let u=await oe(e,l);a.push({type:"invalid",expandedValue:u})}}e.executionScope.consumeWork(a.length,"associative array assignment"),s||i();for(let l of a)if(l.type==="keyed")if(l.append){let c=le(e,n,l.key)??"";G(e,n,l.key,ri(e,c,l.value),"associative")}else G(e,n,l.key,l.value,"associative");else{let c=t.line??e.state.currentLine??1;o(`bash: line ${c}: ${n}: ${l.expandedValue}: must use subscript when assigning associative array
715
- `)}}async function qm(e,t,n,r,s){let i=[],o=0;for(let l of n){let c=$i(l);if(c){if(o>=e.limits.maxArrayElements)throw new $(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let{key:u,valueParts:f,append:d}=c,h;f.length>0?(h=await oe(e,{type:"Word",parts:f}),f.every(m=>m.type==="Literal"||m.type==="TildeExpansion")&&(h=hn(e,h))):h="",i.push({type:"keyed",indexExpr:u,value:h,append:d}),o++}else{let u=await kt(e,l);if(u.values.length>e.limits.maxArrayElements-o)throw new $(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");i.push({type:"non-keyed",values:u.values}),o+=u.values.length}}e.executionScope.consumeWork(o,"indexed array assignment"),r||s();let a=0;for(let l of i)if(l.type==="keyed"){let c;try{let u=new Z,f=ie(u,l.indexExpr);c=await J(e,f.expression,!1)}catch{if(/^-?\d+$/.test(l.indexExpr))c=Number.parseInt(l.indexExpr,10);else{let u=e.state.env.get(l.indexExpr);c=u?Number.parseInt(u,10):0,Number.isNaN(c)&&(c=0)}}if(l.append){let u=le(e,t,c)??"";G(e,t,c,ri(e,u,l.value))}else G(e,t,c,l.value);a=c+1}else for(let c of l.values)G(e,t,a++,c)}async function Gm(e,t,n,r,s){let i=[];for(let a of n){let l=await kt(e,a);for(let c of l.values){if(i.length>=e.limits.maxArrayElements)throw new $(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");i.push(c)}}let o=0;if(e.executionScope.consumeWork(i.length,"indexed array assignment"),r){let a=Q(e,t);if(a.length>0)o=Math.max(...a.map(([c])=>typeof c=="number"?c:0))+1;else{let l=e.state.env.get(t);l!==void 0&&(G(e,t,0,l),e.state.env.delete(t),o=1)}}else s();for(let a=0;a<i.length;a++)G(e,t,o+a,i[a])}async function Hm(e,t,n,r,s,i,o){let a=n;if(ue(e,n)){let f=qe(e,n);if(f&&f!==n){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:L("",`bash: \`${f}': not a valid identifier
716
- `,1)};a=f}}if(Ge(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=fe(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await Tf(e,r);else{let f=await Pa(e,a,r);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=String(f.index)}let u=i?ri(e,le(e,a,c)||"",s):s;return t.name||G(e,a,c,u,l?"associative":"indexed"),{continueToNext:!0,xtraceOutput:""}}async function Tf(e,t){let n;if(t.startsWith("'")&&t.endsWith("'"))n=t.slice(1,-1);else if(t.startsWith('"')&&t.endsWith('"')){let r=t.slice(1,-1),i=new Z().parseWordFromString(r,!0,!1);n=await oe(e,i)}else if(t.includes("$")){let s=new Z().parseWordFromString(t,!1,!1);n=await oe(e,s)}else n=t;return n}async function Pa(e,t,n){let r=n;n.startsWith('"')&&n.endsWith('"')&&n.length>=2&&(r=n.slice(1,-1));let s;if(/^-?\d+$/.test(r))s=Number.parseInt(r,10);else{try{let i=new Z,o=ie(i,r);s=await J(e,o.expression,!1)}catch(i){if(i instanceof q||i instanceof Ne)throw i;if(i instanceof ce){let l=`bash: line ${e.state.currentLine}: ${n}: ${i.message}
717
- `;if(i.fatal)throw new q(1,"",l);return{index:0,error:L("",l,1)}}let o=e.state.currentLine;return{index:0,error:L("",`bash: line ${o}: ${t}[${n}]: bad array subscript
718
- `,1)}}Number.isNaN(s)&&(s=0)}if(s<0){let i=Q(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:L("",`bash: line ${a}: ${t}[${n}]: bad array subscript
719
- `,1)}}if(s=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+s,s<0){let a=e.state.currentLine;return{index:0,error:L("",`bash: line ${a}: ${t}[${n}]: bad array subscript
720
- `,1)}}}return{index:s}}async function Zm(e,t,n,r,s,i){let o="",a=n,l=null;if(ue(e,n)){let f=ws(e,n,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:L("",`bash: ${n}: circular name reference
721
- `,1)};if(f===null)return{continueToNext:!0,xtraceOutput:""};a=f;let d=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(l={arrayName:d[1],subscriptExpr:d[2]},a=d[1])}if(Ge(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
722
- `,{continueToNext:!0,xtraceOutput:o};let f=fe(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(Or(e,a))try{let f=new Z;if(s){let h=`(${e.state.env.get(a)||"0"}) + (${r})`,p=ie(f,h);c=String(await J(e,p.expression))}else{let d=ie(f,r);c=String(await J(e,d.expression))}}catch{c="0"}else{let f=bt(e,a)?le(e,a,0):e.state.env.get(a);c=s?ri(e,f||"",r):r}c=ir(e,a,c),o+=await Df(e,a,c);let u;return l?u=await Qm(e,l):bt(e,a)&&(u="0"),t.name?u===void 0&&(i.set(a,e.state.env.get(a)),e.state.env.set(a,c)):(u===void 0?e.state.env.set(a,c):G(e,a,u,c),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(a)),e.state.tempEnvBindings?.some(f=>f.has(a))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(a))),{continueToNext:!1,xtraceOutput:o}}async function Qm(e,t){let{arrayName:n,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(n))return Tf(e,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new Z,a=ie(o,r);i=await J(e,a.expression,!1)}catch{let o=e.state.env.get(r);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=Q(e,n);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return String(i)}async function Ff(e,t,n,r){let s=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let m of t)if(m.startsWith("-")&&m.length>1)for(let E of m.slice(1))E==="t"?s=!0:E==="p"?i=!0:E==="P"?o=!0:E==="a"?a=!0:E==="f"&&(l=!0);else c.push(m);let u="",f="",d=0,h=!1,p=!1;for(let m of c){let E=!1;if(o){if(a){let k=await r(m);if(k.length>0){for(let v of k)u+=`${v}
713
+ `?l+="\\n":c===" "?l+="\\t":c==="\\"?l+="\\\\":c==="'"?l+="'":c==='"'?l+='"':u<32||u===127?u<256?l+=`\\x${u.toString(16).padStart(2,"0")}`:l+=`\\u${u.toString(16).padStart(4,"0")}`:l+=c}return`$'${l}'`}return o?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function Wf(e,t,n){if(!e.state.options.xtrace)return"";let r=await Bf(e),s=[t,...n],i=Jm(s);return`${r}${i}
714
+ `}async function Vf(e,t,n){return e.state.options.xtrace?`${await Bf(e)}${t}=${n}
715
+ `:""}function di(e,t,n){return nn([t,n],"",e.limits.maxStringLength,"array assignment")}async function zf(e,t){let n=new Map,r="";for(let s of t.assignments){let i=s.name;if(s.array){let u=await ty(e,t,i,s.array,s.append,n);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:u.error};if(r+=u.xtraceOutput,u.continueToNext)continue}let o=s.value?await ae(e,s.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:F("",`bash: ${i}: bad array subscript
716
+ `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await oy(e,t,l[1],l[2],o,s.append,n);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:u.error};if(u.continueToNext)continue}let c=await ay(e,t,i,o,s.append,n);if(c.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:c.error};r+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:r,tempAssignments:n}}async function ty(e,t,n,r,s,i){let o="";if(/\[.+\]$/.test(n))return{continueToNext:!1,xtraceOutput:"",error:F("",`bash: ${n}: cannot assign list to array member
717
+ `,1)};if(fe(e,n)){let p=Mn(e,n);if(p===void 0||p==="")throw new G(1,"","");let m=Ge(e,n);if(m&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(m))return{continueToNext:!1,xtraceOutput:"",error:F("",`bash: ${n}: cannot assign list to array member
718
+ `,1)}}if(He(e,n)){if(t.name)return o+=`bash: ${n}: readonly variable
719
+ `,{continueToNext:!0,xtraceOutput:o};let p=de(e,n);if(p)return{continueToNext:!1,xtraceOutput:"",error:p}}let a=e.state.associativeArrays?.has(n),l=$e(e,n),c=l?je(l):void 0,u=e.state.env.get(n),f=()=>{e.state.arrays??=new Map,c?e.state.arrays.set(n,c):e.state.arrays.delete(n),u===void 0?e.state.env.delete(n):e.state.env.set(n,u)},d=ny(r),h=()=>{be(e,n),e.state.env.delete(n)};try{a&&d?await ry(e,t,n,r,s,h,p=>{o+=p}):d?await sy(e,n,r,s,h):await iy(e,n,r,s,h)}catch(p){throw f(),p}if(t.name){i.set(n,e.state.env.get(n));let m=`(${r.map(E=>Qn(E)).join(" ")})`;e.state.env.set(n,m)}return{continueToNext:!0,xtraceOutput:o}}function ny(e){return e.some(t=>{if(t.parts.length>=2){let n=t.parts[0],r=t.parts[1];if(n.type!=="Glob"||!n.pattern.startsWith("["))return!1;if(n.pattern==="["&&(r.type==="DoubleQuoted"||r.type==="SingleQuoted")){if(t.parts.length<3)return!1;let s=t.parts[2];return s.type!=="Literal"?!1:s.value.startsWith("]=")||s.value.startsWith("]+=")}return r.type!=="Literal"?!1:r.value.startsWith("]")?r.value.startsWith("]=")||r.value.startsWith("]+="):n.pattern.endsWith("]")?r.value.startsWith("=")||r.value.startsWith("+="):!1}return!1})}async function ry(e,t,n,r,s,i,o){let a=[];for(let l of r){if(a.length>=e.limits.maxArrayElements)throw new C(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let c=Li(l);if(c){let{key:u,valueParts:f,append:d}=c,h;f.length>0?(h=await ae(e,{type:"Word",parts:f}),f.every(m=>m.type==="Literal"||m.type==="TildeExpansion")&&(h=mn(e,h))):h="",a.push({type:"keyed",key:u,value:h,append:d})}else{let u=await ae(e,l);a.push({type:"invalid",expandedValue:u})}}e.executionScope.consumeWork(a.length,"associative array assignment"),s||i();for(let l of a)if(l.type==="keyed")if(l.append){let c=ce(e,n,l.key)??"";H(e,n,l.key,di(e,c,l.value),"associative")}else H(e,n,l.key,l.value,"associative");else{let c=t.line??e.state.currentLine??1;o(`bash: line ${c}: ${n}: ${l.expandedValue}: must use subscript when assigning associative array
720
+ `)}}async function sy(e,t,n,r,s){let i=[],o=0;for(let l of n){let c=Li(l);if(c){if(o>=e.limits.maxArrayElements)throw new C(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let{key:u,valueParts:f,append:d}=c,h;f.length>0?(h=await ae(e,{type:"Word",parts:f}),f.every(m=>m.type==="Literal"||m.type==="TildeExpansion")&&(h=mn(e,h))):h="",i.push({type:"keyed",indexExpr:u,value:h,append:d}),o++}else{let u=await Ct(e,l);if(u.values.length>e.limits.maxArrayElements-o)throw new C(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");i.push({type:"non-keyed",values:u.values}),o+=u.values.length}}e.executionScope.consumeWork(o,"indexed array assignment"),r||s();let a=0;for(let l of i)if(l.type==="keyed"){let c;try{let u=new Q,f=oe(u,l.indexExpr);c=await ee(e,f.expression,!1)}catch{if(/^-?\d+$/.test(l.indexExpr))c=Number.parseInt(l.indexExpr,10);else{let u=e.state.env.get(l.indexExpr);c=u?Number.parseInt(u,10):0,Number.isNaN(c)&&(c=0)}}if(l.append){let u=ce(e,t,c)??"";H(e,t,c,di(e,u,l.value))}else H(e,t,c,l.value);a=c+1}else for(let c of l.values)H(e,t,a++,c)}async function iy(e,t,n,r,s){let i=[];for(let a of n){let l=await Ct(e,a);for(let c of l.values){if(i.length>=e.limits.maxArrayElements)throw new C(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");i.push(c)}}let o=0;if(e.executionScope.consumeWork(i.length,"indexed array assignment"),r){let a=K(e,t);if(a.length>0)o=Math.max(...a.map(([c])=>typeof c=="number"?c:0))+1;else{let l=e.state.env.get(t);l!==void 0&&(H(e,t,0,l),e.state.env.delete(t),o=1)}}else s();for(let a=0;a<i.length;a++)H(e,t,o+a,i[a])}async function oy(e,t,n,r,s,i,o){let a=n;if(fe(e,n)){let f=Ge(e,n);if(f&&f!==n){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:F("",`bash: \`${f}': not a valid identifier
721
+ `,1)};a=f}}if(He(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=de(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await Uf(e,r);else{let f=await Ra(e,a,r);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=String(f.index)}let u=i?di(e,ce(e,a,c)||"",s):s;return t.name||H(e,a,c,u,l?"associative":"indexed"),{continueToNext:!0,xtraceOutput:""}}async function Uf(e,t){let n;if(t.startsWith("'")&&t.endsWith("'"))n=t.slice(1,-1);else if(t.startsWith('"')&&t.endsWith('"')){let r=t.slice(1,-1),i=new Q().parseWordFromString(r,!0,!1);n=await ae(e,i)}else if(t.includes("$")){let s=new Q().parseWordFromString(t,!1,!1);n=await ae(e,s)}else n=t;return n}async function Ra(e,t,n){let r=n;n.startsWith('"')&&n.endsWith('"')&&n.length>=2&&(r=n.slice(1,-1));let s;if(/^-?\d+$/.test(r))s=Number.parseInt(r,10);else{try{let i=new Q,o=oe(i,r);s=await ee(e,o.expression,!1)}catch(i){if(i instanceof G||i instanceof Re)throw i;if(i instanceof ue){let l=`bash: line ${e.state.currentLine}: ${n}: ${i.message}
722
+ `;if(i.fatal)throw new G(1,"",l);return{index:0,error:F("",l,1)}}let o=e.state.currentLine;return{index:0,error:F("",`bash: line ${o}: ${t}[${n}]: bad array subscript
723
+ `,1)}}Number.isNaN(s)&&(s=0)}if(s<0){let i=K(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:F("",`bash: line ${a}: ${t}[${n}]: bad array subscript
724
+ `,1)}}if(s=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+s,s<0){let a=e.state.currentLine;return{index:0,error:F("",`bash: line ${a}: ${t}[${n}]: bad array subscript
725
+ `,1)}}}return{index:s}}async function ay(e,t,n,r,s,i){let o="",a=n,l=null;if(fe(e,n)){let f=ks(e,n,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:F("",`bash: ${n}: circular name reference
726
+ `,1)};if(f===null)return{continueToNext:!0,xtraceOutput:""};a=f;let d=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(l={arrayName:d[1],subscriptExpr:d[2]},a=d[1])}if(He(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
727
+ `,{continueToNext:!0,xtraceOutput:o};let f=de(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(Lr(e,a))try{let f=new Q;if(s){let h=`(${e.state.env.get(a)||"0"}) + (${r})`,p=oe(f,h);c=String(await ee(e,p.expression))}else{let d=oe(f,r);c=String(await ee(e,d.expression))}}catch{c="0"}else{let f=vt(e,a)?ce(e,a,0):e.state.env.get(a);c=s?di(e,f||"",r):r}c=cr(e,a,c),o+=await Vf(e,a,c);let u;return l?u=await ly(e,l):vt(e,a)&&(u="0"),t.name?u===void 0&&(i.set(a,e.state.env.get(a)),e.state.env.set(a,c)):(u===void 0?e.state.env.set(a,c):H(e,a,u,c),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(a)),e.state.tempEnvBindings?.some(f=>f.has(a))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(a))),{continueToNext:!1,xtraceOutput:o}}async function ly(e,t){let{arrayName:n,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(n))return Uf(e,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new Q,a=oe(o,r);i=await ee(e,a.expression,!1)}catch{let o=e.state.env.get(r);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=K(e,n);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return String(i)}async function Gf(e,t,n,r){let s=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let m of t)if(m.startsWith("-")&&m.length>1)for(let E of m.slice(1))E==="t"?s=!0:E==="p"?i=!0:E==="P"?o=!0:E==="a"?a=!0:E==="f"&&(l=!0);else c.push(m);let u="",f="",d=0,h=!1,p=!1;for(let m of c){let E=!1;if(o){if(a){let k=await r(m);if(k.length>0){for(let v of k)u+=`${v}
723
728
  `;h=!0,E=!0}}else{let k=await n(m);k&&(u+=`${k}
724
- `,h=!0,E=!0)}E||(p=!0);continue}let b=!l&&e.state.functions.has(m);if(a&&b){if(!i)if(s)u+=`function
725
- `;else{let k=e.state.functions.get(m),v=k?_f(m,k):`${m} is a function
729
+ `,h=!0,E=!0)}E||(p=!0);continue}let S=!l&&e.state.functions.has(m);if(a&&S){if(!i)if(s)u+=`function
730
+ `;else{let k=e.state.functions.get(m),v=k?jf(m,k):`${m} is a function
726
731
  `;u+=v}E=!0}let g=e.state.env.get(`BASH_ALIAS_${m}`);if(g!==void 0&&(a||!E)&&(i||(s?u+=`alias
727
732
  `:u+=`${m} is aliased to \`${g}'
728
- `),E=!0,!a)||Ci.has(m)&&(a||!E)&&(i||(s?u+=`keyword
733
+ `),E=!0,!a)||Ar.has(m)&&(a||!E)&&(i||(s?u+=`keyword
729
734
  `:u+=`${m} is a shell keyword
730
- `),E=!0,!a))continue;if(!a&&b&&!E){if(!i)if(s)u+=`function
731
- `;else{let k=e.state.functions.get(m),v=k?_f(m,k):`${m} is a function
732
- `;u+=v}E=!0;continue}if(!(an.has(m)&&(a||!E)&&(i||(s?u+=`builtin
735
+ `),E=!0,!a))continue;if(!a&&S&&!E){if(!i)if(s)u+=`function
736
+ `;else{let k=e.state.functions.get(m),v=k?jf(m,k):`${m} is a function
737
+ `;u+=v}E=!0;continue}if(!(Dt.has(m)&&(a||!E)&&(i||(s?u+=`builtin
733
738
  `:u+=`${m} is a shell builtin
734
739
  `),E=!0,!a))){if(a){let k=await r(m);for(let v of k)i?u+=`${v}
735
740
  `:s?u+=`file
@@ -738,16 +743,16 @@ ${Ir}`;if(e.state.options.posix)throw new ct(1,"",o);return T(o)}return ga(e,t.s
738
743
  `:s?u+=`file
739
744
  `:u+=`${m} is ${k}
740
745
  `,h=!0,E=!0)}if(!E&&(p=!0,!s&&!i)){let k=!0;if(m.includes("/")){let v=e.fs.resolvePath(e.state.cwd,m);await e.fs.exists(v)&&(k=!1)}k&&(f+=`bash: type: ${m}: not found
741
- `)}}}return i?d=p&&!h?1:0:d=p?1:0,L(u,f,d)}function _f(e,t){let n;return t.body.type==="Group"?n=t.body.body.map(s=>Tr(s)).join("; "):n=Tr(t.body),`${e} is a function
746
+ `)}}}return i?d=p&&!h?1:0:d=p?1:0,F(u,f,d)}function jf(e,t){let n;return t.body.type==="Group"?n=t.body.body.map(s=>Br(s)).join("; "):n=Br(t.body),`${e} is a function
742
747
  ${e} ()
743
748
  {
744
749
  ${n}
745
750
  }
746
- `}function Tr(e){if(Array.isArray(e))return e.map(t=>Tr(t)).join("; ");if(e.type==="Statement"){let t=[];for(let n=0;n<e.pipelines.length;n++){let r=e.pipelines[n];t.push(Km(r)),e.operators[n]&&t.push(e.operators[n])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,n=[];t.name&&n.push(Lf(t.name));for(let r of t.args)n.push(Lf(r));return n.join(" ")}return e.type==="Group"?`{ ${e.body.map(r=>Tr(r)).join("; ")}; }`:"..."}function Lf(e){return e.parts.map(Mf).join("")}function Mf(e){switch(e.type){case"Literal":return e.value;case"Escaped":return`\\${e.value}`;case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(Mf).join("")}"`;default:return ge(F.word([e]))}}function Km(e){let t=e.commands.map(n=>Tr(n));return(e.negated?"! ":"")+t.join(" | ")}async function Bf(e,t,n,r){let s="",i="",o=0;for(let a of t){if(!a){o=1;continue}let l=e.state.env.get(`BASH_ALIAS_${a}`);if(l!==void 0)r?s+=`${a} is an alias for "${l}"
751
+ `}function Br(e){if(Array.isArray(e))return e.map(t=>Br(t)).join("; ");if(e.type==="Statement"){let t=[];for(let n=0;n<e.pipelines.length;n++){let r=e.pipelines[n];t.push(cy(r)),e.operators[n]&&t.push(e.operators[n])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,n=[];t.name&&n.push(qf(t.name));for(let r of t.args)n.push(qf(r));return n.join(" ")}return e.type==="Group"?`{ ${e.body.map(r=>Br(r)).join("; ")}; }`:"..."}function qf(e){return e.parts.map(Hf).join("")}function Hf(e){switch(e.type){case"Literal":return e.value;case"Escaped":return`\\${e.value}`;case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(Hf).join("")}"`;default:return we(M.word([e]))}}function cy(e){let t=e.commands.map(n=>Br(n));return(e.negated?"! ":"")+t.join(" | ")}async function Zf(e,t,n,r){let s="",i="",o=0;for(let a of t){if(!a){o=1;continue}let l=e.state.env.get(`BASH_ALIAS_${a}`);if(l!==void 0)r?s+=`${a} is an alias for "${l}"
747
752
  `:s+=`alias ${a}='${l}'
748
- `;else if(Ci.has(a))r?s+=`${a} is a shell keyword
753
+ `;else if(Ar.has(a))r?s+=`${a} is a shell keyword
749
754
  `:s+=`${a}
750
- `;else if(an.has(a))r?s+=`${a} is a shell builtin
755
+ `;else if(Dt.has(a))r?s+=`${a} is a shell builtin
751
756
  `:s+=`${a}
752
757
  `;else if(e.state.functions.has(a))r?s+=`${a} is a function
753
758
  `:s+=`${a}
@@ -757,53 +762,53 @@ ${e} ()
757
762
  `),o=1)}else if(e.commands.has(a)){let u=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":"),f=null;for(let d of u){if(!d)continue;let h=`${d}/${a}`;try{let p=await e.fs.stat(h);if(!p.isDirectory&&(p.mode&73)!==0){f=h;break}}catch{}}f||(f=`/usr/bin/${a}`),r?s+=`${a} is ${f}
758
763
  `:s+=`${f}
759
764
  `}else r&&(i+=`${a}: not found
760
- `),o=1}return L(s,i,o)}async function Wf(e,t){if(t.includes("/")){let s=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(s)){try{let i=await e.fs.stat(s);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let r=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let s of r){if(!s)continue;let o=`${s.startsWith("/")?s:e.fs.resolvePath(e.state.cwd,s)}/${t}`;if(await e.fs.exists(o)){try{let a=await e.fs.stat(o);if(a.isDirectory||(a.mode&73)===0)continue}catch{continue}return`${s}/${t}`}}if(e.commands.has(t)){for(let s of r)if(s==="/usr/bin"||s==="/bin")return`${s}/${t}`;return`/usr/bin/${t}`}return null}function Vf(e,t){let n=!0,r=e.signal?new AbortController:void 0,s=new WeakMap,i=()=>{if(!n)throw new rt("",`bash: ${t} used its context after cancellation
761
- `)},o=f=>{if(f===null||typeof f!="object"&&typeof f!="function")return f;let d=s.get(f);if(d!==void 0)return d;if(typeof f=="object"&&Ja(f))return f;if(f instanceof Uint8Array){let E=new Uint8Array(f);return s.set(f,E),E}if(f instanceof ArrayBuffer){let E=f.slice(0);return s.set(f,E),E}if(f instanceof Promise){let E=f.then(b=>(i(),o(b)));return s.set(f,E),E}if(typeof f=="function"){let E=function(...b){return i(),o(Reflect.apply(f,this,b))};return s.set(f,E),E}let h=Object.getPrototypeOf(f);if(Array.isArray(f)||h===Object.prototype||h===null){let E=Array.isArray(f)?[]:Object.create(h);s.set(f,E);let b=Object.getOwnPropertyDescriptors(f);for(let g of Object.values(b)){if("value"in g){let y=g.value;g.value=typeof y=="function"?(...S)=>(i(),o(Reflect.apply(y,f,S))):o(y)}if(g.get){let y=g.get;g.get=()=>(i(),o(Reflect.apply(y,f,[])))}if(g.set){let y=g.set;g.set=S=>{i(),Reflect.apply(y,f,[S])}}}return Object.defineProperties(E,b),E}let p=new Map,m=new ja(f,{get(E,b){if(i(),b==="constructor"||b==="prototype"||b==="__proto__")throw new Error(`${t}: unsafe context property access`);let g=Reflect.get(E,b,E);if(typeof g!="function")return o(g);if(p.has(b))return p.get(b);let y=(...S)=>(i(),o(Reflect.apply(g,E,S)));return p.set(b,y),y},set(E,b,g){if(i(),b==="constructor"||b==="prototype"||b==="__proto__")throw new Error(`${t}: unsafe context property access`);return Reflect.set(E,b,g,E)}});return s.set(f,m),m},a=f=>o(f),l=f=>f&&((...d)=>(i(),o(f(...d)))),c=f=>({value:f,enumerable:!0,configurable:!0,writable:!0}),u=Object.getOwnPropertyDescriptors(e);return Object.assign(u,{fs:c(a(e.fs)),env:c(a(e.env)),limits:c(Object.freeze({...e.limits})),exportedEnv:c(e.exportedEnv?Object.freeze({...e.exportedEnv}):void 0),executionScope:c(e.executionScope?a(e.executionScope):void 0),fileDescriptors:c(e.fileDescriptors?a(e.fileDescriptors):void 0),coverage:c(e.coverage?a(e.coverage):void 0),assignShellVariable:c(l(e.assignShellVariable)),exec:c(l(e.exec)),origCommand:c(l(e.origCommand)),execWithInheritedStdin:c(l(e.execWithInheritedStdin)),fetch:c(l(e.fetch)),getRegisteredCommands:c(l(e.getRegisteredCommands)),sleep:c(l(e.sleep)),trace:c(l(e.trace)),invokeTool:c(l(e.invokeTool)),signal:c(r?.signal)}),{context:Object.defineProperties(Object.create(Object.getPrototypeOf(e)),u),revoke(){n=!1,r?.signal.aborted||r?.abort(new rt("",`bash: ${t} context revoked
762
- `))}}}async function Xm(e,t,n,r,s,i){let o=s.remainingTimeMs()??t.limits.maxExecutionTimeMs,a=t.limits.maxExtensionCleanupTimeMs,l,c,u,d=Promise.resolve().then(e).then(p=>({kind:"result",result:p}),p=>({kind:"error",error:p})),h=new Promise(p=>{let m=()=>{n(),p({kind:"abort"})};c=m,i?.addEventListener("abort",m,{once:!0}),i?.aborted&&m(),l=cr(()=>{n(),p({kind:"deadline"})},o)});try{let p=await Promise.race([d,h]);if(p.kind==="result")return p.result;if(p.kind==="error")throw p.error;n();let m=await Promise.race([d.then(()=>!0),new Promise(b=>{u=cr(()=>b(!1),a)})]),E=p.kind==="deadline"?new rt("",`bash: ${r} exceeded its execution deadline
763
- `):new rt("",`bash: execution aborted
764
- `);throw m||s.poisonAfterAbort(E),E}finally{n(),ur(l),ur(u),c&&i?.removeEventListener("abort",c)}}async function zf(e,t,n,r,s,i,o,a,l=!1){let{ctx:c,runCommand:u}=e;if(c.coverage&&an.has(t)&&c.coverage.hit(`bash:builtin:${t}`),t==="export")return la(c,n);if(t==="unset")return Aa(c,n);if(t==="exit")return aa(c,n);if(t==="local")return da(c,n);if(t==="set")return wa(c,n);if(t==="break")return So(c,n);if(t==="continue")return Qo(c,n);if(t==="return")return ma(c,n);if(t==="eval"&&c.state.options.posix)return Js(c,n,s,l);if(t==="shift")return Ea(c,n);if(t==="getopts")return ei(c,n);if(t==="compgen")return jo(c,n);if(t==="complete")return Ho(c,n);if(t==="compopt")return Zo(c,n);if(t==="pushd")return await sa(c,n);if(t==="popd")return ia(c,n);if(t==="dirs")return oa(c,n);if(t==="source"||t===".")return ba(c,n);if(t==="read")return pa(c,n,s,a);if(t==="mapfile"||t==="readarray")return ha(c,n,s);if(t==="declare"||t==="typeset")return ta(c,n);if(t==="readonly")return na(c,n);if(!i){let f=c.state.functions.get(t);if(f)return Xs(c,f,n,s,void 0,l)}if(t==="__just_bash_tee_restore"){if(n.length===0||n.length>c.limits.maxArrayElements)return T(`bash: invalid internal pipeline status restore
765
- `,2);let f=[];for(let p of n){if(!/^(?:0|[1-9][0-9]{0,2})$/.test(p))return T(`bash: invalid internal pipeline status restore
766
- `,2);let m=Number(p);if(!Number.isSafeInteger(m)||m>255)return T(`bash: invalid internal pipeline status restore
767
- `,2);f.push(m)}let d=f[f.length-1]??0,h=[...f].reverse().find(p=>p!==0);return{stdout:"",stderr:"",exitCode:c.state.options.pipefail&&h!==void 0?h:d,internalPipeStatusOverride:f}}if(t==="eval")return Js(c,n,s,l);if(t==="cd")return await Ao(c,n);if(t===":"||t==="true")return re;if(t==="false")return be(!1);if(t==="let")return fa(c,n);if(t==="command")return Ym(e,n,s,l);if(t==="builtin")return Jm(e,n,s,l);if(t==="shopt")return Cf(c,n);if(t==="exec"){if(n.length===0)return re;let[f,...d]=n;return{...await u(f,d,[],s,!1,!1,-1,l),internalProducerOmitsShellPrefix:!0}}if(t==="wait")return re;if(t==="type")return await Ff(c,n,f=>Wf(c,f),f=>ss(c,f));if(t==="hash")return ca(c,n);if(t==="help")return ua(c,n);if(t==="["||t==="test"){let f=n;if(t==="["){if(n[n.length-1]!=="]")return T("[: missing `]'\n",2);f=n.slice(0,-1)}return $r(c,f)}return null}async function Ym(e,t,n,r=!1){let{ctx:s,runCommand:i}=e;if(t.length===0)return re;let o=!1,a=!1,l=!1,c=t;for(;c.length>0&&c[0].startsWith("-");){let d=c[0];if(d==="--"){c=c.slice(1);break}for(let h of d.slice(1))h==="p"?o=!0:h==="V"?a=!0:h==="v"&&(l=!0);c=c.slice(1)}if(c.length===0)return re;if(l||a)return await Bf(s,c,l,a);let[u,...f]=c;return i(u,f,[],n,!0,o,-1,r)}async function Jm(e,t,n,r=!1){let{runCommand:s}=e;if(t.length===0)return re;let i=t;if(i[0]==="--"&&(i=i.slice(1),i.length===0))return re;let o=i[0];if(o!=="__just_bash_tee_restore"&&!an.has(o))return T(`bash: builtin: ${o}: not a shell builtin
768
- `);let[,...a]=i;return s(o,a,[],n,!0,!1,-1,r)}async function Uf(e,t,n,r,s){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await rs(i,t,s?"/usr/bin:/bin":void 0);if(!c){i.executionScope.recordUnresolvedCommand(t);let A=i.executionScope.abortOnUnresolvedCommands;if(_u(t)){let k=`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
769
- `;if(A)throw new Ne(t,"",k);return T(k,127)}if(A)throw new Ne(t,"",`bash: ${t}: command not found
770
- `);return T(`bash: ${t}: command not found
771
- `,127)}if("error"in c)return c.error==="permission_denied"?T(`bash: ${t}: Permission denied
772
- `,126):T(`bash: ${t}: No such file or directory
773
- `,127);if("script"in c)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,c.path)),await a(c.path,n,r);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=r||i.state.groupStdin||"",h=!1,p=o();i.state.fileDescriptors??=new Map;let m={fs:i.fs,fsIdentity:Xr(i.fs),cwd:i.state.cwd,env:i.state.env,assignShellVariable:async(A,k,v)=>{if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(A))throw new Error(`${A}: not a valid identifier`);let x=v===void 0?A:`${A}[${v}]`,R=ws(i,A,k);if(R===void 0)throw new Error(`${A}: circular name reference`);if(R===null)return;let P=R.match(/^([a-zA-Z_][a-zA-Z0-9_]*)(?:\[(.*)\])?$/);if(!P)throw new Error(`${x}: not a valid identifier`);let C=P[1],O=P[2]??v;if(Ge(i,A)||Ge(i,C))throw new Error(`${C}: readonly variable`);if(O===void 0)i.state.env.set(C,k);else{let W=i.state.associativeArrays?.has(C)?"associative":"indexed";if(W==="associative"){G(i,C,O,k,W);return}let K=await Pa(i,C,O);if(K.error)throw new q(K.error.exitCode,K.error.stdout,K.error.stderr);G(i,C,K.index,k,W)}},exportedEnv:p,get stdin(){return h=!0,d},limits:i.limits,executionScope:u.internalIsExtension?sl(i.executionScope):i.executionScope,exec:(A,k)=>i.execFn(A,k,!1),execWithInheritedStdin:(A,k)=>i.execFn(A,{...k,stdin:d,stdinKind:"bytes"},!0),fetch:i.fetch,getRegisteredCommands:()=>Array.from(i.commands.keys()),sleep:i.sleep,trace:i.trace,fileDescriptors:i.state.fileDescriptors,xpgEcho:i.state.shoptOptions.xpg_echo,coverage:i.coverage,signal:i.state.signal,requireDefenseContext:i.requireDefenseContext,jsBootstrapCode:i.jsBootstrapCode,invokeTool:i.invokeTool},E=u.internalOriginalCommand,b=()=>{};if(E){let A=Object.getOwnPropertyDescriptors(m);A.executionScope={value:i.executionScope,enumerable:!0,configurable:!0,writable:!0};let k=Object.defineProperties(Object.create(Object.getPrototypeOf(m)),A),v=Vf(k,E.name),x=ka(v.context,E.name);b=v.revoke,m.origCommand=R=>{let P=()=>E.execute(R,x);return E.trusted?We.runTrustedAsync(P):We.runUntrustedAsync(P)}}let g=Vf(m,t),y=ka(g.context,t),S=()=>{g.revoke(),b()};try{let A=()=>Ua(i.requireDefenseContext,"command",`${t} execution`,()=>u.execute(n,y)),k=()=>Xm(A,y,S,t,i.executionScope,i.state.signal),v=u.trusted?await We.runTrustedAsync(k):await k();return{...v,internalStdinConsumed:v.internalStdinConsumed??(h?r.length:0)}}catch(A){return Hr(A),T(`${t}: ${Ct(zt(A))}
774
- `)}}async function xa(e,t){let n=e.state.inCondition;e.state.inCondition=!0;let r=new rn(e.executionScope,"condition"),s=0;try{for(let i of t){let o=await e.executeStatement(i);r.appendResult(o),s=o.exitCode}}catch(i){throw r.prependTo(i),i}finally{e.state.inCondition=n}return r.build(s)}function _r(e,t,n,r){if(e instanceof et)return t+=e.stdout,n+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=n,{action:"rethrow",stdout:t,stderr:n,error:e}):{action:"break",stdout:t,stderr:n};if(e instanceof tt)return t+=e.stdout,n+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=n,{action:"rethrow",stdout:t,stderr:n,error:e}):{action:"continue",stdout:t,stderr:n};if(Gr(e)||e instanceof Me||e instanceof Ze||e instanceof q)return e instanceof Xt&&e.prependOutput(t,n),{action:"rethrow",stdout:t,stderr:n,error:e};let s=zt(e);return{action:"error",stdout:t,stderr:`${n}${s}
775
- `,exitCode:1}}function jf(e,t){return e!==void 0?{owns:!0,stdin:e}:t!==""?{owns:!0,stdin:t}:{owns:!1}}var vn=class{ctx;stdoutChunks=[];stderrChunks=[];totalBytes=0;constructor(t){this.ctx=t}append(t,n){let r=B(t)+B(n);r>this.ctx.limits.maxOutputSize-this.totalBytes&&mn(`total output size exceeded (>${this.ctx.limits.maxOutputSize} bytes), increase executionLimits.maxOutputSize`,"output_size"),t&&this.stdoutChunks.push(t),n&&this.stderrChunks.push(n),this.totalBytes+=r}appendUnaccounted(t,n){this.ctx.executionScope.appendOutput("stdout",t,"control-flow"),this.ctx.executionScope.appendOutput("stderr",n,"control-flow"),this.append(t,n)}replace(t,n){this.stdoutChunks=[],this.stderrChunks=[],this.totalBytes=0,this.append(t,n)}get stdout(){return this.stdoutChunks.join("")}get stderr(){return this.stderrChunks.join("")}build(t){let n=this.stdout,r=this.stderr;return{stdout:n,stderr:r,exitCode:t,internalOutputAccounting:{stdout:B(n),stderr:B(r)}}}};async function $a(e,t,n){let r=0;try{for(let s of t){let i=await e.executeStatement(s);n.append(i.stdout,i.stderr),r=i.exitCode}}catch(s){if(qr(s)||s instanceof Ze||s instanceof q||s instanceof Ne||s instanceof $||s instanceof Jt)throw s.prependOutput(n.stdout,n.stderr),s;return n.appendUnaccounted("",`${zt(s)}
776
- `),n.build(1)}return n.build(r)}async function qf(e,t){return lt(e,t.redirections,"",()=>ey(e,t))}async function ey(e,t){let n=new vn(e);for(let r of t.clauses){let s=await xa(e,r.condition);if(n.append(s.stdout,s.stderr),s.exitCode===0)return $a(e,r.body,n)}return t.elseBody?$a(e,t.elseBody,n):n.build(0)}async function Gf(e,t){return lt(e,t.redirections,"",()=>ty(e,t))}async function ty(e,t){let n=new vn(e),r=0,s=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return T(`bash: \`${t.variable}': not a valid identifier
777
- `);let i=[];if(t.words===null)i=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)i=[];else try{for(let o of t.words){let a=await kt(e,o);Ie(i,a.values,e.limits.maxArrayElements,"for-loop expansion")}}catch(o){if(o instanceof Yt)return{stdout:"",stderr:o.stderr,exitCode:1};throw o}e.state.loopDepth++;try{for(let o of i){s++,s>e.limits.maxLoopIterations&&mn(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n.stdout,n.stderr),e.state.env.set(t.variable,o);try{for(let a of t.body){let l=await e.executeStatement(a);n.append(l.stdout,l.stderr),r=l.exitCode}}catch(a){let l=_r(a,n.stdout,n.stderr,e.state.loopDepth);if(n.replace(l.stdout,l.stderr),l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return n.build(l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return n.build(r)}async function Hf(e,t){return lt(e,t.redirections,"",()=>ny(e,t))}async function ny(e,t){let n=t.line;n!==void 0&&(e.state.currentLine=n);let r=new vn(e),s=0,i=0;t.init&&await J(e,t.init.expression),e.state.loopDepth++;try{for(;i++,i>e.limits.maxLoopIterations&&mn(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r.stdout,r.stderr),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await J(e,t.condition.expression)===0));){try{for(let o of t.body){let a=await e.executeStatement(o);r.append(a.stdout,a.stderr),s=a.exitCode}}catch(o){let a=_r(o,r.stdout,r.stderr,e.state.loopDepth);if(r.replace(a.stdout,a.stderr),a.action==="break")break;if(a.action==="continue"){t.update&&await J(e,t.update.expression);continue}if(a.action==="error")return r.build(a.exitCode??1);throw a.error}t.update&&await J(e,t.update.expression)}}finally{e.state.loopDepth--}return r.build(s)}async function Zf(e,t,n=""){return lt(e,t.redirections,n,r=>ry(e,t,n,r))}async function ry(e,t,n,r){let s=new vn(e),i=0,o=0,a=jf(r.stdin,n),l=e.state.groupStdin;a.owns&&(e.state.groupStdin=a.stdin),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&mn(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s.stdout,s.stderr);let c=0,u=!1,f=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let h of t.condition){let p=await e.executeStatement(h);s.append(p.stdout,p.stderr),c=p.exitCode}}catch(h){if(h instanceof et){if(s.append(h.stdout,h.stderr),h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=s.stdout,h.stderr=s.stderr,e.state.inCondition=d,h;u=!0}else if(h instanceof tt){if(s.append(h.stdout,h.stderr),h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=s.stdout,h.stderr=s.stderr,e.state.inCondition=d,h;f=!0}else throw e.state.inCondition=d,h}finally{e.state.inCondition=d}if(u)break;if(!f){if(c!==0)break;try{for(let h of t.body){let p=await e.executeStatement(h);s.append(p.stdout,p.stderr),i=p.exitCode}}catch(h){let p=_r(h,s.stdout,s.stderr,e.state.loopDepth);if(s.replace(p.stdout,p.stderr),p.action==="break")break;if(p.action==="continue")continue;if(p.action==="error")return s.build(p.exitCode??1);throw p.error}}}}finally{e.state.loopDepth--,a.owns&&(e.state.groupStdin=l)}return s.build(i)}async function Qf(e,t,n=""){return lt(e,t.redirections,n,r=>sy(e,t,n,r))}async function sy(e,t,n,r){let s=new vn(e),i=0,o=0,a=jf(r.stdin,n),l=e.state.groupStdin;a.owns&&(e.state.groupStdin=a.stdin),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&mn(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s.stdout,s.stderr);let c=await xa(e,t.condition);if(s.append(c.stdout,c.stderr),c.exitCode===0)break;try{for(let u of t.body){let f=await e.executeStatement(u);s.append(f.stdout,f.stderr),i=f.exitCode}}catch(u){let f=_r(u,s.stdout,s.stderr,e.state.loopDepth);if(s.replace(f.stdout,f.stderr),f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error")return s.build(f.exitCode??1);throw f.error}}}finally{e.state.loopDepth--,a.owns&&(e.state.groupStdin=l)}return s.build(i)}async function Kf(e,t){return lt(e,t.redirections,"",()=>iy(e,t))}async function iy(e,t){let n=new vn(e),r=0,s=await oe(e,t.word),i=!1;for(let o=0;o<t.items.length;o++){let a=t.items[o],l=i;if(!i)for(let c of a.patterns){let u=await oe(e,c);ku(c)&&(u=it(u));let f=e.state.shoptOptions.nocasematch,d=e.state.shoptOptions.extglob;if(Jn(s,u,f,d,e.limits.maxCallDepth)){l=!0;break}}if(l){let c=await $a(e,a.body,n);if(n.replace(c.stdout,c.stderr),r=c.exitCode,a.terminator===";;")break;a.terminator===";&"?i=!0:i=!1}else i=!1}return n.build(r)}function Ca(e,t){if(e.parts.length!==1)return!1;let n=e.parts[0];return n.type!=="Literal"?!1:t.includes(n.value)}async function Xf(e,t,n){let r=t.timed?vi():0,s="",i=re,o=0,a=[],l="",c=0,u=t.commands.length>1,f=e.state.lastArg,d=e.state.groupStdin,h=e.state.groupStdinSourceFd;for(let g=0;g<t.commands.length;g++){let y=t.commands[g],S=g===t.commands.length-1,A=g===0;u&&(e.state.lastArg="",e.state.groupStdin=A?d:void 0,e.state.groupStdinSourceFd=A?h:void 0);let k=u&&(!S||!e.state.shoptOptions.lastpipe),v=k?new Map(e.state.env):null,x=k?ft(e.state.arrays):null,R,P=e.executionScope.outputBytesUsed;try{e.state.commandCount=e.executionScope.chargeCommand(),R=await n(y,s)}catch(C){if(C instanceof nt)R={stdout:C.stdout,stderr:C.stderr,exitCode:1};else if(C instanceof q&&t.commands.length>1)R={stdout:C.stdout,stderr:C.stderr,exitCode:C.exitCode};else if(C instanceof Ze&&t.commands.length>1)R={stdout:C.stdout,stderr:C.stderr,exitCode:C.exitCode};else throw v&&(e.state.env=v,e.state.arrays=x??new Map),C}finally{u&&(A&&(d=e.state.groupStdin,h=e.state.groupStdinSourceFd),e.state.groupStdin=d,e.state.groupStdinSourceFd=h)}if(v&&(e.state.env=v,e.state.arrays=x??new Map),R=e.executionScope.accountResult(R,"pipeline",e.executionScope.outputBytesUsed-P),!S){let C=t.pipeStderr?.[g]??!1,O=R.internalOutputAccounting?.stdout??0,W=C?R.internalOutputAccounting?.stderr??0:0;il(e.executionScope,O+W,"pipeline"),R={...R,internalOutputAccounting:{stdout:0,stderr:C?0:R.internalOutputAccounting?.stderr??0}}}a.push(R.exitCode),R.exitCode!==0&&(o=R.exitCode),S?i=R:(t.pipeStderr?.[g]??!1?s=Kt(R.stderr)+Vt(R):(s=Vt(R),l+=R.stderr,c+=R.internalOutputAccounting?.stderr??0),i={stdout:"",stderr:"",exitCode:R.exitCode})}l&&(i={...i,stderr:l+i.stderr,internalOutputAccounting:{stdout:i.internalOutputAccounting?.stdout??0,stderr:c+(i.internalOutputAccounting?.stderr??0)}});let p=t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand",m=i.internalPipeStatusOverride??a;if(p){Ee(e,"PIPESTATUS");for(let g=0;g<m.length;g++)G(e,"PIPESTATUS",g,String(m[g]))}if(e.state.options.pipefail&&o!==0&&(i={...i,exitCode:o}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let y=(vi()-r)/1e3,S=Math.floor(y/60),A=y%60,k;t.timePosix?k=`real ${y.toFixed(2)}
765
+ `),o=1}return F(s,i,o)}async function Qf(e,t){if(t.includes("/")){let s=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(s)){try{let i=await e.fs.stat(s);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let r=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let s of r){if(!s)continue;let o=`${s.startsWith("/")?s:e.fs.resolvePath(e.state.cwd,s)}/${t}`;if(await e.fs.exists(o)){try{let a=await e.fs.stat(o);if(a.isDirectory||(a.mode&73)===0)continue}catch{continue}return`${s}/${t}`}}if(e.commands.has(t)){for(let s of r)if(s==="/usr/bin"||s==="/bin")return`${s}/${t}`;return`/usr/bin/${t}`}return null}function Kf(e,t){let n=!0,r=e.signal?new AbortController:void 0,s=new WeakMap,i=()=>{if(!n)throw new st("",`bash: ${t} used its context after cancellation
766
+ `)},o=f=>{if(f===null||typeof f!="object"&&typeof f!="function")return f;let d=s.get(f);if(d!==void 0)return d;if(typeof f=="object"&&sl(f))return f;if(f instanceof Uint8Array){let E=new Uint8Array(f);return s.set(f,E),E}if(f instanceof ArrayBuffer){let E=f.slice(0);return s.set(f,E),E}if(f instanceof Promise){let E=f.then(S=>(i(),o(S)));return s.set(f,E),E}if(typeof f=="function"){let E=function(...S){return i(),o(Reflect.apply(f,this,S))};return s.set(f,E),E}let h=Object.getPrototypeOf(f);if(Array.isArray(f)||h===Object.prototype||h===null){let E=Array.isArray(f)?[]:Object.create(h);s.set(f,E);let S=Object.getOwnPropertyDescriptors(f);for(let g of Object.values(S)){if("value"in g){let y=g.value;g.value=typeof y=="function"?(...b)=>(i(),o(Reflect.apply(y,f,b))):o(y)}if(g.get){let y=g.get;g.get=()=>(i(),o(Reflect.apply(y,f,[])))}if(g.set){let y=g.set;g.set=b=>{i(),Reflect.apply(y,f,[b])}}}return Object.defineProperties(E,S),E}let p=new Map,m=new Qa(f,{get(E,S){if(i(),S==="constructor"||S==="prototype"||S==="__proto__")throw new Error(`${t}: unsafe context property access`);let g=Reflect.get(E,S,E);if(typeof g!="function")return o(g);if(p.has(S))return p.get(S);let y=(...b)=>(i(),o(Reflect.apply(g,E,b)));return p.set(S,y),y},set(E,S,g){if(i(),S==="constructor"||S==="prototype"||S==="__proto__")throw new Error(`${t}: unsafe context property access`);return Reflect.set(E,S,g,E)}});return s.set(f,m),m},a=f=>o(f),l=f=>f&&((...d)=>(i(),o(f(...d)))),c=f=>({value:f,enumerable:!0,configurable:!0,writable:!0}),u=Object.getOwnPropertyDescriptors(e);return Object.assign(u,{fs:c(a(e.fs)),env:c(a(e.env)),limits:c(Object.freeze({...e.limits})),exportedEnv:c(e.exportedEnv?Object.freeze({...e.exportedEnv}):void 0),executionScope:c(e.executionScope?a(e.executionScope):void 0),fileDescriptors:c(e.fileDescriptors?a(e.fileDescriptors):void 0),coverage:c(e.coverage?a(e.coverage):void 0),assignShellVariable:c(l(e.assignShellVariable)),exec:c(l(e.exec)),origCommand:c(l(e.origCommand)),execWithInheritedStdin:c(l(e.execWithInheritedStdin)),fetch:c(l(e.fetch)),getRegisteredCommands:c(l(e.getRegisteredCommands)),sleep:c(l(e.sleep)),trace:c(l(e.trace)),invokeTool:c(l(e.invokeTool)),signal:c(r?.signal)}),{context:Object.defineProperties(Object.create(Object.getPrototypeOf(e)),u),revoke(){n=!1,r?.signal.aborted||r?.abort(new st("",`bash: ${t} context revoked
767
+ `))}}}async function uy(e,t,n,r,s,i){let o=s.remainingTimeMs()??t.limits.maxExecutionTimeMs,a=t.limits.maxExtensionCleanupTimeMs,l,c,u,d=Promise.resolve().then(e).then(p=>({kind:"result",result:p}),p=>({kind:"error",error:p})),h=new Promise(p=>{let m=()=>{n(),p({kind:"abort"})};c=m,i?.addEventListener("abort",m,{once:!0}),i?.aborted&&m(),l=hr(()=>{n(),p({kind:"deadline"})},o)});try{let p=await Promise.race([d,h]);if(p.kind==="result")return p.result;if(p.kind==="error")throw p.error;n();let m=await Promise.race([d.then(()=>!0),new Promise(S=>{u=hr(()=>S(!1),a)})]),E=p.kind==="deadline"?new st("",`bash: ${r} exceeded its execution deadline
768
+ `):new st("",`bash: execution aborted
769
+ `);throw m||s.poisonAfterAbort(E),E}finally{n(),pr(l),pr(u),c&&i?.removeEventListener("abort",c)}}var Xf={export:(e,t)=>ya(e.ctx,t),unset:(e,t)=>Ca(e.ctx,t),exit:(e,t)=>ma(e.ctx,t),local:(e,t)=>ba(e.ctx,t),set:(e,t)=>xa(e.ctx,t),break:(e,t)=>No(e.ctx,t),continue:(e,t)=>ra(e.ctx,t),return:(e,t)=>Aa(e.ctx,t),shift:(e,t)=>Pa(e.ctx,t),getopts:(e,t)=>li(e.ctx,t),compgen:(e,t)=>Yo(e.ctx,t),complete:(e,t)=>ta(e.ctx,t),compopt:(e,t)=>na(e.ctx,t),pushd:(e,t)=>fa(e.ctx,t),popd:(e,t)=>da(e.ctx,t),dirs:(e,t)=>ha(e.ctx,t),source:(e,t)=>fi(e.ctx,t),".":(e,t)=>fi(e.ctx,t),read:(e,t,n)=>Sa(e.ctx,t,n.stdin,n.stdinSourceFd),mapfile:(e,t,n)=>ci(e.ctx,t,n.stdin),readarray:(e,t,n)=>ci(e.ctx,t,n.stdin),declare:(e,t)=>ai(e.ctx,t),typeset:(e,t)=>ai(e.ctx,t),readonly:(e,t)=>ca(e.ctx,t),eval:(e,t,n)=>pa(e.ctx,t,n.stdin,n.stdinRedirected),cd:(e,t)=>Ro(e.ctx,t),":":()=>se,true:()=>se,false:()=>Se(!1),let:(e,t)=>Ea(e.ctx,t),command:(e,t,n)=>fy(e,t,n.stdin,n.stdinRedirected),builtin:(e,t,n)=>dy(e,t,n.stdin,n.stdinRedirected),shopt:(e,t)=>hf(e.ctx,t),exec:async(e,t,n)=>{if(t.length===0)return se;let[r,...s]=t;return{...await e.runCommand(r,s,[],n.stdin,!1,!1,-1,n.stdinRedirected),internalProducerOmitsShellPrefix:!0}},wait:()=>se,type:(e,t)=>Gf(e.ctx,t,n=>Qf(e.ctx,n),n=>us(e.ctx,n)),hash:(e,t)=>ga(e.ctx,t),help:(e,t)=>wa(e.ctx,t),"[":(e,t)=>t[t.length-1]!=="]"?_("[: missing `]'\n",2):rr(e.ctx,t.slice(0,-1)),test:(e,t)=>rr(e.ctx,t)};async function Yf(e,t,n,r,s,i,o,a,l=!1){let{ctx:c}=e;c.coverage&&Dt.has(t)&&c.coverage.hit(`bash:builtin:${t}`);let u={stdin:s,stdinRedirected:l,stdinSourceFd:a},f=ml(t),d=(f==="early"||f==="late")&&Object.hasOwn(Xf,t)?Xf[t]:void 0;if(d&&(f==="early"||c.state.options.posix&&yl(t)))return d(e,n,u);if(!i){let h=c.state.functions.get(t);if(h)return ri(c,h,n,s,void 0,l)}if(t==="__just_bash_tee_restore"){if(n.length===0||n.length>c.limits.maxArrayElements)return _(`bash: invalid internal pipeline status restore
770
+ `,2);let h=[];for(let E of n){if(!/^(?:0|[1-9][0-9]{0,2})$/.test(E))return _(`bash: invalid internal pipeline status restore
771
+ `,2);let S=Number(E);if(!Number.isSafeInteger(S)||S>255)return _(`bash: invalid internal pipeline status restore
772
+ `,2);h.push(S)}let p=h[h.length-1]??0,m=[...h].reverse().find(E=>E!==0);return{stdout:"",stderr:"",exitCode:c.state.options.pipefail&&m!==void 0?m:p,internalPipeStatusOverride:h}}return d&&f==="late"?d(e,n,u):null}async function fy(e,t,n,r=!1){let{ctx:s,runCommand:i}=e;if(t.length===0)return se;let o=!1,a=!1,l=!1,c=t;for(;c.length>0&&c[0].startsWith("-");){let d=c[0];if(d==="--"){c=c.slice(1);break}for(let h of d.slice(1))h==="p"?o=!0:h==="V"?a=!0:h==="v"&&(l=!0);c=c.slice(1)}if(c.length===0)return se;if(l||a)return await Zf(s,c,l,a);let[u,...f]=c;return i(u,f,[],n,!0,o,-1,r)}async function dy(e,t,n,r=!1){let{runCommand:s}=e;if(t.length===0)return se;let i=t;if(i[0]==="--"&&(i=i.slice(1),i.length===0))return se;let o=i[0];if(o!=="__just_bash_tee_restore"&&!Dt.has(o))return _(`bash: builtin: ${o}: not a shell builtin
773
+ `);let[,...a]=i;return s(o,a,[],n,!0,!1,-1,r)}async function Jf(e,t,n,r,s){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await cs(i,t,s?"/usr/bin:/bin":void 0);if(!c){i.executionScope.recordUnresolvedCommand(t);let A=i.executionScope.abortOnUnresolvedCommands;if(zu(t)){let k=`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
774
+ `;if(A)throw new Re(t,"",k);return _(k,127)}if(A)throw new Re(t,"",`bash: ${t}: command not found
775
+ `);return _(`bash: ${t}: command not found
776
+ `,127)}if("error"in c)return c.error==="permission_denied"?_(`bash: ${t}: Permission denied
777
+ `,126):_(`bash: ${t}: No such file or directory
778
+ `,127);if("script"in c)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,c.path)),await a(c.path,n,r);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=r||i.state.groupStdin||"",h=!1,p=o();i.state.fileDescriptors??=new Map;let m={fs:i.fs,fsIdentity:rs(i.fs),cwd:i.state.cwd,env:i.state.env,assignShellVariable:async(A,k,v)=>{if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(A))throw new Error(`${A}: not a valid identifier`);let $=v===void 0?A:`${A}[${v}]`,O=ks(i,A,k);if(O===void 0)throw new Error(`${A}: circular name reference`);if(O===null)return;let P=O.match(/^([a-zA-Z_][a-zA-Z0-9_]*)(?:\[(.*)\])?$/);if(!P)throw new Error(`${$}: not a valid identifier`);let N=P[1],D=P[2]??v;if(He(i,A)||He(i,N))throw new Error(`${N}: readonly variable`);if(D===void 0)i.state.env.set(N,k);else{let V=i.state.associativeArrays?.has(N)?"associative":"indexed";if(V==="associative"){H(i,N,D,k,V);return}let X=await Ra(i,N,D);if(X.error)throw new G(X.error.exitCode,X.error.stdout,X.error.stderr);H(i,N,X.index,k,V)}},exportedEnv:p,get stdin(){return h=!0,d},limits:i.limits,executionScope:u.internalIsExtension?cl(i.executionScope):i.executionScope,exec:(A,k)=>i.execFn(A,k,!1),execWithInheritedStdin:(A,k)=>i.execFn(A,{...k,stdin:d,stdinKind:"bytes"},!0),fetch:i.fetch,getRegisteredCommands:()=>Array.from(i.commands.keys()),sleep:i.sleep,trace:i.trace,fileDescriptors:i.state.fileDescriptors,xpgEcho:i.state.shoptOptions.xpg_echo,coverage:i.coverage,signal:i.state.signal,requireDefenseContext:i.requireDefenseContext,jsBootstrapCode:i.jsBootstrapCode,invokeTool:i.invokeTool},E=u.internalOriginalCommand,S=()=>{};if(E){let A=Object.getOwnPropertyDescriptors(m);A.executionScope={value:i.executionScope,enumerable:!0,configurable:!0,writable:!0};let k=Object.defineProperties(Object.create(Object.getPrototypeOf(m)),A),v=Kf(k,E.name),$=Na(v.context,E.name);S=v.revoke,m.origCommand=O=>{let P=()=>E.execute(O,$);return E.trusted?Ve.runTrustedAsync(P):Ve.runUntrustedAsync(P)}}let g=Kf(m,t),y=Na(g.context,t),b=()=>{g.revoke(),S()};try{let A=()=>Za(i.requireDefenseContext,"command",`${t} execution`,()=>u.execute(n,y)),k=()=>uy(A,y,b,t,i.executionScope,i.state.signal),v=u.trusted?await Ve.runTrustedAsync(k):await k();return{...v,internalStdinConsumed:v.internalStdinConsumed??(h?r.length:0)}}catch(A){return Yr(A),_(`${t}: ${Ot(jt(A))}
779
+ `)}}async function Oa(e,t){let n=e.state.inCondition;e.state.inCondition=!0;let r=new an(e.executionScope,"condition"),s=0;try{for(let i of t){let o=await e.executeStatement(i);r.appendResult(o),s=o.exitCode}}catch(i){throw r.prependTo(i),i}finally{e.state.inCondition=n}return r.build(s)}function Wr(e,t,n,r){if(e instanceof tt)return t+=e.stdout,n+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=n,{action:"rethrow",stdout:t,stderr:n,error:e}):{action:"break",stdout:t,stderr:n};if(e instanceof nt)return t+=e.stdout,n+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=n,{action:"rethrow",stdout:t,stderr:n,error:e}):{action:"continue",stdout:t,stderr:n};if(Xr(e)||e instanceof Be||e instanceof Qe||e instanceof G)return e instanceof Jt&&e.prependOutput(t,n),{action:"rethrow",stdout:t,stderr:n,error:e};let s=jt(e);return{action:"error",stdout:t,stderr:`${n}${s}
780
+ `,exitCode:1}}function ed(e,t){return e!==void 0?{owns:!0,stdin:e}:t!==""?{owns:!0,stdin:t}:{owns:!1}}var xn=class{ctx;stdoutChunks=[];stderrChunks=[];totalBytes=0;constructor(t){this.ctx=t}append(t,n){let r=W(t)+W(n);r>this.ctx.limits.maxOutputSize-this.totalBytes&&gn(`total output size exceeded (>${this.ctx.limits.maxOutputSize} bytes), increase executionLimits.maxOutputSize`,"output_size"),t&&this.stdoutChunks.push(t),n&&this.stderrChunks.push(n),this.totalBytes+=r}appendUnaccounted(t,n){this.ctx.executionScope.appendOutput("stdout",t,"control-flow"),this.ctx.executionScope.appendOutput("stderr",n,"control-flow"),this.append(t,n)}replace(t,n){this.stdoutChunks=[],this.stderrChunks=[],this.totalBytes=0,this.append(t,n)}get stdout(){return this.stdoutChunks.join("")}get stderr(){return this.stderrChunks.join("")}build(t){let n=this.stdout,r=this.stderr;return{stdout:n,stderr:r,exitCode:t,internalOutputAccounting:{stdout:W(n),stderr:W(r)}}}};async function Da(e,t,n){let r=0;try{for(let s of t){let i=await e.executeStatement(s);n.append(i.stdout,i.stderr),r=i.exitCode}}catch(s){if(Kr(s)||s instanceof Qe||s instanceof G||s instanceof Re||s instanceof C||s instanceof tn)throw s.prependOutput(n.stdout,n.stderr),s;return n.appendUnaccounted("",`${jt(s)}
781
+ `),n.build(1)}return n.build(r)}async function td(e,t){return ct(e,t.redirections,"",()=>hy(e,t))}async function hy(e,t){let n=new xn(e);for(let r of t.clauses){let s=await Oa(e,r.condition);if(n.append(s.stdout,s.stderr),s.exitCode===0)return Da(e,r.body,n)}return t.elseBody?Da(e,t.elseBody,n):n.build(0)}async function nd(e,t){return ct(e,t.redirections,"",()=>py(e,t))}async function py(e,t){let n=new xn(e),r=0,s=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return _(`bash: \`${t.variable}': not a valid identifier
782
+ `);let i=[];if(t.words===null)i=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)i=[];else try{for(let o of t.words){let a=await Ct(e,o);Te(i,a.values,e.limits.maxArrayElements,"for-loop expansion")}}catch(o){if(o instanceof en)return{stdout:"",stderr:o.stderr,exitCode:1};throw o}e.state.loopDepth++;try{for(let o of i){s++,s>e.limits.maxLoopIterations&&gn(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n.stdout,n.stderr),e.state.env.set(t.variable,o);try{for(let a of t.body){let l=await e.executeStatement(a);n.append(l.stdout,l.stderr),r=l.exitCode}}catch(a){let l=Wr(a,n.stdout,n.stderr,e.state.loopDepth);if(n.replace(l.stdout,l.stderr),l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return n.build(l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return n.build(r)}async function rd(e,t){return ct(e,t.redirections,"",()=>my(e,t))}async function my(e,t){let n=t.line;n!==void 0&&(e.state.currentLine=n);let r=new xn(e),s=0,i=0;t.init&&await ee(e,t.init.expression),e.state.loopDepth++;try{for(;i++,i>e.limits.maxLoopIterations&&gn(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r.stdout,r.stderr),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await ee(e,t.condition.expression)===0));){try{for(let o of t.body){let a=await e.executeStatement(o);r.append(a.stdout,a.stderr),s=a.exitCode}}catch(o){let a=Wr(o,r.stdout,r.stderr,e.state.loopDepth);if(r.replace(a.stdout,a.stderr),a.action==="break")break;if(a.action==="continue"){t.update&&await ee(e,t.update.expression);continue}if(a.action==="error")return r.build(a.exitCode??1);throw a.error}t.update&&await ee(e,t.update.expression)}}finally{e.state.loopDepth--}return r.build(s)}async function sd(e,t,n=""){return ct(e,t.redirections,n,r=>yy(e,t,n,r))}async function yy(e,t,n,r){let s=new xn(e),i=0,o=0,a=ed(r.stdin,n),l=e.state.groupStdin;a.owns&&(e.state.groupStdin=a.stdin),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&gn(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s.stdout,s.stderr);let c=0,u=!1,f=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let h of t.condition){let p=await e.executeStatement(h);s.append(p.stdout,p.stderr),c=p.exitCode}}catch(h){if(h instanceof tt){if(s.append(h.stdout,h.stderr),h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=s.stdout,h.stderr=s.stderr,e.state.inCondition=d,h;u=!0}else if(h instanceof nt){if(s.append(h.stdout,h.stderr),h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=s.stdout,h.stderr=s.stderr,e.state.inCondition=d,h;f=!0}else throw e.state.inCondition=d,h}finally{e.state.inCondition=d}if(u)break;if(!f){if(c!==0)break;try{for(let h of t.body){let p=await e.executeStatement(h);s.append(p.stdout,p.stderr),i=p.exitCode}}catch(h){let p=Wr(h,s.stdout,s.stderr,e.state.loopDepth);if(s.replace(p.stdout,p.stderr),p.action==="break")break;if(p.action==="continue")continue;if(p.action==="error")return s.build(p.exitCode??1);throw p.error}}}}finally{e.state.loopDepth--,a.owns&&(e.state.groupStdin=l)}return s.build(i)}async function id(e,t,n=""){return ct(e,t.redirections,n,r=>gy(e,t,n,r))}async function gy(e,t,n,r){let s=new xn(e),i=0,o=0,a=ed(r.stdin,n),l=e.state.groupStdin;a.owns&&(e.state.groupStdin=a.stdin),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&gn(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s.stdout,s.stderr);let c=await Oa(e,t.condition);if(s.append(c.stdout,c.stderr),c.exitCode===0)break;try{for(let u of t.body){let f=await e.executeStatement(u);s.append(f.stdout,f.stderr),i=f.exitCode}}catch(u){let f=Wr(u,s.stdout,s.stderr,e.state.loopDepth);if(s.replace(f.stdout,f.stderr),f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error")return s.build(f.exitCode??1);throw f.error}}}finally{e.state.loopDepth--,a.owns&&(e.state.groupStdin=l)}return s.build(i)}async function od(e,t){return ct(e,t.redirections,"",()=>wy(e,t))}async function wy(e,t){let n=new xn(e),r=0,s=await ae(e,t.word),i=!1;for(let o=0;o<t.items.length;o++){let a=t.items[o],l=i;if(!i)for(let c of a.patterns){let u=await ae(e,c);Ou(c)&&(u=ot(u));let f=e.state.shoptOptions.nocasematch,d=e.state.shoptOptions.extglob;if(nr(s,u,f,d,e.limits.maxCallDepth)){l=!0;break}}if(l){let c=await Da(e,a.body,n);if(n.replace(c.stdout,c.stderr),r=c.exitCode,a.terminator===";;")break;a.terminator===";&"?i=!0:i=!1}else i=!1}return n.build(r)}function Ia(e,t){if(e.parts.length!==1)return!1;let n=e.parts[0];return n.type!=="Literal"?!1:t.includes(n.value)}async function ad(e,t,n){let r=t.timed?Oi():0,s="",i=se,o=0,a=[],l="",c=0,u=t.commands.length>1,f=e.state.lastArg,d=e.state.groupStdin,h=e.state.groupStdinSourceFd;for(let g=0;g<t.commands.length;g++){let y=t.commands[g],b=g===t.commands.length-1,A=g===0;u&&(e.state.lastArg="",e.state.groupStdin=A?d:void 0,e.state.groupStdinSourceFd=A?h:void 0);let k=u&&(!b||!e.state.shoptOptions.lastpipe),v=k?new Map(e.state.env):null,$=k?ht(e.state.arrays):null,O,P=e.executionScope.outputBytesUsed;try{e.state.commandCount=e.executionScope.chargeCommand(),O=await n(y,s)}catch(N){if(N instanceof rt)O={stdout:N.stdout,stderr:N.stderr,exitCode:1};else if(N instanceof G&&t.commands.length>1)O={stdout:N.stdout,stderr:N.stderr,exitCode:N.exitCode};else if(N instanceof Qe&&t.commands.length>1)O={stdout:N.stdout,stderr:N.stderr,exitCode:N.exitCode};else throw v&&(e.state.env=v,e.state.arrays=$??new Map),N}finally{u&&(A&&(d=e.state.groupStdin,h=e.state.groupStdinSourceFd),e.state.groupStdin=d,e.state.groupStdinSourceFd=h)}if(v&&(e.state.env=v,e.state.arrays=$??new Map),O=e.executionScope.accountResult(O,"pipeline",e.executionScope.outputBytesUsed-P),!b){let N=t.pipeStderr?.[g]??!1,D=O.internalOutputAccounting?.stdout??0,V=N?O.internalOutputAccounting?.stderr??0:0;ul(e.executionScope,D+V,"pipeline"),O={...O,internalOutputAccounting:{stdout:0,stderr:N?0:O.internalOutputAccounting?.stderr??0}}}a.push(O.exitCode),O.exitCode!==0&&(o=O.exitCode),b?i=O:(t.pipeStderr?.[g]??!1?s=Yt(O.stderr)+Ut(O):(s=Ut(O),l+=O.stderr,c+=O.internalOutputAccounting?.stderr??0),i={stdout:"",stderr:"",exitCode:O.exitCode})}l&&(i={...i,stderr:l+i.stderr,internalOutputAccounting:{stdout:i.internalOutputAccounting?.stdout??0,stderr:c+(i.internalOutputAccounting?.stderr??0)}});let p=t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand",m=i.internalPipeStatusOverride??a;if(p){be(e,"PIPESTATUS");for(let g=0;g<m.length;g++)H(e,"PIPESTATUS",g,String(m[g]))}if(e.state.options.pipefail&&o!==0&&(i={...i,exitCode:o}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let y=(Oi()-r)/1e3,b=Math.floor(y/60),A=y%60,k;t.timePosix?k=`real ${y.toFixed(2)}
778
783
  user 0.00
779
784
  sys 0.00
780
785
  `:k=`
781
- real ${`${S}m${A.toFixed(3)}s`}
786
+ real ${`${b}m${A.toFixed(3)}s`}
782
787
  user 0m0.000s
783
788
  sys 0m0.000s
784
- `,i={...i,stderr:i.stderr+k}}u&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=f),i=e.executionScope.accountResult(i,"pipeline");let{internalPipeStatusOverride:E,...b}=i;return b}function Na(e){return e?{...e,options:e.options?[...e.options]:void 0,actions:e.actions?[...e.actions]:void 0}:void 0}function oy(e){return e?new Map(Array.from(e,([t,n])=>[t,Na(n)])):void 0}function ay(e){if(!e)return;let t=new Map,n=new Map;for(let[r,s]of e){let i=t.get(s);i||(i=new Set(s),t.set(s,i)),n.set(r,i)}return n}function ly(e){return e?.map(t=>new Map(Array.from(t,([n,r])=>[n,r?{kind:r.kind,elements:new Map(r.elements)}:void 0])))}function cy(e){return e?new Map(Array.from(e,([t,n])=>[t,n.map(r=>({...r}))])):void 0}function Ra(e){let t={env:e.env,arrays:e.arrays,cwd:e.cwd,previousDir:e.previousDir,lastExitCode:e.lastExitCode,lastArg:e.lastArg,currentLine:e.currentLine,options:e.options,shoptOptions:e.shoptOptions,fileDescriptors:e.fileDescriptors,inputFds:e.inputFds,fdAliases:e.fdAliases,closedStandardFds:e.closedStandardFds,nextFd:e.nextFd,readonlyVars:e.readonlyVars,associativeArrays:e.associativeArrays,namerefs:e.namerefs,boundNamerefs:e.boundNamerefs,invalidNamerefs:e.invalidNamerefs,integerVars:e.integerVars,lowercaseVars:e.lowercaseVars,uppercaseVars:e.uppercaseVars,exportedVars:e.exportedVars,tempExportedVars:e.tempExportedVars,localExportedVars:e.localExportedVars,declaredVars:e.declaredVars,localScopes:e.localScopes,localArrayScopes:e.localArrayScopes,localVarDepth:e.localVarDepth,localVarStack:e.localVarStack,fullyUnsetLocals:e.fullyUnsetLocals,tempEnvBindings:e.tempEnvBindings,mutatedTempEnvVars:e.mutatedTempEnvVars,accessedTempEnvVars:e.accessedTempEnvVars,functions:e.functions,callDepth:e.callDepth,sourceDepth:e.sourceDepth,callLineStack:e.callLineStack,funcNameStack:e.funcNameStack,sourceStack:e.sourceStack,currentSource:e.currentSource,inCondition:e.inCondition,loopDepth:e.loopDepth,parentHasLoopContext:e.parentHasLoopContext,errexitSafe:e.errexitSafe,directoryStack:e.directoryStack,hashTable:e.hashTable,completionSpecs:e.completionSpecs,defaultCompletionSpec:e.defaultCompletionSpec,emptyCompletionSpec:e.emptyCompletionSpec,groupStdin:e.groupStdin,groupStdinSourceFd:e.groupStdinSourceFd,bashPid:e.bashPid,expansionExitCode:e.expansionExitCode,expansionStderr:e.expansionStderr};e.env=new Map(e.env),e.arrays=ft(e.arrays),e.options={...e.options},e.shoptOptions={...e.shoptOptions},e.fileDescriptors=e.fileDescriptors?new Map(e.fileDescriptors):void 0,e.inputFds=e.inputFds?new Set(e.inputFds):void 0,e.fdAliases=ay(e.fdAliases),e.closedStandardFds=e.closedStandardFds?new Set(e.closedStandardFds):void 0,e.readonlyVars=new Set(e.readonlyVars),e.associativeArrays=new Set(e.associativeArrays),e.namerefs=new Set(e.namerefs),e.boundNamerefs=new Set(e.boundNamerefs),e.invalidNamerefs=new Set(e.invalidNamerefs),e.integerVars=new Set(e.integerVars),e.lowercaseVars=new Set(e.lowercaseVars),e.uppercaseVars=new Set(e.uppercaseVars),e.exportedVars=new Set(e.exportedVars),e.tempExportedVars=new Set(e.tempExportedVars),e.localExportedVars=e.localExportedVars?.map(r=>new Set(r)),e.declaredVars=new Set(e.declaredVars),e.localScopes=e.localScopes.map(r=>new Map(r)),e.localArrayScopes=ly(e.localArrayScopes),e.localVarDepth=e.localVarDepth?new Map(e.localVarDepth):void 0,e.localVarStack=cy(e.localVarStack),e.fullyUnsetLocals=e.fullyUnsetLocals?new Map(e.fullyUnsetLocals):void 0,e.tempEnvBindings=e.tempEnvBindings?.map(r=>new Map(r)),e.mutatedTempEnvVars=e.mutatedTempEnvVars?new Set(e.mutatedTempEnvVars):void 0,e.accessedTempEnvVars=e.accessedTempEnvVars?new Set(e.accessedTempEnvVars):void 0,e.functions=new Map(e.functions),e.callLineStack=e.callLineStack?[...e.callLineStack]:void 0,e.funcNameStack=e.funcNameStack?[...e.funcNameStack]:void 0,e.sourceStack=e.sourceStack?[...e.sourceStack]:void 0,e.directoryStack=e.directoryStack?[...e.directoryStack]:void 0,e.hashTable=e.hashTable?new Map(e.hashTable):void 0,e.completionSpecs=oy(e.completionSpecs),e.defaultCompletionSpec=Na(e.defaultCompletionSpec),e.emptyCompletionSpec=Na(e.emptyCompletionSpec);let n=!1;return()=>{n||(n=!0,Object.assign(e,t))}}async function Yf(e,t,n,r,s=!1){let i=e.state.loopDepth,o=new Map;for(let l of e.state.fileDescriptors?.keys()??[]){let c=at(e,l);c&&o.set(l,c)}let a=Ra(e.state);e.state.parentHasLoopContext=i>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++;try{return await lt(e,t.redirections,n,l=>uy(e,t,l.stdin??n,r,s||l.stdin!==void 0))}finally{let l=new Map;for(let[c,u]of o){let f=at(e,c),d=u.kind==="input"&&f?.kind==="input"?u.content.length-f.content.length:u.kind==="readwrite"&&f?.kind==="readwrite"&&u.path===f.path?f.position-u.position:0;if(d<=0)continue;let h=Math.min(...wn(e,c));l.set(h,Math.max(l.get(h)??0,d))}a();for(let[c,u]of l)En(e,c,u)}}async function uy(e,t,n,r,s){(s||n)&&(e.state.groupStdin=n);let i=new rn(e.executionScope,"subshell"),o=0;try{for(let a of t.body){let l=await r(a);i.appendResult(l),o=l.exitCode}}catch(a){if(a instanceof $)throw i.prependTo(a),a;if(a instanceof Jt||a instanceof et||a instanceof tt)return i.append("stdout",a.stdout,a.internalOutputAccounting.stdout),i.append("stderr",a.stderr,a.internalOutputAccounting.stderr),i.build(0);if(a instanceof q||a instanceof Me||a instanceof Ze)return i.append("stdout",a.stdout,a.internalOutputAccounting.stdout),i.append("stderr",a.stderr,a.internalOutputAccounting.stderr),i.build(a.exitCode);if(a instanceof Ne)throw a.prependOutput(i.stdout,i.stderr),a;return i.append("stderr",`${zt(a)}
785
- `),i.build(1)}return i.build(o)}async function Jf(e,t,n,r,s=!1){return lt(e,t.redirections,n,i=>fy(e,t,n,r,s,i))}async function fy(e,t,n,r,s,i){let o=new rn(e.executionScope,"group"),a=0,l=i.stdin??n,c=s||n!==""||i.stdin!==void 0,u=e.state.groupStdin;c&&(e.state.groupStdin=l);let f=()=>{(c||u!==void 0&&e.state.groupStdin===void 0)&&(e.state.groupStdin=u)};try{for(let d of t.body){let h=await r(d);o.appendResult(h),a=h.exitCode}}catch(d){if(f(),d instanceof $)throw o.prependTo(d),d;if(qr(d)||d instanceof Ze||d instanceof q||d instanceof Ne)throw d.prependOutput(o.stdout,o.stderr),d;return o.append("stderr",`${zt(d)}
786
- `),o.build(1)}return f(),o.build(a)}async function ed(e,t,n,r,s){let i;try{i=await e.fs.readFile(t)}catch{return T(`bash: ${t}: No such file or directory
789
+ `,i={...i,stderr:i.stderr+k}}u&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=f),i=e.executionScope.accountResult(i,"pipeline");let{internalPipeStatusOverride:E,...S}=i;return S}function Ta(e){return e?{...e,options:e.options?[...e.options]:void 0,actions:e.actions?[...e.actions]:void 0}:void 0}function Ey(e){return e?new Map(Array.from(e,([t,n])=>[t,Ta(n)])):void 0}function by(e){if(!e)return;let t=new Map,n=new Map;for(let[r,s]of e){let i=t.get(s);i||(i=new Set(s),t.set(s,i)),n.set(r,i)}return n}function Sy(e){return e?.map(t=>new Map(Array.from(t,([n,r])=>[n,r?{kind:r.kind,elements:new Map(r.elements)}:void 0])))}function Ay(e){return e?new Map(Array.from(e,([t,n])=>[t,n.map(r=>({...r}))])):void 0}function _a(e){let t={env:e.env,arrays:e.arrays,cwd:e.cwd,previousDir:e.previousDir,lastExitCode:e.lastExitCode,lastArg:e.lastArg,currentLine:e.currentLine,options:e.options,shoptOptions:e.shoptOptions,fileDescriptors:e.fileDescriptors,inputFds:e.inputFds,fdAliases:e.fdAliases,closedStandardFds:e.closedStandardFds,nextFd:e.nextFd,readonlyVars:e.readonlyVars,associativeArrays:e.associativeArrays,namerefs:e.namerefs,boundNamerefs:e.boundNamerefs,invalidNamerefs:e.invalidNamerefs,integerVars:e.integerVars,lowercaseVars:e.lowercaseVars,uppercaseVars:e.uppercaseVars,exportedVars:e.exportedVars,tempExportedVars:e.tempExportedVars,localExportedVars:e.localExportedVars,declaredVars:e.declaredVars,localScopes:e.localScopes,localArrayScopes:e.localArrayScopes,localVarDepth:e.localVarDepth,localVarStack:e.localVarStack,fullyUnsetLocals:e.fullyUnsetLocals,tempEnvBindings:e.tempEnvBindings,mutatedTempEnvVars:e.mutatedTempEnvVars,accessedTempEnvVars:e.accessedTempEnvVars,functions:e.functions,callDepth:e.callDepth,sourceDepth:e.sourceDepth,callLineStack:e.callLineStack,funcNameStack:e.funcNameStack,sourceStack:e.sourceStack,currentSource:e.currentSource,inCondition:e.inCondition,loopDepth:e.loopDepth,parentHasLoopContext:e.parentHasLoopContext,errexitSafe:e.errexitSafe,directoryStack:e.directoryStack,hashTable:e.hashTable,completionSpecs:e.completionSpecs,defaultCompletionSpec:e.defaultCompletionSpec,emptyCompletionSpec:e.emptyCompletionSpec,groupStdin:e.groupStdin,groupStdinSourceFd:e.groupStdinSourceFd,bashPid:e.bashPid,expansionExitCode:e.expansionExitCode,expansionStderr:e.expansionStderr};e.env=new Map(e.env),e.arrays=ht(e.arrays),e.options={...e.options},e.shoptOptions={...e.shoptOptions},e.fileDescriptors=e.fileDescriptors?new Map(e.fileDescriptors):void 0,e.inputFds=e.inputFds?new Set(e.inputFds):void 0,e.fdAliases=by(e.fdAliases),e.closedStandardFds=e.closedStandardFds?new Set(e.closedStandardFds):void 0,e.readonlyVars=new Set(e.readonlyVars),e.associativeArrays=new Set(e.associativeArrays),e.namerefs=new Set(e.namerefs),e.boundNamerefs=new Set(e.boundNamerefs),e.invalidNamerefs=new Set(e.invalidNamerefs),e.integerVars=new Set(e.integerVars),e.lowercaseVars=new Set(e.lowercaseVars),e.uppercaseVars=new Set(e.uppercaseVars),e.exportedVars=new Set(e.exportedVars),e.tempExportedVars=new Set(e.tempExportedVars),e.localExportedVars=e.localExportedVars?.map(r=>new Set(r)),e.declaredVars=new Set(e.declaredVars),e.localScopes=e.localScopes.map(r=>new Map(r)),e.localArrayScopes=Sy(e.localArrayScopes),e.localVarDepth=e.localVarDepth?new Map(e.localVarDepth):void 0,e.localVarStack=Ay(e.localVarStack),e.fullyUnsetLocals=e.fullyUnsetLocals?new Map(e.fullyUnsetLocals):void 0,e.tempEnvBindings=e.tempEnvBindings?.map(r=>new Map(r)),e.mutatedTempEnvVars=e.mutatedTempEnvVars?new Set(e.mutatedTempEnvVars):void 0,e.accessedTempEnvVars=e.accessedTempEnvVars?new Set(e.accessedTempEnvVars):void 0,e.functions=new Map(e.functions),e.callLineStack=e.callLineStack?[...e.callLineStack]:void 0,e.funcNameStack=e.funcNameStack?[...e.funcNameStack]:void 0,e.sourceStack=e.sourceStack?[...e.sourceStack]:void 0,e.directoryStack=e.directoryStack?[...e.directoryStack]:void 0,e.hashTable=e.hashTable?new Map(e.hashTable):void 0,e.completionSpecs=Ey(e.completionSpecs),e.defaultCompletionSpec=Ta(e.defaultCompletionSpec),e.emptyCompletionSpec=Ta(e.emptyCompletionSpec);let n=!1;return()=>{n||(n=!0,Object.assign(e,t))}}async function ld(e,t,n,r,s=!1){let i=e.state.loopDepth,o=new Map;for(let l of e.state.fileDescriptors?.keys()??[]){let c=lt(e,l);c&&o.set(l,c)}let a=_a(e.state);e.state.parentHasLoopContext=i>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++;try{return await ct(e,t.redirections,n,l=>vy(e,t,l.stdin??n,r,s||l.stdin!==void 0))}finally{let l=new Map;for(let[c,u]of o){let f=lt(e,c),d=u.kind==="input"&&f?.kind==="input"?u.content.length-f.content.length:u.kind==="readwrite"&&f?.kind==="readwrite"&&u.path===f.path?f.position-u.position:0;if(d<=0)continue;let h=Math.min(...bn(e,c));l.set(h,Math.max(l.get(h)??0,d))}a();for(let[c,u]of l)Sn(e,c,u)}}async function vy(e,t,n,r,s){(s||n)&&(e.state.groupStdin=n);let i=new an(e.executionScope,"subshell"),o=0;try{for(let a of t.body){let l=await r(a);i.appendResult(l),o=l.exitCode}}catch(a){if(a instanceof C)throw i.prependTo(a),a;if(a instanceof tn||a instanceof tt||a instanceof nt)return i.append("stdout",a.stdout,a.internalOutputAccounting.stdout),i.append("stderr",a.stderr,a.internalOutputAccounting.stderr),i.build(0);if(a instanceof G||a instanceof Be||a instanceof Qe)return i.append("stdout",a.stdout,a.internalOutputAccounting.stdout),i.append("stderr",a.stderr,a.internalOutputAccounting.stderr),i.build(a.exitCode);if(a instanceof Re)throw a.prependOutput(i.stdout,i.stderr),a;return i.append("stderr",`${jt(a)}
790
+ `),i.build(1)}return i.build(o)}async function cd(e,t,n,r,s=!1){return ct(e,t.redirections,n,i=>ky(e,t,n,r,s,i))}async function ky(e,t,n,r,s,i){let o=new an(e.executionScope,"group"),a=0,l=i.stdin??n,c=s||n!==""||i.stdin!==void 0,u=e.state.groupStdin;c&&(e.state.groupStdin=l);let f=()=>{(c||u!==void 0&&e.state.groupStdin===void 0)&&(e.state.groupStdin=u)};try{for(let d of t.body){let h=await r(d);o.appendResult(h),a=h.exitCode}}catch(d){if(f(),d instanceof C)throw o.prependTo(d),d;if(Kr(d)||d instanceof Qe||d instanceof G||d instanceof Re)throw d.prependOutput(o.stdout,o.stderr),d;return o.append("stderr",`${jt(d)}
791
+ `),o.build(1)}return f(),o.build(a)}async function ud(e,t,n,r,s){let i;try{i=await e.fs.readFile(t)}catch{return _(`bash: ${t}: No such file or directory
787
792
  `,127)}if(i.startsWith("#!")){let l=i.indexOf(`
788
- `);l!==-1&&(i=i.slice(l+1))}let o=e.state.loopDepth,a=Ra(e.state);e.state.parentHasLoopContext=o>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++,r&&(e.state.groupStdin=r),e.state.currentSource=t,e.state.env.set("0",t),e.state.env.set("#",String(n.length)),e.state.env.set("@",n.join(" ")),e.state.env.set("*",n.join(" "));for(let l=0;l<n.length&&l<9;l++)e.state.env.set(String(l+1),n[l]);for(let l=n.length+1;l<=9;l++)e.state.env.delete(String(l));try{let c=new Z().parse(i),u=await s(c);return a(),u}catch(l){if(a(),l instanceof q)return L(l.stdout,l.stderr,l.exitCode);if(l instanceof Ne||l instanceof $)throw l;if(l.name==="ParseException")return T(`bash: ${t}: ${l.message}
789
- `);throw l}}function dy(e){throw new TypeError(`Unsupported command node: ${JSON.stringify(e)}`)}var Lr=class{ctx;constructor(t,n){this.ctx={state:n,fs:t.fs,commands:t.commands,limits:t.limits,executionScope:t.executionScope,execFn:t.exec,executeScript:this.executeScript.bind(this),executeStatement:this.executeStatement.bind(this),executeCommand:this.executeCommand.bind(this),fetch:t.fetch,sleep:t.sleep,trace:t.trace,coverage:t.coverage,requireDefenseContext:t.requireDefenseContext??!1,jsBootstrapCode:t.jsBootstrapCode,invokeTool:t.invokeTool}}assertDefenseContext(t){if(!this.ctx.requireDefenseContext||We.isInSandboxedContext())return;let n=`interpreter ${t} attempted outside defense context`;throw new Vn(n,{timestamp:Date.now(),type:"missing_defense_context",message:n,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:We.getCurrentExecutionId()})}buildExportedEnv(){let t=this.ctx.state.exportedVars,n=this.ctx.state.tempExportedVars,r=new Set;if(t)for(let i of t)r.add(i);if(n)for(let i of n)r.add(i);if(r.size===0)return Object.create(null);let s=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(s[i]=o)}return s}async executeScript(t){this.assertDefenseContext("execution");let n=0,r=new rn(this.ctx.executionScope,"script");for(let s of t.statements)try{let i=await this.executeStatement(s);r.appendResult(i,Si(i)),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}catch(i){if(i instanceof q||i instanceof Ne)throw i.prependOutput(r.stdout,r.stderr),i;if(i instanceof ct)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:nn(this.ctx.state.env)};if(Gr(i))throw r.prependTo(i),i;if(i instanceof Ze)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:nn(this.ctx.state.env)};if(i instanceof Qe)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:nn(this.ctx.state.env)};if(i instanceof nt)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:nn(this.ctx.state.env)};if(i instanceof ce){r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(i instanceof jr){r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(i instanceof et||i instanceof tt){if(this.ctx.state.loopDepth>0)throw i.prependOutput(r.stdout,r.stderr),i;r.append("stdout",i.stdout),r.append("stderr",i.stderr);continue}throw i instanceof Me&&i.prependOutput(r.stdout,r.stderr),i}return{...r.build(n),env:nn(this.ctx.state.env)}}async executeUserScript(t,n,r=""){return ed(this.ctx,t,n,r,s=>this.executeScript(s))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new rt;if(t.deferredError)throw new xe(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return re;this.ctx.state.errexitSafe=!1;let n=new rn(this.ctx.executionScope,"statement");this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&n.append("stderr",`${t.sourceText}
790
- `);let r=0,s=-1,i=!1;try{for(let l=0;l<t.pipelines.length;l++){let c=t.pipelines[l],u=l>0?t.operators[l-1]:null;if(u==="&&"&&r!==0||u==="||"&&r===0)continue;let f=await this.executePipeline(c);n.appendResult(f,Si(f)),r=f.exitCode,s=l,i=c.negated,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}}catch(l){throw n.prependTo(l),l}let o=s<t.pipelines.length-1,a=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=o||i||a,this.ctx.state.options.errexit&&r!==0&&s===t.pipelines.length-1&&!i&&!this.ctx.state.inCondition&&!a){let l=new Ze(r);throw l.prependOutput(n.stdout,n.stderr),l}return n.build(r)}async executePipeline(t){return Xf(this.ctx,t,(n,r)=>this.executeCommand(n,r))}async executeCommand(t,n,r=!1){let s=Au(this.ctx),i;try{i=await this.executeCommandInner(t,n,r)}catch(a){throw await go(this.ctx,s).catch(()=>{}),a}let o=await go(this.ctx,s);return!o.stdout&&!o.stderr?i:{...i,stdout:o.stdout?Vt(i)+o.stdout:i.stdout,stdoutKind:o.stdout?"bytes":i.stdoutKind,stderr:i.stderr+o.stderr}}async executeCommandInner(t,n,r){switch(this.assertDefenseContext("command"),this.ctx.coverage?.hit(`bash:cmd:${t.type}`),t.type){case"SimpleCommand":return this.executeSimpleCommand(t,n);case"If":return qf(this.ctx,t);case"For":return Gf(this.ctx,t);case"CStyleFor":return Hf(this.ctx,t);case"While":return Zf(this.ctx,t,n);case"Until":return Qf(this.ctx,t,n);case"Case":return Kf(this.ctx,t);case"Subshell":return this.executeSubshell(t,n,r);case"Group":return this.executeGroup(t,n,r);case"FunctionDef":return nf(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return dy(t)}}async executeSimpleCommand(t,n){let r;try{return await this.executeSimpleCommandInner(t,n,s=>{r=s})}catch(s){if(r?.finish(),s instanceof Yt)return T(s.stderr);throw s}}async executeSimpleCommandInner(t,n,r){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let P=t,C=0;for(;;){let O=this.expandAlias(P);if(O===P)break;if(C>=this.ctx.limits.maxCallDepth)throw new $(`alias expansion depth limit exceeded (${this.ctx.limits.maxCallDepth})`,"recursion");C++,P=O}this.aliasExpansionStack.clear(),P!==t&&(t=P)}this.ctx.state.expansionStderr="";let s=await If(this.ctx,t);if(s.error)return s.error;let i=s.tempAssignments,o=s.xtraceOutput,a=()=>{for(let[P,C]of i)C===void 0?this.ctx.state.env.delete(P):this.ctx.state.env.set(P,C)};if(!t.name){if(t.redirections.length>0){let C=nr(this.ctx,t.redirections,ef);r(C);let O=await C.prepare(n);if(O.error){if(a(),!O.errorCause)return C.finish(),O.error;try{return rr(O)}finally{C.finish()}}let W=L("",o,0),K=await Sn(this.ctx,W,t.redirections,O.targets,O.dupSources,O.standardRoutes);return C.finish(),K}this.ctx.state.lastArg="";let P=(this.ctx.state.expansionStderr||"")+o;return this.ctx.state.expansionStderr="",L("",P,this.ctx.state.lastExitCode)}let l=t.name&&Ca(t.name,["local","declare","typeset","export","readonly"]),c=Array.from(i.keys());if(c.length>0&&!l){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let P of c)this.ctx.state.tempExportedVars.add(P)}let u=await oe(this.ctx,t.name),f=[],d=[],h=(P,C)=>{if(f.length>=this.ctx.limits.maxArrayElements)throw new $(`expanded argument element limit exceeded (${this.ctx.limits.maxArrayElements})`,"array_elements");f.push(P),d.push(C)};if(Ca(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let P of t.args){let C=await Iu(this.ctx,P);if(C)h(C,!0);else{let O=await Tu(this.ctx,P);if(O!==null)h(O,!0);else{let W=await kt(this.ctx,P);for(let K of W.values)h(K,W.quoted)}}}else for(let P of t.args){let C=await kt(this.ctx,P);for(let O of C.values)h(O,C.quoted)}let m=t.name.parts.every(P=>P.type==="CommandSubstitution"||P.type==="ParameterExpansion"||P.type==="ArithmeticExpansion");!u&&m&&f.length>0&&(u=f.shift(),d.shift());let E=nr(this.ctx,t.redirections,u==="exec"?tf:Cr);r(E);let b=await E.prepare(n);if(b.error)return a(),b.errorCause?rr(b):(E.finish(),b.error);let g=b.stdinSourceFd,y=b.stdin!==void 0;if(b.stdin!==void 0&&(n=b.stdin),!u)return m?(E.finish(),L("","",this.ctx.state.lastExitCode)):(E.finish(),T(`bash: : command not found
791
- `,127));if(u==="exec"&&(f.length===0||f[0]==="--")){for(let[P,C]of i)C===void 0?this.ctx.state.env.delete(P):this.ctx.state.env.set(P,C);if(this.ctx.state.tempExportedVars)for(let P of i.keys())this.ctx.state.tempExportedVars.delete(P);return E.finish(),re}if(this.ctx.state.extraArgs){let P=this.ctx.state.extraArgs;this.ctx.state.extraArgs=void 0;for(let C of P)h(C,!0)}let S=await Of(this.ctx,u,f);i.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(i)));let A,k=null;try{A=await this.runCommand(u,f,d,n,!1,!1,g,y)}catch(P){if(P instanceof et||P instanceof tt)k=P,A=re;else throw P}g>=0&&u!=="read"&&En(this.ctx,g,A.internalStdinConsumed??0);let v=o+S;if(v&&(A={...A,stderr:v+A.stderr}),A=await Sn(this.ctx,A,t.redirections,b.targets,b.dupSources,b.standardRoutes,A.internalProducerCommand??u,A.internalProducerOmitsShellPrefix),E.finish(),k)throw k;if(f.length>0){let P=f[f.length-1];if((u==="declare"||u==="local"||u==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(P)){let C=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);C&&(P=C[1])}this.ctx.state.lastArg=P}else this.ctx.state.lastArg=u;let x=fl(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!x)for(let[P,C]of i)this.ctx.state.fullyUnsetLocals?.has(P)||(C===void 0?this.ctx.state.env.delete(P):this.ctx.state.env.set(P,C));if(this.ctx.state.tempExportedVars)for(let P of i.keys())this.ctx.state.tempExportedVars.delete(P);return i.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(A={...A,stderr:this.ctx.state.expansionStderr+A.stderr},this.ctx.state.expansionStderr=""),A}async runCommand(t,n,r,s,i=!1,o=!1,a=-1,l=!1){let c={ctx:this.ctx,runCommand:(d,h,p,m,E,b,g,y)=>this.runCommand(d,h,p,m,E,b,g,y),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(d,h,p)=>this.executeUserScript(d,h,p)},u=await zf(c,t,n,r,s,i,o,a,l);return u!==null?u.internalProducerCommand===void 0?{...u,internalProducerCommand:t}:u:{...await Uf(c,t,n,s,o),internalProducerCommand:t}}aliasExpansionStack=new Set;expandAlias(t){return ic({env:this.ctx.state.env,limits:this.ctx.limits},t,this.aliasExpansionStack)}async findCommandInPath(t){return ss(this.ctx,t)}async executeSubshell(t,n="",r=!1){return Yf(this.ctx,t,n,s=>this.executeStatement(s),r)}async executeGroup(t,n="",r=!1){return Jf(this.ctx,t,n,s=>this.executeStatement(s),r)}async executeArithmeticCommand(t){return t.line!==void 0&&(this.ctx.state.currentLine=t.line),lt(this.ctx,t.redirections,"",async()=>{try{let n=await J(this.ctx,t.expression.expression),r=be(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),r}catch(n){return T(`bash: arithmetic expression: ${n.message}
792
- `)}})}async executeConditionalCommand(t){return t.line!==void 0&&(this.ctx.state.currentLine=t.line),lt(this.ctx,t.redirections,"",async()=>{try{let n=await yn(this.ctx,t.expression),r=be(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),r}catch(n){let r=n instanceof ce?1:2;return T(`bash: conditional expression: ${n.message}
793
- `,r)}})}};function Oa(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function hy(e){let t=Oa(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}var py=3;function td(e){let t=e;for(let n=0;n<py;n++){if(t.includes("\\")||t.includes(";")||/%(?![0-9a-f]{2})/i.test(t))return!0;let r=t.toLowerCase();if(r.includes("%2f")||r.includes("%2e")||r.includes("%5c")||r.includes("%3b"))return!0;let s;try{s=decodeURIComponent(t)}catch{return!0}if(s===t)return!1;t=s}return t.includes("%")}function my(e,t){return t==="/"||t===""?!0:t.endsWith("/")?e.startsWith(t):e===t||e.startsWith(`${t}/`)}function Da(e,t){let n=Oa(e);if(!n)return!1;let r=hy(t);return!r||n.origin!==r.origin||r.pathPrefix!=="/"&&r.pathPrefix!==""&&td(n.pathname)?!1:my(n.pathname,r.pathPrefix)}function nd(e){return typeof e=="string"?e:e.url}function rd(e,t){return!t||t.length===0?!1:t.some(n=>Da(e,nd(n)))}function Ia(e){let t=yy(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let n=sd(t);if(n)return si(n);let r=wy(t);return r?Ey(r):!1}function yy(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function gy(e){if(!e)return null;let t=10,n=e;if(n.startsWith("0x")||n.startsWith("0X")?(t=16,n=n.slice(2)):n.length>1&&n.startsWith("0")&&(t=8),!n||t===16&&!/^[0-9a-fA-F]+$/.test(n)||t===10&&!/^\d+$/.test(n)||t===8&&!/^[0-7]+$/.test(n))return null;let r=Number.parseInt(n,t);return!Number.isFinite(r)||r<0?null:r}function sd(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let n=t.map(l=>gy(l));if(n.some(l=>l===null))return null;let r=n;if(t.length===1){let l=r[0];return l>4294967295?null:[l>>>24&255,l>>>16&255,l>>>8&255,l&255]}if(t.length===2){let[l,c]=r;return l>255||c>16777215?null:[l,c>>>16&255,c>>>8&255,c&255]}if(t.length===3){let[l,c,u]=r;return l>255||c>255||u>65535?null:[l,c,u>>>8&255,u&255]}let[s,i,o,a]=r;return s>255||i>255||o>255||a>255?null:[s,i,o,a]}function wy(e){let t=e,n=null;if(t.includes(".")){let m=t.lastIndexOf(":");if(m<0)return null;let E=t.slice(m+1),b=sd(E);if(!b)return null;n=b,t=t.slice(0,m)}let r=t.includes("::")?t.split("::").length-1:0;if(r>1)return null;let[s,i]=t.split("::"),o=s?s.split(":").filter(Boolean):[],a=i?i.split(":").filter(Boolean):[],l=m=>/^[0-9a-f]{1,4}$/i.test(m)?Number.parseInt(m,16):null,c=o.map(l),u=a.map(l);if(c.some(m=>m===null)||u.some(m=>m===null))return null;let f=n?2:0,d=c.length+u.length+f,h=0;if(r===1){if(h=8-d,h<0)return null}else if(d!==8)return null;let p=[...c,...new Array(h).fill(0),...u];return n&&(p.push(n[0]<<8|n[1]),p.push(n[2]<<8|n[3])),p.length===8?p:null}function si(e){let[t,n]=e;return t===127||t===10||t===172&&n>=16&&n<=31||t===192&&n===168||t===169&&n===254||t===0||t===100&&n>=64&&n<=127||t===198&&(n===18||n===19)||t===192&&n===0&&e[2]===0||t===192&&n===0&&e[2]===2||t===198&&n===51&&e[2]===100||t===203&&n===0&&e[2]===113||t>=240}function Ey(e){if(e.every(s=>s===0)||e.slice(0,7).every(s=>s===0)&&e[7]===1||(e[0]&65472)===65152||(e[0]&65024)===64512)return!0;if(e[0]===0&&e[1]===0&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===65535){let s=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return si(s)}if(e[0]===8193&&e[1]===3512)return!0;if(e[0]===100&&e[1]===65435&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===0){let s=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return si(s)}if(e[0]===100&&e[1]===65435&&e[2]===1)return!0;if(e[0]===8194){let s=[e[1]>>>8&255,e[1]&255,e[2]>>>8&255,e[2]&255];return si(s)}return!1}function id(e){let t=[];for(let n of e){if(typeof n!="string"&&(n===null||typeof n!="object"||!("url"in n)||typeof n.url!="string")){t.push('Invalid allow-list entry: must be a string URL or an object with a "url" string property');continue}let r=nd(n);if(!Oa(r)){t.push(`Invalid URL in allow-list: "${r}" - must be a valid URL with scheme and host (e.g., "https://example.com")`);continue}let i=new URL(r);if(i.protocol!=="http:"&&i.protocol!=="https:"){t.push(`Only http and https URLs are allowed in allow-list: "${r}"`);continue}if(!i.hostname){t.push(`Allow-list entry must include a hostname: "${r}"`);continue}if(i.pathname!=="/"&&i.pathname!==""&&td(i.pathname)){t.push(`Allow-list entry contains ambiguous path separators: "${r}"`);continue}(i.search||i.hash)&&t.push(`Query strings and fragments are ignored in allow-list entries: "${r}"`)}return t}var mt=class extends Error{constructor(t,n){let r=n??"URL not in allow-list";super(`Network access denied: ${r}: ${t}`),this.name="NetworkAccessDeniedError"}},Fn=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},Qt=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},ii=class extends Error{constructor(t,n){super(`HTTP method '${t}' not allowed. Allowed methods: ${n.join(", ")}`),this.name="MethodNotAllowedError"}},Mn=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};var by=20,Sy=3e4,Ay=10485760,vy=["GET","HEAD"],Fr;typeof __BROWSER__<"u"&&__BROWSER__?Fr=null:(Fr=import("guarded-fetch"),Fr.catch(()=>{}));var ky=new Set(["GET","HEAD","OPTIONS"]),Py=new Set([301,302,303,307,308]);function Mr(e){return e.reason instanceof Error?e.reason:new DOMException("The operation was aborted","AbortError")}function xy(e){if(e?.aborted)throw Mr(e)}function _a(e){let t=e.allowedUrlPrefixes??[];if(e._dnsResolve)throw new Error("NetworkConfig._dnsResolve is no longer supported: DNS resolution is performed by guarded-fetch and cannot be overridden");if(e._createConnectionOwner)throw new Error("NetworkConfig._createConnectionOwner is no longer supported: connect-time IP pinning is performed by guarded-fetch and cannot be overridden");let n=e._fetch;if(!e.dangerouslyAllowFullInternetAccess){let S=id(t);if(S.length>0)throw new Error(`Invalid network allow-list:
794
- ${S.join(`
795
- `)}`)}let r=[];for(let S of t)typeof S=="object"&&S.transform&&S.transform.length>0&&r.push(S);function s(S){if(r.length===0)return null;let A=null;for(let k of r)if(Da(S,k.url)&&k.transform){A||(A=new Headers);for(let v of k.transform)for(let[x,R]of Object.entries(v.headers))A.set(x,R)}return A}if(e.maxRedirects!==void 0&&(!Number.isSafeInteger(e.maxRedirects)||e.maxRedirects<0))throw new RangeError("maxRedirects must be a non-negative safe integer");let i=e.maxRedirects??by,o=e.timeoutMs??Sy,a=e.maxResponseSize??Ay,l=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??vy,c=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),u=[];for(let S of t){let A=typeof S=="string"?S:S.url;try{u.push(new URL(A).hostname)}catch{}}function f(S){try{return new URL(S).hostname||"localhost.invalid"}catch{return"localhost.invalid"}}function d(S){return e.dangerouslyAllowFullInternetAccess?c?{allowedHosts:void 0,skipSsrfCheckForAllowedHosts:void 0}:{allowedHosts:[f(S)],skipSsrfCheckForAllowedHosts:!0}:{allowedHosts:u,skipSsrfCheckForAllowedHosts:!c}}function h(S){try{return Ia(new URL(S).hostname)}catch{return!1}}async function p(S,A){let k={method:A.method,headers:A.headers,signal:A.signal,redirect:"manual"};return A.body!==void 0&&(k.body=A.body),await(n??globalThis.fetch)(S,k)}function m(S){if(!e.dangerouslyAllowFullInternetAccess&&!rd(S,t))throw new mt(S)}function E(S){if(!c)return;let A;try{A=new URL(S)}catch{throw new mt(S,"invalid URL")}if(Ia(A.hostname))throw new mt(S,"private/loopback IP address blocked")}function b(S){if(e.dangerouslyAllowFullInternetAccess)return;let A=S.toUpperCase();if(!l.includes(A))throw new ii(A,l)}function g(S,A,k,v){if(!k.isGuardedFetchError(S))return S;let x=S,{onRedirectHop:R,subReason:P}=v;switch(x.code){case"host_not_allowed":case"protocol_not_allowed":return R?new Qt(A):new mt(A);case"hostname_unsafe":return R?new Qt(A):new mt(A,P==="dns_resolution_failed"?"DNS resolution failed for private IP check":"hostname resolves to private/loopback IP address");case"redirect_to_unsafe_host":return new Qt(A);case"too_many_redirects":return new Fn(i);case"response_too_large":return new Mn(a);default:return S}}async function y(S,A={}){let k=A.method?.toUpperCase()??"GET",v=A.followRedirects??!0;if(A.maxRedirects!==void 0&&(!Number.isSafeInteger(A.maxRedirects)||A.maxRedirects<0))throw new RangeError("maxRedirects must be a non-negative safe integer");let x=A.maxRedirects??i,R=Math.min(i,x),P=A.timeoutMs!==void 0?Math.min(A.timeoutMs,o):o,C=new AbortController,O=Vr(()=>C.abort(new DOMException("The operation was aborted","AbortError")),P),W=Ur(A.signal,C.signal);try{m(S),E(S),b(k);let K=Fr?await Fr:null,N=S,U=0,j=[],D=k,I=A.body,M=A.headers,se=!1;for(;;){xy(W.signal);let Y=await We.runTrustedAsync(async()=>{let Fe=M;if(se&&Fe){let Wt=Fe instanceof Headers?new Headers(Fe):new Headers(Fe);Wt.delete("authorization"),Wt.delete("cookie"),Fe=Wt}let yt=s(N),Bt=Cy(Fe,yt),gt={method:D,headers:Bt,signal:W.signal,followRedirects:!1,timeoutMs:P,sanitizeHeaders:!1};if(I&&!ky.has(D)&&(gt.body=I),Object.assign(gt,d(N)),!K||h(N)){if(c)throw new mt(N,"DNS pinning unavailable for private IP enforcement");return await p(N,gt)}c?n&&(gt.fetch=n):(gt.fetch=n??globalThis.fetch,gt.dispatcher=null);let wt;gt.onUrlBlocked=Wt=>{wt=Wt.subReason};try{return await K.guardedFetch(N,gt)}catch(Wt){throw g(Wt,N,K,{onRedirectHop:U>0,subReason:wt})}});if(Py.has(Y.status)&&v){let Fe=Y.headers.get("location");if(!Fe)return await od(Y,N,a,W.signal,j);j.push({status:Y.status,statusText:Y.statusText,headers:ad(Y.headers)});let yt=new URL(Fe,N).href;await Ta($y(Y),W.signal);try{m(yt),E(yt)}catch(wt){throw W.signal?.aborted?Mr(W.signal):wt instanceof mt?new Qt(yt):wt}let Bt=Y.status;if(((Bt===301||Bt===302)&&D==="POST"||Bt===303&&D!=="GET"&&D!=="HEAD")&&(D="GET",I=void 0,b(D)),new URL(yt).origin!==new URL(N).origin&&(se=!0),U++,U>R)throw new Fn(R);N=yt;continue}return await od(Y,N,a,W.signal,j)}}finally{zr(O),W.cleanup()}}return y}async function Ta(e,t){if(!t)return e;if(t.aborted)throw e.catch(()=>{}),Mr(t);let n,r=new Promise((s,i)=>{n=()=>i(Mr(t)),t.addEventListener("abort",n,{once:!0})});try{return await Promise.race([e,r])}finally{n&&t.removeEventListener("abort",n)}}async function $y(e){e.body&&!e.body.locked&&await e.body.cancel()}function Cy(e,t){if(!e&&!t)return;if(!t)return e;let n=e instanceof Headers?new Headers(e):new Headers(e);for(let[r,s]of t)n.set(r,s);return n}function ad(e){let t=Object.create(null);return e.forEach((n,r)=>{t[r.toLowerCase()]=n}),t}async function od(e,t,n,r,s){let i=ad(e.headers);if(n>0){let l=e.headers.get("content-length");if(l){let c=parseInt(l,10);if(!Number.isNaN(c)&&c>n)throw new Mn(n)}}let o;if(n>0&&e.body){let l=e.body.getReader(),c=[],u=0;try{for(;;){let{done:d,value:h}=await Ta(l.read(),r);if(d)break;if(h){if(u+=h.byteLength,u>n)throw await l.cancel(),new Mn(n);c.push(h)}}}catch(d){throw r?.aborted&&await l.cancel(Mr(r)).catch(()=>{}),d}o=new Uint8Array(u);let f=0;for(let d of c)o.set(d,f),f+=d.byteLength}else{let l=await Ta(e.arrayBuffer(),r);if(n>0&&l.byteLength>n)throw new Mn(n);o=new Uint8Array(l)}let a={status:e.status,statusText:e.statusText,headers:i,body:o,url:t};return s&&s.length>0&&(a.redirectChain=s),a}function or(e,t){if(e.length>t||B(e)>t)throw new $(`script input size limit exceeded (${t} bytes)`,"string_length")}var Bn=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;abortOnUnresolvedCommands=!1;invokeToolFn;transformPlugins=[];state;constructor(t={}){if(this.limits=Yr({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}},t.executionLimitProfile),t.fs&&t.files)throw new Error("Bash: options.files is ignored when options.fs is provided; write the files into your filesystem directly or drop options.fs");let n=t.fs??new Ve(t.files,{maxTotalBytes:this.limits.maxFileSystemBytes});this.fs=n,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),s=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
796
- `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=_a(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.abortOnUnresolvedCommands=t.abortOnUnresolvedCommands??!1,this.coverageWriter=t.coverage,this.state={env:s,arrays:new Map,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",Ni(this.state.options)),this.state.env.set("BASHOPTS",Ri(this.state.shoptOptions)),ll(n,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&n instanceof Ve)try{n.mkdirSync(r,{recursive:!0})}catch{}for(let o of Ha(t.commands))this.registerBundledCommand(o);if(t.fetch||t.network)for(let o of Za())this.registerBundledCommand(o);if(t.python)for(let o of Qa())this.registerBundledCommand(o);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let o of Ka())this.registerBundledCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let o of t.customCommands)if(tl(o)){let a=nl(o);this.registerCommandInternal(a,!0)}else this.registerCommandInternal(o,!0)}registerCommand(t){this.registerCommandInternal(t,!0)}registerBundledCommand(t){this.registerCommandInternal(t,!1)}registerCommandInternal(t,n,r=n?t.trusted??!0:t.trusted){let s=this.commands.get(t.name),i=n?s?.internalOriginalCommand??(s&&!s.internalIsExtension?s:void 0):void 0,o={name:t.name,trusted:r,internalIsExtension:n,internalOriginalCommand:i,execute:(l,c)=>t.execute(l,c)};this.commands.set(t.name,o);let a=this.fs;if(typeof a.writeFileSync=="function"){let l=`#!/bin/bash
793
+ `);l!==-1&&(i=i.slice(l+1))}let o=e.state.loopDepth,a=_a(e.state);e.state.parentHasLoopContext=o>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++,r&&(e.state.groupStdin=r),e.state.currentSource=t,e.state.env.set("0",t),e.state.env.set("#",String(n.length)),e.state.env.set("@",n.join(" ")),e.state.env.set("*",n.join(" "));for(let l=0;l<n.length&&l<9;l++)e.state.env.set(String(l+1),n[l]);for(let l=n.length+1;l<=9;l++)e.state.env.delete(String(l));try{let c=new Q().parse(i),u=await s(c);return a(),u}catch(l){if(a(),l instanceof G)return F(l.stdout,l.stderr,l.exitCode);if(l instanceof Re||l instanceof C)throw l;if(l.name==="ParseException")return _(`bash: ${t}: ${l.message}
794
+ `);throw l}}function xy(e){throw new TypeError(`Unsupported command node: ${JSON.stringify(e)}`)}var Vr=class{ctx;constructor(t,n){this.ctx={state:n,fs:t.fs,commands:t.commands,limits:t.limits,executionScope:t.executionScope,execFn:t.exec,executeScript:this.executeScript.bind(this),executeStatement:this.executeStatement.bind(this),executeCommand:this.executeCommand.bind(this),fetch:t.fetch,sleep:t.sleep,trace:t.trace,coverage:t.coverage,requireDefenseContext:t.requireDefenseContext??!1,jsBootstrapCode:t.jsBootstrapCode,invokeTool:t.invokeTool}}assertDefenseContext(t){if(!this.ctx.requireDefenseContext||Ve.isInSandboxedContext())return;let n=`interpreter ${t} attempted outside defense context`;throw new jn(n,{timestamp:Date.now(),type:"missing_defense_context",message:n,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:Ve.getCurrentExecutionId()})}buildExportedEnv(){let t=this.ctx.state.exportedVars,n=this.ctx.state.tempExportedVars,r=new Set;if(t)for(let i of t)r.add(i);if(n)for(let i of n)r.add(i);if(r.size===0)return Object.create(null);let s=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(s[i]=o)}return s}async executeScript(t){this.assertDefenseContext("execution");let n=0,r=new an(this.ctx.executionScope,"script");for(let s of t.statements)try{let i=await this.executeStatement(s);r.appendResult(i,Ni(i)),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}catch(i){if(i instanceof G||i instanceof Re)throw i.prependOutput(r.stdout,r.stderr),i;if(i instanceof ut)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:on(this.ctx.state.env)};if(Xr(i))throw r.prependTo(i),i;if(i instanceof Qe)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:on(this.ctx.state.env)};if(i instanceof Ke)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:on(this.ctx.state.env)};if(i instanceof rt)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:on(this.ctx.state.env)};if(i instanceof ue){r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(i instanceof Qr){r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(i instanceof tt||i instanceof nt){if(this.ctx.state.loopDepth>0)throw i.prependOutput(r.stdout,r.stderr),i;r.append("stdout",i.stdout),r.append("stderr",i.stderr);continue}throw i instanceof Be&&i.prependOutput(r.stdout,r.stderr),i}return{...r.build(n),env:on(this.ctx.state.env)}}async executeUserScript(t,n,r=""){return ud(this.ctx,t,n,r,s=>this.executeScript(s))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new st;if(t.deferredError)throw new Ce(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return se;this.ctx.state.errexitSafe=!1;let n=new an(this.ctx.executionScope,"statement");this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&n.append("stderr",`${t.sourceText}
795
+ `);let r=0,s=-1,i=!1;try{for(let l=0;l<t.pipelines.length;l++){let c=t.pipelines[l],u=l>0?t.operators[l-1]:null;if(u==="&&"&&r!==0||u==="||"&&r===0)continue;let f=await this.executePipeline(c);n.appendResult(f,Ni(f)),r=f.exitCode,s=l,i=c.negated,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}}catch(l){throw n.prependTo(l),l}let o=s<t.pipelines.length-1,a=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=o||i||a,this.ctx.state.options.errexit&&r!==0&&s===t.pipelines.length-1&&!i&&!this.ctx.state.inCondition&&!a){let l=new Qe(r);throw l.prependOutput(n.stdout,n.stderr),l}return n.build(r)}async executePipeline(t){return ad(this.ctx,t,(n,r)=>this.executeCommand(n,r))}async executeCommand(t,n,r=!1){let s=Nu(this.ctx),i;try{i=await this.executeCommandInner(t,n,r)}catch(a){throw await xo(this.ctx,s).catch(()=>{}),a}let o=await xo(this.ctx,s);return!o.stdout&&!o.stderr?i:{...i,stdout:o.stdout?Ut(i)+o.stdout:i.stdout,stdoutKind:o.stdout?"bytes":i.stdoutKind,stderr:i.stderr+o.stderr}}async executeCommandInner(t,n,r){switch(this.assertDefenseContext("command"),this.ctx.coverage?.hit(`bash:cmd:${t.type}`),t.type){case"SimpleCommand":return this.executeSimpleCommand(t,n);case"If":return td(this.ctx,t);case"For":return nd(this.ctx,t);case"CStyleFor":return rd(this.ctx,t);case"While":return sd(this.ctx,t,n);case"Until":return id(this.ctx,t,n);case"Case":return od(this.ctx,t);case"Subshell":return this.executeSubshell(t,n,r);case"Group":return this.executeGroup(t,n,r);case"FunctionDef":return uf(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return xy(t)}}async executeSimpleCommand(t,n){let r;try{return await this.executeSimpleCommandInner(t,n,s=>{r=s})}catch(s){if(r?.finish(),s instanceof en)return _(s.stderr);throw s}}async executeSimpleCommandInner(t,n,r){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let P=t,N=0;for(;;){let D=this.expandAlias(P);if(D===P)break;if(N>=this.ctx.limits.maxCallDepth)throw new C(`alias expansion depth limit exceeded (${this.ctx.limits.maxCallDepth})`,"recursion");N++,P=D}this.aliasExpansionStack.clear(),P!==t&&(t=P)}this.ctx.state.expansionStderr="";let s=await zf(this.ctx,t);if(s.error)return s.error;let i=s.tempAssignments,o=s.xtraceOutput,a=()=>{for(let[P,N]of i)N===void 0?this.ctx.state.env.delete(P):this.ctx.state.env.set(P,N)};if(!t.name){if(t.redirections.length>0){let N=or(this.ctx,t.redirections,lf);r(N);let D=await N.prepare(n);if(D.error){if(a(),!D.errorCause)return N.finish(),D.error;try{return ar(D)}finally{N.finish()}}let V=F("",o,0),X=await vn(this.ctx,V,t.redirections,D.targets,D.dupSources,D.standardRoutes);return N.finish(),X}this.ctx.state.lastArg="";let P=(this.ctx.state.expansionStderr||"")+o;return this.ctx.state.expansionStderr="",F("",P,this.ctx.state.lastExitCode)}let l=t.name&&Ia(t.name,["local","declare","typeset","export","readonly"]),c=Array.from(i.keys());if(c.length>0&&!l){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let P of c)this.ctx.state.tempExportedVars.add(P)}let u=await ae(this.ctx,t.name),f=[],d=[],h=(P,N)=>{if(f.length>=this.ctx.limits.maxArrayElements)throw new C(`expanded argument element limit exceeded (${this.ctx.limits.maxArrayElements})`,"array_elements");f.push(P),d.push(N)};if(Ia(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let P of t.args){let N=await Wu(this.ctx,P);if(N)h(N,!0);else{let D=await Vu(this.ctx,P);if(D!==null)h(D,!0);else{let V=await Ct(this.ctx,P);for(let X of V.values)h(X,V.quoted)}}}else for(let P of t.args){let N=await Ct(this.ctx,P);for(let D of N.values)h(D,N.quoted)}let m=t.name.parts.every(P=>P.type==="CommandSubstitution"||P.type==="ParameterExpansion"||P.type==="ArithmeticExpansion");!u&&m&&f.length>0&&(u=f.shift(),d.shift());let E=or(this.ctx,t.redirections,u==="exec"?cf:Ir);r(E);let S=await E.prepare(n);if(S.error)return a(),S.errorCause?ar(S):(E.finish(),S.error);let g=S.stdinSourceFd,y=S.stdin!==void 0;if(S.stdin!==void 0&&(n=S.stdin),!u)return m?(E.finish(),F("","",this.ctx.state.lastExitCode)):(E.finish(),_(`bash: : command not found
796
+ `,127));if(u==="exec"&&(f.length===0||f[0]==="--")){for(let[P,N]of i)N===void 0?this.ctx.state.env.delete(P):this.ctx.state.env.set(P,N);if(this.ctx.state.tempExportedVars)for(let P of i.keys())this.ctx.state.tempExportedVars.delete(P);return E.finish(),se}if(this.ctx.state.extraArgs){let P=this.ctx.state.extraArgs;this.ctx.state.extraArgs=void 0;for(let N of P)h(N,!0)}let b=await Wf(this.ctx,u,f);i.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(i)));let A,k=null;try{A=await this.runCommand(u,f,d,n,!1,!1,g,y)}catch(P){if(P instanceof tt||P instanceof nt)k=P,A=se;else throw P}g>=0&&u!=="read"&&Sn(this.ctx,g,A.internalStdinConsumed??0);let v=o+b;if(v&&(A={...A,stderr:v+A.stderr}),A=await vn(this.ctx,A,t.redirections,S.targets,S.dupSources,S.standardRoutes,A.internalProducerCommand??u,A.internalProducerOmitsShellPrefix),E.finish(),k)throw k;if(f.length>0){let P=f[f.length-1];if((u==="declare"||u==="local"||u==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(P)){let N=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);N&&(P=N[1])}this.ctx.state.lastArg=P}else this.ctx.state.lastArg=u;let $=El(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!$)for(let[P,N]of i)this.ctx.state.fullyUnsetLocals?.has(P)||(N===void 0?this.ctx.state.env.delete(P):this.ctx.state.env.set(P,N));if(this.ctx.state.tempExportedVars)for(let P of i.keys())this.ctx.state.tempExportedVars.delete(P);return i.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(A={...A,stderr:this.ctx.state.expansionStderr+A.stderr},this.ctx.state.expansionStderr=""),A}async runCommand(t,n,r,s,i=!1,o=!1,a=-1,l=!1){let c={ctx:this.ctx,runCommand:(d,h,p,m,E,S,g,y)=>this.runCommand(d,h,p,m,E,S,g,y),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(d,h,p)=>this.executeUserScript(d,h,p)},u=await Yf(c,t,n,r,s,i,o,a,l);return u!==null?u.internalProducerCommand===void 0?{...u,internalProducerCommand:t}:u:{...await Jf(c,t,n,s,o),internalProducerCommand:t}}aliasExpansionStack=new Set;expandAlias(t){return dc({env:this.ctx.state.env,limits:this.ctx.limits},t,this.aliasExpansionStack)}async findCommandInPath(t){return us(this.ctx,t)}async executeSubshell(t,n="",r=!1){return ld(this.ctx,t,n,s=>this.executeStatement(s),r)}async executeGroup(t,n="",r=!1){return cd(this.ctx,t,n,s=>this.executeStatement(s),r)}async executeArithmeticCommand(t){return t.line!==void 0&&(this.ctx.state.currentLine=t.line),ct(this.ctx,t.redirections,"",async()=>{try{let n=await ee(this.ctx,t.expression.expression),r=Se(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),r}catch(n){return _(`bash: arithmetic expression: ${n.message}
797
+ `)}})}async executeConditionalCommand(t){return t.line!==void 0&&(this.ctx.state.currentLine=t.line),ct(this.ctx,t.redirections,"",async()=>{try{let n=await wn(this.ctx,t.expression),r=Se(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),r}catch(n){let r=n instanceof ue?1:2;return _(`bash: conditional expression: ${n.message}
798
+ `,r)}})}};function La(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function Py(e){let t=La(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}var $y=3;function fd(e){let t=e;for(let n=0;n<$y;n++){if(t.includes("\\")||t.includes(";")||/%(?![0-9a-f]{2})/i.test(t))return!0;let r=t.toLowerCase();if(r.includes("%2f")||r.includes("%2e")||r.includes("%5c")||r.includes("%3b"))return!0;let s;try{s=decodeURIComponent(t)}catch{return!0}if(s===t)return!1;t=s}return t.includes("%")}function Cy(e,t){return t==="/"||t===""?!0:t.endsWith("/")?e.startsWith(t):e===t||e.startsWith(`${t}/`)}function Fa(e,t){let n=La(e);if(!n)return!1;let r=Py(t);return!r||n.origin!==r.origin||r.pathPrefix!=="/"&&r.pathPrefix!==""&&fd(n.pathname)?!1:Cy(n.pathname,r.pathPrefix)}function dd(e){return typeof e=="string"?e:e.url}function hd(e,t){return!t||t.length===0?!1:t.some(n=>Fa(e,dd(n)))}function Ma(e){let t=Ny(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let n=pd(t);if(n)return hi(n);let r=Oy(t);return r?Dy(r):!1}function Ny(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function Ry(e){if(!e)return null;let t=10,n=e;if(n.startsWith("0x")||n.startsWith("0X")?(t=16,n=n.slice(2)):n.length>1&&n.startsWith("0")&&(t=8),!n||t===16&&!/^[0-9a-fA-F]+$/.test(n)||t===10&&!/^\d+$/.test(n)||t===8&&!/^[0-7]+$/.test(n))return null;let r=Number.parseInt(n,t);return!Number.isFinite(r)||r<0?null:r}function pd(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let n=t.map(l=>Ry(l));if(n.some(l=>l===null))return null;let r=n;if(t.length===1){let l=r[0];return l>4294967295?null:[l>>>24&255,l>>>16&255,l>>>8&255,l&255]}if(t.length===2){let[l,c]=r;return l>255||c>16777215?null:[l,c>>>16&255,c>>>8&255,c&255]}if(t.length===3){let[l,c,u]=r;return l>255||c>255||u>65535?null:[l,c,u>>>8&255,u&255]}let[s,i,o,a]=r;return s>255||i>255||o>255||a>255?null:[s,i,o,a]}function Oy(e){let t=e,n=null;if(t.includes(".")){let m=t.lastIndexOf(":");if(m<0)return null;let E=t.slice(m+1),S=pd(E);if(!S)return null;n=S,t=t.slice(0,m)}let r=t.includes("::")?t.split("::").length-1:0;if(r>1)return null;let[s,i]=t.split("::"),o=s?s.split(":").filter(Boolean):[],a=i?i.split(":").filter(Boolean):[],l=m=>/^[0-9a-f]{1,4}$/i.test(m)?Number.parseInt(m,16):null,c=o.map(l),u=a.map(l);if(c.some(m=>m===null)||u.some(m=>m===null))return null;let f=n?2:0,d=c.length+u.length+f,h=0;if(r===1){if(h=8-d,h<0)return null}else if(d!==8)return null;let p=[...c,...new Array(h).fill(0),...u];return n&&(p.push(n[0]<<8|n[1]),p.push(n[2]<<8|n[3])),p.length===8?p:null}function hi(e){let[t,n]=e;return t===127||t===10||t===172&&n>=16&&n<=31||t===192&&n===168||t===169&&n===254||t===0||t===100&&n>=64&&n<=127||t===198&&(n===18||n===19)||t===192&&n===0&&e[2]===0||t===192&&n===0&&e[2]===2||t===198&&n===51&&e[2]===100||t===203&&n===0&&e[2]===113||t>=240}function Dy(e){if(e.every(s=>s===0)||e.slice(0,7).every(s=>s===0)&&e[7]===1||(e[0]&65472)===65152||(e[0]&65024)===64512)return!0;if(e[0]===0&&e[1]===0&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===65535){let s=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return hi(s)}if(e[0]===8193&&e[1]===3512)return!0;if(e[0]===100&&e[1]===65435&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===0){let s=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return hi(s)}if(e[0]===100&&e[1]===65435&&e[2]===1)return!0;if(e[0]===8194){let s=[e[1]>>>8&255,e[1]&255,e[2]>>>8&255,e[2]&255];return hi(s)}return!1}function md(e){let t=[];for(let n of e){if(typeof n!="string"&&(n===null||typeof n!="object"||!("url"in n)||typeof n.url!="string")){t.push('Invalid allow-list entry: must be a string URL or an object with a "url" string property');continue}let r=dd(n);if(!La(r)){t.push(`Invalid URL in allow-list: "${r}" - must be a valid URL with scheme and host (e.g., "https://example.com")`);continue}let i=new URL(r);if(i.protocol!=="http:"&&i.protocol!=="https:"){t.push(`Only http and https URLs are allowed in allow-list: "${r}"`);continue}if(!i.hostname){t.push(`Allow-list entry must include a hostname: "${r}"`);continue}if(i.pathname!=="/"&&i.pathname!==""&&fd(i.pathname)){t.push(`Allow-list entry contains ambiguous path separators: "${r}"`);continue}(i.search||i.hash)&&t.push(`Query strings and fragments are ignored in allow-list entries: "${r}"`)}return t}var gt=class extends Error{constructor(t,n){let r=n??"URL not in allow-list";super(`Network access denied: ${r}: ${t}`),this.name="NetworkAccessDeniedError"}},Wn=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},Xt=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},pi=class extends Error{constructor(t,n){super(`HTTP method '${t}' not allowed. Allowed methods: ${n.join(", ")}`),this.name="MethodNotAllowedError"}},Vn=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};var Iy=20,Ty=3e4,_y=10485760,Ly=["GET","HEAD"],zr;typeof __BROWSER__<"u"&&__BROWSER__?zr=null:(zr=import("guarded-fetch"),zr.catch(()=>{}));var Fy=new Set(["GET","HEAD","OPTIONS"]),My=new Set([301,302,303,307,308]);function Ur(e){return e.reason instanceof Error?e.reason:new DOMException("The operation was aborted","AbortError")}function By(e){if(e?.aborted)throw Ur(e)}function Wa(e){let t=e.allowedUrlPrefixes??[];if(e._dnsResolve)throw new Error("NetworkConfig._dnsResolve is no longer supported: DNS resolution is performed by guarded-fetch and cannot be overridden");if(e._createConnectionOwner)throw new Error("NetworkConfig._createConnectionOwner is no longer supported: connect-time IP pinning is performed by guarded-fetch and cannot be overridden");let n=e._fetch;if(!e.dangerouslyAllowFullInternetAccess){let b=md(t);if(b.length>0)throw new Error(`Invalid network allow-list:
799
+ ${b.join(`
800
+ `)}`)}let r=[];for(let b of t)typeof b=="object"&&b.transform&&b.transform.length>0&&r.push(b);function s(b){if(r.length===0)return null;let A=null;for(let k of r)if(Fa(b,k.url)&&k.transform){A||(A=new Headers);for(let v of k.transform)for(let[$,O]of Object.entries(v.headers))A.set($,O)}return A}if(e.maxRedirects!==void 0&&(!Number.isSafeInteger(e.maxRedirects)||e.maxRedirects<0))throw new RangeError("maxRedirects must be a non-negative safe integer");let i=e.maxRedirects??Iy,o=e.timeoutMs??Ty,a=e.maxResponseSize??_y,l=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??Ly,c=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),u=[];for(let b of t){let A=typeof b=="string"?b:b.url;try{u.push(new URL(A).hostname)}catch{}}function f(b){try{return new URL(b).hostname||"localhost.invalid"}catch{return"localhost.invalid"}}function d(b){return e.dangerouslyAllowFullInternetAccess?c?{allowedHosts:void 0,skipSsrfCheckForAllowedHosts:void 0}:{allowedHosts:[f(b)],skipSsrfCheckForAllowedHosts:!0}:{allowedHosts:u,skipSsrfCheckForAllowedHosts:!c}}function h(b){try{return Ma(new URL(b).hostname)}catch{return!1}}async function p(b,A){let k={method:A.method,headers:A.headers,signal:A.signal,redirect:"manual"};return A.body!==void 0&&(k.body=A.body),await(n??globalThis.fetch)(b,k)}function m(b){if(!e.dangerouslyAllowFullInternetAccess&&!hd(b,t))throw new gt(b)}function E(b){if(!c)return;let A;try{A=new URL(b)}catch{throw new gt(b,"invalid URL")}if(Ma(A.hostname))throw new gt(b,"private/loopback IP address blocked")}function S(b){if(e.dangerouslyAllowFullInternetAccess)return;let A=b.toUpperCase();if(!l.includes(A))throw new pi(A,l)}function g(b,A,k,v){if(!k.isGuardedFetchError(b))return b;let $=b,{onRedirectHop:O,subReason:P}=v;switch($.code){case"host_not_allowed":case"protocol_not_allowed":return O?new Xt(A):new gt(A);case"hostname_unsafe":return O?new Xt(A):new gt(A,P==="dns_resolution_failed"?"DNS resolution failed for private IP check":"hostname resolves to private/loopback IP address");case"redirect_to_unsafe_host":return new Xt(A);case"too_many_redirects":return new Wn(i);case"response_too_large":return new Vn(a);default:return b}}async function y(b,A={}){let k=A.method?.toUpperCase()??"GET",v=A.followRedirects??!0;if(A.maxRedirects!==void 0&&(!Number.isSafeInteger(A.maxRedirects)||A.maxRedirects<0))throw new RangeError("maxRedirects must be a non-negative safe integer");let $=A.maxRedirects??i,O=Math.min(i,$),P=A.timeoutMs!==void 0?Math.min(A.timeoutMs,o):o,N=new AbortController,D=Gr(()=>N.abort(new DOMException("The operation was aborted","AbortError")),P),V=Zr(A.signal,N.signal);try{m(b),E(b),S(k);let X=zr?await zr:null,R=b,j=0,q=[],I=k,T=A.body,B=A.headers,ie=!1;for(;;){By(V.signal);let J=await Ve.runTrustedAsync(async()=>{let Me=B;if(ie&&Me){let zt=Me instanceof Headers?new Headers(Me):new Headers(Me);zt.delete("authorization"),zt.delete("cookie"),Me=zt}let wt=s(R),Vt=Vy(Me,wt),Et={method:I,headers:Vt,signal:V.signal,followRedirects:!1,timeoutMs:P,sanitizeHeaders:!1};if(T&&!Fy.has(I)&&(Et.body=T),Object.assign(Et,d(R)),!X||h(R)){if(c)throw new gt(R,"DNS pinning unavailable for private IP enforcement");return await p(R,Et)}c?n&&(Et.fetch=n):(Et.fetch=n??globalThis.fetch,Et.dispatcher=null);let bt;Et.onUrlBlocked=zt=>{bt=zt.subReason};try{return await X.guardedFetch(R,Et)}catch(zt){throw g(zt,R,X,{onRedirectHop:j>0,subReason:bt})}});if(My.has(J.status)&&v){let Me=J.headers.get("location");if(!Me)return await yd(J,R,a,V.signal,q);q.push({status:J.status,statusText:J.statusText,headers:gd(J.headers)});let wt=new URL(Me,R).href;await Ba(Wy(J),V.signal);try{m(wt),E(wt)}catch(bt){throw V.signal?.aborted?Ur(V.signal):bt instanceof gt?new Xt(wt):bt}let Vt=J.status;if(((Vt===301||Vt===302)&&I==="POST"||Vt===303&&I!=="GET"&&I!=="HEAD")&&(I="GET",T=void 0,S(I)),new URL(wt).origin!==new URL(R).origin&&(ie=!0),j++,j>O)throw new Wn(O);R=wt;continue}return await yd(J,R,a,V.signal,q)}}finally{Hr(D),V.cleanup()}}return y}async function Ba(e,t){if(!t)return e;if(t.aborted)throw e.catch(()=>{}),Ur(t);let n,r=new Promise((s,i)=>{n=()=>i(Ur(t)),t.addEventListener("abort",n,{once:!0})});try{return await Promise.race([e,r])}finally{n&&t.removeEventListener("abort",n)}}async function Wy(e){e.body&&!e.body.locked&&await e.body.cancel()}function Vy(e,t){if(!e&&!t)return;if(!t)return e;let n=e instanceof Headers?new Headers(e):new Headers(e);for(let[r,s]of t)n.set(r,s);return n}function gd(e){let t=Object.create(null);return e.forEach((n,r)=>{t[r.toLowerCase()]=n}),t}async function yd(e,t,n,r,s){let i=gd(e.headers);if(n>0){let l=e.headers.get("content-length");if(l){let c=parseInt(l,10);if(!Number.isNaN(c)&&c>n)throw new Vn(n)}}let o;if(n>0&&e.body){let l=e.body.getReader(),c=[],u=0;try{for(;;){let{done:d,value:h}=await Ba(l.read(),r);if(d)break;if(h){if(u+=h.byteLength,u>n)throw await l.cancel(),new Vn(n);c.push(h)}}}catch(d){throw r?.aborted&&await l.cancel(Ur(r)).catch(()=>{}),d}o=new Uint8Array(u);let f=0;for(let d of c)o.set(d,f),f+=d.byteLength}else{let l=await Ba(e.arrayBuffer(),r);if(n>0&&l.byteLength>n)throw new Vn(n);o=new Uint8Array(l)}let a={status:e.status,statusText:e.statusText,headers:i,body:o,url:t};return s&&s.length>0&&(a.redirectChain=s),a}function ur(e,t){if(e.length>t||W(e)>t)throw new C(`script input size limit exceeded (${t} bytes)`,"string_length")}var zn=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;abortOnUnresolvedCommands=!1;invokeToolFn;transformPlugins=[];state;constructor(t={}){if(this.limits=ss({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}},t.executionLimitProfile),t.fs&&t.files)throw new Error("Bash: options.files is ignored when options.fs is provided; write the files into your filesystem directly or drop options.fs");let n=t.fs??new ze(t.files,{maxTotalBytes:this.limits.maxFileSystemBytes});this.fs=n,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),s=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
801
+ `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=Wa(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.abortOnUnresolvedCommands=t.abortOnUnresolvedCommands??!1,this.coverageWriter=t.coverage,this.state={env:s,arrays:new Map,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",Fi(this.state.options)),this.state.env.set("BASHOPTS",Mi(this.state.shoptOptions)),hl(n,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&n instanceof ze)try{n.mkdirSync(r,{recursive:!0})}catch{}for(let o of Ya(t.commands))this.registerBundledCommand(o);if(t.fetch||t.network)for(let o of Ja())this.registerBundledCommand(o);if(t.python)for(let o of el())this.registerBundledCommand(o);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let o of tl())this.registerBundledCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let o of t.customCommands)if(ol(o)){let a=al(o);this.registerCommandInternal(a,!0)}else this.registerCommandInternal(o,!0)}registerCommand(t){this.registerCommandInternal(t,!0)}registerBundledCommand(t){this.registerCommandInternal(t,!1)}registerCommandInternal(t,n,r=n?t.trusted??!0:t.trusted){let s=this.commands.get(t.name),i=n?s?.internalOriginalCommand??(s&&!s.internalIsExtension?s:void 0):void 0,o={name:t.name,trusted:r,internalIsExtension:n,internalOriginalCommand:i,execute:(l,c)=>t.execute(l,c)};this.commands.set(t.name,o);let a=this.fs;if(typeof a.writeFileSync=="function"){let l=`#!/bin/bash
797
802
  # Built-in command: ${t.name}
798
- `;try{a.writeFileSync(`/bin/${t.name}`,l)}catch{}try{a.writeFileSync(`/usr/bin/${t.name}`,l)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t.stdout=ld(t.stdout),t.stderr=ld(t.stderr),t}async exec(t,n){let r=new Jr(this.limits,n?.signal,this.abortOnUnresolvedCommands),s;try{s=await this.execInScope(t,n,r,0,n?.signal,!1,!1)}catch(o){try{await r.close()}catch{}throw o}let i=s;try{await r.close()}catch{i={...s,stderr:`${s.stderr}bash: execution cleanup failed
799
- `,exitCode:126}}return i.unresolvedCommands=r.unresolvedCommandNames,t.trim()?this.logResult(i):i}async execInScope(t,n,r,s,i,o=!1,a=!0){let l=f=>a?this.logResult(f):f,c=Ur(i,n?.signal),u=n?{...n,signal:c.signal}:{signal:c.signal};try{if(r.assertExecDepth(s),or(t,this.limits.maxSourceBytes),!t.trim())return{stdout:"",stderr:"",exitCode:0,env:Ke(this.state.env,u.env)};this.logger?.info("exec",{command:t});let f=u.cwd??this.state.cwd,d,h=f;if(u.cwd)if(u.env&&"PWD"in u.env)d=u.env.PWD;else if(u.env&&!("PWD"in u.env))try{d=await this.fs.realpath(f),h=d}catch{d=f}else d=f;let p=u.replaceEnv?new Map:new Map(this.state.env);if(u.env)for(let[y,S]of Object.entries(u.env))p.set(y,S);d!==void 0&&p.set("PWD",d);let m={...this.state,env:p,arrays:u.replaceEnv?new Map:ft(this.state.arrays),cwd:h,previousDir:u.env?.OLDPWD??this.state.previousDir,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:Oy(u.stdin,u.stdinKind,this.limits.maxInputBytes,this.limits.maxStringLength,r,o),signal:u.signal,extraArgs:u.args},E=t;u.rawScript||(E=La(t));let b=this.defenseInDepthConfig?We.getInstance(this.defenseInDepthConfig):null,g=b?.activate();try{let y=async()=>{let S=je(E,{maxHeredocSize:this.limits.maxHeredocSize}),A;if(this.transformPlugins.length>0){let P=Object.create(null);for(let C of this.transformPlugins){let O=C.transform({ast:S,metadata:P});S=O.ast,O.metadata&&(P=hr(P,O.metadata))}A=P}let k={fs:this.fs,commands:this.commands,limits:this.limits,executionScope:r,exec:(P,C,O=!1)=>this.execInScope(P,C,r,s+1,u.signal,O),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter,requireDefenseContext:b?.isEnabled()===!0,jsBootstrapCode:this.jsBootstrapCode,invokeTool:this.invokeToolFn},R=await new Lr(k,m).executeScript(S);return A&&(R.metadata=A),l(R)};return g?await g.run(y):await y()}catch(y){if(y instanceof q)return l({stdout:y.stdout,stderr:y.stderr,exitCode:y.exitCode,internalOutputAccounting:y.internalOutputAccounting,env:Ke(this.state.env,u.env)});if(y instanceof Ne){if(s>0)throw y;return l({stdout:y.stdout,stderr:y.stderr,exitCode:y.exitCode,internalOutputAccounting:y.internalOutputAccounting,env:Ke(this.state.env,u.env)})}if(y instanceof ct)return l({stdout:y.stdout,stderr:y.stderr,exitCode:y.exitCode,env:Ke(this.state.env,u.env)});if(y instanceof ce)return l({stdout:y.stdout,stderr:y.stderr,exitCode:1,env:Ke(this.state.env,u.env)});if(y instanceof rt)return l({stdout:y.stdout,stderr:y.stderr,exitCode:124,env:Ke(this.state.env,u.env)});if(y instanceof $)return l({stdout:y.stdout,stderr:Ct(y.stderr),exitCode:$.EXIT_CODE,internalOutputAccounting:y.internalOutputAccounting,env:Ke(this.state.env,u.env)});if(y instanceof Vn)return l({stdout:"",stderr:`bash: security violation: ${Ct(y.message)}
800
- `,exitCode:1,env:Ke(this.state.env,u.env)});if(y.name==="ParseException")return l({stdout:"",stderr:`bash: syntax error: ${Ct(y.message)}
801
- `,exitCode:2,env:Ke(this.state.env,u.env)});if(y instanceof st)return l({stdout:"",stderr:`bash: ${Ct(y.message)}
802
- `,exitCode:2,env:Ke(this.state.env,u.env)});if(y instanceof RangeError)return l({stdout:"",stderr:`bash: ${Ct(y.message)}
803
- `,exitCode:1,env:Ke(this.state.env,u.env)});throw y}finally{g?.deactivate()}}catch(f){if(f instanceof rt)return l({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:Ke(this.state.env,u.env)});if(f instanceof $)return l({stdout:f.stdout,stderr:Ct(f.stderr),exitCode:$.EXIT_CODE,internalOutputAccounting:f.internalOutputAccounting,env:Ke(this.state.env,u.env)});throw f}finally{c.cleanup()}}async readFile(t){return this.fs.readFile(this.fs.resolvePath(this.state.cwd,t))}async writeFile(t,n){return this.fs.writeFile(this.fs.resolvePath(this.state.cwd,t),n)}getCwd(){return this.state.cwd}getEnv(){return nn(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){or(t,this.limits.maxSourceBytes);let n=La(t),r=je(n,{maxHeredocSize:this.limits.maxHeredocSize}),s=Object.create(null);for(let i of this.transformPlugins){let o=i.transform({ast:r,metadata:s});r=o.ast,o.metadata&&(s=hr(s,o.metadata))}return{script:Ar(r),ast:r,metadata:s}}async analyzeCommands(t){or(t,this.limits.maxSourceBytes);let n=je(La(t),{maxHeredocSize:this.limits.maxHeredocSize}),{commands:r,definedFunctions:s,definedAliases:i}=ts(n),o=[];for(let a of r)s.has(a)||i.has(a)||await this.resolvesCommandForAnalysis(a)||o.push(a);return{commands:r,unresolved:o}}async resolvesCommandForAnalysis(t){if((yr.has(t)||an.has(t))&&!dl.has(t)||this.state.functions.has(t))return!0;let n=await rs({fs:this.fs,state:{...this.state,hashTable:new Map},commands:this.commands},t);return n!==null&&!("error"in n)}};function Ny(e,t){let n=t;for(let r=0;r<e.length;r++){let s=e[r];if(n==="single")s==="'"&&(n="none");else if(n==="double")s==="\\"?r++:s==='"'&&(n="none");else if(s==="'")n="single";else if(s==='"')n="double";else if(s==="\\")r++;else if(s==="#"&&(r===0||/\s/.test(e[r-1])))break}return n}function La(e){let t=e.split(`
804
- `),n=[],r=[],s="none";for(let i=0;i<t.length;i++){let o=t[i];if(r.length>0){let u=r[r.length-1];if((u.stripTabs?o.replace(/^\t+/,""):o)===u.delimiter){n.push(o.trimStart()),r.pop();continue}n.push(o);continue}let a=s,l=a==="none"?o.trimStart():o;if(n.push(l),s=Ny(o,a),a!=="none")continue;let c=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let u of l.matchAll(c)){let f=u[1]==="-",d=u[3];r.push({delimiter:d,stripTabs:f})}}return n.join(`
805
- `)}var Ry=new TextDecoder("utf-8",{fatal:!0});function ld(e){if(!e)return e;let t=!1;for(let r=0;r<e.length;r++){let s=e.charCodeAt(r);if(s>255)return e;s>127&&(t=!0)}if(!t)return e;let n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);try{return Ry.decode(n)}catch{return e}}function Oy(e,t,n,r,s,i){if(e===void 0)return;let o=t==="bytes"?e.length:B(e);if(o>n||o>r)throw new $(`stdin size limit exceeded (${Math.min(n,r)} bytes)`,"string_length");return i||s.consumeInput(o,"stdin"),t==="bytes"?e:Kt(e)}import*as Ce from"node:fs";import*as oi from"node:path";function ar(e){return Ce.realpathSync(e)}function Fa(e){Ce.rmSync(e,{recursive:!0,force:!0})}function Ma(e,t){if(t.nodeType==="directory"){Ce.mkdirSync(e,{recursive:!0}),process.platform!=="win32"&&Ce.chmodSync(e,t.mode),Ce.utimesSync(e,t.mtime,t.mtime);return}if(Ce.mkdirSync(oi.dirname(e),{recursive:!0}),t.nodeType==="symlink"){Ce.rmSync(e,{force:!0}),Ce.symlinkSync(new TextDecoder().decode(t.content),e);return}t.metadataOnly||Ce.writeFileSync(e,t.content),process.platform!=="win32"&&Ce.chmodSync(e,t.mode),Ce.utimesSync(e,t.mtime,t.mtime)}function ai(e){for(let r of[...e.deletions,...e.writes.map(s=>s.path)])if(oi.resolve(r)!==r)throw new Error(`EINVAL: change-set path is not normalized: '${r}'`);let t=[...e.deletions].sort((r,s)=>s.length-r.length||(r<s?-1:r>s?1:0));for(let r of t)Fa(r);let n=[...e.writes].sort((r,s)=>r.path.length-s.path.length||(r.path<s.path?-1:r.path>s.path?1:0));for(let{path:r,...s}of n)Ma(r,s)}function li(e){let t=d=>d.replace(/\\/g,"/"),n=[],r=0;for(let d of e){let h=new Set(d.writes.map(m=>t(m.path))),p=m=>{let E=`${m}/`;for(let b of h)if(b.startsWith(E))return!0;return!1};for(let m of d.writes){let E=t(m.path);n.push({path:m.path,key:E,kind:"write",changedAt:m.changedAt??0,order:r++,scaffolding:m.nodeType==="directory"&&p(E),write:m})}for(let m=0;m<d.deletions.length;m++)n.push({path:d.deletions[m],key:t(d.deletions[m]),kind:"delete",changedAt:d.deletionChangedAt?.[m]??0,order:r++})}let s=(d,h)=>d.changedAt!==h.changedAt?d.changedAt-h.changedAt:d.order-h.order,i=new Map;for(let d of n){let h=i.get(d.key);h?h.push(d):i.set(d.key,[d])}let o=new Map;for(let[d,h]of i){h.sort(s);let p=h.some(m=>m.kind==="delete");for(let m=h.length-1;m>=0;m--){let E=h[m];if(!(p&&E.kind==="write"&&E.scaffolding)){if(E.kind==="write"&&E.write?.metadataOnly){let b=h.slice(0,m).reverse().find(g=>g.kind==="write"&&g.write&&!g.write.metadataOnly&&g.write.nodeType==="file");if(b?.write){o.set(d,{...b,changedAt:E.changedAt,write:{...b.write,mode:E.write.mode,mtime:E.write.mtime,changedAt:E.changedAt}});break}}o.set(d,E);break}}}let a=[...o.values()].sort((d,h)=>d.key<h.key?-1:d.key>h.key?1:0),l=new Set;for(let d of a){if(l.has(d))continue;let h=`${d.key}/`,p=d.kind==="delete",m=d.kind==="write"&&(d.write?.nodeType==="file"||d.write?.nodeType==="symlink");if(!(!p&&!m))for(let E of a)E===d||l.has(E)||E.key.startsWith(h)&&(p&&s(E,d)>0||l.add(E))}let c=[],u=[];for(let d of a)l.has(d)||(d.kind==="delete"?u.push({path:d.path,key:d.key,changedAt:d.changedAt}):d.write&&c.push(d.write));let f=u.filter(d=>!u.some(h=>h!==d&&d.key.startsWith(`${h.key}/`)));return c.sort((d,h)=>d.path<h.path?-1:d.path>h.path?1:0),{writes:c,deletions:f.map(d=>d.path),...f.length>0&&{deletionChangedAt:f.map(d=>d.changedAt)}}}import*as we from"node:fs";import*as _e from"node:path";import*as He from"node:fs";import*as $e from"node:path";function Te(e,t){let n=/^[A-Za-z]:[\\/]/.test(t)?$e.win32:$e.posix,r=n.relative(t,e);return r===""||r!==".."&&!r.startsWith(`..${n.sep}`)&&!n.isAbsolute(r)}function Wn(e,t){try{let n=He.realpathSync(e);return Te(n,t)?n:null}catch(n){if(n.code==="ENOENT"){let r=$e.dirname(e);if(r===e)return null;let s=Wn(r,t);if(s===null)return null;try{if(He.lstatSync(e).isSymbolicLink()){let o=He.readlinkSync(e),a=$e.isAbsolute(o)?o:$e.resolve($e.dirname(e),o),l=Wn(a,t);return l===null?null:l}}catch{}return $e.join(s,$e.basename(e))}return null}}function ci(e,t,n){let r=Wn(e,n);if(r===null)return null;let s=$e.resolve(e),i=s.slice(t.length),o=r.slice(n.length);if(i!==o)return null;try{if(He.lstatSync(s).isSymbolicLink())return null}catch{}return r}function ui(e,t){if(!He.existsSync(e))throw new Error(`${t} root does not exist`);if(!He.statSync(e).isDirectory())throw new Error(`${t} root is not a directory`)}function cd(e,t){if(!$e.isAbsolute(e))return{withinRoot:!0,relativePath:e};let n;try{n=He.realpathSync(e)}catch{n=$e.resolve(e)}return Te(n,t)?{withinRoot:!0,relativePath:n.slice(t.length).replace(/\\/g,"/")||"/"}:{withinRoot:!1,safeName:$e.basename(e)}}function fi(e,t,n,r){let s=e;if(s.path===void 0){for(let o of r)if(s.message?.includes(o))throw e}let i=s.code||"EIO";throw new Error(`${i}: ${n} '${t}'`)}async function Pt(e){return ud(await He.promises.lstat(e))}function Ba(e){return ud(He.lstatSync(e))}function ud(e){return process.platform==="win32"&&e.isDirectory()&&(e.mode=e.mode&-512|493),e}function di(e){let t=e.content.byteLength;for(let n of e.appendChunks??[])t+=n.byteLength;return t}function hd(e){return di(e)}function pi(e,t){if(!e.appendChunks||e.appendChunks.length===0)return e.content;let n=e.appendChunks.reduce((i,o)=>i+o.byteLength,e.content.byteLength);if(!Number.isSafeInteger(n))throw new Error(`EFBIG: file too large, read '${t}'`);let r=new Uint8Array(n);r.set(e.content);let s=e.content.byteLength;for(let i of e.appendChunks)r.set(i,s),s+=i.byteLength;return e.content=r,e.appendChunks=void 0,r}function fd(e){return!e||e.type!=="file"?0:di(e)}function Br(){return{type:"directory",children:new Map,changedAt:Date.now(),mode:493,mtime:new Date}}function Wr(e){return e.split("/").filter(Boolean)}var hi=class e{maxMemoryBytes;rootNode=Br();bytes=0;mutationSeq_=0;constructor(t){this.maxMemoryBytes=t}get root(){return this.rootNode}get retainedBytes(){return this.bytes}descend(t){let n=Wr(t),r=[this.rootNode],s=this.rootNode;for(let i=0;i<n.length;i++){let o=s.children.get(n[i]);if(o===void 0)return{kind:"missing",stack:r,missingAt:i};if(i===n.length-1)return{kind:"found",stack:r,node:o};if(o.type==="whiteout")return{kind:"blocked",stack:r,blockedAt:i};if(o.type!=="directory")return{kind:"notdir",stack:r,notdirAt:i};r.push(o),s=o}return{kind:"found",stack:[],node:this.rootNode}}ensureDirs(t,n){let r=this.rootNode,s="";for(let i of Wr(t)){s=`${s}/${i}`;let o=r.children.get(i);if(o===void 0)o=Br(),r.children.set(i,o);else if(o.type==="whiteout")o=this.resurrectDir(r,i,s,n);else if(o.type!=="directory")throw new Error(`ENOTDIR: not a directory, mkdir '${t}'`);r=o}return r}resurrectDir(t,n,r,s){let i=Br();t.children.set(n,i);let o=s?.(r);if(o)for(let a of o)i.children.has(a)||i.children.set(a,{type:"whiteout",changedAt:i.changedAt});return i}attach(t,n){n.changedAt=Date.now();let r=Wr(t);if(r.length===0)throw new Error(`EINVAL: cannot attach at root, attach '${t}'`);let s=this.parentDirOf(r,t),i=s.children.get(r[r.length-1]);if(i?.type==="directory"&&n.type!=="directory")throw new Error(`EISDIR: cannot replace directory with ${n.type}, attach '${t}'`);if(i!==void 0&&n.type==="directory")throw new Error(`EEXIST: cannot replace ${i.type} with directory, attach '${t}'`);let o=fd(i),a=fd(n);this.assertCapacity(a,o),s.children.set(r[r.length-1],n),this.bytes+=a-o}detach(t){let n=Wr(t);if(n.length===0)return;let r=this.descend(t);return r.kind!=="found"?void 0:(r.stack[r.stack.length-1].children.delete(n[n.length-1]),this.bytes-=e.subtreeBytes(r.node),r.node)}putWhiteout(t){let n=Wr(t);if(n.length===0)throw new Error(`EINVAL: cannot whiteout the root, rm '${t}'`);let r=this.rootNode;for(let o=0;o<n.length-1;o++)r=this.ensureChildDir(r,n[o],t);let s=n[n.length-1],i=r.children.get(s);i?.type!=="whiteout"&&(this.bytes-=e.subtreeBytes(i),r.children.set(s,{type:"whiteout",changedAt:Date.now()}))}appendChunk(t,n){this.assertCapacity(n.byteLength),t.appendChunks||(t.appendChunks=[]),t.appendChunks.push(n),this.bytes+=n.byteLength,this.touch(t)}touch(t){t.seq=++this.mutationSeq_,t.changedAt=Date.now()}detachIfUnchanged(t,n,r){let s=this.descend(t);return s.kind!=="found"||s.node!==n||n.seq!==r||n.type==="directory"&&n.children.size>0?!1:(this.detach(t),!0)}*preOrder(){let t=[{path:"/",node:this.rootNode}];for(;t.length>0;){let n=t.pop();if(yield n,n.node.type==="directory"){let r=[...n.node.children.entries()];for(let s=r.length-1;s>=0;s--){let[i,o]=r[s];t.push({path:dd(n.path,i),node:o})}}}}*postOrder(){let t=[],n=[{path:"/",node:this.rootNode}];for(;n.length>0;){let r=n.pop();if(t.push(r),r.node.type==="directory")for(let[s,i]of r.node.children)n.push({path:dd(r.path,s),node:i})}for(let r=t.length-1;r>=0;r--)yield t[r]}clear(){this.rootNode=Br(),this.bytes=0}static subtreeBytes(t){if(t===void 0)return 0;if(t.type==="file")return di(t);if(t.type!=="directory")return 0;let n=0,r=[t];for(;r.length>0;){let s=r.pop();for(let i of s.children.values())i.type==="file"?n+=di(i):i.type==="directory"&&r.push(i)}return n}parentDirOf(t,n){let r=this.rootNode;for(let s=0;s<t.length-1;s++){let i=r.children.get(t[s]);if(i?.type!=="directory")throw new Error(`ENOTDIR: not a directory, attach '${n}'`);r=i}return r}ensureChildDir(t,n,r){let s=t.children.get(n);if(s===void 0||s.type==="whiteout")s=Br(),t.children.set(n,s);else if(s.type!=="directory")throw new Error(`ENOTDIR: not a directory, rm '${r}'`);return s}assertCapacity(t,n=0){if(!Number.isSafeInteger(t)||t<0||t>this.maxMemoryBytes-this.bytes+n)throw new Error(`ENOSPC: overlay memory byte limit exceeded (${this.maxMemoryBytes} bytes)`)}};function dd(e,t){return e==="/"?`/${t}`:`${e}/${t}`}var Dy=["ELOOP","EFBIG","EPERM"],Iy="/home/user/project",xt=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;maxMemoryBytes;allowSymlinks;tree;nextMemoryIdentity=1;identityFor(t){return t.type==="symlink"?"":(t.identity||(t.identity=`overlay:${this.nextMemoryIdentity++}`),t.identity)}constructor(t){this.root=_e.resolve(t.root);let n=t.mountPoint??Iy;if(this.mountPoint=n==="/"?"/":n.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${n}`);if(this.readOnly=t.readOnly??!1,this.maxFileReadSize=t.maxFileReadSize??10485760,this.maxMemoryBytes=t.maxMemoryBytes??1024*1024*1024,!Number.isSafeInteger(this.maxMemoryBytes)||this.maxMemoryBytes<0)throw new Error("OverlayFs: invalid maxMemoryBytes");this.allowSymlinks=t.allowSymlinks??!1,ui(this.root,"OverlayFs"),this.canonicalRoot=we.realpathSync(this.root),this.tree=new hi(this.maxMemoryBytes),this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){this.tree.ensureDirs(this.mountPoint)}getMountPoint(){return this.mountPoint}diff(){let t=[],n=[],r=[];for(let{path:i,node:o}of this.tree.preOrder()){let a=this.getRelativeToMount(i);if(!(a===null||a==="/")){if(o.type==="whiteout"){this.existsOnRealFs(i)&&(n.push(a),r.push(o.changedAt??0));continue}if(o.type==="file")if(o.metacopy){if(!this.existsOnRealFs(i))continue;t.push({path:a,nodeType:"file",content:new Uint8Array(0),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0,metadataOnly:!0})}else t.push({path:a,nodeType:"file",content:pi(o,i),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0});else o.type==="directory"?t.push({path:a,nodeType:"directory",content:new Uint8Array(0),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0}):t.push({path:a,nodeType:"symlink",content:new TextEncoder().encode(o.target),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0})}}t.sort((i,o)=>i.path<o.path?-1:i.path>o.path?1:0);let s=n.map((i,o)=>({path:i,changedAt:r[o]}));return s.sort((i,o)=>i.path<o.path?-1:i.path>o.path?1:0),{writes:t,deletions:s.map(i=>i.path),...s.length>0&&{deletionChangedAt:s.map(i=>i.changedAt)}}}async sync(){for(let{path:t,node:n}of this.tree.postOrder()){let r=this.getRelativeToMount(t);if(r===null||r==="/")continue;if(n.type==="whiteout"){this.existsOnRealFs(t)||this.tree.detach(t);continue}if(n.type==="directory"&&n.children.size>0)continue;let s=n.seq;await this.nodeMatchesDisk(t,n)&&this.tree.detachIfUnchanged(t,n,s)}}reset(){this.tree.clear(),this.createMountPointDirs()}drop(t){let n=t.map(r=>{let s=V(r);if(s==="/")throw new Error(`EINVAL: invalid argument, drop '${r}'`);return this.mountPoint==="/"?s:`${this.mountPoint}${s}`});n.sort((r,s)=>s.length-r.length);for(let r of n){let s=this.tree.descend(r);if(s.kind!=="found")continue;let i=s.node;i.type==="directory"&&i.children.size>0||this.tree.detach(r)}}async lstatLower(t){let n=this.resolveRealPathParent_(this.toRealPath(t));if(!n)return null;try{return{canonical:n,stat:await Pt(n)}}catch{return null}}async nodeMatchesDisk(t,n){if(n.type==="directory")return(await this.lstatLower(t))?.stat.isDirectory()??!1;if(n.type==="symlink"){if(!this.allowSymlinks)return!1;let s=await this.lstatLower(t);if(!s?.stat.isSymbolicLink())return!1;try{let i=await we.promises.readlink(s.canonical);return this.realTargetToVirtual(i)===n.target}catch{return!1}}if(n.metacopy){let s=await this.lstatLower(t);if(!s?.stat.isFile())return!1;let{stat:i}=s;return!(i.mtime.getTime()!==n.mtime.getTime()||process.platform!=="win32"&&(i.mode&4095)!==(n.mode&4095))}let r=this.resolveRealPath_(this.toRealPath(t));if(!r)return!1;try{let s=await Pt(r);if(!s.isFile())return!1;let i=pi(n,t);if(s.size!==i.byteLength)return!1;let o=this.allowSymlinks?we.constants.O_RDONLY:we.constants.O_RDONLY|we.constants.O_NOFOLLOW,a=await we.promises.open(r,o),l;try{l=new Uint8Array(await a.readFile())}finally{await a.close()}for(let c=0;c<l.byteLength;c++)if(l[c]!==i[c])return!1;return!0}catch{return!1}}mkdirSync(t,n){this.tree.ensureDirs(V(t),r=>this.lowerChildren(r))}writeFileSync(t,n){let r=V(t);this.ensureParentDirs(r);let s=n instanceof Uint8Array?n:new TextEncoder().encode(n);this.tree.attach(r,{type:"file",content:s,mode:420,mtime:new Date})}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let n=V(t),r=this.getRelativeToMount(n);if(r===null)return null;let s=_e.join(this.root,r),i=_e.resolve(s);return Te(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?Wn(t,this.canonicalRoot):ci(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let n=_e.dirname(t),r=this.resolveRealPath_(n);return r===null?null:_e.join(r,_e.basename(t))}sanitizeError(t,n,r){fi(t,n,r,Dy)}ensureParentDirs(t){let n=jn(t);n!=="/"&&this.tree.ensureDirs(n,r=>this.lowerChildren(r))}lowerChildren(t){let n=this.resolveRealPath_(this.toRealPath(t));if(!n)return null;try{return we.readdirSync(n)}catch{return null}}async existsInOverlay(t){let n=V(t),r=this.tree.descend(n);if(r.kind==="found")return r.node.type!=="whiteout";if(r.kind==="blocked"||r.kind==="notdir")return!1;let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)return!1;try{return await Pt(s),!0}catch{return!1}}async readFile(t,n){let r=await this.readFileBuffer(t),s=ut(n);return Gt(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return Gt(n,"binary")}async readFileBuffer(t,n=new Set){z(t,"open");let r=V(t);if(n.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);n.add(r);let s=this.tree.descend(r);if(s.kind==="blocked")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(s.kind==="notdir")throw new Error(`ENOTDIR: not a directory, open '${t}'`);if(s.kind==="found"){let i=s.node;if(i.type==="whiteout")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(i.type==="symlink"){let a=this.resolveSymlink(r,i.target);return this.readFileBuffer(a,n)}if(i.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(!i.metacopy)return pi(i,t);let o=await this.readLowerFileBytes(r,t,n);if(process.platform==="win32")try{this.tree.attach(r,{type:"file",content:o,mode:i.mode,mtime:i.mtime})}catch(a){if(!(a instanceof Error)||!a.message.startsWith("ENOSPC"))throw a}return o}return this.readLowerFileBytes(r,t,n)}async readLowerFileBytes(t,n,r){let s=this.resolveRealPath_(this.toRealPath(t));if(!s)throw new Error(`ENOENT: no such file or directory, open '${n}'`);try{let i=await Pt(s);if(i.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${n}'`);let l=await we.promises.readlink(s),c=this.realTargetToVirtual(l),u=this.resolveSymlink(t,c);return this.readFileBuffer(u,r)}if(i.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${n}'`);if(this.maxFileReadSize>0&&i.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${n}' (${i.size} bytes, max ${this.maxFileReadSize})`);let o=this.allowSymlinks?we.constants.O_RDONLY:we.constants.O_RDONLY|we.constants.O_NOFOLLOW,a=await we.promises.open(s,o);try{let l=await a.readFile();return new Uint8Array(l)}finally{await a.close()}}catch(i){let o=i.code;if(o==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${n}'`);if(o==="ELOOP")throw new Error(`ENOENT: no such file or directory, open '${n}'`);this.sanitizeError(i,n,"open")}}async writeFile(t,n,r){z(t,"write"),this.assertWritable(`write '${t}'`);let s=V(t);this.ensureParentDirs(s);let i=ut(r),o=qt(n,i);this.tree.attach(s,{type:"file",content:o,mode:await this.inheritedMode(s),mtime:new Date})}async inheritedMode(t){let n=this.entryAt(t);if(n?.type==="file")return n.mode;if(n?.type==="directory")return 420;if(process.platform==="win32")return 420;try{let r=await this.stat(t);if(r.isFile)return r.mode}catch{}return 420}async appendFile(t,n,r){z(t,"append"),this.assertWritable(`append '${t}'`);let s=V(t),i=ut(r),o=qt(n,i),a=this.tree.descend(s);if(a.kind==="found"&&a.node.type==="file"){await this.appendToExisting_(s,a.node,o,t);return}if(a.kind==="blocked")throw new Error(`ENOENT: no such file or directory, append '${t}'`);if(a.kind==="notdir")throw new Error(`ENOTDIR: not a directory, append '${t}'`);let l;try{l=await this.readFileBuffer(s)}catch(f){if(!(f instanceof Error)||!f.message.startsWith("ENOENT"))throw f;l=new Uint8Array(0)}let c=await this.inheritedMode(s),u=this.tree.descend(s);if(u.kind==="found"&&u.node.type==="file"){await this.appendToExisting_(s,u.node,o,t);return}this.ensureParentDirs(s),this.tree.attach(s,{type:"file",content:l,appendChunks:[o],mode:c,mtime:new Date})}async appendToExisting_(t,n,r,s){if(n.metacopy){let i=await this.readLowerFileBytes(t,s,new Set),o=this.tree.descend(t);if(o.kind==="found"&&o.node.type==="file"&&!o.node.metacopy){this.tree.appendChunk(o.node,r),o.node.mtime=new Date;return}this.tree.attach(t,{type:"file",content:i,appendChunks:[r],mode:n.mode,mtime:new Date});return}this.tree.appendChunk(n,r),n.mtime=new Date}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,n=new Set){z(t,"stat");let r=V(t);if(n.has(r))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);n.add(r);let s=this.tree.descend(r);if(s.kind==="blocked")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);if(s.kind==="notdir")throw new Error(`ENOTDIR: not a directory, stat '${t}'`);if(s.kind==="found"){let o=s.node;if(o.type==="whiteout")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);if(o.type==="symlink"){let a=this.resolveSymlink(r,o.target);return this.stat(a,n)}return this.memoryEntryStat(o)}let i=this.resolveRealPath_(this.toRealPath(r));if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let o=await Pt(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let a=await we.promises.readlink(i),l=this.realTargetToVirtual(a),c=this.resolveSymlink(r,l);return this.stat(c,n)}return{isFile:o.isFile(),isDirectory:o.isDirectory(),isSymbolicLink:!1,mode:o.mode,size:o.size,mtime:o.mtime,dev:o.dev,ino:o.ino}}catch(o){if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(o,t,"stat")}}async lstat(t){z(t,"lstat");let n=V(t),r=this.tree.descend(n);if(r.kind==="blocked")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(r.kind==="notdir")throw new Error(`ENOTDIR: not a directory, lstat '${t}'`);if(r.kind==="found"){let i=r.node;if(i.type==="whiteout")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);return this.memoryEntryStat(i)}let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await Pt(s);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime,dev:i.dev,ino:i.ino}}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(i,t,"lstat")}}memoryEntryStat(t){if(t.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:t.mode,size:t.target.length,mtime:t.mtime};let n=0;return t.type==="file"&&(n=t.metacopy?t.lowerSize??0:hd(t)),{isFile:t.type==="file",isDirectory:t.type==="directory",isSymbolicLink:!1,mode:t.mode,size:n,mtime:t.mtime,identity:this.identityFor(t)}}resolveSymlink(t,n){return qn(t,n)}realTargetToVirtual(t){let n=cd(t,this.canonicalRoot);if(n.withinRoot){if(!_e.isAbsolute(t))return t;let r=n.relativePath;return this.mountPoint==="/"?r:`${this.mountPoint}${r}`}return n.safeName}async mkdir(t,n){z(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let r=V(t);if(await this.existsInOverlay(r)){if(!n?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=jn(r);if(i!=="/"&&!await this.existsInOverlay(i))if(n?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.tree.ensureDirs(r,o=>this.lowerChildren(o))}async readdirCore(t,n){let r=new Map,s=new Set,i=this.tree.descend(n);if(i.kind==="blocked")throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(i.kind==="notdir")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let o;if(i.kind==="found"){let l=i.node;if(l.type==="whiteout")throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(l.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);o=l;for(let[c,u]of l.children){if(u.type==="whiteout"){s.add(c);continue}r.set(c,{name:c,isFile:u.type==="file",isDirectory:u.type==="directory",isSymbolicLink:u.type==="symlink"})}}let a=this.resolveRealPath_(this.toRealPath(n));if(a)try{if(!this.allowSymlinks&&(await Pt(a)).isSymbolicLink()){if(!o){let u=new Error(`ENOENT: no such file or directory, scandir '${t}'`);throw u.code="ENOENT",u}return r}let l=await we.promises.readdir(a,{withFileTypes:!0});for(let c of l)!s.has(c.name)&&!r.has(c.name)&&r.set(c.name,{name:c.name,isFile:c.isFile(),isDirectory:c.isDirectory(),isSymbolicLink:c.isSymbolicLink()})}catch(l){if(l.code==="ENOENT"){if(!o)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else l.code!=="ENOTDIR"&&this.sanitizeError(l,t,"scandir")}return r}async resolveForReaddir(t,n=!1){let r=V(t),s=new Set,i=n;for(;;){let l=this.tree.descend(r);if(l.kind!=="found")break;let c=l.node;if(c.type!=="symlink")return{normalized:r,outsideOverlay:!1};if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);s.add(r),i=!0,r=this.resolveSymlink(r,c.target)}if(this.getRelativeToMount(r)===null)return{normalized:r,outsideOverlay:!0};let a=this.resolveRealPath_(this.toRealPath(r));if(!a)return{normalized:r,outsideOverlay:!0};try{if((await Pt(a)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:r,outsideOverlay:!0};let c=await we.promises.readlink(a),u=this.realTargetToVirtual(c),f=this.resolveSymlink(r,u);return this.resolveForReaddir(f,!0)}return{normalized:r,outsideOverlay:!1}}catch{return i?{normalized:r,outsideOverlay:!0}:{normalized:r,outsideOverlay:!1}}}async readdir(t){z(t,"scandir");let{normalized:n,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let s=await this.readdirCore(t,n);return Array.from(s.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){z(t,"scandir");let{normalized:n,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let s=await this.readdirCore(t,n);return Array.from(s.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,n){z(t,"rm"),this.assertWritable(`rm '${t}'`);let r=V(t);if(!await this.existsInOverlay(r)){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}let i=!1;try{(await this.stat(r)).isDirectory&&(i=(await this.readdir(r)).length>0)}catch{}if(i&&!n?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);this.existsOnRealFs(r)?this.tree.putWhiteout(r):this.tree.detach(r)}existsOnRealFs(t){let n=this.toRealPath(t),r=this.resolveRealPathParent_(n);if(!r)return!1;try{return Ba(r),!0}catch{return!1}}async cp(t,n,r){z(t,"cp"),z(n,"cp"),this.assertWritable(`cp '${n}'`);let s=V(t),i=V(n);if(!await this.existsInOverlay(s))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let a=await this.stat(s);if(a.isFile){let l=await this.readFileBuffer(s);await this.writeFile(i,l)}else if(a.isDirectory){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);if(Ut(s,i))throw new Error(`EINVAL: cannot copy '${t}' into itself, '${n}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(s);for(let c of l){let u=s==="/"?`/${c}`:`${s}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,r)}}}async mv(t,n){this.assertWritable(`mv '${n}'`),await this.cp(t,n,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,n){return tn(t,n)}getAllPaths(){let t=new Set;for(let{path:n,node:r}of this.tree.preOrder())r.type!=="whiteout"&&t.add(n);return this.scanRealFs(this.mountPoint,t),Array.from(t)}scanRealFs(t,n){if(this.lowerHidden(t))return;let r=this.resolveRealPath_(this.toRealPath(t));if(r)try{let s=we.readdirSync(r);for(let i of s){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.lowerHidden(o))continue;n.add(o);let a=_e.join(r,i);Ba(a).isDirectory()&&this.scanRealFs(o,n)}}catch{}}lowerHidden(t){let n=this.tree.descend(t);switch(n.kind){case"blocked":case"notdir":return!0;case"found":return n.node.type!=="directory";default:return!1}}entryAt(t){let n=this.tree.descend(t);if(n.kind==="found"&&n.node.type!=="whiteout")return n.node}async chmod(t,n){z(t,"chmod"),this.assertWritable(`chmod '${t}'`);let r=V(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.entryAt(r);if(i){i.mode=n,this.tree.touch(i);return}let o=await this.stat(r);this.attachMetacopyShadow(r,o,n,o.isFile?o.mtime:new Date)}attachMetacopyShadow(t,n,r,s){this.ensureParentDirs(t),n.isFile?this.tree.attach(t,{type:"file",content:new Uint8Array(0),metacopy:!0,lowerSize:n.size,mode:r,mtime:s}):n.isDirectory&&this.tree.attach(t,{type:"directory",children:new Map,mode:r,mtime:s})}async symlink(t,n){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${n}'`);z(n,"symlink"),this.assertWritable(`symlink '${n}'`);let r=V(n);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureParentDirs(r),this.tree.attach(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,n){z(t,"link"),z(n,"link"),this.assertWritable(`link '${n}'`);let r=V(t),s=V(n);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let o=await this.stat(r);if(!o.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(s))throw new Error(`EEXIST: file already exists, link '${n}'`);let l=await this.readFileBuffer(r);this.ensureParentDirs(s),this.tree.attach(s,{type:"file",content:l,mode:o.mode,mtime:new Date,identity:o.identity??`overlay:${this.nextMemoryIdentity++}`})}async readlink(t){z(t,"readlink");let n=V(t),r=this.tree.descend(n);if(r.kind==="blocked")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.kind==="notdir")throw new Error(`ENOTDIR: not a directory, readlink '${t}'`);if(r.kind==="found"){let i=r.node;if(i.type==="whiteout")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return i.target}let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{let i=await we.promises.readlink(s);if(!_e.isAbsolute(i)){let o=_e.resolve(_e.dirname(s),i),a;try{a=we.realpathSync(o)}catch{a=o}if(!Te(a,this.canonicalRoot))return _e.basename(i)}return this.realTargetToVirtual(i)}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(i,t,"readlink")}}async realpath(t){z(t,"realpath");let n=V(t),r=new Set,s=l=>{let c=this.tree.descend(l);if(c.kind==="blocked"||c.kind==="found"&&c.node.type==="whiteout")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return c.kind==="found"?c.node:void 0},i=async l=>{let c=l==="/"?[]:l.slice(1).split("/"),u="";for(let f of c){if(u=`${u}/${f}`,r.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);let d=s(u),h=0,p=40;for(;d&&d.type==="symlink"&&h<p;){if(r.add(u),u=this.resolveSymlink(u,d.target),h++,r.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);d=s(u)}if(h>=p)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!d){let m=this.toRealPath(u),E=this.resolveRealPath_(m);if(E)try{if((await Pt(E)).isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let g=await we.promises.readlink(E),y=this.realTargetToVirtual(g);return r.add(u),u=this.resolveSymlink(u,y),i(u)}}catch(b){if(b.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(b,t,"realpath")}else if(!this.allowSymlinks){let b=this.resolveRealPathParent_(m);if(b)try{if((await Pt(b)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch(g){if(g.message?.includes("ENOENT")||g.message?.includes("ELOOP"))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(g,t,"realpath")}}}}return u||"/"},o=await i(n);if(!await this.existsInOverlay(o))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return o}async utimes(t,n,r){z(t,"utimes"),this.assertWritable(`utimes '${t}'`);let s=V(t);if(!await this.existsInOverlay(s))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let o=this.entryAt(s);if(o){o.mtime=r,this.tree.touch(o);return}let a=await this.stat(s);this.attachMetacopyShadow(s,a,a.mode,r)}};var mi=class{bash;overlays;constructor(t={}){let{home:n,project:r,cwd:s,env:i,...o}=t,a=new Map,l=[],c=n?ar(n):null,u=r?ar(r):null,f=c&&u&&(()=>{let p=Le.relative(c,u);return p!==".."&&!p.startsWith(`..${Le.sep}`)&&!Le.isAbsolute(p)})();if(c){let p=new xt({root:c,mountPoint:"/"});a.set("/home/user",{root:c,fs:p}),l.push({mountPoint:"/home/user",filesystem:p})}let d="/home/user";if(u)if(f&&c){let p=Le.relative(c,u);d=p?`/home/user/${p.split(Le.sep).join("/")}`:"/home/user"}else{let p=new xt({root:u,mountPoint:"/"});a.set("/project",{root:u,fs:p}),l.push({mountPoint:"/project",filesystem:p}),d="/project"}let h=new Lt({base:new Ve,mounts:l});this.overlays=a,this.bash=new Bn({...o,env:{HOME:"/home/user",...i},cwd:s??d,fs:h})}analyzeCommands(t){return this.bash.analyzeCommands(t)}exec(t){return this.bash.exec(t)}diff(){let t=[],n=[];for(let{root:r,fs:s}of this.overlays.values()){let i=s.diff();for(let{path:o,...a}of i.writes)t.push({...a,path:Le.join(r,o)});for(let o=0;o<i.deletions.length;o++)n.push({path:Le.join(r,i.deletions[o]),changedAt:i.deletionChangedAt?.[o]})}return t.sort((r,s)=>r.path<s.path?-1:r.path>s.path?1:0),n.sort((r,s)=>r.path<s.path?-1:r.path>s.path?1:0),{writes:t,deletions:n.map(r=>r.path),...n.length>0&&{deletionChangedAt:n.map(r=>r.changedAt??0)}}}async applyChanges(t=this.diff()){let n=new Map,r=s=>{let i=this.findOverlay(s);if(!i)return;let o=`/${Le.relative(i.root,s).split(Le.sep).join("/")}`,a=n.get(i.fs);a?a.push(o):n.set(i.fs,[o])};try{for(let s of t.deletions)Fa(s),r(s);for(let s of t.writes)Ma(s.path,s),r(s.path)}finally{for(let[s,i]of n)s.drop(i)}}findOverlayEntry(t){let n=null;for(let[r,s]of this.overlays)(t===s.root||t.startsWith(s.root+Le.sep))&&(!n||s.root.length>n.root.length)&&(n={mountPoint:r,root:s.root,fs:s.fs});return n}findOverlay(t){return this.findOverlayEntry(t)}resolveRealPath(t){let n=this.findOverlayEntry(t);if(!n)return null;let r=`/${Le.relative(n.root,t).split(Le.sep).join("/")}`;return{mountPoint:n.mountPoint,overlay:n.fs,path:r}}toRealPath(t){let n=t.startsWith("/")?t:`/${t}`,r=null;for(let[s,i]of this.overlays)(n===s||n.startsWith(`${s}/`))&&(!r||s.length>r.mountPoint.length)&&(r={mountPoint:s,root:i.root});return r?Le.join(r.root,n.slice(r.mountPoint.length)):null}async sync(){for(let{fs:t}of this.overlays.values())await t.sync()}reset(){for(let{fs:t}of this.overlays.values())t.reset()}};function Ty(e={}){return new mi(e)}import{randomBytes as _y}from"node:crypto";import*as _ from"node:fs";import*as H from"node:path";var Ly=["EACCES","escaping sandbox","EFBIG","ENOTSUP"],yi=class e{static activeMutationRoots=new Set;static pendingMutations=[];root;canonicalRoot;maxFileReadSize;maxCopyOnWriteSize;maxCopySize;allowSymlinks;constructor(t){this.root=H.resolve(t.root),this.maxFileReadSize=t.maxFileReadSize??10485760,this.maxCopyOnWriteSize=t.maxCopyOnWriteSize??104857600,this.maxCopySize=t.maxCopySize??0,this.allowSymlinks=t.allowSymlinks??!1,ui(this.root,"ReadWriteFs"),this.canonicalRoot=_.realpathSync(this.root)}resolveAndValidate(t,n){let r=this.allowSymlinks?Wn(t,this.canonicalRoot):ci(t,this.root,this.canonicalRoot);if(r===null)throw new Error(`EACCES: permission denied, '${n}' resolves outside sandbox`);return r}validateParent(t,n){let r=H.dirname(t),s=this.resolveAndValidate(r,n);return H.join(s,H.basename(t))}toRealPath(t){let n=V(t),r=H.join(this.root,n);return H.resolve(r)}async readFile(t,n){let r=await this.readFileBuffer(t),s=ut(n);return Gt(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return Gt(n,"binary")}async readFileBuffer(t){z(t,"open");let n=this.toRealPath(t),r=this.resolveAndValidate(n,t);try{let s=this.allowSymlinks?_.constants.O_RDONLY:_.constants.O_RDONLY|_.constants.O_NOFOLLOW,i=await _.promises.open(r,s);try{if(this.maxFileReadSize>0){let a=await i.stat();if(a.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${a.size} bytes, max ${this.maxFileReadSize})`)}let o=await i.readFile();return new Uint8Array(o)}finally{await i.close()}}catch(s){let i=s;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(i.code==="EISDIR")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(i.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(s,t,"open")}}async writeFile(t,n,r){await this.withFilesystemMutation(()=>this.writeFileUnlocked(t,n,r))}async writeFileUnlocked(t,n,r){z(t,"write");let s=this.toRealPath(t),i=this.resolveAndValidate(s,t),o=ut(r),a=qt(n,o),l=H.dirname(i);try{await _.promises.mkdir(l,{recursive:!0}),i=this.resolveAndValidate(s,t);let c=this.allowSymlinks?0:_.constants.O_NOFOLLOW,u=null;try{let f=await _.promises.lstat(i);if(!f.isFile()&&!f.isDirectory())throw new Error(`EACCES: cannot write special file '${t}'`);let d=await _.promises.open(i,_.constants.O_WRONLY|_.constants.O_NONBLOCK|c);try{if(u=await d.stat(),!u.isFile())throw new Error(`EACCES: cannot write special file '${t}'`);if(u.nlink<=1){await d.truncate(0),await d.writeFile(a);return}}finally{await d.close()}}catch(f){if(f.code!=="ENOENT")throw f}await this.replaceFile(i,a,u)}catch(c){if(c.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(c,t,"write")}}async appendFile(t,n,r){await this.withFilesystemMutation(()=>this.appendFileUnlocked(t,n,r))}async appendFileUnlocked(t,n,r){z(t,"append");let s=this.toRealPath(t),i=ut(r),o=qt(n,i),a=this.resolveAndValidate(s,t),l=H.dirname(a);try{await _.promises.mkdir(l,{recursive:!0}),a=this.resolveAndValidate(s,t);let c=this.allowSymlinks?0:_.constants.O_NOFOLLOW,u=null;try{let d=await _.promises.lstat(a);if(!d.isFile()&&!d.isDirectory())throw new Error(`EACCES: cannot append special file '${t}'`);let h=await _.promises.open(a,_.constants.O_WRONLY|_.constants.O_APPEND|_.constants.O_NONBLOCK|c);try{if(u=await h.stat(),!u.isFile())throw new Error(`EACCES: cannot append special file '${t}'`);if(u.nlink<=1){await h.writeFile(o);return}}finally{await h.close()}}catch(d){if(d.code!=="ENOENT")throw d}if(!u){await this.replaceFile(a,o,null);return}this.assertCopyOnWriteSize(u.size,"append",t);let f=await this.openCopySource(a);try{let d=await f.stat();if(!d.isFile()||d.dev!==u.dev||d.ino!==u.ino)throw new Error(`EACCES: file identity changed, append '${t}'`);await this.replaceFile(a,o,d,{handle:f,size:u.size})}finally{await f.close()}}catch(c){if(c.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(c,t,"append")}}async withFilesystemMutation(t){return new Promise((n,r)=>{e.pendingMutations.push({root:this.canonicalRoot,start:()=>{e.activeMutationRoots.add(this.canonicalRoot),t().then(n,r).finally(()=>{e.activeMutationRoots.delete(this.canonicalRoot),e.drainMutationQueue()})}}),e.drainMutationQueue()})}static drainMutationQueue(){for(let t=0;t<e.pendingMutations.length;){let n=e.pendingMutations[t];if([...e.activeMutationRoots].some(s=>Te(n.root,s)||Te(s,n.root))){t++;continue}e.pendingMutations.splice(t,1),n.start()}}assertCopyOnWriteSize(t,n,r){if(this.maxCopyOnWriteSize>0&&t>this.maxCopyOnWriteSize)throw new Error(`EFBIG: file too large for copy-on-write ${n} '${r}' (${t} bytes, max ${this.maxCopyOnWriteSize})`)}assertCopySize(t,n){if(this.maxCopySize>0&&t.size>this.maxCopySize)throw new Error(`EFBIG: file too large to copy '${n}' (${t.size} bytes, max ${this.maxCopySize})`)}randomTransactionToken(){return _y(16).toString("hex")}async openCopySource(t){let n=this.allowSymlinks?0:_.constants.O_NOFOLLOW,r=_.constants.O_RDONLY|_.constants.O_NONBLOCK|n,s=_.constants.O_NOATIME;if(process.platform!=="linux"||s===void 0)return _.promises.open(t,r);try{return await _.promises.open(t,r|s)}catch(i){if(i.code!=="EPERM")throw i;return _.promises.open(t,r)}}async replaceFile(t,n,r,s,i,o=!1){let a=H.dirname(t),l="",c=null,u=r===null?438:384;for(let p=0;p<16;p++){l=H.join(a,`.just-bash-write-${this.randomTransactionToken()}`);try{c=await _.promises.open(l,_.constants.O_WRONLY|_.constants.O_CREAT|_.constants.O_EXCL,u);break}catch(m){if(m.code!=="EEXIST")throw m}}if(!c)throw new Error(`EEXIST: replacement write '${t}'`);let f=c,d=await f.stat(),h=!1;try{try{let m=0,E=async b=>{let g=0;for(;g<b.byteLength;){let{bytesWritten:y}=await f.write(b,g,b.byteLength-g,m+g);if(y===0)throw new Error("EIO: replacement write made no progress");g+=y}m+=g};if(s){let b=Buffer.allocUnsafe(65536),g=0,y=s.size;for(;y>0;){let S=Math.min(b.length,y),{bytesRead:A}=await s.handle.read(b,0,S,g);if(A===0)break;await E(b.subarray(0,A)),g+=A,y-=A}}if(await E(n),r!==null&&await f.chmod(r.mode&(o?4095:511)),i)await f.utimes(i.atime,i.mtime);else if(r!==null){let b=await f.stat();await f.utimes(r.atime,b.mtime)}}finally{await f.close(),c=null}let p=await _.promises.lstat(l);if(!p.isFile()||p.dev!==d.dev||p.ino!==d.ino)throw new Error("EACCES: replacement staging entry changed");await _.promises.rename(l,t),h=!0}finally{c&&await c.close().catch(()=>{}),h||await _.promises.rm(l,{force:!0}).catch(()=>{})}}async exists(t){if(t.includes("\0"))return!1;let n=this.toRealPath(t);try{let r=this.resolveAndValidate(n,t);return await _.promises.access(r),!0}catch{return!1}}async stat(t){z(t,"stat");let n=this.toRealPath(t),r=this.resolveAndValidate(n,t);try{let s=await _.promises.lstat(r);if(!this.allowSymlinks&&s.isSymbolicLink())throw new Error(`EACCES: permission denied, '${t}' is a symlink`);return{isFile:s.isFile(),isDirectory:s.isDirectory(),isSymbolicLink:s.isSymbolicLink(),mode:s.mode,size:s.size,mtime:s.mtime,dev:s.dev,ino:s.ino,identity:`real:${s.dev}:${s.ino}`}}catch(s){if(s.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(s,t,"stat")}}async lstat(t){z(t,"lstat");let n=this.toRealPath(t),r=this.validateParent(n,t);try{let s=await _.promises.lstat(r);return{isFile:s.isFile(),isDirectory:s.isDirectory(),isSymbolicLink:s.isSymbolicLink(),mode:s.mode,size:s.size,mtime:s.mtime,dev:s.dev,ino:s.ino,identity:`real:${s.dev}:${s.ino}`}}catch(s){if(s.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(s,t,"lstat")}}async mkdir(t,n){await this.withFilesystemMutation(()=>this.mkdirUnlocked(t,n))}async mkdirUnlocked(t,n){z(t,"mkdir");let r=this.toRealPath(t),s=r===this.root?this.resolveAndValidate(r,t):this.validateParent(r,t);try{await _.promises.mkdir(s,{recursive:n?.recursive})}catch(i){let o=i;if(o.code==="EEXIST")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.sanitizeError(i,t,"mkdir")}}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){z(t,"scandir");let n=this.toRealPath(t),r=this.resolveAndValidate(n,t);try{if(!this.allowSymlinks&&(await _.promises.lstat(r)).isSymbolicLink())throw new Error(`EACCES: permission denied, '${t}' is a symlink`);return(await _.promises.readdir(r,{withFileTypes:!0})).map(i=>({name:i.name,isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink()})).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}catch(s){let i=s;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(i.code==="ENOTDIR")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);this.sanitizeError(s,t,"scandir")}}async rm(t,n){await this.withFilesystemMutation(()=>this.rmUnlocked(t,n))}async rmUnlocked(t,n){z(t,"rm");let r=this.toRealPath(t),s=this.validateParent(r,t);try{let i=await _.promises.lstat(s);if(!this.allowSymlinks&&i.isSymbolicLink())throw new Error(`EACCES: permission denied, '${t}' is a symlink`);await _.promises.rm(s,{recursive:n?.recursive??!1,force:n?.force??!1})}catch(i){let o=i;if(o.code==="ENOENT"){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(o.code==="ENOTEMPTY")throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);this.sanitizeError(i,t,"rm")}}async cp(t,n,r){await this.withFilesystemMutation(()=>this.cpUnlocked(t,n,r))}async cpUnlocked(t,n,r){z(t,"cp"),z(n,"cp");let s=this.toRealPath(t),i=this.toRealPath(n),o=this.validateParent(s,t),a=this.resolveAndValidate(i,n),l;try{l=await _.promises.lstat(o)}catch(c){if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, cp '${t}'`);this.sanitizeError(c,t,"cp")}if(l.isDirectory()&&Te(a,o))throw new Error(`EINVAL: cannot copy '${t}' into itself, '${n}'`);if(!l.isDirectory())try{let c=this.validateParent(i,n),u=await _.promises.lstat(c);if(l.dev===u.dev&&l.ino===u.ino)throw new Error(`EINVAL: cannot copy '${t}' onto itself, '${n}'`)}catch(c){if(c.code!=="ENOENT")throw c}if(l.isFile())try{let c=await _.promises.stat(a);if(l.dev===c.dev&&l.ino===c.ino)throw new Error(`EINVAL: cannot copy '${t}' onto itself, '${n}'`)}catch(c){if(c.code!=="ENOENT")throw c}try{await this.preflightCopyTree(o,t)}catch(c){this.sanitizeError(c,t,"cp")}if(l.isFile()||l.isSymbolicLink())try{await _.promises.mkdir(H.dirname(a),{recursive:!0}),this.resolveAndValidate(i,n)}catch(c){this.sanitizeError(c,n,"cp")}try{await this.copyTreeEntry(o,i,t,n,r?.recursive??!1)}catch(c){let u=c;if(u.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(u.code==="EISDIR")throw new Error(`EISDIR: is a directory, cp '${t}'`);this.sanitizeError(c,t,"cp")}}async copyTreeEntry(t,n,r,s,i){let o=await _.promises.lstat(t);if(o.isFile()){this.assertCopySize(o,r);let a=this.resolveAndValidate(n,s),l=await this.assertCopyDestinationWritable(a,s),c=await this.openCopySource(t);try{let u=await c.stat();if(!u.isFile()||u.dev!==o.dev||u.ino!==o.ino)throw new Error(`EACCES: file identity changed, cp '${r}'`);await this.replaceFile(a,new Uint8Array(0),l??o,{handle:c,size:o.size})}finally{await c.close()}return}if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`EACCES: permission denied, cp '${r}' contains a symlink`);let a=await _.promises.readlink(t),l=H.isAbsolute(a)?await this.toVirtualAbsoluteSymlinkTarget(a,r):a;await this.replaceSymlink(n,s,l);return}if(o.isDirectory()){if(!i)throw new Error(`EISDIR: is a directory, cp '${r}'`);let a=this.resolveAndValidate(n,s);await _.promises.mkdir(a,{recursive:!0}),a=this.resolveAndValidate(n,s);for(let l of await _.promises.readdir(t))await this.copyTreeEntry(H.join(t,l),H.join(n,l),H.join(r,l),H.join(s,l),!0);await _.promises.chmod(a,o.mode&4095);return}throw new Error(`EINVAL: unsupported file type, cp '${r}'`)}async assertCopyDestinationWritable(t,n){let r;try{r=await _.promises.lstat(t)}catch(o){if(o.code==="ENOENT")return null;throw o}if(!r.isFile()){if(r.isDirectory())return r;throw new Error(`EACCES: cannot copy over special file '${n}'`)}let s=this.allowSymlinks?0:_.constants.O_NOFOLLOW,i=await _.promises.open(t,_.constants.O_WRONLY|_.constants.O_NONBLOCK|s);try{let o=await i.stat();if(!o.isFile()||o.dev!==r.dev||o.ino!==r.ino)throw new Error(`EACCES: destination changed, cp '${n}'`)}finally{await i.close()}return r}async replaceSymlink(t,n,r){let s=this.validateParent(t,n),i=H.dirname(V(n)),o="",a="",l="",c=null;for(let f=0;f<16;f++){let d=`.just-bash-copy-link-${this.randomTransactionToken()}`;o=i==="/"?`/${d}`:`${i}/${d}`,a=this.toRealPath(o);try{await this.symlinkUnlocked(r,o),l=this.validateParent(a,o),c=await _.promises.lstat(l);break}catch(h){let p=h;if(p.code!=="EEXIST"&&!p.message.startsWith("EEXIST:"))throw h}}if(!c)throw new Error(`EEXIST: replacement symlink '${n}'`);let u=!1;try{let f=await _.promises.lstat(l);if(!f.isSymbolicLink()||f.dev!==c.dev||f.ino!==c.ino)throw new Error("EACCES: replacement symlink entry changed");await _.promises.rename(l,s),u=!0}finally{!u&&l&&await _.promises.rm(l,{force:!0}).catch(()=>{})}}async toVirtualAbsoluteSymlinkTarget(t,n){let r=H.resolve(t),s=await _.promises.realpath(r),i=await _.promises.realpath(H.dirname(r)),o=H.join(i,H.basename(r));if(!Te(s,this.canonicalRoot)||!Te(o,this.canonicalRoot))throw new Error(`EACCES: permission denied, cp '${n}' contains an unsafe symlink`);return o.slice(this.canonicalRoot.length)||"/"}async preflightCopyTree(t,n,r=new Set){let s=await _.promises.lstat(t),i=`${s.dev}:${s.ino}`;if(r.has(i))throw new Error(`ELOOP: cp '${n}' contains a cycle`);if(s.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`EACCES: permission denied, cp '${n}' contains a symlink`);let o=await _.promises.realpath(t);if(!Te(o,this.canonicalRoot))throw new Error(`EACCES: permission denied, cp '${n}' contains an unsafe symlink`);return}if(s.isDirectory()){r.add(i);try{let o=await _.promises.readdir(t);for(let a of o)await this.preflightCopyTree(H.join(t,a),H.join(n,a),r)}finally{r.delete(i)}}}async mv(t,n){await this.withFilesystemMutation(()=>this.mvUnlocked(t,n))}async mvUnlocked(t,n){z(t,"mv"),z(n,"mv");let r=this.toRealPath(t),s=this.toRealPath(n),i=this.validateParent(r,t),o=this.validateParent(s,n),a;try{a=await _.promises.lstat(i)}catch(c){if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);this.sanitizeError(c,t,"mv")}if(a.isDirectory()&&this.isSameOrDescendantIdentity(i,o))throw new Error(`EINVAL: cannot move '${t}' into itself, '${n}'`);try{if(a.isSymbolicLink()){let c=await _.promises.readlink(i),u=H.resolve(H.dirname(o),c),f=await _.promises.realpath(u).catch(()=>u);if(!Te(f,this.canonicalRoot))throw new Error(`EACCES: permission denied, mv '${t}' -> '${n}' would create symlink escaping sandbox`)}}catch(c){let u=c;if(u.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(u.message?.includes("EACCES")||u.message?.includes("escaping sandbox"))throw c}let l=H.dirname(o);try{await _.promises.mkdir(l,{recursive:!0})}catch(c){this.sanitizeError(c,n,"mv")}try{await _.promises.rename(i,o)}catch(c){let u=c;if(u.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(u.code==="EXDEV"){await this.moveAcrossDevices(t,n);return}this.sanitizeError(c,t,"mv")}try{if(_.lstatSync(o).isDirectory()&&this.findEscapingSymlinks(o).length>0)throw await _.promises.rename(o,i),new Error(`EACCES: permission denied, mv '${t}' -> '${n}' would create symlinks escaping sandbox`)}catch(c){if(c.message?.includes("EACCES")||c.message?.includes("escaping sandbox"))throw c;await _.promises.rename(o,i).catch(()=>{}),this.sanitizeError(c,n,"mv")}}isSameOrDescendantIdentity(t,n){let r=t,s=n;try{r=_.realpathSync(t)}catch{}try{s=_.realpathSync(n)}catch{try{let i=_.realpathSync(H.dirname(n));s=H.join(i,H.basename(n))}catch{}}return Te(s,r)}async uniqueTransactionPath(t,n){let r=H.posix.dirname(t);for(let s=0;s<16;s++){let i=H.posix.join(r,`.just-bash-mv-${n}-${this.randomTransactionToken()}`);if(!await this.exists(i))return i}throw new Error(`EEXIST: mv '${t}'`)}async moveAcrossDevices(t,n){let r=await this.uniqueTransactionPath(n,"stage"),s=await this.uniqueTransactionPath(n,"backup"),i=await this.uniqueTransactionPath(t,"source"),o=this.validateParent(this.toRealPath(r),r),a=this.validateParent(this.toRealPath(s),s),l=this.validateParent(this.toRealPath(t),t),c=this.validateParent(this.toRealPath(i),i),u=this.validateParent(this.toRealPath(n),n),f=!1,d=!1,h=!1,p=async()=>{h&&await _.promises.rename(c,l).catch(()=>{}),d&&await _.promises.rm(u,{recursive:!0,force:!0}).catch(()=>{}),f&&await _.promises.rename(a,u).catch(()=>{}),await _.promises.rm(o,{recursive:!0,force:!0}).catch(()=>{})};try{if(await this.cpUnlocked(t,r,{recursive:!0}),(await _.promises.lstat(o)).isDirectory()&&this.findEscapingSymlinks(o).length>0)throw new Error(`EACCES: permission denied, mv '${t}' -> '${n}' would create symlinks escaping sandbox`);try{await _.promises.rename(u,a),f=!0}catch(E){if(E.code!=="ENOENT")throw E}await _.promises.rename(o,u),d=!0,await _.promises.rename(l,c),h=!0,await _.promises.rm(c,{recursive:!0,force:!1}),h=!1,f&&await _.promises.rm(a,{recursive:!0,force:!0}).catch(()=>{})}catch(m){await p(),this.sanitizeError(m,t,"mv")}}resolvePath(t,n){return tn(t,n)}getAllPaths(){let t=[];return this.scanDir("/",t),t}sanitizeError(t,n,r){fi(t,n,r,Ly)}findEscapingSymlinks(t){let n=[],r=_.readdirSync(t);for(let s of r){let i=H.join(t,s),o=_.lstatSync(i);if(o.isSymbolicLink()){let a=_.readlinkSync(i),l=H.resolve(t,a),c;try{c=_.realpathSync(l)}catch(u){if(u.code!=="ENOENT")throw u;c=l}Te(c,this.canonicalRoot)||n.push(i)}else o.isDirectory()&&n.push(...this.findEscapingSymlinks(i))}return n}scanDir(t,n){let r=this.toRealPath(t),s;try{s=this.resolveAndValidate(r,t)}catch{return}try{let i=_.readdirSync(s);for(let o of i){let a=t==="/"?`/${o}`:`${t}/${o}`;n.push(a);let l=H.join(s,o);_.lstatSync(l).isDirectory()&&this.scanDir(a,n)}}catch{}}async chmod(t,n){await this.withFilesystemMutation(()=>this.chmodUnlocked(t,n))}async chmodUnlocked(t,n){z(t,"chmod");let r=this.toRealPath(t),s=this.resolveAndValidate(r,t);try{let i=await _.promises.lstat(s);if(!i.isFile()){if(!i.isDirectory()&&i.nlink>1)throw new Error(`EACCES: cannot chmod multiply-linked special file '${t}'`);await _.promises.chmod(s,n);return}if(i.nlink<=1){await _.promises.chmod(s,n);return}this.assertCopyOnWriteSize(i.size,"chmod",t);let o=await this.openCopySource(s);try{let a=await o.stat();if(!a.isFile())throw new Error(`EACCES: file type changed, chmod '${t}'`);await this.replaceFile(s,new Uint8Array(0),{mode:n,atime:a.atime,mtime:a.mtime},{handle:o,size:a.size},{atime:a.atime,mtime:a.mtime},!0)}finally{await o.close()}}catch(i){let o=i;if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);if(o.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(i,t,"chmod")}}async symlink(t,n){await this.withFilesystemMutation(()=>this.symlinkUnlocked(t,n))}async symlinkUnlocked(t,n){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${n}'`);z(n,"symlink");let r=this.toRealPath(n),s=this.validateParent(r,n),i=V(n),o=V(H.dirname(i)),a=t.startsWith("/")?V(t):V(o==="/"?`/${t}`:`${o}/${t}`),l=H.join(this.canonicalRoot,a),c=H.dirname(s),u=t.startsWith("/")?l:H.relative(c,l)||".";try{await _.promises.symlink(u,s)}catch(f){if(f.code==="EEXIST")throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.sanitizeError(f,n,"symlink")}}async link(t,n){await this.withFilesystemMutation(()=>this.linkUnlocked(t,n))}async linkUnlocked(t,n){z(t,"link"),z(n,"link");let r=this.toRealPath(t),s=this.toRealPath(n),i=this.resolveAndValidate(r,t),o=s===this.root?this.resolveAndValidate(s,n):this.validateParent(s,n);try{await _.promises.link(i,o)}catch(a){let l=a;if(l.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(l.code==="EEXIST")throw new Error(`EEXIST: file already exists, link '${n}'`);if(l.code==="EPERM")throw new Error(`EPERM: operation not permitted, link '${t}'`);this.sanitizeError(a,t,"link")}}async readlink(t){z(t,"readlink");let n=this.toRealPath(t),r=this.validateParent(n,t);try{let s=await _.promises.readlink(r),i=V(t),o=H.dirname(i),a=H.isAbsolute(s)?s:H.resolve(H.dirname(r),s),l=await _.promises.realpath(a).catch(()=>a);if(Te(l,this.canonicalRoot)){let c=l.slice(this.canonicalRoot.length)||"/";return o==="/"?c.startsWith("/")?c.slice(1)||".":c:H.relative(o,c)}return H.basename(s)}catch(s){let i=s;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(s,t,"readlink")}}async realpath(t){z(t,"realpath");let n=this.toRealPath(t);try{this.resolveAndValidate(n,t)}catch{throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}let r;try{r=await _.promises.realpath(n)}catch(s){let i=s;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);if(i.code==="ELOOP")throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);this.sanitizeError(s,t,"realpath")}if(Te(r,this.canonicalRoot))return r.slice(this.canonicalRoot.length)||"/";throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}async utimes(t,n,r){await this.withFilesystemMutation(()=>this.utimesUnlocked(t,n,r))}async utimesUnlocked(t,n,r){z(t,"utimes");let s=this.toRealPath(t),i=this.resolveAndValidate(s,t);try{let o=await _.promises.lstat(i);if(!o.isFile()){if(!o.isDirectory()&&o.nlink>1)throw new Error(`EACCES: cannot change times on multiply-linked special file '${t}'`);await _.promises.utimes(i,n,r);return}if(o.nlink<=1){await _.promises.utimes(i,n,r);return}this.assertCopyOnWriteSize(o.size,"utimes",t);let a=await this.openCopySource(i);try{let l=await a.stat();if(!l.isFile())throw new Error(`EACCES: file type changed, utimes '${t}'`);await this.replaceFile(i,new Uint8Array(0),l,{handle:a,size:l.size},{atime:n,mtime:r},!0)}finally{await a.close()}}catch(o){let a=o;if(a.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);if(a.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(o,t,"utimes")}}};import*as $t from"node:path";function Fy(e){if(e.mounts.length===0)throw new Error("EINVAL: createVfsTemplate needs at least one mount");let t=e.mounts.map(({at:c,root:u})=>{let f=ar(u);return{at:(c.startsWith("/")?c:`/${c}`).replace(/\/+$/,"")||"/",root:f}}),n=new Set;for(let{at:c}of t){if(n.has(c))throw new Error(`EINVAL: duplicate mount point '${c}' in createVfsTemplate`);n.add(c)}let r=new Ve,s=new Map,i=()=>{let c=new Lt({base:r}),u=new Map;for(let{at:f,root:d}of t){let h=new xt({root:d,mountPoint:"/"});c.mount(f,h),u.set(f,h)}return s.set(c,u),c},o=c=>{let u=[],f=[],d=[];for(let[h,p]of c){let m=t.find(b=>b.at===h)?.root;if(!m)continue;let E=p.diff();for(let{path:b,...g}of E.writes)u.push({...g,path:$t.join(m,b)});for(let b=0;b<E.deletions.length;b++)f.push($t.join(m,E.deletions[b])),d.push(E.deletionChangedAt?.[b]??0)}return{writes:u,deletions:f,...f.length>0&&{deletionChangedAt:d}}};return{fork:i,merge:c=>{let u=c??[],f=[...s.keys()].filter(h=>!u.includes(h)),d=[...u,...f];return li(d.map(h=>{let p=s.get(h);if(!p)throw new Error("EINVAL: merge() got a filesystem this template did not fork");return o(p)}))},apply:c=>{for(let u of[...c.deletions,...c.writes.map(f=>f.path)]){if(!t.some(({root:p})=>u===p||u.startsWith(p+$t.sep)))throw new Error(`EINVAL: change-set entry outside every template root: '${u}'`);let d=My(u);if(!t.some(({root:p})=>d===p||d.startsWith(p+$t.sep)))throw new Error(`EINVAL: change-set entry escapes its root through a symlink: '${u}'`)}ai(c),s.clear()}}}function My(e){let t=e,n=[];for(;;)try{let r=ar(t);return n.length===0?r:$t.join(r,...n.reverse())}catch{let r=$t.dirname(t);if(r===t)return e;n.push($t.basename(t)),t=r}}var lr=class{cmdId;cwd;startedAt;exitCode;bashEnv;cmdLine;env;explicitCwd;signal;timeoutMs;abortController=new AbortController;timeoutId;externalAbortListener;resultPromise;constructor(t,n,r,s,i=!1,o,a){this.cmdId=crypto.randomUUID(),this.cwd=r,this.startedAt=new Date,this.bashEnv=t,this.cmdLine=n,this.env=s,this.explicitCwd=i,this.signal=o,this.timeoutMs=a,this.setupCancellation(),this.resultPromise=this.execute()}setupCancellation(){if(this.signal&&(this.signal.aborted?this.abortController.abort(this.signal.reason):(this.externalAbortListener=()=>{this.abortController.abort(this.signal?.reason)},this.signal.addEventListener("abort",this.externalAbortListener,{once:!0}))),this.timeoutMs!==void 0){let t=Math.max(0,this.timeoutMs);this.timeoutId=Vr(()=>{this.abortController.abort(new Error(`sandbox command timeout after ${t}ms`))},t)}}cleanupCancellation(){this.timeoutId!==void 0&&(zr(this.timeoutId),this.timeoutId=void 0),this.signal&&this.externalAbortListener&&(this.signal.removeEventListener("abort",this.externalAbortListener),this.externalAbortListener=void 0)}async execute(){let t={cwd:this.explicitCwd?this.cwd:void 0,env:this.env,signal:this.abortController.signal};try{let n=await this.bashEnv.exec(this.cmdLine,t);return this.exitCode=n.exitCode,n}finally{this.cleanupCancellation()}}async*logs(){let t=await this.resultPromise;t.stdout&&(yield{type:"stdout",data:t.stdout,timestamp:new Date}),t.stderr&&(yield{type:"stderr",data:t.stderr,timestamp:new Date})}async wait(){return await this.resultPromise,this}async output(){let t=await this.resultPromise;return t.stdout+t.stderr}async stdout(){return(await this.resultPromise).stdout}async stderr(){return(await this.resultPromise).stderr}async kill(){this.abortController.abort(new Error("command killed"))}};var gi=class e{bashEnv;timeoutMs;constructor(t,n){this.bashEnv=t,this.timeoutMs=n}static async create(t){let n=t?.fs;if(t?.overlayRoot){if(t?.fs)throw new Error("Cannot specify both 'fs' and 'overlayRoot' options");n=new xt({root:t.overlayRoot})}let r=new Bn({env:t?.env,cwd:t?.cwd,fs:n,maxCallDepth:t?.maxCallDepth,maxCommandCount:t?.maxCommandCount,maxLoopIterations:t?.maxLoopIterations,network:t?.network,defenseInDepth:t?.defenseInDepth,python:t?.python,javascript:t?.javascript,commands:t?.commands,customCommands:t?.customCommands,fetch:t?.fetch});return new e(r,t?.timeoutMs)}async runCommand(t,n,r){let s,i,o,a,l=!1,c,u;if(typeof t=="object"){let m=t,E=[m.cmd,...m.args??[]];s=Ai(E),i=m.cwd,o=m.env,a=m.signal,l=m.detached??!1,c=m.stdout,u=m.stderr}else if(Array.isArray(n)){let m=r;s=Ai([t,...n]),a=m?.signal}else{s=t;let m=n;i=m?.cwd,o=m?.env}let f=i??this.bashEnv.getCwd(),d=i!==void 0,h=new lr(this.bashEnv,s,f,o,d,a,this.timeoutMs);if(l)return h;let p=await h.wait();if(c){let m=await h.stdout();m&&c.write(m)}if(u){let m=await h.stderr();m&&u.write(m)}return p}async writeFiles(t){let n=this.bashEnv.getCwd();for(let[r,s]of Object.entries(t)){let i;typeof s=="string"?i=s:s.encoding==="base64"?i=Buffer.from(s.content,"base64").toString("utf-8"):i=s.content;let o=this.bashEnv.fs.resolvePath(n,r),a=o.substring(0,o.lastIndexOf("/"))||"/";a!=="/"&&await this.bashEnv.fs.mkdir(a,{recursive:!0}),await this.bashEnv.writeFile(o,i)}}async readFile(t,n){let r=await this.bashEnv.readFile(t);return n==="base64"?Buffer.from(r).toString("base64"):r}async mkDir(t,n){let r=this.bashEnv.fs.resolvePath(this.bashEnv.getCwd(),t);await this.bashEnv.fs.mkdir(r,{recursive:n?.recursive??!1})}async stop(){}async extendTimeout(t){}get domain(){}get bashEnvInstance(){return this.bashEnv}};var wi=class{violations=[];violationsByType=new Map;options;constructor(t={}){this.options={maxViolationsPerType:t.maxViolationsPerType??100,maxViolationsTotal:t.maxViolationsTotal??1e3,includeStackTraces:t.includeStackTraces??!0,onViolation:t.onViolation??(()=>{}),logToConsole:t.logToConsole??!1}}record(t){let n=this.options.includeStackTraces?t:{...t,stack:void 0};this.violations.unshift(n),this.violations.length>this.options.maxViolationsTotal&&(this.violations.length=this.options.maxViolationsTotal);let r=this.violationsByType.get(t.type);r||(r=[],this.violationsByType.set(t.type,r)),r.length<this.options.maxViolationsPerType&&r.push(n),this.options.logToConsole&&console.warn(`[SecurityViolation] ${t.type}: ${t.message}`,t.path),this.options.onViolation(n)}getViolations(){return[...this.violations]}getViolationsByType(t){return[...this.violationsByType.get(t)??[]]}getSummary(){let t=[];for(let[n,r]of this.violationsByType){if(r.length===0)continue;let s=new Set,i=Number.POSITIVE_INFINITY,o=0;for(let a of r)s.add(a.path),i=Math.min(i,a.timestamp),o=Math.max(o,a.timestamp);t.push({type:n,count:r.length,firstSeen:i,lastSeen:o,paths:Array.from(s)})}return t.sort((n,r)=>r.count-n.count),t}getTotalCount(){return this.violations.length}hasViolations(){return this.violations.length>0}clear(){this.violations=[],this.violationsByType.clear()}createCallback(){return t=>this.record(t)}};function pd(){return e=>{console.warn("[DefenseInDepth] Security violation detected:",`
803
+ `;try{a.writeFileSync(`/bin/${t.name}`,l)}catch{}try{a.writeFileSync(`/usr/bin/${t.name}`,l)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t.stdout=wd(t.stdout),t.stderr=wd(t.stderr),t}async exec(t,n){let r=new is(this.limits,n?.signal,this.abortOnUnresolvedCommands),s;try{s=await this.execInScope(t,n,r,0,n?.signal,!1,!1)}catch(o){try{await r.close()}catch{}throw o}let i=s;try{await r.close()}catch{i={...s,stderr:`${s.stderr}bash: execution cleanup failed
804
+ `,exitCode:126}}return i.unresolvedCommands=r.unresolvedCommandNames,t.trim()?this.logResult(i):i}async execInScope(t,n,r,s,i,o=!1,a=!0){let l=f=>a?this.logResult(f):f,c=Zr(i,n?.signal),u=n?{...n,signal:c.signal}:{signal:c.signal};try{if(r.assertExecDepth(s),ur(t,this.limits.maxSourceBytes),!t.trim())return{stdout:"",stderr:"",exitCode:0,env:Xe(this.state.env,u.env)};this.logger?.info("exec",{command:t});let f=u.cwd??this.state.cwd,d,h=f;if(u.cwd)if(u.env&&"PWD"in u.env)d=u.env.PWD;else if(u.env&&!("PWD"in u.env))try{d=await this.fs.realpath(f),h=d}catch{d=f}else d=f;let p=u.replaceEnv?new Map:new Map(this.state.env);if(u.env)for(let[y,b]of Object.entries(u.env))p.set(y,b);d!==void 0&&p.set("PWD",d);let m={...this.state,env:p,arrays:u.replaceEnv?new Map:ht(this.state.arrays),cwd:h,previousDir:u.env?.OLDPWD??this.state.previousDir,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:jy(u.stdin,u.stdinKind,this.limits.maxInputBytes,this.limits.maxStringLength,r,o),signal:u.signal,extraArgs:u.args},E=t;u.rawScript||(E=Va(t));let S=this.defenseInDepthConfig?Ve.getInstance(this.defenseInDepthConfig):null,g=S?.activate();try{let y=async()=>{let b=qe(E,{maxHeredocSize:this.limits.maxHeredocSize}),A;if(this.transformPlugins.length>0){let P=Object.create(null);for(let N of this.transformPlugins){let D=N.transform({ast:b,metadata:P});b=D.ast,D.metadata&&(P=wr(P,D.metadata))}A=P}let k={fs:this.fs,commands:this.commands,limits:this.limits,executionScope:r,exec:(P,N,D=!1)=>this.execInScope(P,N,r,s+1,u.signal,D),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter,requireDefenseContext:S?.isEnabled()===!0,jsBootstrapCode:this.jsBootstrapCode,invokeTool:this.invokeToolFn},O=await new Vr(k,m).executeScript(b);return A&&(O.metadata=A),l(O)};return g?await g.run(y):await y()}catch(y){if(y instanceof G)return l({stdout:y.stdout,stderr:y.stderr,exitCode:y.exitCode,internalOutputAccounting:y.internalOutputAccounting,env:Xe(this.state.env,u.env)});if(y instanceof Re){if(s>0)throw y;return l({stdout:y.stdout,stderr:y.stderr,exitCode:y.exitCode,internalOutputAccounting:y.internalOutputAccounting,env:Xe(this.state.env,u.env)})}if(y instanceof ut)return l({stdout:y.stdout,stderr:y.stderr,exitCode:y.exitCode,env:Xe(this.state.env,u.env)});if(y instanceof ue)return l({stdout:y.stdout,stderr:y.stderr,exitCode:1,env:Xe(this.state.env,u.env)});if(y instanceof st)return l({stdout:y.stdout,stderr:y.stderr,exitCode:124,env:Xe(this.state.env,u.env)});if(y instanceof C)return l({stdout:y.stdout,stderr:Ot(y.stderr),exitCode:C.EXIT_CODE,internalOutputAccounting:y.internalOutputAccounting,env:Xe(this.state.env,u.env)});if(y instanceof jn)return l({stdout:"",stderr:`bash: security violation: ${Ot(y.message)}
805
+ `,exitCode:1,env:Xe(this.state.env,u.env)});if(y.name==="ParseException")return l({stdout:"",stderr:`bash: syntax error: ${Ot(y.message)}
806
+ `,exitCode:2,env:Xe(this.state.env,u.env)});if(y instanceof it)return l({stdout:"",stderr:`bash: ${Ot(y.message)}
807
+ `,exitCode:2,env:Xe(this.state.env,u.env)});if(y instanceof RangeError)return l({stdout:"",stderr:`bash: ${Ot(y.message)}
808
+ `,exitCode:1,env:Xe(this.state.env,u.env)});throw y}finally{g?.deactivate()}}catch(f){if(f instanceof st)return l({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:Xe(this.state.env,u.env)});if(f instanceof C)return l({stdout:f.stdout,stderr:Ot(f.stderr),exitCode:C.EXIT_CODE,internalOutputAccounting:f.internalOutputAccounting,env:Xe(this.state.env,u.env)});throw f}finally{c.cleanup()}}async readFile(t){return this.fs.readFile(this.fs.resolvePath(this.state.cwd,t))}async writeFile(t,n){return this.fs.writeFile(this.fs.resolvePath(this.state.cwd,t),n)}getCwd(){return this.state.cwd}getEnv(){return on(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){ur(t,this.limits.maxSourceBytes);let n=Va(t),r=qe(n,{maxHeredocSize:this.limits.maxHeredocSize}),s=Object.create(null);for(let i of this.transformPlugins){let o=i.transform({ast:r,metadata:s});r=o.ast,o.metadata&&(s=wr(s,o.metadata))}return{script:Cr(r),ast:r,metadata:s}}async analyzeCommands(t){ur(t,this.limits.maxSourceBytes);let n=qe(Va(t),{maxHeredocSize:this.limits.maxHeredocSize}),{commands:r,definedFunctions:s,definedAliases:i}=as(n),o=[];for(let a of r)s.has(a)||i.has(a)||await this.resolvesCommandForAnalysis(a)||o.push(a);return{commands:r,unresolved:o}}async resolvesCommandForAnalysis(t){if((Sr.has(t)||Dt.has(t))&&!pl.has(t)||this.state.functions.has(t))return!0;let n=await cs({fs:this.fs,state:{...this.state,hashTable:new Map},commands:this.commands},t);return n!==null&&!("error"in n)}};function zy(e,t){let n=t;for(let r=0;r<e.length;r++){let s=e[r];if(n==="single")s==="'"&&(n="none");else if(n==="double")s==="\\"?r++:s==='"'&&(n="none");else if(s==="'")n="single";else if(s==='"')n="double";else if(s==="\\")r++;else if(s==="#"&&(r===0||/\s/.test(e[r-1])))break}return n}function Va(e){let t=e.split(`
809
+ `),n=[],r=[],s="none";for(let i=0;i<t.length;i++){let o=t[i];if(r.length>0){let u=r[r.length-1];if((u.stripTabs?o.replace(/^\t+/,""):o)===u.delimiter){n.push(o.trimStart()),r.pop();continue}n.push(o);continue}let a=s,l=a==="none"?o.trimStart():o;if(n.push(l),s=zy(o,a),a!=="none")continue;let c=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let u of l.matchAll(c)){let f=u[1]==="-",d=u[3];r.push({delimiter:d,stripTabs:f})}}return n.join(`
810
+ `)}var Uy=new TextDecoder("utf-8",{fatal:!0});function wd(e){if(!e)return e;let t=!1;for(let r=0;r<e.length;r++){let s=e.charCodeAt(r);if(s>255)return e;s>127&&(t=!0)}if(!t)return e;let n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);try{return Uy.decode(n)}catch{return e}}function jy(e,t,n,r,s,i){if(e===void 0)return;let o=t==="bytes"?e.length:W(e);if(o>n||o>r)throw new C(`stdin size limit exceeded (${Math.min(n,r)} bytes)`,"string_length");return i||s.consumeInput(o,"stdin"),t==="bytes"?e:Yt(e)}import*as ke from"node:fs";import*as mi from"node:path";function fr(e){return ke.realpathSync(e)}function za(e){ke.rmSync(e,{recursive:!0,force:!0})}function bd(e,t){let n;try{n=ke.lstatSync(e)}catch{return!1}return t?!n.isDirectory():n.isDirectory()}function Ed(e,t){bd(e,t)&&ke.rmSync(e,{recursive:!0,force:!0})}function Ua(e,t){if(t.nodeType==="directory"){Ed(e,!0),ke.mkdirSync(e,{recursive:!0}),process.platform!=="win32"&&ke.chmodSync(e,t.mode),ke.utimesSync(e,t.mtime,t.mtime);return}if(ke.mkdirSync(mi.dirname(e),{recursive:!0}),t.nodeType==="symlink"){ke.rmSync(e,{force:!0,recursive:!0}),ke.symlinkSync(new TextDecoder().decode(t.content),e);return}if(t.metadataOnly&&bd(e,!1))throw new x("EINVAL",`metadata-only entry over a different on-disk type: '${e}'`);t.metadataOnly||(Ed(e,!1),ke.writeFileSync(e,t.content)),process.platform!=="win32"&&ke.chmodSync(e,t.mode),ke.utimesSync(e,t.mtime,t.mtime)}function yi(e){for(let r of[...e.deletions,...e.writes.map(s=>s.path)])if(mi.resolve(r)!==r)throw new x("EINVAL",`change-set path is not normalized: '${r}'`);let t=[...e.deletions].sort((r,s)=>s.length-r.length||(r<s?-1:r>s?1:0));for(let r of t)za(r);let n=[...e.writes].sort((r,s)=>r.path.length-s.path.length||(r.path<s.path?-1:r.path>s.path?1:0));for(let{path:r,...s}of n)Ua(r,s)}import*as Ee from"node:fs";import*as Le from"node:path";import*as Ze from"node:fs";import*as Ne from"node:path";function _e(e,t){let n=/^[A-Za-z]:[\\/]/.test(t)?Ne.win32:Ne.posix,r=n.relative(t,e);return r===""||r!==".."&&!r.startsWith(`..${n.sep}`)&&!n.isAbsolute(r)}function Un(e,t){try{let n=Ze.realpathSync(e);return _e(n,t)?n:null}catch(n){if(n.code==="ENOENT"){let r=Ne.dirname(e);if(r===e)return null;let s=Un(r,t);if(s===null)return null;try{if(Ze.lstatSync(e).isSymbolicLink()){let o=Ze.readlinkSync(e),a=Ne.isAbsolute(o)?o:Ne.resolve(Ne.dirname(e),o),l=Un(a,t);return l===null?null:l}}catch{}return Ne.join(s,Ne.basename(e))}return null}}function gi(e,t,n){let r=Un(e,n);if(r===null)return null;let s=Ne.resolve(e),i=s.slice(t.length),o=r.slice(n.length);if(i!==o)return null;try{if(Ze.lstatSync(s).isSymbolicLink())return null}catch{}return r}function wi(e,t){if(!Ze.existsSync(e))throw new Error(`${t} root does not exist`);if(!Ze.statSync(e).isDirectory())throw new Error(`${t} root is not a directory`)}function Sd(e,t){if(!Ne.isAbsolute(e))return{withinRoot:!0,relativePath:e};let n;try{n=Ze.realpathSync(e)}catch{n=Ne.resolve(e)}return _e(n,t)?{withinRoot:!0,relativePath:Cn(n.slice(t.length))||"/"}:{withinRoot:!1,safeName:Ne.basename(e)}}function Ei(e,t,n,r){let s=e;if(s.path===void 0){for(let o of r)if(s.message?.includes(o))throw e}let i=s.code||"EIO";throw new x(i,`${n} '${t}'`)}async function Nt(e){return Ad(await Ze.promises.lstat(e))}function ja(e){return Ad(Ze.lstatSync(e))}function Ad(e){return process.platform==="win32"&&e.isDirectory()&&(e.mode=e.mode&-512|493),e}function bi(e){let t=e.content.byteLength;for(let n of e.appendChunks??[])t+=n.byteLength;return t}function xd(e){return bi(e)}function Ai(e,t){if(!e.appendChunks||e.appendChunks.length===0)return e.content;let n=e.appendChunks.reduce((i,o)=>i+o.byteLength,e.content.byteLength);if(!Number.isSafeInteger(n))throw new x("EFBIG",`file too large, read '${t}'`);let r=new Uint8Array(n);r.set(e.content);let s=e.content.byteLength;for(let i of e.appendChunks)r.set(i,s),s+=i.byteLength;return e.content=r,e.appendChunks=void 0,r}function vd(e){return!e||e.type!=="file"?0:bi(e)}function jr(){return{type:"directory",children:new Map,changedAt:Date.now(),mode:St,mtime:new Date}}function qr(e){return e.split("/").filter(Boolean)}var Si=class e{maxMemoryBytes;rootNode=jr();bytes=0;mutationSeq_=0;constructor(t){this.maxMemoryBytes=t}get root(){return this.rootNode}get retainedBytes(){return this.bytes}descend(t){let n=qr(t),r=[this.rootNode],s=this.rootNode;for(let i=0;i<n.length;i++){let o=s.children.get(n[i]);if(o===void 0)return{kind:"missing",stack:r,missingAt:i};if(i===n.length-1)return{kind:"found",stack:r,node:o};if(o.type==="whiteout")return{kind:"blocked",stack:r,blockedAt:i};if(o.type!=="directory")return{kind:"notdir",stack:r,notdirAt:i};r.push(o),s=o}return{kind:"found",stack:[],node:this.rootNode}}ensureDirs(t,n){let r=this.rootNode,s="";for(let i of qr(t)){s=`${s}/${i}`;let o=r.children.get(i);if(o===void 0)o=jr(),r.children.set(i,o);else if(o.type==="whiteout")o=this.resurrectDir(r,i,s,o.changedAt??0,n);else if(o.type!=="directory")throw new x("ENOTDIR",`not a directory, mkdir '${t}'`);r=o}return r}resurrectDir(t,n,r,s,i){let o=jr();t.children.set(n,o);let a=i?.(r);if(a)for(let l of a)o.children.has(l)||o.children.set(l,{type:"whiteout",changedAt:s});return o}attach(t,n){n.changedAt=Date.now();let r=qr(t);if(r.length===0)throw new x("EINVAL",`cannot attach at root, attach '${t}'`);let s=this.parentDirOf(r,t),i=s.children.get(r[r.length-1]);if(i?.type==="directory"&&n.type!=="directory")throw new x("EISDIR",`cannot replace directory with ${n.type}, attach '${t}'`);if(i!==void 0&&n.type==="directory")throw new x("EEXIST",`cannot replace ${i.type} with directory, attach '${t}'`);let o=vd(i),a=vd(n);this.assertCapacity(a,o),s.children.set(r[r.length-1],n),this.bytes+=a-o}detach(t){let n=qr(t);if(n.length===0)return;let r=this.descend(t);return r.kind!=="found"?void 0:(r.stack[r.stack.length-1].children.delete(n[n.length-1]),this.bytes-=e.subtreeBytes(r.node),r.node)}putWhiteout(t){let n=qr(t);if(n.length===0)throw new x("EINVAL",`cannot whiteout the root, rm '${t}'`);let r=this.rootNode;for(let o=0;o<n.length-1;o++)r=this.ensureChildDir(r,n[o],t);let s=n[n.length-1],i=r.children.get(s);i?.type!=="whiteout"&&(this.bytes-=e.subtreeBytes(i),r.children.set(s,{type:"whiteout",changedAt:Date.now()}))}appendChunk(t,n){this.assertCapacity(n.byteLength),t.appendChunks||(t.appendChunks=[]),t.appendChunks.push(n),this.bytes+=n.byteLength,this.touch(t)}touch(t){t.seq=++this.mutationSeq_,t.changedAt=Date.now()}detachIfUnchanged(t,n,r){let s=this.descend(t);return s.kind!=="found"||s.node!==n||n.seq!==r||n.type==="directory"&&n.children.size>0?!1:(this.detach(t),!0)}*preOrder(){let t=[{path:"/",node:this.rootNode}];for(;t.length>0;){let n=t.pop();if(yield n,n.node.type==="directory"){let r=[...n.node.children.entries()];for(let s=r.length-1;s>=0;s--){let[i,o]=r[s];t.push({path:kd(n.path,i),node:o})}}}}*postOrder(){let t=[],n=[{path:"/",node:this.rootNode}];for(;n.length>0;){let r=n.pop();if(t.push(r),r.node.type==="directory")for(let[s,i]of r.node.children)n.push({path:kd(r.path,s),node:i})}for(let r=t.length-1;r>=0;r--)yield t[r]}clear(){this.rootNode=jr(),this.bytes=0}static subtreeBytes(t){if(t===void 0)return 0;if(t.type==="file")return bi(t);if(t.type!=="directory")return 0;let n=0,r=[t];for(;r.length>0;){let s=r.pop();for(let i of s.children.values())i.type==="file"?n+=bi(i):i.type==="directory"&&r.push(i)}return n}parentDirOf(t,n){let r=this.rootNode;for(let s=0;s<t.length-1;s++){let i=r.children.get(t[s]);if(i?.type!=="directory")throw new x("ENOTDIR",`not a directory, attach '${n}'`);r=i}return r}ensureChildDir(t,n,r){let s=t.children.get(n);if(s===void 0||s.type==="whiteout")s=jr(),t.children.set(n,s);else if(s.type!=="directory")throw new x("ENOTDIR",`not a directory, rm '${r}'`);return s}assertCapacity(t,n=0){if(!Number.isSafeInteger(t)||t<0||t>this.maxMemoryBytes-this.bytes+n)throw new x("ENOSPC",`overlay memory byte limit exceeded (${this.maxMemoryBytes} bytes)`)}};function kd(e,t){return e==="/"?`/${t}`:`${e}/${t}`}var qy=["ELOOP","EFBIG","EPERM"],Gy="/home/user/project",Rt=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;maxMemoryBytes;allowSymlinks;tree;nextMemoryIdentity=1;get rootDir(){return this.root}restamp(t,n,r="full"){let s=z(t),i=c=>{let u=this.tree.descend(c);u.kind==="found"&&(u.node.changedAt=n)},o=c=>{let u=this.tree.descend(c);if(u.kind==="found"){let f=u.node;(f.changedAt??0)>n&&(f.changedAt=n,f.mtime=new Date(n))}};r==="full"&&i(s);let a=s;for(;;){let c=a.lastIndexOf("/");if(c<=0)break;a=a.slice(0,c),o(a)}if(r==="ancestors")return;let l=[s];for(;l.length>0;){let c=l.pop(),u=this.tree.descend(c);if(!(u.kind!=="found"||u.node.type!=="directory"))for(let f of u.node.children.keys()){let d=`${c==="/"?"":c}/${f}`;o(d),l.push(d)}}}identityFor(t){return t.type==="symlink"?"":(t.identity||(t.identity=`overlay:${this.nextMemoryIdentity++}`),t.identity)}constructor(t){this.root=Le.resolve(t.root);let n=t.mountPoint??Gy;if(this.mountPoint=n==="/"?"/":n.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${n}`);if(this.readOnly=t.readOnly??!1,this.maxFileReadSize=t.maxFileReadSize??10485760,this.maxMemoryBytes=t.maxMemoryBytes??1024*1024*1024,!Number.isSafeInteger(this.maxMemoryBytes)||this.maxMemoryBytes<0)throw new Error("OverlayFs: invalid maxMemoryBytes");this.allowSymlinks=t.allowSymlinks??!1,wi(this.root,"OverlayFs"),this.canonicalRoot=Ee.realpathSync(this.root),this.tree=new Si(this.maxMemoryBytes),this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new x("EROFS",`read-only file system, ${t}`)}createMountPointDirs(){this.tree.ensureDirs(this.mountPoint)}getMountPoint(){return this.mountPoint}diff(){let t=[],n=[],r=[];for(let{path:i,node:o}of this.tree.preOrder()){let a=this.getRelativeToMount(i);if(!(a===null||a==="/")){if(o.type==="whiteout"){this.existsOnRealFs(i)&&(n.push(a),r.push(o.changedAt??0));continue}if(o.type==="file")if(o.metacopy){if(!this.existsOnRealFs(i))continue;t.push({path:a,nodeType:"file",content:new Uint8Array(0),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0,metadataOnly:!0})}else t.push({path:a,nodeType:"file",content:Ai(o,i),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0});else o.type==="directory"?t.push({path:a,nodeType:"directory",content:new Uint8Array(0),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0}):t.push({path:a,nodeType:"symlink",content:new TextEncoder().encode(o.target),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0})}}t.sort((i,o)=>i.path<o.path?-1:i.path>o.path?1:0);let s=n.map((i,o)=>({path:i,changedAt:r[o]}));return s.sort((i,o)=>i.path<o.path?-1:i.path>o.path?1:0),{writes:t,deletions:s.map(i=>i.path),...s.length>0&&{deletionChangedAt:s.map(i=>i.changedAt)}}}async sync(){for(let{path:t,node:n}of this.tree.postOrder()){let r=this.getRelativeToMount(t);if(r===null||r==="/")continue;if(n.type==="whiteout"){this.existsOnRealFs(t)||this.tree.detach(t);continue}if(n.type==="directory"&&n.children.size>0)continue;let s=n.seq;await this.nodeMatchesDisk(t,n)&&this.tree.detachIfUnchanged(t,n,s)}}reset(){this.tree.clear(),this.createMountPointDirs()}drop(t){let n=t.map(r=>{let s=z(r);if(s==="/")throw new x("EINVAL",`invalid argument, drop '${r}'`);return this.mountPoint==="/"?s:`${this.mountPoint}${s}`});n.sort((r,s)=>s.length-r.length);for(let r of n){let s=this.tree.descend(r);if(s.kind!=="found")continue;let i=s.node;i.type==="directory"&&i.children.size>0||this.tree.detach(r)}}async lstatLower(t){let n=this.resolveRealPathParent_(this.toRealPath(t));if(!n)return null;try{return{canonical:n,stat:await Nt(n)}}catch{return null}}async nodeMatchesDisk(t,n){if(n.type==="directory")return(await this.lstatLower(t))?.stat.isDirectory()??!1;if(n.type==="symlink"){if(!this.allowSymlinks)return!1;let s=await this.lstatLower(t);if(!s?.stat.isSymbolicLink())return!1;try{let i=await Ee.promises.readlink(s.canonical);return this.realTargetToVirtual(i)===n.target}catch{return!1}}if(n.metacopy){let s=await this.lstatLower(t);if(!s?.stat.isFile())return!1;let{stat:i}=s;return!(i.mtime.getTime()!==n.mtime.getTime()||process.platform!=="win32"&&(i.mode&4095)!==(n.mode&4095))}let r=this.resolveRealPath_(this.toRealPath(t));if(!r)return!1;try{let s=await Nt(r);if(!s.isFile())return!1;let i=Ai(n,t);if(s.size!==i.byteLength)return!1;let o=this.allowSymlinks?Ee.constants.O_RDONLY:Ee.constants.O_RDONLY|Ee.constants.O_NOFOLLOW,a=await Ee.promises.open(r,o),l;try{l=new Uint8Array(await a.readFile())}finally{await a.close()}for(let c=0;c<l.byteLength;c++)if(l[c]!==i[c])return!1;return!0}catch{return!1}}mkdirSync(t,n){this.tree.ensureDirs(z(t),r=>this.lowerChildren(r))}writeFileSync(t,n){let r=z(t);this.ensureParentDirs(r);let s=n instanceof Uint8Array?n:new TextEncoder().encode(n);this.tree.attach(r,{type:"file",content:s,mode:rn,mtime:new Date})}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let n=z(t),r=this.getRelativeToMount(n);if(r===null)return null;let s=Le.join(this.root,r),i=Le.resolve(s);return _e(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?Un(t,this.canonicalRoot):gi(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let n=Le.dirname(t),r=this.resolveRealPath_(n);return r===null?null:Le.join(r,Le.basename(t))}sanitizeError(t,n,r){Ei(t,n,r,qy)}ensureParentDirs(t){let n=Hn(t);n!=="/"&&this.tree.ensureDirs(n,r=>this.lowerChildren(r))}lowerChildren(t){let n=this.resolveRealPath_(this.toRealPath(t));if(!n)return null;try{return Ee.readdirSync(n)}catch{return null}}async existsInOverlay(t){let n=z(t),r=this.tree.descend(n);if(r.kind==="found")return r.node.type!=="whiteout";if(r.kind==="blocked"||r.kind==="notdir")return!1;let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)return!1;try{return await Nt(s),!0}catch{return!1}}async readFile(t,n){let r=await this.readFileBuffer(t),s=dt(n);return Zt(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return Zt(n,"binary")}async readFileBuffer(t,n=new Set){U(t,"open");let r=z(t);if(n.has(r))throw new x("ELOOP",`too many levels of symbolic links, open '${t}'`);n.add(r);let s=this.tree.descend(r);if(s.kind==="blocked")throw new x("ENOENT",`no such file or directory, open '${t}'`);if(s.kind==="notdir")throw new x("ENOTDIR",`not a directory, open '${t}'`);if(s.kind==="found"){let i=s.node;if(i.type==="whiteout")throw new x("ENOENT",`no such file or directory, open '${t}'`);if(i.type==="symlink"){let a=this.resolveSymlink(r,i.target);return this.readFileBuffer(a,n)}if(i.type!=="file")throw new x("EISDIR",`illegal operation on a directory, read '${t}'`);if(!i.metacopy)return Ai(i,t);let o=await this.readLowerFileBytes(r,t,n);if(process.platform==="win32")try{this.tree.attach(r,{type:"file",content:o,mode:i.mode,mtime:i.mtime})}catch(a){if(!ft(a,"ENOSPC"))throw a}return o}return this.readLowerFileBytes(r,t,n)}async readLowerFileBytes(t,n,r){let s=this.resolveRealPath_(this.toRealPath(t));if(!s)throw new x("ENOENT",`no such file or directory, open '${n}'`);try{let i=await Nt(s);if(i.isSymbolicLink()){if(!this.allowSymlinks)throw new x("ENOENT",`no such file or directory, open '${n}'`);let l=await Ee.promises.readlink(s),c=this.realTargetToVirtual(l),u=this.resolveSymlink(t,c);return this.readFileBuffer(u,r)}if(i.isDirectory())throw new x("EISDIR",`illegal operation on a directory, read '${n}'`);if(this.maxFileReadSize>0&&i.size>this.maxFileReadSize)throw new x("EFBIG",`file too large, read '${n}' (${i.size} bytes, max ${this.maxFileReadSize})`);let o=this.allowSymlinks?Ee.constants.O_RDONLY:Ee.constants.O_RDONLY|Ee.constants.O_NOFOLLOW,a=await Ee.promises.open(s,o);try{let l=await a.readFile();return new Uint8Array(l)}finally{await a.close()}}catch(i){let o=i.code;if(o==="ENOENT")throw new x("ENOENT",`no such file or directory, open '${n}'`);if(o==="ELOOP")throw new x("ENOENT",`no such file or directory, open '${n}'`);this.sanitizeError(i,n,"open")}}async writeFile(t,n,r){U(t,"write"),this.assertWritable(`write '${t}'`);let s=z(t);this.ensureParentDirs(s);let i=dt(r),o=Ht(n,i);this.tree.attach(s,{type:"file",content:o,mode:await this.inheritedMode(s),mtime:new Date})}async inheritedMode(t){let n=this.entryAt(t);if(n?.type==="file")return n.mode;if(n?.type==="directory")return rn;if(process.platform==="win32")return rn;try{let r=await this.stat(t);if(r.isFile)return r.mode}catch{}return rn}async appendFile(t,n,r){U(t,"append"),this.assertWritable(`append '${t}'`);let s=z(t),i=dt(r),o=Ht(n,i),a=this.tree.descend(s);if(a.kind==="found"&&a.node.type==="file"){await this.appendToExisting_(s,a.node,o,t);return}if(a.kind==="blocked")throw new x("ENOENT",`no such file or directory, append '${t}'`);if(a.kind==="notdir")throw new x("ENOTDIR",`not a directory, append '${t}'`);let l;try{l=await this.readFileBuffer(s)}catch(f){if(!ft(f,"ENOENT"))throw f;l=new Uint8Array(0)}let c=await this.inheritedMode(s),u=this.tree.descend(s);if(u.kind==="found"&&u.node.type==="file"){await this.appendToExisting_(s,u.node,o,t);return}this.ensureParentDirs(s),this.tree.attach(s,{type:"file",content:l,appendChunks:[o],mode:c,mtime:new Date})}async appendToExisting_(t,n,r,s){if(n.metacopy){let i=await this.readLowerFileBytes(t,s,new Set),o=this.tree.descend(t);if(o.kind==="found"&&o.node.type==="file"&&!o.node.metacopy){this.tree.appendChunk(o.node,r),o.node.mtime=new Date;return}this.tree.attach(t,{type:"file",content:i,appendChunks:[r],mode:n.mode,mtime:new Date});return}this.tree.appendChunk(n,r),n.mtime=new Date}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,n=new Set){U(t,"stat");let r=z(t);if(n.has(r))throw new x("ELOOP",`too many levels of symbolic links, stat '${t}'`);n.add(r);let s=this.tree.descend(r);if(s.kind==="blocked")throw new x("ENOENT",`no such file or directory, stat '${t}'`);if(s.kind==="notdir")throw new x("ENOTDIR",`not a directory, stat '${t}'`);if(s.kind==="found"){let o=s.node;if(o.type==="whiteout")throw new x("ENOENT",`no such file or directory, stat '${t}'`);if(o.type==="symlink"){let a=this.resolveSymlink(r,o.target);return this.stat(a,n)}return this.memoryEntryStat(o)}let i=this.resolveRealPath_(this.toRealPath(r));if(!i)throw new x("ENOENT",`no such file or directory, stat '${t}'`);try{let o=await Nt(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new x("ENOENT",`no such file or directory, stat '${t}'`);let a=await Ee.promises.readlink(i),l=this.realTargetToVirtual(a),c=this.resolveSymlink(r,l);return this.stat(c,n)}return{isFile:o.isFile(),isDirectory:o.isDirectory(),isSymbolicLink:!1,mode:o.mode,size:o.size,mtime:o.mtime,dev:o.dev,ino:o.ino}}catch(o){if(o.code==="ENOENT")throw new x("ENOENT",`no such file or directory, stat '${t}'`);this.sanitizeError(o,t,"stat")}}async lstat(t){U(t,"lstat");let n=z(t),r=this.tree.descend(n);if(r.kind==="blocked")throw new x("ENOENT",`no such file or directory, lstat '${t}'`);if(r.kind==="notdir")throw new x("ENOTDIR",`not a directory, lstat '${t}'`);if(r.kind==="found"){let i=r.node;if(i.type==="whiteout")throw new x("ENOENT",`no such file or directory, lstat '${t}'`);return this.memoryEntryStat(i)}let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)throw new x("ENOENT",`no such file or directory, lstat '${t}'`);try{let i=await Nt(s);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime,dev:i.dev,ino:i.ino}}catch(i){if(i.code==="ENOENT")throw new x("ENOENT",`no such file or directory, lstat '${t}'`);this.sanitizeError(i,t,"lstat")}}memoryEntryStat(t){if(t.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:t.mode,size:t.target.length,mtime:t.mtime};let n=0;return t.type==="file"&&(n=t.metacopy?t.lowerSize??0:xd(t)),{isFile:t.type==="file",isDirectory:t.type==="directory",isSymbolicLink:!1,mode:t.mode,size:n,mtime:t.mtime,identity:this.identityFor(t)}}resolveSymlink(t,n){return Zn(t,n)}realTargetToVirtual(t){let n=Sd(t,this.canonicalRoot);if(n.withinRoot){if(!Le.isAbsolute(t))return t;let r=n.relativePath;return this.mountPoint==="/"?r:`${this.mountPoint}${r}`}return n.safeName}async mkdir(t,n){U(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let r=z(t);if(await this.existsInOverlay(r)){if(!n?.recursive)throw new x("EEXIST",`file already exists, mkdir '${t}'`);return}let i=Hn(r);if(i!=="/"&&!await this.existsInOverlay(i))if(n?.recursive)await this.mkdir(i,{recursive:!0});else throw new x("ENOENT",`no such file or directory, mkdir '${t}'`);this.tree.ensureDirs(r,o=>this.lowerChildren(o))}async readdirCore(t,n){let r=new Map,s=new Set,i=this.tree.descend(n);if(i.kind==="blocked")throw new x("ENOENT",`no such file or directory, scandir '${t}'`);if(i.kind==="notdir")throw new x("ENOTDIR",`not a directory, scandir '${t}'`);let o;if(i.kind==="found"){let l=i.node;if(l.type==="whiteout")throw new x("ENOENT",`no such file or directory, scandir '${t}'`);if(l.type!=="directory")throw new x("ENOTDIR",`not a directory, scandir '${t}'`);o=l;for(let[c,u]of l.children){if(u.type==="whiteout"){s.add(c);continue}r.set(c,{name:c,isFile:u.type==="file",isDirectory:u.type==="directory",isSymbolicLink:u.type==="symlink"})}}let a=this.resolveRealPath_(this.toRealPath(n));if(a)try{if(!this.allowSymlinks&&(await Nt(a)).isSymbolicLink()){if(!o)throw new x("ENOENT",`no such file or directory, scandir '${t}'`);return r}let l=await Ee.promises.readdir(a,{withFileTypes:!0});for(let c of l)!s.has(c.name)&&!r.has(c.name)&&r.set(c.name,{name:c.name,isFile:c.isFile(),isDirectory:c.isDirectory(),isSymbolicLink:c.isSymbolicLink()})}catch(l){if(l.code==="ENOENT"){if(!o)throw new x("ENOENT",`no such file or directory, scandir '${t}'`)}else l.code!=="ENOTDIR"&&this.sanitizeError(l,t,"scandir")}return r}async resolveForReaddir(t,n=!1){let r=z(t),s=new Set,i=n;for(;;){let l=this.tree.descend(r);if(l.kind!=="found")break;let c=l.node;if(c.type!=="symlink")return{normalized:r,outsideOverlay:!1};if(s.has(r))throw new x("ELOOP",`too many levels of symbolic links, scandir '${t}'`);s.add(r),i=!0,r=this.resolveSymlink(r,c.target)}if(this.getRelativeToMount(r)===null)return{normalized:r,outsideOverlay:!0};let a=this.resolveRealPath_(this.toRealPath(r));if(!a)return{normalized:r,outsideOverlay:!0};try{if((await Nt(a)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:r,outsideOverlay:!0};let c=await Ee.promises.readlink(a),u=this.realTargetToVirtual(c),f=this.resolveSymlink(r,u);return this.resolveForReaddir(f,!0)}return{normalized:r,outsideOverlay:!1}}catch{return i?{normalized:r,outsideOverlay:!0}:{normalized:r,outsideOverlay:!1}}}async readdir(t){U(t,"scandir");let{normalized:n,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let s=await this.readdirCore(t,n);return Array.from(s.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){U(t,"scandir");let{normalized:n,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let s=await this.readdirCore(t,n);return Array.from(s.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,n){U(t,"rm"),this.assertWritable(`rm '${t}'`);let r=z(t);if(!await this.existsInOverlay(r)){if(n?.force)return;throw new x("ENOENT",`no such file or directory, rm '${t}'`)}let i=!1;try{(await this.stat(r)).isDirectory&&(i=(await this.readdir(r)).length>0)}catch{}if(i&&!n?.recursive)throw new x("ENOTEMPTY",`directory not empty, rm '${t}'`);this.existsOnRealFs(r)?this.tree.putWhiteout(r):this.tree.detach(r)}existsOnRealFs(t){let n=this.toRealPath(t),r=this.resolveRealPathParent_(n);if(!r)return!1;try{return ja(r),!0}catch{return!1}}async cp(t,n,r){U(t,"cp"),U(n,"cp"),this.assertWritable(`cp '${n}'`);let s=z(t),i=z(n);if(!await this.existsInOverlay(s))throw new x("ENOENT",`no such file or directory, cp '${t}'`);let a=await this.stat(s);if(a.isFile){let l=await this.readFileBuffer(s);await this.writeFile(i,l)}else if(a.isDirectory){if(!r?.recursive)throw new x("EISDIR",`is a directory, cp '${t}'`);if(qt(s,i))throw new x("EINVAL",`cannot copy '${t}' into itself, '${n}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(s);for(let c of l){let u=s==="/"?`/${c}`:`${s}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,r)}}}async mv(t,n){this.assertWritable(`mv '${n}'`),await this.cp(t,n,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,n){return sn(t,n)}getAllPaths(){let t=new Set;for(let{path:n,node:r}of this.tree.preOrder())r.type!=="whiteout"&&t.add(n);return this.scanRealFs(this.mountPoint,t),Array.from(t)}scanRealFs(t,n){if(this.lowerHidden(t))return;let r=this.resolveRealPath_(this.toRealPath(t));if(r)try{let s=Ee.readdirSync(r);for(let i of s){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.lowerHidden(o))continue;n.add(o);let a=Le.join(r,i);ja(a).isDirectory()&&this.scanRealFs(o,n)}}catch{}}lowerHidden(t){let n=this.tree.descend(t);switch(n.kind){case"blocked":case"notdir":return!0;case"found":return n.node.type!=="directory";default:return!1}}entryAt(t){let n=this.tree.descend(t);if(n.kind==="found"&&n.node.type!=="whiteout")return n.node}async chmod(t,n){U(t,"chmod"),this.assertWritable(`chmod '${t}'`);let r=z(t);if(!await this.existsInOverlay(r))throw new x("ENOENT",`no such file or directory, chmod '${t}'`);let i=this.entryAt(r);if(i){i.mode=n,this.tree.touch(i);return}let o=await this.stat(r);this.attachMetacopyShadow(r,o,n,o.isFile?o.mtime:new Date)}attachMetacopyShadow(t,n,r,s){this.ensureParentDirs(t),n.isFile?this.tree.attach(t,{type:"file",content:new Uint8Array(0),metacopy:!0,lowerSize:n.size,mode:r,mtime:s}):n.isDirectory&&this.tree.attach(t,{type:"directory",children:new Map,mode:r,mtime:s})}async symlink(t,n){if(!this.allowSymlinks)throw new x("EPERM",`operation not permitted, symlink '${n}'`);U(n,"symlink"),this.assertWritable(`symlink '${n}'`);let r=z(n);if(await this.existsInOverlay(r))throw new x("EEXIST",`file already exists, symlink '${n}'`);this.ensureParentDirs(r),this.tree.attach(r,{type:"symlink",target:t,mode:Jr,mtime:new Date})}async link(t,n){U(t,"link"),U(n,"link"),this.assertWritable(`link '${n}'`);let r=z(t),s=z(n);if(!await this.existsInOverlay(r))throw new x("ENOENT",`no such file or directory, link '${t}'`);let o=await this.stat(r);if(!o.isFile)throw new x("EPERM",`operation not permitted, link '${t}'`);if(await this.existsInOverlay(s))throw new x("EEXIST",`file already exists, link '${n}'`);let l=await this.readFileBuffer(r);this.ensureParentDirs(s),this.tree.attach(s,{type:"file",content:l,mode:o.mode,mtime:new Date,identity:o.identity??`overlay:${this.nextMemoryIdentity++}`})}async readlink(t){U(t,"readlink");let n=z(t),r=this.tree.descend(n);if(r.kind==="blocked")throw new x("ENOENT",`no such file or directory, readlink '${t}'`);if(r.kind==="notdir")throw new x("ENOTDIR",`not a directory, readlink '${t}'`);if(r.kind==="found"){let i=r.node;if(i.type==="whiteout")throw new x("ENOENT",`no such file or directory, readlink '${t}'`);if(i.type!=="symlink")throw new x("EINVAL",`invalid argument, readlink '${t}'`);return i.target}let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)throw new x("ENOENT",`no such file or directory, readlink '${t}'`);try{let i=await Ee.promises.readlink(s);if(!Le.isAbsolute(i)){let o=Le.resolve(Le.dirname(s),i),a;try{a=Ee.realpathSync(o)}catch{a=o}if(!_e(a,this.canonicalRoot))return Le.basename(i)}return this.realTargetToVirtual(i)}catch(i){if(i.code==="ENOENT")throw new x("ENOENT",`no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new x("EINVAL",`invalid argument, readlink '${t}'`);this.sanitizeError(i,t,"readlink")}}async realpath(t){U(t,"realpath");let n=z(t),r=new Set,s=l=>{let c=this.tree.descend(l);if(c.kind==="blocked"||c.kind==="found"&&c.node.type==="whiteout")throw new x("ENOENT",`no such file or directory, realpath '${t}'`);return c.kind==="found"?c.node:void 0},i=async l=>{let c=l==="/"?[]:l.slice(1).split("/"),u="";for(let f of c){if(u=`${u}/${f}`,r.has(u))throw new x("ELOOP",`too many levels of symbolic links, realpath '${t}'`);let d=s(u),h=0,p=yr;for(;d&&d.type==="symlink"&&h<p;){if(r.add(u),u=this.resolveSymlink(u,d.target),h++,r.has(u))throw new x("ELOOP",`too many levels of symbolic links, realpath '${t}'`);d=s(u)}if(h>=p)throw new x("ELOOP",`too many levels of symbolic links, realpath '${t}'`);if(!d){let m=this.toRealPath(u),E=this.resolveRealPath_(m);if(E)try{if((await Nt(E)).isSymbolicLink()){if(!this.allowSymlinks)throw new x("ENOENT",`no such file or directory, realpath '${t}'`);let g=await Ee.promises.readlink(E),y=this.realTargetToVirtual(g);return r.add(u),u=this.resolveSymlink(u,y),i(u)}}catch(S){if(S.code==="ENOENT")throw new x("ENOENT",`no such file or directory, realpath '${t}'`);this.sanitizeError(S,t,"realpath")}else if(!this.allowSymlinks){let S=this.resolveRealPathParent_(m);if(S)try{if((await Nt(S)).isSymbolicLink())throw new x("ENOENT",`no such file or directory, realpath '${t}'`)}catch(g){if(ft(g,"ENOENT")||ft(g,"ELOOP"))throw new x("ENOENT",`no such file or directory, realpath '${t}'`);this.sanitizeError(g,t,"realpath")}}}}return u||"/"},o=await i(n);if(!await this.existsInOverlay(o))throw new x("ENOENT",`no such file or directory, realpath '${t}'`);return o}async utimes(t,n,r){U(t,"utimes"),this.assertWritable(`utimes '${t}'`);let s=z(t);if(!await this.existsInOverlay(s))throw new x("ENOENT",`no such file or directory, utimes '${t}'`);let o=this.entryAt(s);if(o){o.mtime=r,this.tree.touch(o);return}let a=await this.stat(s);this.attachMetacopyShadow(s,a,a.mode,r)}};var vi=class{bash;overlays;constructor(t={}){let{home:n,project:r,cwd:s,env:i,...o}=t,a=new Map,l=[],c=n?fr(n):null,u=r?fr(r):null,f=c&&u&&(()=>{let p=Fe.relative(c,u);return p!==".."&&!p.startsWith(`..${Fe.sep}`)&&!Fe.isAbsolute(p)})();if(c){let p=new Rt({root:c,mountPoint:"/"});a.set("/home/user",{root:c,fs:p}),l.push({mountPoint:"/home/user",filesystem:p})}let d="/home/user";if(u)if(f&&c){let p=Fe.relative(c,u);d=p?`/home/user/${p.split(Fe.sep).join("/")}`:"/home/user"}else{let p=new Rt({root:u,mountPoint:"/"});a.set("/project",{root:u,fs:p}),l.push({mountPoint:"/project",filesystem:p}),d="/project"}let h=new Pt({base:new ze,mounts:l});this.overlays=a,this.bash=new zn({...o,env:{HOME:"/home/user",...i},cwd:s??d,fs:h})}analyzeCommands(t){return this.bash.analyzeCommands(t)}exec(t){return this.bash.exec(t)}diff(){let t=[],n=[];for(let{root:r,fs:s}of this.overlays.values()){let i=s.diff();for(let{path:o,...a}of i.writes)t.push({...a,path:Fe.join(r,o)});for(let o=0;o<i.deletions.length;o++)n.push({path:Fe.join(r,i.deletions[o]),changedAt:i.deletionChangedAt?.[o]})}return t.sort((r,s)=>r.path<s.path?-1:r.path>s.path?1:0),n.sort((r,s)=>r.path<s.path?-1:r.path>s.path?1:0),{writes:t,deletions:n.map(r=>r.path),...n.length>0&&{deletionChangedAt:n.map(r=>r.changedAt??0)}}}async applyChanges(t=this.diff()){let n=new Map,r=s=>{let i=this.findOverlay(s);if(!i)return;let o=`/${Fe.relative(i.root,s).split(Fe.sep).join("/")}`;if(o==="/")return;let a=n.get(i.fs);a?a.push(o):n.set(i.fs,[o])};try{for(let s of t.deletions)za(s),r(s);for(let s of t.writes)Ua(s.path,s),r(s.path)}finally{for(let[s,i]of n)s.drop(i)}}findOverlayEntry(t){let n=null;for(let[r,s]of this.overlays)(t===s.root||t.startsWith(s.root+Fe.sep))&&(!n||s.root.length>n.root.length)&&(n={mountPoint:r,root:s.root,fs:s.fs});return n}findOverlay(t){return this.findOverlayEntry(t)}resolveRealPath(t){let n=this.findOverlayEntry(t);if(!n)return null;let r=`/${Fe.relative(n.root,t).split(Fe.sep).join("/")}`;return{mountPoint:n.mountPoint,overlay:n.fs,path:r}}toRealPath(t){let n=t.startsWith("/")?t:`/${t}`,r=null;for(let[s,i]of this.overlays)(n===s||n.startsWith(`${s}/`))&&(!r||s.length>r.mountPoint.length)&&(r={mountPoint:s,root:i.root});return r?Fe.join(r.root,n.slice(r.mountPoint.length)):null}async sync(){for(let{fs:t}of this.overlays.values())await t.sync()}reset(){for(let{fs:t}of this.overlays.values())t.reset()}};function Hy(e={}){return new vi(e)}import{randomBytes as Zy}from"node:crypto";import*as L from"node:fs";import*as Z from"node:path";var Qy=["EACCES","escaping sandbox","EFBIG","ENOTSUP"],ki=class e{static activeMutationRoots=new Set;static pendingMutations=[];root;canonicalRoot;maxFileReadSize;maxCopyOnWriteSize;maxCopySize;allowSymlinks;constructor(t){this.root=Z.resolve(t.root),this.maxFileReadSize=t.maxFileReadSize??10485760,this.maxCopyOnWriteSize=t.maxCopyOnWriteSize??104857600,this.maxCopySize=t.maxCopySize??0,this.allowSymlinks=t.allowSymlinks??!1,wi(this.root,"ReadWriteFs"),this.canonicalRoot=L.realpathSync(this.root)}resolveAndValidate(t,n){let r=this.allowSymlinks?Un(t,this.canonicalRoot):gi(t,this.root,this.canonicalRoot);if(r===null)throw new x("EACCES",`permission denied, '${n}' resolves outside sandbox`);return r}validateParent(t,n){let r=Z.dirname(t),s=this.resolveAndValidate(r,n);return Z.join(s,Z.basename(t))}toRealPath(t){let n=z(t),r=Z.join(this.root,n);return Z.resolve(r)}async readFile(t,n){let r=await this.readFileBuffer(t),s=dt(n);return Zt(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return Zt(n,"binary")}async readFileBuffer(t){U(t,"open");let n=this.toRealPath(t),r=this.resolveAndValidate(n,t);try{let s=this.allowSymlinks?L.constants.O_RDONLY:L.constants.O_RDONLY|L.constants.O_NOFOLLOW,i=await L.promises.open(r,s);try{if(this.maxFileReadSize>0){let a=await i.stat();if(a.size>this.maxFileReadSize)throw new x("EFBIG",`file too large, read '${t}' (${a.size} bytes, max ${this.maxFileReadSize})`)}let o=await i.readFile();return new Uint8Array(o)}finally{await i.close()}}catch(s){let i=s;if(i.code==="ENOENT")throw new x("ENOENT",`no such file or directory, open '${t}'`);if(i.code==="EISDIR")throw new x("EISDIR",`illegal operation on a directory, read '${t}'`);if(i.code==="ELOOP")throw new x("EACCES",`permission denied, '${t}' is a symlink`);this.sanitizeError(s,t,"open")}}async writeFile(t,n,r){await this.withFilesystemMutation(()=>this.writeFileUnlocked(t,n,r))}async writeFileUnlocked(t,n,r){U(t,"write");let s=this.toRealPath(t),i=this.resolveAndValidate(s,t),o=dt(r),a=Ht(n,o),l=Z.dirname(i);try{await L.promises.mkdir(l,{recursive:!0}),i=this.resolveAndValidate(s,t);let c=this.allowSymlinks?0:L.constants.O_NOFOLLOW,u=null;try{let f=await L.promises.lstat(i);if(!f.isFile()&&!f.isDirectory())throw new x("EACCES",`cannot write special file '${t}'`);let d=await L.promises.open(i,L.constants.O_WRONLY|L.constants.O_NONBLOCK|c);try{if(u=await d.stat(),!u.isFile())throw new x("EACCES",`cannot write special file '${t}'`);if(u.nlink<=1){await d.truncate(0),await d.writeFile(a);return}}finally{await d.close()}}catch(f){if(f.code!=="ENOENT")throw f}await this.replaceFile(i,a,u)}catch(c){if(c.code==="ELOOP")throw new x("EACCES",`permission denied, '${t}' is a symlink`);this.sanitizeError(c,t,"write")}}async appendFile(t,n,r){await this.withFilesystemMutation(()=>this.appendFileUnlocked(t,n,r))}async appendFileUnlocked(t,n,r){U(t,"append");let s=this.toRealPath(t),i=dt(r),o=Ht(n,i),a=this.resolveAndValidate(s,t),l=Z.dirname(a);try{await L.promises.mkdir(l,{recursive:!0}),a=this.resolveAndValidate(s,t);let c=this.allowSymlinks?0:L.constants.O_NOFOLLOW,u=null;try{let d=await L.promises.lstat(a);if(!d.isFile()&&!d.isDirectory())throw new x("EACCES",`cannot append special file '${t}'`);let h=await L.promises.open(a,L.constants.O_WRONLY|L.constants.O_APPEND|L.constants.O_NONBLOCK|c);try{if(u=await h.stat(),!u.isFile())throw new x("EACCES",`cannot append special file '${t}'`);if(u.nlink<=1){await h.writeFile(o);return}}finally{await h.close()}}catch(d){if(d.code!=="ENOENT")throw d}if(!u){await this.replaceFile(a,o,null);return}this.assertCopyOnWriteSize(u.size,"append",t);let f=await this.openCopySource(a);try{let d=await f.stat();if(!d.isFile()||d.dev!==u.dev||d.ino!==u.ino)throw new x("EACCES",`file identity changed, append '${t}'`);await this.replaceFile(a,o,d,{handle:f,size:u.size})}finally{await f.close()}}catch(c){if(c.code==="ELOOP")throw new x("EACCES",`permission denied, '${t}' is a symlink`);this.sanitizeError(c,t,"append")}}async withFilesystemMutation(t){return new Promise((n,r)=>{e.pendingMutations.push({root:this.canonicalRoot,start:()=>{e.activeMutationRoots.add(this.canonicalRoot),t().then(n,r).finally(()=>{e.activeMutationRoots.delete(this.canonicalRoot),e.drainMutationQueue()})}}),e.drainMutationQueue()})}static drainMutationQueue(){for(let t=0;t<e.pendingMutations.length;){let n=e.pendingMutations[t];if([...e.activeMutationRoots].some(s=>_e(n.root,s)||_e(s,n.root))){t++;continue}e.pendingMutations.splice(t,1),n.start()}}assertCopyOnWriteSize(t,n,r){if(this.maxCopyOnWriteSize>0&&t>this.maxCopyOnWriteSize)throw new x("EFBIG",`file too large for copy-on-write ${n} '${r}' (${t} bytes, max ${this.maxCopyOnWriteSize})`)}assertCopySize(t,n){if(this.maxCopySize>0&&t.size>this.maxCopySize)throw new x("EFBIG",`file too large to copy '${n}' (${t.size} bytes, max ${this.maxCopySize})`)}randomTransactionToken(){return Zy(16).toString("hex")}async openCopySource(t){let n=this.allowSymlinks?0:L.constants.O_NOFOLLOW,r=L.constants.O_RDONLY|L.constants.O_NONBLOCK|n,s=L.constants.O_NOATIME;if(process.platform!=="linux"||s===void 0)return L.promises.open(t,r);try{return await L.promises.open(t,r|s)}catch(i){if(i.code!=="EPERM")throw i;return L.promises.open(t,r)}}async replaceFile(t,n,r,s,i,o=!1){let a=Z.dirname(t),l="",c=null,u=r===null?438:384;for(let p=0;p<16;p++){l=Z.join(a,`.just-bash-write-${this.randomTransactionToken()}`);try{c=await L.promises.open(l,L.constants.O_WRONLY|L.constants.O_CREAT|L.constants.O_EXCL,u);break}catch(m){if(m.code!=="EEXIST")throw m}}if(!c)throw new x("EEXIST",`replacement write '${t}'`);let f=c,d=await f.stat(),h=!1;try{try{let m=0,E=async S=>{let g=0;for(;g<S.byteLength;){let{bytesWritten:y}=await f.write(S,g,S.byteLength-g,m+g);if(y===0)throw new x("EIO","replacement write made no progress");g+=y}m+=g};if(s){let S=Buffer.allocUnsafe(65536),g=0,y=s.size;for(;y>0;){let b=Math.min(S.length,y),{bytesRead:A}=await s.handle.read(S,0,b,g);if(A===0)break;await E(S.subarray(0,A)),g+=A,y-=A}}if(await E(n),r!==null&&await f.chmod(r.mode&(o?4095:511)),i)await f.utimes(i.atime,i.mtime);else if(r!==null){let S=await f.stat();await f.utimes(r.atime,S.mtime)}}finally{await f.close(),c=null}let p=await L.promises.lstat(l);if(!p.isFile()||p.dev!==d.dev||p.ino!==d.ino)throw new x("EACCES","replacement staging entry changed");await L.promises.rename(l,t),h=!0}finally{c&&await c.close().catch(()=>{}),h||await L.promises.rm(l,{force:!0}).catch(()=>{})}}async exists(t){if(t.includes("\0"))return!1;let n=this.toRealPath(t);try{let r=this.resolveAndValidate(n,t);return await L.promises.access(r),!0}catch{return!1}}async stat(t){U(t,"stat");let n=this.toRealPath(t),r=this.resolveAndValidate(n,t);try{let s=await L.promises.lstat(r);if(!this.allowSymlinks&&s.isSymbolicLink())throw new x("EACCES",`permission denied, '${t}' is a symlink`);return{isFile:s.isFile(),isDirectory:s.isDirectory(),isSymbolicLink:s.isSymbolicLink(),mode:s.mode,size:s.size,mtime:s.mtime,dev:s.dev,ino:s.ino,identity:`real:${s.dev}:${s.ino}`}}catch(s){if(s.code==="ENOENT")throw new x("ENOENT",`no such file or directory, stat '${t}'`);this.sanitizeError(s,t,"stat")}}async lstat(t){U(t,"lstat");let n=this.toRealPath(t),r=this.validateParent(n,t);try{let s=await L.promises.lstat(r);return{isFile:s.isFile(),isDirectory:s.isDirectory(),isSymbolicLink:s.isSymbolicLink(),mode:s.mode,size:s.size,mtime:s.mtime,dev:s.dev,ino:s.ino,identity:`real:${s.dev}:${s.ino}`}}catch(s){if(s.code==="ENOENT")throw new x("ENOENT",`no such file or directory, lstat '${t}'`);this.sanitizeError(s,t,"lstat")}}async mkdir(t,n){await this.withFilesystemMutation(()=>this.mkdirUnlocked(t,n))}async mkdirUnlocked(t,n){U(t,"mkdir");let r=this.toRealPath(t),s=r===this.root?this.resolveAndValidate(r,t):this.validateParent(r,t);try{await L.promises.mkdir(s,{recursive:n?.recursive})}catch(i){let o=i;if(o.code==="EEXIST")throw new x("EEXIST",`file already exists, mkdir '${t}'`);if(o.code==="ENOENT")throw new x("ENOENT",`no such file or directory, mkdir '${t}'`);this.sanitizeError(i,t,"mkdir")}}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){U(t,"scandir");let n=this.toRealPath(t),r=this.resolveAndValidate(n,t);try{if(!this.allowSymlinks&&(await L.promises.lstat(r)).isSymbolicLink())throw new x("EACCES",`permission denied, '${t}' is a symlink`);return(await L.promises.readdir(r,{withFileTypes:!0})).map(i=>({name:i.name,isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink()})).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}catch(s){let i=s;if(i.code==="ENOENT")throw new x("ENOENT",`no such file or directory, scandir '${t}'`);if(i.code==="ENOTDIR")throw new x("ENOTDIR",`not a directory, scandir '${t}'`);this.sanitizeError(s,t,"scandir")}}async rm(t,n){await this.withFilesystemMutation(()=>this.rmUnlocked(t,n))}async rmUnlocked(t,n){U(t,"rm");let r=this.toRealPath(t),s=this.validateParent(r,t);try{let i=await L.promises.lstat(s);if(!this.allowSymlinks&&i.isSymbolicLink())throw new x("EACCES",`permission denied, '${t}' is a symlink`);await L.promises.rm(s,{recursive:n?.recursive??!1,force:n?.force??!1})}catch(i){let o=i;if(o.code==="ENOENT"){if(n?.force)return;throw new x("ENOENT",`no such file or directory, rm '${t}'`)}if(o.code==="ENOTEMPTY")throw new x("ENOTEMPTY",`directory not empty, rm '${t}'`);this.sanitizeError(i,t,"rm")}}async cp(t,n,r){await this.withFilesystemMutation(()=>this.cpUnlocked(t,n,r))}async cpUnlocked(t,n,r){U(t,"cp"),U(n,"cp");let s=this.toRealPath(t),i=this.toRealPath(n),o=this.validateParent(s,t),a=this.resolveAndValidate(i,n),l;try{l=await L.promises.lstat(o)}catch(c){if(c.code==="ENOENT")throw new x("ENOENT",`no such file or directory, cp '${t}'`);this.sanitizeError(c,t,"cp")}if(l.isDirectory()&&_e(a,o))throw new x("EINVAL",`cannot copy '${t}' into itself, '${n}'`);if(!l.isDirectory())try{let c=this.validateParent(i,n),u=await L.promises.lstat(c);if(l.dev===u.dev&&l.ino===u.ino)throw new x("EINVAL",`cannot copy '${t}' onto itself, '${n}'`)}catch(c){if(c.code!=="ENOENT")throw c}if(l.isFile())try{let c=await L.promises.stat(a);if(l.dev===c.dev&&l.ino===c.ino)throw new x("EINVAL",`cannot copy '${t}' onto itself, '${n}'`)}catch(c){if(c.code!=="ENOENT")throw c}try{await this.preflightCopyTree(o,t)}catch(c){this.sanitizeError(c,t,"cp")}if(l.isFile()||l.isSymbolicLink())try{await L.promises.mkdir(Z.dirname(a),{recursive:!0}),this.resolveAndValidate(i,n)}catch(c){this.sanitizeError(c,n,"cp")}try{await this.copyTreeEntry(o,i,t,n,r?.recursive??!1)}catch(c){let u=c;if(u.code==="ENOENT")throw new x("ENOENT",`no such file or directory, cp '${t}'`);if(u.code==="EISDIR")throw new x("EISDIR",`is a directory, cp '${t}'`);this.sanitizeError(c,t,"cp")}}async copyTreeEntry(t,n,r,s,i){let o=await L.promises.lstat(t);if(o.isFile()){this.assertCopySize(o,r);let a=this.resolveAndValidate(n,s),l=await this.assertCopyDestinationWritable(a,s),c=await this.openCopySource(t);try{let u=await c.stat();if(!u.isFile()||u.dev!==o.dev||u.ino!==o.ino)throw new x("EACCES",`file identity changed, cp '${r}'`);await this.replaceFile(a,new Uint8Array(0),l??o,{handle:c,size:o.size})}finally{await c.close()}return}if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new x("EACCES",`permission denied, cp '${r}' contains a symlink`);let a=await L.promises.readlink(t),l=Z.isAbsolute(a)?await this.toVirtualAbsoluteSymlinkTarget(a,r):a;await this.replaceSymlink(n,s,l);return}if(o.isDirectory()){if(!i)throw new x("EISDIR",`is a directory, cp '${r}'`);let a=this.resolveAndValidate(n,s);await L.promises.mkdir(a,{recursive:!0}),a=this.resolveAndValidate(n,s);for(let l of await L.promises.readdir(t))await this.copyTreeEntry(Z.join(t,l),Z.join(n,l),Z.join(r,l),Z.join(s,l),!0);await L.promises.chmod(a,o.mode&4095);return}throw new x("EINVAL",`unsupported file type, cp '${r}'`)}async assertCopyDestinationWritable(t,n){let r;try{r=await L.promises.lstat(t)}catch(o){if(o.code==="ENOENT")return null;throw o}if(!r.isFile()){if(r.isDirectory())return r;throw new x("EACCES",`cannot copy over special file '${n}'`)}let s=this.allowSymlinks?0:L.constants.O_NOFOLLOW,i=await L.promises.open(t,L.constants.O_WRONLY|L.constants.O_NONBLOCK|s);try{let o=await i.stat();if(!o.isFile()||o.dev!==r.dev||o.ino!==r.ino)throw new x("EACCES",`destination changed, cp '${n}'`)}finally{await i.close()}return r}async replaceSymlink(t,n,r){let s=this.validateParent(t,n),i=Z.dirname(z(n)),o="",a="",l="",c=null;for(let f=0;f<16;f++){let d=`.just-bash-copy-link-${this.randomTransactionToken()}`;o=i==="/"?`/${d}`:`${i}/${d}`,a=this.toRealPath(o);try{await this.symlinkUnlocked(r,o),l=this.validateParent(a,o),c=await L.promises.lstat(l);break}catch(h){if(!ft(h,"EEXIST"))throw h}}if(!c)throw new x("EEXIST",`replacement symlink '${n}'`);let u=!1;try{let f=await L.promises.lstat(l);if(!f.isSymbolicLink()||f.dev!==c.dev||f.ino!==c.ino)throw new x("EACCES","replacement symlink entry changed");await L.promises.rename(l,s),u=!0}finally{!u&&l&&await L.promises.rm(l,{force:!0}).catch(()=>{})}}async toVirtualAbsoluteSymlinkTarget(t,n){let r=Z.resolve(t),s=await L.promises.realpath(r),i=await L.promises.realpath(Z.dirname(r)),o=Z.join(i,Z.basename(r));if(!_e(s,this.canonicalRoot)||!_e(o,this.canonicalRoot))throw new x("EACCES",`permission denied, cp '${n}' contains an unsafe symlink`);return Cn(o.slice(this.canonicalRoot.length))||"/"}async preflightCopyTree(t,n,r=new Set){let s=await L.promises.lstat(t),i=`${s.dev}:${s.ino}`;if(r.has(i))throw new x("ELOOP",`cp '${n}' contains a cycle`);if(s.isSymbolicLink()){if(!this.allowSymlinks)throw new x("EACCES",`permission denied, cp '${n}' contains a symlink`);let o=await L.promises.realpath(t);if(!_e(o,this.canonicalRoot))throw new x("EACCES",`permission denied, cp '${n}' contains an unsafe symlink`);return}if(s.isDirectory()){r.add(i);try{let o=await L.promises.readdir(t);for(let a of o)await this.preflightCopyTree(Z.join(t,a),Z.join(n,a),r)}finally{r.delete(i)}}}async mv(t,n){await this.withFilesystemMutation(()=>this.mvUnlocked(t,n))}async mvUnlocked(t,n){U(t,"mv"),U(n,"mv");let r=this.toRealPath(t),s=this.toRealPath(n),i=this.validateParent(r,t),o=this.validateParent(s,n),a;try{a=await L.promises.lstat(i)}catch(c){if(c.code==="ENOENT")throw new x("ENOENT",`no such file or directory, mv '${t}'`);this.sanitizeError(c,t,"mv")}if(a.isDirectory()&&this.isSameOrDescendantIdentity(i,o))throw new x("EINVAL",`cannot move '${t}' into itself, '${n}'`);try{if(a.isSymbolicLink()){let c=await L.promises.readlink(i),u=Z.resolve(Z.dirname(o),c),f=await L.promises.realpath(u).catch(()=>u);if(!_e(f,this.canonicalRoot))throw new x("EACCES",`permission denied, mv '${t}' -> '${n}' would create symlink escaping sandbox`)}}catch(c){let u=c;if(u.code==="ENOENT")throw new x("ENOENT",`no such file or directory, mv '${t}'`);if(ft(u,"EACCES"))throw c}let l=Z.dirname(o);try{await L.promises.mkdir(l,{recursive:!0})}catch(c){this.sanitizeError(c,n,"mv")}try{await L.promises.rename(i,o)}catch(c){let u=c;if(u.code==="ENOENT")throw new x("ENOENT",`no such file or directory, mv '${t}'`);if(u.code==="EXDEV"){await this.moveAcrossDevices(t,n);return}this.sanitizeError(c,t,"mv")}try{if(L.lstatSync(o).isDirectory()&&this.findEscapingSymlinks(o).length>0)throw await L.promises.rename(o,i),new x("EACCES",`permission denied, mv '${t}' -> '${n}' would create symlinks escaping sandbox`)}catch(c){if(ft(c,"EACCES"))throw c;await L.promises.rename(o,i).catch(()=>{}),this.sanitizeError(c,n,"mv")}}isSameOrDescendantIdentity(t,n){let r=t,s=n;try{r=L.realpathSync(t)}catch{}try{s=L.realpathSync(n)}catch{try{let i=L.realpathSync(Z.dirname(n));s=Z.join(i,Z.basename(n))}catch{}}return _e(s,r)}async uniqueTransactionPath(t,n){let r=Z.posix.dirname(t);for(let s=0;s<16;s++){let i=Z.posix.join(r,`.just-bash-mv-${n}-${this.randomTransactionToken()}`);if(!await this.exists(i))return i}throw new x("EEXIST",`mv '${t}'`)}async moveAcrossDevices(t,n){let r=await this.uniqueTransactionPath(n,"stage"),s=await this.uniqueTransactionPath(n,"backup"),i=await this.uniqueTransactionPath(t,"source"),o=this.validateParent(this.toRealPath(r),r),a=this.validateParent(this.toRealPath(s),s),l=this.validateParent(this.toRealPath(t),t),c=this.validateParent(this.toRealPath(i),i),u=this.validateParent(this.toRealPath(n),n),f=!1,d=!1,h=!1,p=async()=>{h&&await L.promises.rename(c,l).catch(()=>{}),d&&await L.promises.rm(u,{recursive:!0,force:!0}).catch(()=>{}),f&&await L.promises.rename(a,u).catch(()=>{}),await L.promises.rm(o,{recursive:!0,force:!0}).catch(()=>{})};try{if(await this.cpUnlocked(t,r,{recursive:!0}),(await L.promises.lstat(o)).isDirectory()&&this.findEscapingSymlinks(o).length>0)throw new x("EACCES",`permission denied, mv '${t}' -> '${n}' would create symlinks escaping sandbox`);try{await L.promises.rename(u,a),f=!0}catch(E){if(E.code!=="ENOENT")throw E}await L.promises.rename(o,u),d=!0,await L.promises.rename(l,c),h=!0,await L.promises.rm(c,{recursive:!0,force:!1}),h=!1,f&&await L.promises.rm(a,{recursive:!0,force:!0}).catch(()=>{})}catch(m){await p(),this.sanitizeError(m,t,"mv")}}resolvePath(t,n){return sn(t,n)}getAllPaths(){let t=[];return this.scanDir("/",t),t}sanitizeError(t,n,r){Ei(t,n,r,Qy)}findEscapingSymlinks(t){let n=[],r=L.readdirSync(t);for(let s of r){let i=Z.join(t,s),o=L.lstatSync(i);if(o.isSymbolicLink()){let a=L.readlinkSync(i),l=Z.resolve(t,a),c;try{c=L.realpathSync(l)}catch(u){if(u.code!=="ENOENT")throw u;c=l}_e(c,this.canonicalRoot)||n.push(i)}else o.isDirectory()&&n.push(...this.findEscapingSymlinks(i))}return n}scanDir(t,n){let r=this.toRealPath(t),s;try{s=this.resolveAndValidate(r,t)}catch{return}try{let i=L.readdirSync(s);for(let o of i){let a=t==="/"?`/${o}`:`${t}/${o}`;n.push(a);let l=Z.join(s,o);L.lstatSync(l).isDirectory()&&this.scanDir(a,n)}}catch{}}async chmod(t,n){await this.withFilesystemMutation(()=>this.chmodUnlocked(t,n))}async chmodUnlocked(t,n){U(t,"chmod");let r=this.toRealPath(t),s=this.resolveAndValidate(r,t);try{let i=await L.promises.lstat(s);if(!i.isFile()){if(!i.isDirectory()&&i.nlink>1)throw new x("EACCES",`cannot chmod multiply-linked special file '${t}'`);await L.promises.chmod(s,n);return}if(i.nlink<=1){await L.promises.chmod(s,n);return}this.assertCopyOnWriteSize(i.size,"chmod",t);let o=await this.openCopySource(s);try{let a=await o.stat();if(!a.isFile())throw new x("EACCES",`file type changed, chmod '${t}'`);await this.replaceFile(s,new Uint8Array(0),{mode:n,atime:a.atime,mtime:a.mtime},{handle:o,size:a.size},{atime:a.atime,mtime:a.mtime},!0)}finally{await o.close()}}catch(i){let o=i;if(o.code==="ENOENT")throw new x("ENOENT",`no such file or directory, chmod '${t}'`);if(o.code==="ELOOP")throw new x("EACCES",`permission denied, '${t}' is a symlink`);this.sanitizeError(i,t,"chmod")}}async symlink(t,n){await this.withFilesystemMutation(()=>this.symlinkUnlocked(t,n))}async symlinkUnlocked(t,n){if(!this.allowSymlinks)throw new x("EPERM",`operation not permitted, symlink '${n}'`);U(n,"symlink");let r=this.toRealPath(n),s=this.validateParent(r,n),i=z(n),o=z(Z.dirname(i)),a=t.startsWith("/")?z(t):z(o==="/"?`/${t}`:`${o}/${t}`),l=Z.join(this.canonicalRoot,a),c=Z.dirname(s),u=t.startsWith("/")?l:Z.relative(c,l)||".";try{await L.promises.symlink(u,s)}catch(f){if(f.code==="EEXIST")throw new x("EEXIST",`file already exists, symlink '${n}'`);this.sanitizeError(f,n,"symlink")}}async link(t,n){await this.withFilesystemMutation(()=>this.linkUnlocked(t,n))}async linkUnlocked(t,n){U(t,"link"),U(n,"link");let r=this.toRealPath(t),s=this.toRealPath(n),i=this.resolveAndValidate(r,t),o=s===this.root?this.resolveAndValidate(s,n):this.validateParent(s,n);try{await L.promises.link(i,o)}catch(a){let l=a;if(l.code==="ENOENT")throw new x("ENOENT",`no such file or directory, link '${t}'`);if(l.code==="EEXIST")throw new x("EEXIST",`file already exists, link '${n}'`);if(l.code==="EPERM")throw new x("EPERM",`operation not permitted, link '${t}'`);this.sanitizeError(a,t,"link")}}async readlink(t){U(t,"readlink");let n=this.toRealPath(t),r=this.validateParent(n,t);try{let s=await L.promises.readlink(r),i=z(t),o=Z.dirname(i),a=Z.isAbsolute(s)?s:Z.resolve(Z.dirname(r),s),l=await L.promises.realpath(a).catch(()=>a);if(_e(l,this.canonicalRoot)){let c=Cn(l.slice(this.canonicalRoot.length))||"/";return o==="/"?c.startsWith("/")?c.slice(1)||".":c:Cn(Z.relative(o,c))}return Z.basename(s)}catch(s){let i=s;if(i.code==="ENOENT")throw new x("ENOENT",`no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new x("EINVAL",`invalid argument, readlink '${t}'`);this.sanitizeError(s,t,"readlink")}}async realpath(t){U(t,"realpath");let n=this.toRealPath(t);try{this.resolveAndValidate(n,t)}catch{throw new x("ENOENT",`no such file or directory, realpath '${t}'`)}let r;try{r=await L.promises.realpath(n)}catch(s){let i=s;if(i.code==="ENOENT")throw new x("ENOENT",`no such file or directory, realpath '${t}'`);if(i.code==="ELOOP")throw new x("ELOOP",`too many levels of symbolic links, realpath '${t}'`);this.sanitizeError(s,t,"realpath")}if(_e(r,this.canonicalRoot))return Cn(r.slice(this.canonicalRoot.length))||"/";throw new x("ENOENT",`no such file or directory, realpath '${t}'`)}async utimes(t,n,r){await this.withFilesystemMutation(()=>this.utimesUnlocked(t,n,r))}async utimesUnlocked(t,n,r){U(t,"utimes");let s=this.toRealPath(t),i=this.resolveAndValidate(s,t);try{let o=await L.promises.lstat(i);if(!o.isFile()){if(!o.isDirectory()&&o.nlink>1)throw new x("EACCES",`cannot change times on multiply-linked special file '${t}'`);await L.promises.utimes(i,n,r);return}if(o.nlink<=1){await L.promises.utimes(i,n,r);return}this.assertCopyOnWriteSize(o.size,"utimes",t);let a=await this.openCopySource(i);try{let l=await a.stat();if(!l.isFile())throw new x("EACCES",`file type changed, utimes '${t}'`);await this.replaceFile(i,new Uint8Array(0),l,{handle:a,size:l.size},{atime:n,mtime:r},!0)}finally{await a.close()}}catch(o){let a=o;if(a.code==="ENOENT")throw new x("ENOENT",`no such file or directory, utimes '${t}'`);if(a.code==="ELOOP")throw new x("EACCES",`permission denied, '${t}' is a symlink`);this.sanitizeError(o,t,"utimes")}}};import Pn from"node:path";function Ky(e){if(e.mounts.length===0)throw new x("EINVAL","createVfsTemplate needs at least one mount");let t=e.mounts.map(({at:c,root:u})=>{let f=fr(u);return{at:(c.startsWith("/")?c:`/${c}`).replace(/\/+$/,"")||"/",root:f}}),n=new Set;for(let{at:c}of t){if(n.has(c))throw new x("EINVAL",`duplicate mount point '${c}' in createVfsTemplate`);if(n.add(c),c==="/")throw new x("EINVAL","mount point '/' would swallow the shared scratch space");for(let u of n)if(u!==c&&c.startsWith(`${u}/`))throw new x("EINVAL",`mount point '${c}' is nested inside '${u}'`)}let r=[];for(let{root:c}of t){for(let u of r){let f=Pn.sep;if(c!==u&&(c.startsWith(u+f)||u.startsWith(c+f)))throw new x("EINVAL",`nested template roots share one real subtree: '${c}' and '${u}'`)}r.push(c)}let s=new ze,i=()=>{let c=new Pt({base:s});for(let{at:u,root:f}of t)c.mount(u,new Rt({root:f,mountPoint:"/",...e.maxMemoryBytes!==void 0&&{maxMemoryBytes:e.maxMemoryBytes}}));return c};return{fork:()=>i(),merge:async c=>{let u=[],f=0;for(let h of c){let p=h instanceof Pt?h.diff({space:"vfs"}):h;for(let m of p.writes){let E=m.changedAt??0;u.push({kind:"write",changedAt:E,order:f++,write:m})}for(let m=0;m<p.deletions.length;m++){let E=p.deletionChangedAt?.[m]??0;u.push({kind:"delete",changedAt:E,order:f++,path:p.deletions[m]})}}u.sort((h,p)=>h.changedAt!==p.changedAt?h.changedAt-p.changedAt:h.order-p.order);let d=i();for(let h of u){if(h.kind==="write"&&h.write.metadataOnly&&h.write.mode===void 0&&h.write.mtime===void 0)continue;let p=!1;try{if(h.kind==="delete")await d.rm(h.path,{recursive:!0});else{let m=h.write;m.metadataOnly?(m.mode!==void 0&&await d.chmod(m.path,m.mode),m.mtime!==void 0&&await d.utimes(m.path,m.mtime,m.mtime)):m.nodeType==="directory"?(await d.mkdir(m.path,{recursive:!0}),m.mode!==void 0&&await d.chmod(m.path,m.mode),m.mtime!==void 0&&await d.utimes(m.path,m.mtime,m.mtime)):m.nodeType==="symlink"?await d.symlink(new TextDecoder().decode(m.content),m.path):(await d.writeFile(m.path,m.content),m.mode!==void 0&&await d.chmod(m.path,m.mode),m.mtime!==void 0&&await d.utimes(m.path,m.mtime,m.mtime))}p=!0}catch{}p?d.restamp(h.kind==="delete"?h.path:h.write.path,h.changedAt):d.restamp(h.kind==="delete"?h.path:h.write.path,h.changedAt,"ancestors")}return d},apply:c=>{let u={writes:c.writes.map(f=>({...f,path:Pn.normalize(f.path)})),deletions:c.deletions.map(f=>Pn.normalize(f)),...c.deletionChangedAt&&{deletionChangedAt:c.deletionChangedAt}};for(let f of u.writes)if(f.nodeType==="symlink")throw new x("EINVAL",`change-set contains a symlink write: '${f.path}'`);for(let f of[...u.deletions,...u.writes.map(d=>d.path)]){if(!t.some(({root:m})=>f===m||f.startsWith(m+Pn.sep)))throw new x("EINVAL",`change-set entry outside every template root: '${f}'`);if(u.deletions.includes(f)&&t.some(({root:E})=>f===E))throw new x("EINVAL",`change-set deletes a registered root: '${f}'`);let h=Xy(f);if(!t.some(({root:m})=>h===m||h.startsWith(m+Pn.sep)))throw new x("EINVAL",`change-set entry escapes its root through a symlink: '${f}'`)}yi(u)}}}function Xy(e){let t=e,n=[];for(;;)try{let r=fr(t);return n.length===0?r:Pn.join(r,...n.reverse())}catch{let r=Pn.dirname(t);if(r===t)return e;n.push(Pn.basename(t)),t=r}}var dr=class{cmdId;cwd;startedAt;exitCode;bashEnv;cmdLine;env;explicitCwd;signal;timeoutMs;abortController=new AbortController;timeoutId;externalAbortListener;resultPromise;constructor(t,n,r,s,i=!1,o,a){this.cmdId=crypto.randomUUID(),this.cwd=r,this.startedAt=new Date,this.bashEnv=t,this.cmdLine=n,this.env=s,this.explicitCwd=i,this.signal=o,this.timeoutMs=a,this.setupCancellation(),this.resultPromise=this.execute()}setupCancellation(){if(this.signal&&(this.signal.aborted?this.abortController.abort(this.signal.reason):(this.externalAbortListener=()=>{this.abortController.abort(this.signal?.reason)},this.signal.addEventListener("abort",this.externalAbortListener,{once:!0}))),this.timeoutMs!==void 0){let t=Math.max(0,this.timeoutMs);this.timeoutId=Gr(()=>{this.abortController.abort(new Error(`sandbox command timeout after ${t}ms`))},t)}}cleanupCancellation(){this.timeoutId!==void 0&&(Hr(this.timeoutId),this.timeoutId=void 0),this.signal&&this.externalAbortListener&&(this.signal.removeEventListener("abort",this.externalAbortListener),this.externalAbortListener=void 0)}async execute(){let t={cwd:this.explicitCwd?this.cwd:void 0,env:this.env,signal:this.abortController.signal};try{let n=await this.bashEnv.exec(this.cmdLine,t);return this.exitCode=n.exitCode,n}finally{this.cleanupCancellation()}}async*logs(){let t=await this.resultPromise;t.stdout&&(yield{type:"stdout",data:t.stdout,timestamp:new Date}),t.stderr&&(yield{type:"stderr",data:t.stderr,timestamp:new Date})}async wait(){return await this.resultPromise,this}async output(){let t=await this.resultPromise;return t.stdout+t.stderr}async stdout(){return(await this.resultPromise).stdout}async stderr(){return(await this.resultPromise).stderr}async kill(){this.abortController.abort(new Error("command killed"))}};var xi=class e{bashEnv;timeoutMs;constructor(t,n){this.bashEnv=t,this.timeoutMs=n}static async create(t){let n=t?.fs;if(t?.overlayRoot){if(t?.fs)throw new Error("Cannot specify both 'fs' and 'overlayRoot' options");n=new Rt({root:t.overlayRoot})}let r=new zn({env:t?.env,cwd:t?.cwd,fs:n,maxCallDepth:t?.maxCallDepth,maxCommandCount:t?.maxCommandCount,maxLoopIterations:t?.maxLoopIterations,network:t?.network,defenseInDepth:t?.defenseInDepth,python:t?.python,javascript:t?.javascript,commands:t?.commands,customCommands:t?.customCommands,fetch:t?.fetch});return new e(r,t?.timeoutMs)}async runCommand(t,n,r){let s,i,o,a,l=!1,c,u;if(typeof t=="object"){let m=t,E=[m.cmd,...m.args??[]];s=Ri(E),i=m.cwd,o=m.env,a=m.signal,l=m.detached??!1,c=m.stdout,u=m.stderr}else if(Array.isArray(n)){let m=r;s=Ri([t,...n]),a=m?.signal}else{s=t;let m=n;i=m?.cwd,o=m?.env}let f=i??this.bashEnv.getCwd(),d=i!==void 0,h=new dr(this.bashEnv,s,f,o,d,a,this.timeoutMs);if(l)return h;let p=await h.wait();if(c){let m=await h.stdout();m&&c.write(m)}if(u){let m=await h.stderr();m&&u.write(m)}return p}async writeFiles(t){let n=this.bashEnv.getCwd();for(let[r,s]of Object.entries(t)){let i;typeof s=="string"?i=s:s.encoding==="base64"?i=Buffer.from(s.content,"base64").toString("utf-8"):i=s.content;let o=this.bashEnv.fs.resolvePath(n,r),a=o.substring(0,o.lastIndexOf("/"))||"/";a!=="/"&&await this.bashEnv.fs.mkdir(a,{recursive:!0}),await this.bashEnv.writeFile(o,i)}}async readFile(t,n){let r=await this.bashEnv.readFile(t);return n==="base64"?Buffer.from(r).toString("base64"):r}async mkDir(t,n){let r=this.bashEnv.fs.resolvePath(this.bashEnv.getCwd(),t);await this.bashEnv.fs.mkdir(r,{recursive:n?.recursive??!1})}async stop(){}async extendTimeout(t){}get domain(){}get bashEnvInstance(){return this.bashEnv}};var Pi=class{violations=[];violationsByType=new Map;options;constructor(t={}){this.options={maxViolationsPerType:t.maxViolationsPerType??100,maxViolationsTotal:t.maxViolationsTotal??1e3,includeStackTraces:t.includeStackTraces??!0,onViolation:t.onViolation??(()=>{}),logToConsole:t.logToConsole??!1}}record(t){let n=this.options.includeStackTraces?t:{...t,stack:void 0};this.violations.unshift(n),this.violations.length>this.options.maxViolationsTotal&&(this.violations.length=this.options.maxViolationsTotal);let r=this.violationsByType.get(t.type);r||(r=[],this.violationsByType.set(t.type,r)),r.length<this.options.maxViolationsPerType&&r.push(n),this.options.logToConsole&&console.warn(`[SecurityViolation] ${t.type}: ${t.message}`,t.path),this.options.onViolation(n)}getViolations(){return[...this.violations]}getViolationsByType(t){return[...this.violationsByType.get(t)??[]]}getSummary(){let t=[];for(let[n,r]of this.violationsByType){if(r.length===0)continue;let s=new Set,i=Number.POSITIVE_INFINITY,o=0;for(let a of r)s.add(a.path),i=Math.min(i,a.timestamp),o=Math.max(o,a.timestamp);t.push({type:n,count:r.length,firstSeen:i,lastSeen:o,paths:Array.from(s)})}return t.sort((n,r)=>r.count-n.count),t}getTotalCount(){return this.violations.length}hasViolations(){return this.violations.length>0}clear(){this.violations=[],this.violationsByType.clear()}createCallback(){return t=>this.record(t)}};function Pd(){return e=>{console.warn("[DefenseInDepth] Security violation detected:",`
806
811
  Type: ${e.type}`,`
807
812
  Path: ${e.path}`,`
808
813
  Message: ${e.message}`,e.executionId?`
809
- ExecutionId: ${e.executionId}`:"")}}var md=null;try{let e=process.getBuiltinModule,t=typeof e=="function"?e("module"):typeof Ei=="function"?Ei("node:module"):null;md=t?.Module??t?.default??null,typeof e=="function"&&e("worker_threads")?.isMainThread===!1&&e("crypto")?.randomUUID?.()}catch{md=null}var Wa=class{maxSourceBytes;plugins=[];constructor(t=67108864){if(this.maxSourceBytes=t,!Number.isSafeInteger(t)||t<0)throw new Error("BashTransformPipeline: invalid maxSourceBytes")}use(t){return this.plugins.push(t),this}transform(t){or(t,this.maxSourceBytes);let n=je(t),r=Object.create(null);for(let s of this.plugins){let i=s.transform({ast:n,metadata:r});n=i.ast,i.metadata&&(r=hr(r,i.metadata))}return{script:Ar(n),ast:n,metadata:r}}};var Va=class{name="command-collector";transform(t){let{commands:n}=ts(t.ast);return{ast:t.ast,metadata:{commands:n.sort()}}}};var za=class{name="tee";options;counter=0;constructor(t){this.options=t}transform(t){let n=[],r=this.options.timestamp??new Date;return{ast:this.transformScript(t.ast,n,r),metadata:{teeFiles:n}}}formatTimestamp(t){return t.toISOString().replace(/:/g,"-")}generateStdoutPath(t,n,r){let s=this.formatTimestamp(r),i=String(t).padStart(3,"0");if(z(this.options.outputDir,"create tee output"),!this.options.outputDir.startsWith("/")||this.options.outputDir.split("/").includes(".."))throw new Error("tee output directory must be an absolute safe path");let o=V(this.options.outputDir),a=this.encodeCommandName(n),l=V(`${o}/${s}-${i}-${a}.stdout.txt`);if(o!=="/"&&!l.startsWith(`${o}/`))throw new Error("tee output path escapes configured output directory");return l}encodeCommandName(t){if(/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/.test(t))return t;let n=2166136261;for(let s=0;s<t.length;s++)n^=t.charCodeAt(s),n=Math.imul(n,16777619)>>>0;return`${t.replace(/[^A-Za-z0-9_-]/g,"_").replace(/^_+|_+$/g,"").slice(0,32)||"command"}-${n.toString(16).padStart(8,"0")}`}transformScript(t,n,r){return{...t,statements:t.statements.map(s=>this.transformStatement(s,n,r))}}transformStatement(t,n,r){let s=[],i=[];for(let o=0;o<t.pipelines.length;o++){let a=t.pipelines[o];o>0&&i.push(t.operators[o-1]);let l=this.transformPipeline(a,n,r);s.push(l.pipeline),l.origCmdNewIndices!==null&&(i.push(";"),s.push(this.makePipestatusRestore(l.origCmdNewIndices,l.negated)))}return{...t,pipelines:s,operators:i}}transformPipeline(t,n,r){if(t.commands.length<=1)return{pipeline:t,origCmdNewIndices:null,negated:!1};let s=[],i=[],o=[],a=!1;for(let l=0;l<t.commands.length;l++){let c=t.commands[l],u=l===t.commands.length-1;if(c.type!=="SimpleCommand"||!c.name||!this.shouldTarget(c)){o.push(s.length),s.push(c),u||i.push(t.pipeStderr?.[l]??!1);continue}let f=this.getCommandName(c.name)??"unknown",d=this.counter++,h=this.generateStdoutPath(d,f,r),p=this.makeTeeCommand(h),m=this.serializeCommand(c);n.push({commandIndex:d,commandName:f,command:m,stdoutFile:h}),o.push(s.length),s.push(c),i.push(t.pipeStderr?.[l]??!1),s.push(p),u||i.push(!1),a=!0}return a?{pipeline:{...t,negated:!1,commands:s,pipeStderr:i.length>0?i:void 0},origCmdNewIndices:o,negated:t.negated}:{pipeline:t,origCmdNewIndices:null,negated:!1}}makePipestatusRestore(t,n){return{type:"Pipeline",commands:[{type:"SimpleCommand",assignments:[],name:{type:"Word",parts:[{type:"Literal",value:"builtin"}]},args:[{type:"Word",parts:[{type:"Literal",value:"__just_bash_tee_restore"}]},...t.map(r=>({type:"Word",parts:[{type:"ParameterExpansion",parameter:`PIPESTATUS[${r}]`,operation:null}]}))],redirections:[]}],negated:n}}shouldTarget(t){if(!this.options.targetCommandPattern)return!0;let n=this.getCommandName(t.name);return n!==null&&this.options.targetCommandPattern.test(n)}getCommandName(t){return t&&t.parts.length===1&&t.parts[0].type==="Literal"?t.parts[0].value:null}serializeCommand(t){let n=[];t.name&&n.push(ge(t.name));for(let r of t.args)n.push(ge(r));return n.join(" ")}makeTeeCommand(t){return{type:"SimpleCommand",assignments:[],name:{type:"Word",parts:[{type:"Literal",value:"tee"}]},args:[{type:"Word",parts:[{type:"Literal",value:t}]}],redirections:[]}}};export{mi as AgentSandbox,Bn as Bash,Wa as BashTransformPipeline,Va as CommandCollectorPlugin,We as DefenseInDepthBox,bi as EMPTY_BYTES,Ve as InMemoryFs,Lt as MountableFs,mt as NetworkAccessDeniedError,xt as OverlayFs,yi as ReadWriteFs,Qt as RedirectNotAllowedError,gi as Sandbox,lr as SandboxCommand,Vn as SecurityViolationError,wi as SecurityViolationLogger,za as TeePlugin,Fn as TooManyRedirectsError,ai as applyDiffToRealFs,bd as bytesOutput,Ty as createAgentSandbox,xd as createCommandContext,pd as createConsoleViolationCallback,Fy as createVfsTemplate,gd as decodeBytesToUtf8,$d as defineCommand,Kt as encodeUtf8ToBytes,Sd as getCommandNames,kd as getJavaScriptCommandNames,Ad as getNetworkCommandNames,vd as getPythonCommandNames,kn as latin1FromBytes,li as mergeDiffs,je as parse,Ar as serialize,Vt as stdoutAsBytes,wd as stdoutKind,Ed as textOutput,fr as unsafeBytesFromLatin1};
814
+ ExecutionId: ${e.executionId}`:"")}}var $d=null;try{let e=process.getBuiltinModule,t=typeof e=="function"?e("module"):typeof $i=="function"?$i("node:module"):null;$d=t?.Module??t?.default??null,typeof e=="function"&&e("worker_threads")?.isMainThread===!1&&e("crypto")?.randomUUID?.()}catch{$d=null}var qa=class{maxSourceBytes;plugins=[];constructor(t=67108864){if(this.maxSourceBytes=t,!Number.isSafeInteger(t)||t<0)throw new Error("BashTransformPipeline: invalid maxSourceBytes")}use(t){return this.plugins.push(t),this}transform(t){ur(t,this.maxSourceBytes);let n=qe(t),r=Object.create(null);for(let s of this.plugins){let i=s.transform({ast:n,metadata:r});n=i.ast,i.metadata&&(r=wr(r,i.metadata))}return{script:Cr(n),ast:n,metadata:r}}};var Ga=class{name="command-collector";transform(t){let{commands:n}=as(t.ast);return{ast:t.ast,metadata:{commands:n.sort()}}}};var Ha=class{name="tee";options;counter=0;constructor(t){this.options=t}transform(t){let n=[],r=this.options.timestamp??new Date;return{ast:this.transformScript(t.ast,n,r),metadata:{teeFiles:n}}}formatTimestamp(t){return t.toISOString().replace(/:/g,"-")}generateStdoutPath(t,n,r){let s=this.formatTimestamp(r),i=String(t).padStart(3,"0");if(U(this.options.outputDir,"create tee output"),!this.options.outputDir.startsWith("/")||this.options.outputDir.split("/").includes(".."))throw new Error("tee output directory must be an absolute safe path");let o=z(this.options.outputDir),a=this.encodeCommandName(n),l=z(`${o}/${s}-${i}-${a}.stdout.txt`);if(o!=="/"&&!l.startsWith(`${o}/`))throw new Error("tee output path escapes configured output directory");return l}encodeCommandName(t){if(/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/.test(t))return t;let n=2166136261;for(let s=0;s<t.length;s++)n^=t.charCodeAt(s),n=Math.imul(n,16777619)>>>0;return`${t.replace(/[^A-Za-z0-9_-]/g,"_").replace(/^_+|_+$/g,"").slice(0,32)||"command"}-${n.toString(16).padStart(8,"0")}`}transformScript(t,n,r){return{...t,statements:t.statements.map(s=>this.transformStatement(s,n,r))}}transformStatement(t,n,r){let s=[],i=[];for(let o=0;o<t.pipelines.length;o++){let a=t.pipelines[o];o>0&&i.push(t.operators[o-1]);let l=this.transformPipeline(a,n,r);s.push(l.pipeline),l.origCmdNewIndices!==null&&(i.push(";"),s.push(this.makePipestatusRestore(l.origCmdNewIndices,l.negated)))}return{...t,pipelines:s,operators:i}}transformPipeline(t,n,r){if(t.commands.length<=1)return{pipeline:t,origCmdNewIndices:null,negated:!1};let s=[],i=[],o=[],a=!1;for(let l=0;l<t.commands.length;l++){let c=t.commands[l],u=l===t.commands.length-1;if(c.type!=="SimpleCommand"||!c.name||!this.shouldTarget(c)){o.push(s.length),s.push(c),u||i.push(t.pipeStderr?.[l]??!1);continue}let f=this.getCommandName(c.name)??"unknown",d=this.counter++,h=this.generateStdoutPath(d,f,r),p=this.makeTeeCommand(h),m=this.serializeCommand(c);n.push({commandIndex:d,commandName:f,command:m,stdoutFile:h}),o.push(s.length),s.push(c),i.push(t.pipeStderr?.[l]??!1),s.push(p),u||i.push(!1),a=!0}return a?{pipeline:{...t,negated:!1,commands:s,pipeStderr:i.length>0?i:void 0},origCmdNewIndices:o,negated:t.negated}:{pipeline:t,origCmdNewIndices:null,negated:!1}}makePipestatusRestore(t,n){return{type:"Pipeline",commands:[{type:"SimpleCommand",assignments:[],name:{type:"Word",parts:[{type:"Literal",value:"builtin"}]},args:[{type:"Word",parts:[{type:"Literal",value:"__just_bash_tee_restore"}]},...t.map(r=>({type:"Word",parts:[{type:"ParameterExpansion",parameter:`PIPESTATUS[${r}]`,operation:null}]}))],redirections:[]}],negated:n}}shouldTarget(t){if(!this.options.targetCommandPattern)return!0;let n=this.getCommandName(t.name);return n!==null&&this.options.targetCommandPattern.test(n)}getCommandName(t){return t&&t.parts.length===1&&t.parts[0].type==="Literal"?t.parts[0].value:null}serializeCommand(t){let n=[];t.name&&n.push(we(t.name));for(let r of t.args)n.push(we(r));return n.join(" ")}makeTeeCommand(t){return{type:"SimpleCommand",assignments:[],name:{type:"Word",parts:[{type:"Literal",value:"tee"}]},args:[{type:"Word",parts:[{type:"Literal",value:t}]}],redirections:[]}}};export{vi as AgentSandbox,zn as Bash,qa as BashTransformPipeline,Ga as CommandCollectorPlugin,Ve as DefenseInDepthBox,Ci as EMPTY_BYTES,x as FsError,ze as InMemoryFs,Pt as MountableFs,gt as NetworkAccessDeniedError,Rt as OverlayFs,ki as ReadWriteFs,Xt as RedirectNotAllowedError,xi as Sandbox,dr as SandboxCommand,jn as SecurityViolationError,Pi as SecurityViolationLogger,Ha as TeePlugin,Wn as TooManyRedirectsError,yi as applyDiffToRealFs,Dd as bytesOutput,Hy as createAgentSandbox,Wd as createCommandContext,Pd as createConsoleViolationCallback,Ky as createVfsTemplate,Nd as decodeBytesToUtf8,Vd as defineCommand,Yt as encodeUtf8ToBytes,Id as fsErrorCode,_d as getCommandNames,Md as getJavaScriptCommandNames,Ld as getNetworkCommandNames,Fd as getPythonCommandNames,ft as isFsErrorCode,$n as latin1FromBytes,qe as parse,Cr as serialize,Ut as stdoutAsBytes,Rd as stdoutKind,Od as textOutput,Td as toFsError,mr as unsafeBytesFromLatin1};