@cuxt/sandboxjs 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +198 -185
  3. package/{build → dist/cjs}/Sandbox.d.ts +15 -6
  4. package/dist/cjs/Sandbox.js +126 -0
  5. package/dist/{SandboxExec.d.ts → cjs/SandboxExec.d.ts} +8 -17
  6. package/dist/cjs/SandboxExec.js +227 -0
  7. package/{build/eval.d.ts → dist/cjs/eval/index.d.ts} +10 -2
  8. package/dist/cjs/eval/index.js +233 -0
  9. package/dist/cjs/executor/executorUtils.d.ts +161 -0
  10. package/dist/cjs/executor/executorUtils.js +930 -0
  11. package/dist/cjs/executor/index.d.ts +1 -0
  12. package/dist/cjs/executor/index.js +2 -0
  13. package/dist/cjs/executor/ops/assignment.d.ts +1 -0
  14. package/dist/cjs/executor/ops/assignment.js +88 -0
  15. package/dist/cjs/executor/ops/call.d.ts +1 -0
  16. package/dist/cjs/executor/ops/call.js +160 -0
  17. package/dist/cjs/executor/ops/comparison.d.ts +1 -0
  18. package/dist/cjs/executor/ops/comparison.js +36 -0
  19. package/dist/cjs/executor/ops/control.d.ts +1 -0
  20. package/dist/cjs/executor/ops/control.js +203 -0
  21. package/dist/cjs/executor/ops/functions.d.ts +1 -0
  22. package/dist/cjs/executor/ops/functions.js +55 -0
  23. package/dist/cjs/executor/ops/index.d.ts +0 -0
  24. package/dist/cjs/executor/ops/index.js +11 -0
  25. package/dist/cjs/executor/ops/literals.d.ts +1 -0
  26. package/dist/cjs/executor/ops/literals.js +45 -0
  27. package/dist/cjs/executor/ops/misc.d.ts +1 -0
  28. package/dist/cjs/executor/ops/misc.js +25 -0
  29. package/dist/cjs/executor/ops/object.d.ts +1 -0
  30. package/dist/cjs/executor/ops/object.js +51 -0
  31. package/dist/cjs/executor/ops/prop.d.ts +1 -0
  32. package/dist/cjs/executor/ops/prop.js +70 -0
  33. package/dist/cjs/executor/ops/unary.d.ts +1 -0
  34. package/dist/cjs/executor/ops/unary.js +48 -0
  35. package/dist/cjs/executor/ops/variables.d.ts +1 -0
  36. package/dist/cjs/executor/ops/variables.js +16 -0
  37. package/dist/cjs/executor/opsRegistry.d.ts +33 -0
  38. package/dist/cjs/executor/opsRegistry.js +8 -0
  39. package/dist/cjs/package.json +3 -0
  40. package/dist/cjs/parser/index.d.ts +3 -0
  41. package/dist/cjs/parser/index.js +1 -0
  42. package/dist/{parser.d.ts → cjs/parser/lisp.d.ts} +29 -42
  43. package/dist/cjs/parser/lispTypes/conditionals.d.ts +2 -0
  44. package/dist/cjs/parser/lispTypes/conditionals.js +135 -0
  45. package/dist/cjs/parser/lispTypes/control.d.ts +2 -0
  46. package/dist/cjs/parser/lispTypes/control.js +204 -0
  47. package/dist/cjs/parser/lispTypes/declarations.d.ts +2 -0
  48. package/dist/cjs/parser/lispTypes/declarations.js +99 -0
  49. package/dist/cjs/parser/lispTypes/index.d.ts +3 -0
  50. package/dist/cjs/parser/lispTypes/index.js +17 -0
  51. package/dist/cjs/parser/lispTypes/operators.d.ts +2 -0
  52. package/dist/cjs/parser/lispTypes/operators.js +252 -0
  53. package/dist/cjs/parser/lispTypes/shared.d.ts +38 -0
  54. package/dist/cjs/parser/lispTypes/structures.d.ts +2 -0
  55. package/dist/cjs/parser/lispTypes/structures.js +188 -0
  56. package/dist/cjs/parser/lispTypes/values.d.ts +2 -0
  57. package/dist/cjs/parser/lispTypes/values.js +89 -0
  58. package/dist/cjs/parser/parserUtils.d.ts +34 -0
  59. package/dist/cjs/parser/parserUtils.js +968 -0
  60. package/dist/cjs/utils/CodeString.d.ts +16 -0
  61. package/dist/cjs/utils/CodeString.js +64 -0
  62. package/dist/cjs/utils/ExecContext.d.ts +34 -0
  63. package/dist/cjs/utils/ExecContext.js +171 -0
  64. package/dist/cjs/utils/Prop.d.ts +16 -0
  65. package/dist/cjs/utils/Prop.js +81 -0
  66. package/dist/cjs/utils/Scope.d.ts +47 -0
  67. package/dist/cjs/utils/Scope.js +127 -0
  68. package/dist/cjs/utils/errors.d.ts +10 -0
  69. package/dist/cjs/utils/errors.js +12 -0
  70. package/dist/cjs/utils/functionReplacements.d.ts +11 -0
  71. package/dist/cjs/utils/functionReplacements.js +362 -0
  72. package/dist/cjs/utils/index.d.ts +7 -0
  73. package/dist/cjs/utils/index.js +7 -0
  74. package/dist/cjs/utils/types.d.ts +221 -0
  75. package/dist/cjs/utils/types.js +164 -0
  76. package/dist/cjs/utils/unraw.js +145 -0
  77. package/dist/{node → esm}/Sandbox.d.ts +15 -6
  78. package/dist/esm/Sandbox.js +115 -0
  79. package/dist/esm/Sandbox.js.map +1 -0
  80. package/{build → dist/esm}/SandboxExec.d.ts +8 -17
  81. package/dist/esm/SandboxExec.js +224 -0
  82. package/dist/esm/SandboxExec.js.map +1 -0
  83. package/dist/{eval.d.ts → esm/eval/index.d.ts} +10 -2
  84. package/dist/esm/eval/index.js +235 -0
  85. package/dist/esm/eval/index.js.map +1 -0
  86. package/dist/esm/executor/executorUtils.d.ts +161 -0
  87. package/dist/esm/executor/executorUtils.js +898 -0
  88. package/dist/esm/executor/executorUtils.js.map +1 -0
  89. package/dist/esm/executor/index.d.ts +1 -0
  90. package/dist/esm/executor/index.js +2 -0
  91. package/dist/esm/executor/ops/assignment.d.ts +1 -0
  92. package/dist/esm/executor/ops/assignment.js +90 -0
  93. package/dist/esm/executor/ops/assignment.js.map +1 -0
  94. package/dist/esm/executor/ops/call.d.ts +1 -0
  95. package/dist/esm/executor/ops/call.js +162 -0
  96. package/dist/esm/executor/ops/call.js.map +1 -0
  97. package/dist/esm/executor/ops/comparison.d.ts +1 -0
  98. package/dist/esm/executor/ops/comparison.js +38 -0
  99. package/dist/esm/executor/ops/comparison.js.map +1 -0
  100. package/dist/esm/executor/ops/control.d.ts +1 -0
  101. package/dist/esm/executor/ops/control.js +205 -0
  102. package/dist/esm/executor/ops/control.js.map +1 -0
  103. package/dist/esm/executor/ops/functions.d.ts +1 -0
  104. package/dist/esm/executor/ops/functions.js +57 -0
  105. package/dist/esm/executor/ops/functions.js.map +1 -0
  106. package/dist/esm/executor/ops/index.d.ts +0 -0
  107. package/dist/esm/executor/ops/index.js +11 -0
  108. package/dist/esm/executor/ops/literals.d.ts +1 -0
  109. package/dist/esm/executor/ops/literals.js +47 -0
  110. package/dist/esm/executor/ops/literals.js.map +1 -0
  111. package/dist/esm/executor/ops/misc.d.ts +1 -0
  112. package/dist/esm/executor/ops/misc.js +27 -0
  113. package/dist/esm/executor/ops/misc.js.map +1 -0
  114. package/dist/esm/executor/ops/object.d.ts +1 -0
  115. package/dist/esm/executor/ops/object.js +53 -0
  116. package/dist/esm/executor/ops/object.js.map +1 -0
  117. package/dist/esm/executor/ops/prop.d.ts +1 -0
  118. package/dist/esm/executor/ops/prop.js +72 -0
  119. package/dist/esm/executor/ops/prop.js.map +1 -0
  120. package/dist/esm/executor/ops/unary.d.ts +1 -0
  121. package/dist/esm/executor/ops/unary.js +50 -0
  122. package/dist/esm/executor/ops/unary.js.map +1 -0
  123. package/dist/esm/executor/ops/variables.d.ts +1 -0
  124. package/dist/esm/executor/ops/variables.js +18 -0
  125. package/dist/esm/executor/ops/variables.js.map +1 -0
  126. package/dist/esm/executor/opsRegistry.d.ts +33 -0
  127. package/dist/esm/executor/opsRegistry.js +9 -0
  128. package/dist/esm/executor/opsRegistry.js.map +1 -0
  129. package/dist/esm/package.json +3 -0
  130. package/dist/esm/parser/index.d.ts +3 -0
  131. package/dist/esm/parser/index.js +1 -0
  132. package/{build/parser.d.ts → dist/esm/parser/lisp.d.ts} +29 -42
  133. package/dist/esm/parser/lispTypes/conditionals.d.ts +2 -0
  134. package/dist/esm/parser/lispTypes/conditionals.js +137 -0
  135. package/dist/esm/parser/lispTypes/conditionals.js.map +1 -0
  136. package/dist/esm/parser/lispTypes/control.d.ts +2 -0
  137. package/dist/esm/parser/lispTypes/control.js +206 -0
  138. package/dist/esm/parser/lispTypes/control.js.map +1 -0
  139. package/dist/esm/parser/lispTypes/declarations.d.ts +2 -0
  140. package/dist/esm/parser/lispTypes/declarations.js +101 -0
  141. package/dist/esm/parser/lispTypes/declarations.js.map +1 -0
  142. package/dist/esm/parser/lispTypes/index.d.ts +3 -0
  143. package/dist/esm/parser/lispTypes/index.js +19 -0
  144. package/dist/esm/parser/lispTypes/index.js.map +1 -0
  145. package/dist/esm/parser/lispTypes/operators.d.ts +2 -0
  146. package/dist/esm/parser/lispTypes/operators.js +254 -0
  147. package/dist/esm/parser/lispTypes/operators.js.map +1 -0
  148. package/dist/esm/parser/lispTypes/shared.d.ts +38 -0
  149. package/dist/esm/parser/lispTypes/structures.d.ts +2 -0
  150. package/dist/esm/parser/lispTypes/structures.js +190 -0
  151. package/dist/esm/parser/lispTypes/structures.js.map +1 -0
  152. package/dist/esm/parser/lispTypes/values.d.ts +2 -0
  153. package/dist/esm/parser/lispTypes/values.js +91 -0
  154. package/dist/esm/parser/lispTypes/values.js.map +1 -0
  155. package/dist/esm/parser/parserUtils.d.ts +34 -0
  156. package/dist/esm/parser/parserUtils.js +959 -0
  157. package/dist/esm/parser/parserUtils.js.map +1 -0
  158. package/dist/esm/utils/CodeString.d.ts +16 -0
  159. package/dist/esm/utils/CodeString.js +66 -0
  160. package/dist/esm/utils/CodeString.js.map +1 -0
  161. package/dist/esm/utils/ExecContext.d.ts +34 -0
  162. package/dist/esm/utils/ExecContext.js +168 -0
  163. package/dist/esm/utils/ExecContext.js.map +1 -0
  164. package/dist/esm/utils/Prop.d.ts +16 -0
  165. package/dist/esm/utils/Prop.js +80 -0
  166. package/dist/esm/utils/Prop.js.map +1 -0
  167. package/dist/esm/utils/Scope.d.ts +47 -0
  168. package/dist/esm/utils/Scope.js +122 -0
  169. package/dist/esm/utils/Scope.js.map +1 -0
  170. package/dist/esm/utils/errors.d.ts +10 -0
  171. package/dist/esm/utils/errors.js +10 -0
  172. package/dist/esm/utils/errors.js.map +1 -0
  173. package/dist/esm/utils/functionReplacements.d.ts +11 -0
  174. package/dist/esm/utils/functionReplacements.js +361 -0
  175. package/dist/esm/utils/functionReplacements.js.map +1 -0
  176. package/dist/esm/utils/index.d.ts +7 -0
  177. package/dist/esm/utils/index.js +7 -0
  178. package/dist/esm/utils/types.d.ts +221 -0
  179. package/dist/esm/utils/types.js +160 -0
  180. package/dist/esm/utils/types.js.map +1 -0
  181. package/dist/esm/utils/unraw.js +147 -0
  182. package/dist/esm/utils/unraw.js.map +1 -0
  183. package/dist/umd/Sandbox.min.js +2 -0
  184. package/dist/umd/Sandbox.min.js.map +1 -0
  185. package/dist/umd/SandboxExec.min.js +2 -0
  186. package/dist/umd/SandboxExec.min.js.map +1 -0
  187. package/package.json +11 -9
  188. package/build/Sandbox.js +0 -62
  189. package/build/SandboxExec.js +0 -214
  190. package/build/eval.js +0 -205
  191. package/build/executor.d.ts +0 -124
  192. package/build/executor.js +0 -1554
  193. package/build/parser.js +0 -1527
  194. package/build/unraw.js +0 -168
  195. package/build/utils.d.ts +0 -264
  196. package/build/utils.js +0 -362
  197. package/dist/Sandbox.d.ts +0 -25
  198. package/dist/Sandbox.js +0 -270
  199. package/dist/Sandbox.js.map +0 -1
  200. package/dist/Sandbox.min.js +0 -2
  201. package/dist/Sandbox.min.js.map +0 -1
  202. package/dist/SandboxExec.js +0 -218
  203. package/dist/SandboxExec.js.map +0 -1
  204. package/dist/SandboxExec.min.js +0 -2
  205. package/dist/SandboxExec.min.js.map +0 -1
  206. package/dist/executor.d.ts +0 -124
  207. package/dist/executor.js +0 -1558
  208. package/dist/executor.js.map +0 -1
  209. package/dist/node/Sandbox.js +0 -277
  210. package/dist/node/SandboxExec.d.ts +0 -66
  211. package/dist/node/SandboxExec.js +0 -225
  212. package/dist/node/eval.d.ts +0 -27
  213. package/dist/node/executor.d.ts +0 -124
  214. package/dist/node/executor.js +0 -1575
  215. package/dist/node/parser.d.ts +0 -154
  216. package/dist/node/parser.js +0 -1704
  217. package/dist/node/utils.d.ts +0 -264
  218. package/dist/node/utils.js +0 -385
  219. package/dist/parser.js +0 -1690
  220. package/dist/parser.js.map +0 -1
  221. package/dist/unraw.d.ts +0 -11
  222. package/dist/utils.d.ts +0 -264
  223. package/dist/utils.js +0 -365
  224. package/dist/utils.js.map +0 -1
  225. /package/{build → dist/cjs/utils}/unraw.d.ts +0 -0
  226. /package/dist/{node → esm/utils}/unraw.d.ts +0 -0
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Sandbox={})}(this,function(exports){function parseHexToInt(e){return e.match(/[^a-f0-9]/i)?NaN:parseInt(e,16)}function validateAndParseHex(e,t,n){const r=parseHexToInt(e);if(Number.isNaN(r)||void 0!==n&&n!==e.length)throw new SyntaxError(t+": "+e);return r}function parseHexadecimalCode(e){const t=validateAndParseHex(e,"Malformed Hexadecimal",2);return String.fromCharCode(t)}function parseUnicodeCode(e,t){const n=validateAndParseHex(e,"Malformed Unicode",4);if(void 0!==t){const e=validateAndParseHex(t,"Malformed Unicode",4);return String.fromCharCode(n,e)}return String.fromCharCode(n)}function isCurlyBraced(e){return"{"===e.charAt(0)&&"}"===e.charAt(e.length-1)}function parseUnicodeCodePointCode(e){if(!isCurlyBraced(e))throw new SyntaxError("Malformed Unicode: +"+e);const t=validateAndParseHex(e.slice(1,-1),"Malformed Unicode");try{return String.fromCodePoint(t)}catch(n){throw n instanceof RangeError?new SyntaxError("Code Point Limit:"+t):n}}Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var singleCharacterEscapes=new Map([["b","\b"],["f","\f"],["n","\n"],["r","\r"],["t","\t"],["v","\v"],["0","\0"]]);function parseSingleCharacterCode(e){return singleCharacterEscapes.get(e)||e}var escapeMatch=/\\(?:(\\)|x([\s\S]{0,2})|u(\{[^}]*\}?)|u([\s\S]{4})\\u([^{][\s\S]{0,3})|u([\s\S]{0,4})|([0-3]?[0-7]{1,2})|([\s\S])|$)/g;function unraw(e){return e.replace(escapeMatch,function(e,t,n,r,o,s,i,a,c){if(void 0!==t)return"\\";if(void 0!==n)return parseHexadecimalCode(n);if(void 0!==r)return parseUnicodeCodePointCode(r);if(void 0!==o)return parseUnicodeCode(o,s);if(void 0!==i)return parseUnicodeCode(i);if("0"===a)return"\0";if(void 0!==a)throw new SyntaxError("Octal Deprecation: "+a);if(void 0!==c)return parseSingleCharacterCode(c);throw new SyntaxError("End of string")})}var SandboxError=class extends Error{},SandboxExecutionQuotaExceededError=class extends SandboxError{},SandboxExecutionTreeError=class extends SandboxError{},SandboxCapabilityError=class extends SandboxError{},SandboxAccessError=class extends SandboxError{},CodeString=class e{constructor(t){this.ref={str:""},t instanceof e?(this.ref=t.ref,this.start=t.start,this.end=t.end):(this.ref.str=t,this.start=0,this.end=t.length)}substring(t,n){if(!this.length)return this;(t=this.start+t)<0&&(t=0),t>this.end&&(t=this.end),(n=void 0===n?this.end:this.start+n)<0&&(n=0),n>this.end&&(n=this.end);const r=new e(this);return r.start=t,r.end=n,r}get length(){const e=this.end-this.start;return e<0?0:e}char(e){if(this.start!==this.end)return this.ref.str[this.start+e]}toString(){return this.ref.str.substring(this.start,this.end)}trimStart(){const t=/^\s+/.exec(this.toString()),n=new e(this);return t&&(n.start+=t[0].length),n}slice(e,t){return e<0&&(e=this.end-this.start+e),e<0&&(e=0),void 0===t&&(t=this.end-this.start),t<0&&(t=this.end-this.start+t),t<0&&(t=0),this.substring(e,t)}trim(){const e=this.trimStart(),t=/\s+$/.exec(e.toString());return t&&(e.end-=t[0].length),e}valueOf(){return this.toString()}},AsyncFunction=Object.getPrototypeOf(async function(){}).constructor,GeneratorFunction=Object.getPrototypeOf(function*(){}).constructor,AsyncGeneratorFunction=Object.getPrototypeOf(async function*(){}).constructor,NON_BLOCKING_THRESHOLD=50000n,reservedWords=new Set(["await","break","case","catch","class","const","continue","debugger","default","delete","do","else","enum","export","extends","false","finally","for","function","if","implements","import","in","instanceof","let","new","null","return","super","switch","this","throw","true","try","typeof","var","void","while","with"]),VarType=function(e){return e.let="let",e.const="const",e.var="var",e.internal="internal",e}({}),LispType=function(e){return e[e.None=0]="None",e[e.Prop=1]="Prop",e[e.StringIndex=2]="StringIndex",e[e.Let=3]="Let",e[e.Const=4]="Const",e[e.Call=5]="Call",e[e.KeyVal=6]="KeyVal",e[e.Number=7]="Number",e[e.Return=8]="Return",e[e.Assign=9]="Assign",e[e.InlineFunction=10]="InlineFunction",e[e.ArrowFunction=11]="ArrowFunction",e[e.CreateArray=12]="CreateArray",e[e.If=13]="If",e[e.IfCase=14]="IfCase",e[e.InlineIf=15]="InlineIf",e[e.InlineIfCase=16]="InlineIfCase",e[e.SpreadObject=17]="SpreadObject",e[e.SpreadArray=18]="SpreadArray",e[e.ArrayProp=19]="ArrayProp",e[e.PropOptional=20]="PropOptional",e[e.CallOptional=21]="CallOptional",e[e.CreateObject=22]="CreateObject",e[e.Group=23]="Group",e[e.Not=24]="Not",e[e.IncrementBefore=25]="IncrementBefore",e[e.IncrementAfter=26]="IncrementAfter",e[e.DecrementBefore=27]="DecrementBefore",e[e.DecrementAfter=28]="DecrementAfter",e[e.And=29]="And",e[e.Or=30]="Or",e[e.StrictNotEqual=31]="StrictNotEqual",e[e.StrictEqual=32]="StrictEqual",e[e.Plus=33]="Plus",e[e.Var=34]="Var",e[e.GlobalSymbol=35]="GlobalSymbol",e[e.Literal=36]="Literal",e[e.Function=37]="Function",e[e.Loop=38]="Loop",e[e.Try=39]="Try",e[e.Switch=40]="Switch",e[e.SwitchCase=41]="SwitchCase",e[e.InternalBlock=42]="InternalBlock",e[e.Expression=43]="Expression",e[e.Await=44]="Await",e[e.New=45]="New",e[e.Throw=46]="Throw",e[e.Minus=47]="Minus",e[e.Divide=48]="Divide",e[e.Power=49]="Power",e[e.Multiply=50]="Multiply",e[e.Modulus=51]="Modulus",e[e.Equal=52]="Equal",e[e.NotEqual=53]="NotEqual",e[e.SmallerEqualThan=54]="SmallerEqualThan",e[e.LargerEqualThan=55]="LargerEqualThan",e[e.SmallerThan=56]="SmallerThan",e[e.LargerThan=57]="LargerThan",e[e.Negative=58]="Negative",e[e.Positive=59]="Positive",e[e.Typeof=60]="Typeof",e[e.Delete=61]="Delete",e[e.Instanceof=62]="Instanceof",e[e.In=63]="In",e[e.Inverse=64]="Inverse",e[e.SubractEquals=65]="SubractEquals",e[e.AddEquals=66]="AddEquals",e[e.DivideEquals=67]="DivideEquals",e[e.PowerEquals=68]="PowerEquals",e[e.MultiplyEquals=69]="MultiplyEquals",e[e.ModulusEquals=70]="ModulusEquals",e[e.BitNegateEquals=71]="BitNegateEquals",e[e.BitAndEquals=72]="BitAndEquals",e[e.BitOrEquals=73]="BitOrEquals",e[e.UnsignedShiftRightEquals=74]="UnsignedShiftRightEquals",e[e.ShiftRightEquals=75]="ShiftRightEquals",e[e.ShiftLeftEquals=76]="ShiftLeftEquals",e[e.BitAnd=77]="BitAnd",e[e.BitOr=78]="BitOr",e[e.BitNegate=79]="BitNegate",e[e.BitShiftLeft=80]="BitShiftLeft",e[e.BitShiftRight=81]="BitShiftRight",e[e.BitUnsignedShiftRight=82]="BitUnsignedShiftRight",e[e.BigInt=83]="BigInt",e[e.LiteralIndex=84]="LiteralIndex",e[e.RegexIndex=85]="RegexIndex",e[e.LoopAction=86]="LoopAction",e[e.Void=87]="Void",e[e.True=88]="True",e[e.NullishCoalescing=89]="NullishCoalescing",e[e.AndEquals=90]="AndEquals",e[e.OrEquals=91]="OrEquals",e[e.NullishCoalescingEquals=92]="NullishCoalescingEquals",e[e.Block=93]="Block",e[e.Labeled=94]="Labeled",e[e.Internal=95]="Internal",e[e.Yield=96]="Yield",e[e.YieldDelegate=97]="YieldDelegate",e[e.Hole=98]="Hole",e[e.LispEnumSize=99]="LispEnumSize",e}({});function checkTicksAndThrow(e,t){const{ticks:n}=e.ctx;if(void 0!==n.tickLimit&&n.tickLimit<=n.ticks+t)throw new SandboxExecutionQuotaExceededError("Execution quota exceeded");n.ticks+=t}var _typedArrayCtors=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],typedArrayProtos=new Set(_typedArrayCtors.map(e=>Object.getPrototypeOf(e.prototype)));function isTypedArray(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)&&typedArrayProtos.has(Object.getPrototypeOf(Object.getPrototypeOf(e)))}function makeReplacement(e,t){return n=>function(...r){return checkTicksAndThrow(n,t(this,r)),e.apply(this,r)}}var arr=[],arrProto=Array.prototype;function arrayTicks(e,t){return(n,r)=>{if(!Array.isArray(n))return 0n;const o=BigInt(n.length);switch(e){case"one":return 1n;case"n":return o;case"nlogn":return n.length<=1?1n:o*BigInt(Math.round(Math.log2(n.length)));case"arrs":{let e=0n;const o=t===arr.flat&&"number"==typeof r[0]?r[0]:1,s=(t,n=0)=>{if(e+=BigInt(t.length),!(n>=o))for(const e of t)Array.isArray(e)&&s(e,n+1)};return s(n),e}}}}var arrayReplacementDefs=[[arr.push,"one"],[arr.pop,"one"],[arrProto.at,"one"],[arr.fill,"n"],[arr.includes,"n"],[arr.indexOf,"n"],[arr.lastIndexOf,"n"],[arr.find,"n"],[arr.findIndex,"n"],[arrProto.findLast,"n"],[arrProto.findLastIndex,"n"],[arr.forEach,"n"],[arr.map,"n"],[arr.filter,"n"],[arr.reduce,"n"],[arr.reduceRight,"n"],[arr.every,"n"],[arr.some,"n"],[arr.join,"n"],[arr.reverse,"n"],[arr.shift,"n"],[arr.unshift,"n"],[arr.splice,"n"],[arr.slice,"n"],[arr.copyWithin,"n"],[arr.entries,"n"],[arr.keys,"n"],[arr.values,"n"],[arrProto.toReversed,"n"],[arrProto.toSpliced,"n"],[arrProto.with,"n"],[arr.toString,"n"],[arr.toLocaleString,"n"],[arr.sort,"nlogn"],[arrProto.toSorted,"nlogn"],[arr.flat,"arrs"],[arr.flatMap,"arrs"],[arr.concat,"arrs"]],str="",strProto=String.prototype;function stringTicks(e){return t=>"string"!=typeof t?0n:"one"===e?1n:BigInt(t.length)}var stringReplacementDefs=[[str.charAt,"one"],[str.charCodeAt,"one"],[str.codePointAt,"one"],[strProto.at,"one"],[str.indexOf,"n"],[str.lastIndexOf,"n"],[str.includes,"n"],[str.startsWith,"n"],[str.endsWith,"n"],[str.slice,"n"],[str.substring,"n"],[str.padStart,"n"],[str.padEnd,"n"],[str.repeat,"n"],[str.split,"n"],[str.replace,"n"],[strProto.replaceAll,"n"],[str.match,"n"],[str.matchAll,"n"],[str.search,"n"],[str.trim,"n"],[str.trimStart,"n"],[str.trimEnd,"n"],[str.toLowerCase,"n"],[str.toUpperCase,"n"],[str.toLocaleLowerCase,"n"],[str.toLocaleUpperCase,"n"],[str.normalize,"n"],[str.concat,"n"],[str.toString,"n"],[str.valueOf,"n"]],_map=new Map,mapReplacementDefs=[[_map.get,"one"],[_map.set,"one"],[_map.has,"one"],[_map.delete,"one"],[_map.keys,"n"],[_map.values,"n"],[_map.entries,"n"],[_map.forEach,"n"],[_map.clear,"n"]];function mapTicks(e){return t=>t instanceof Map?"one"===e?1n:BigInt(t.size):0n}var _set=new Set,setReplacementDefs=[[_set.add,"one"],[_set.has,"one"],[_set.delete,"one"],[_set.values,"n"],[_set.keys,"n"],[_set.entries,"n"],[_set.forEach,"n"],[_set.clear,"n"]];function setTicks(e){return t=>t instanceof Set?"one"===e?1n:BigInt(t.size):0n}var typedArrayReplacementDefs=[];for(const e of typedArrayProtos){e.at&&typedArrayReplacementDefs.push([e.at,"one"]),e.set&&typedArrayReplacementDefs.push([e.set,"one"]);for(const t of["fill","find","findIndex","findLast","findLastIndex","includes","indexOf","lastIndexOf","forEach","map","filter","reduce","reduceRight","every","some","join","reverse","slice","subarray","copyWithin","entries","keys","values","toReversed","with","toString","toLocaleString"])e[t]&&typedArrayReplacementDefs.push([e[t],"n"]);e.sort&&typedArrayReplacementDefs.push([e.sort,"nlogn"]),e.toSorted&&typedArrayReplacementDefs.push([e.toSorted,"nlogn"])}function typedArrayTicks(e){return t=>{if(!isTypedArray(t))return 0n;const n=BigInt(t.length);switch(e){case"one":return 1n;case"n":return n;case"nlogn":return t.length<=1?1n:n*BigInt(Math.round(Math.log2(t.length)))}}}var mathReplacementDefs=[[Math.max],[Math.min],[Math.hypot]],_re=/x/,regexpReplacementDefs=[_re.exec,_re.test,_re[Symbol.match],_re[Symbol.matchAll],_re[Symbol.replace],_re[Symbol.search],_re[Symbol.split]],promiseReplacementDefs=[Promise.all,Promise.allSettled,Promise.race,..."function"==typeof Promise.any?[Promise.any]:[]],objectReplacementDefs=[[Object.prototype.hasOwnProperty,"one"],[Object.prototype.propertyIsEnumerable,"one"],[Object.prototype.isPrototypeOf,"one"],[Object.create,"one"],[Object.getPrototypeOf,"one"],[Object.setPrototypeOf,"one"],[Object.is,"one"],[Object.defineProperty,"one"],[Object.getOwnPropertyDescriptor,"one"],[Object.isExtensible,"one"],[Object.preventExtensions,"one"],[Object.keys,"n"],[Object.values,"n"],[Object.entries,"n"],[Object.assign,"n"],[Object.fromEntries,"n"],[Object.getOwnPropertyNames,"n"],[Object.getOwnPropertySymbols,"n"],[Object.getOwnPropertyDescriptors,"n"],[Object.freeze,"n"],[Object.seal,"n"],[Object.isFrozen,"n"],[Object.isSealed,"n"]];function objectTicks(e,t){return(n,r)=>{if("one"===e)return 1n;const o=t?r[0]:n;return null!==o&&"object"==typeof o?BigInt(Object.keys(o).length):1n}}var staticObjectMethods=new Set([Object.keys,Object.values,Object.entries,Object.assign,Object.fromEntries,Object.getOwnPropertyNames,Object.getOwnPropertySymbols,Object.getOwnPropertyDescriptors,Object.freeze,Object.seal,Object.isFrozen,Object.isSealed]),DEFAULT_FUNCTION_REPLACEMENTS=new Map,THIS_DEPENDENT_FUNCTION_REPLACEMENTS=new Set;for(const[e,t]of arrayReplacementDefs)e&&(DEFAULT_FUNCTION_REPLACEMENTS.set(e,makeReplacement(e,arrayTicks(t,e))),THIS_DEPENDENT_FUNCTION_REPLACEMENTS.add(e));for(const[e,t]of stringReplacementDefs)e&&(DEFAULT_FUNCTION_REPLACEMENTS.set(e,makeReplacement(e,stringTicks(t))),THIS_DEPENDENT_FUNCTION_REPLACEMENTS.add(e));for(const[e,t]of mapReplacementDefs)e&&(DEFAULT_FUNCTION_REPLACEMENTS.set(e,makeReplacement(e,mapTicks(t))),THIS_DEPENDENT_FUNCTION_REPLACEMENTS.add(e));for(const[e,t]of setReplacementDefs)e&&(DEFAULT_FUNCTION_REPLACEMENTS.set(e,makeReplacement(e,setTicks(t))),THIS_DEPENDENT_FUNCTION_REPLACEMENTS.add(e));for(const[e,t]of typedArrayReplacementDefs)e&&(DEFAULT_FUNCTION_REPLACEMENTS.set(e,makeReplacement(e,typedArrayTicks(t))),THIS_DEPENDENT_FUNCTION_REPLACEMENTS.add(e));for(const[e]of mathReplacementDefs)e&&DEFAULT_FUNCTION_REPLACEMENTS.set(e,makeReplacement(e,(e,t)=>BigInt(t.length)));for(const e of[JSON.parse,JSON.stringify])DEFAULT_FUNCTION_REPLACEMENTS.set(e,makeReplacement(e,(e,t)=>{const n=t[0];return"string"==typeof n?BigInt(n.length):null!==n&&"object"==typeof n?BigInt(Object.keys(n).length):1n}));for(const e of regexpReplacementDefs)e&&(DEFAULT_FUNCTION_REPLACEMENTS.set(e,makeReplacement(e,(e,t)=>{const n=t[0];return"string"==typeof n?BigInt(n.length):1n})),THIS_DEPENDENT_FUNCTION_REPLACEMENTS.add(e));for(const e of promiseReplacementDefs)e&&DEFAULT_FUNCTION_REPLACEMENTS.set(e,makeReplacement(e,(e,t)=>{const n=t[0];return Array.isArray(n)?BigInt(n.length):0n}));for(const[e,t]of objectReplacementDefs){if(!e)continue;const n=staticObjectMethods.has(e);DEFAULT_FUNCTION_REPLACEMENTS.set(e,makeReplacement(e,objectTicks(t,n))),n||THIS_DEPENDENT_FUNCTION_REPLACEMENTS.add(e)}if(Array.from&&DEFAULT_FUNCTION_REPLACEMENTS.set(Array.from,makeReplacement(Array.from,(e,t)=>{const n=t[0];return null!=n&&"number"==typeof n.length?BigInt(n.length):0n})),"function"==typeof Array.fromAsync){const e=Array.fromAsync;DEFAULT_FUNCTION_REPLACEMENTS.set(e,makeReplacement(e,(e,t)=>{const n=t[0];return null!=n&&"number"==typeof n.length?BigInt(n.length):0n}))}var boundFunctionCache=new WeakMap,replacementReceiver=new WeakMap,Prop=class{constructor(e,t,n=!1,r=!1,o=!1,s=!1){this.context=e,this.prop=t,this.isConst=n,this.isGlobal=r,this.isVariable=o,this.isInternal=s}get(e){const t=this.context;if(void 0===t)throw new ReferenceError(`${this.prop.toString()} is not defined`);if(null===t)throw new TypeError(`Cannot read properties of null, (reading '${this.prop.toString()}')`);e.getSubscriptions.forEach(e=>e(t,this.prop.toString()));return getReplacementValue(t[this.prop],e,t)}};function hasOwnProperty(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function getReplacementReceiver(e){return replacementReceiver.get(e)}function resolveSandboxProp(e,t,n){if(!e)return;e instanceof Prop&&(n||(n=e),e=e.get(t));const r=n?.prop||"prop";if(e===globalThis)return new Prop({[r]:t.ctx.sandboxGlobal},r,n?.isConst||!1,!1,n?.isVariable||!1);if(n&&!n.isVariable)return;const o=getReplacementValue(e,t,n?.context);return o!==e?new Prop({[r]:o},r,n?.isConst||!1,n?.isGlobal||!1,n?.isVariable||!1):void 0}function getReplacementValue(e,t,n){if("function"!=typeof e)return e;const r=t.evals.get(e);return void 0===r?e:shouldBindReplacement(e,n,t)?bindReplacement(r,n,e,t):r}function shouldBindReplacement(e,t,n){return THIS_DEPENDENT_FUNCTION_REPLACEMENTS.has(e)&&null!==t&&("object"==typeof t||"function"==typeof t)&&t!==n.ctx.sandboxGlobal&&!n.ctx.globalsWhitelist.has(t)}function bindReplacement(e,t,n,r){let o=boundFunctionCache.get(e);o||(o=new WeakMap,boundFunctionCache.set(e,o));let s=o.get(t);return s||(s=function(...t){return e.apply(this,t)},redefineFunctionMetadata(s,n),r.ctx.sandboxedFunctions.add(s),replacementReceiver.set(s,t),o.set(t,s),s)}function redefineFunctionMetadata(e,t,n={}){for(const r of["name","length"]){const o=Object.getOwnPropertyDescriptor(t,r);o?.configurable&&Object.defineProperty(e,r,{...o,value:n[r]??t[r]})}}function keysOnly(e){const t=Object.assign({},e);for(const n in t)t[n]=!0;return t}var Scope=class{constructor(e,t={},n){this.const={},this.let={},this.var={},this.internal={},this.internalVars={};const r=void 0!==n||null===e;this.parent=e,this.allVars=t,this.let=r?this.let:keysOnly(t),this.var=r?keysOnly(t):this.var,this.globals=null===e?keysOnly(t):{},this.functionThis=n}get(e,t){const n="this"===e,r=this.getWhereValScope(e,n,t);return r&&n?new Prop({this:r.functionThis},e,!1,!1,!0):r?t&&r.internalVars[e]?new Prop(r.internalVars,e,!1,!1,!0,!0):new Prop(r.allVars,e,hasOwnProperty(r.const,e),hasOwnProperty(r.globals,e),!0):new Prop(void 0,e)}set(e,t,n){if("this"===e)throw new SyntaxError('"this" cannot be assigned');if(reservedWords.has(e))throw new SyntaxError("Unexepected token '"+e+"'");const r=this.get(e,n);if(void 0===r.context)throw new ReferenceError(`Variable '${e}' was not declared.`);if(null===r.context)throw new TypeError(`Cannot set properties of null, (setting '${e}')`);if(r.isConst)throw new TypeError("Assignment to constant variable");if(r.isGlobal)throw new SandboxError(`Cannot override global variable '${e}'`);return r.context[r.prop]=t,r}getWhereValScope(e,t,n){let r=this;if(t){do{if(void 0!==r.functionThis)return r;r=r.parent}while(null!==r);return null}do{if(n&&e in r.internalVars&&(!(e in{})||hasOwnProperty(r.internalVars,e)))return r;if(e in r.allVars&&(!(e in{})||hasOwnProperty(r.allVars,e)))return r;r=r.parent}while(null!==r);return null}getWhereVarScope(e,t,n){let r=this;do{if(n&&e in r.internalVars&&(!(e in{})||hasOwnProperty(r.internalVars,e)))return r;if(e in r.allVars&&(!(e in{})||hasOwnProperty(r.allVars,e)))return r;if(null===r.parent||t||void 0!==r.functionThis)return r;r=r.parent}while(null!==r);return r}declare(e,t,n,r,o){if("this"===e)throw new SyntaxError('"this" cannot be declared');if(reservedWords.has(e))throw new SyntaxError("Unexepected token '"+e+"'");const s=this.getWhereVarScope(e,t!==VarType.var,o);if(t===VarType.var){if(s.var[e])return s.allVars[e]=n,r?s.globals[e]=!0:delete s.globals[e],new Prop(s.allVars,e,!1,s.globals[e],!0);if(e in s.allVars)throw new SyntaxError(`Identifier '${e}' has already been declared`)}if(e in s.allVars||e in s.internalVars)throw new SyntaxError(`Identifier '${e}' has already been declared`);return r&&(s.globals[e]=!0),s[t][e]=!0,t===VarType.internal?s.internalVars[e]=n:s.allVars[e]=n,new Prop(t===VarType.internal?this.internalVars:this.allVars,e,t===VarType.const,r,!0,t===VarType.internal)}},LocalScope=class{},optional={},DelayedSynchronousResult=class{constructor(e){this.result=e()}};function delaySynchronousResult(e){return new DelayedSynchronousResult(e)}function sanitizeProp(e,t,n=new WeakSet){return null===e||"object"!=typeof e&&"function"!=typeof e?e:((e=resolveSandboxProp(e,t)||e)instanceof Prop&&(e=e.get(t)),e!==optional?e:void 0)}function sanitizeScope(e,t,n=new WeakSet){if(!n.has(e)){n.add(e);for(const r in e){const o=e[r];null!==o&&"object"==typeof o&&sanitizeScope(o,t,n),e[r]=sanitizeProp(o,t)}}}function sanitizeScopes(e,t,n=new WeakSet){for(const r of e)sanitizeScope(r,t,n)}var ExecContext=class{constructor(e,t,n,r,o,s,i,a,c,p,l,d){this.ctx=e,this.constants=t,this.tree=n,this.getSubscriptions=r,this.setSubscriptions=o,this.changeSubscriptions=s,this.setSubscriptionsGlobal=i,this.changeSubscriptionsGlobal=a,this.evals=c,this.registerSandboxFunction=p,this.allowJit=l,this.evalContext=d}};function createSandboxSymbolContext(e){return{registry:new Map,reverseRegistry:new Map,whitelist:{...e}}}var RESERVED_SYMBOL_PROPERTIES=new Set(["length","name","prototype","for","keyFor"]);function copyWhitelistedSymbols(e,t){for(const[n,r]of Object.entries(t)){if(RESERVED_SYMBOL_PROPERTIES.has(n))continue;const t=Object.getOwnPropertyDescriptor(Symbol,n);t&&Object.defineProperty(e,n,t)}}function getSandboxSymbolCtor(e){if(e.ctor)return e.ctor;function SandboxSymbol(e){if(new.target)throw new TypeError("Symbol is not a constructor");return Symbol(void 0===e?void 0:String(e))}return copyWhitelistedSymbols(SandboxSymbol,e.whitelist),Object.defineProperties(SandboxSymbol,{prototype:{value:Symbol.prototype,enumerable:!1,configurable:!1,writable:!1},for:{value(t){const n=String(t);let r=e.registry.get(n);return r||(r=Symbol(n),e.registry.set(n,r),e.reverseRegistry.set(r,n)),r},enumerable:!1,configurable:!0,writable:!0},keyFor:{value:t=>"symbol"==typeof t?e.reverseRegistry.get(t):void 0,enumerable:!1,configurable:!0,writable:!0}}),e.ctor=SandboxSymbol,SandboxSymbol}function SandboxGlobal(){}function sandboxedGlobal(e){return t.prototype=SandboxGlobal.prototype,t;function t(){for(const t in e)this[t]=e[t]}}function createContext(e,t){const n=createSandboxSymbolContext(t.symbolWhitelist),r=new(sandboxedGlobal(t.globals)),o={sandbox:e,globalsWhitelist:new Set(Object.values(t.globals)),prototypeWhitelist:new Map([...t.prototypeWhitelist].map(e=>[e[0].prototype,e[1]])),sandboxSymbols:n,options:t,globalScope:new Scope(null,r,r),sandboxGlobal:r,ticks:{ticks:0n,tickLimit:t.executionQuota,nextYield:t.nonBlocking?NON_BLOCKING_THRESHOLD:void 0},sandboxedFunctions:new WeakSet};o.prototypeWhitelist.set(Object.getPrototypeOf(r),new Set),o.prototypeWhitelist.set(Object.getPrototypeOf([][Symbol.iterator]()),new Set);const s=Object.getPrototypeOf(function*(){}());o.prototypeWhitelist.set(Object.getPrototypeOf(s),new Set);const i=Object.getPrototypeOf(async function*(){}());return o.prototypeWhitelist.set(Object.getPrototypeOf(i),new Set),"undefined"!=typeof Response&&o.prototypeWhitelist.set(Response.prototype,new Set),"undefined"!=typeof Request&&o.prototypeWhitelist.set(Request.prototype,new Set),"undefined"!=typeof Headers&&o.prototypeWhitelist.set(Headers.prototype,new Set),"undefined"!=typeof FormData&&o.prototypeWhitelist.set(FormData.prototype,new Set),"undefined"!=typeof Blob&&o.prototypeWhitelist.set(Blob.prototype,new Set),"undefined"!=typeof URLSearchParams&&o.prototypeWhitelist.set(URLSearchParams.prototype,new Set),"undefined"!=typeof AbortController&&o.prototypeWhitelist.set(AbortController.prototype,new Set),"undefined"!=typeof ReadableStream&&o.prototypeWhitelist.set(ReadableStream.prototype,new Set),"undefined"!=typeof TransformStream&&o.prototypeWhitelist.set(TransformStream.prototype,new Set),"undefined"!=typeof WritableStream&&o.prototypeWhitelist.set(WritableStream.prototype,new Set),"undefined"!=typeof TextEncoder&&o.prototypeWhitelist.set(TextEncoder.prototype,new Set),"undefined"!=typeof TextDecoder&&o.prototypeWhitelist.set(TextDecoder.prototype,new Set),o}function createExecContext(sandbox,executionTree,evalContext){const evals=new Map,execContext=new ExecContext(sandbox.context,executionTree.constants,executionTree.tree,new Set,new WeakMap,new WeakMap,sandbox.setSubscriptions,sandbox.changeSubscriptions,evals,e=>sandbox.sandboxFunctions.set(e,execContext),!!evalContext,evalContext);if(evalContext){const func=evalContext.sandboxFunction(execContext),asyncFunc=evalContext.sandboxAsyncFunction(execContext),genFunc=evalContext.sandboxGeneratorFunction(execContext),asyncGenFunc=evalContext.sandboxAsyncGeneratorFunction(execContext),sandboxSymbol=evalContext.sandboxedSymbol(execContext);evals.set(Function,func),evals.set(AsyncFunction,asyncFunc),evals.set(GeneratorFunction,genFunc),evals.set(AsyncGeneratorFunction,asyncGenFunc),evals.set(Symbol,sandboxSymbol),evals.set(eval,evalContext.sandboxedEval(func,execContext)),evals.set(setTimeout,evalContext.sandboxedSetTimeout(func,execContext)),evals.set(setInterval,evalContext.sandboxedSetInterval(func,execContext)),evals.set(clearTimeout,evalContext.sandboxedClearTimeout(execContext)),evals.set(clearInterval,evalContext.sandboxedClearInterval(execContext));for(const[e,t]of DEFAULT_FUNCTION_REPLACEMENTS)evals.set(e,t(execContext));for(const[e,t]of sandbox.context.options.functionReplacements)evals.set(e,t(execContext,evals.get(e)));const ptwl=sandbox.context.prototypeWhitelist;for(const[e,t]of evals)ptwl.has(e.prototype)||ptwl.set(e.prototype,new Set),ptwl.has(t.prototype)||ptwl.set(t.prototype,ptwl.get(e.prototype)||new Set),sandbox.context.globalsWhitelist.has(e)&&sandbox.context.globalsWhitelist.add(t),hasOwnProperty(sandbox.context.sandboxGlobal,e.name)&&(sandbox.context.sandboxGlobal[e.name]=t);sandbox.context.sandboxGlobal.globalThis&&(sandbox.context.sandboxGlobal.globalThis=sandbox.context.sandboxGlobal)}return execContext}function isLisp(e){return Array.isArray(e)&&"number"==typeof e[0]&&e[0]!==LispType.None&&e[0]!==LispType.True}var ops=new Map;function addOps(e,t){ops.set(e,t)}function getNewTicks(e,t){if(e===Array){const e=t[0];return"number"==typeof e&&1===t.length?BigInt(e):BigInt(t.length)}if(typedArrayProtos.has(Object.getPrototypeOf(e.prototype))){const e=t[0];return"number"==typeof e?BigInt(e):Array.isArray(e)||ArrayBuffer.isView(e)?BigInt(e.length):0n}if(e===Map||e===Set){const e=t[0];return Array.isArray(e)?BigInt(e.length):0n}if(e===String||e===RegExp){const e=t[0];return"string"==typeof e?BigInt(e.length):0n}return 0n}addOps(LispType.Prop,({done:e,a:t,b:n,obj:r,context:o,scope:s,internal:i})=>{if(null===t)throw new TypeError(`Cannot read properties of null (reading '${n?.toString()}')`);if(isPropertyKey(n)||(n=`${n}`),void 0===t&&void 0===r&&"string"==typeof n){const t=s.get(n,i);if(void 0===t.context)throw new ReferenceError(`${n} is not defined`);t.context===o.ctx.sandboxGlobal&&o.ctx.options.audit&&o.ctx.auditReport?.globalsAccess.add(n);return void e(void 0,resolveSandboxProp(t.context[t.prop],o,t)||t)}if(void 0===t)throw new TypeError(`Cannot read properties of undefined (reading '${n.toString()}')`);if(!hasPossibleProperties(t))return void e(void 0,new Prop(void 0,n));const a="function"==typeof t||!hasOwnProperty(t,n);if(o.ctx.options.audit&&a){let e=Object.getPrototypeOf(t);do{hasOwnProperty(e,n)&&(o.ctx.auditReport&&!o.ctx.auditReport.prototypeAccess[e.constructor.name]&&(o.ctx.auditReport.prototypeAccess[e.constructor.name]=new Set),o.ctx.auditReport?.prototypeAccess[e.constructor.name].add(n))}while(e=Object.getPrototypeOf(e))}if(a){if("function"==typeof t&&hasOwnProperty(t,n)){const e=o.ctx.prototypeWhitelist.get(t.prototype);if((!e||e.size&&!e.has(n))&&!o.ctx.sandboxedFunctions.has(t))throw new SandboxAccessError(`Static method or property access not permitted: ${t.name}.${n.toString()}`)}let e=t;for(;e=Object.getPrototypeOf(e);)if(hasOwnProperty(e,n)||"__proto__"===n){const t=o.ctx.prototypeWhitelist.get(e);if(t&&(!t.size||t.has(n))||o.ctx.sandboxedFunctions.has(e.constructor))break;if("__proto__"===n)throw new SandboxAccessError("Access to prototype of global object is not permitted");throw new SandboxAccessError(`Method or property access not permitted: ${e.constructor.name}.${n.toString()}`)}}if("function"==typeof t){if("prototype"===n&&!o.ctx.sandboxedFunctions.has(t))throw new SandboxAccessError("Access to prototype of global object is not permitted");if(["caller","callee","arguments"].includes(n))throw new SandboxAccessError(`Access to '${n}' property is not permitted`)}const c=t[n];if("__proto__"===n&&!o.ctx.sandboxedFunctions.has(c?.constructor))throw new SandboxAccessError("Access to prototype of global object is not permitted");const p=resolveSandboxProp(c,o,new Prop(t,n,!1,!1));if(p)return void e(void 0,p);const l=t===o.ctx.sandboxGlobal,d=!l&&r instanceof Prop&&r.isGlobal||"function"==typeof t&&!o.ctx.sandboxedFunctions.has(t)||o.ctx.globalsWhitelist.has(t)||l&&"string"==typeof n&&hasOwnProperty(o.ctx.globalScope.globals,n);e(void 0,new Prop(t,n,!1,d,!1))}),addOps(LispType.StringIndex,({done:e,b:t,context:n})=>e(void 0,n.constants.strings[parseInt(t)])),addOps(LispType.Call,e=>{const{done:t,a:n,b:r,obj:o,context:s}=e;if(s.ctx.options.forbidFunctionCalls)throw new SandboxCapabilityError("Function invocations are not allowed");if("function"!=typeof n)throw new TypeError(`${"symbol"==typeof o?.prop?"Symbol":o?.prop} is not a function`);const i=new Array(r.length);let a=0;for(let y=0;y<r.length;y++){const t=r[y];if(t instanceof SpreadArray){const n=Array.isArray(t.item)?t.item:[...t.item];if(checkHaltExpectedTicks(e,BigInt(n.length)))return;for(let e=0;e<n.length;e++)i[a++]=sanitizeProp(n[e],s)}else i[a++]=sanitizeProp(t,s)}if(i.length=a,n===String){const e=String(i[0]);return checkTicksAndThrow(s,BigInt(e.length)),void t(void 0,e)}if("function"==typeof o){const e=s.evals.get(o),n=getReplacementReceiver(o);let r=e?e(o,...i):void 0===n?o(...i):o.call(n,...i);return r=sanitizeProp(r,s),void(null!==r&&"object"==typeof r&&r instanceof DelayedSynchronousResult?Promise.resolve(r.result).then(e=>t(void 0,e),e=>t(e)):t(void 0,r))}const c=o.context[o.prop];if(c===JSON.stringify&&s.getSubscriptions.size){const e=new WeakSet;let t=0n;const n=r=>{if(!r||"object"!=typeof r||e.has(r))return;e.add(r);const o=Object.keys(r);t+=BigInt(o.length);for(const e of o)s.getSubscriptions.forEach(t=>t(r,e)),n(r[e])};n(i[0]),checkTicksAndThrow(s,t)}if(o.context instanceof Array&&arrayChange.has(c)&&(s.changeSubscriptions.get(o.context)||s.changeSubscriptionsGlobal.get(o.context))){let e,t=!1;if("push"===o.prop)e={type:"push",added:i},t=!!i.length;else if("pop"===o.prop)e={type:"pop",removed:o.context.slice(-1)},t=!!e.removed.length;else if("shift"===o.prop)e={type:"shift",removed:o.context.slice(0,1)},t=!!e.removed.length;else if("unshift"===o.prop)e={type:"unshift",added:i},t=!!i.length;else if("splice"===o.prop)e={type:"splice",startIndex:i[0],deleteCount:void 0===i[1]?o.context.length:i[1],added:i.slice(2),removed:o.context.slice(i[0],void 0===i[1]?void 0:i[0]+i[1])},t=!!e.added.length||!!e.removed.length;else if("reverse"===o.prop||"sort"===o.prop)e={type:o.prop},t=!!o.context.length;else if("copyWithin"===o.prop){const n=void 0===i[2]?o.context.length-i[1]:Math.min(o.context.length,i[2]-i[1]);e={type:"copyWithin",startIndex:i[0],endIndex:i[0]+n,added:o.context.slice(i[1],i[1]+n),removed:o.context.slice(i[0],i[0]+n)},t=!!e.added.length||!!e.removed.length}if(t){const t=s.changeSubscriptions.get(o.context);if(void 0!==t)for(const r of t)r(e);const n=s.changeSubscriptionsGlobal.get(o.context);if(void 0!==n)for(const r of n)r(e)}}o.get(s);const p=s.evals.get(c),l=getReplacementReceiver(c),d=o.isVariable&&void 0!==l?l:o.context;let u=p?p.call(d,...i):n.call(d,...i);u=sanitizeProp(u,s),null!==u&&"object"==typeof u&&u instanceof DelayedSynchronousResult?Promise.resolve(u.result).then(e=>t(void 0,e),e=>t(e)):t(void 0,u)}),addOps(LispType.New,e=>{const{done:t,a:n,b:r,context:o}=e;if(!o.ctx.globalsWhitelist.has(n)&&!o.ctx.sandboxedFunctions.has(n))throw new SandboxAccessError(`Object construction not allowed: ${n.constructor.name}`);const s=r.map(e=>sanitizeProp(e,o)),i=o.evals.get(n);if(i)return void t(void 0,new i(...s));const a=getNewTicks(n,s);a>0n&&checkHaltExpectedTicks(e,a)||t(void 0,new n(...s))}),addOps(LispType.CreateObject,e=>{const{done:t,b:n}=e;let r={};for(const o of n)if(o.key instanceof SpreadObject){const t=Object.keys(o.key.item);if(checkHaltExpectedTicks(e,BigInt(t.length)))return;r={...r,...o.key.item}}else r[o.key]=o.val;t(void 0,r)}),addOps(LispType.KeyVal,({done:e,a:t,b:n})=>e(void 0,new KeyVal(t,n))),addOps(LispType.CreateArray,e=>{const{done:t,b:n,context:r}=e,o=[];for(const s of n)if(s instanceof SpreadArray){const t=Array.isArray(s.item)?s.item:[...s.item];if(checkHaltExpectedTicks(e,BigInt(t.length)))return;for(const e of t)o.push(sanitizeProp(e,r))}else s instanceof ArrayHole?o.length++:o.push(sanitizeProp(s,r));t(void 0,o)}),addOps(LispType.Hole,({done:e})=>e(void 0,new ArrayHole)),addOps(LispType.Group,({done:e,b:t})=>e(void 0,t)),addOps(LispType.GlobalSymbol,({done:e,b:t})=>{switch(t){case"true":return e(void 0,!0);case"false":return e(void 0,!1);case"null":return e(void 0,null);case"undefined":return e(void 0,void 0);case"NaN":return e(void 0,NaN);case"Infinity":return e(void 0,1/0)}e(new Error("Unknown symbol: "+t))}),addOps(LispType.SpreadArray,({done:e,b:t})=>{e(void 0,new SpreadArray(t))}),addOps(LispType.SpreadObject,({done:e,b:t})=>{e(void 0,new SpreadObject(t))}),addOps(LispType.Number,({done:e,b:t})=>e(void 0,Number(t.replace(/_/g,"")))),addOps(LispType.BigInt,({done:e,b:t})=>e(void 0,BigInt(t.replace(/_/g,"")))),addOps(LispType.RegexIndex,({done:e,b:t,context:n})=>{const r=n.constants.regexes[parseInt(t)];if(!n.ctx.globalsWhitelist.has(RegExp))throw new SandboxCapabilityError("Regex not permitted");e(void 0,new(n.evals.get(RegExp)??RegExp)(r.regex,r.flags))}),addOps(LispType.LiteralIndex,e=>{const{exec:t,done:n,ticks:r,b:o,context:s,scope:i,internal:a,generatorYield:c}=e,[,p,l]=s.constants.literals[parseInt(o)],d=[];let u;const y=[];for(;u=literalRegex.exec(p);)u[2]||(d.push(l[parseInt(u[3],10)]),y.push(u[3]));t(r,d,i,s,(...t)=>{const r={};if(1===t.length)return void n(t[0]);const o=t[1];for(const e of Object.keys(o)){const t=y[e];r[t]=o[e]}const i=p.replace(/(\\\\)*(\\)?\${(\d+)}/g,(e,t,n,o)=>{if(n)return e;return(t||"")+`${sanitizeProp(r[o],s)}`});checkHaltExpectedTicks(e,BigInt(i.length))||n(void 0,i)},void 0,a,c)}),addOps(LispType.Not,({done:e,b:t})=>e(void 0,!t)),addOps(LispType.Inverse,({done:e,b:t})=>e(void 0,~t)),addOps(LispType.IncrementBefore,({done:e,obj:t,context:n})=>{assignCheck(t,n),e(void 0,++t.context[t.prop])}),addOps(LispType.IncrementAfter,({done:e,obj:t,context:n})=>{assignCheck(t,n),e(void 0,t.context[t.prop]++)}),addOps(LispType.DecrementBefore,({done:e,obj:t,context:n})=>{assignCheck(t,n),e(void 0,--t.context[t.prop])}),addOps(LispType.DecrementAfter,({done:e,obj:t,context:n})=>{assignCheck(t,n),e(void 0,t.context[t.prop]--)}),addOps(LispType.Positive,({done:e,b:t})=>e(void 0,+t)),addOps(LispType.Negative,({done:e,b:t})=>e(void 0,-t)),addOps(LispType.Typeof,({exec:e,done:t,ticks:n,b:r,context:o,scope:s,internal:i,generatorYield:a})=>{e(n,r,s,o,(e,n)=>{t(void 0,typeof sanitizeProp(n,o))},void 0,i,a)}),addOps(LispType.Delete,({done:e,context:t,bobj:n})=>{n instanceof Prop?(assignCheck(n,t,"delete"),n.isVariable?e(void 0,!1):e(void 0,delete n.context?.[n.prop])):e(void 0,!0)}),addOps(LispType.Void,({done:e})=>{e()}),addOps(LispType.Assign,e=>{const{done:t,b:n,obj:r,context:o,scope:s,bobj:i,internal:a}=e;if(assignCheck(r,o),r.isGlobal=i?.isGlobal||!1,r.isVariable){const e=s.getWhereValScope(r.prop,"this"===r.prop,a);if(null===e)throw new ReferenceError(`Cannot assign to undeclared variable '${r.prop.toString()}'`);return e.set(r.prop,n,a),r.isGlobal?e.globals[r.prop.toString()]=!0:delete e.globals[r.prop.toString()],void t(void 0,n)}if("length"===r.prop&&Array.isArray(r.context)&&"number"==typeof n){const t=BigInt(Math.abs(n-r.context.length));if(t>0n&&checkHaltExpectedTicks(e,t))return}t(void 0,r.context[r.prop]=n)}),addOps(LispType.AddEquals,e=>{const{done:t,b:n,obj:r,context:o}=e;assignCheck(r,o);const s=r.context[r.prop]+n;"string"==typeof s&&checkHaltExpectedTicks(e,BigInt(s.length))||t(void 0,r.context[r.prop]=s)}),addOps(LispType.SubractEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]-=t)}),addOps(LispType.DivideEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]/=t)}),addOps(LispType.MultiplyEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]*=t)}),addOps(LispType.PowerEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]**=t)}),addOps(LispType.ModulusEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]%=t)}),addOps(LispType.BitNegateEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]^=t)}),addOps(LispType.BitAndEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]&=t)}),addOps(LispType.BitOrEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]|=t)}),addOps(LispType.ShiftLeftEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]<<=t)}),addOps(LispType.ShiftRightEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]>>=t)}),addOps(LispType.UnsignedShiftRightEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]>>>=t)}),addOps(LispType.AndEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]&&=t)}),addOps(LispType.OrEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]||=t)}),addOps(LispType.NullishCoalescingEquals,({done:e,b:t,obj:n,context:r})=>{assignCheck(n,r),e(void 0,n.context[n.prop]??=t)}),addOps(LispType.LargerThan,({done:e,a:t,b:n})=>e(void 0,t>n)),addOps(LispType.SmallerThan,({done:e,a:t,b:n})=>e(void 0,t<n)),addOps(LispType.LargerEqualThan,({done:e,a:t,b:n})=>e(void 0,t>=n)),addOps(LispType.SmallerEqualThan,({done:e,a:t,b:n})=>e(void 0,t<=n)),addOps(LispType.Equal,({done:e,a:t,b:n})=>e(void 0,t==n)),addOps(LispType.StrictEqual,({done:e,a:t,b:n})=>e(void 0,t===n)),addOps(LispType.NotEqual,({done:e,a:t,b:n})=>e(void 0,t!=n)),addOps(LispType.StrictNotEqual,({done:e,a:t,b:n})=>e(void 0,t!==n)),addOps(LispType.And,({done:e,a:t,b:n})=>e(void 0,t&&n)),addOps(LispType.Or,({done:e,a:t,b:n})=>e(void 0,t||n)),addOps(LispType.NullishCoalescing,({done:e,a:t,b:n})=>e(void 0,t??n)),addOps(LispType.BitAnd,({done:e,a:t,b:n})=>e(void 0,t&n)),addOps(LispType.BitOr,({done:e,a:t,b:n})=>e(void 0,t|n)),addOps(LispType.Plus,e=>{const{done:t,a:n,b:r}=e,o=n+r;"string"==typeof o&&checkHaltExpectedTicks(e,BigInt(o.length))||t(void 0,o)}),addOps(LispType.Minus,({done:e,a:t,b:n})=>e(void 0,t-n)),addOps(LispType.Divide,({done:e,a:t,b:n})=>e(void 0,t/n)),addOps(LispType.Power,({done:e,a:t,b:n})=>e(void 0,t**n)),addOps(LispType.BitNegate,({done:e,a:t,b:n})=>e(void 0,t^n)),addOps(LispType.Multiply,({done:e,a:t,b:n})=>e(void 0,t*n)),addOps(LispType.Modulus,({done:e,a:t,b:n})=>e(void 0,t%n)),addOps(LispType.BitShiftLeft,({done:e,a:t,b:n})=>e(void 0,t<<n)),addOps(LispType.BitShiftRight,({done:e,a:t,b:n})=>e(void 0,t>>n)),addOps(LispType.BitUnsignedShiftRight,({done:e,a:t,b:n})=>e(void 0,t>>>n)),addOps(LispType.Instanceof,({done:e,a:t,b:n})=>e(void 0,t instanceof n)),addOps(LispType.In,({done:e,a:t,b:n})=>e(void 0,t in n)),addOps(LispType.Return,({done:e,b:t})=>e(void 0,t)),addOps(LispType.Var,({done:e,a:t,b:n,scope:r,bobj:o,internal:s})=>{e(void 0,r.declare(t,VarType.var,n,o?.isGlobal||!1,s))}),addOps(LispType.Let,({done:e,a:t,b:n,scope:r,bobj:o,internal:s})=>{e(void 0,r.declare(t,VarType.let,n,o?.isGlobal||!1,s))}),addOps(LispType.Const,({done:e,a:t,b:n,scope:r,bobj:o,internal:s})=>{e(void 0,r.declare(t,VarType.const,n,o?.isGlobal||!1,s))}),addOps(LispType.Internal,({done:e,a:t,b:n,scope:r,bobj:o,internal:s})=>{if(!s)throw new SandboxCapabilityError("Internal variables are not accessible");e(void 0,r.declare(t,VarType.internal,n,o?.isGlobal||!1,s))}),addOps(LispType.LoopAction,({done:e,a:t,b:n,context:r,statementLabels:o})=>{const s=normalizeStatementLabel(n),i=findControlFlowTarget(o,t,s);if(null===i)throw new TypeError("Illegal continue statement");if(!i)throw new TypeError(s?`Undefined label '${s}'`:"Illegal "+t+" statement");e(void 0,new ExecReturn(r.ctx.auditReport,void 0,!1,{type:t,label:s}))}),addOps(LispType.Throw,({done:e,b:t})=>{e(t)}),addOps(LispType.None,({done:e})=>e()),addOps(LispType.ArrowFunction,({done:e,ticks:t,a:n,b:r,obj:o,context:s,scope:i,internal:a})=>{if("string"==typeof o[2]||o[2]instanceof CodeString){if(!s.allowJit||!s.evalContext)throw new SandboxCapabilityError("Unevaluated code detected, JIT not allowed");o[2]=r=s.evalContext.lispifyFunction(new CodeString(o[2]),s.constants)}const c=n.slice(1);n[0]?e(void 0,createFunctionAsync(c,r,t,s,i,void 0,a)):e(void 0,createFunction(c,r,t,s,i,void 0,a))}),addOps(LispType.Function,({done:e,ticks:t,a:n,b:r,obj:o,context:s,scope:i,internal:a})=>{if("string"==typeof o[2]||o[2]instanceof CodeString){if(!s.allowJit||!s.evalContext)throw new SandboxCapabilityError("Unevaluated code detected, JIT not allowed");o[2]=r=s.evalContext.lispifyFunction(new CodeString(o[2]),s.constants,!1,{generatorDepth:n[1]===LispType.True?1:0,asyncDepth:n[0]===LispType.True?1:0,lispDepth:0})}const c=n[0],p=n[1],l=n[2],d=n.slice(3);let u;u=c===LispType.True&&p===LispType.True?createAsyncGeneratorFunction(d,r,t,s,i,l,a):p===LispType.True?createGeneratorFunction(d,r,t,s,i,l,a):c===LispType.True?createFunctionAsync(d,r,t,s,i,l,a):createFunction(d,r,t,s,i,l,a),l&&i.declare(l,VarType.var,u,!1,a),e(void 0,u)}),addOps(LispType.InlineFunction,({done:e,ticks:t,a:n,b:r,obj:o,context:s,scope:i,internal:a})=>{if("string"==typeof o[2]||o[2]instanceof CodeString){if(!s.allowJit||!s.evalContext)throw new SandboxCapabilityError("Unevaluated code detected, JIT not allowed");o[2]=r=s.evalContext.lispifyFunction(new CodeString(o[2]),s.constants,!1,{generatorDepth:n[1]===LispType.True?1:0,asyncDepth:n[0]===LispType.True?1:0,lispDepth:0})}const c=n[0],p=n[1],l=n[2],d=n.slice(3);let u;l&&(i=new Scope(i,{})),u=c===LispType.True&&p===LispType.True?createAsyncGeneratorFunction(d,r,t,s,i,l,a):p===LispType.True?createGeneratorFunction(d,r,t,s,i,l,a):c===LispType.True?createFunctionAsync(d,r,t,s,i,l,a):createFunction(d,r,t,s,i,l,a),l&&i.declare(l,VarType.let,u,!1,a),e(void 0,u)}),addOps(LispType.Loop,({exec:e,done:t,ticks:n,a:r,b:o,context:s,scope:i,statementLabels:a,internal:c,generatorYield:p})=>{const[l,d,u,y,f,h,x,g,b]=r,S=[...normalizeStatementLabels(b).map(e=>createLoopTarget(e,!1)),createLoopTarget()],T=addControlFlowTargets(a,S);if(g===LispType.True&&e!==execAsync)return void t(new SyntaxError("for-await-of loops are only allowed inside async functions"));let w=!0;const m=new Scope(i,{}),v={$$obj:void 0},L=new Scope(m,v);if(e===execAsync)(async()=>{let r;if(r=asyncDone(t=>e(n,y,m,s,t,void 0,c,p)),v.$$obj=!0===(r=asyncDone(t=>e(n,u,m,s,t,void 0,c,p))).isInstant?r.instant:(await r.p).result,g===LispType.True){const e=v.$$obj;v.$$obj=e[Symbol.asyncIterator]?e[Symbol.asyncIterator]():e[Symbol.iterator]?e[Symbol.iterator]():e}for(r=asyncDone(t=>e(n,d,L,s,t,void 0,c,p)),g===LispType.True&&(v.$$next=await v.$$next),l&&(w=!0===(r=asyncDone(t=>e(n,h,L,s,t,void 0,c,p))).isInstant?r.instant:(await r.p).result);w;){const i=new Scope(L,{});r=asyncDone(t=>e(n,x,i,s,t,void 0,c,p)),!0===r.isInstant?r.instant:(await r.p).result;const a=await executeTreeAsync(n,s,o,[i],T,c,p);if(a instanceof ExecReturn&&a.returned)return void t(void 0,a);if(a instanceof ExecReturn&&a.controlFlow){if(!S.some(e=>matchesControlFlowTarget(a.controlFlow,e)))return void t(void 0,a);if(a.breakLoop)break}r=asyncDone(t=>e(n,f,L,s,t,void 0,c,p)),g===LispType.True&&(v.$$next=await v.$$next),w=!0===(r=asyncDone(t=>e(n,h,L,s,t,void 0,c,p))).isInstant?r.instant:(await r.p).result}t()})().catch(t);else{for(syncDone(t=>e(n,y,m,s,t,void 0,c,p)),v.$$obj=syncDone(t=>e(n,u,m,s,t,void 0,c,p)).result,syncDone(t=>e(n,d,L,s,t,void 0,c,p)),l&&(w=syncDone(t=>e(n,h,L,s,t,void 0,c,p)).result);w;){const r=new Scope(L,{});syncDone(t=>e(n,x,r,s,t,void 0,c,p));const i=executeTree(n,s,o,[r],T,c,p);if(i instanceof ExecReturn&&i.returned)return void t(void 0,i);if(i instanceof ExecReturn&&i.controlFlow){if(!S.some(e=>matchesControlFlowTarget(i.controlFlow,e)))return void t(void 0,i);if(i.breakLoop)break}syncDone(t=>e(n,f,L,s,t,void 0,c,p)),w=syncDone(t=>e(n,h,L,s,t,void 0,c,p)).result}t()}}),addOps(LispType.If,({exec:e,done:t,ticks:n,a:r,b:o,context:s,scope:i,statementLabels:a,internal:c,generatorYield:p})=>{e(n,sanitizeProp(r,s)?o.t:o.f,i,s,t,a,c,p)}),addOps(LispType.InlineIf,({exec:e,done:t,ticks:n,a:r,b:o,context:s,scope:i,internal:a,generatorYield:c})=>{e(n,sanitizeProp(r,s)?o.t:o.f,i,s,t,void 0,a,c)}),addOps(LispType.InlineIfCase,({done:e,a:t,b:n})=>e(void 0,new If(t,n))),addOps(LispType.IfCase,({done:e,a:t,b:n})=>e(void 0,new If(t,n))),addOps(LispType.Labeled,({exec:e,done:t,ticks:n,a:r,b:o,context:s,scope:i,statementLabels:a,internal:c,generatorYield:p})=>{const l=createLabeledStatementTarget(normalizeStatementLabel(r));e(n,o,i,s,(...e)=>{if(1===e.length)return void t(e[0]);const n=e[1];n instanceof ExecReturn&&n.controlFlow&&l&&matchesControlFlowTarget(n.controlFlow,l)?t():t(void 0,n)},addControlFlowTarget(a,l),c,p)}),addOps(LispType.Switch,({exec:e,done:t,ticks:n,a:r,b:o,context:s,scope:i,statementLabels:a,internal:c,generatorYield:p})=>{const l=createSwitchTarget(),d=addControlFlowTarget(a,l);e(n,r,i,s,(...r)=>{if(1===r.length)return void t(r[0]);let a=r[1];if(a=sanitizeProp(a,s),e===execSync){let r,u=!1;for(const y of o)if(u||(u=!y[1]||a===sanitizeProp(syncDone(t=>e(n,y[1],i,s,t,void 0,c,p)).result,s))){if(!y[2])continue;if(r=executeTree(n,s,y[2],[i],d,c,p),r.controlFlow){if(!matchesControlFlowTarget(r.controlFlow,l))return void t(void 0,r);if(r.breakLoop)break}if(r.returned)return void t(void 0,r);if(!y[1])break}t()}else(async()=>{let r,u=!1;for(const y of o){let o;if(u||(u=!y[1]||a===sanitizeProp(!0===(o=asyncDone(t=>e(n,y[1],i,s,t,void 0,c,p))).isInstant?o.instant:(await o.p).result,s))){if(!y[2])continue;if(r=await executeTreeAsync(n,s,y[2],[i],d,c,p),r.controlFlow){if(!matchesControlFlowTarget(r.controlFlow,l))return void t(void 0,r);if(r.breakLoop)break}if(r.returned)return void t(void 0,r);if(!y[1])break}}t()})().catch(t)},void 0,c,p)}),addOps(LispType.Try,({exec:e,done:t,ticks:n,a:r,b:o,context:s,scope:i,statementLabels:a,internal:c,generatorYield:p})=>{const[l,d,u]=o;executeTreeWithDone(e,(...r)=>{const o=1===r.length,y=o?r[0]:void 0,f=!o&&r.length>1?r[1]:void 0,h=(r,o)=>{u&&u.length>0?executeTreeWithDone(e,(...e)=>{const n=1===e.length,s=!n&&e.length>1?e[1]:void 0;n?t(e[0]):s instanceof ExecReturn&&(s.returned||s.breakLoop||s.continueLoop)?t(void 0,s):r?t(o):o instanceof ExecReturn&&(o.returned||o.breakLoop||o.continueLoop)?t(void 0,o):t()},n,s,u,[new Scope(i,{})],a,c,p):r?t(o):o instanceof ExecReturn&&(o.returned||o.breakLoop||o.continueLoop)?t(void 0,o):t()};if(o&&y instanceof SandboxError)t(y);else if(o&&d&&d.length>0){const t={};l&&(t[l]=y),executeTreeWithDone(e,(...e)=>{const t=1===e.length;h(t,t?e[0]:e.length>1?e[1]:void 0)},n,s,d,[new Scope(i,t)],a,c,p)}else h(o,o?y:f)},n,s,r,[new Scope(i)],a,c,p)}),addOps(LispType.Expression,({done:e,a:t})=>e(void 0,t.pop()));var ExecReturn=class{constructor(e,t,n,r){this.auditReport=e,this.result=t,this.returned=n,this.controlFlow=r}get breakLoop(){return"break"===this.controlFlow?.type}get continueLoop(){return"continue"===this.controlFlow?.type}},emptyControlFlowTargets=[];function normalizeStatementLabel(e){return void 0===e||e===LispType.None?void 0:e}function normalizeStatementLabels(e){return void 0===e||e===LispType.None?[]:Array.isArray(e)&&!isLisp(e)?e.filter(e=>"string"==typeof e):[e]}function createLoopTarget(e,t=!0){return{label:e,acceptsBreak:!0,acceptsContinue:!0,acceptsUnlabeledBreak:t,acceptsUnlabeledContinue:t}}function createSwitchTarget(e){return{label:e,acceptsBreak:!0,acceptsContinue:!1,acceptsUnlabeledBreak:!0,acceptsUnlabeledContinue:!1}}function createLabeledStatementTarget(e){if(e)return{label:e,acceptsBreak:!0,acceptsContinue:!1,acceptsUnlabeledBreak:!1,acceptsUnlabeledContinue:!1}}function addControlFlowTarget(e,t){return t?[...e||emptyControlFlowTargets,t]:e}function addControlFlowTargets(e,t){return t.reduce((e,t)=>addControlFlowTarget(e,t),e)}function matchesControlFlowTarget(e,t){return"continue"===e.type?!!t.acceptsContinue&&(e.label?t.label===e.label:t.acceptsUnlabeledContinue):!!t.acceptsBreak&&(e.label?t.label===e.label:t.acceptsUnlabeledBreak)}function findControlFlowTarget(e,t,n){if(e)for(let r=e.length-1;r>=0;r--){const o=e[r];if(n){if(o.label!==n)continue;return("continue"===t?o.acceptsContinue:o.acceptsBreak)?o:null}if("continue"===t?o.acceptsUnlabeledContinue:o.acceptsUnlabeledBreak)return o}}function generateArgs(e,t){const n={};return e.forEach((e,r)=>{e.startsWith("...")?n[e.substring(3)]=t.slice(r):n[e]=t[r]}),n}function createFunction(e,t,n,r,o,s,i=!1){if(r.ctx.options.forbidFunctionCreation)throw new SandboxCapabilityError("Function creation is forbidden");let a;return a=void 0===s?(...s)=>{const a=generateArgs(e,s);return executeTree(n,r,t,void 0===o?[]:[new Scope(o,a)],void 0,i).result}:function(...s){const a=generateArgs(e,s);return executeTree(n,r,t,void 0===o?[]:[new Scope(o,a,this)],void 0,i).result},r.registerSandboxFunction(a),r.ctx.sandboxedFunctions.add(a),a}function createFunctionAsync(e,t,n,r,o,s,i=!1){if(r.ctx.options.forbidFunctionCreation)throw new SandboxCapabilityError("Function creation is forbidden");if(!r.ctx.prototypeWhitelist?.has(Promise.prototype))throw new SandboxCapabilityError("Async/await not permitted");let a;return a=void 0===s?async(...s)=>{const a=generateArgs(e,s);return(await executeTreeAsync(n,r,t,void 0===o?[]:[new Scope(o,a)],void 0,i)).result}:async function(...s){const a=generateArgs(e,s);return(await executeTreeAsync(n,r,t,void 0===o?[]:[new Scope(o,a,this)],void 0,i)).result},r.registerSandboxFunction(a),r.ctx.sandboxedFunctions.add(a),a}var YieldValue=class{constructor(e,t){this.value=e,this.delegate=t}},syncYieldPauseSentinel=Symbol("syncYieldPause");function asIterableIterator(e){const t=e?.[Symbol.iterator]?.()??e;if(!t||"function"!=typeof t.next)throw new TypeError("yield* target is not iterable");return"function"==typeof t[Symbol.iterator]?t:{next:t.next.bind(t),throw:t.throw?.bind(t),return:t.return?.bind(t),[Symbol.iterator](){return this}}}function asAsyncIterableIterator(e){const t=e?.[Symbol.asyncIterator]?.();if(t)return{next:t.next.bind(t),throw:t.throw?.bind(t),return:t.return?.bind(t),[Symbol.asyncIterator](){return this}};const n=asIterableIterator(e);return{next:async e=>n.next(e),async throw(e){if("function"==typeof n.throw)return n.throw(e);throw e},return:async e=>"function"==typeof n.return?n.return(e):{value:e,done:!0},[Symbol.asyncIterator](){return this}}}function*executeGenBody(e,t,n,r,o,s){if(!isLisp(t)&&Array.isArray(t)){const i=t;if(0===i.length||i[0]===LispType.None)return new ExecReturn(r.ctx.auditReport,void 0,!1);for(const t of i){const i=yield*executeGenBody(e,t,n,r,o,s);if(i instanceof ExecReturn&&(i.returned||i.controlFlow))return i;if(isLisp(t)&&t[0]===LispType.Return)return new ExecReturn(r.ctx.auditReport,i.result,!0)}return new ExecReturn(r.ctx.auditReport,void 0,!1)}const[i,a,c]=t;switch(i){case LispType.Yield:{const t=yield sanitizeProp((yield*executeGenBody(e,a,n,r,o,s)).result,r);return new ExecReturn(r.ctx.auditReport,t,!1)}case LispType.YieldDelegate:{const t=yield*asIterableIterator(sanitizeProp((yield*executeGenBody(e,a,n,r,o,s)).result,r));return new ExecReturn(r.ctx.auditReport,t,!1)}case LispType.If:{const t=yield*executeGenBody(e,a,n,r,o,s),i=syncDone(t=>execSync(e,c,n,r,t,o,s,void 0)).result,p=sanitizeProp(t.result,r)?i.t:i.f;return p?yield*executeGenBody(e,p,n,r,o,s):new ExecReturn(r.ctx.auditReport,void 0,!1)}case LispType.Loop:{const[t,i,p,l,d,u,y,f,h]=a;if(f===LispType.True)throw new SyntaxError("for-await-of loops are only allowed inside async functions");const x=[...normalizeStatementLabels(h).map(e=>createLoopTarget(e,!1)),createLoopTarget()],g=addControlFlowTargets(o,x),b=new Scope(n,{}),S={$$obj:void 0},T=new Scope(b,S);syncDone(t=>execSync(e,l,b,r,t,void 0,s,void 0)),S.$$obj=syncDone(t=>execSync(e,p,b,r,t,void 0,s,void 0)).result,syncDone(t=>execSync(e,i,T,r,t,void 0,s,void 0));let w=!0;for(t&&(w=syncDone(t=>execSync(e,u,T,r,t,void 0,s,void 0)).result);w;){const t=new Scope(T,{});syncDone(n=>execSync(e,y,t,r,n,void 0,s,void 0));const n=yield*executeGenBody(e,c,t,r,g,s);if(n.returned)return n;if(n.controlFlow){if(!x.some(e=>matchesControlFlowTarget(n.controlFlow,e)))return n;if(n.breakLoop)break}syncDone(t=>execSync(e,d,T,r,t,void 0,s,void 0)),w=syncDone(t=>execSync(e,u,T,r,t,void 0,s,void 0)).result}return new ExecReturn(r.ctx.auditReport,void 0,!1)}case LispType.Try:{const[t,i,l]=c;let d,u;try{d=yield*executeGenBody(e,a,n,r,o,s)}catch(p){if(!(t&&i?.length>0))throw p;d=yield*executeGenBody(e,i,new Scope(n,{[t]:p}),r,o,s)}finally{if(l?.length>0){const t=yield*executeGenBody(e,l,n,r,o,s);(t.returned||t.controlFlow)&&(u=t)}}return u||d}case LispType.Labeled:{const t=createLabeledStatementTarget(normalizeStatementLabel(a)),i=yield*executeGenBody(e,c,n,r,addControlFlowTargets(o,t?[t]:[]),s);return i.controlFlow&&t&&matchesControlFlowTarget(i.controlFlow,t)?new ExecReturn(r.ctx.auditReport,i.result,!1):i}default:{let i=0;const a=[];for(;;){let c,l=0,d=!1,u=!1;const y=(e,t)=>{if(l<i)return t(void 0,a[l]),void l++;throw c=e.value,d=e.delegate,u=!0,l++,syncYieldPauseSentinel};try{const i=syncDone(i=>execSync(e,t,n,r,i,o,s,y)).result;return i instanceof ExecReturn?i:new ExecReturn(r.ctx.auditReport,i,!1)}catch(p){if(!u||p!==syncYieldPauseSentinel)throw p;const e=d?yield*asIterableIterator(c):yield c;a.push(e),i++}}}}}function createGeneratorFunction(e,t,n,r,o,s,i=!1){if(r.ctx.options.forbidFunctionCreation)throw new SandboxCapabilityError("Function creation is forbidden");const a=(s,a)=>{const c=generateArgs(e,a),p=executeGenBody(n,t,new Scope(void 0===o?null:o,c,s),r,void 0,i);let l=!1;function d(e){if(l)return{value:void 0,done:!0};try{const t=e();return t.done?(l=!0,{value:t.value instanceof ExecReturn?t.value.result:t.value,done:!0}):{value:t.value,done:!1}}catch(t){throw l=!0,t}}return{next:e=>d(()=>p.next(e)),return:e=>d(()=>p.return(e)),throw:e=>d(()=>p.throw(e)),[Symbol.iterator](){return this}}},c=function(...e){return a(this,e)};return Object.setPrototypeOf(c,GeneratorFunction.prototype),r.registerSandboxFunction(c),r.ctx.sandboxedFunctions.add(c),c}function createAsyncGeneratorFunction(e,t,n,r,o,s,i=!1){if(r.ctx.options.forbidFunctionCreation)throw new SandboxCapabilityError("Function creation is forbidden");if(!r.ctx.prototypeWhitelist?.has(Promise.prototype))throw new SandboxCapabilityError("Async/await not permitted");const a=function(...s){return((s,a)=>{const c=generateArgs(e,a),p=void 0===o?[new Scope(null,c,s)]:[new Scope(o,c,s)];return async function*(){const e=[];let o=null;const s=executeTreeAsync(n,r,t,p,void 0,i,(t,n)=>{e.push({yieldValue:t,continueDone:n}),o&&(o(),o=null)});let a,c,l=!1;for(s.then(e=>{l=!0,a=e,o?.()},e=>{l=!0,c=e,o?.()});;){for(0!==e.length||l||await new Promise(e=>{o=e});e.length>0;){const{yieldValue:t,continueDone:n}=e.shift();try{const e=t.delegate?yield*asAsyncIterableIterator(t.value):yield t.value;n?.(void 0,e)}catch(d){n?.(d)}}if(l)break}if(void 0!==c)throw c;return a?.result}()})(this,s)};return Object.setPrototypeOf(a,AsyncGeneratorFunction.prototype),r.registerSandboxFunction(a),r.ctx.sandboxedFunctions.add(a),a}function assignCheck(e,t,n="assign"){if(void 0===e.context)throw new ReferenceError(`Cannot ${n} value to undefined.`);if(e.isConst)throw new TypeError("Assignment to constant variable.");if(e.isGlobal)throw new SandboxAccessError(`Cannot ${n} property '${e.prop.toString()}' of a global object`);if(null===e.context)throw new TypeError("Cannot set properties of null");if("function"==typeof e.context[e.prop]&&!hasOwnProperty(e.context,e.prop))throw new SandboxAccessError(`Override prototype property '${e.prop.toString()}' not allowed`);"delete"===n?hasOwnProperty(e.context,e.prop)&&(t.changeSubscriptions.get(e.context)?.forEach(t=>t({type:"delete",prop:e.prop.toString()})),t.changeSubscriptionsGlobal.get(e.context)?.forEach(t=>t({type:"delete",prop:e.prop.toString()}))):hasOwnProperty(e.context,e.prop)?(t.setSubscriptions.get(e.context)?.get(e.prop.toString())?.forEach(e=>e({type:"replace"})),t.setSubscriptionsGlobal.get(e.context)?.get(e.prop.toString())?.forEach(e=>e({type:"replace"}))):(t.changeSubscriptions.get(e.context)?.forEach(t=>t({type:"create",prop:e.prop.toString()})),t.changeSubscriptionsGlobal.get(e.context)?.forEach(t=>t({type:"create",prop:e.prop.toString()})))}var arrayChange=new Set([[].push,[].pop,[].shift,[].unshift,[].splice,[].reverse,[].sort,[].copyWithin]),KeyVal=class{constructor(e,t){this.key=e,this.val=t}},SpreadObject=class{constructor(e){this.item=e}},SpreadArray=class{constructor(e){this.item=e}},ArrayHole=class{},If=class{constructor(e,t,n){this.t=e,this.f=t,this.label=n}},literalRegex=/(\$\$)*(\$)?\${(\d+)}/g,prorptyKeyTypes=["string","number","symbol"];function isPropertyKey(e){return prorptyKeyTypes.includes(typeof e)}function hasPossibleProperties(e){return null!=e}function execMany(e,t,n,r,o,s,i,a,c){t===execSync?_execManySync(e,n,r,o,s,i,a,c):_execManyAsync(e,n,r,o,s,i,a,c).catch(r)}function _execManySync(e,t,n,r,o,s,i,a){const c=[];for(let p=0;p<t.length;p++){let l=syncDone(n=>execSync(e,t[p],r,o,n,s,i,a)).result;if(l instanceof ExecReturn&&(l.returned||l.breakLoop||l.continueLoop))return void n(void 0,l);if(isLisp(t[p])&&t[p][0]===LispType.Return)return void n(void 0,new ExecReturn(o.ctx.auditReport,l,!0));c.push(l)}n(void 0,c)}async function _execManyAsync(e,t,n,r,o,s,i,a){const c=[];for(let l=0;l<t.length;l++){let d;try{let n;d=!0===(n=asyncDone(n=>execAsync(e,t[l],r,o,n,s,i,a))).isInstant?n.instant:(await n.p).result}catch(p){return void n(p)}if(d instanceof ExecReturn&&(d.returned||d.breakLoop||d.continueLoop))return void n(void 0,d);if(isLisp(t[l])&&t[l][0]===LispType.Return)return void n(void 0,new ExecReturn(o.ctx.auditReport,d,!0));c.push(d)}n(void 0,c)}function asyncDone(e){let t,n=!1;const r=new Promise((r,o)=>{e((...e)=>{1===e.length?o(e[0]):(n=!0,t=e[1],r({result:e[1]}))})});return{isInstant:n,instant:t,p:r}}function syncDone(e){let t,n;if(e((...e)=>{n=1===e.length?{error:e[0]}:void 0,t=e[1]}),n)throw n.error;return{result:t}}async function execAsync(e,t,n,r,o,s,i,a){let c=o;const p=new Promise(e=>{c=(...t)=>{o(...t),e()}});if(!_execNoneRecurse(e,t,n,r,c,!0,s,i,a)&&isLisp(t)){let o,p=t[0];try{let c;o=!0===(c=asyncDone(o=>execAsync(e,t[1],n,r,o,s,i,a))).isInstant?c.instant:(await c.p).result}catch(l){return void c(l)}let d,u=o;try{u=o instanceof Prop?o.get(r):o}catch(l){return void c(l)}if(p===LispType.PropOptional||p===LispType.CallOptional){if(null==u)return void c(void 0,optional);p=p===LispType.PropOptional?LispType.Prop:LispType.Call}if(u===optional){if(p===LispType.Prop||p===LispType.Call)return void c(void 0,u);u=void 0}if(p===LispType.NullishCoalescing&&null!=u)return void c(void 0,u);try{let o;d=!0===(o=asyncDone(o=>execAsync(e,t[2],n,r,o,s,i,a))).isInstant?o.instant:(await o.p).result}catch(l){return void c(l)}let y=d;try{y=d instanceof Prop?d.get(r):d}catch(l){return void c(l)}y===optional&&(y=void 0),performOp({op:p,exec:execAsync,done:c,ticks:e,a:u,b:y,obj:o,context:r,scope:n,bobj:d,statementLabels:s,internal:i,generatorYield:a,tree:t})}await p}function execSync(e,t,n,r,o,s,i,a){if(!_execNoneRecurse(e,t,n,r,o,!1,s,i,a)&&isLisp(t)){let c=t[0],p=syncDone(o=>execSync(e,t[1],n,r,o,s,i,a)).result,l=p instanceof Prop?p.get(r):p;if(c===LispType.PropOptional||c===LispType.CallOptional){if(null==l)return void o(void 0,optional);c=c===LispType.PropOptional?LispType.Prop:LispType.Call}if(l===optional){if(c===LispType.Prop||c===LispType.Call)return void o(void 0,l);l=void 0}if(c===LispType.NullishCoalescing&&null!=l)return void o(void 0,l);let d=syncDone(o=>execSync(e,t[2],n,r,o,s,i,a)).result,u=d instanceof Prop?d.get(r):d;u===optional&&(u=void 0),performOp({op:c,exec:execSync,done:o,ticks:e,a:l,b:u,obj:p,context:r,scope:n,bobj:d,statementLabels:s,internal:i,generatorYield:a,tree:t})}}function checkHaltExpectedTicks(e,t=0n){const n=e.context.ctx.sandbox,{ticks:r,scope:o,context:s}=e;if(n.halted){const t=n.subscribeResume(()=>{t.unsubscribe(),performOp(e,!1)});return!0}if(void 0!==r.tickLimit&&r.tickLimit<=r.ticks+t){const t=new SandboxExecutionQuotaExceededError("Execution quota exceeded");if(s.ctx.options.haltOnSandboxError){const i=n.subscribeResume(()=>{i.unsubscribe(),performOp(e)});n.haltExecution({type:"error",error:t,ticks:r,scope:o,context:s})}else e.done(t);return!0}if(r.nextYield&&r.ticks>r.nextYield){const t=n.subscribeResume(()=>{t.unsubscribe(),performOp(e,!1)});return r.nextYield+=NON_BLOCKING_THRESHOLD,n.haltExecution({type:"yield"}),setTimeout(()=>n.resumeExecution()),!0}return r.ticks+=t,!1}function performOp(e,t=!0){const{done:n,op:r,ticks:o,context:s,scope:i}=e;t&&o.ticks++;const a=s.ctx.sandbox;try{if(checkHaltExpectedTicks(e))return;const t=ops.get(r);if(void 0===t)return void n(new SandboxExecutionTreeError("Unknown operator: "+r));t(e)}catch(c){if(s.ctx.options.haltOnSandboxError&&c instanceof SandboxError){const e=a.subscribeResume(()=>{e.unsubscribe(),n(c)});a.haltExecution({type:"error",error:c,ticks:o,scope:i,context:s})}else n(c)}}var unexecTypes=new Set([LispType.ArrowFunction,LispType.Function,LispType.InlineFunction,LispType.Loop,LispType.Try,LispType.Switch,LispType.IfCase,LispType.InlineIfCase,LispType.Labeled,LispType.Typeof]);function _execNoneRecurse(e,t,n,r,o,s,i,a,c){const p=s?execAsync:execSync;if(t instanceof Prop)o(void 0,t.get(r));else if(t===optional)o();else if(Array.isArray(t)&&!isLisp(t))t[0]===LispType.None?o():execMany(e,p,t,o,n,r,i,a,c);else if(isLisp(t))if(t[0]===LispType.Block)execMany(e,p,t[1],o,new Scope(n),r,i,a,c);else if(t[0]===LispType.InternalBlock)execMany(e,p,t[1],o,n,r,i,!0,c);else if(t[0]===LispType.Await)s?r.ctx.prototypeWhitelist?.has(Promise.prototype)?execAsync(e,t[1],n,r,async(...e)=>{if(1===e.length)o(e[0]);else try{o(void 0,await sanitizeProp(e[1],r))}catch(t){o(t)}},i,a,c).catch(o):o(new SandboxCapabilityError("Async/await is not permitted")):o(new SyntaxError("Illegal use of 'await', must be inside async function"));else if(t[0]===LispType.Yield||t[0]===LispType.YieldDelegate){const p=c;if(!p)return o(new SyntaxError("Illegal use of 'yield', must be inside a generator function")),!0;const d=t[0]===LispType.YieldDelegate;if(s)execAsync(e,t[1],n,r,async(...e)=>{if(1!==e.length)try{p(new YieldValue(await sanitizeProp(e[1],r),d),o)}catch(t){o(t)}else o(e[0])},i,a,c).catch(o);else try{const s=syncDone(o=>execSync(e,t[1],n,r,o,i,a,c)).result;p(new YieldValue(sanitizeProp(s,r),d),o)}catch(l){if(l===syncYieldPauseSentinel)throw l;o(l)}}else{if(!unexecTypes.has(t[0]))return!1;performOp({op:t[0],exec:p,done:o,ticks:e,a:t[1],b:t[2],obj:t,tree:t,context:r,scope:n,bobj:void 0,statementLabels:i,internal:a,generatorYield:c})}else o(void 0,t);return!0}function executeTree(e,t,n,r=[],o,s,i){return syncDone(a=>executeTreeWithDone(execSync,a,e,t,n,r,o,s,i)).result}async function executeTreeAsync(e,t,n,r=[],o,s,i){let a;return!0===(a=asyncDone(a=>executeTreeWithDone(execAsync,a,e,t,n,r,o,s,i))).isInstant?a.instant:(await a.p).result}function executeTreeWithDone(e,t,n,r,o,s=[],i,a,c){if(!o)return void t();if(!(o instanceof Array))throw new SyntaxError("Bad execution tree");let p,l=r.ctx.globalScope;for(;p=s.shift();)"object"==typeof p&&(l=p instanceof Scope?p:new Scope(l,p,p instanceof LocalScope?void 0:null));r.ctx.options.audit&&!r.ctx.auditReport&&(r.ctx.auditReport={globalsAccess:new Set,prototypeAccess:{}}),e===execSync?_executeWithDoneSync(t,n,r,o,l,i,a,c):_executeWithDoneAsync(t,n,r,o,l,i,a,c).catch(t)}function _executeWithDoneSync(e,t,n,r,o,s,i,a){if(!(r instanceof Array))throw new SyntaxError("Bad execution tree");let c=0;for(c=0;c<r.length;c++){let l,d;const u=r[c];try{execSync(t,u,o,n,(...e)=>{1===e.length?d={error:e[0]}:l=e[1]},s,i,a)}catch(p){d={error:p}}if(d)return void e(d.error);if(l instanceof ExecReturn)return void e(void 0,l);if(isLisp(u)&&u[0]===LispType.Return)return void e(void 0,new ExecReturn(n.ctx.auditReport,l,!0))}e(void 0,new ExecReturn(n.ctx.auditReport,void 0,!1))}async function _executeWithDoneAsync(e,t,n,r,o,s,i,a){if(!(r instanceof Array))throw new SyntaxError("Bad execution tree");let c=0;for(c=0;c<r.length;c++){let l,d;const u=r[c];try{await execAsync(t,u,o,n,(...e)=>{1===e.length?d={error:e[0]}:l=e[1]},s,i,a)}catch(p){d={error:p}}if(d)return void e(d.error);if(l instanceof ExecReturn)return void e(void 0,l);if(isLisp(u)&&u[0]===LispType.Return)return void e(void 0,new ExecReturn(n.ctx.auditReport,l,!0))}e(void 0,new ExecReturn(n.ctx.auditReport,void 0,!1))}function registerConditionalLispTypes({createLisp:e,emptyString:t,extractStatementLabels:n,insertSemicolons:r,lispifyBlock:o,lispifyExpr:s,restOfExp:i,semiColon:a,setLispType:c,wrapLabeledStatement:p}){const l=/^else(?![\w$])/,d=/^if(?![\w$])/;function u(e,n,r=0){if(r>e.maxDepth)throw new SandboxCapabilityError("Maximum expression depth exceeded");let o,s,c=0,p=n.substring(0,0),y=t,f=!0,h={};for(;(p=i(e,n.substring(p.end-n.start),[l,d,a],void 0,void 0,void 0,h)).length||f;){f=!1;const t=n.substring(p.end-n.start).toString();if(t.startsWith("if"))p.end++,c++;else if(t.startsWith("else"))o=n.substring(0,p.end-n.start),p.end++,c--,c||p.end--;else{if(!(s=/^;?\s*else(?![\w$])/.exec(t))){o=y.length?o:n.substring(0,p.end-n.start);break}o=n.substring(0,p.end-n.start),p.end+=s[0].length-1,c--,c||(p.end-=s[0].length-1)}if(!c){y=u(e,n.substring(p.end-n.start+(/^;?\s*else(?![\w$])/.exec(t)?.[0].length||0)),r+1).all;break}h={}}return o=o||n.substring(0,p.end-n.start),{all:n.substring(0,Math.max(o.end,y.end)-n.start),true:o,false:y}}c(["if"],t=>{const{constants:r,part:a,res:c}=t,l=n(c[1]);let d=i(r,a.substring(c[0].length),[],"(");const y=u(r,a.substring(c[1].length)),f=c[0].length-c[1].length+d.length+1;let h=y.true.substring(f),x=y.false;if(d=d.trim(),h=h.trim(),x=x.trim(),!h.length||/^else(?![\w$])/.test(h.toString()))throw new SyntaxError("Unexpected token");"{"===h.char(0)&&(h=h.slice(1,-1)),"{"===x.char(0)&&(x=x.slice(1,-1)),t.lispTree=p(l,e({op:LispType.If,a:s(r,d,void 0,t),b:e({op:LispType.IfCase,a:o(h,r,!1,t),b:o(x,r,!1,t)})}))}),c(["switch"],c=>{const{constants:l,part:d,res:u}=c,y=n(u[1]),f=i(l,d.substring(u[0].length),[],"(");let h=d.toString().indexOf("{",u[0].length+f.length+1);if(-1===h)throw new SyntaxError("Invalid switch");let x,g=r(l,i(l,d.substring(h+1),[],"{"));const b=/^\s*(case\s|default)\s*/,S=/^\s*case\s*:/,T=[];let w=!1;for(;(x=b.exec(g.toString()))||S.test(g.toString());){if(!x)throw new SyntaxError("Unexpected end of expression");if("default"===x[1]){if(w)throw new SyntaxError("Only one default switch case allowed");w=!0}const n=i(l,g.substring(x[0].length),[/^:/]);if("default"!==x[1]&&!n.trimStart().length)throw new SyntaxError("Unexpected end of expression");let r=t,p=h=x[0].length+n.length+1;const d=/^\s*\{/.exec(g.substring(p).toString());let u=[];if(d)p+=d[0].length,r=i(l,g.substring(p),[],"{"),p+=r.length+1,u=o(r,l,!1,c);else{const e=i(l,g.substring(p),[b]);if(e.trim().length){for(;(r=i(l,g.substring(p),[a])).length&&(p+=r.length+(";"===g.char(p+r.length)?1:0),!b.test(g.substring(p).toString())););u=o(g.substring(h,r.end-g.start),l,!1,c)}else u=[],p+=e.length}g=g.substring(p),T.push(e({op:LispType.SwitchCase,a:"default"===x[1]?LispType.None:s(l,n,void 0,c),b:u}))}c.lispTree=p(y,e({op:LispType.Switch,a:s(l,f,void 0,c),b:T}))})}function registerControlLispTypes({ParseError:e,createLisp:t,emptyString:n,expandDestructure:r,extractStatementLabels:o,insertSemicolons:s,lispify:i,lispifyBlock:a,lispifyExpr:c,lispifyReturnExpr:p,restOfExp:l,semiColon:d,setLispType:u,startingExecpted:y,wrapLabeledStatement:f}){const h=/^((let|var|const|internal)\s+)?\s*([a-zA-Z$_][a-zA-Z\d$_]*)\s+(in|of)(?![\w$])/,x=/^((let|var|const|internal)\s+)\s*([[{])/,g=i({maxDepth:10},new CodeString("let $$iterator = $$obj[Symbol.iterator]()"),["initialize"]),b=i({maxDepth:10},new CodeString("let $$next = $$iterator.next()"),["initialize"]),S=i({maxDepth:10},new CodeString("return !$$next.done"),["initialize"]),T=i({maxDepth:10},new CodeString("$$next = $$iterator.next()")),w=i({maxDepth:10},new CodeString("let $$iterator = $$obj"),["initialize"]),m=i({maxDepth:10},new CodeString("let $$next = $$iterator.next()"),["initialize"]),v=i({maxDepth:10},new CodeString("$$next = $$iterator.next()")),L=i({maxDepth:10},new CodeString("let $$keys = Object.keys($$obj)"),["initialize"]),E=i({maxDepth:10},new CodeString("let $$keyIndex = 0"),["initialize"]),C=i({maxDepth:10},new CodeString("$$keyIndex++")),A=i({maxDepth:10},new CodeString("return $$keyIndex < $$keys.length"),["initialize"]);u(["for","do","while"],e=>{const{constants:s,type:u,part:f,res:O}=e,I=o(O[1]);let $,R,k=0,P=LispType.True,D=[],F=LispType.None,N=LispType.None,j=LispType.True,B=LispType.True;const _="for"===u&&O[2]?LispType.True:LispType.None;switch(u){case"while":{k=f.toString().indexOf("(")+1;const e=l(s,f.substring(k),[],"(");if(!e.trimStart().length)throw new SyntaxError("Unexpected end of expression");$=p(s,e),R=l(s,f.substring(k+e.length+1)).trim(),"{"===R.char(0)&&(R=R.slice(1,-1));break}case"for":{k=f.toString().indexOf("(")+1;const o=[];let d,u,O=n;for(let e=0;e<3&&(O=l(s,f.substring(k),[/^[;)]/]),o.push(O.trim()),k+=O.length+1,")"!==f.char(k-1));e++);if(1===o.length&&(d=h.exec(o[0].toString()))){const e=o[0].substring(d[0].length);if(!e.trimStart().length)throw new SyntaxError("Unexpected end of expression");if("of"===d[4])F=p(s,e),D=_?[w,m]:[g,b],$=S,B=_?v:T,N=i(s,new CodeString((d[1]||"let ")+d[3]+" = $$next.value"),["initialize"]);else{if(_)throw new SyntaxError("Unexpected token 'in'");F=p(s,e),D=[L,E],B=C,$=A,N=i(s,new CodeString((d[1]||"let ")+d[3]+" = $$keys[$$keyIndex]"),["initialize"])}}else if(1===o.length&&(u=x.exec(o[0].toString()))){const n=u[1].trim(),c=u[3],d="["===c?"]":"}",y=u[0].length-1,f=l(s,o[0].substring(y+1),[],c),h=c+f.toString()+d,x=o[0].substring(y+1+f.length+1).trimStart(),O=/^(in|of)(?![\w$])\s*/.exec(x.toString());if(!O)throw new SyntaxError("Invalid for loop definition");const I=O[1],R=x.substring(O[0].length);if(!R.trimStart().length)throw new SyntaxError("Unexpected end of expression");const k="$$_fv";if("of"===I){F=p(s,R),D=_?[w,m]:[g,b],$=S,B=_?v:T;const o=a(new CodeString(r(n,h,k)),s,!1,e);N=t({op:LispType.InternalBlock,a:[i(s,new CodeString(`${n} ${k} = $$next.value`),["initialize"]),...o],b:LispType.None})}else{F=p(s,R),D=[L,E],B=C,$=A;const o=a(new CodeString(r(n,h,k)),s,!1,e);N=t({op:LispType.InternalBlock,a:[i(s,new CodeString(`${n} ${k} = $$keys[$$keyIndex]`),["initialize"]),...o],b:LispType.None})}}else{if(3!==o.length)throw new SyntaxError("Invalid for loop definition");{const[t,n,r]=o;t.length&&(P=c(s,t,y,e)),$=n.length?p(s,n):LispType.True,r.length&&(B=c(s,r,void 0,e))}}R=l(s,f.substring(k)).trim(),"{"===R.char(0)&&(R=R.slice(1,-1));break}case"do":{j=LispType.None;const e=!!O[2];R=l(s,f.substring(O[0].length),e?[/^\}/]:[d]),$=p(s,l(s,f.substring(f.toString().indexOf("(",O[0].length+R.length)+1),[],"("));break}}const M=[j,D,F,P,B,$,N,_,I];e.lispTree=t({op:LispType.Loop,a:M,b:a(R,s,!1,e)})}),u(["block"],e=>{const{constants:n,part:r,res:s}=e;e.lispTree=f(o(s[1]),t({op:LispType.Block,a:a(l(n,r.substring(s[0].length),[],"{"),n,!1,e),b:LispType.None}))}),u(["loopAction"],e=>{const{part:n,res:r}=e,o=n.substring(r[0].length).trimStart();if(o.length&&!r[2])throw new SyntaxError(`Unexpected token '${o.char(0)}'`);e.lispTree=t({op:LispType.LoopAction,a:r[1],b:r[2]||LispType.None})});const O=/^\s*(catch\s*(\(\s*([a-zA-Z$_][a-zA-Z\d$_]*)\s*\))?|finally)\s*\{/,I=/^\s*catch\s*\(\s*\)/,$=/^\s*catch\s*\(\s*(break|case|catch|continue|debugger|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|this|throw|try|typeof|var|void|while|with|class|const|enum|export|extends|implements|import|interface|let|package|private|protected|public|static|super|yield|await)\s*\)/,R=/^\s*finally\b/;u(["try"],r=>{const{constants:i,part:c,res:p}=r,d=l(i,c.substring(p[0].length),[],"{"),u=c.substring(p[0].length+d.length+1).toString();if(I.test(u))throw new e("Unexpected token ')'",c.toString());const y=$.exec(u);if(y)throw new e(`Unexpected token '${y[1]}'`,c.toString());const h=R.exec(u);if(h&&!/^\s*\{/.test(u.substring(h[0].length)))throw new e("Unexpected token",c.toString());let x,g,b=O.exec(u),S="",T=0;if(!b)throw new e("Missing catch or finally after try",c.toString());b[1].startsWith("catch")?(b=O.exec(c.substring(p[0].length+d.length+1).toString()),S=b[3]||"",g=l(i,c.substring(p[0].length+d.length+1+b[0].length),[],"{"),T=p[0].length+d.length+1+b[0].length+g.length+1,(b=O.exec(c.substring(T).toString()))&&b[1].startsWith("finally")&&(x=l(i,c.substring(T+b[0].length),[],"{"))):x=l(i,c.substring(p[0].length+d.length+1+b[0].length),[],"{");const w=[S,a(s(i,g||n),i,!1,r),a(s(i,x||n),i,!1,r)];r.lispTree=f(o(p[1]),t({op:LispType.Try,a:a(s(i,d),i,!1,r),b:w}))})}function registerDeclarationLispTypes({createLisp:e,expectTypes:t,expandDestructure:n,expandFunctionParamDestructure:r,lispify:o,lispifyBlock:s,lispifyFunction:i,restOfExp:a,semiColon:c,setLispType:p,splitByCommasDestructure:l}){p(["initializeDestructure"],t=>{const{constants:r,part:o,res:i}=t,p=i[1],l=i[2],d="["===l?"]":"}",u=a(r,o.substring(i[0].length),[],l),y=l+u.toString()+d,f=o.substring(i[0].length+u.length+1).trimStart();if(!f.length||"="!==f.char(0))throw new SyntaxError("Destructuring declaration requires an initializer");const h=s(new CodeString(n(p,y,a(r,f.substring(1).trimStart(),[c]).toString())),r,!1,t);t.lispTree=e({op:LispType.InternalBlock,a:h,b:LispType.None})}),p(["initialize"],n=>{const{constants:r,part:s,res:i,expect:a}=n,c="var"===i[1]?LispType.Var:"let"===i[1]?LispType.Let:"const"===i[1]?LispType.Const:LispType.Internal;if(i[3]){const p=s.substring(i[0].length);if(!p.trimStart().length)throw new SyntaxError("Unexpected end of expression");n.lispTree=e({op:c,a:i[2],b:o(r,p,t[a].next,void 0,!1,n)})}else n.lispTree=o(r,s.substring(i[0].length),t[a].next,e({op:c,a:i[2],b:LispType.None}),!1,n)}),p(["function","inlineFunction","arrowFunction","arrowFunctionSingle"],n=>{const{constants:s,type:p,part:d,res:u,expect:y,generatorDepth:f,asyncDepth:h}=n,x="function"!==p&&"inlineFunction"!==p,g=x&&!u[u.length-1],b=!x&&u[2]&&u[2].trimStart().startsWith("*")?LispType.True:LispType.None,S=u[1]?LispType.True:LispType.None;let T,w;if("function"===p||"inlineFunction"===p){const e=a(s,d.substring(u[0].length),[],"(");T=e.toString().trim(),w=u[0].length+e.length+1;const t=d.substring(w).trimStart();w=d.length-t.length+1}else T=u[2]??"",w=0;const m=[...T?l(T).map(e=>e.trim()).filter(Boolean):[]];x||m.unshift((u[3]||"").trimStart());let v=!1;m.forEach(e=>{if(v)throw new SyntaxError("Rest parameter must be last formal parameter");e.startsWith("...")&&(v=!0)});const L=a(s,x?d.substring(u[0].length):d.substring(w),g?[/^[,)}\]]/,c]:[/^}/]);let E=g?"return "+L:L.toString();const C=r(x?m:m.slice(1),E),A=x?C.args:[m[0],...C.args];E=C.body,A.forEach(e=>{if(reservedWords.has(e.replace(/^\.\.\./,"")))throw new SyntaxError(`Unexpected token '${e}'`)});const O=x?u[0].length+L.length+1:w+L.length+1;n.lispTree=o(s,d.substring(O),t[y].next,e({op:x?LispType.ArrowFunction:"function"===p?LispType.Function:LispType.InlineFunction,a:x?[S,...A]:[S,b,...A],b:s.eager?i(new CodeString(E),s,!1,x?{generatorDepth:0,asyncDepth:0,lispDepth:0}:{generatorDepth:b===LispType.True?f+1:0,asyncDepth:S===LispType.True?h+1:0,lispDepth:0}):E}),!1,n)})}function registerOperatorLispTypes({createLisp:e,expandDestructure:t,expectTypes:n,getDestructurePatternSource:r,lispifyBlock:o,restOfExp:s,lispify:i,lispifyExpr:a,setLispType:c}){const p=/^:/,l={inverse:LispType.Inverse,not:LispType.Not,positive:LispType.Positive,negative:LispType.Negative,typeof:LispType.Typeof,delete:LispType.Delete};c(["inverse","not","negative","positive","typeof","delete"],t=>{const{constants:r,type:o,part:a,res:c,expect:p}=t,d=s(r,a.substring(c[0].length),[/^([^\s.?\w$]|\?[^.])/]);if(a.substring(d.length+c[0].length).trim().toString().startsWith("**"))throw new SyntaxError("Unary operator used immediately before exponentiation expression. Parenthesis must be used to disambiguate operator precedence");t.lispTree=i(r,a.substring(d.length+c[0].length),s.next,e({op:l[o],a:t.lispTree,b:i(r,d,n[p].next)}),!1,t)}),c(["taggedTemplate"],t=>{const{constants:r,part:o,res:s,expect:a}=t,c=s[1],[,p,l]=r.literals[parseInt(c)],d=[],u=[];let y="",f=0;for(;f<p.length;)if("${"===p.substring(f,f+2)){let e=f+2,t="",n=!1;for(;e<p.length&&"}"!==p[e];)t+=p[e],e++;e<p.length&&"}"===p[e]&&/^\d+$/.test(t)&&(n=!0),n?(d.push(y),y="",u.push(l[parseInt(t)]),f=e+1):(y+=p[f],f++)}else y+=p[f],f++;d.push(y);const h=d.map(t=>e({op:LispType.StringIndex,a:LispType.None,b:String(r.strings.push(t)-1)})),x=e({op:LispType.CreateArray,a:e({op:LispType.None,a:LispType.None,b:LispType.None}),b:h});t.lispTree=i(r,o.substring(s[0].length),n[a].next,e({op:LispType.Call,a:t.lispTree,b:[x,...u]}),!1,t)});const d={"++$":LispType.IncrementBefore,"--$":LispType.DecrementBefore,"$++":LispType.IncrementAfter,"$--":LispType.DecrementAfter};c(["incrementerBefore"],t=>{const{constants:r,part:o,res:a}=t,c=s(r,o.substring(2),[/^[^\s.\w$]/]);t.lispTree=i(r,o.substring(c.length+2),s.next,e({op:d[a[0]+"$"],a:i(r,c,n.incrementerBefore.next),b:LispType.None}),!1,t)}),c(["incrementerAfter"],t=>{const{constants:r,part:o,res:s,expect:a}=t;if(t.lispTree[0]===LispType.Number||t.lispTree[0]===LispType.BigInt||t.lispTree[0]===LispType.GlobalSymbol||t.lispTree[0]===LispType.StringIndex||t.lispTree[0]===LispType.LiteralIndex||t.lispTree[0]===LispType.RegexIndex)throw new SyntaxError("Invalid left-hand side expression in postfix operation");t.lispTree=i(r,o.substring(s[0].length),n[a].next,e({op:d["$"+s[0]],a:t.lispTree,b:LispType.None}),!1,t)});const u={"&&":LispType.And,"||":LispType.Or,"??":LispType.NullishCoalescing,instanceof:LispType.Instanceof,in:LispType.In,"=":LispType.Assign,"-=":LispType.SubractEquals,"+=":LispType.AddEquals,"/=":LispType.DivideEquals,"**=":LispType.PowerEquals,"*=":LispType.MultiplyEquals,"%=":LispType.ModulusEquals,"^=":LispType.BitNegateEquals,"&=":LispType.BitAndEquals,"|=":LispType.BitOrEquals,">>>=":LispType.UnsignedShiftRightEquals,"<<=":LispType.ShiftLeftEquals,">>=":LispType.ShiftRightEquals,"&&=":LispType.AndEquals,"||=":LispType.OrEquals,"??=":LispType.NullishCoalescingEquals};c(["assign","assignModify","nullishCoalescing"],s=>{const{constants:a,type:c,part:p,res:l}=s;if("nullishCoalescing"!==c&&isLisp(s.lispTree)&&(s.lispTree[0]===LispType.PropOptional||s.lispTree[0]===LispType.CallOptional))throw new SyntaxError("Invalid left-hand side in assignment");if("="===l[0]){const n=r(s.lispTree);if(n){const r=p.substring(l[0].length).toString(),i=`$$_da${Math.random().toString(36).slice(2)}`,c=`internal ${i} = (${r}); ${t("",n,i)}; ${i}`;return void(s.lispTree=e({op:LispType.InternalBlock,a:o(new CodeString(c),a,!1,s),b:LispType.None}))}}s.lispTree=e({op:u[l[0]],a:s.lispTree,b:i(a,p.substring(l[0].length),n.assignment.next,void 0,!1,{...s,lispDepth:s.lispDepth+1})})});const y={"&":LispType.BitAnd,"|":LispType.BitOr,"^":LispType.BitNegate,"<<":LispType.BitShiftLeft,">>":LispType.BitShiftRight,">>>":LispType.BitUnsignedShiftRight,"<=":LispType.SmallerEqualThan,">=":LispType.LargerEqualThan,"<":LispType.SmallerThan,">":LispType.LargerThan,"!==":LispType.StrictNotEqual,"!=":LispType.NotEqual,"===":LispType.StrictEqual,"==":LispType.Equal,"+":LispType.Plus,"-":LispType.Minus,"/":LispType.Divide,"**":LispType.Power,"*":LispType.Multiply,"%":LispType.Modulus,"&&":LispType.And,"||":LispType.Or,instanceof:LispType.Instanceof,in:LispType.In};c(["power","opHigh","op","comparitor","bitwiseShift","bitwiseAnd","bitwiseXor","bitwiseOr","boolOpAnd","boolOpOr"],t=>{const{constants:r,type:o,part:a,res:c}=t,l=[n.inlineIf.types.inlineIf,p];switch(o){case"power":break;case"opHigh":l.push(n.splitter.types.opHigh);case"op":l.push(n.splitter.types.op);case"comparitor":l.push(n.splitter.types.comparitor);case"bitwiseShift":l.push(n.splitter.types.bitwiseShift);case"bitwiseAnd":l.push(n.splitter.types.bitwiseAnd);case"bitwiseXor":l.push(n.splitter.types.bitwiseXor);case"bitwiseOr":l.push(n.splitter.types.bitwiseOr);case"boolOpAnd":l.push(n.splitter.types.boolOpAnd);case"boolOpOr":l.push(n.splitter.types.boolOpOr)}const d=s(r,a.substring(c[0].length),l);t.lispTree=i(r,a.substring(d.length+c[0].length),s.next,e({op:y[c[0]],a:t.lispTree,b:i(r,d,n.splitter.next)}),!1,t)}),c(["inlineIf"],t=>{const{constants:r,part:o,res:i}=t;let c=!1;const l=o.substring(0,0);let d=1;for(;!c&&l.length<o.length;)l.end=s(r,o.substring(l.length+1),[n.inlineIf.types.inlineIf,p]).end,"?"===o.char(l.length)?d++:d--,d||(c=!0);l.start=o.start+1;const u=o.substring(i[0].length+l.length+1);if(!u.trimStart().length)throw new SyntaxError("Unexpected end of expression");t.lispTree=e({op:LispType.InlineIf,a:t.lispTree,b:e({op:LispType.InlineIfCase,a:a(r,l,void 0,{...t,lispDepth:t.lispDepth+1}),b:a(r,u,void 0,{...t,lispDepth:t.lispDepth+1})})})})}function registerStructureLispTypes({NullLisp:e,createLisp:t,emptyString:n,expectTypes:r,expandDestructure:o,findPatternEndIdx:s,lispify:i,lispifyBlock:a,lispifyExpr:c,restOfExp:p,setLispType:l}){const d={createArray:/^\]/,createObject:/^\}/,group:/^\)/,arrayProp:/^\]/,call:/^\)/},u={createArray:LispType.CreateArray,createObject:LispType.CreateObject,group:LispType.Group,arrayProp:LispType.ArrayProp,call:LispType.Call,prop:LispType.Prop,"?prop":LispType.PropOptional,"?call":LispType.CallOptional};l(["createArray","createObject","group","arrayProp","call"],l=>{const{constants:y,type:f,part:h,res:x,expect:g}=l;let b=n;const S=[],T=[];let w=!1,m=x[0].length;const v=m;for(;m<h.length&&!w;)if(b=p(y,h.substring(m),[d[f],/^,/]),m+=b.length,b.trim().length?(S.push(b),T.push(!1)):"createArray"===f&&","===h.char(m)&&(S.push(b),T.push(!0)),","!==h.char(m))w=!0;else{if(!b.trim().length&&"call"===f)throw new SyntaxError("Unexpected end of expression");if(!b.trim().length&&"createObject"===f)throw new SyntaxError("Unexpected token ,");m++}const L="createArray"===f||"createObject"===f||"group"===f?["value","modifier","prop","incrementerBefore","assignment","expEnd"]:["value","modifier","prop","incrementerBefore","expEnd"];let E,C;switch(f){case"group":{const e=h.substring(v,m).trim().toString();if(e.startsWith("{")||e.startsWith("[")){const n=s(e),r=e.slice(0,n).trim(),i=e.slice(n).trimStart();if(i.startsWith("=")){const e=i.slice(1).trim(),n=`$$_da${Math.random().toString(36).slice(2)}`,s=`internal ${n} = (${e}); ${o("",r,n)}; ${n}`;E=t({op:LispType.InternalBlock,a:a(new CodeString(s),y,!1,l),b:LispType.None});break}}}case"arrayProp":{const e=h.substring(v,m);if(!e.trimStart().length)throw new SyntaxError("Unexpected end of expression");E=c(y,e,void 0,{...l,lispDepth:l.lispDepth+1});break}case"call":E=S.map(e=>i(y,e,[...L,"spreadArray"],void 0,!1,l));break;case"createArray":E=S.map((e,n)=>T[n]?t({op:LispType.Hole,a:LispType.None,b:LispType.None}):i(y,e,[...L,"spreadArray"],void 0,!1,l));break;case"createObject":E=S.map(n=>{let o,s="";if("["===(n=n.trimStart()).char(0)){const e=p(y,n.substring(1),[],"["),r=n.substring(1+e.length+1).trimStart();if(s=i(y,e,L),r.length>0&&":"===r.char(0))o=i(y,r.substring(1));else{if(!(r.length>0&&"("===r.char(0)))throw new SyntaxError("Unexpected token in computed property");o=i(y,new CodeString("function"+r.toString()))}return t({op:LispType.KeyVal,a:s,b:o})}if(C=r.expFunction.types.function.exec("function "+n),C)s=C[3].trimStart(),o=i(y,new CodeString("function "+n.toString().replace(s,"")));else{const t=p(y,n,[/^:/]);s=i(y,t,[...L,"spreadObject"]),isLisp(s)&&s[0]===LispType.SpreadObject?o=e:(s[0]===LispType.Prop&&(s=s[2]),o=n.length>t.length&&":"===n.char(t.length)?i(y,n.substring(t.length+1)):i(y,t,L))}return t({op:LispType.KeyVal,a:s,b:o})})}const A="arrayProp"===f?x[1]?LispType.PropOptional:LispType.Prop:"call"===f?x[1]?LispType.CallOptional:LispType.Call:u[f],O=t({op:A,a:l.lispTree,b:E});A!==LispType.Group&&A!==LispType.CreateArray&&A!==LispType.CreateObject||(O.source=h.substring(v,m).toString()),l.lispTree=i(y,h.substring(m+1),r[g].next,O,!1,l)}),l(["dot","prop"],e=>{const{constants:n,type:o,part:s,res:a,expect:c}=e;let p=a[0],l=a[0].length,d="prop";if("dot"===o){a[1]&&(d="?prop");const e=s.substring(a[0].length).toString().match(r.prop.types.prop);if(!e||!e.length)throw new SyntaxError("Hanging dot");p=e[0],l=p.length+a[0].length}else if(reservedWords.has(p)&&"this"!==p)throw new SyntaxError(`Unexpected token '${p}'`);e.lispTree=i(n,s.substring(l),r[c].next,t({op:u[d],a:e.lispTree,b:p}),!1,e)}),l(["spreadArray","spreadObject"],e=>{const{constants:n,type:o,part:s,res:a,expect:c}=e;e.lispTree=t({op:"spreadArray"===o?LispType.SpreadArray:LispType.SpreadObject,a:LispType.None,b:i(n,s.substring(a[0].length),r[c].next)})})}function registerValueLispTypes({createLisp:e,expectTypes:t,lispify:n,lispifyExpr:r,restOfExp:o,semiColon:s,setLispType:i}){i(["return","throw"],t=>{const{constants:n,type:o,part:s,res:i}=t,a=s.substring(i[0].length);if("throw"===o&&!a.trimStart().length)throw new SyntaxError("Unexpected end of expression");t.lispTree=e({op:"return"===o?LispType.Return:LispType.Throw,a:LispType.None,b:r(n,a,void 0,t)})}),i(["number","boolean","null","und","NaN","Infinity"],r=>{const{constants:o,type:s,part:i,res:a,expect:c}=r;r.lispTree=n(o,i.substring(a[0].length),t[c].next,e({op:"number"===s?a[12]?LispType.BigInt:LispType.Number:LispType.GlobalSymbol,a:LispType.None,b:a[12]?a[1]:a[0]}),!1,r)}),i(["string","literal","regex"],r=>{const{constants:o,type:s,part:i,res:a,expect:c}=r;r.lispTree=n(o,i.substring(a[0].length),t[c].next,e({op:"string"===s?LispType.StringIndex:"literal"===s?LispType.LiteralIndex:LispType.RegexIndex,a:LispType.None,b:a[1]}),!1,r)}),i(["void","await"],r=>{const{constants:s,type:i,part:a,res:c,expect:p}=r,l=o(s,a.substring(c[0].length),[/^([^\s.?\w$]|\?[^.])/]);if(!l.trimStart().length)throw new SyntaxError("Unexpected end of expression");r.lispTree=n(s,a.substring(c[0].length+l.length),t[p].next,e({op:"void"===i?LispType.Void:LispType.Await,a:n(s,l),b:LispType.None}),!1,r)}),i(["yield"],r=>{const{constants:s,part:i,res:a,expect:c,generatorDepth:p}=r;if(0===p)throw new SyntaxError("Unexpected token");const l=a[0].trimEnd().endsWith("*"),d=o(s,i.substring(a[0].length),[/^([^\s.?\w$]|\?[^.])/]);if(l&&!d.trimStart().length)throw new SyntaxError("Unexpected end of expression");r.lispTree=n(s,i.substring(a[0].length+d.length),t[c].next,e({op:l?LispType.YieldDelegate:LispType.Yield,a:n(s,d),b:LispType.None}),!1,r)}),i(["new"],r=>{const{constants:s,part:i,res:a}=r;let c=a[0].length;const p=o(s,i.substring(c),[],void 0,"(");if(!p.trimStart().length)throw new SyntaxError("Unexpected end of expression");c+=p.length+1;const l=[];if("("===i.char(c-1)){const e=o(s,i.substring(c),[],"(");let t;c+=e.length+1;let n=0;for(;(t=o(s,e.substring(n),[/^,/])).length;)n+=t.length+1,l.push(t.trim())}r.lispTree=n(s,i.substring(c),t.expEdge.next,e({op:LispType.New,a:n(s,p,t.initialize.next),b:l.map(e=>n(s,e,t.initialize.next))}),!1,r)})}function registerLispTypes(e){registerStructureLispTypes(e),registerOperatorLispTypes(e),registerConditionalLispTypes(e),registerValueLispTypes(e),registerDeclarationLispTypes(e),registerControlLispTypes(e)}function createLisp(e){return[e.op,e.a,e.b]}var NullLisp=createLisp({op:LispType.None,a:LispType.None,b:LispType.None}),statementLabelRegex=/([a-zA-Z$_][\w$]*)\s*:/g;function extractStatementLabels(e=""){return[...e.matchAll(statementLabelRegex)].map(e=>e[1])}function wrapLabeledStatement(e,t){return e.reduceRight((e,t)=>createLisp({op:LispType.Labeled,a:t,b:e}),t)}var lispTypes=new Map,ParseError=class extends Error{constructor(e,t){super(e+": "+t.substring(0,40)),this.code=t}},lastType,space=/^\s/,expectTypes={splitter:{types:{power:/^(\*\*)(?!=)/,opHigh:/^(\/|\*(?!\*)|%)(?!=)/,op:/^(\+(?!(\+))|-(?!(-)))(?!=)/,comparitor:/^(<=|>=|<(?!<)|>(?!>)|!==|!=(?!=)|===|==)/,bitwiseShift:/^(<<|>>(?!>)|>>>)(?!=)/,bitwiseAnd:/^(&(?!&))(?!=)/,bitwiseXor:/^(\^)(?!=)/,bitwiseOr:/^(\|(?!\|))(?!=)/,boolOpAnd:/^(&&)(?!=)/,boolOpOr:/^(\|\|(?!=)|instanceof(?![\w$])|in(?![\w$]))/,nullishCoalescing:/^\?\?(?!=)/},next:["modifier","value","prop","incrementerBefore"]},inlineIf:{types:{inlineIf:/^\?(?!\.(?!\d))/},next:["expEnd"]},assignment:{types:{assignModify:/^(-=|\+=|\/=|\*\*=|\*=|%=|\^=|&=|\|=|>>>=|>>=|<<=|&&=|\|\|=|\?\?=)/,assign:/^(=)(?!=)/},next:["modifier","value","prop","incrementerBefore"]},incrementerBefore:{types:{incrementerBefore:/^(\+\+|--)/},next:["prop"]},expEdge:{types:{call:/^(\?\.)?[(]/,incrementerAfter:/^(\+\+|--)/,taggedTemplate:/^`(\d+)`/},next:["splitter","assignment","expEdge","dot","inlineIf","expEnd"]},modifier:{types:{not:/^!/,inverse:/^~/,negative:/^-(?!-)/,positive:/^\+(?!\+)/,typeof:/^typeof(?![\w$])/,delete:/^delete(?![\w$])/},next:["modifier","value","prop","incrementerBefore"]},dot:{types:{arrayProp:/^(\?\.)?\[/,dot:/^(\?)?\.(?=\s*[a-zA-Z$_])/},next:["splitter","assignment","expEdge","dot","inlineIf","expEnd"]},prop:{types:{prop:/^[a-zA-Z$_][a-zA-Z\d$_]*/},next:["splitter","assignment","expEdge","dot","inlineIf","expEnd"]},value:{types:{createObject:/^\{/,createArray:/^\[/,number:/^(0b[01]+(_[01]+)*|0o[0-7]+(_[0-7]+)*|0x[\da-f]+(_[\da-f]+)*|(\d+(_\d+)*(\.\d+(_\d+)*)?|\.\d+(_\d+)*))(e[+-]?\d+(_\d+)*)?(n)?(?!\d)/i,string:/^"(\d+)"/,literal:/^`(\d+)`/,regex:/^\/(\d+)\/r(?![\w$])/,boolean:/^(true|false)(?![\w$])/,null:/^null(?![\w$])/,und:/^undefined(?![\w$])/,arrowFunctionSingle:/^(async\s+)?([a-zA-Z$_][a-zA-Z\d$_]*)\s*=>\s*({)?/,arrowFunction:/^(async\s*)?\(\s*([^)(]*?)\s*\)\s*=>\s*({)?/,inlineFunction:/^(async\s+)?function(\*\s*|\s*)([a-zA-Z$_][a-zA-Z\d$_]*)?\s*\(\s*/,yield:/^yield\*(?![\w$])\s*|^yield(?![\w$])\s*/,group:/^\(/,NaN:/^NaN(?![\w$])/,Infinity:/^Infinity(?![\w$])/,void:/^void(?![\w$])\s*/,await:/^await(?![\w$])\s*/,new:/^new(?![\w$])\s*/},next:["splitter","expEdge","dot","inlineIf","expEnd"]},initialize:{types:{initializeDestructure:/^(var|let|const|internal)\s+([{[])/,initialize:/^(var|let|const|internal)\s+([a-zA-Z$_][a-zA-Z\d$_]*)\s*(=)?/,return:/^return(?![\w$])/,throw:/^throw(?![\w$])\s*/},next:["modifier","value","prop","incrementerBefore","expEnd"]},spreadObject:{types:{spreadObject:/^\.\.\./},next:["value","prop"]},spreadArray:{types:{spreadArray:/^\.\.\./},next:["value","prop"]},expEnd:{types:{},next:[]},expFunction:{types:{function:/^(async\s+)?function(\*\s*|\s+)([a-zA-Z$_][a-zA-Z\d$_]*)\s*\(\s*/},next:["expEdge","expEnd"]},expSingle:{types:{for:/^((?:[a-zA-Z$_][\w$]*\s*:\s*)*)\s*for(\s+await)?\s*\(/,do:/^((?:[a-zA-Z$_][\w$]*\s*:\s*)*)\s*do(?![\w$])\s*(\{)?/,while:/^((?:[a-zA-Z$_][\w$]*\s*:\s*)*)\s*while\s*\(/,loopAction:/^(break|continue)(?![\w$])\s*([a-zA-Z$_][\w$]*)?/,if:/^((?:[a-zA-Z$_][\w$]*\s*:\s*)*)\s*if\s*\(/,try:/^((?:[a-zA-Z$_][\w$]*\s*:\s*)*)\s*try\s*{/,block:/^((?:[a-zA-Z$_][\w$]*\s*:\s*)*)\s*{/,switch:/^((?:[a-zA-Z$_][\w$]*\s*:\s*)*)\s*switch\s*\(/},next:["expEnd"]}},closings={"(":")","[":"]","{":"}","'":"'",'"':'"',"`":"`"};function testMultiple(e,t){let n=null;for(let r=0;r<t.length&&(n=t[r].exec(e),!n);r++);return n}var emptyString=new CodeString(""),okFirstChars=/^[+\-~ !]/,aNumber=expectTypes.value.types.number,wordReg=/^((if|for|else|while|do|function)(?![\w$])|[\w$]+)/,semiColon=/^;/,insertedSemicolons=new WeakMap,quoteCache=new WeakMap;function restOfExp(e,t,n,r,o,s,i={},a=0){if(!t.length)return t;if(a>e.maxDepth)throw new SandboxCapabilityError("Maximum expression depth exceeded");i.words=i.words||[];let c=!0;const p=(n=n||[]).includes(semiColon);p&&(n=n.filter(e=>e!==semiColon));const l=insertedSemicolons.get(t.ref)||[],d=quoteCache.get(t.ref)||new Map;if(quoteCache.set(t.ref,d),r&&d.has(t.start-1))return t.substring(0,d.get(t.start-1)-t.start);let u,y=!1,f=!1,h="",x=!1,g=!1,b=!1,S=!1;for(u=0;u<t.length&&!f;u++){let T=t.char(u);if('"'===r||"'"===r||"`"===r){if("`"!==r||"$"!==T||"{"!==t.char(u+1)||y){if(T===r&&!y)return t.substring(0,u)}else{u+=restOfExp(e,t.substring(u+2),[],"{",void 0,void 0,{},a+1).length+2}y=!y&&"\\"===T}else if(closings[T]){if(!g&&l[u+t.start]){if(g=!0,p)break;u--,h=";";continue}if(x&&"{"===T&&(x=!1),T===o){f=!0;break}{const n=restOfExp(e,t.substring(u+1),[],T,void 0,void 0,{},a+1);if(d.set(n.start-1,n.end),u+=n.length+1,c=!1,s){let e;(e=testMultiple(t.substring(u).toString(),s))&&(i.regRes=e,f=!0)}}}else if(r){if(T===closings[r])return t.substring(0,u)}else{let e,r,o=t.substring(u).toString();if(s){let e;if(e=testMultiple(o,s)){i.regRes=e,u++,f=!0;break}}if(r=aNumber.exec(o)){if(u+=r[0].length-1,o=t.substring(u).toString(),s){let e;if(e=testMultiple(o,s)){i.regRes=e,u++,f=!0;break}}}else if(h!=T){let r=null;if(";"===T||l[u+t.start]&&!c&&!g){if(p)r=[";"];else if(l[u+t.start]){g=!0,u--,h=";";continue}T=o=";"}else g=!1;r||(r=testMultiple(o,n)),r&&(f=!0),!f&&(e=wordReg.exec(o))&&(x=!0,e[2]?(b=!0,S=!0):b&&(S?S=!1:i.bodyContentAfterKeyword=!0),e[0].length>1&&(i.words.push(e[1]),i.lastAnyWord=e[1],e[2]&&(i.lastWord=e[2])),e[0].length>2&&(u+=e[0].length-2))}if(c&&(okFirstChars.test(o)?f=!1:c=!1),f)break}h=T}if(r)throw new SyntaxError("Unclosed '"+r+"'");return i&&(i.oneliner=x),t.substring(0,u)}restOfExp.next=["splitter","expEnd","inlineIf"];var startingExecpted=["initialize","expSingle","expFunction","value","modifier","prop","incrementerBefore","expEnd"],setLispType=(e,t)=>{e.forEach(e=>{lispTypes.set(e,t)})};function splitByCommasDestructure(e){const t=[];let n=0,r="";for(let o=0;o<e.length;o++){const s=e[o];"["===s||"{"===s||"("===s?n++:"]"!==s&&"}"!==s&&")"!==s||n--,","===s&&0===n?(t.push(r),r=""):r+=s}return t.push(r),t}function findFirstAtTopLevel(e,t){let n=0;for(let r=0;r<e.length;r++){const o=e[r];if("["===o||"{"===o||"("===o?n++:"]"!==o&&"}"!==o&&")"!==o||n--,o===t&&0===n)return r}return-1}function findPatternEndIdx(e){let t=0;for(let n=0;n<e.length;n++){const r=e[n];if("["===r||"{"===r)t++;else if(("]"===r||"}"===r)&&(t--,0===t))return n+1}return e.length}registerLispTypes({NullLisp:NullLisp,ParseError:ParseError,createLisp:createLisp,emptyString:emptyString,expectTypes:expectTypes,expandDestructure:expandDestructure,expandFunctionParamDestructure:expandFunctionParamDestructure,extractStatementLabels:extractStatementLabels,findPatternEndIdx:findPatternEndIdx,getDestructurePatternSource:getDestructurePatternSource,insertSemicolons:insertSemicolons,lispify:lispify,lispifyBlock:lispifyBlock,lispifyExpr:lispifyExpr,lispifyFunction:lispifyFunction,lispifyReturnExpr:lispifyReturnExpr,restOfExp:restOfExp,semiColon:semiColon,setLispType:setLispType,splitByCommasDestructure:splitByCommasDestructure,startingExecpted:startingExecpted,wrapLabeledStatement:wrapLabeledStatement});var validIdentifier=/^[a-zA-Z$_][a-zA-Z\d$_]*$/;function assertIdentifier(e){if(!validIdentifier.test(e))throw new SyntaxError(`Invalid destructuring target: '${e}'`);return e}function expandDestructure(e,t,n){const r=[];function o(){return`$$_d${Math.random().toString(36).slice(2)}`}function s(t,n){(t=t.trim()).startsWith("[")?function(t,n){const i=splitByCommasDestructure(t);for(let a=0;a<i.length;a++){const t=i[a].trim();if(!t)continue;if(t.startsWith("...")){const i=t.slice(3).trim();if(i.startsWith("[")||i.startsWith("{")){const e=o();r.push(`internal ${e} = ${n}.slice(${a})`),s(i,e)}else r.push(`${e} ${assertIdentifier(i)} = ${n}.slice(${a})`);break}const c=findFirstAtTopLevel(t,"="),p=-1!==c?t.slice(0,c).trim():t.trim(),l=-1!==c?t.slice(c+1).trim():void 0;if(p.startsWith("[")||p.startsWith("{")){const e=o();r.push(void 0!==l?`internal ${e} = ${n}[${a}] !== undefined ? ${n}[${a}] : (${l})`:`internal ${e} = ${n}[${a}]`),s(p,e)}else r.push(void 0!==l?`${e} ${assertIdentifier(p)} = ${n}[${a}] !== undefined ? ${n}[${a}] : (${l})`:`${e} ${assertIdentifier(p)} = ${n}[${a}]`)}}(t.slice(1,-1),n):t.startsWith("{")&&function(t,n){const i=splitByCommasDestructure(t),a=[];for(const c of i){const t=c.trim();if(!t)continue;if(t.startsWith("...")){const p=i.indexOf(c);if(i.slice(p+1).some(e=>e.trim().length>0))throw new SyntaxError("Rest element must be last element");const l=t.slice(3).trim(),d=o(),u=o(),y=o(),f=a.map(e=>`${assertIdentifier(e)}:1`).join(",");r.push(`internal ${d} = {${f}}`),r.push(`internal ${y} = {}`),r.push(`for (internal ${u} in ${n}) { if (!(${u} in ${d})) { ${y}[${u}] = ${n}[${u}] } }`),l.startsWith("[")||l.startsWith("{")?s(l,y):r.push(`${e} ${assertIdentifier(l)} = ${y}`);break}if(t.startsWith("[")){let i=-1,a=1;for(let e=1;e<t.length;e++)if("["===t[e])a++;else if("]"===t[e]&&(a--,0===a)){i=e;break}if(-1!==i){const a=t.slice(1,i),c=t.slice(i+1).trim();if(c.startsWith(":")){const t=c.slice(1).trim(),i=`${n}[${a}]`,p=findFirstAtTopLevel(t,"="),l=-1===p||t.slice(0,p).trim().match(/^[[{]/)?t.trim():t.slice(0,p).trim(),d=-1===p||t.slice(0,p).trim().match(/^[[{]/)?void 0:t.slice(p+1).trim();if(l.startsWith("[")||l.startsWith("{")){const e=o();r.push(void 0!==d?`internal ${e} = ${i} !== undefined ? ${i} : (${d})`:`internal ${e} = ${i}`),s(l,e)}else r.push(void 0!==d?`${e} ${assertIdentifier(l)} = ${i} !== undefined ? ${i} : (${d})`:`${e} ${assertIdentifier(l)} = ${i}`)}}continue}const p=findFirstAtTopLevel(t,":");if(-1!==p){const i=assertIdentifier(t.slice(0,p).trim()),c=t.slice(p+1).trim();a.push(i);const l=`${n}.${i}`,d=findFirstAtTopLevel(c,"="),u=-1!==d?c.slice(0,d).trim():c.trim(),y=u.startsWith("[")||u.startsWith("{"),f=y?c.trim():u,h=y||-1===d?void 0:c.slice(d+1).trim();if(f.startsWith("[")||f.startsWith("{")){const e=findPatternEndIdx(f),t=f.slice(0,e),n=f.slice(e).trim(),i=n.startsWith("=")?n.slice(1).trim():void 0,a=o();r.push(void 0!==i?`internal ${a} = ${l} !== undefined ? ${l} : (${i})`:`internal ${a} = ${l}`),s(t,a)}else r.push(void 0!==h?`${e} ${assertIdentifier(f)} = ${l} !== undefined ? ${l} : (${h})`:`${e} ${assertIdentifier(f)} = ${l}`);continue}const l=findFirstAtTopLevel(t,"=");if(-1!==l){const o=assertIdentifier(t.slice(0,l).trim()),s=t.slice(l+1).trim();a.push(o),r.push(`${e} ${o} = ${n}.${o} !== undefined ? ${n}.${o} : (${s})`)}else assertIdentifier(t),a.push(t),r.push(`${e} ${t} = ${n}.${t}`)}}(t.slice(1,-1),n)}const i=o();return r.unshift(`var ${i} = (${n})`),s(t,i),r.join("; ")}function getDestructurePatternSource(e){if(!isLisp(e))return null;const t=e.source?.trim();return t&&(t.startsWith("[")||t.startsWith("{"))?t:e[0]===LispType.Group?getDestructurePatternSource(e[2]):null}function expandFunctionParamDestructure(e,t){const n=[],r=e.map((e,t)=>{const r=e.trim();if(r.startsWith("[")||r.startsWith("{")){const e=`$$_p${t}`,o=findPatternEndIdx(r),s=r.slice(0,o),i=r.slice(o).trim();if(i.startsWith("=")){const t=i.slice(1).trim();n.push(expandDestructure("const",s,`${e} !== undefined ? ${e} : (${t})`))}else n.push(expandDestructure("const",s,e));return e}const o=findFirstAtTopLevel(r,"=");if(-1!==o&&!r.startsWith("...")){const e=r.slice(0,o).trim(),t=r.slice(o+1).trim();return n.push(`if (${e} === undefined) ${e} = (${t})`),e}return r});return 0===n.length?{args:r,body:t}:{args:r,body:n.join("; ")+"; "+t}}function lispify(e,t,n,r,o=!1,s={generatorDepth:0,asyncDepth:0,lispDepth:0}){if(s.lispDepth>e.maxDepth)throw new SandboxCapabilityError("Maximum expression depth exceeded");const{generatorDepth:i,asyncDepth:a,lispDepth:c}=s;if(r=r||NullLisp,n=n||expectTypes.initialize.next,void 0===t)return r;const p=(t=t.trimStart()).toString();if(!t.length&&!n.includes("expEnd"))throw new SyntaxError("Unexpected end of expression");if(!t.length)return r;const l={constants:e,type:"",part:t,res:[],expect:"",lispTree:r,generatorDepth:i,asyncDepth:a,lispDepth:c};let d;for(const y of n)if("expEnd"!==y){for(const e in expectTypes[y].types)if("expEnd"!==e&&(d=expectTypes[y].types[e].exec(p))){lastType=e,l.type=e,l.part=t,l.res=d,l.expect=y;try{lispTypes.get(e)?.(l)}catch(u){if(o&&u instanceof SyntaxError)throw new ParseError(u.message,p);throw u}break}if(d)break}if(!d&&t.length){if(o)throw new ParseError(`Unexpected token after ${lastType}: ${t.char(0)}`,p);throw new SyntaxError(`Unexpected token after ${lastType}: ${t.char(0)}`)}return l.lispTree}var startingExpectedWithoutSingle=startingExecpted.filter(e=>"expSingle"!==e);function lispifyExpr(e,t,n,r={generatorDepth:0,asyncDepth:0,lispDepth:0}){if(r.lispDepth>e.maxDepth)throw new SandboxCapabilityError("Maximum expression depth exceeded");if(!t.trimStart().length)return NullLisp;const o=[];let s,i=0;if((n=n||expectTypes.initialize.next).includes("expSingle")&&testMultiple(t.toString(),Object.values(expectTypes.expSingle.types)))return lispify(e,t,["expSingle"],void 0,!0,r);for(n===startingExecpted&&(n=startingExpectedWithoutSingle);(s=restOfExp(e,t.substring(i),[/^,/])).length;)o.push(s.trimStart()),i+=s.length+1;if(1===o.length)return lispify(e,t,n,void 0,!0,r);if(n.includes("initialize")){const s=expectTypes.initialize.types.initialize.exec(o[0].toString());if(s)return createLisp({op:LispType.InternalBlock,a:o.map((t,n)=>lispify(e,n?new CodeString(s[1]+" "+t):t,["initialize"],void 0,!0,r)),b:LispType.None});if(expectTypes.initialize.types.return.exec(o[0].toString()))return lispify(e,t,n,void 0,!0,r)}const a=o.map(t=>lispify(e,t,n,void 0,!0,r));return createLisp({op:LispType.Expression,a:a,b:LispType.None})}function lispifyReturnExpr(e,t){return createLisp({op:LispType.Return,a:LispType.None,b:lispifyExpr(e,t)})}function lispifyBlock(e,t,n=!1,r={generatorDepth:0,asyncDepth:0,lispDepth:0}){if(!(e=insertSemicolons(t,e)).trim().length)return[];const o=[];let s,i=0,a=0,c={},p=!1,l=!1;for(;(s=restOfExp(t,e.substring(i),[semiColon],void 0,void 0,void 0,c)).length&&(l=!(!e.char(i+s.length)||";"===e.char(i+s.length)),i+=s.length+(l?0:1),/^\s*else(?![\w$])/.test(e.substring(i).toString())||c.words?.includes("do")&&/^\s*while(?![\w$])/.test(e.substring(i).toString())?p=!0:(p=!1,o.push(e.substring(a,i-(l?0:1))),a=i),c={},!n););return p&&o.push(e.substring(a,i-(l?0:1))),o.map(e=>e.trimStart()).filter(e=>e.length).map(e=>lispifyExpr(t,e.trimStart(),startingExecpted,r))}function lispifyFunction(e,t,n=!1,r={generatorDepth:0,asyncDepth:0,lispDepth:0}){if(!e.trim().length)return[];const o=lispifyBlock(e,t,n,r);return hoist(o),o}function hoist(e,t=[]){if(isLisp(e)){if(!isLisp(e))return!1;const[n,r,o]=e;if(n===LispType.Labeled||n===LispType.Try||n===LispType.If||n===LispType.Loop||n===LispType.Switch)hoist(r,t),hoist(o,t);else if(n===LispType.Var)t.push(createLisp({op:LispType.Var,a:r,b:LispType.None}));else if(n===LispType.Function&&r[2])return t.push(e),!0}else if(Array.isArray(e)){const n=[];for(const r of e)hoist(r,t)||n.push(r);n.length!==e.length&&(e.length=0,e.push(...t,...n))}return!1}var closingsNoInsertion=/^(\})\s*(catch|finally|else|while|instanceof)(?![\w$])/,colonsRegex=/^((([\w$\])"'`]|\+\+|--)\s*\r?\n\s*([\w$+\-!~]))|(\}\s*[\w$!~+\-{("'`]))/;function insertSemicolons(e,t){let n=t,r=emptyString,o={},s=!1;const i=insertedSemicolons.get(t.ref)||new Array(t.ref.str.length);for(;(r=restOfExp(e,n,[],void 0,void 0,[colonsRegex],o)).length;){let e=!1,t=r,a=r.length;if(o.regRes){e=!0;const[,,i,,,c]=o.regRes;if(a="++"===o.regRes[3]||"--"===o.regRes[3]?r.length+1:r.length,t=n.substring(0,a),c){const t=closingsNoInsertion.exec(n.substring(r.length-1).toString());t?"while"===t[2]?"do"===o.lastWord?(e=!1,s=!0):e=!0:e=!1:"function"===o.lastWord&&"}"===o.regRes[5][0]&&"("===o.regRes[5].slice(-1)&&(e=!1)}else i&&(s&&"while"===o.lastWord?(e=!0,s=!1):"if"!==o.lastWord&&"while"!==o.lastWord&&"for"!==o.lastWord&&"else"!==o.lastWord||(e=!!o.bodyContentAfterKeyword))}e&&(i[t.end]=!0),n=n.substring(a),o={}}return insertedSemicolons.set(t.ref,i),t}function checkRegex(e){let t=1,n=!1,r=!1,o=!1;for(;t<e.length&&!r&&!o;)r="/"===e[t]&&!n,n="\\"===e[t]&&!n,o="\n"===e[t],t++;const s=e.substring(t);if(o=o||!r||/^\s*\d/.test(s),o)return null;const i=/^[a-z]*/.exec(s);if(/^\s+[\w$]/.test(e.substring(t+i[0].length)))return null;const a=e.substring(1,t-1),c=i&&i[0]||"";try{new RegExp(a,c)}catch(p){if(p instanceof SyntaxError)throw p}return{regex:a,flags:c,length:t+(i&&i[0].length||0)}}var notDivide=/(typeof|delete|instanceof|return|in|of|throw|new|void|do|if)$/,possibleDivide=/^([\w$\])]|\+\+|--)[\s/]/;function extractConstants(e,t,n="",r=0){if(r>e.maxDepth)throw new SandboxCapabilityError("Maximum expression depth exceeded");let o,s,i=[],a=!1,c="",p=-1,l=[],d="";const u=[],y=[];let f=null,h=0;for(h=0;h<t.length;h++)if(d=t[h],c)d===c&&("*"===c&&"/"===t[h+1]?(c="",h++):"\n"===c&&(c="",u.push("\n")));else{if(a){a=!1,i.push(d);continue}if(o)if("`"===o&&"$"===d&&"{"===t[h+1]){const n=extractConstants(e,t.substring(h+2),"{",r+1);if(!n.str.trim().length)throw new SyntaxError("Unexpected end of expression");l.push(n.str),i.push("${",l.length-1,"}"),h+=n.length+2}else if(o===d){if("`"===o){const t=createLisp({op:LispType.Literal,a:unraw(i.join("")),b:[]});t.tempJsStrings=l,e.literals.push(t),u.push("`",e.literals.length-1,"`")}else e.strings.push(unraw(i.join(""))),u.push('"',e.strings.length-1,'"');o=null,i=[]}else i.push(d);else{if("'"===d||'"'===d||"`"===d)l=[],o=d;else{if(closings[n]===d&&!y.length)return{str:u.join(""),length:h};closings[d]?(y.push(d),u.push(d)):closings[y[y.length-1]]===d?(y.pop(),u.push(d)):"/"!==d||"*"!==t[h+1]&&"/"!==t[h+1]?"/"===d&&!f&&(s=checkRegex(t.substring(h)))?(e.regexes.push(s),u.push("/",e.regexes.length-1,"/r"),h+=s.length-1):u.push(d):(c="*"===t[h+1]?"*":"\n",p=h)}f&&space.test(d)||(f=possibleDivide.exec(t.substring(h)))&&notDivide.test(t.substring(0,h+f[1].length))&&(f=null)}a=!(!o||"\\"!==d)}if(o)throw new SyntaxError(`Unclosed '${o}'`);if(c&&"*"===c)throw new SyntaxError(`Unclosed comment '/*': ${t.substring(p)}`);return{str:u.join(""),length:h}}function parse(e,t=!1,n=!1,r=256){if("string"!=typeof e)throw new ParseError(`Cannot parse ${e}`,String(e));let o=" "+e;const s={strings:[],literals:[],regexes:[],eager:t,maxDepth:r};o=extractConstants(s,o).str;for(const i of s.literals)i[2]=i.tempJsStrings.map(e=>lispifyExpr(s,new CodeString(e))),delete i.tempJsStrings;return{tree:lispifyFunction(new CodeString(o),s,n),constants:s}}function createEvalContext(){return{sandboxFunction:sandboxFunction,sandboxAsyncFunction:sandboxAsyncFunction,sandboxGeneratorFunction:sandboxGeneratorFunction,sandboxAsyncGeneratorFunction:sandboxAsyncGeneratorFunction,sandboxedSymbol:sandboxedSymbol,sandboxedEval:sandboxedEval,sandboxedSetTimeout:sandboxedSetTimeout,sandboxedSetInterval:sandboxedSetInterval,sandboxedClearTimeout:sandboxedClearTimeout,sandboxedClearInterval:sandboxedClearInterval,lispifyFunction:lispifyFunction}}function sandboxedSymbol(e){return getSandboxSymbolCtor(e.ctx.sandboxSymbols)}function SB(){}function sandboxFunction(e){return SandboxFunction.prototype=SB.prototype,SandboxFunction;function SandboxFunction(...t){const n=parse(t.pop()||"",!1,!1,e.ctx.options.maxParserRecursionDepth);return createFunction(t,n.tree,e.ctx.ticks,{...e,constants:n.constants,tree:n.tree},void 0,"anonymous")}}function SAF(){}function sandboxAsyncFunction(e){return SandboxAsyncFunction.prototype=SAF.prototype,SandboxAsyncFunction;function SandboxAsyncFunction(...t){const n=parse(t.pop()||"",!1,!1,e.ctx.options.maxParserRecursionDepth);return createFunctionAsync(t,n.tree,e.ctx.ticks,{...e,constants:n.constants,tree:n.tree},void 0,"anonymous")}}function SGF(){}function sandboxGeneratorFunction(e){return SandboxGeneratorFunction.prototype=SGF.prototype,SandboxGeneratorFunction;function SandboxGeneratorFunction(...t){const n=parse(t.pop()||"",!1,!1,e.ctx.options.maxParserRecursionDepth);return createGeneratorFunction(t,n.tree,e.ctx.ticks,{...e,constants:n.constants,tree:n.tree},void 0,"anonymous")}}function SAGF(){}function sandboxAsyncGeneratorFunction(e){return SandboxAsyncGeneratorFunction.prototype=SAGF.prototype,SandboxAsyncGeneratorFunction;function SandboxAsyncGeneratorFunction(...t){const n=parse(t.pop()||"",!1,!1,e.ctx.options.maxParserRecursionDepth);return createAsyncGeneratorFunction(t,n.tree,e.ctx.ticks,{...e,constants:n.constants,tree:n.tree},void 0,"anonymous")}}function SE(){}function sandboxedEval(e,t){return n.prototype=SE.prototype,n;function n(e){const n=parse(e,!1,!1,t.ctx.options.maxParserRecursionDepth),r=wrapLastStatementInReturn(n.tree);return createFunction([],r,t.ctx.ticks,{...t,constants:n.constants,tree:r},void 0,"anonymous")()}}function wrapLastStatementInReturn(e){if(0===e.length)return e;const t=[...e],n=t.length-1,r=t[n];if(Array.isArray(r)&&r.length>=1){const e=r[0];if(e===LispType.Return||e===LispType.Throw)return t;if([LispType.Let,LispType.Const,LispType.Var,LispType.Function,LispType.If,LispType.Loop,LispType.Try,LispType.Switch,LispType.InternalBlock,LispType.Expression].includes(e))return t;t[n]=[LispType.Return,LispType.None,r]}return t}function sST(){}function sandboxedSetTimeout(e,t){return n.prototype=sST.prototype,n;function n(n,r,...o){const s=t.ctx.sandbox,i=(...t)=>{const r="string"==typeof n?e(n):n;return d.unsubscribe(),u.unsubscribe(),s.setTimeoutHandles.delete(a),r(...t)},a=++s.timeoutHandleCounter;let c=Date.now(),p=setTimeout(i,r,...o),l=0;const d=s.subscribeHalt(()=>{l=Date.now()-c+l,clearTimeout(p)}),u=s.subscribeResume(()=>{c=Date.now();const e=Math.floor((r||0)-l);p=setTimeout(i,e,...o),s.setTimeoutHandles.set(a,{handle:p,haltsub:d,contsub:u})});return s.setTimeoutHandles.set(a,{handle:p,haltsub:d,contsub:u}),a}}function sCT(){}function sandboxedClearTimeout(e){return t.prototype=sCT.prototype,t;function t(t){const n=e.ctx.sandbox,r=n.setTimeoutHandles.get(t);r&&(clearTimeout(r.handle),r.haltsub.unsubscribe(),r.contsub.unsubscribe(),n.setTimeoutHandles.delete(t))}}function sCI(){}function sandboxedClearInterval(e){return t.prototype=sCI.prototype,t;function t(t){const n=e.ctx.sandbox,r=n.setIntervalHandles.get(t);r&&(clearInterval(r.handle),clearTimeout(r.handle),r.haltsub.unsubscribe(),r.contsub.unsubscribe(),n.setIntervalHandles.delete(t))}}function sSI(){}function sandboxedSetInterval(e,t){return n.prototype=sSI.prototype,n;function n(n,r,...o){const s=t.ctx.sandbox,i="string"==typeof n?e(n):n,a=(...e)=>(p=Date.now(),d=0,i(...e)),c=++s.timeoutHandleCounter;let p=Date.now(),l=setInterval(a,r,...o),d=0;const u=s.subscribeHalt(()=>{d=Date.now()-p+d,clearInterval(l),clearTimeout(l)}),y=s.subscribeResume(()=>{p=Date.now(),l=setTimeout(()=>{p=Date.now(),d=0,l=setInterval(a,r,...o),f.handle=l,a(...o)},Math.floor((r||0)-d),...o),f.handle=l}),f={handle:l,haltsub:u,contsub:y};return s.setIntervalHandles.set(c,f),c}}function subscribeSet(e,t,n,r){const o=r.setSubscriptions.get(e)||new Map;r.setSubscriptions.set(e,o);const s=o.get(t)||new Set;let i;o.set(t,s),s.add(n);const a=e[t];return a instanceof Object&&(i=r.changeSubscriptions.get(a)||new Set,i.add(n),r.changeSubscriptions.set(a,i)),{unsubscribe:()=>{s.delete(n),i?.delete(n)}}}var SandboxExec=class e{constructor(t,n){this.evalContext=n,this.setSubscriptions=new WeakMap,this.changeSubscriptions=new WeakMap,this.sandboxFunctions=new WeakMap,this.haltSubscriptions=new Set,this.resumeSubscriptions=new Set,this.halted=!1,this.timeoutHandleCounter=0,this.setTimeoutHandles=new Map,this.setIntervalHandles=new Map;const r=Object.assign({audit:!1,forbidFunctionCalls:!1,forbidFunctionCreation:!1,globals:e.SAFE_GLOBALS,symbolWhitelist:e.SAFE_SYMBOLS,prototypeWhitelist:e.SAFE_PROTOTYPES,maxParserRecursionDepth:256,nonBlocking:!1,functionReplacements:new Map},t||{});this.context=createContext(this,r)}static get SAFE_GLOBALS(){return{globalThis:globalThis,Function:Function,eval:eval,console:{debug:console.debug,error:console.error,info:console.info,log:console.log,table:console.table,warn:console.warn},isFinite:isFinite,isNaN:isNaN,parseFloat:parseFloat,parseInt:parseInt,decodeURI:decodeURI,decodeURIComponent:decodeURIComponent,encodeURI:encodeURI,encodeURIComponent:encodeURIComponent,escape:escape,unescape:unescape,Boolean:Boolean,Number:Number,BigInt:BigInt,String:String,Object:Object,Array:Array,Symbol:Symbol,Error:Error,EvalError:EvalError,RangeError:RangeError,ReferenceError:ReferenceError,SyntaxError:SyntaxError,TypeError:TypeError,URIError:URIError,Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,Map:Map,Set:Set,WeakMap:WeakMap,WeakSet:WeakSet,Promise:Promise,Intl:Intl,JSON:JSON,Math:Math,Date:Date,RegExp:RegExp}}static get SAFE_SYMBOLS(){const e={};for(const t of["asyncIterator","iterator","match","matchAll","replace","search","split"]){const n=Symbol[t];"symbol"==typeof n&&(e[t]=n)}return e}static get SAFE_PROTOTYPES(){const e=[Function,Boolean,Number,BigInt,String,Date,Error,Array,Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Map,Set,WeakMap,WeakSet,Promise,Symbol,Date,RegExp,Response,Request,Headers,FormData],t=new Map;return e.forEach(e=>{t.set(e,new Set)}),t.set(Object,new Set(["constructor","name","entries","fromEntries","getOwnPropertyNames","is","keys","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf","values"])),t}subscribeGet(e,t){return t.getSubscriptions.add(e),{unsubscribe:()=>t.getSubscriptions.delete(e)}}subscribeSet(e,t,n,r){return subscribeSet(e,t,n,r)}subscribeSetGlobal(e,t,n){return subscribeSet(e,t,n,this)}subscribeHalt(e){return this.haltSubscriptions.add(e),{unsubscribe:()=>{this.haltSubscriptions.delete(e)}}}subscribeResume(e){return this.resumeSubscriptions.add(e),{unsubscribe:()=>{this.resumeSubscriptions.delete(e)}}}haltExecution(e={type:"manual"}){if(!this.halted){this.halted=!0;for(const t of this.haltSubscriptions)t(e)}}resumeExecution(){if(this.halted){if(void 0!==this.context.ticks.tickLimit&&this.context.ticks.ticks>=this.context.ticks.tickLimit)throw new SandboxExecutionQuotaExceededError("Cannot resume execution: tick limit exceeded");this.halted=!1;for(const e of this.resumeSubscriptions)e()}}getContext(e){return this.sandboxFunctions.get(e)}executeTree(e,t=[]){return executeTree(e.ctx.ticks,e,e.tree,t,void 0,!1)}executeTreeAsync(e,t=[]){return executeTreeAsync(e.ctx.ticks,e,e.tree,t,void 0,!1)}},Sandbox=class extends SandboxExec{constructor(e){super(e,createEvalContext())}static audit(e,t=[]){const n={};for(const o of Object.getOwnPropertyNames(globalThis))n[o]=globalThis[o];const r=new SandboxExec({globals:n,audit:!0});return r.executeTree(createExecContext(r,parse(e,!0,!1,r.context.options.maxParserRecursionDepth),createEvalContext()),t)}static parse(e){return parse(e,!0)}get Function(){return createExecContext(this,{tree:[],constants:{strings:[],eager:!0,literals:[],maxDepth:this.context.options.maxParserRecursionDepth,regexes:[]}},this.evalContext).evals.get(Function)}get AsyncFunction(){return createExecContext(this,{tree:[],constants:{strings:[],eager:!0,literals:[],maxDepth:this.context.options.maxParserRecursionDepth,regexes:[]}},this.evalContext).evals.get(AsyncFunction)}get eval(){return createExecContext(this,{tree:[],constants:{strings:[],eager:!0,literals:[],maxDepth:this.context.options.maxParserRecursionDepth,regexes:[]}},this.evalContext).evals.get(eval)}compile(e,t=!1){if(this.context.options.nonBlocking)throw new SandboxCapabilityError("Non-blocking mode is enabled, use Sandbox.compileAsync() instead.");const n=createExecContext(this,parse(e,t,!1,this.context.options.maxParserRecursionDepth),this.evalContext);return(...e)=>(sanitizeScopes(e,n),{context:n,run:()=>this.executeTree(n,[...e]).result})}compileAsync(e,t=!1){const n=createExecContext(this,parse(e,t,!1,this.context.options.maxParserRecursionDepth),this.evalContext);return(...e)=>(sanitizeScopes(e,n),{context:n,run:()=>this.executeTreeAsync(n,[...e]).then(e=>e.result)})}compileExpression(e,t=!1){const n=createExecContext(this,parse(e,t,!0,this.context.options.maxParserRecursionDepth),this.evalContext);return(...e)=>(sanitizeScopes(e,n),{context:n,run:()=>this.executeTree(n,[...e]).result})}compileExpressionAsync(e,t=!1){const n=createExecContext(this,parse(e,t,!0,this.context.options.maxParserRecursionDepth),this.evalContext);return(...e)=>({context:n,run:()=>this.executeTreeAsync(n,[...e]).then(e=>e.result)})}};exports.LocalScope=LocalScope,exports.ParseError=ParseError,exports.Sandbox=Sandbox,exports.default=Sandbox,exports.SandboxAccessError=SandboxAccessError,exports.SandboxCapabilityError=SandboxCapabilityError,exports.SandboxError=SandboxError,exports.SandboxExecutionQuotaExceededError=SandboxExecutionQuotaExceededError,exports.SandboxExecutionTreeError=SandboxExecutionTreeError,exports.delaySynchronousResult=delaySynchronousResult});
2
+ //# sourceMappingURL=Sandbox.min.js.map