@mojir/dvala 0.0.9 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/cli.js +71 -23
- package/dist/cli/src/evaluator/effectTypes.d.ts +19 -1
- package/dist/cli/src/evaluator/suspension.d.ts +6 -0
- package/dist/cli/src/evaluator/trampoline.d.ts +5 -0
- package/dist/debug.esm.js +1 -1
- package/dist/debug.esm.js.map +1 -1
- package/dist/debug.js +1 -1
- package/dist/debug.js.map +1 -1
- package/dist/dvala.iife.js +1 -1
- package/dist/dvala.iife.js.map +1 -1
- package/dist/full.esm.js +1 -1
- package/dist/full.esm.js.map +1 -1
- package/dist/full.js +1 -1
- package/dist/full.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/server.js +116 -69
- package/dist/mcp-server/src/evaluator/effectTypes.d.ts +19 -1
- package/dist/mcp-server/src/evaluator/suspension.d.ts +6 -0
- package/dist/mcp-server/src/evaluator/trampoline.d.ts +5 -0
- package/dist/modules/src/evaluator/effectTypes.d.ts +19 -1
- package/dist/modules/src/evaluator/suspension.d.ts +6 -0
- package/dist/modules/src/evaluator/trampoline.d.ts +5 -0
- package/dist/modules/src/index.d.ts +2 -0
- package/dist/modules/src/retrigger.d.ts +39 -0
- package/dist/src/evaluator/effectTypes.d.ts +19 -1
- package/dist/src/evaluator/suspension.d.ts +6 -0
- package/dist/src/evaluator/trampoline.d.ts +5 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/retrigger.d.ts +39 -0
- package/dist/testFramework.esm.js +1 -1
- package/dist/testFramework.esm.js.map +1 -1
- package/dist/testFramework.js +1 -1
- package/dist/testFramework.js.map +1 -1
- package/package.json +1 -1
package/dist/dvala.iife.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var Dvala=function(e){"use strict";function n(e){if(!e.position||!e.code)return"";const n=e.position.column-1,t=e.code.length-n-1;return`${" ".repeat(Math.max(n,0))}^${" ".repeat(Math.max(t,0))}`}class t extends Error{params;constructor(e){super(`recur, params: ${e}`),Object.setPrototypeOf(this,t.prototype),this.name="RecurSignal",this.params=e}}class r extends Error{sourceCodeInfo;shortMessage;constructor(e,t){const o=e instanceof Error?e.message:`${e}`;super(function(e,t){if(!t)return e;const r=`${t.position.line}:${t.position.column}`;return`${e}${t.filePath?`\n${t.filePath}:${r}`:`\nLocation ${r}`}\n${t.code}\n${n(t)}`}(o,t)),this.shortMessage=o,this.sourceCodeInfo=t,Object.setPrototypeOf(this,r.prototype),this.name="DvalaError"}getCodeMarker(){return this.sourceCodeInfo&&n(this.sourceCodeInfo)}}class o extends r{userMessage;constructor(e,n){super(e,n),this.userMessage=e,Object.setPrototypeOf(this,o.prototype),this.name="UserDefinedError"}}class i extends r{constructor(e,n){super(e,n),Object.setPrototypeOf(this,i.prototype),this.name="AssertionError"}}class a extends r{symbol;constructor(e,n){super(`Undefined symbol '${e}'.`,n),this.symbol=e,Object.setPrototypeOf(this,a.prototype),this.name="UndefinedSymbolError"}}const s={Number:1,String:2,NormalExpression:3,SpecialExpression:4,UserDefinedSymbol:5,NormalBuiltinSymbol:6,SpecialBuiltinSymbol:7,ReservedSymbol:8,Binding:9,Spread:10},u=new Set(Object.values(s));function l(e){return Object.keys(s).find(n=>s[n]===e)}const c=new Set(["UserDefined","Partial","Comp","Constantly","Juxt","Complement","EveryPred","SomePred","Fnull","EffectMatcher","Builtin","SpecialBuiltin","Module"]);const f="^^fn^^",d="^^re^^",p="^^ef^^";function h(e){return null!==e&&"object"==typeof e&&(f in e&&"functionType"in e&&function(e){return"string"==typeof e&&c.has(e)}(e.functionType))}function y(e){return!(!Array.isArray(e)||e.length<2)&&function(e){return"number"==typeof e&&u.has(e)}(e[0])}function m(e){return h(e)?`<function ${e.name||"λ"}>`:y(e)?`${l(e[0])}-node`:null===e?"null":"object"==typeof e&&e instanceof RegExp?`${e}`:"object"==typeof e&&e instanceof Error?e.toString():JSON.stringify(e)}function v(e,n){return e?.sourceCodeInfo??n}function g(e,n,t){return new r(`Expected ${e}, got ${m(n)}.`,v(n,t))}function b(e,n){return w(e,n),e}function w(e,n){if(!function(e){return void 0!==e}(e))throw new r("Unexpected undefined",v(e,n))}function x(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function k(e){return null!==e&&"object"==typeof e&&!!e[f]}function E(e,n){if(!k(e))throw g("DvalaFunction",e,n)}function S(e){return k(e)&&"UserDefined"===e.functionType}function I(e,n){if(!S(e))throw g("UserDefinedFunction",e,n)}function N(e){return void 0!==e}function P(e,n){return $(e,n),e}function $(e,n){if(!N(e))throw g("not undefined",e,n)}function A(e){return Array.isArray(e)||"string"==typeof e}function C(e,n){if(!A(e))throw g("string or array",e,n)}function j(e){return!(null===e||"object"!=typeof e||Array.isArray(e)||e instanceof RegExp||k(e)||V(e)||T(e))}function O(e,n){if(!j(e))throw g("object",e,n)}function M(e){return A(e)||j(e)}function U(e,n){if(!M(e))throw g("string, array or object",e,n)}function V(e){return null!==e&&"object"==typeof e&&!!e[d]}function R(e,n){if(!function(e){return V(e)||"string"==typeof e}(e))throw g("string or RegularExpression",e,n)}function T(e){return null!==e&&"object"==typeof e&&!!e[p]}function B(e,n){if(!T(e))throw g("Effect",e,n)}function D(e,n){return _(e,n),e}function _(e,n){if(!function(e){return"number"==typeof e||!!M(e)||!!k(e)}(e))throw g("FunctionLike",e,n)}function F(e,n={}){return"string"==typeof e&&((!n.nonEmpty||0!==e.length)&&(!n.char||1===e.length))}function L(e,n,t={}){if(!F(e,t))throw g(""+(t.nonEmpty?"non empty string":t.char?"character":"string"),e,n)}function q(e,n,t={}){return L(e,n,t),e}function z(e){return"string"==typeof e||"number"==typeof e}function W(e,n){return K(e,n),e}function K(e,n){if(!z(e))throw g("string or number",e,n)}const Y={assert:{evaluate:(e,n)=>{const t=e[0],r=2===e.length?e[1]:`${t}`;if(L(r,n),!t)throw new i(r,n);return P(t,n)},arity:{min:1,max:2}}};function G(e,n={}){return"number"==typeof e&&(!Number.isNaN(e)&&(!(n.integer&&!Number.isInteger(e))&&(!(n.finite&&!Number.isFinite(e))&&((!n.zero||0===e)&&((!n.nonZero||0!==e)&&(!(n.positive&&e<=0)&&(!(n.negative&&e>=0)&&(!(n.nonPositive&&e>0)&&(!(n.nonNegative&&e<0)&&(!("number"==typeof n.gt&&e<=n.gt)&&(!("number"==typeof n.gte&&e<n.gte)&&(!("number"==typeof n.lt&&e>=n.lt)&&!("number"==typeof n.lte&&e>n.lte)))))))))))))}function H(e,n,t={}){if(!G(e,t))throw new r(`Expected ${function(e){if(e.zero)return"zero";const n=function(e){return e.positive?"positive":e.negative?"negative":e.nonNegative?"non negative":e.nonPositive?"non positive":e.nonZero?"non zero":""}(e),t=e.integer?"integer":"number",r=e.finite?"finite":"",o=function(e){return"number"!=typeof e.gt&&"number"!=typeof e.gte||"number"!=typeof e.lt&&"number"!=typeof e.lte?"number"==typeof e.gt||"number"==typeof e.gte?"number"==typeof e.gt?`n > ${e.gt}`:`n >= ${e.gte}`:"number"==typeof e.lt||"number"==typeof e.lte?"number"==typeof e.lt?`n < ${e.lt}`:`n <= ${e.lte}`:"":`${"number"==typeof e.gt?`${e.gt} < n `:`${e.gte} <= n `}${"number"==typeof e.lt?`< ${e.lt}`:`<= ${e.lte}`}`}(e);return[n,r,t,o].filter(e=>!!e).join(" ")}(t)}, got ${m(e)}.`,v(e,n))}function J(e,n){const{min:t}=e;return!("number"==typeof t&&n<t)}function X(e,n,t){const{min:o,max:i}=e;if("number"==typeof o&&n<o)throw new r(`Wrong number of arguments, expected at least ${o}, got ${m(n)}.`,t);if("number"==typeof i&&n>i)throw new r(`Wrong number of arguments, expected at most ${i}, got ${m(n)}.`,t)}function Z(e){return{min:e,max:e}}const Q={"<<":{evaluate:([e,n],t)=>(H(e,t,{integer:!0}),H(n,t,{integer:!0,nonNegative:!0}),e<<n),arity:Z(2)},">>":{evaluate:([e,n],t)=>(H(e,t,{integer:!0}),H(n,t,{integer:!0,nonNegative:!0}),e>>n),arity:Z(2)},">>>":{evaluate:([e,n],t)=>(H(e,t,{integer:!0}),H(n,t,{integer:!0,nonNegative:!0}),e>>>n),arity:Z(2)},"&":{evaluate:([e,...n],t)=>(H(e,t,{integer:!0}),n.reduce((e,n)=>(H(n,t,{integer:!0}),e&n),e)),arity:{min:2}},"|":{evaluate:([e,...n],t)=>(H(e,t,{integer:!0}),n.reduce((e,n)=>(H(n,t,{integer:!0}),e|n),e)),arity:{min:2}},xor:{evaluate:([e,...n],t)=>(H(e,t,{integer:!0}),n.reduce((e,n)=>(H(n,t,{integer:!0}),e^n),e)),arity:{min:2}}};function ee(e,n){return!!M(e)&&("string"==typeof e||Array.isArray(e)?!!G(n,{integer:!0})&&(n>=0&&n<e.length):!!Object.getOwnPropertyDescriptor(e,n))}function ne(e,n,t){if(K(e,t),K(n,t),"string"==typeof e&&"string"==typeof n)return e<n?-1:e>n?1:0;if("number"==typeof e&&"number"==typeof n)return Math.sign(e-n);throw new r(`Cannot compare values of different types: ${typeof e} and ${typeof n}`,t)}function te(e,n,t){if(e===n)return!0;if("number"==typeof e&&"number"==typeof n)return function(e,n,t=ae){if(e===n)return!0;const r=Math.abs(e-n);if(0===e||0===n||r<t)return r<t;const o=Math.abs(e),i=Math.abs(n);return r/(o+i)<t}(e,n);if(Array.isArray(e)&&Array.isArray(n)){if(e.length!==n.length)return!1;for(let r=0;r<e.length;r+=1)if(!te(P(e[r],t),P(n[r],t),t))return!1;return!0}if(V(e)&&V(n))return e.s===n.s&&e.f===n.f;if(x(e)&&x(n)){const r=Object.keys(e),o=Object.keys(n);if(r.length!==o.length)return!1;for(let o=0;o<r.length;o+=1){const i=q(r[o],t);if(!te(e[i],n[i],t))return!1}return!0}return!1}function re(e){return e??null}function oe(...e){const n=new Set;for(const t of e)t.forEach(e=>n.add(e));return n}function ie(e,n){n.forEach(n=>e.add(n))}const ae=1e-10;function se(e,n=0){const t=e.split("\n");for(;t[0]?.match(/^\s*$/);)t.shift();for(;t[t.length-1]?.match(/^\s*$/);)t.pop();const r=t.reduce((e,n)=>{if(n.match(/^\s*$/))return e;const t=n.match(/^\s*/)[0].length;return Math.min(e,t)},1/0);return t.map(e=>" ".repeat(n)+e.slice(r)).join("\n").trimEnd()}function ue(e,n){if(!Array.isArray(e))throw g("array",e,n)}function le(e,n){if(!function(e){return Array.isArray(e)&&e.every(e=>"string"==typeof e)}(e))throw g("array of strings",e,n)}function ce(e,n){if(!function(e){return Array.isArray(e)&&e.every(e=>"string"==typeof e&&1===e.length)}(e))throw g("array of strings",e,n)}const fe={filter:{evaluate:()=>{throw new Error("filter is implemented in Dvala")},arity:Z(2)},map:{evaluate:()=>{throw new Error("map is implemented in Dvala")},arity:{min:2}},reduce:{evaluate:()=>{throw new Error("reduce is implemented in Dvala")},arity:Z(3)},get:{evaluate:(e,n)=>{const[t,r]=e,o=re(e[2]);if(K(r,n),null===t)return o;U(t,n);const i=function(e,n){if(j(e)){if("string"==typeof n&&ee(e,n))return re(e[n])}else if(G(n,{nonNegative:!0,integer:!0})&&n>=0&&n<e.length)return re(e[n])}(t,r);return void 0===i?o:i},arity:{min:2,max:3}},count:{evaluate:([e],n)=>null===e?0:"string"==typeof e?e.length:(U(e,n),Array.isArray(e)?e.length:Object.keys(e).length),arity:Z(1)},"contains?":{evaluate:([e,n],t)=>null!==e&&(U(e,t),F(e)?(L(n,t),e.includes(n)):A(e)?($(n,t),!!e.find(e=>te(P(e),n,t))):(L(n,t),n in e)),arity:Z(2)},assoc:{evaluate:([e,n,t],r)=>(U(e,r),K(n,r),$(t,r),function(e,n,t,r){if(U(e,r),K(n,r),Array.isArray(e)||"string"==typeof e){if(H(n,r,{integer:!0}),H(n,r,{gte:0}),H(n,r,{lte:e.length}),"string"==typeof e)return L(t,r,{char:!0}),`${e.slice(0,n)}${t}${e.slice(n+1)}`;const o=[...e];return o[n]=t,o}L(n,r);const o={...e};return o[n]=t,o}(e,n,t,r)),arity:Z(3)},"++":{evaluate:(e,n)=>(G(e[0])||U(e[0],n),Array.isArray(e[0])?e.reduce((e,t)=>(ue(t,n),e.concat(t)),[]):z(e[0])?e.reduce((e,t)=>(K(t,n),`${e}${t}`),""):e.reduce((e,t)=>(O(t,n),Object.assign(e,t)),{})),arity:{min:1}}},de={range:{evaluate:(e,n)=>{const[t,r,o]=e;let i,a,s;H(t,n,{finite:!0}),1===e.length?(i=0,a=t,s=a>=0?1:-1):2===e.length?(H(r,n,{finite:!0}),i=t,a=r,s=a>=i?1:-1):(H(r,n,{finite:!0}),H(o,n,{finite:!0}),i=t,a=r,s=o,H(s,n,a>i?{positive:!0}:a<i?{negative:!0}:{nonZero:!0}));const u=[];for(let e=i;s<0?e>a:e<a;e+=s)u.push(e);return u},arity:{min:1,max:3}},repeat:{evaluate:([e,n],t)=>{H(n,t,{integer:!0,nonNegative:!0});const r=[];for(let t=0;t<n;t+=1)r.push(e);return r},arity:Z(2)},flatten:{evaluate:([e,n],t)=>{ue(e,t);const r=void 0===n||n===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:function(e,n,t={}){return H(e,n,t),e}(n,t,{integer:!0,nonNegative:!0});return e.flat(r)},arity:{min:1,max:2}},mapcat:{evaluate:()=>{throw new Error("mapcat is implemented in Dvala")},arity:Z(2)},"moving-fn":{evaluate:()=>{throw new Error("moving-fn is implemented in Dvala")},arity:Z(3)},"running-fn":{evaluate:()=>{throw new Error("running-fn is implemented in Dvala")},arity:Z(2)}},pe={nth:{evaluate:(e,n)=>{const[t,r]=e,o=re(e[2]);if(H(r,n,{integer:!0}),null===t)return o;if(C(t,n),r>=0&&r<t.length){return re(t[r])}return o},arity:{min:2,max:3}},first:{evaluate:([e],n)=>{if(null===e)return null;C(e,n);return re(e[0])},arity:Z(1)},last:{evaluate:([e],n)=>{if(null===e)return null;C(e,n);return re(e.at(-1))},arity:Z(1)},pop:{evaluate:([e],n)=>(C(e,n),"string"==typeof e?e.substring(0,e.length-1):e.slice(0,e.length-1)),arity:Z(1)},"index-of":{evaluate:([e,n],t)=>{if($(n,t),null===e)return null;if(C(e,t),"string"==typeof e){L(n,t);const r=e.indexOf(n);return-1!==r?r:null}{const r=e.findIndex(e=>te(P(e,t),n),t);return-1!==r?r:null}},arity:Z(2)},push:{evaluate:([e,...n],t)=>(C(e,t),"string"==typeof e?(ce(n,t),[e,...n].join("")):[...e,...n]),arity:{min:2}},rest:{evaluate:([e],n)=>(C(e,n),Array.isArray(e)?e.length<=1?[]:e.slice(1):e.substring(1)),arity:Z(1)},next:{evaluate:([e],n)=>(C(e,n),Array.isArray(e)?e.length<=1?null:e.slice(1):e.length<=1?null:e.substring(1)),arity:Z(1)},reverse:{evaluate:([e],n)=>null===e?null:(C(e,n),Array.isArray(e)?[...e].reverse():e.split("").reverse().join("")),arity:Z(1)},second:{evaluate:([e],n)=>null===e?null:(C(e,n),re(e[1])),arity:Z(1)},slice:{evaluate:(e,n)=>{const[t,r,o]=e;return C(t,n),H(r,n,{integer:!0}),2===e.length?(Array.isArray(t),t.slice(r)):(H(o,n,{integer:!0}),Array.isArray(t),t.slice(r,o))},arity:{min:2,max:3}},some:{evaluate:()=>{throw new Error("some is implemented in Dvala")},arity:Z(2)},sort:{evaluate:()=>{throw new Error("sort is implemented in Dvala")},arity:{min:1,max:2}},take:{evaluate:([e,n],t)=>{H(n,t),C(e,t);const r=Math.max(Math.ceil(n),0);return e.slice(0,r)},arity:Z(2)},"take-last":{evaluate:([e,n],t)=>{C(e,t),H(n,t);const r=Math.max(Math.ceil(n),0),o=e.length-r;return e.slice(o)},arity:Z(2)},drop:{evaluate:([e,n],t)=>{H(n,t);const r=Math.max(Math.ceil(n),0);return C(e,t),e.slice(r)},arity:Z(2)},"drop-last":{evaluate:([e,n],t)=>{C(e,t),H(n,t);const r=Math.max(Math.ceil(n),0),o=e.length-r;return e.slice(0,o)},arity:Z(2)},"take-while":{evaluate:()=>{throw new Error("take-while is implemented in Dvala")},arity:Z(2)},"drop-while":{evaluate:()=>{throw new Error("drop-while is implemented in Dvala")},arity:Z(2)}},he=new WeakSet,ye=new WeakSet,me=new WeakSet,ve=new WeakSet,ge=new WeakSet,be=new WeakSet,we=new WeakSet;function xe(e){return Array.isArray(e)?(he.has(e)||(ke(e),Ne(e)||Ie(e)),e):e}function ke(e){return!!Array.isArray(e)&&(!!ye.has(e)||!me.has(e)&&(e.every(e=>G(e))?(he.add(e),ye.add(e),!0):(me.add(e),!1)))}function Ee(e,n){if(!ke(e))throw new r(`Expected a vector, but got ${e}`,n)}function Se(e,n){if(Ee(e,n),0===e.length)throw new r(`Expected a non empty vector, but got ${e}`,n)}function Ie(e,n){if(!Array.isArray(e))return!1;if(be.has(e))return!0;if(we.has(e))return!1;if(0===e.length)return we.add(e),!1;if(!Array.isArray(e[0]))return we.add(e),!1;const t=e[0].length;if(0===t)return we.add(e),!1;for(const r of e){if(!Array.isArray(r))return we.add(e),!1;if(r.length!==t)return we.add(e),!1;if(n&&r.some(e=>!n(e)))return!1}return he.add(e),be.add(e),!0}function Ne(e){return Ie(e,G)?(ve.add(e),!0):(Array.isArray(e)&&ge.add(e),!1)}function Pe(e,n){let t=!1,o=!1;for(const i of e)if(ke(i))t=!0;else if(Ne(i))o=!0;else if(!G(i))throw new r("Invalid parameter type: "+typeof i,n);if(o){if(t)throw new r("Cannot mix vector and matrix types",n);let o=null,i=null;for(const t of e)if(Ne(t))if(null===o)o=t.length,i=t[0].length;else if(t.length!==o||t[0].length!==i)throw new r("Matrix dimensions do not match",n);return["matrix",e.map(e=>Ne(e)?e:Array.from({length:o},()=>Array.from({length:i},()=>e)))]}if(t){let t=null;for(const o of e)if(ke(o))if(null===t)t=o.length;else if(o.length!==t)throw new r("Vector lengths do not match",n);return["vector",e.map(e=>ke(e)?e:Array.from({length:t},()=>e))]}return["number",e]}function $e(e){return(n,t)=>{const[r,o]=Pe(n,t);return"number"===r?e(o[0]):"vector"===r?o[0].map(n=>e(n)):o[0].map(n=>n.map(n=>e(n)))}}function Ae(e){return(n,t)=>{const[r,o]=Pe(n,t);return"number"===r?e(o[0],o[1]):"vector"===r?o[0].map((n,t)=>e(n,o[1][t])):o[0].map((n,t)=>n.map((n,r)=>e(n,o[1][t][r])))}}function Ce(e,n){return(t,r)=>{if(0===t.length)return e;const[o,i]=Pe(t,r);if("number"===o)return i.reduce((e,t)=>n(e,t),e);if("vector"===o){const[e,...t]=i;return t.reduce((e,t)=>e.map((e,r)=>n(e,t[r])),e)}{const[e,...t]=i;return t.reduce((e,t)=>e.map((e,r)=>e.map((e,o)=>n(e,t[r][o]))),e)}}}const je={inc:{evaluate:$e(e=>e+1),arity:Z(1)},dec:{evaluate:$e(e=>e-1),arity:Z(1)},"+":{evaluate:Ce(0,(e,n)=>e+n),arity:{}},"*":{evaluate:Ce(1,(e,n)=>e*n),arity:{}},"/":{evaluate:(e,n)=>{if(0===e.length)return 1;const[t,r]=Pe(e,n);if("number"===t){const[e,...n]=r;return 0===n.length?1/e:n.reduce((e,n)=>e/n,e)}if("vector"===t){const e=r[0];return r.slice(1).reduce((e,n)=>e.map((e,t)=>e/n[t]),e)}{const e=r[0];return r.slice(1).reduce((e,n)=>e.map((e,t)=>e.map((e,r)=>e/n[t][r])),e)}},arity:{}},"-":{evaluate:(e,n)=>{if(0===e.length)return 0;const[t,r]=Pe(e,n);if("number"===t){const[e,...n]=r;return 0===n.length?-e:n.reduce((e,n)=>e-n,e)}if("vector"===t){const e=r[0];return r.slice(1).reduce((e,n)=>e.map((e,t)=>e-n[t]),e)}{const e=r[0];return r.slice(1).reduce((e,n)=>e.map((e,t)=>e.map((e,r)=>e-n[t][r])),e)}},arity:{}},quot:{evaluate:Ae((e,n)=>Math.trunc(e/n)),arity:Z(2)},mod:{evaluate:Ae((e,n)=>e-n*Math.floor(e/n)),arity:Z(2)},"%":{evaluate:Ae((e,n)=>e%n),arity:Z(2)},sqrt:{evaluate:$e(e=>Math.sqrt(e)),arity:Z(1)},cbrt:{evaluate:$e(e=>Math.cbrt(e)),arity:Z(1)},"^":{evaluate:Ae((e,n)=>e**n),arity:Z(2)},round:{evaluate:([e,n],t)=>{const[r,o]=Pe([e],t);if("number"===r){if(void 0===n||0===n)return Math.round(o[0]);{H(n,t,{integer:!0,positive:!0});const e=10**n;return Math.round(o[0]*e)/e}}if("vector"===r){const e=o[0];if(void 0===n||0===n)return e.map(e=>Math.round(e));{H(n,t,{integer:!0,positive:!0});const r=10**n;return e.map(e=>Math.round(e*r)/r)}}{const e=o[0];if(void 0===n||0===n)return e.map(e=>e.map(e=>Math.round(e)));{H(n,t,{integer:!0,positive:!0});const r=10**n;return e.map(e=>e.map(e=>Math.round(e*r)/r))}}},arity:{min:1,max:2}},trunc:{evaluate:$e(e=>Math.trunc(e)),arity:Z(1)},floor:{evaluate:$e(e=>Math.floor(e)),arity:Z(1)},ceil:{evaluate:$e(e=>Math.ceil(e)),arity:Z(1)},min:{evaluate:(e,n)=>{if(1===e.length&&ke(e[0])){const t=e[0];return Se(t,n),t.reduce((e,n)=>Math.min(e,n),1/0)}const[t,...r]=e;return H(t,n),r.reduce((e,t)=>(H(t,n),Math.min(e,t)),t)},arity:{min:1}},max:{evaluate:(e,n)=>{if(1===e.length&&ke(e[0])){const t=e[0];return Se(t,n),t.reduce((e,n)=>Math.max(e,n),-1/0)}const[t,...r]=e;return H(t,n),r.reduce((e,t)=>(H(t,n),Math.max(e,t)),t)},arity:{min:1}},abs:{evaluate:$e(e=>Math.abs(e)),arity:Z(1)},sign:{evaluate:$e(e=>Math.sign(e)),arity:Z(1)}};function Oe([e,...n],t){const r=P(e,t);for(const e of n)if(!te(r,P(e,t),t))return!1;return!0}const Me={"==":{evaluate:(e,n)=>Oe(e,n),arity:{min:1}},"!=":{evaluate:(e,n)=>!Oe(e,n),arity:{min:1}},"identical?":{evaluate:e=>function([e,...n]){for(const t of n)if(t!==e)return!1;return!0}(e),arity:{min:1}},">":{evaluate:([e,...n],t)=>{let r=W(e);for(const e of n){if(ne(r,W(e),t)<=0)return!1;r=W(e)}return!0},arity:{min:1}},"<":{evaluate:([e,...n],t)=>{let r=W(e);for(const e of n){if(ne(r,W(e),t)>=0)return!1;r=W(e)}return!0},arity:{min:1}},">=":{evaluate:([e,...n],t)=>{let r=W(e);for(const e of n){if(ne(r,W(e),t)<0)return!1;r=W(e)}return!0},arity:{min:1}},"<=":{evaluate:([e,...n],t)=>{let r=W(e);for(const e of n){if(ne(r,W(e),t)>0)return!1;r=W(e)}return!0},arity:{min:1}},not:{evaluate:([e])=>!e,arity:Z(1)},"epoch->iso-date":{evaluate:([e],n)=>(H(e,n),new Date(e).toISOString()),arity:Z(1)},"iso-date->epoch":{evaluate:([e],n)=>{L(e,n);const t=new Date(e).valueOf();return H(t,n,{finite:!0}),t},arity:Z(1)},boolean:{evaluate:([e])=>!!e,arity:Z(1)},compare:{evaluate:([e,n],t)=>(K(e,t),K(n,t),ne(e,n,t)),arity:Z(2)},"json-parse":{evaluate:([e],n)=>(L(e,n),JSON.parse(e)),arity:Z(1)},"json-stringify":{evaluate:([e,n],t)=>($(e,t),void 0===n?JSON.stringify(e):(H(n,t),JSON.stringify(e,null,n))),arity:{min:1,max:2}},"effect-name":{evaluate:([e],n)=>function(e,n){return B(e,n),e}(e,n).name,arity:Z(1)},"effect-matcher":{evaluate:([e],n)=>{if("string"==typeof e)return{[f]:!0,sourceCodeInfo:n,functionType:"EffectMatcher",matchType:"string",pattern:e,flags:"",arity:Z(1)};if(V(e))return{[f]:!0,sourceCodeInfo:n,functionType:"EffectMatcher",matchType:"regexp",pattern:e.s,flags:e.f,arity:Z(1)};throw new r("effect-matcher expects a string or regexp pattern",n)},arity:Z(1)},"type-of":{evaluate:([e])=>null==e?"null":"boolean"==typeof e?"boolean":"number"==typeof e?"number":"string"==typeof e?"string":T(e)?"effect":V(e)?"regexp":k(e)?"function":Array.isArray(e)?"array":"object",arity:Z(1)}},Ue={keys:{evaluate:([e],n)=>(O(e,n),Object.keys(e)),arity:Z(1)},vals:{evaluate:([e],n)=>(O(e,n),Object.values(e)),arity:Z(1)},entries:{evaluate:([e],n)=>(O(e,n),Object.entries(e)),arity:Z(1)},find:{evaluate:([e,n],t)=>(O(e,t),L(n,t),ee(e,n)?[n,e[n]]:null),arity:Z(2)},dissoc:{evaluate:([e,n],t)=>{O(e,t),L(n,t);const r={...e};return delete r[n],r},arity:Z(2)},merge:{evaluate:(e,n)=>{if(0===e.length)return null;const[t,...r]=e;return O(t,n),r.reduce((e,t)=>(O(t,n),{...e,...t}),{...t})},arity:{min:0}},"merge-with":{evaluate:()=>{throw new Error("merge-with is implemented in Dvala")},arity:{min:2}},zipmap:{evaluate:([e,n],t)=>{le(e,t),ue(n,t);const r=Math.min(e.length,n.length),o={};for(let i=0;i<r;i+=1){o[q(e[i],t)]=re(n[i])}return o},arity:Z(2)},"select-keys":{evaluate:([e,n],t)=>(le(n,t),O(e,t),n.reduce((n,t)=>(ee(e,t)&&(n[t]=re(e[t])),n),{})),arity:Z(2)}},Ve={"function?":{evaluate:([e])=>k(e),arity:Z(1)},"string?":{evaluate:([e])=>"string"==typeof e,arity:Z(1)},"number?":{evaluate:([e])=>"number"==typeof e,arity:Z(1)},"integer?":{evaluate:([e])=>"number"==typeof e&&G(e,{integer:!0}),arity:Z(1)},"boolean?":{evaluate:([e])=>"boolean"==typeof e,arity:Z(1)},"null?":{evaluate:([e])=>null==e,arity:Z(1)},"zero?":{evaluate:([e],n)=>(H(e,n,{finite:!0}),Math.abs(e)<ae),arity:Z(1)},"pos?":{evaluate:([e],n)=>(H(e,n,{finite:!0}),e>0),arity:Z(1)},"neg?":{evaluate:([e],n)=>(H(e,n,{finite:!0}),e<0),arity:Z(1)},"even?":{evaluate:([e],n)=>(H(e,n,{finite:!0}),e%2==0),arity:Z(1)},"odd?":{evaluate:([e],n)=>(H(e,n,{finite:!0}),G(e,{integer:!0})&&e%2!=0),arity:Z(1)},"array?":{evaluate:([e])=>Array.isArray(e),arity:Z(1)},"collection?":{evaluate:([e])=>M(e),arity:Z(1)},"sequence?":{evaluate:([e])=>A(e),arity:Z(1)},"object?":{evaluate:([e])=>j(e),arity:Z(1)},"regexp?":{evaluate:([e])=>V(e),arity:Z(1)},"effect?":{evaluate:([e])=>T(e),arity:Z(1)},"finite?":{evaluate:([e],n)=>(H(e,n),Number.isFinite(e)),arity:Z(1)},"positive-infinity?":{evaluate:([e],n)=>(H(e,n),e===Number.POSITIVE_INFINITY),arity:Z(1)},"negative-infinity?":{evaluate:([e],n)=>(H(e,n),e===Number.NEGATIVE_INFINITY),arity:Z(1)},"true?":{evaluate:([e])=>!0===e,arity:Z(1)},"false?":{evaluate:([e])=>!1===e,arity:Z(1)},"empty?":{evaluate:([e],n)=>null===e||(U(e,n),"string"==typeof e||Array.isArray(e)?0===e.length:0===Object.keys(e).length),arity:Z(1)},"not-empty?":{evaluate:([e],n)=>null!==e&&(U(e,n),"string"==typeof e||Array.isArray(e)?e.length>0:Object.keys(e).length>0),arity:Z(1)},"vector?":{evaluate:([e])=>ke(e),arity:Z(1)},"matrix?":{evaluate:([e])=>Ne(e),arity:Z(1)},"grid?":{evaluate:([e])=>Ie(e),arity:Z(1)}},Re={regexp:{evaluate:([e,n],t)=>{L(e,t);const o=e||"(?:)",i="string"==typeof n?n:"";try{new RegExp(o,i)}catch(e){throw new r(`Invalid regular expression: ${o} ${i}`,t)}return{[d]:!0,sourceCodeInfo:t,s:o,f:i}},arity:{min:1,max:2}},"re-match":{evaluate:([e,n],t)=>{if(function(e,n){if(!V(e))throw g("RegularExpression",e,n)}(n,t),!F(e))return null;const r=new RegExp(n.s,n.f).exec(e);return r?[...r]:null},arity:Z(2)},replace:{evaluate:([e,n,t],r)=>{L(e,r),R(n,r),L(t,r);const o=V(n)?new RegExp(n.s,`${n.f}`):n;return e.replace(o,t)},arity:Z(3)},"replace-all":{evaluate:([e,n,t],r)=>{L(e,r),R(n,r),L(t,r);const o=V(n)?new RegExp(n.s,`${n.f.includes("g")?n.f:`${n.f}g`}`):n;return e.replaceAll(o,t)},arity:Z(3)}},Te=/^\s*$/,Be={str:{evaluate:e=>e.reduce((e,n)=>e+(null==n?"":j(n)||Array.isArray(n)?JSON.stringify(n):`${n}`),""),arity:{}},number:{evaluate:([e],n)=>{L(e,n);const t=Number(e);if(Number.isNaN(t))throw new r(`Could not convert '${e}' to a number.`,n);return t},arity:Z(1)},"lower-case":{evaluate:([e],n)=>(L(e,n),e.toLowerCase()),arity:Z(1)},"upper-case":{evaluate:([e],n)=>(L(e,n),e.toUpperCase()),arity:Z(1)},trim:{evaluate:([e],n)=>(L(e,n),e.trim()),arity:Z(1)},join:{evaluate:([e,n],t)=>(ue(e,t),e.forEach(e=>K(e,t)),L(n,t),e.join(n)),arity:Z(2)},split:{evaluate:([e,n,t],r)=>{L(e,r),R(n,r),void 0!==t&&H(t,r,{integer:!0,nonNegative:!0});const o="string"==typeof n?n:new RegExp(n.s,n.f);return e.split(o,t)},arity:{min:2,max:3}},"blank?":{evaluate:([e],n)=>null===e||(L(e,n),Te.test(e)),arity:Z(1)}},De={"|>":{evaluate:()=>{throw new Error("|> is implemented in Dvala")},arity:Z(2)},apply:{evaluate:()=>{throw new Error("apply is implemented in Dvala")},arity:{min:2}},identity:{evaluate:([e])=>re(e),arity:Z(1)},comp:{evaluate:(e,n)=>{return e.forEach(e=>_(e,n)),{[f]:!0,sourceCodeInfo:n,functionType:"Comp",params:e,arity:e.length>0?(t=e.at(-1),"number"==typeof t||M(t)?Z(1):t.arity):{min:1,max:1}};var t},arity:{}},constantly:{evaluate:([e],n)=>({[f]:!0,sourceCodeInfo:n,functionType:"Constantly",value:re(e),arity:{}}),arity:Z(1)}};function _e(e){return se(`\n ${e.title}\n\n ${e.description.replace(/`(.+?)`/g,"$1").replace(/\$(\w+)/g,"$1").replace(/\*\*\*(.+)\*\*\*/g,"$1").replace(/\*\*(.+)\*\*/g,"$1")}\n\n Signature:\n ${function(e){const{title:n,variants:t,args:r,returns:o}=e,i=!Fe(e)&&e._isOperator,a=t.map(t=>{if(Fe(e)){const e=t.argumentNames.length>0?`, ${t.argumentNames.map(e=>{let n="";return r[e].rest&&(n+="..."),n+=e,n}).join(", ")}`:"";return` perform(effect(${n})${e}) -> ${Le(o)}`}return`${` ${n}(${t.argumentNames.map(e=>{let n="";return r[e].rest&&(n+="..."),n+=e,n}).join(", ")})`} -> ${Le(o)}`}),s=i?["","Operator:",` a ${n} b -> ${Le(o)}`]:[];return[...a,...s]}(e).join("\n ")}\n\n Arguments:\n ${function(e){return Object.entries(e.args).map(([e,n])=>`${e}: ${Le(n)}`)}(e).join("\n ")}\n\n Examples:\n${e.examples.map(e=>se(e,4)).join("\n\n")}`)}function Fe(e){return"effect"in e}function Le(e){const n=e.type,t=(Array.isArray(n)?n:[n]).join(" | ");return e.array||e.rest?`Array<${t}>`:t}const qe={sum:{evaluate:([e],n)=>(Ee(e,n),e.reduce((e,n)=>e+n,0)),arity:Z(1)},prod:{evaluate:([e],n)=>(Ee(e,n),e.reduce((e,n)=>e*n,1)),arity:Z(1)},mean:{evaluate:([e],n)=>(Se(e,n),e.reduce((e,n)=>e+n,0)/e.length),arity:Z(1)},median:{evaluate:([e],n)=>(Se(e,n),function(e){const n=[...e].sort((e,n)=>e-n),t=Math.floor(n.length/2);return n.length%2==0?(n[t-1]+n[t])/2:n[t]}(e)),arity:Z(1)}},ze={...Y,...Q,...fe,...de,...pe,...je,...function(e,n){return{doc:{evaluate:([t],r)=>{if(w(e),T(t)){const e=`-effect-${t.name}`,r=n[e];return r?_e(r):""}if(_(t,r),!k(t))return"";if("Builtin"===t.functionType){const n=e[t.name];return n?_e(n):""}return"UserDefined"===t.functionType?t.docString:""},arity:Z(1)},"with-doc":{evaluate:([e,n],t)=>{if(_(e,t),L(n,t),!k(e)||"UserDefined"!==e.functionType)throw new Error("with-doc can only be used with user-defined functions");return{...e,[f]:!0,docString:n}},arity:Z(2)},arity:{evaluate:([e],t)=>{if(T(e)){const t=`-effect-${e.name}`,r=n[t];if(!r)return{};const o=r.variants.map(e=>e.argumentNames.length);return{min:Math.min(...o),max:Math.max(...o)}}return _(e,t),k(e)?e.arity:Z(1)},arity:Z(1)}}}({},{}),...Me,...Ue,...Ve,...Re,...Be,...De,...qe};Object.entries(ze).forEach(([e,n])=>{n.name=e});const We={...ze},Ke={},Ye=[];Object.entries(We).forEach(([e,n],t)=>{Ke[e]=t,Ye.push(n)});const Ge={arity:{},evaluateAsNormalExpression:(e,n)=>{let t=!0;for(const r of e)if(t=P(r,n),!t)break;return t},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1],n,r,o)},He=11,Je=12,Xe=13,Ze=14,Qe=15,en=16;function nn(e,n){return e instanceof Promise?e.then(n):n(e)}async function tn(e,n,t,r,o){n.push(await e);for(let e=o+1;e<t.length;e++)n.push(await r(t[e],e));return n}function rn(e,n,t){let r=t;for(let t=0;t<e.length;t++){const o=n(r,e[t],t);if(o instanceof Promise)return on(o,e,n,t);r=o}return r}async function on(e,n,t,r){let o=await e;for(let e=r+1;e<n.length;e++)o=await t(o,n[e],e);return o}function an(e,n){for(let t=0;t<e.length;t++){const r=n(e[t],t);if(r instanceof Promise)return sn(r,e,n,t)}}async function sn(e,n,t,r){await e;for(let e=r+1;e<n.length;e++)await t(n[e],e)}function un(e,n){if(e[0]===Xe)Object.values(e[1][0]).forEach(e=>{e[1][1]&&n(e[1][1]),un(e,n)});else if(e[0]===Ze)for(let t=0;t<e[1][0].length;t+=1){const r=e[1][0][t]??null;null!==r&&(r[1][1]&&n(r[1][1]),un(r,n))}}function ln(e,n,t){const r=e[2],o={};return nn(cn(e,n,t,r,o),()=>o)}function cn(e,n,t,o,i){if(e[0]===Xe){!function(e,n){if(!x(e))throw new r(`Expected UnknownRecord, got ${m(e)}.`,v(e,n))}(n,o);const a=new Set;let s;return nn(an(Object.entries(e[1][0]),([e,r])=>{if(r[0]===Je)return void(s=r);a.add(e);const u=n[e];return nn(void 0!==u?u:r[1][1]?t(r[1][1]):null,e=>{const n=e??null;return $(n,o),cn(r,n,t,o,i)})}),()=>{if(s){const e=Object.entries(n).filter(([e])=>!a.has(e)).reduce((e,[n,t])=>(e[n]=P(t),e),{});i[s[1][0]]=e}})}if(e[0]===Ze){let r=null;ue(n,o);const a=[];for(let n=0;n<e[1][0].length;n+=1){const t=e[1][0][n]??null;if(null!==t){if(t[0]===Je){r=n;break}a.push({element:t,index:n})}}return nn(an(a,({element:e,index:r})=>{const a=n[r];return nn(void 0!==a?a:e[1][1]?t(e[1][1]):null,n=>{const r=n??null;return $(r,o),cn(e,r,t,o,i)})}),()=>{if(null!==r){const t=n.slice(r),o=e[1][0][r];i[o[1][0]]=t}})}e[0]===Je?i[e[1][0]]=P(n):i[e[1][0][1]]=P(n)}function fn(e){const n={};return dn(e,n),n}function dn(e,n){if(null!==e)if(e[0]===Ze)for(const t of e[1][0])dn(t,n);else if(e[0]===Xe)for(const t of Object.values(e[1][0]))dn(t,n);else if(e[0]===Je){if(n[e[1][0]])throw new r(`Duplicate binding name: ${e[1][0]}`,e[2]);n[e[1][0]]=!0}else if(e[0]===He){if(n[e[1][0][1]])throw new r(`Duplicate binding name: ${e[1][0]}`,e[2]);n[e[1][0][1]]=!0}}function pn(e,n,t){const r={};return nn(hn(e,n,t,r),e=>e?r:null)}function hn(e,n,t,r){if(e[0]===en)return!0;if(e[0]===Qe){const r=e[1][0];return nn(t(r),e=>te(n,e))}if(e[0]===He){const o=e[1][0],i=e[1][1];if(null==n){if(i)return nn(t(i),e=>(r[o[1]]=P(e),!0));r[o[1]]=n??null}else r[o[1]]=P(n);return!0}if(e[0]===Xe){if(!x(n))return!1;const o=new Set;let i;const a=Object.entries(e[1][0]);let s=!0;for(const[e,u]of a)s=nn(s,a=>{if(!a)return!1;if(u[0]===Je)return i=u,!0;o.add(e);const s=n[e];if(void 0===s&&u[0]===Qe)return nn(t(u[1][0]),e=>te(void 0,e));return nn(void 0!==s?s:u[1]&&u[1][1]?t(u[1][1]):null,e=>hn(u,e??null,t,r))});return nn(s,e=>{if(!e)return!1;if(i){const e=Object.entries(n).filter(([e])=>!o.has(e)).reduce((e,[n,t])=>(e[n]=P(t),e),{});r[i[1][0]]=e}return!0})}{const o=e;if(!Array.isArray(n))return!1;const i=o[1][0];let a=null;for(let e=0;e<i.length;e+=1){const n=i[e];if(null!==n&&n[0]===Je){a=e;break}}if(null===a&&n.length!==i.length)return!1;if(null!==a&&n.length<a)return!1;let s=!0;for(let e=0;e<i.length;e+=1){const o=i[e];if(null===o)continue;if(o[0]===Je){r[o[1][0]]=n.slice(e);break}const a=o;s=nn(s,o=>!!o&&hn(a,P(n[e]),t,r))}return s}}const yn={arity:{},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>{const i=new Set;t([e[1][1]],n,r,o).forEach(e=>i.add(e));for(const[a,s,u]of e[1][2]){const e={};Object.assign(e,fn(a));const l=n.create(e);u&&t([u],l,r,o).forEach(e=>i.add(e)),t([s],l,r,o).forEach(e=>i.add(e))}return i}},mn={arity:Z(1),getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t([e[1][1]],n,r,o)},vn={arity:{},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>{const i=t(e[1][1],n.create({}),r,o),a=e[1][2];if(!a||0===a.length)return i;let s=new Set;for(const[e,i]of a){s=oe(s,t([e],n,r,o),t([i],n,r,o))}return oe(i,s)}},gn={arity:{},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>function(e,n,t,r,o){const i=new Set,a={self:{value:null}};e[0].forEach(e=>{Object.assign(a,fn(e)),un(e,e=>{ie(i,t([e],n,r,o))})});const s=n.create(a),u=t(e[1],s,r,o);return ie(i,u),i}(e[1][1],n,t,r,o)};const bn={arity:Z(0),getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>{const i=e[1][1],a=i[1][0],s=i[1][1],u=t([s],n,r,o);return un(a,e=>{ie(u,t([e],n,r,o))}),n.addValues(fn(a),a[2]),u}},wn={arity:{},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>{const i=e[1][1],a=i.reduce((e,n)=>{const t=fn(n[1][0]);return Object.keys(t).forEach(n=>{e[n]={value:!0}}),e},{});return oe(t(i.map(e=>e[1][1]),n,r,o),t([e[1][2]],n.create(a),r,o))}};function xn(e,n,t,r,o){const i=new Set,a={},[,s,u]=e[1];return s.forEach(e=>{const[s,u,l,c]=e,[f,d]=s[1];t([d],n.create(a),r,o).forEach(e=>i.add(e)),Object.assign(a,fn(f)),u&&u.forEach(e=>{const[s,u]=e[1];t([u],n.create(a),r,o).forEach(e=>i.add(e)),Object.assign(a,fn(s))}),l&&t([l],n.create(a),r,o).forEach(e=>i.add(e)),c&&t([c],n.create(a),r,o).forEach(e=>i.add(e))}),t([u],n.create(a),r,o).forEach(e=>i.add(e)),i}const kn={arity:Z(1),getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>xn(e,n,t,r,o)},En={arity:Z(1),getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>xn(e,n,t,r,o)},Sn={arity:{},evaluateAsNormalExpression:(e,n)=>{let t=!1;for(const r of e)if(t=P(r,n),t)break;return t},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1],n,r,o)},In={arity:{min:1},evaluateAsNormalExpression:(e,n)=>{for(const t of e){const e=P(t,n);if(null!==e)return e}return null},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1],n,r,o)},Nn={arity:{},evaluateAsNormalExpression:e=>{throw new t(e)},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1],n,r,o)},Pn={arity:{},evaluateAsNormalExpression:(e,n)=>{const t=[];for(const r of e)t.push(P(r,n));return t},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1],n,r,o)},$n={arity:{},getUndefinedSymbols:()=>new Set},An={arity:{},evaluateAsNormalExpression:(e,n)=>{const t={};for(let r=0;r<e.length;r+=2){const o=e[r],i=e[r+1];L(o,n),t[o]=i??null}return t},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1],n,r,o)},Cn={arity:Z(1),getUndefinedSymbols:()=>new Set},jn={arity:{min:1},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>oe(...e[1][1].map(e=>t([e],n,r,o)))},On={arity:{min:1},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>{const[,i,a]=e[1];return oe(t([i],n,r,o),t(a,n,r,o))}},Mn={arity:{min:1},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>oe(...e[1][1].map(e=>t([e],n,r,o)))},Un={"??":0,"&&":1,"||":2,array:3,cond:4,"defined?":5,block:6,doseq:7,"0_lambda":8,for:9,if:10,let:11,loop:12,object:13,recur:14,match:15,unless:16,import:17,effect:18,perform:19,parallel:20,race:21},Vn=[In,Ge,Sn,Pn,{arity:{},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1].flat(),n,r,o)},mn,vn,En,gn,kn,{arity:{min:2,max:3},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1].filter(e=>!!e),n,r,o)},bn,wn,An,Nn,yn,{arity:{},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1].filter(e=>!!e),n,r,o)},Cn,$n,On,jn,Mn],Rn={normalExpressions:We,specialExpressions:Vn,allNormalExpressions:Ye},Tn=Object.keys(We),Bn=Object.keys(Un);function Dn(e){return"object"==typeof e&&null!==e&&"string"==typeof e.program&&Array.isArray(e.fileModules)}function _n(e){return s.UserDefinedSymbol===e[0]}function Fn(e,n){return function(e,n){if(!_n(e))throw g("UserDefinedSymbolNode",e,n)}(e,n),e}function Ln(e){return s.NormalBuiltinSymbol===e[0]}function qn(e){return s.SpecialBuiltinSymbol===e[0]}function zn(e){return!!function(e){return e[0]===s.NormalExpression}(e)&&function(e){const n=e[0];return s.UserDefinedSymbol===n||s.NormalBuiltinSymbol===n||s.SpecialBuiltinSymbol===n}(e[1][0])}function Wn(e){return e[0]===s.Spread}const Kn=(e,n,t,r)=>{const o=Array.isArray(e)?e:[[s.SpecialExpression,[Un.block,e.body,void 0]]],i=new Set;for(const e of o)Yn(e,n,t,r)?.forEach(e=>i.add(e));return i};function Yn(e,n,t,o){const i=e[0];switch(i){case s.UserDefinedSymbol:{const t=e;return null===n.lookUp(t)?new Set([t[1]]):null}case s.NormalBuiltinSymbol:case s.SpecialBuiltinSymbol:case s.String:case s.Number:case s.ReservedSymbol:case s.Binding:return null;case s.NormalExpression:{const r=e,i=new Set;if(zn(r)){const[,[e]]=r;if(_n(e)){null===n.lookUp(e)&&i.add(e[1])}}else{const[,[e]]=r;Yn(e,n,t,o)?.forEach(e=>i.add(e))}for(const e of r[1][1])Yn(e,n,t,o)?.forEach(e=>i.add(e));return i}case s.SpecialExpression:{const r=e,i=r[1][0];return(0,t.specialExpressions[i].getUndefinedSymbols)(r,n,{getUndefinedSymbols:Kn,builtin:t,evaluateNode:o})}case s.Spread:return Yn(e[1],n,t,o);default:throw new r(`Unhandled node type: ${i}`,e[2])}}const Gn=["^","*","/","%","+","-","<<",">>",">>>","++","<","<=","≤",">",">=","≥","==","!=","!=","&","xor","|","&&","||","??","|>"],Hn=[...Gn,"?",":","->","...",".",",","=",":",";"],Jn=new Set(["comment","cond","defined?","block","doseq","if","let","loop","recur","unless","while"]);function Xn(e){return!Jn.has(e)}const Zn=new Set(Gn);function Qn(e){return Zn.has(e)}const et=new Set(Hn);function nt(e){return et.has(e)}function tt(e,n){return"Symbol"===e?.[0]&&(!n||e[1]===n)}function rt(e,n){return function(e,n){tt(e,n)||St("Symbol",void 0,e)}(e,n),e}function ot(e,n){return"ReservedSymbol"===e?.[0]&&(!n||e[1]===n)}function it(e,n){ot(e,n)||St("ReservedSymbol",n,e)}function at(e,n){return it(e,n),e}function st(e,n){return"Operator"===e?.[0]&&(!n||e[1]===n)}function ut(e,n){st(e,n)||St("Operator",n,e)}function lt(e){return"Number"===e?.[0]}function ct(e){return"BasePrefixedNumber"===e?.[0]}function ft(e){return"LParen"===e?.[0]}function dt(e){ft(e)||St("LParen",void 0,e)}function pt(e){return"RParen"===e?.[0]}function ht(e){pt(e)||St("RParen",void 0,e)}function yt(e){return"LBracket"===e?.[0]}function mt(e){return function(e){yt(e)||St("LBracket",void 0,e)}(e),e}function vt(e){return"RBracket"===e?.[0]}function gt(e){vt(e)||St("RBracket",void 0,e)}function bt(e){return"LBrace"===e?.[0]}function wt(e){return function(e){bt(e)||St("LBrace",void 0,e)}(e),e}function xt(e){return"RBrace"===e?.[0]}function kt(e){return"string"===e?.[0]}function Et(e){return"Operator"===e?.[0]&&Qn(e[1])}function St(e,n,t){const o=t?`${t[0]} '${t[1]}'`:"end of input";throw new r(`Unexpected token: ${o}, expected ${e}${n?` '${n}'`:""}`,t?.[2])}function It(e,n){return n&&(e[2]=n),e}function Nt(e,n){return void 0!==Un[e]&&"fn"!==e&&"defn"!==e?It([s.SpecialBuiltinSymbol,Un[e]],n):void 0!==Ke[e]?It([s.NormalBuiltinSymbol,Ke[e]],n):It([s.UserDefinedSymbol,e],n)}function Pt(e){return e.substring(1,e.length-1).replace(/(\\{2})|(\\')|\\(.)/g,(e,n,t,r)=>n?"\\":t?"'":`\\${r}`)}const $t=Object.entries(Ke).reduce((e,[n,t])=>(e[t]=n,e),[]),At=Object.entries(Un).reduce((e,[n,t])=>(e[t]=n,e),[]);function Ct(e){return _n(e)?e[1]:Ln(e)?$t[e[1]]:At[e[1]]}function jt(e,n,t){const r=It([s.NormalExpression,[e,n]],t);return Ln(e)&&X(Ye[e[1]].arity,r[1][1].length,t),r}function Ot(e){if(e.isAtEnd())return!0;const n=e.tryPeek();return st(n)?[";",",",":"].includes(n[1]):!!ot(n)&&["else","when","while","case","let","then","end","do"].includes(n[1])}function Mt(e,n,t,o,i){const a=e[1];switch(a){case"^":case"*":case"/":case"%":case"+":case"-":case"<<":case">>":case">>>":case"++":case"<":case"<=":case"≤":case">":case">=":case"≥":case"==":case"!=":case"&":case"xor":case"|":case"|>":return jt(n,[t,o],i);case"&&":case"||":case"??":return It([s.SpecialExpression,[Un[a],[t,o]]],i);default:throw new r(`Unknown binary operator: ${a}`,i)}}class Ut{tokens;position;storedPosition=0;parseExpression;constructor(e){this.tokens=e.tokens,this.position=0}advance(){this.position+=1}tryPeek(){return this.tokens[this.position]}peek(){const e=this.tokens[this.position];if(!e){const e=this.tokens.at(-1),n=e?e[2]:void 0;throw new r("Unexpected end of input",n)}return e}isAtEnd(){return this.position>=this.tokens.length}peekSourceCodeInfo(){const e=this.tryPeek();return e?e[2]:this.tokens.at(-1)?.[2]}storePosition(){return this.storedPosition=this.position}restorePosition(){this.position=this.storedPosition}peekAhead(e){return this.tokens[this.position+e]}getPosition(){return this.position}getTokenAt(e){return this.tokens[e]}}function Vt(e,n){switch(e){case"^":return 12;case"*":case"/":case"%":return 11;case"+":case"-":return 10;case"<<":case">>":case">>>":return 9;case"++":return 8;case"<":case"<=":case"≤":case">":case">=":case"≥":return 7;case"==":case"!=":return 6;case"&":case"xor":case"|":return 5;case"&&":case"||":case"??":return 4;case"|>":return 2;default:throw new r(`Unknown binary operator: ${e}`,n)}}function Rt(e,n){const t=[];for(;!e.isAtEnd()&&!Tt(e,n);)st(e.tryPeek(),";")?e.advance():t.push(e.parseExpression());if(function(e,n){if(!Tt(e,n))throw new r(`Expected ${n.map(e=>e[1]).join(" or ")}`,e.peekSourceCodeInfo())}(e,n),0===t.length)throw new r("Expected expression",e.peekSourceCodeInfo());return 1===t.length?t[0]:It([s.SpecialExpression,[Un.block,t,void 0]],e.peekSourceCodeInfo())}function Tt(e,n){for(const t of n)if(ot(e.tryPeek(),t))return!0;return!1}function Bt(e){const n=at(e.tryPeek(),"do");e.advance();const t=[];for(;!e.isAtEnd()&&!ot(e.tryPeek(),"end")&&!ot(e.tryPeek(),"with");)if(t.push(e.parseExpression()),st(e.tryPeek(),";"))e.advance();else if(!ot(e.tryPeek(),"end")&&!ot(e.tryPeek(),"with"))throw new r("Expected end",e.peekSourceCodeInfo());let o;if(ot(e.tryPeek(),"with"))for(e.advance(),o=[];!e.isAtEnd()&&!ot(e.tryPeek(),"end");){it(e.tryPeek(),"case"),e.advance();const n=e.parseExpression();it(e.tryPeek(),"then"),e.advance();const t=Rt(e,["case","end"]);o.push([n,t])}return it(e.tryPeek(),"end"),e.advance(),It([s.SpecialExpression,[Un.block,t,o]],n[2])}function Dt(e){const n=e.peek();if(e.advance(),!tt(n))throw new r(`Expected symbol token, got ${n[0]}`,n[2]);return"'"===n[1][0]?Nt(Pt(n[1]),n[2]):Nt(n[1],n[2])}function _t(e,n){e.advance();const t=n[1].substring(1,n[1].length-1).replace(/(\\{2})|(\\")|(\\n)|(\\t)|(\\r)|(\\b)|(\\f)|\\(.)/g,(e,n,t,r,o,i,a,s,u)=>n?"\\":r?"\n":o?"\t":i?"\r":a?"\b":s?"\f":t?'"':u);return It([s.String,t],n[2])}function Ft(e){const n=e.peek();e.advance();const t=n[1],r="-"===t[0],o=(r?t.substring(1):t).replace(/_/g,"");return It([s.Number,r?-Number(o):Number(o)],n[2])}function Lt(e,{requireDefaultValue:n,noRest:t,allowLiteralPatterns:o}={}){const i=e.tryPeek();if(o&&ot(i,"_"))return e.advance(),It([en,[]],i[2]);if(o&&zt(i)){if(lt(i)||ct(i)){const n=Ft(e);return It([Qe,[n]],i[2])}if(kt(i)){const n=_t(e,i);return It([Qe,[n]],i[2])}if(ot(i,"true")){e.advance();const n=It([s.ReservedSymbol,"true"],i[2]);return It([Qe,[n]],i[2])}if(ot(i,"false")){e.advance();const n=It([s.ReservedSymbol,"false"],i[2]);return It([Qe,[n]],i[2])}if(ot(i,"null")){e.advance();const n=It([s.ReservedSymbol,"null"],i[2]);return It([Qe,[n]],i[2])}}if(tt(i)){const t=Dt(e);if(!_n(t))throw new r("Expected user defined symbol",i[2]);const o=qt(e);if(n&&!o)throw new r("Expected assignment",e.peekSourceCodeInfo());return It([He,[t,o]],i[2])}if(st(i,"...")){if(t)throw new r("Rest element not allowed",i[2]);e.advance();const n=Fn(Dt(e));if(st(e.tryPeek(),"="))throw new r("Rest argument can not have default value",e.peekSourceCodeInfo());return It([Je,[n[1],void 0]],i[2])}if(yt(i)){e.advance();const t=[];let a=e.peek(),s=!1;for(;!vt(a);){if(s)throw new r("Rest argument must be last",a[2]);if(st(a,",")){t.push(null),e.advance(),a=e.peek();continue}const n=Lt(e,{allowLiteralPatterns:o});n[0]===Je&&(s=!0),t.push(n),a=e.peek(),vt(a)||(ut(a,","),e.advance()),a=e.peek()}e.advance();const u=qt(e);if(n&&!u)throw new r("Expected assignment",e.peekSourceCodeInfo());return It([Ze,[t,u]],i[2])}if(bt(i)){e.advance();const t={};let a=e.peek(),s=!1;for(;!xt(a);){if(s)throw new r("Rest argument must be last",a[2]);st(a,"...")&&(s=!0,e.advance());const n=Dt(e),u=Ct(n);if(a=e.peek(),ot(a,"as")){if(s)throw new r("Rest argument can not have alias",a[2]);e.advance();const n=Fn(Dt(e));if(t[n[1]])throw new r(`Duplicate binding name: ${n}`,a[2]);t[u]=It([He,[n,qt(e)]],i[2])}else if(xt(a)||st(a,",")||st(a,"=")){const o=Fn(n,n[2]);if(t[o[1]])throw new r(`Duplicate binding name: ${o}`,a[2]);if(s&&st(e.tryPeek(),"="))throw new r("Rest argument can not have default value",e.peekSourceCodeInfo());t[o[1]]=It(s?[Je,[o[1],qt(e)]]:[He,[o,qt(e)]],i[2])}else if(st(a,":")){if(e.advance(),a=e.peek(),o){if(!bt(a)&&!yt(a)&&!zt(a))throw new r("Expected literal, object or array pattern",a[2])}else if(!bt(a)&&!yt(a))throw new r("Expected object or array",a[2]);t[u]=Lt(e,{allowLiteralPatterns:o})}xt(e.peek())||(ut(e.peek(),","),e.advance()),a=e.peek()}e.advance(),a=e.peek();const u=qt(e);if(n&&!u)throw new r("Expected assignment",a[2]);return It([Xe,[t,u]],i[2])}throw new r("Expected symbol",e.peekSourceCodeInfo())}function qt(e){if(st(e.tryPeek(),"="))return e.advance(),e.parseExpression()}function zt(e){return lt(e)||ct(e)||kt(e)||ot(e,"true")||ot(e,"false")||ot(e,"null")}function Wt(e,n){e.advance();const t=Lt(e,{requireDefaultValue:!0,noRest:!0}),r=t[1][1];t[1][1]=void 0;const o=It([s.Binding,[t,r]],n[2]);return It([s.SpecialExpression,[Un.let,o]],n[2])}function Kt(e){const n=function(e){const n=rt(e.tryPeek()),t=Fn(Dt(e));it(e.tryPeek(),"in"),e.advance();const r=e.parseExpression();return It([s.Binding,[It([He,[t,void 0]],n[2]),r]],n[2])}(e),t=[];let o=e.peek();Yt(o,["let","when","while"]);const i=[];if("let"===o[1])for(t.push("&let");tt(o,"let");){const n=Wt(e,o),t=i.flatMap(e=>Object.keys(fn(e[1][0])));if(Object.keys(fn(n[1][1][1][0])).some(e=>t.includes(e)))throw new r("Duplicate binding",n[1][1][2]);i.push(n[1][1]),o=e.peek(),Yt(o,["let","when","while"]),o=e.peek()}let a,u;for(;ot(o,"when")||ot(o,"while");){e.advance(),"when"===o[1]?(t.push("&when"),a=e.parseExpression()):(t.push("&while"),u=e.parseExpression()),o=e.peek();Yt(o,t.includes("&when")&&t.includes("&while")?[]:t.includes("&when")?["while"]:["when"]),o=e.peek()}return Yt(o,[]),[n,i,a,u]}function Yt(e,n){if(!function(e,n){if(st(e,",")||pt(e))return!0;for(const t of n){if("let"===t&&tt(e,"let"))return!0;if(["when","while"].includes(t)&&ot(e,t))return!0}return!1}(e,n)){const t=`${[...n,","].map(e=>`"${e}"`).join(", ")} or ")"`;throw new r(`Expected symbol ${t}`,e[2])}}const Gt=(1+Math.sqrt(5))/2,Ht={E:Math.E,"-E":-Math.E,"ε":Math.E,"-ε":-Math.E,PI:Math.PI,"-PI":-Math.PI,"π":Math.PI,"-π":-Math.PI,PHI:Gt,"-PHI":-Gt,"φ":Gt,"-φ":-Gt,POSITIVE_INFINITY:Number.POSITIVE_INFINITY,"∞":Number.POSITIVE_INFINITY,NEGATIVE_INFINITY:Number.NEGATIVE_INFINITY,"-∞":Number.NEGATIVE_INFINITY,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,MIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,MAX_VALUE:Number.MAX_VALUE,MIN_VALUE:Number.MIN_VALUE,NaN:Number.NaN},Jt={true:!0,false:!1,null:null,do:null,else:null,case:null,each:null,in:null,when:null,while:null,function:null,as:null,then:null,end:null,with:null,_:null,...Ht};function Xt(e){const n=at(e.tryPeek());e.advance();const t=n[1];return function(e){return e in Ht}(t)?It([s.Number,Ht[t]],n[2]):It([s.ReservedSymbol,n[1]],n[2])}const Zt=/^\$([1-9]\d?)?$/;function Qt(e){const n=e.peek();if(ft(n)&&tt(e.peekAhead(1))&&st(e.peekAhead(2),"->"))return null;try{const t=function(e){const n=e.peek();if(tt(n))return[It([He,[Dt(e),void 0]],n[2])];dt(n),e.advance();let t=!1,o=!1;const i=[];for(;!e.isAtEnd()&&!pt(e.peek())&&!tt(e.peek(),"let");){if(t)throw new r("Rest argument must be last",e.peekSourceCodeInfo());const n=Lt(e);if(void 0!==n[1][1]&&(o=!0),n[0]===Je&&(t=!0),o&&!n[1][1])throw new r("Default arguments must be last",e.peekSourceCodeInfo());if(i.push(n),!st(e.peek(),",")&&!pt(e.peek())&&!tt(e.peek(),"let"))throw new r("Expected comma or closing parenthesis",e.peekSourceCodeInfo());st(e.peek(),",")&&e.advance()}if(!pt(e.peek()))throw new r("Expected closing parenthesis",e.peekSourceCodeInfo());return e.advance(),i}(e);if(!st(e.peek(),"->"))return null;let o;if(e.advance(),ot(e.peek(),"do")){const n=Bt(e),t=n[1][2];o=t&&t.length>0?[n]:n[1][1]}else o=[e.parseExpression()];return It([s.SpecialExpression,[Un["0_lambda"],[t,o]]],n[2])}catch{return null}}function er(e,n){if(e.advance(),qn(n)&&n[1]===Un.effect)return function(e,n){const t=n[2],o=e.peek();if(!tt(o))throw new r("effect expects a dotted name identifier",o[2]);let i=o[1];e.advance();for(;st(e.tryPeek(),".");){e.advance();const n=e.peek();if(!tt(n))throw new r("Expected identifier after dot in effect name",n[2]);i+=`.${n[1]}`,e.advance()}if(!pt(e.tryPeek()))throw new r("Expected closing parenthesis after effect name",e.peekSourceCodeInfo());return e.advance(),It([s.SpecialExpression,[Un.effect,i]],t)}(e,n);const t=[];for(;!e.isAtEnd()&&!pt(e.tryPeek());){st(e.tryPeek(),"...")?(e.advance(),t.push(It([s.Spread,e.parseExpression()],e.peekSourceCodeInfo()))):t.push(e.parseExpression());const n=e.tryPeek();if(!st(n,",")&&!pt(n))throw new r("Expected comma or closing parenthesis",e.tryPeek()?.[2]);st(n,",")&&e.advance()}if(!pt(e.tryPeek()))throw new r("Expected closing parenthesis",e.peekSourceCodeInfo());if(e.advance(),!qn(n))return Ln(n)||_n(n)?jt(n,t,n[2]):It([s.NormalExpression,[n,t]],n[2]);{const e=n[1];if(e===Un.import){if(1!==t.length)throw new r(`import expects exactly 1 argument, got ${t.length}`,n[2]);const o=t[0];if(!_n(o))throw new r("import expects a module name (symbol), got a non-symbol argument",o[2]??n[2]);const i=o[1];return It([s.SpecialExpression,[e,i]],n[2])}const o=e;switch(X(Rn.specialExpressions[o].arity,t.length,n[2]),o){case Un["||"]:case Un["&&"]:case Un.recur:case Un.array:case Un.object:case Un["??"]:return It([s.SpecialExpression,[o,t]],n[2]);case Un["defined?"]:{const[e]=t;return It([s.SpecialExpression,[o,e]],n[2])}case Un.perform:{const[e,...r]=t;return It([s.SpecialExpression,[o,e,r]],n[2])}case Un.parallel:case Un.race:return It([s.SpecialExpression,[o,t]],n[2]);case Un["0_lambda"]:throw new r(`${o} is not allowed`,n[2]);default:throw new r(`Unknown special expression: ${o}`,n[2])}}}function nr(e){const n=wt(e.tryPeek());e.advance();const t=[];for(;!e.isAtEnd()&&!xt(e.tryPeek());){if(st(e.tryPeek(),"..."))e.advance(),t.push(It([s.Spread,e.parseExpression()],e.peekSourceCodeInfo()));else{const n=e.tryPeek();if(kt(n)){const r=_t(e,n);t.push(It([s.String,r[1]],n[2]))}else if(tt(n)){const r=n[1].startsWith("'")?Pt(n[1]):n[1];t.push(It([s.String,r],n[2])),e.advance()}else{if(!yt(n))throw new r("Expected key to be a symbol or a string",e.peekSourceCodeInfo());e.advance(),t.push(e.parseExpression()),gt(e.tryPeek()),e.advance()}ut(e.tryPeek(),":"),e.advance(),t.push(e.parseExpression())}const n=e.tryPeek();if(!st(n,",")&&!xt(n))throw new r("Expected comma or closing brace",e.peekSourceCodeInfo());st(n,",")&&e.advance()}var o;return xt(o=e.tryPeek())||St("RBrace",void 0,o),e.advance(),It([s.SpecialExpression,[Un.object,t]],n[2])}function tr(e){let n=function(e){const n=e.peek();if(ft(n)){e.storePosition();const n=Qt(e);if(n)return n;e.restorePosition(),e.advance();const t=e.parseExpression();if(!pt(e.peek()))throw new r("Expected closing parenthesis",e.peekSourceCodeInfo());return e.advance(),t}if(st(n)){const t=n[1];if(Qn(t))return e.advance(),It(void 0!==Un[t]?[s.SpecialBuiltinSymbol,Un[t]]:[s.NormalBuiltinSymbol,Ke[t]],n[2]);if("->"===t)return function(e){const n=e.peek();e.advance();const t=e.getPosition();let o;if(ot(e.peek(),"do")){const n=Bt(e),t=n[1][2];o=t&&t.length>0?[n]:n[1][1]}else o=[e.parseExpression()];const i=e.getPosition()-1;let a=0,u="NOT_SET";for(let o=t;o<=i;o+=1){const t=e.getTokenAt(o);if(tt(t)){const e=Zt.exec(t[1]);if(e){const t=e[1]??"1";if("1"===t){if(!e[1]&&"WITH_1"===u||e[1]&&"NAKED"===u)throw new r("Please make up your mind, either use $ or $1",n[2]);u=e[1]?"WITH_1":"NAKED"}if(a=Math.max(a,Number(t)),a>20)throw new r("Can't specify more than 20 arguments",n[2])}}}const l=[];for(let e=1;e<=a;e+=1)1===e&&"NAKED"===u?l.push(It([He,[[s.UserDefinedSymbol,"$"],void 0]],n[2])):l.push(It([He,[[s.UserDefinedSymbol,`$${e}`],void 0]],n[2]));return It([s.SpecialExpression,[Un["0_lambda"],[l,o]]],n[2])}(e);throw new r(`Illegal operator: ${t}`,n[2])}if(bt(n))return nr(e);if(yt(n))return function(e){const n=mt(e.tryPeek());e.advance();const t=[];for(;!e.isAtEnd()&&!vt(e.tryPeek());){st(e.tryPeek(),"...")?(e.advance(),t.push(It([s.Spread,e.parseExpression()],e.peekSourceCodeInfo()))):t.push(e.parseExpression());const n=e.tryPeek();if(!st(n,",")&&!vt(n))throw new r("Expected comma or closing parenthesis",e.peekSourceCodeInfo());st(n,",")&&e.advance()}return gt(e.tryPeek()),e.advance(),It([s.SpecialExpression,[Un.array,t]],n[2])}(e);const t=n[0];switch(t){case"Number":case"BasePrefixedNumber":return Ft(e);case"string":return _t(e,n);case"Symbol":{e.storePosition();const n=Qt(e);return n||(e.restorePosition(),Dt(e))}case"ReservedSymbol":return Xt(e);case"RegexpShorthand":return function(e){const n=e.peek();e.advance();const t=n[1].lastIndexOf('"'),r=n[1].substring(2,t),o=n[1].substring(t+1),i=It([s.String,r],n[2]),a=It([s.String,o],n[2]);return It([s.NormalExpression,[It([s.NormalBuiltinSymbol,Ke.regexp],n[2]),[i,a]]],n[2])}(e);default:throw new r(`Unknown token type: ${t}`,n[2])}}(e),t=e.tryPeek();for(;st(t,".")||yt(t)||ft(t);)if("."===t[1]){e.advance();const o=e.tryPeek();if(!tt(o))throw new r("Expected symbol",e.peekSourceCodeInfo());n=rr(n,It([s.String,o[1]],o[2]),t[2]),e.advance(),t=e.tryPeek()}else if(yt(t)){e.advance();const o=e.parseExpression();if(!vt(e.tryPeek()))throw new r("Expected closing bracket",e.peekSourceCodeInfo());n=rr(n,o,t[2]),e.advance(),t=e.tryPeek()}else ft(t)&&(n=er(e,n),t=e.tryPeek());return n}function rr(e,n,t){return It([s.NormalExpression,[[s.NormalBuiltinSymbol,Ke.get],[e,n]]],t)}function or(e,n=0){const t=e.tryPeek();let o;if(tt(t))switch(t[1]){case"let":return Wt(e,t);case"if":case"unless":o=function(e,n){const t="unless"===n[1];e.advance();const r=e.parseExpression();it(e.tryPeek(),"then"),e.advance();const o=Rt(e,["else","end"]);let i;return ot(e.tryPeek(),"else")&&(e.advance(),i=Rt(e,["end"])),e.advance(),It(t?[s.SpecialExpression,[Un.unless,[r,o,i]]]:[s.SpecialExpression,[Un.if,[r,o,i]]],n[2])}(e,t);break;case"cond":o=function(e,n){e.advance();const t=[];for(;!e.isAtEnd()&&!ot(e.tryPeek(),"end");){it(e.tryPeek(),"case"),e.advance();const n=e.parseExpression();it(e.tryPeek(),"then"),e.advance();const r=Rt(e,["case","end"]);if(t.push([n,r]),ot(e.tryPeek(),"end"))break}return it(e.tryPeek()),e.advance(),It([s.SpecialExpression,[Un.cond,t]],n[2])}(e,t);break;case"match":o=function(e,n){e.advance();const t=e.parseExpression(),r=[];for(;!e.isAtEnd()&&!ot(e.tryPeek(),"end");){it(e.tryPeek(),"case"),e.advance();const n=Lt(e,{allowLiteralPatterns:!0});let t;ot(e.tryPeek(),"when")&&(e.advance(),t=e.parseExpression()),it(e.tryPeek(),"then"),e.advance();const o=Rt(e,["case","end"]);if(r.push([n,o,t]),ot(e.tryPeek(),"end"))break}return it(e.tryPeek(),"end"),e.advance(),It([s.SpecialExpression,[Un.match,t,r]],n[2])}(e,t);break;case"for":case"doseq":o=function(e,n){const t="doseq"===n[1];e.advance(),dt(e.tryPeek()),e.advance();const o=[];for(;!e.isAtEnd()&&!pt(e.tryPeek());){const n=Kt(e),t=o.flatMap(e=>Object.keys(fn(e[0][1][0]))),i=fn(n[0][1][0]);if(Object.keys(i).some(e=>t.includes(e)))throw new r("Duplicate binding",n[0][2]);o.push(n),st(e.tryPeek(),",")&&e.advance()}ht(e.tryPeek()),e.advance(),ut(e.tryPeek(),"->"),e.advance();const i=e.parseExpression();return It(t?[s.SpecialExpression,[Un.doseq,o,i]]:[s.SpecialExpression,[Un.for,o,i]],n[2])}(e,t);break;case"loop":o=function(e,n){e.advance(),dt(e.tryPeek()),e.advance();const t=[];let o=e.tryPeek();for(;!e.isAtEnd()&&!pt(o);){const n=Lt(e,{requireDefaultValue:!0,noRest:!0}),r=n[1][1];n[1][1]=void 0,t.push(It([s.Binding,[n,r]],n[2])),st(e.tryPeek(),",")&&e.advance(),o=e.tryPeek()}if(0===t.length)throw new r("Expected binding",e.peekSourceCodeInfo());ht(o),e.advance(),ut(e.tryPeek(),"->"),e.advance();const i=e.parseExpression();return It([s.SpecialExpression,[Un.loop,t,i]],n[2])}(e,t)}else ot(t,"do")&&(o=Bt(e));o||=tr(e);let i=e.tryPeek();for(;!Ot(e);){if(Et(i)){const t=i[1],r=Vt(t,i[2]);if(r<=n&&(12!==r||12!==n))break;const a=It(Un[t]?[s.SpecialBuiltinSymbol,Un[t]]:[s.NormalBuiltinSymbol,Ke[t]],i[2]);e.advance();o=Mt(i,a,o,or(e,r),i[2])}else if(tt(i)){if(!Xn(i[1]))break;const t=3;if(t<=n)break;const a=Dt(e),s=or(e,t);if(qn(a))throw new r("Special expressions are not allowed in binary functional operators",a[2]);o=jt(a,[o,s],i[2])}else{if("?"!==i?.[1])break;{if(1<=n)break;e.advance();const t=or(e);if(!st(e.tryPeek(),":"))throw new r("Expected :",e.peekSourceCodeInfo());e.advance();const i=or(e);o=It([s.SpecialExpression,[Un.if,[o,t,i]]],o[2])}}i=e.tryPeek()}return o}function ir(e){e.tokens.forEach(e=>{if("Error"===e[0])throw new r(e[3],e[2])});const n=[],t=function(e){const n=new Ut(e);return n.parseExpression=(e=0)=>or(n,e),n}(e);for(;!t.isAtEnd();)if(n.push(or(t,0)),st(t.tryPeek(),";"))t.advance();else if(!t.isAtEnd())throw new r("Expected ;",t.peekSourceCodeInfo());return n}function ar(e,{removeWhiteSpace:n}){const t=e.tokens.filter(e=>!(function(e){return"SingleLineComment"===e?.[0]}(e)||function(e){return"MultiLineComment"===e?.[0]}(e)||function(e){return"Shebang"===e?.[0]}(e)||n&&function(e){return"Whitespace"===e?.[0]}(e)));return{...e,tokens:t}}const sr=["(",")","[","]","{","}","'",'"',"`",",",".",";"," ","\n","\r","\t"],ur=["0","1","2","3","4","5","6","7","8","9",...sr],lr=new Set(sr),cr=new Set(ur),fr=/\s/,dr=[0],pr=(e,n)=>{if('"'!==e[n])return dr;let t='"',r=1,o=e[n+r],i=!1;for(;o&&('"'!==o||i);)r+=1,i?(i=!1,t+=o):("\\"===o&&(i=!0),t+=o),o=e[n+r];return o?(t+='"',[r+1,["string",t]]):[r,["Error",t,void 0,`Unclosed string at position ${n}`]]};function hr(e,n,t,r){return n===t.slice(r,r+n.length)?[n.length,[e,n]]:dr}const yr=/\d/,mr=/[0-7]/,vr=/[0-9a-f]/i,gr=/[01]/,br=/[\s)\]}(,;]/,wr=(e,n)=>{let t=e[n];if("'"===t){let r=1,o=e[n+r],i=!1;for(;"'"!==o||i;){if(void 0===o)return[r,["Error",t,void 0,`Unclosed quoted symbol at position ${n}`]];r+=1,i?(i=!1,t+=o):("\\"===o&&(i=!0),t+=o),o=e[n+r]}return t+="'",[r+1,["Symbol",t]]}if(!cr.has(t)){const r=n;let o=e[n+=1];for(;o&&!lr.has(o);)t+=o,o=e[n+=1];return t.endsWith(":")?[n-r-1,["Symbol",t.slice(0,-1)]]:[n-r,["Symbol",t]]}return dr},xr=[(e,n)=>{let t=e[n];if(!t||!fr.test(t))return dr;let r=t;for(t=e[n+=1];t&&fr.test(t);)r+=t,t=e[n+=1];return[r.length,["Whitespace",r]]},(e,n)=>{if("/"===e[n]&&"*"===e[n+1]){let t=2,r="/*";for(;("*"!==e[n+t]||"/"!==e[n+t+1])&&n+t+1<e.length;)r+=e[n+t],t+=1;return n+t+1>=e.length?[t,["Error",r,void 0,`Unclosed multi-line comment at position ${n}`]]:(r+="*/",t+=2,[t,["MultiLineComment",r]])}return dr},(e,n)=>{if("/"===e[n]&&"/"===e[n+1]){let t=2,r="//";for(;"\n"!==e[n+t]&&n+t<e.length;)r+=e[n+t],t+=1;return[t,["SingleLineComment",r]]}return dr},(e,n)=>{const t=wr(e,n);if(0===t[0]||!t[1])return dr;let r=t[1][1];r=r.startsWith("'")?r.slice(1,r.length-1):r;return void 0===Jt[r]?dr:[t[0],["ReservedSymbol",r]]},(e,n)=>hr("LParen","(",e,n),(e,n)=>hr("RParen",")",e,n),(e,n)=>hr("LBracket","[",e,n),(e,n)=>hr("RBracket","]",e,n),(e,n)=>hr("LBrace","{",e,n),(e,n)=>hr("RBrace","}",e,n),pr,(e,n)=>{if("#"!==e[n])return dr;const[t,r]=pr(e,n+1);if(!r)return dr;if("Error"===r[0]){return[t+1,["Error",`#${r[1]}`,void 0,`Unclosed regexp at position ${n}`]]}n+=t+1;let o=t+1,i="";for(;"g"===e[n]||"i"===e[n];)if(i+=e[n],o+=1,n+=1,i.includes(e[n]))return[o,["Error",`#${r[1]}${i}`,void 0,`Duplicated regexp option "${e[n]}"`]];return[o,["RegexpShorthand",`#${r[1]}${i}`]]},(e,n)=>{if("0"!==e[n])return dr;const t=e[n+1],r="b"===t||"B"===t?"binary":"o"===t||"O"===t?"octal":"x"===t||"X"===t?"hex":null;if(null===r)return dr;let o;for(o=n+2;o<e.length;o+=1){const n=e[o];if("binary"===r&&!gr.test(n))break;if("octal"===r&&!mr.test(n))break;if("hex"===r&&!vr.test(n))break}const i=o-n;if(i<=2)return dr;const a=e[o];return a&&!br.test(a)?dr:[i,["BasePrefixedNumber",e.substring(n,o)]]},(e,n)=>{let t;const r="-"===e[n],o="+"===e[n],i=r||o?n+1:n;let a=!1,s=!1;for(t=i;t<e.length;t+=1){const r=e[t];if("_"===r){if(!yr.test(e[t-1])||!yr.test(e[t+1]))return t===i?dr:[t-n+1,["Error",e.substring(n,t+1),void 0,`Invalid number format at position ${t+1}`]]}else if("."===r){if(t===i)return dr;if(a||s)return[t-n+1,["Error",e.substring(n,t+1),void 0,`Invalid number format at position ${t+1}`]];a=!0}else if("e"===r||"E"===r){if(t===i)return dr;if(s)return[t-n+1,["Error",e.substring(n,t+1),void 0,`Invalid number format at position ${t+1}`]];if("."===e[t-1]||"+"===e[t-1]||"-"===e[t-1])return[t-n+1,["Error",e.substring(n,t+1),void 0,`Invalid number format at position ${t+1}`]];"+"!==e[t+1]&&"-"!==e[t+1]||(t+=1),s=!0}else if(!yr.test(r))break}if((r||o)&&t===i)return dr;const u=t-n;if(0===u)return dr;const l=e[t];return l&&":"!==l&&!br.test(l)?[t-n+1,["Error",e.substring(n,t+1),void 0,`Invalid number format at position ${t+1}`]]:[u,["Number",e.substring(n,t)]]},(e,n)=>{const t=e.slice(n,n+3);if(n+2<e.length&&nt(t))return[3,["Operator",t]];const r=e.slice(n,n+2);if(n+1<e.length&&nt(r))return[2,["Operator",r]];const o=e[n]??"";return nt(o)?[1,["Operator",o]]:dr},wr];function kr(e,n,t){let r=0;const o={tokens:[],filePath:t,hasDebugData:n};for(;r<e.length;){const i=n?Er(e,r,t):void 0,a=Sr(e,r),[s,u]=a;r+=s,u&&(i&&(u[2]=i),o.tokens.push(u))}return o}function Er(e,n,t){const r=e.substring(0,n+1).split(/\r\n|\r|\n/),o=r[r.length-1],i=function(e,n){return e.split(/\r\n|\r|\n/)[n]}(e,r.length-1);return{code:i,position:{line:r.length,column:o.length},filePath:t}}function Sr(e,n){const t=n;if(0===n){const[r,o]=((e,n)=>{if("#"===e[n]&&"!"===e[n+1]){let t=2,r="#!";for(;"\n"!==e[n+t]&&n+t<e.length;)r+=e[n+t],t+=1;return[t,["SingleLineComment",r]]}return dr})(e,n);if(n+=r,r>0)return[n-t,o]}for(const r of xr){const[o,i]=r(e,n);if(n+=o,0!==o)return[n-t,i]}return[1,["Error",e[t],void 0,"Unrecognized character"]]}function Ir(e,n){if("*"===n)return!0;if(n.endsWith(".*")){const t=n.slice(0,-2);return e===t||e.startsWith(`${t}.`)}return e===n}function Nr(e,n){if(!n)return[];const t=[];for(const[r,o]of Object.entries(n))Ir(e,r)&&t.push([r,o]);return t}class Pr{k;snapshots;nextSnapshotIndex;meta;_brand="SuspensionSignal";constructor(e,n,t,r){this.k=e,this.snapshots=n,this.nextSnapshotIndex=t,this.meta=r}}function $r(e){return e instanceof Pr}class Ar{continuation;value;trimToIndex;_brand="ResumeFromSignal";constructor(e,n,t){this.continuation=e,this.value=n,this.trimToIndex=t}}function Cr(e){return e instanceof Ar}const jr=new Map;function Or(e){let n=jr.get(e);return n||(n={[p]:!0,name:e},jr.set(e,n)),n}class Mr{_contexts;globalContext;values;modules;valueModules;pure;constructor({contexts:e,values:n,modules:t,valueModules:r,pure:o}){this.globalContext=b(e[0]),this._contexts=e,this.values=n,this.modules=t??new Map,this.valueModules=r??new Map,this.pure=o??!1}getContextsRaw(){return this._contexts}getHostValues(){return this.values}getModuleScopeBindings(){const e=this._contexts[0],n={};for(const[t,r]of Object.entries(e))n[t]=r.value;return n}getGlobalContextIndex(){return this._contexts.indexOf(this.globalContext)}static fromDeserialized(e){const n=new Mr({contexts:e.contexts,values:e.values,modules:e.modules,pure:e.pure});return e.globalContextIndex>=0&&e.globalContextIndex<e.contexts.length&&(n.globalContext=e.contexts[e.globalContextIndex]),n}setContextsFromDeserialized(e,n){this._contexts=e,n>=0&&n<e.length&&(this.globalContext=e[n])}getModule(e){return this.modules.get(e)}getValueModule(e){return this.valueModules.has(e)?{value:this.valueModules.get(e),found:!0}:{value:void 0,found:!1}}registerValueModule(e,n){this.valueModules.set(e,n)}create(e){const n=this.globalContext,t=new Mr({contexts:[e,...this._contexts],values:this.values,modules:this.modules,valueModules:this.valueModules,pure:this.pure});return t.globalContext=n,t}new(e){return new Mr({contexts:[{},e],modules:this.modules,valueModules:this.valueModules,pure:this.pure})}addValues(e,n){const t=this._contexts[0];for(const[o,i]of Object.entries(e)){if(t[o])throw new r(`Cannot redefine value "${o}"`,n);const e=Ur(o);if(e)throw new r(`Cannot shadow ${e}`,n);t[o]={value:re(i)}}}getValue(e){for(const n of this._contexts){const t=n[e];if(t)return t.value}return this.values?.[e]}lookUp(e){const n=e[1];for(const e of this._contexts){const t=e[n];if(t)return t}const t=this.values?.[n];return void 0!==t?{value:re(t)}:null}evaluateSymbol(e){if(qn(e)){const n=e[1];switch(n){case Un["&&"]:case Un["||"]:case Un.array:case Un.object:case Un["defined?"]:case Un.recur:case Un["??"]:{const t=b(Rn.specialExpressions[n],e[2]);return{[f]:!0,functionType:"SpecialBuiltin",specialBuiltinSymbolType:n,sourceCodeInfo:e[2],arity:t.arity}}default:throw new r(`Unknown special builtin symbol type: ${n}`,e[2])}}if(Ln(e)){const n=e[1],t=Ye[n],r=t.name;return{[f]:!0,functionType:"Builtin",normalBuiltinSymbolType:n,sourceCodeInfo:e[2],arity:t.arity,name:r}}const n=this.lookUp(e);if(x(t=n)&&void 0!==t.value)return n.value;var t;throw new a(e[1],e[2])}}function Ur(e){return Bn.includes(e)?`special expression "${e}"`:Tn.includes(e)?`builtin function "${e}"`:"self"===e?`builtin value "${e}"`:null}function Vr(e){const n=Ur(e);if(n)throw new r(`Cannot shadow ${n}`,void 0)}function Rr(e={},n,t){const o=e.globalContext??{},i=e.contexts?[o,...e.contexts]:[o];let a;if(e.bindings)for(const[n,t]of Object.entries(e.bindings)){if(n.includes("."))throw new r(`Dots are not allowed in binding keys: "${n}"`,void 0);Vr(n),a||(a={}),a[n]=t}const s=new Mr({contexts:i,values:a,modules:n,pure:t});return e.globalModuleScope?s:s.create({})}function Tr(e,n){return Math.imul(e^255&n,16777619)}function Br(e,n){return e=Tr(e,n),e=Tr(e,n>>>8),e=Tr(e,n>>>16),e=Tr(e,n>>>24)}function Dr(e,n){for(let t=0;t<n.length;t++){const r=n.charCodeAt(t);e=Tr(e,r),e=Tr(e,r>>>8)}return e}function _r(e){let n=2166136261;if(null===e)return n=Tr(n,0),n>>>0;if(void 0===e)return n=Tr(n,7),n>>>0;const t=typeof e;if("boolean"===t)return n=Tr(n,e?1:2),n>>>0;if("number"===t)return n=Tr(n,3),n=Dr(n,Object.is(e,-0)?"-0":String(e)),n>>>0;if("string"===t)return n=Tr(n,4),n=Dr(n,e),n>>>0;if(Array.isArray(e)){n=Tr(n,5),n=Br(n,e.length);for(let t=0;t<e.length;t++)n=Br(n,_r(e[t]));return n>>>0}n=Tr(n,6);const r=Object.keys(e).sort();n=Br(n,r.length);for(const t of r)n=Dr(n,t),n=Br(n,_r(e[t]));return n>>>0}function Fr(e,n){if(e===n)return!0;if(null===e||null===n)return!1;if(typeof e!=typeof n)return!1;if(Array.isArray(e)){if(!Array.isArray(n))return!1;if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(!Fr(e[t],n[t]))return!1;return!0}if("object"!=typeof e)return!1;const t=e,r=n,o=Object.keys(t),i=Object.keys(r);if(o.length!==i.length)return!1;for(const e of o){if(!(e in r))return!1;if(!Fr(t[e],r[e]))return!1}return!0}function Lr(e){if(null===e)return 4;if(void 0===e)return 9;const n=typeof e;if("boolean"===n)return e?4:5;if("number"===n)return String(e).length;if("string"===n)return e.length+2;if(Array.isArray(e)){let n=2;for(let t=0;t<e.length;t++)n+=Lr(e[t])+1;return n}const t=e,r=Object.keys(t);let o=2;for(const e of r)o+=e.length+2+1+Lr(t[e])+1;return o}function qr(e,n,t,r){if(null===e||"object"!=typeof e)return _r(e);if(Array.isArray(e))for(let t=0;t<e.length;t++)qr(e[t],n,{parent:e,key:t});else{const t=e;for(const e of Object.keys(t))qr(t[e],n,{parent:t,key:e})}const o=_r(e),i=Lr(e);if(t&&i>=1){let r,a=n.get(o);a||(a=[],n.set(o,a));for(const n of a)if(Fr(n.value,e)){r=n;break}r?r.locations.push(t):a.push({hash:o,value:Wr(e),size:i,locations:[t]})}return o}function zr(e,n){if(null===e||"object"!=typeof e)return e;if(function(e){return null!==e&&"object"==typeof e&&"__poolRef"in e&&"number"==typeof e.__poolRef&&1===Object.keys(e).length}(e)){const t=e.__poolRef;if(!(t in n))throw new Error(`Unknown pool ref: ${t}`);return zr(n[t],n)}if(Array.isArray(e))return e.map(e=>zr(e,n));const t=e,r={};for(const e of Object.keys(t))r[e]=zr(t[e],n);return r}function Wr(e){if(null===e||"object"!=typeof e)return e;if(Array.isArray(e))return e.map(e=>Wr(e));const n=e,t={};for(const e of Object.keys(n))t[e]=Wr(n[e]);return t}function Kr(e,n){const t=new Map;let r=0;function o(e){if(e instanceof Mr){if(t.has(e))return;t.set(e,r++);for(const n of e.getContextsRaw())for(const e of Object.values(n))o(e.value)}else if(Array.isArray(e))for(const n of e)o(n);else if(null!==e&&"object"==typeof e)for(const n of Object.values(e))o(n)}function i(e,n){if(e instanceof Mr)return{__csRef:t.get(e)};if(Array.isArray(e))return e.map((e,n)=>i(e));if(null!==e&&"object"==typeof e){const n={};for(const[t,r]of Object.entries(e))n[t]=i(r);return n}return e}o(e),void 0!==n&&o(n);const a=Array.from(t.entries()).map(([e,n])=>({id:n,contexts:e.getContextsRaw().map((e,n)=>{const t={};for(const[n,r]of Object.entries(e))t[n]={value:i(r.value)};return t}),globalContextIndex:e.getGlobalContextIndex(),pure:e.pure})),s=i(e),u=void 0!==n?i(n):void 0;return{version:2,contextStacks:a,k:s,...void 0!==u?{meta:u}:{}}}function Yr(e,n,t,r){const o=Kr(e,r);n.length>0&&(o.snapshots=n),o.nextSnapshotIndex=t;const i=[o.contextStacks,o.k];if(void 0!==o.meta&&i.push(o.meta),o.snapshots)for(const e of o.snapshots)i.push(e);const{roots:a,pool:s}=function(e,n=200){const t=e.map(e=>Wr(e)),r=new Map;for(let e=0;e<t.length;e++)qr(t[e],r,null);const o={};let i=0;const a=Array.from(r.values()).flat().filter(e=>e.locations.length>1&&e.size>=n).sort((e,n)=>n.size-e.size),s=new Map;for(const e of a){if(s.has(e))continue;const n=i++;o[n]=e.value,s.set(e,n);for(const t of e.locations)Array.isArray(t.parent),t.parent[t.key]={__poolRef:n}}return{roots:t,pool:o}}(i,200);let u=0;if(o.contextStacks=a[u++],o.k=a[u++],void 0!==o.meta&&(o.meta=a[u++]),o.snapshots)for(let e=0;e<o.snapshots.length;e++)o.snapshots[e]=a[u++];return Object.keys(s).length>0&&(o.pool=s),o}function Gr(e,n){let t=e;if(2!==t.version)throw new r(`Unsupported suspension blob version: ${t.version} (expected 2)`,void 0);if(t.pool&&Object.keys(t.pool).length>0){const e=t.pool;t={...t,contextStacks:zr(t.contextStacks,e),k:zr(t.k,e),...void 0!==t.meta?{meta:zr(t.meta,e)}:{},...t.snapshots?{snapshots:t.snapshots.map(n=>zr(n,e))}:{}},delete t.pool}const o=new Map;for(const e of t.contextStacks){const t=e.contexts.map(()=>({})),r=Mr.fromDeserialized({contexts:t,globalContextIndex:e.globalContextIndex,values:n?.values,modules:n?.modules,pure:e.pure});o.set(e.id,r)}function i(e){if(function(e){return null!==e&&"object"==typeof e&&"__csRef"in e&&"number"==typeof e.__csRef}(e)){const n=o.get(e.__csRef);if(!n)throw new r(`Invalid suspension blob: unknown context stack ref ${e.__csRef}`,void 0);return n}if(Array.isArray(e))return e.map(i);if(null!==e&&"object"==typeof e){const n={};for(const[t,r]of Object.entries(e))n[t]=i(r);return n}return e}for(const e of t.contextStacks){const n=o.get(e.id),t=e.contexts.map(e=>{const n=e,t={};for(const[e,r]of Object.entries(n))t[e]={value:i(r.value)};return t});n.setContextsFromDeserialized(t,e.globalContextIndex)}return{k:i(t.k),meta:void 0!==t.meta?i(t.meta):void 0,snapshots:t.snapshots??[],nextSnapshotIndex:t.nextSnapshotIndex??0}}function Hr(){return"undefined"!=typeof process&&"function"==typeof process.stdout?.write}function Jr(e){return"string"==typeof e?e:null===e?"null":"number"==typeof e||"boolean"==typeof e?String(e):k(e)?"Builtin"===e.functionType?`<builtin function ${e.normalBuiltinSymbolType}>`:`<function ${e.n??"λ"}>`:T(e)?`<effect ${e.name}>`:V(e)?`/${e.s}/${e.f}`:"object"==typeof e&&e instanceof RegExp?`${e}`:JSON.stringify(Xr(e),null,2)}function Xr(e){if(e===Number.POSITIVE_INFINITY)return"∞";if(e===Number.NEGATIVE_INFINITY)return"-∞";if(k(e))return Jr(e);if(T(e))return Jr(e);if(V(e))return Jr(e);if(Array.isArray(e))return e.map(Xr);if("object"==typeof e&&null!==e){const n={};for(const[t,r]of Object.entries(e))n[t]=Xr(r);return n}return e}const Zr={"dvala.io.print":{handler:function(e,n){const t=e[0],r=Jr(t);return Hr()?process.stdout.write(r):console.log(r),{type:"Value",value:t,k:n}},arity:Z(1)},"dvala.io.println":{handler:function(e,n){const t=e[0],r=Jr(t);return Hr()?process.stdout.write(`${r}\n`):"function"==typeof globalThis.alert?globalThis.alert(r):console.log(r),{type:"Value",value:t,k:n}},arity:Z(1)},"dvala.io.error":{handler:(e,n)=>{const t=e[0],r=Jr(t);return Hr()?process.stderr.write(`${r}\n`):console.error(r),{type:"Value",value:t,k:n}},arity:Z(1)},"dvala.io.read-line":{handler:(e,n,t)=>{const o="string"==typeof e[0]?e[0]:"";if("function"==typeof globalThis.prompt){return{type:"Value",value:globalThis.prompt(o)??null,k:n}}throw new r('dvala.io.read-line is not supported in this environment. In Node.js, register a "dvala.io.read-line" host handler.',t)},arity:{min:0,max:1}},"dvala.io.read-stdin":{handler:(e,n,t)=>{if(!Hr()||!process.stdin)throw new r("dvala.io.read-stdin is not supported in this environment. Node.js is required.",t);return new Promise((e,t)=>{const r=[];process.stdin.setEncoding("utf-8"),process.stdin.on("data",e=>r.push(e)),process.stdin.on("end",()=>e({type:"Value",value:r.join(""),k:n})),process.stdin.on("error",e=>t(e)),process.stdin.resume()})},arity:Z(0)},"dvala.random":{handler:(e,n)=>({type:"Value",value:Math.random(),k:n}),arity:Z(0)},"dvala.random.uuid":{handler:(e,n)=>({type:"Value",value:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const n=16*Math.random()|0;return("x"===e?n:3&n|8).toString(16)}),k:n}),arity:Z(0)},"dvala.random.int":{handler:(e,n,t)=>{const o=e[0],i=e[1];if("number"!=typeof o||!Number.isInteger(o))throw new r(`dvala.random.int: min must be an integer, got ${"number"==typeof o?o:typeof o}`,t);if("number"!=typeof i||!Number.isInteger(i))throw new r(`dvala.random.int: max must be an integer, got ${"number"==typeof i?i:typeof i}`,t);if(i<=o)throw new r(`dvala.random.int: max (${i}) must be greater than min (${o})`,t);return{type:"Value",value:Math.floor(Math.random()*(i-o))+o,k:n}},arity:Z(2)},"dvala.random.item":{handler:(e,n,t)=>{const o=e[0];if(!Array.isArray(o))throw new r("dvala.random.item: argument must be an array, got "+typeof o,t);if(0===o.length)throw new r("dvala.random.item: cannot pick from an empty array",t);return{type:"Value",value:o[Math.floor(Math.random()*o.length)],k:n}},arity:Z(1)},"dvala.random.shuffle":{handler:(e,n,t)=>{const o=e[0];if(!Array.isArray(o))throw new r("dvala.random.shuffle: argument must be an array, got "+typeof o,t);const i=Array.from(o);for(let e=i.length-1;e>0;e--){const n=Math.floor(Math.random()*(e+1)),t=i[e];i[e]=i[n],i[n]=t}return{type:"Value",value:i,k:n}},arity:Z(1)},"dvala.time.now":{handler:(e,n)=>({type:"Value",value:Date.now(),k:n}),arity:Z(0)},"dvala.time.zone":{handler:(e,n)=>({type:"Value",value:Intl.DateTimeFormat().resolvedOptions().timeZone,k:n}),arity:Z(0)},"dvala.checkpoint":{handler:(e,n)=>({type:"Value",value:null,k:n}),arity:{min:0,max:1}},"dvala.sleep":{handler:(e,n,t)=>{const o=e[0];if("number"!=typeof o||o<0)throw new r(`dvala.sleep requires a non-negative number argument, got ${"number"==typeof o?o:typeof o}`,t);return new Promise(e=>{setTimeout(()=>e({type:"Value",value:null,k:n}),o)})},arity:Z(1)}};function Qr(e,n){switch(e[0]){case s.Number:case s.String:return e[1];case s.NormalBuiltinSymbol:case s.SpecialBuiltinSymbol:case s.UserDefinedSymbol:return n.evaluateSymbol(e);case s.ReservedSymbol:return so(e);case s.NormalExpression:{const t=function(e,n){const t=e[2];return nn(function(e,n){const t=[],o=[],i=an(e,(e,i)=>Wn(e)?nn(Qr(e[1],n),n=>{if(!Array.isArray(n))throw new r(`Spread operator requires an array, got ${m(e)}`,e[2]);t.push(...n)}):e[0]!==s.ReservedSymbol||"_"!==e[1]?nn(Qr(e,n),e=>{t.push(e)}):void o.push(i));return nn(i,()=>({params:t,placeholders:o}))}(e[1][1],n),({params:o,placeholders:i})=>{if(zn(e)){const s=e[1][0];if(i.length>0){return nn(Qr(s,n),e=>({[f]:!0,function:D(e,t),functionType:"Partial",params:o,placeholders:i,sourceCodeInfo:t,arity:Z(i.length)}))}if(Ln(s)){const t=s[1],i=Rn.allNormalExpressions[t];if(n.pure&&!1===i.pure)throw new r(`Cannot call impure function '${i.name}' in pure mode`,e[2]);return i.dvalaImpl?to(i.dvalaImpl,o,n,e[2]):i.evaluate(o,e[2],n,{executeFunction:eo})}{const r=n.getValue(s[1]);if(void 0!==r)return eo(D(r,t),o,n,t);throw new a(s[1],e[2])}}return nn(Qr(e[1][0],n),e=>{const r=D(e,t);if(i.length>0){return{[f]:!0,function:r,functionType:"Partial",params:o,placeholders:i,sourceCodeInfo:t,arity:Z(i.length)}}return eo(r,o,n,t)})})}(e,n);return nn(t,n=>{if("number"==typeof n&&Number.isNaN(n))throw new r("Number is NaN",e[2]);return xe(n)})}case s.SpecialExpression:{const t={type:"Eval",node:e,env:n,k:[]};try{return xe(Oo(t))}catch(t){if(t instanceof r&&t.message.includes("Unexpected async operation")){return Mo({type:"Eval",node:e,env:n,k:[]}).then(e=>xe(e))}throw t}}default:throw new r(`${l(e[0])}-node cannot be evaluated`,e[2])}}function eo(e,n,t,o){if(k(e))return no(e,n,t,o);if(Array.isArray(e))return oo(e,n,o);if(j(e))return ro(e,n,o);if("string"==typeof e)return io(e,n,o);if(G(e))return ao(e,n,o);throw new r("Unexpected function type",o)}function no(e,n,t,o){switch(e.functionType){case"UserDefined":return to(e,n,t,o);case"Partial":return function(e,n,t,o){const i=[...e.params];if(n.length!==e.placeholders.length)throw new r(`(partial) expects ${e.placeholders.length} arguments, got ${n.length}.`,o);const a=[...n];for(const n of e.placeholders)i.splice(n,0,a.shift());return eo(e.function,i,t,o)}(e,n,t,o);case"Comp":return function(e,n,t,o){const{params:i}=e;if(0===i.length){if(1!==n.length)throw new r(`(comp) expects one argument, got ${m(n.length)}.`,o);return P(n[0],o)}let a=n;for(let e=i.length-1;e>=0;e--){const n=i[e];a=nn(a,e=>nn(eo(D(n,o),e,t,o),e=>[e]))}return nn(a,e=>P(e[0],o))}(e,n,t,o);case"Constantly":return e.value;case"Juxt":return function(e,n,t,r){return function(e,n){const t=[];for(let r=0;r<e.length;r++){const o=n(e[r],r);if(o instanceof Promise)return tn(o,t,e,n,r);t.push(o)}return t}(e.params,e=>eo(D(e,r),n,t,r))}(e,n,t,o);case"Complement":return nn(eo(e.function,n,t,o),e=>!e);case"EveryPred":return function(e,n,t,r){const o=[];for(const i of e.params)for(const e of n)o.push(()=>eo(D(i,r),[e],t,r));return rn(o,(e,n)=>!!e&&nn(n(),e=>!!e),!0)}(e,n,t,o);case"SomePred":return function(e,n,t,r){const o=[];for(const i of e.params)for(const e of n)o.push(()=>eo(D(i,r),[e],t,r));return rn(o,(e,n)=>!!e||nn(n(),e=>!!e),!1)}(e,n,t,o);case"Fnull":return function(e,n,t,r){const o=n.map((n,t)=>null===n?re(e.params[t]):n);return eo(D(e.function,r),o,t,r)}(e,n,t,o);case"EffectMatcher":return function(e,n,t){X({min:1,max:1},n.length,e.sourceCodeInfo??t);const r=n[0];B(r,t);const o=r.name;if("string"===e.matchType)return Ir(o,e.pattern);const i=new RegExp(e.pattern,e.flags);return i.test(o)}(e,n,o);case"Builtin":{const i=Rn.allNormalExpressions[e.normalBuiltinSymbolType];return i.dvalaImpl?to(i.dvalaImpl,n,t,o):function(e,n,t,o){const i=b(Rn.allNormalExpressions[e.normalBuiltinSymbolType],o);if(t.pure&&!1===i.pure)throw new r(`Cannot call impure function '${e.name}' in pure mode`,o);if(i.dvalaImpl)return to(i.dvalaImpl,n,t,o);return i.evaluate(n,o,t,{executeFunction:eo})}(e,n,t,o)}case"SpecialBuiltin":return function(e,n,t,o){const i=b(Rn.specialExpressions[e.specialBuiltinSymbolType],o);if(i.evaluateAsNormalExpression)return i.evaluateAsNormalExpression(n,o,t,{executeFunction:eo});throw new r(`Special builtin function ${e.specialBuiltinSymbolType} is not supported as normal expression.`,o)}(e,n,t,o);case"Module":return function(e,n,t,o){const i=t.getModule(e.moduleName);if(!i)throw new r(`Module '${e.moduleName}' not found.`,o);const a=i.functions[e.functionName];if(!a)throw new r(`Function '${e.functionName}' not found in module '${e.moduleName}'.`,o);if(t.pure&&!1===a.pure)throw new r(`Cannot call impure function '${e.functionName}' in pure mode`,o);if(X(a.arity,n.length,o),a.dvalaImpl)return to(a.dvalaImpl,n,t,o);return a.evaluate(n,o,t,{executeFunction:eo})}(e,n,t,o)}}function to(e,n,o,i){function a(n){if(!J(e.arity,n.length))throw new r(`Expected ${e.arity} arguments, got ${n.length}.`,i);const s=e.evaluatedfunction,u=s[0],l=u.filter(e=>e[0]!==Je).length,c=o.create(e.evaluatedfunction[2]),f={self:{value:e}},d=[];let p,h;for(let e=0;e<n.length;e+=1)if(e<l){const t=e;p=nn(p,()=>{const e=re(n[t]);return nn(ln(u[t],e,e=>Qr(e,c.create(f))),e=>{Object.entries(e).forEach(([e,n])=>{f[e]={value:n}})})})}else d.push(re(n[e]));for(let e=n.length;e<l;e++){const n=e;h=nn(h,()=>{const e=u[n];return nn(Qr(e[1][1],o.create(f)),n=>nn(ln(e,n,e=>Qr(e,o.create(f))),e=>{Object.entries(e).forEach(([e,n])=>{f[e]={value:n}})}))})}return nn(p,()=>nn(h,()=>{const e=u.find(e=>e[0]===Je),n=void 0!==e?nn(ln(e,d,e=>Qr(e,o.create(f))),e=>{Object.entries(e).forEach(([e,n])=>{f[e]={value:n}})}):void 0;return nn(n,()=>{const e=c.create(f),n=rn(s[1],(n,t)=>Qr(t,e),null);return n instanceof Promise?n.catch(e=>{if(e instanceof t)return a(e.params);throw e}):n})}))}for(;;)try{return a(n)}catch(e){if(e instanceof t){n=e.params;continue}throw e}}function ro(e,n,t){if(1!==n.length)throw new r("Object as function requires one string parameter.",t);const o=n[0];return L(o,t),re(e[o])}function oo(e,n,t){if(1!==n.length)throw new r("Array as function requires one non negative integer parameter.",t);const o=n[0];return H(o,t,{integer:!0,nonNegative:!0}),re(e[o])}function io(e,n,t){if(1!==n.length)throw new r("String as function requires one Obj parameter.",t);const o=re(n[0]);if(j(o))return re(o[e]);if(G(o,{integer:!0}))return re(e[o]);throw new r(`string as function expects Obj or integer parameter, got ${m(o)}`,t)}function ao(e,n,t){if(H(e,void 0,{integer:!0}),1!==n.length)throw new r("Number as function requires one Arr parameter.",t);const o=n[0];return C(o,t),re(o[e])}function so(e){const n=e[1];if(!["true","false","null"].includes(n))throw new r(`Reserved symbol ${n} cannot be evaluated`,e[2]);return b(Jt[n],e[2])}function uo(e,n,t){switch(e[0]){case s.Number:case s.String:return{type:"Value",value:e[1],k:t};case s.NormalBuiltinSymbol:case s.SpecialBuiltinSymbol:case s.UserDefinedSymbol:return{type:"Value",value:n.evaluateSymbol(e),k:t};case s.ReservedSymbol:return{type:"Value",value:so(e),k:t};case s.NormalExpression:return function(e,n,t){const r=e[1][1],o=e[2],i={type:"NanCheck",sourceCodeInfo:o},a={type:"EvalArgs",node:e,index:0,params:[],placeholders:[],env:n,sourceCodeInfo:o};let u=0;for(;u<r.length;){const e=r[u];if(e[0]!==s.ReservedSymbol||"_"!==e[1])break;a.placeholders.push(a.params.length),u++}if(a.index=u,u>=r.length)return lo(a,[i,...t]);const l=r[u],c=[a,i,...t];if(Wn(l))return{type:"Eval",node:l[1],env:n,k:c};return{type:"Eval",node:l,env:n,k:c}}(e,n,t);case s.SpecialExpression:return function(e,n,t){const o=e[2],i=e[1][0];switch(i){case Un.if:case Un.unless:{const[r,a,s]=e[1][1];return{type:"Eval",node:r,env:n,k:[{type:"IfBranch",thenNode:a,elseNode:s,inverted:i===Un.unless,env:n,sourceCodeInfo:o},...t]}}case Un["&&"]:{const r=e[1][1];if(0===r.length)return{type:"Value",value:!0,k:t};const i={type:"And",nodes:r,index:1,env:n,sourceCodeInfo:o};return 1===r.length?{type:"Eval",node:r[0],env:n,k:t}:{type:"Eval",node:r[0],env:n,k:[i,...t]}}case Un["||"]:{const r=e[1][1];if(0===r.length)return{type:"Value",value:!1,k:t};const i={type:"Or",nodes:r,index:1,env:n,sourceCodeInfo:o};return 1===r.length?{type:"Eval",node:r[0],env:n,k:t}:{type:"Eval",node:r[0],env:n,k:[i,...t]}}case Un["??"]:{const r=e[1][1];if(0===r.length)return{type:"Value",value:null,k:t};const i=r[0];if(_n(i)&&null===n.lookUp(i)){if(1===r.length)return{type:"Value",value:null,k:t};const e={type:"Qq",nodes:r,index:2,env:n,sourceCodeInfo:o},i=r[1];return _n(i)&&null===n.lookUp(i)?function(e,n){return yo(e,n)}(e,t):2===r.length?{type:"Eval",node:i,env:n,k:t}:{type:"Eval",node:i,env:n,k:[e,...t]}}const a={type:"Qq",nodes:r,index:1,env:n,sourceCodeInfo:o};return 1===r.length?{type:"Eval",node:i,env:n,k:t}:{type:"Eval",node:i,env:n,k:[a,...t]}}case Un.cond:{const r=e[1][1];if(0===r.length)return{type:"Value",value:null,k:t};const i={type:"Cond",phase:"test",cases:r,index:0,env:n,sourceCodeInfo:o};return{type:"Eval",node:r[0][0],env:n,k:[i,...t]}}case Un.match:{const r=e[1][1],i=e[1][2];return{type:"Eval",node:r,env:n,k:[{type:"Match",phase:"matchValue",matchValue:null,cases:i,index:0,bindings:{},env:n,sourceCodeInfo:o},...t]}}case Un.block:{const r=e[1][1],i=e[1][2],a={},s=n.create(a);let u=t;if(i&&i.length>0){u=[{type:"TryWith",handlers:i.map(([e,t])=>({effectRef:Qr(e,n),handlerNode:t})),env:n,sourceCodeInfo:o},...t]}if(0===r.length)return{type:"Value",value:null,k:u};if(1===r.length)return{type:"Eval",node:r[0],env:s,k:u};const l={type:"Sequence",nodes:r,index:1,env:s,sourceCodeInfo:o};return{type:"Eval",node:r[0],env:s,k:[l,...u]}}case Un.let:{const r=e[1][1],i=r[1][0];return{type:"Eval",node:r[1][1],env:n,k:[{type:"LetBind",target:i,env:n,sourceCodeInfo:o},...t]}}case Un.loop:{const r=e[1][1],i=e[1][2];if(0===r.length){const e={},a={type:"LoopIterate",bindingNodes:r,bindingContext:e,body:i,env:n.create(e),sourceCodeInfo:o};return{type:"Eval",node:i,env:n.create(e),k:[a,...t]}}const a={type:"LoopBind",phase:"value",bindingNodes:r,index:0,context:{},body:i,env:n,sourceCodeInfo:o};return{type:"Eval",node:r[0][1][1],env:n,k:[a,...t]}}case Un.for:case Un.doseq:{const r=e[1][1],a=e[1][2],s=i===Un.for;if(0===r.length)return{type:"Value",value:s?[]:null,k:t};const u={},l=n.create(u),c={type:"ForLoop",returnResult:s,bindingNodes:r,body:a,result:[],phase:"evalCollection",bindingLevel:0,levelStates:[],context:u,env:l,sourceCodeInfo:o};return{type:"Eval",node:r[0][0][1][1],env:l,k:[c,...t]}}case Un.recur:{const r=e[1][1];if(0===r.length)return ko([],t,o);const i={type:"Recur",nodes:r,index:1,params:[],env:n,sourceCodeInfo:o};if(1===r.length){const e={...i,index:1};return{type:"Eval",node:r[0],env:n,k:[e,...t]}}return{type:"Eval",node:r[0],env:n,k:[i,...t]}}case Un.array:{const r=e[1][1];if(0===r.length)return{type:"Value",value:[],k:t};const i=r[0],a=Wn(i),s={type:"ArrayBuild",nodes:r,index:0,result:[],isSpread:a,env:n,sourceCodeInfo:o};return{type:"Eval",node:a?i[1]:i,env:n,k:[s,...t]}}case Un.object:{const r=e[1][1];if(0===r.length)return{type:"Value",value:{},k:t};const i=r[0],a=Wn(i),s={type:"ObjectBuild",nodes:r,index:0,result:{},currentKey:null,isSpread:a,env:n,sourceCodeInfo:o};return{type:"Eval",node:a?i[1]:i,env:n,k:[s,...t]}}case Un["0_lambda"]:{const r=function(e,n){const t={},r=e[0].reduce((e,n)=>(Object.keys(fn(n)).forEach(n=>{e[n]={value:null}}),e),{});return Kn(e[1],n.new(r),Rn,Qr).forEach(e=>{const r=n.getValue(e);N(r)&&(t[e]={value:r})}),[e[0],e[1],t]}(e[1][1],n),o=r[0].filter(e=>e[0]!==Je&&void 0===e[1][1]).length,i={min:o>0?o:void 0,max:r[0].some(e=>e[0]===Je)?void 0:r[0].length};return{type:"Value",value:{[f]:!0,sourceCodeInfo:e[2],functionType:"UserDefined",name:void 0,evaluatedfunction:r,arity:i,docString:""},k:t}}case Un["defined?"]:{const r=e[1][1];if(!_n(r))return{type:"Value",value:!0,k:t};return{type:"Value",value:null!==n.lookUp(r),k:t}}case Un.import:{const i=e[1][1],a=n.getValueModule(i);if(a.found)return{type:"Value",value:a.value,k:t};const s=n.getModule(i);if(!s)throw new r(`Unknown module: '${i}'`,o);const u={};for(const[e,n]of Object.entries(s.functions))u[e]={[f]:!0,sourceCodeInfo:o,functionType:"Module",moduleName:i,functionName:e,arity:n.arity};if(s.source){const e=ir(ar(kr(s.source,!1,void 0),{removeWhiteSpace:!0})),r=n.create({}),a={type:"ImportMerge",tsFunctions:u,moduleName:i,module:s,env:n,sourceCodeInfo:o};if(1===e.length)return{type:"Eval",node:e[0],env:r,k:[a,...t]};const l={type:"Sequence",nodes:e,index:1,env:r};return{type:"Eval",node:e[0],env:r,k:[l,a,...t]}}return n.registerValueModule(i,u),{type:"Value",value:u,k:t}}case Un.effect:return{type:"Value",value:Or(e[1][1]),k:t};case Un.perform:{const r=[e[1][1],...e[1][2]];if(1===r.length){const e={type:"PerformArgs",argNodes:r,index:1,params:[],env:n,sourceCodeInfo:o};return{type:"Eval",node:r[0],env:n,k:[e,...t]}}const i={type:"PerformArgs",argNodes:r,index:1,params:[],env:n,sourceCodeInfo:o};return{type:"Eval",node:r[0],env:n,k:[i,...t]}}case Un.parallel:return{type:"Parallel",branches:e[1][1],env:n,k:t};case Un.race:return{type:"Race",branches:e[1][1],env:n,k:t};default:throw new r(`Unknown special expression type: ${i}`,o)}}(e,n,t);default:throw new r(`${l(e[0])}-node cannot be evaluated`,e[2])}}function lo(e,n){const{node:t,params:o,placeholders:i,env:s,sourceCodeInfo:u}=e;if(zn(t)){const e=t[1][0];if(i.length>0){const t=s.evaluateSymbol(e);return{type:"Value",value:{[f]:!0,function:D(t,u),functionType:"Partial",params:o,placeholders:i,sourceCodeInfo:u,arity:Z(i.length)},k:n}}if(Ln(e)){const t=e[1],i=Rn.allNormalExpressions[t];if(s.pure&&!1===i.pure)throw new r(`Cannot call impure function '${i.name}' in pure mode`,u);if(i.dvalaImpl)return fo(i.dvalaImpl,o,s,u,n);return Co(i.evaluate(o,u,s,{executeFunction:eo}),n)}const l=s.getValue(e[1]);if(void 0!==l)return co(D(l,u),o,i,s,u,n);throw new a(e[1],u)}return{type:"Eval",node:t[1][0],env:s,k:[{type:"CallFn",params:o,placeholders:i,env:s,sourceCodeInfo:u},...n]}}function co(e,n,t,o,i,a){if(t.length>0){return{type:"Value",value:{[f]:!0,function:e,functionType:"Partial",params:n,placeholders:t,sourceCodeInfo:i,arity:Z(t.length)},k:a}}if(k(e))return function(e,n,t,r,o){switch(e.functionType){case"UserDefined":return fo(e,n,t,r,o);case"Partial":case"Comp":case"Constantly":case"Juxt":case"Complement":case"EveryPred":case"SomePred":case"Fnull":case"EffectMatcher":case"SpecialBuiltin":return Co(no(e,n,t,r),o);case"Module":{const i=t.getModule(e.moduleName),a=i?.functions[e.functionName];if(a?.dvalaImpl)return X(a.arity,n.length,r),fo(a.dvalaImpl,n,t,r,o);return Co(no(e,n,t,r),o)}case"Builtin":{const i=Rn.allNormalExpressions[e.normalBuiltinSymbolType];if(i.dvalaImpl)return fo(i.dvalaImpl,n,t,r,o);return Co(no(e,n,t,r),o)}}}(e,n,o,i,a);if(Array.isArray(e))return{type:"Value",value:oo(e,n,i),k:a};if(j(e))return{type:"Value",value:ro(e,n,i),k:a};if("string"==typeof e)return{type:"Value",value:io(e,n,i),k:a};if(G(e))return{type:"Value",value:ao(e,n,i),k:a};throw new r("Unexpected function type",i)}function fo(e,n,t,o,i){if(!J(e.arity,n.length))throw new r(`Expected ${e.arity} arguments, got ${n.length}.`,o);const a=e.evaluatedfunction,s=a[0],u=s.filter(e=>e[0]!==Je).length,l=t.create(e.evaluatedfunction[2]),c={self:{value:e}},f=[];for(let r=0;r<n.length;r+=1)if(r<u){const a=re(n[r]),u=ln(s[r],a,e=>Qr(e,l.create(c)));if(u instanceof Promise){return Co(to(e,n,t,o),i)}Object.entries(u).forEach(([e,n])=>{c[e]={value:n}})}else f.push(re(n[r]));for(let r=n.length;r<u;r++){const a=s[r],u=Qr(a[1][1],l.create(c));if(u instanceof Promise){return Co(to(e,n,t,o),i)}const f=ln(a,u,e=>Qr(e,l.create(c)));if(f instanceof Promise){return Co(to(e,n,t,o),i)}Object.entries(f).forEach(([e,n])=>{c[e]={value:n}})}const d=s.find(e=>e[0]===Je);if(d){const r=ln(d,f,e=>Qr(e,l.create(c)));if(r instanceof Promise){return Co(to(e,n,t,o),i)}Object.entries(r).forEach(([e,n])=>{c[e]={value:n}})}const p=a[1],h=l.create(c);if(0===p.length)return{type:"Value",value:null,k:i};const y={type:"FnBody",fn:e,bodyIndex:1,env:h,outerEnv:t,sourceCodeInfo:o};return p.length,{type:"Eval",node:p[0],env:h,k:[y,...i]}}function po(e,n,t){switch(e.type){case"Sequence":return function(e,n,t){const{nodes:r,index:o,env:i}=e;if(o>=r.length)return{type:"Value",value:n,k:t};const a={...e,index:o+1};if(o===r.length-1)return{type:"Eval",node:r[o],env:i,k:t};return{type:"Eval",node:r[o],env:i,k:[a,...t]}}(e,n,t);case"IfBranch":return function(e,n,t){const{thenNode:r,elseNode:o,inverted:i,env:a}=e,s=i?!n:n;if(s)return{type:"Eval",node:r,env:a,k:t};if(o)return{type:"Eval",node:o,env:a,k:t};return{type:"Value",value:null,k:t}}(e,n,t);case"Cond":return function(e,n,t){const{cases:r,index:o,env:i}=e;if("test"===e.phase){if(n)return{type:"Eval",node:r[o][1],env:i,k:t};const a=o+1;if(a>=r.length)return{type:"Value",value:null,k:t};const s={...e,index:a};return{type:"Eval",node:r[a][0],env:i,k:[s,...t]}}return{type:"Value",value:n,k:t}}(e,n,t);case"Match":return function(e,n,t){const{cases:r,env:o}=e;if("matchValue"===e.phase){const r=n;return ho({...e,matchValue:r,phase:"guard"},t)}if("guard"===e.phase){if(!n){return ho({...e,index:e.index+1,bindings:{}},t)}const i={};for(const[n,t]of Object.entries(e.bindings))i[n]={value:t};const a=o.create(i);return{type:"Eval",node:r[e.index][1],env:a,k:t}}return{type:"Value",value:n,k:t}}(e,n,t);case"And":return function(e,n,t){if(!n)return{type:"Value",value:n,k:t};const{nodes:r,index:o,env:i}=e;if(o>=r.length)return{type:"Value",value:n,k:t};if(o===r.length-1)return{type:"Eval",node:r[o],env:i,k:t};const a={...e,index:o+1};return{type:"Eval",node:r[o],env:i,k:[a,...t]}}(e,n,t);case"Or":return function(e,n,t){if(n)return{type:"Value",value:n,k:t};const{nodes:r,index:o,env:i}=e;if(o>=r.length)return{type:"Value",value:n,k:t};if(o===r.length-1)return{type:"Eval",node:r[o],env:i,k:t};const a={...e,index:o+1};return{type:"Eval",node:r[o],env:i,k:[a,...t]}}(e,n,t);case"Qq":return function(e,n,t){if(null!==n)return{type:"Value",value:n,k:t};return yo(e,t)}(e,n,t);case"ArrayBuild":return function(e,n,t){const{nodes:o,result:i,env:a,sourceCodeInfo:s}=e;if(e.isSpread){if(!Array.isArray(n))throw new r("Spread value is not an array",s);i.push(...n)}else i.push(n);const u=e.index+1;if(u>=o.length)return{type:"Value",value:i,k:t};const l=o[u],c=Wn(l),f={...e,index:u,isSpread:c};return{type:"Eval",node:c?l[1]:l,env:a,k:[f,...t]}}(e,n,t);case"ObjectBuild":return function(e,n,t){const{nodes:o,result:i,env:a,sourceCodeInfo:s}=e;if(e.isSpread){if(!x(n))throw new r("Spread value is not an object",s);Object.assign(i,n);const u=e.index+1;if(u>=o.length)return{type:"Value",value:i,k:t};const l=o[u],c=Wn(l),f={...e,index:u,currentKey:null,isSpread:c};return{type:"Eval",node:c?l[1]:l,env:a,k:[f,...t]}}if(null===e.currentKey){L(n,s);const i=o[e.index+1];if(void 0===i)throw new r("Missing value for key",s);return{type:"Eval",node:i,env:a,k:[{...e,currentKey:n},...t]}}{i[e.currentKey]=n;const r=e.index+2;if(r>=o.length)return{type:"Value",value:i,k:t};const s=o[r],u=Wn(s),l={...e,index:r,currentKey:null,isSpread:u};return{type:"Eval",node:u?s[1]:s,env:a,k:[l,...t]}}}(e,n,t);case"LetBind":return function(e,n,t){const{target:r,env:o,sourceCodeInfo:i}=e,a=ln(r,n,e=>Qr(e,o));return nn(a,e=>(o.addValues(e,i),{type:"Value",value:n,k:t}))}(e,n,t);case"LoopBind":return function(e,n,t){const{bindingNodes:r,index:o,context:i,body:a,env:s,sourceCodeInfo:u}=e,l=r[o],c=ln(l[1][0],n,e=>Qr(e,s.create(i)));return nn(c,n=>{Object.entries(n).forEach(([e,n])=>{i[e]={value:n}});const l=o+1;if(l>=r.length){const e=s.create(i);return{type:"Eval",node:a,env:e,k:[{type:"LoopIterate",bindingNodes:r,bindingContext:i,body:a,env:e,sourceCodeInfo:u},...t]}}const c={...e,index:l};return{type:"Eval",node:r[l][1][1],env:s.create(i),k:[c,...t]}})}(e,n,t);case"LoopIterate":return function(e,n,t){return{type:"Value",value:n,k:t}}(0,n,t);case"ForLoop":return function(e,n,t){const{returnResult:o,bindingNodes:i,result:a,env:s,sourceCodeInfo:u,context:l}=e,{asColl:c,isSeq:f}={asColl:(e,n)=>{if("string"==typeof e||Array.isArray(e)||j(e))return e;throw new r(`Expected collection, got ${m(e)}`,n)},isSeq:e=>"string"==typeof e||Array.isArray(e)};switch(e.phase){case"evalCollection":{const r=c(n,u),o=f(r)?r:Object.entries(r);if(0===o.length)return mo(e,t);const a=[...e.levelStates];a[e.bindingLevel]={collection:o,index:0};const d=i[e.bindingLevel];return nn(ln(d[0][1][0],P(o[0],u),e=>Qr(e,s)),n=>{Object.entries(n).forEach(([e,n])=>{l[e]={value:n}});const r=d[1];return r.length>0?go(e,a,r,0,t):bo(e,a,t)})}case"evalLet":throw new r("ForLoop evalLet should not reach applyFrame",u);case"evalWhen":{if(!n)return vo(e,t);const r=i[e.bindingLevel][3];if(r){const n={...e,phase:"evalWhile"};return{type:"Eval",node:r,env:s,k:[n,...t]}}return wo(e,t)}case"evalWhile":if(!n){const n=[...e.levelStates];return n[e.bindingLevel]={...n[e.bindingLevel],index:Number.POSITIVE_INFINITY},vo({...e,levelStates:n},t)}return wo(e,t);case"evalBody":return o&&a.push(n),vo(e,t);case"evalElement":throw new r(`Unexpected ForLoop phase: ${e.phase}`,u)}return{type:"Value",value:null,k:t}}(e,n,t);case"Recur":return function(e,n,t){const{nodes:r,index:o,params:i,env:a}=e;if(i.push(n),o>=r.length)return ko(i,t,e.sourceCodeInfo);const s={...e,index:o+1};return{type:"Eval",node:r[o],env:a,k:[s,...t]}}(e,n,t);case"PerformArgs":return function(e,n,t){const{argNodes:r,index:o,params:i,env:a}=e;if(i.push(n),o>=r.length){const n=i[0];B(n,e.sourceCodeInfo);return{type:"Perform",effect:n,args:i.slice(1),k:t,sourceCodeInfo:e.sourceCodeInfo}}const s={...e,index:o+1};return{type:"Eval",node:r[o],env:a,k:[s,...t]}}(e,n,t);case"TryWith":return function(e,n){return{type:"Value",value:e,k:n}}(n,t);case"EffectResume":return function(e,n){return{type:"Value",value:n,k:e.resumeK}}(e,n);case"ParallelResume":return function(e,n,t){return{type:"ParallelResume",value:n,branchCount:e.branchCount,completedBranches:e.completedBranches,suspendedBranches:e.suspendedBranches,k:t}}(e,n,t);case"EvalArgs":return function(e,n,t){const{node:o,params:i,placeholders:a,env:u}=e,l=o[1][1],c=l[e.index];if(Wn(c)){if(!Array.isArray(n))throw new r(`Spread operator requires an array, got ${m(n)}`,c[2]);i.push(...n)}else i.push(n);let f=e.index+1;for(;f<l.length;){const e=l[f];if(e[0]!==s.ReservedSymbol||"_"!==e[1])break;a.push(i.length),f++}if(f>=l.length)return lo({...e,index:f},t);const d={...e,index:f},p=l[f];if(Wn(p))return{type:"Eval",node:p[1],env:u,k:[d,...t]};return{type:"Eval",node:p,env:u,k:[d,...t]}}(e,n,t);case"CallFn":return function(e,n,t){const r=D(n,e.sourceCodeInfo);return co(r,e.params,e.placeholders,e.env,e.sourceCodeInfo,t)}(e,n,t);case"FnBody":return function(e,n,t){const{fn:r,bodyIndex:o,env:i}=e,a=r.evaluatedfunction[1];if(o>=a.length)return{type:"Value",value:n,k:t};const s={...e,bodyIndex:o+1};return{type:"Eval",node:a[o],env:i,k:[s,...t]}}(e,n,t);case"BindingDefault":return function(e,n,t){const{target:o,record:i,env:a,sourceCodeInfo:s}=e,u=ln(o,n,e=>Qr(e,a));if(u instanceof Promise)throw new r("Async binding default evaluation not supported in trampoline yet",s);return Object.assign(i,u),{type:"Value",value:n,k:t}}(e,n,t);case"NanCheck":return function(e,n,t){if("number"==typeof n&&Number.isNaN(n))throw new r("Number is NaN",e.sourceCodeInfo);return{type:"Value",value:xe(n),k:t}}(e,n,t);case"DebugStep":return function(e,n,t){if("awaitValue"===e.phase){const r={expression:e.sourceCodeInfo?.code??"",value:n,location:e.sourceCodeInfo?{line:e.sourceCodeInfo.position.line,column:e.sourceCodeInfo.position.column}:{line:0,column:0},env:Ao(e.env)},o={type:"DebugStep",phase:"awaitPerform",sourceCodeInfo:e.sourceCodeInfo,env:e.env};return{type:"Perform",effect:Or("dvala.debug.step"),args:[r],k:[o,...t]}}return{type:"Value",value:n,k:t}}(e,n,t);case"ImportMerge":{const r=j(n)?n:{};for(const[n,t]of Object.entries(r)){const r=e.module.functions[n];r&&S(t)&&(r.dvalaImpl=t)}const o={};for(const[n,t]of Object.entries(r))e.module.functions[n]||(o[n]=t);const i={...e.tsFunctions,...o};return e.env.registerValueModule(e.moduleName,i),{type:"Value",value:i,k:t}}default:throw new r(`Unhandled frame type: ${e.type}`,void 0)}}function ho(e,n){const{matchValue:t,cases:o,index:i,env:a,sourceCodeInfo:s}=e;for(let u=i;u<o.length;u++){const[i,l,c]=o[u],f=pn(i,t,e=>Qr(e,a));if(f instanceof Promise)throw new r("Async pattern matching not supported in trampoline yet",s);if(null===f)continue;if(c){const t={};for(const[e,n]of Object.entries(f))t[e]={value:n};return{type:"Eval",node:c,env:a.create(t),k:[{...e,phase:"guard",index:u,bindings:f},...n]}}const d={};for(const[e,n]of Object.entries(f))d[e]={value:n};return{type:"Eval",node:l,env:a.create(d),k:n}}return{type:"Value",value:null,k:n}}function yo(e,n){const{nodes:t,env:r}=e;let{index:o}=e;for(;o<t.length;){const e=t[o];if(!_n(e)||null!==r.lookUp(e))break;o++}if(o>=t.length)return{type:"Value",value:null,k:n};if(o===t.length-1)return{type:"Eval",node:t[o],env:r,k:n};const i={...e,index:o+1};return{type:"Eval",node:t[o],env:r,k:[i,...n]}}function mo(e,n){return{type:"Value",value:e.returnResult?e.result:null,k:n}}function vo(e,n){const{bindingNodes:t,env:r,sourceCodeInfo:o,context:i}=e,a=[...e.levelStates],s=e.bindingLevel,u=a[s],l=u.index+1;if(l>=u.collection.length)return 0===s?mo(e,n):vo({...e,bindingLevel:s-1},n);a[s]={...u,index:l};const c=t[s];return nn(ln(c[0][1][0],P(u.collection[l],o),e=>Qr(e,r)),t=>{Object.entries(t).forEach(([e,n])=>{i[e]={value:n}});const r=c[1];return r.length>0?go({...e,levelStates:a,bindingLevel:s},a,r,0,n):bo({...e,levelStates:a,bindingLevel:s},a,n)})}function go(e,n,t,r,o){const{env:i,context:a}=e;let s;for(let e=r;e<t.length;e++){const n=e;s=nn(s,()=>{const e=t[n],[r,o]=e[1];return nn(Qr(o,i),e=>nn(ln(r,e,e=>Qr(e,i)),e=>{Object.entries(e).forEach(([e,n])=>{a[e]={value:n}})}))})}return nn(s,()=>bo({...e,levelStates:n},n,o))}function bo(e,n,t){const{bindingNodes:r,env:o}=e,i=r[e.bindingLevel],a=i[2],s=i[3];if(a){return{type:"Eval",node:a,env:o,k:[{...e,levelStates:n,phase:"evalWhen"},...t]}}if(s){return{type:"Eval",node:s,env:o,k:[{...e,levelStates:n,phase:"evalWhile"},...t]}}return wo({...e,levelStates:n},t)}function wo(e,n){const{bindingNodes:t,body:r,env:o}=e,i=e.bindingLevel+1;if(i<t.length){return{type:"Eval",node:t[i][0][1][1],env:o,k:[{...e,phase:"evalCollection",bindingLevel:i},...n]}}const a={...e,phase:"evalBody"};return{type:"Eval",node:r,env:o.create(e.context),k:[a,...n]}}function xo(e,n,t,r,o){const i=Or("dvala.error"),a=[e.shortMessage];for(let t=0;t<n.length;t++){const r=n[t];if("TryWith"===r.type)for(const o of r.handlers)if(Eo(o,i,r.env,e.sourceCodeInfo))return So(o,r,a,n,t,e.sourceCodeInfo)}const s=Nr("dvala.error",t);return s.length>0?No("dvala.error",s,a,n,r,e.sourceCodeInfo,o):null}function ko(e,n,t){for(let o=0;o<n.length;o++){const i=n[o];if("LoopIterate"===i.type){const{bindingNodes:a,bindingContext:s,body:u,env:l}=i,c=n.slice(o+1);if(e.length!==a.length)throw new r(`recur expected ${a.length} parameters, got ${e.length}`,t);const f=an(a,(n,t)=>nn(ln(n[1][0],re(e[t]),e=>Qr(e,l)),e=>{Object.entries(e).forEach(([e,n])=>{s[e]={value:n}})}));return nn(f,()=>{const e=l.getContextsRaw()[0];if(e!==s)for(const[n,t]of Object.entries(s))e[n]=t;const n={type:"LoopIterate",bindingNodes:a,bindingContext:s,body:u,env:l,sourceCodeInfo:i.sourceCodeInfo};return{type:"Eval",node:u,env:l,k:[n,...c]}})}if("FnBody"===i.type){const{fn:t,outerEnv:r}=i,a=n.slice(o+1);return fo(t,e,r,i.sourceCodeInfo,a)}}throw new r("recur called outside of loop or function body",t)}function Eo(e,n,t,o){if(T(e.effectRef))return e.effectRef.name===n.name;if(k(e.effectRef)){const i=eo(e.effectRef,[n],t,o);if(i instanceof Promise)throw new r("Effect handler predicates must be synchronous",o);return!!i}return!1}function So(e,n,t,r,o,i){const a=[{type:"EffectResume",resumeK:r,sourceCodeInfo:i},...r.slice(o+1)];return co(D(Qr(e.handlerNode,n.env),n.sourceCodeInfo),[t],[],n.env,i,a)}function Io(e,n,t,i,a,s,u){if("dvala.checkpoint"===e.name&&u){const e=n[0],r={continuation:Kr(t),timestamp:Date.now(),index:u.nextSnapshotIndex++,runId:u.runId,...void 0!==e?{meta:e}:{}};u.snapshots.push(r),void 0!==u.maxSnapshots&&u.snapshots.length>u.maxSnapshots&&u.snapshots.shift()}for(let r=0;r<t.length;r++){const o=t[r];if("TryWith"===o.type)for(const a of o.handlers)if(Eo(a,e,o.env,i))return So(a,o,n,t,r,i)}const l=Nr(e.name,a);if(l.length>0)return No(e.name,l,n,t,s,i,u);const c=function(e){const n=Zr[e];if(n)return(e,t,r)=>(X(n.arity,e.length,r),n.handler(e,t,r))}(e.name);if(c)return c(n,t,i);if("dvala.error"===e.name){const e="string"==typeof n[0]?n[0]:String(n[0]??"Unknown error");throw new o(e,i)}throw new r(`Unhandled effect: '${e.name}'`,i)}function No(e,n,t,i,a,s,u){const l=a??(new AbortController).signal,c=Array.from(t);function f(e,n){switch(e.kind){case"step":return e.step;case"asyncResume":return e.promise.then(e=>({type:"Value",value:e,k:i}),e=>({type:"Error",error:e instanceof r?e:new r(e instanceof Error?e:`${e}`,s),k:i}));case"throw":throw e.error;case"next":return d(n)}}function d(t){if(t>=n.length){if("dvala.error"===e){const e="string"==typeof c[0]?c[0]:String(c[0]??"Unknown error");throw new o(e,s)}throw new r(`Unhandled effect: '${e}'`,s)}const[,a]=n[t];let d,p=!1;function h(e){if(p)throw new r(`Effect handler called ${e}() after already calling another operation`,s);p=!0}const y=a({effectName:e,args:c,signal:l,resume:e=>{h("resume"),d=e instanceof Promise?{kind:"asyncResume",promise:e}:{kind:"step",step:{type:"Value",value:e,k:i}}},fail:n=>{h("fail");d={kind:"step",step:{type:"Error",error:new r(n??`Effect handler failed for '${e}'`,s),k:i}}},suspend:e=>{h("suspend"),d={kind:"throw",error:new Pr(i,u?u.snapshots:[],u?u.nextSnapshotIndex:0,e)}},next:()=>{h("next"),d={kind:"next"}},get snapshots(){return u?[...u.snapshots]:[]},checkpoint:e=>{if(!u)throw new r("checkpoint is not available outside effect-enabled execution",s);const n={continuation:Kr(i),timestamp:Date.now(),index:u.nextSnapshotIndex++,runId:u.runId,...void 0!==e?{meta:e}:{}};return u.snapshots.push(n),void 0!==u.maxSnapshots&&u.snapshots.length>u.maxSnapshots&&u.snapshots.shift(),n},resumeFrom:(e,n)=>{if(p)throw new r("Effect handler called resumeFrom() after already calling another operation",s);if(!u)throw new r("resumeFrom is not available outside effect-enabled execution",s);const t=u.snapshots.find(n=>n.index===e.index&&n.runId===e.runId);if(!t)throw new r(`Invalid snapshot: no snapshot with index ${e.index} found in current run`,s);p=!0,d={kind:"throw",error:new Ar(t.continuation,n,t.index)}}});if(!(y instanceof Promise)){if(!d)throw new r(`Effect handler for '${e}' did not call resume(), fail(), suspend(), or next()`,s);return f(d,t+1)}return d?(y.catch(()=>{}),f(d,t+1)):y.then(()=>{if(!d)throw new r(`Effect handler for '${e}' did not call resume(), fail(), suspend(), or next()`,s);return f(d,t+1)},e=>{if(d)return f(d,t+1);if($r(e)||Cr(e))throw e;return{type:"Error",error:e instanceof r?e:new r(e instanceof Error?e:`${e}`,s),k:i}})}return d(0)}function Po(e,n){throw new Pr(e,[],0,n)}async function $o(e,n,t,r){return To({type:"Eval",node:e,env:n,k:[]},t,r)}function Ao(e){const n={},t=e.getHostValues();if(t)for(const[e,r]of Object.entries(t))n[e]=r;const r=e.getContextsRaw();for(let e=r.length-1;e>=0;e--)for(const[t,o]of Object.entries(r[e]))n[t]=o.value;return n}function Co(e,n){return e instanceof Promise?e.then(e=>({type:"Value",value:e,k:n}),e=>({type:"Error",error:e instanceof r?e:new r(`${e}`,void 0),k:n})):{type:"Value",value:e,k:n}}function jo(e,n,t,o){try{switch(e.type){case"Value":{if(0===e.k.length)return e;const[n,...t]=e.k;return po(n,e.value,t)}case"Eval":return uo(e.node,e.env,e.k);case"Apply":return po(e.frame,e.value,e.k);case"Perform":return Io(e.effect,e.args,e.k,e.sourceCodeInfo,n,t,o);case"Parallel":return async function(e,n,t,o,i){const a=i??(new AbortController).signal,s=e.map(e=>$o(e,n,o,a)),u=await Promise.allSettled(s),l=[],c=[],f=[];for(let e=0;e<u.length;e++){const n=u[e];if("rejected"===n.status)f.push(new r(`${n.reason}`,void 0));else{const t=n.value;switch(t.type){case"completed":l.push({index:e,value:t.value});break;case"suspended":c.push({index:e,snapshot:t.snapshot});break;case"error":f.push(t.error)}}}if(f.length>0)throw f[0];if(c.length>0)return Po([{type:"ParallelResume",branchCount:e.length,completedBranches:l,suspendedBranches:c.slice(1)},...t],c[0].snapshot.meta);const d=Array.from({length:e.length});for(const{index:e,value:n}of l)d[e]=n;return{type:"Value",value:d,k:t}}(e.branches,e.env,e.k,n,t);case"Race":return async function(e,n,t,o,i){const a=i??(new AbortController).signal,s=e.map(()=>new AbortController),u=()=>{for(const e of s)e.abort(a.reason)};a.addEventListener("abort",u,{once:!0});try{let i=-1,a=null;const u=e.map(async(e,t)=>{const r=s[t].signal,u=await $o(e,n,o,r);if("completed"===u.type&&i<0){i=t,a=u.value;for(let e=0;e<s.length;e++)e!==t&&s[e].abort("race: branch lost")}return u}),l=await Promise.allSettled(u);if(i>=0)return{type:"Value",value:a,k:t};const c=[],f=[];for(let e=0;e<l.length;e++){const n=l[e];if("rejected"===n.status)f.push(new r(`${n.reason}`,void 0));else{const e=n.value;switch(e.type){case"suspended":c.push(e.snapshot.meta??null);break;case"error":f.push(e.error)}}}c.length>0&&Po(t,{type:"race",branches:c});const d=f.map(e=>e.message).join("; ");throw new r(`race: all branches failed: ${d}`,void 0)}finally{a.removeEventListener("abort",u)}}(e.branches,e.env,e.k,n,t);case"ParallelResume":return function(e){const{value:n,branchCount:t,completedBranches:r,suspendedBranches:o,k:i}=e,a=new Set(r.map(e=>e.index)),s=new Set(o.map(e=>e.index));let u=-1;for(let e=0;e<t;e++)if(!a.has(e)&&!s.has(e)){u=e;break}const l=[...r,{index:u,value:n}];if(o.length>0){const e=o[0];return Po([{type:"ParallelResume",branchCount:t,completedBranches:l,suspendedBranches:o.slice(1)},...i],e.snapshot.meta)}const c=Array.from({length:t});for(const{index:e,value:n}of l)c[e]=n;return{type:"Value",value:c,k:i}}(e);case"Error":{const r=xo(e.error,e.k,n,t,o);if(null!==r)return r;throw e.error}}}catch(i){if($r(i))throw i;if(i instanceof r){const r=xo(i,"Value"===e.type?e.k.slice(1):e.k,n,t,o);if(null!==r)return r}throw i}}function Oo(e,n){let t=e;for(;;){if(t instanceof Promise)throw new r("Unexpected async operation in synchronous context. Use async.run() for async operations.",void 0);if("Value"===t.type&&0===t.k.length)return t.value;t=jo(t,n)}}async function Mo(e){let n=e;for(;;){if(n instanceof Promise&&(n=await n),"Value"===n.type&&0===n.k.length)return n.value;n=jo(n)}}function Uo(e,n){if(0===e.length)return{type:"Value",value:null,k:[]};if(1===e.length)return{type:"Eval",node:e[0],env:n,k:[]};const t={type:"Sequence",nodes:e,index:1,env:n};return{type:"Eval",node:e[0],env:n,k:[t]}}function Vo(e,n){const t=Uo(e.body,n);try{return Oo(t)}catch(t){if(t instanceof r&&t.message.includes("Unexpected async operation")){return Mo(Uo(e.body,n))}throw t}}function Ro(e,n){const t={type:"Eval",node:e,env:n,k:[]};try{return Oo(t)}catch(t){if(t instanceof r&&t.message.includes("Unexpected async operation")){return Mo({type:"Eval",node:e,env:n,k:[]})}throw t}}async function To(e,n,t,o,i,a){const u=null!=n&&"dvala.debug.step"in n,l={snapshots:o?o.snapshots:[],nextSnapshotIndex:o?o.nextSnapshotIndex:0,runId:"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const n=16*Math.random()|0;return("x"===e?n:3&n|8).toString(16)}),...void 0!==i?{maxSnapshots:i}:{}};let c=e;for(;;)try{for(;;){if(c instanceof Promise&&(c=await c),"Value"===c.type&&0===c.k.length)return{type:"completed",value:c.value};if(u&&"Eval"===c.type&&c.node[2]){const e=c.node[0];if(e===s.NormalExpression||e===s.SpecialExpression){const e={type:"DebugStep",phase:"awaitValue",sourceCodeInfo:c.node[2],env:c.env};c={...c,k:[e,...c.k]}}}c=jo(c,n,t,l)}}catch(e){if(Cr(e)){const{k:n}=Gr(e.continuation,a),t=l.snapshots.findIndex(n=>n.index>e.trimToIndex);-1!==t&&l.snapshots.splice(t),c={type:"Value",value:e.value,k:n};continue}if($r(e)){return{type:"suspended",snapshot:{continuation:Yr(e.k,e.snapshots,e.nextSnapshotIndex,e.meta),timestamp:Date.now(),index:l.nextSnapshotIndex++,runId:l.runId,meta:e.meta}}}return e instanceof r?{type:"error",error:e}:{type:"error",error:new r(`${e}`,void 0)}}}new Set(Object.keys(Zr));const Bo=new Set([...Tn,...Bn,...Object.keys(Jt)]);class Do{originalProgram;originalPosition;prefixProgram="";suffixProgram="";searchString="";suggestions=[];suggestionIndex=null;constructor(e,n,t={}){this.originalProgram=e,this.originalPosition=n;const r=kr(this.originalProgram.slice(0,this.originalPosition),!1,void 0).tokens.at(-1);r&&"Error"!==r[0]&&(this.searchString=r[1],this.prefixProgram=this.originalProgram.slice(0,this.originalPosition-this.searchString.length),this.suffixProgram=this.originalProgram.slice(this.prefixProgram.length+this.searchString.length),this.originalProgram.slice(this.prefixProgram.length+this.searchString.length),this.suggestions=this.generateSuggestions(t))}getNextSuggestion(){return this.getAutoCompleteSuggestionResult(this.getNextSuggestionSymbol())}getPreviousSuggestion(){return this.getAutoCompleteSuggestionResult(this.getPreviousSuggestionSymbol())}getAutoCompleteSuggestionResult(e){return null===e?null:{program:this.prefixProgram+e+this.suffixProgram,position:this.prefixProgram.length+e.length}}getNextSuggestionSymbol(){return 0===this.suggestions.length?null:(null===this.suggestionIndex?this.suggestionIndex=0:(this.suggestionIndex+=1,this.suggestionIndex>=this.suggestions.length&&(this.suggestionIndex=0)),this.suggestions[this.suggestionIndex])}getPreviousSuggestionSymbol(){return 0===this.suggestions.length?null:(null===this.suggestionIndex?this.suggestionIndex=this.suggestions.length-1:(this.suggestionIndex-=1,this.suggestionIndex<0&&(this.suggestionIndex=this.suggestions.length-1)),this.suggestions[this.suggestionIndex])}getSuggestions(){return[...this.suggestions]}getSearchString(){return this.searchString}generateSuggestions(e){const n=new Set(["0_defn","0_lambda"]),t=this.generateWithPredicate(e,e=>!n.has(e)&&e.startsWith(this.searchString));t.forEach(e=>n.add(e));const r=this.generateWithPredicate(e,e=>!n.has(e)&&e.toLowerCase().startsWith(this.searchString.toLowerCase()));r.forEach(e=>n.add(e));const o=this.generateWithPredicate(e,e=>!n.has(e)&&e.includes(this.searchString));o.forEach(e=>n.add(e));const i=this.generateWithPredicate(e,e=>!n.has(e)&&e.includes(this.searchString.toLowerCase()));return i.forEach(e=>n.add(e)),[...t,...r,...o,...i]}generateWithPredicate(e,n){const t=new Set;return Bo.forEach(e=>{n(e)&&t.add(e)}),Object.keys(e.bindings??{}).filter(n).forEach(e=>t.add(e)),[...t].sort((e,n)=>e.localeCompare(n))}}const _o={collection:'{\n map: (first-coll, ...args) -> do\n let fn = last(args);\n let other-colls = slice(args, 0, count(args) - 1);\n let all-colls = [first-coll, ...other-colls];\n\n cond\n case object?(first-coll) then do\n let expected-keys = keys(first-coll) |> sort;\n doseq (obj in other-colls) -> do\n if not(object?(obj)) then\n perform(effect(dvala.error), "Expected object")\n end;\n let obj-keys = keys(obj) |> sort;\n if not(obj-keys == expected-keys) then\n perform(effect(dvala.error), ++(\n "All objects must have the same keys. Expected: ",\n join(expected-keys, ", "),\n ". Found: ",\n join(obj-keys, ", ")\n ))\n end\n end;\n reduce(keys(first-coll), (acc, k) -> do\n let a = for (coll in all-colls) -> coll(k);\n assoc(acc, k, apply(fn, a))\n end, {})\n end\n\n case string?(first-coll) then do\n doseq (s in other-colls) -> do\n if not(string?(s)) then\n perform(effect(dvala.error), "Expected string")\n end\n end;\n let len = reduce(other-colls, (m, s) -> min(m, count(s)), count(first-coll));\n let mapped = for (i in range(len)) -> do\n let a = for (coll in all-colls) -> nth(coll, i);\n apply(fn, a)\n end;\n reduce(mapped, (acc, ch) -> do\n if not(string?(ch)) then\n perform(effect(dvala.error), "Expected string")\n end;\n ++(acc, ch)\n end, "")\n end\n\n case true then do\n doseq (x in other-colls) -> do\n if not(array?(x)) then\n perform(effect(dvala.error), "Expected array")\n end\n end;\n let len = reduce(other-colls, (m, x) -> min(m, count(x)), count(first-coll));\n for (i in range(len)) -> do\n let a = for (coll in all-colls) -> nth(coll, i);\n apply(fn, a)\n end\n end\n end\n end,\n\n filter: (coll, fn) -> do\n cond\n case array?(coll) then\n reduce(coll, (acc, elem) -> if fn(elem) then [...acc, elem] else acc end, [])\n\n case string?(coll) then\n reduce(coll, (acc, ch) -> if fn(ch) then ++(acc, ch) else acc end, "")\n\n case object?(coll) then\n reduce(keys(coll), (acc, k) -> do\n if fn(coll(k)) then\n assoc(acc, k, coll(k))\n else\n acc\n end\n end, {})\n\n case true then\n perform(effect(dvala.error), "Expected collection")\n end\n end,\n\n reduce: (coll, fn, initial) -> do\n cond\n case string?(coll) then\n loop (acc = initial, i = 0) -> do\n if i >= count(coll) then\n acc\n else\n recur(fn(acc, nth(coll, i)), i + 1)\n end\n end\n\n case array?(coll) then\n loop (acc = initial, i = 0) -> do\n if i >= count(coll) then\n acc\n else\n recur(fn(acc, nth(coll, i)), i + 1)\n end\n end\n\n case object?(coll) then do\n let values = vals(coll);\n loop (acc = initial, i = 0) -> do\n if i >= count(values) then\n acc\n else\n recur(fn(acc, nth(values, i)), i + 1)\n end\n end\n end\n\n case true then\n perform(effect(dvala.error), "Expected collection")\n end\n end\n}',sequence:'{\n some: (seq, fn) -> do\n if null?(seq) then null\n else do\n loop (i = 0) -> do\n if i >= count(seq) then\n null\n else do\n let elem = nth(seq, i);\n if fn(elem) then elem\n else recur(i + 1)\n end\n end\n end\n end\n end\n end\n end,\n\n take-while: (seq, fn) -> do\n let is-str = string?(seq);\n let len = count(seq);\n let idx = loop (i = 0) -> do\n if i >= len then\n len\n else if fn(nth(seq, i)) then\n recur(i + 1)\n else\n i\n end\n end\n end;\n slice(seq, 0, idx)\n end,\n\n drop-while: (seq, fn) -> do\n let is-str = string?(seq);\n let len = count(seq);\n let idx = loop (i = 0) -> do\n if i >= len then\n len\n else if fn(nth(seq, i)) then\n recur(i + 1)\n else\n i\n end\n end\n end;\n slice(seq, idx)\n end,\n\n sort: (seq, ...args) -> do\n let cmp = if count(args) == 0 then compare else first(args) end;\n let is-str = string?(seq);\n let arr = if is-str then split(seq, "") else seq end;\n let len = count(arr);\n\n // merge two sorted arrays\n let merge-arrays = (left, right) -> do\n let left-len = count(left);\n let right-len = count(right);\n loop (result = [], li = 0, ri = 0) -> do\n if li >= left-len then\n ++(result, slice(right, ri))\n else if ri >= right-len then\n ++(result, slice(left, li))\n else do\n let l = nth(left, li);\n let r = nth(right, ri);\n if cmp(l, r) <= 0 then\n recur(push(result, l), li + 1, ri)\n else\n recur(push(result, r), li, ri + 1)\n end\n end\n end\n end\n end\n end;\n\n // recursive merge-sort\n let merge-sort = (a) -> do\n let n = count(a);\n if n <= 1 then a\n else do\n let mid = floor(n / 2);\n let left = merge-sort(slice(a, 0, mid));\n let right = merge-sort(slice(a, mid));\n merge-arrays(left, right)\n end\n end\n end;\n\n let sorted = merge-sort(arr);\n if is-str then join(sorted, "") else sorted end\n end\n}\n',array:'{\n mapcat: (arr, fn) -> do\n flatten(map(arr, fn), 1)\n end,\n\n moving-fn: (arr, window-size, fn) -> do\n if window-size > count(arr) then\n perform(effect(dvala.error), "Expected window-size <= array length")\n end;\n for (i in range(count(arr) - window-size + 1)) -> do\n fn(slice(arr, i, i + window-size))\n end\n end,\n\n running-fn: (arr, fn) -> do\n for (i in range(count(arr))) -> do\n fn(slice(arr, 0, i + 1))\n end\n end\n}\n',functional:'{\n "|>": (a, b) -> b(a),\n\n apply: (fn, ...args) -> do\n let arr = last(args);\n let leading = slice(args, 0, count(args) - 1);\n fn(...leading, ...arr)\n end\n}\n',object:'{\n merge-with: (...args) -> do\n let fn = last(args);\n let objs = slice(args, 0, count(args) - 1);\n if not(function?(fn)) then\n perform(effect(dvala.error), str("Expected function, got: ", type(fn)))\n end;\n if count(objs) == 0 then\n perform(effect(dvala.error), "Expected at least one object argument")\n end;\n reduce(rest(objs), (result, obj) -> do\n if not(object?(obj)) then\n perform(effect(dvala.error), str("Expected object, got: ", type(obj)))\n end;\n reduce(keys(obj), (res, key) -> do\n if contains?(res, key) then\n assoc(res, key, fn(get(res, key), get(obj, key)))\n else\n assoc(res, key, get(obj, key))\n end\n end, result)\n end, do\n let f = first(objs);\n if not(object?(f)) then\n perform(effect(dvala.error), str("Expected object, got: ", type(f)))\n end;\n f\n end)\n end\n}\n'};let Fo=!1;class Lo{cache={};firstEntry=void 0;lastEntry=void 0;_size=0;maxSize;constructor(e){var n;if(this.maxSize=null===e?null:(n=e,Math.max(0,Math.ceil(n))),"number"==typeof this.maxSize&&this.maxSize<1)throw new Error(`1 is the minimum maxSize, got ${m(e)}`)}getContent(){return Object.entries(this.cache).reduce((e,[n,t])=>(e[n]=t.value,e),{})}get size(){return this._size}get(e){return this.cache[e]?.value}clear(){this.cache={},this.firstEntry=void 0,this.lastEntry=void 0,this._size=0}has(e){return!!this.cache[e]}set(e,n){if(this.has(e))throw new Error(`AstCache - key already present: ${e}`);const t={value:n,nextEntry:void 0,key:e};for(this.cache[e]=t,this._size+=1,this.lastEntry&&(this.lastEntry.nextEntry=t),this.lastEntry=t,this.firstEntry||(this.firstEntry=this.lastEntry);null!==this.maxSize&&this.size>this.maxSize;)this.dropFirstEntry()}dropFirstEntry(){const e=this.firstEntry;delete this.cache[e.key],this._size-=1,this.firstEntry=e.nextEntry}}function qo(e,n){const t=n?.modules?new Map(n.modules.map(e=>[e.name,e])):void 0,r=Rr({bindings:n?.bindings},t),o={body:ir(ar(kr(e,!1,void 0),{removeWhiteSpace:!0})),hasDebugData:!1};return Kn(o,r,Rn,Ro)}function zo(e){if(e)for(const[n,t]of Object.entries(e))Wo(t,`bindings["${n}"]`)}function Wo(e,n){if(null!=e&&"boolean"!=typeof e&&"string"!=typeof e)if("number"!=typeof e){if("function"==typeof e)throw new TypeError(`${n} is not serializable (function)`);if("object"!=typeof e)throw new TypeError(`${n} is not serializable`);if(f in e||d in e||p in e)return;if(Array.isArray(e))return void e.forEach((e,t)=>Wo(e,`${n}[${t}]`));if(Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`${n} is not serializable (not a plain object)`);for(const[t,r]of Object.entries(e))Wo(r,`${n}.${t}`)}else if(!Number.isFinite(e))throw new TypeError(`${n} is not serializable (${e})`)}return e.asDvalaFunction=function(e,n){return E(e,n),e},e.asUserDefinedFunction=function(e,n){return I(e,n),e},e.assertDvalaFunction=E,e.assertUserDefinedFunction=I,e.createDvala=function(e){!function(){if(!Fo){Fo=!0;for(const[,e]of Object.entries(_o)){const n=Vo({body:ir(ar(kr(e,!1,void 0),{removeWhiteSpace:!0})),hasDebugData:!1},Rr());if(n instanceof Promise)throw new TypeError("Core dvala sources must be synchronous");if(!j(n))continue;const t=n;for(const[e,n]of Object.entries(t)){const t=We[e];t&&k(n)&&"UserDefined"===n.functionType&&(t.dvalaImpl=n)}}}}();const n=e?.modules?new Map(e.modules.map(e=>[e.name,e])):void 0,t=e?.bindings,o=e?.effectHandlers,i=e?.debug??!1,a=e?.cache?new Lo(e.cache):null;function s(e,n){if(!n&&a){const n=a.get(e);if(n)return n}const t={body:ir(ar(kr(e,i,n),{removeWhiteSpace:!0})),hasDebugData:i};return n||a?.set(e,t),t}function u(e){if(t||e)return{...t,...e}}function l(e){if(!o&&!e)return;const n={...e};if(o)for(const[e,t]of Object.entries(o))e in n||(n[e]=t);return n}function c(e,n){if(!e)return;if(n&&Object.keys(n).length>0)throw new TypeError("Cannot use pure mode with effect handlers")}return{run(e,t){zo(t?.bindings);const o=u(t?.bindings),i=l(t?.effectHandlers),a=t?.pure??!1;c(a,i);const f=Rr({bindings:o},n,a);if(Dn(e)){const n=f.pure;f.pure=!0;for(const[n,t]of e.fileModules){const e=s(t),r=f.create({});f.registerValueModule(n,Vo(e,r))}f.pure=n;const t=Vo(s(e.program),f);if(t instanceof Promise)throw new TypeError("Unexpected async result in run(). Use runAsync() for async operations.");return t}const d=s(e,t?.filePath);if(i)return function(e,n,t){const o=Uo(e.body,n);try{return Oo(o,t)}catch(o){if(o instanceof r&&o.message.includes("Unexpected async operation"))return Oo(Uo(e.body,n),t);throw o}}(d,f,i);const p=Vo(d,f);if(p instanceof Promise)throw new TypeError("Unexpected async result in run(). Use runAsync() for async operations.");return p},async runAsync(e,t){zo(t?.bindings);const o=u(t?.bindings),i=l(t?.effectHandlers),a=t?.pure??!1;c(a,i);try{const r=Rr({bindings:o},n,a);if(Dn(e)){const n=r.pure;r.pure=!0;for(const[n,t]of e.fileModules){const e=s(t),o=r.create({});r.registerValueModule(n,Vo(e,o))}r.pure=n}const u=s(Dn(e)?e.program:e),l=await async function(e,n,t,r,o){const i=(new AbortController).signal;return To(Uo(e.body,n),t,i,void 0,r,o)}(u,r,i,t?.maxSnapshots,{values:o,modules:n});return"completed"===l.type?{...l,definedBindings:r.getModuleScopeBindings()}:l}catch(e){if(e instanceof r)return{type:"error",error:e};if(e instanceof TypeError)throw e;return{type:"error",error:new r(`${e}`,void 0)}}},getUndefinedSymbols(e){const r=n?[...n.values()]:void 0;return qo(e,{bindings:t,modules:r})},getAutoCompleter:(e,n)=>new Do(e,n,{bindings:t})}},e.getAutoCompleter=function(e,n,t={}){return new Do(e,n,t)},e.getUndefinedSymbols=qo,e.isBuiltinFunction=function(e){return x(e)&&"Builtin"===e.functionType},e.isDvalaBundle=Dn,e.isDvalaError=function(e){return e instanceof r},e.isDvalaFunction=k,e.isGrid=Ie,e.isMatrix=Ne,e.isUserDefinedFunction=S,e.isVector=ke,e.normalExpressionKeys=Tn,e.parseTokenStream=function(e){return{body:ir(ar(e,{removeWhiteSpace:!0})),hasDebugData:e.hasDebugData}},e.resume=async function(e,n,t){try{const r=t?.modules?new Map(t.modules.map(e=>[e.name,e])):void 0,o=Gr(e.continuation,{values:t?.bindings,modules:r}),i={values:t?.bindings,modules:r};return await async function(e,n,t,r,o){return To({type:"Value",value:n,k:e},t,(new AbortController).signal,r,r?.maxSnapshots,o)}(o.k,n,t?.handlers,{snapshots:o.snapshots,nextSnapshotIndex:o.nextSnapshotIndex,maxSnapshots:t?.maxSnapshots},i)}catch(e){return e instanceof r?{type:"error",error:e}:{type:"error",error:new r(`${e}`,void 0)}}},e.specialExpressionKeys=Bn,e.tokenizeSource=function(e,n=!1,t){return kr(e,n,t)},e.transformSymbols=function(e,n){return function(e,n){return{...e,tokens:e.tokens.map(e=>tt(e)?[e[0],n(e[1])]:e)}}(e,n)},e.untokenize=function(e){return e.tokens.reduce((e,n)=>`${e}${n[1]}`,"")},e}({});
|
|
1
|
+
var Dvala=function(e){"use strict";function n(e){if(!e.position||!e.code)return"";const n=e.position.column-1,t=e.code.length-n-1;return`${" ".repeat(Math.max(n,0))}^${" ".repeat(Math.max(t,0))}`}class t extends Error{params;constructor(e){super(`recur, params: ${e}`),Object.setPrototypeOf(this,t.prototype),this.name="RecurSignal",this.params=e}}class r extends Error{sourceCodeInfo;shortMessage;constructor(e,t){const o=e instanceof Error?e.message:`${e}`;super(function(e,t){if(!t)return e;const r=`${t.position.line}:${t.position.column}`;return`${e}${t.filePath?`\n${t.filePath}:${r}`:`\nLocation ${r}`}\n${t.code}\n${n(t)}`}(o,t)),this.shortMessage=o,this.sourceCodeInfo=t,Object.setPrototypeOf(this,r.prototype),this.name="DvalaError"}getCodeMarker(){return this.sourceCodeInfo&&n(this.sourceCodeInfo)}}class o extends r{userMessage;constructor(e,n){super(e,n),this.userMessage=e,Object.setPrototypeOf(this,o.prototype),this.name="UserDefinedError"}}class a extends r{constructor(e,n){super(e,n),Object.setPrototypeOf(this,a.prototype),this.name="AssertionError"}}class s extends r{symbol;constructor(e,n){super(`Undefined symbol '${e}'.`,n),this.symbol=e,Object.setPrototypeOf(this,s.prototype),this.name="UndefinedSymbolError"}}const i={Number:1,String:2,NormalExpression:3,SpecialExpression:4,UserDefinedSymbol:5,NormalBuiltinSymbol:6,SpecialBuiltinSymbol:7,ReservedSymbol:8,Binding:9,Spread:10},u=new Set(Object.values(i));function c(e){return Object.keys(i).find(n=>i[n]===e)}const l=new Set(["UserDefined","Partial","Comp","Constantly","Juxt","Complement","EveryPred","SomePred","Fnull","EffectMatcher","Builtin","SpecialBuiltin","Module"]);const f="^^fn^^",d="^^re^^",p="^^ef^^";function h(e){return null!==e&&"object"==typeof e&&(f in e&&"functionType"in e&&function(e){return"string"==typeof e&&l.has(e)}(e.functionType))}function y(e){return!(!Array.isArray(e)||e.length<2)&&function(e){return"number"==typeof e&&u.has(e)}(e[0])}function m(e){return h(e)?`<function ${e.name||"λ"}>`:y(e)?`${c(e[0])}-node`:null===e?"null":"object"==typeof e&&e instanceof RegExp?`${e}`:"object"==typeof e&&e instanceof Error?e.toString():JSON.stringify(e)}function v(e,n){return e?.sourceCodeInfo??n}function g(e,n,t){return new r(`Expected ${e}, got ${m(n)}.`,v(n,t))}function b(e,n){return x(e,n),e}function x(e,n){if(!function(e){return void 0!==e}(e))throw new r("Unexpected undefined",v(e,n))}function w(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function k(e){return null!==e&&"object"==typeof e&&!!e[f]}function E(e,n){if(!k(e))throw g("DvalaFunction",e,n)}function S(e){return k(e)&&"UserDefined"===e.functionType}function I(e,n){if(!S(e))throw g("UserDefinedFunction",e,n)}function N(e){return void 0!==e}function A(e,n){return P(e,n),e}function P(e,n){if(!N(e))throw g("not undefined",e,n)}function $(e){return Array.isArray(e)||"string"==typeof e}function C(e,n){if(!$(e))throw g("string or array",e,n)}function j(e){return!(null===e||"object"!=typeof e||Array.isArray(e)||e instanceof RegExp||k(e)||U(e)||R(e))}function O(e,n){if(!j(e))throw g("object",e,n)}function M(e){return $(e)||j(e)}function V(e,n){if(!M(e))throw g("string, array or object",e,n)}function U(e){return null!==e&&"object"==typeof e&&!!e[d]}function B(e,n){if(!function(e){return U(e)||"string"==typeof e}(e))throw g("string or RegularExpression",e,n)}function R(e){return null!==e&&"object"==typeof e&&!!e[p]}function D(e,n){if(!R(e))throw g("Effect",e,n)}function T(e,n){return _(e,n),e}function _(e,n){if(!function(e){return"number"==typeof e||!!M(e)||!!k(e)}(e))throw g("FunctionLike",e,n)}function F(e,n={}){return"string"==typeof e&&((!n.nonEmpty||0!==e.length)&&(!n.char||1===e.length))}function L(e,n,t={}){if(!F(e,t))throw g(""+(t.nonEmpty?"non empty string":t.char?"character":"string"),e,n)}function q(e,n,t={}){return L(e,n,t),e}function z(e){return"string"==typeof e||"number"==typeof e}function W(e,n){return K(e,n),e}function K(e,n){if(!z(e))throw g("string or number",e,n)}const Y={assert:{evaluate:(e,n)=>{const t=e[0],r=2===e.length?e[1]:`${t}`;if(L(r,n),!t)throw new a(r,n);return A(t,n)},arity:{min:1,max:2}}};function G(e,n={}){return"number"==typeof e&&(!Number.isNaN(e)&&(!(n.integer&&!Number.isInteger(e))&&(!(n.finite&&!Number.isFinite(e))&&((!n.zero||0===e)&&((!n.nonZero||0!==e)&&(!(n.positive&&e<=0)&&(!(n.negative&&e>=0)&&(!(n.nonPositive&&e>0)&&(!(n.nonNegative&&e<0)&&(!("number"==typeof n.gt&&e<=n.gt)&&(!("number"==typeof n.gte&&e<n.gte)&&(!("number"==typeof n.lt&&e>=n.lt)&&!("number"==typeof n.lte&&e>n.lte)))))))))))))}function H(e,n,t={}){if(!G(e,t))throw new r(`Expected ${function(e){if(e.zero)return"zero";const n=function(e){return e.positive?"positive":e.negative?"negative":e.nonNegative?"non negative":e.nonPositive?"non positive":e.nonZero?"non zero":""}(e),t=e.integer?"integer":"number",r=e.finite?"finite":"",o=function(e){return"number"!=typeof e.gt&&"number"!=typeof e.gte||"number"!=typeof e.lt&&"number"!=typeof e.lte?"number"==typeof e.gt||"number"==typeof e.gte?"number"==typeof e.gt?`n > ${e.gt}`:`n >= ${e.gte}`:"number"==typeof e.lt||"number"==typeof e.lte?"number"==typeof e.lt?`n < ${e.lt}`:`n <= ${e.lte}`:"":`${"number"==typeof e.gt?`${e.gt} < n `:`${e.gte} <= n `}${"number"==typeof e.lt?`< ${e.lt}`:`<= ${e.lte}`}`}(e);return[n,r,t,o].filter(e=>!!e).join(" ")}(t)}, got ${m(e)}.`,v(e,n))}function J(e,n){const{min:t}=e;return!("number"==typeof t&&n<t)}function X(e,n,t){const{min:o,max:a}=e;if("number"==typeof o&&n<o)throw new r(`Wrong number of arguments, expected at least ${o}, got ${m(n)}.`,t);if("number"==typeof a&&n>a)throw new r(`Wrong number of arguments, expected at most ${a}, got ${m(n)}.`,t)}function Z(e){return{min:e,max:e}}const Q={"<<":{evaluate:([e,n],t)=>(H(e,t,{integer:!0}),H(n,t,{integer:!0,nonNegative:!0}),e<<n),arity:Z(2)},">>":{evaluate:([e,n],t)=>(H(e,t,{integer:!0}),H(n,t,{integer:!0,nonNegative:!0}),e>>n),arity:Z(2)},">>>":{evaluate:([e,n],t)=>(H(e,t,{integer:!0}),H(n,t,{integer:!0,nonNegative:!0}),e>>>n),arity:Z(2)},"&":{evaluate:([e,...n],t)=>(H(e,t,{integer:!0}),n.reduce((e,n)=>(H(n,t,{integer:!0}),e&n),e)),arity:{min:2}},"|":{evaluate:([e,...n],t)=>(H(e,t,{integer:!0}),n.reduce((e,n)=>(H(n,t,{integer:!0}),e|n),e)),arity:{min:2}},xor:{evaluate:([e,...n],t)=>(H(e,t,{integer:!0}),n.reduce((e,n)=>(H(n,t,{integer:!0}),e^n),e)),arity:{min:2}}};function ee(e,n){return!!M(e)&&("string"==typeof e||Array.isArray(e)?!!G(n,{integer:!0})&&(n>=0&&n<e.length):!!Object.getOwnPropertyDescriptor(e,n))}function ne(e,n,t){if(K(e,t),K(n,t),"string"==typeof e&&"string"==typeof n)return e<n?-1:e>n?1:0;if("number"==typeof e&&"number"==typeof n)return Math.sign(e-n);throw new r(`Cannot compare values of different types: ${typeof e} and ${typeof n}`,t)}function te(e,n,t){if(e===n)return!0;if("number"==typeof e&&"number"==typeof n)return function(e,n,t=se){if(e===n)return!0;const r=Math.abs(e-n);if(0===e||0===n||r<t)return r<t;const o=Math.abs(e),a=Math.abs(n);return r/(o+a)<t}(e,n);if(Array.isArray(e)&&Array.isArray(n)){if(e.length!==n.length)return!1;for(let r=0;r<e.length;r+=1)if(!te(A(e[r],t),A(n[r],t),t))return!1;return!0}if(U(e)&&U(n))return e.s===n.s&&e.f===n.f;if(w(e)&&w(n)){const r=Object.keys(e),o=Object.keys(n);if(r.length!==o.length)return!1;for(let o=0;o<r.length;o+=1){const a=q(r[o],t);if(!te(e[a],n[a],t))return!1}return!0}return!1}function re(e){return e??null}function oe(...e){const n=new Set;for(const t of e)t.forEach(e=>n.add(e));return n}function ae(e,n){n.forEach(n=>e.add(n))}const se=1e-10;function ie(e,n=0){const t=e.split("\n");for(;t[0]?.match(/^\s*$/);)t.shift();for(;t[t.length-1]?.match(/^\s*$/);)t.pop();const r=t.reduce((e,n)=>{if(n.match(/^\s*$/))return e;const t=n.match(/^\s*/)[0].length;return Math.min(e,t)},1/0);return t.map(e=>" ".repeat(n)+e.slice(r)).join("\n").trimEnd()}function ue(e,n){if(!Array.isArray(e))throw g("array",e,n)}function ce(e,n){if(!function(e){return Array.isArray(e)&&e.every(e=>"string"==typeof e)}(e))throw g("array of strings",e,n)}function le(e,n){if(!function(e){return Array.isArray(e)&&e.every(e=>"string"==typeof e&&1===e.length)}(e))throw g("array of strings",e,n)}const fe={filter:{evaluate:()=>{throw new Error("filter is implemented in Dvala")},arity:Z(2)},map:{evaluate:()=>{throw new Error("map is implemented in Dvala")},arity:{min:2}},reduce:{evaluate:()=>{throw new Error("reduce is implemented in Dvala")},arity:Z(3)},get:{evaluate:(e,n)=>{const[t,r]=e,o=re(e[2]);if(K(r,n),null===t)return o;V(t,n);const a=function(e,n){if(j(e)){if("string"==typeof n&&ee(e,n))return re(e[n])}else if(G(n,{nonNegative:!0,integer:!0})&&n>=0&&n<e.length)return re(e[n])}(t,r);return void 0===a?o:a},arity:{min:2,max:3}},count:{evaluate:([e],n)=>null===e?0:"string"==typeof e?e.length:(V(e,n),Array.isArray(e)?e.length:Object.keys(e).length),arity:Z(1)},"contains?":{evaluate:([e,n],t)=>null!==e&&(V(e,t),F(e)?(L(n,t),e.includes(n)):$(e)?(P(n,t),!!e.find(e=>te(A(e),n,t))):(L(n,t),n in e)),arity:Z(2)},assoc:{evaluate:([e,n,t],r)=>(V(e,r),K(n,r),P(t,r),function(e,n,t,r){if(V(e,r),K(n,r),Array.isArray(e)||"string"==typeof e){if(H(n,r,{integer:!0}),H(n,r,{gte:0}),H(n,r,{lte:e.length}),"string"==typeof e)return L(t,r,{char:!0}),`${e.slice(0,n)}${t}${e.slice(n+1)}`;const o=[...e];return o[n]=t,o}L(n,r);const o={...e};return o[n]=t,o}(e,n,t,r)),arity:Z(3)},"++":{evaluate:(e,n)=>(G(e[0])||V(e[0],n),Array.isArray(e[0])?e.reduce((e,t)=>(ue(t,n),e.concat(t)),[]):z(e[0])?e.reduce((e,t)=>(K(t,n),`${e}${t}`),""):e.reduce((e,t)=>(O(t,n),Object.assign(e,t)),{})),arity:{min:1}}},de={range:{evaluate:(e,n)=>{const[t,r,o]=e;let a,s,i;H(t,n,{finite:!0}),1===e.length?(a=0,s=t,i=s>=0?1:-1):2===e.length?(H(r,n,{finite:!0}),a=t,s=r,i=s>=a?1:-1):(H(r,n,{finite:!0}),H(o,n,{finite:!0}),a=t,s=r,i=o,H(i,n,s>a?{positive:!0}:s<a?{negative:!0}:{nonZero:!0}));const u=[];for(let e=a;i<0?e>s:e<s;e+=i)u.push(e);return u},arity:{min:1,max:3}},repeat:{evaluate:([e,n],t)=>{H(n,t,{integer:!0,nonNegative:!0});const r=[];for(let t=0;t<n;t+=1)r.push(e);return r},arity:Z(2)},flatten:{evaluate:([e,n],t)=>{ue(e,t);const r=void 0===n||n===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:function(e,n,t={}){return H(e,n,t),e}(n,t,{integer:!0,nonNegative:!0});return e.flat(r)},arity:{min:1,max:2}},mapcat:{evaluate:()=>{throw new Error("mapcat is implemented in Dvala")},arity:Z(2)},"moving-fn":{evaluate:()=>{throw new Error("moving-fn is implemented in Dvala")},arity:Z(3)},"running-fn":{evaluate:()=>{throw new Error("running-fn is implemented in Dvala")},arity:Z(2)}},pe={nth:{evaluate:(e,n)=>{const[t,r]=e,o=re(e[2]);if(H(r,n,{integer:!0}),null===t)return o;if(C(t,n),r>=0&&r<t.length){return re(t[r])}return o},arity:{min:2,max:3}},first:{evaluate:([e],n)=>{if(null===e)return null;C(e,n);return re(e[0])},arity:Z(1)},last:{evaluate:([e],n)=>{if(null===e)return null;C(e,n);return re(e.at(-1))},arity:Z(1)},pop:{evaluate:([e],n)=>(C(e,n),"string"==typeof e?e.substring(0,e.length-1):e.slice(0,e.length-1)),arity:Z(1)},"index-of":{evaluate:([e,n],t)=>{if(P(n,t),null===e)return null;if(C(e,t),"string"==typeof e){L(n,t);const r=e.indexOf(n);return-1!==r?r:null}{const r=e.findIndex(e=>te(A(e,t),n),t);return-1!==r?r:null}},arity:Z(2)},push:{evaluate:([e,...n],t)=>(C(e,t),"string"==typeof e?(le(n,t),[e,...n].join("")):[...e,...n]),arity:{min:2}},rest:{evaluate:([e],n)=>(C(e,n),Array.isArray(e)?e.length<=1?[]:e.slice(1):e.substring(1)),arity:Z(1)},next:{evaluate:([e],n)=>(C(e,n),Array.isArray(e)?e.length<=1?null:e.slice(1):e.length<=1?null:e.substring(1)),arity:Z(1)},reverse:{evaluate:([e],n)=>null===e?null:(C(e,n),Array.isArray(e)?[...e].reverse():e.split("").reverse().join("")),arity:Z(1)},second:{evaluate:([e],n)=>null===e?null:(C(e,n),re(e[1])),arity:Z(1)},slice:{evaluate:(e,n)=>{const[t,r,o]=e;return C(t,n),H(r,n,{integer:!0}),2===e.length?(Array.isArray(t),t.slice(r)):(H(o,n,{integer:!0}),Array.isArray(t),t.slice(r,o))},arity:{min:2,max:3}},some:{evaluate:()=>{throw new Error("some is implemented in Dvala")},arity:Z(2)},sort:{evaluate:()=>{throw new Error("sort is implemented in Dvala")},arity:{min:1,max:2}},take:{evaluate:([e,n],t)=>{H(n,t),C(e,t);const r=Math.max(Math.ceil(n),0);return e.slice(0,r)},arity:Z(2)},"take-last":{evaluate:([e,n],t)=>{C(e,t),H(n,t);const r=Math.max(Math.ceil(n),0),o=e.length-r;return e.slice(o)},arity:Z(2)},drop:{evaluate:([e,n],t)=>{H(n,t);const r=Math.max(Math.ceil(n),0);return C(e,t),e.slice(r)},arity:Z(2)},"drop-last":{evaluate:([e,n],t)=>{C(e,t),H(n,t);const r=Math.max(Math.ceil(n),0),o=e.length-r;return e.slice(0,o)},arity:Z(2)},"take-while":{evaluate:()=>{throw new Error("take-while is implemented in Dvala")},arity:Z(2)},"drop-while":{evaluate:()=>{throw new Error("drop-while is implemented in Dvala")},arity:Z(2)}},he=new WeakSet,ye=new WeakSet,me=new WeakSet,ve=new WeakSet,ge=new WeakSet,be=new WeakSet,xe=new WeakSet;function we(e){return Array.isArray(e)?(he.has(e)||(ke(e),Ne(e)||Ie(e)),e):e}function ke(e){return!!Array.isArray(e)&&(!!ye.has(e)||!me.has(e)&&(e.every(e=>G(e))?(he.add(e),ye.add(e),!0):(me.add(e),!1)))}function Ee(e,n){if(!ke(e))throw new r(`Expected a vector, but got ${e}`,n)}function Se(e,n){if(Ee(e,n),0===e.length)throw new r(`Expected a non empty vector, but got ${e}`,n)}function Ie(e,n){if(!Array.isArray(e))return!1;if(be.has(e))return!0;if(xe.has(e))return!1;if(0===e.length)return xe.add(e),!1;if(!Array.isArray(e[0]))return xe.add(e),!1;const t=e[0].length;if(0===t)return xe.add(e),!1;for(const r of e){if(!Array.isArray(r))return xe.add(e),!1;if(r.length!==t)return xe.add(e),!1;if(n&&r.some(e=>!n(e)))return!1}return he.add(e),be.add(e),!0}function Ne(e){return Ie(e,G)?(ve.add(e),!0):(Array.isArray(e)&&ge.add(e),!1)}function Ae(e,n){let t=!1,o=!1;for(const a of e)if(ke(a))t=!0;else if(Ne(a))o=!0;else if(!G(a))throw new r("Invalid parameter type: "+typeof a,n);if(o){if(t)throw new r("Cannot mix vector and matrix types",n);let o=null,a=null;for(const t of e)if(Ne(t))if(null===o)o=t.length,a=t[0].length;else if(t.length!==o||t[0].length!==a)throw new r("Matrix dimensions do not match",n);return["matrix",e.map(e=>Ne(e)?e:Array.from({length:o},()=>Array.from({length:a},()=>e)))]}if(t){let t=null;for(const o of e)if(ke(o))if(null===t)t=o.length;else if(o.length!==t)throw new r("Vector lengths do not match",n);return["vector",e.map(e=>ke(e)?e:Array.from({length:t},()=>e))]}return["number",e]}function Pe(e){return(n,t)=>{const[r,o]=Ae(n,t);return"number"===r?e(o[0]):"vector"===r?o[0].map(n=>e(n)):o[0].map(n=>n.map(n=>e(n)))}}function $e(e){return(n,t)=>{const[r,o]=Ae(n,t);return"number"===r?e(o[0],o[1]):"vector"===r?o[0].map((n,t)=>e(n,o[1][t])):o[0].map((n,t)=>n.map((n,r)=>e(n,o[1][t][r])))}}function Ce(e,n){return(t,r)=>{if(0===t.length)return e;const[o,a]=Ae(t,r);if("number"===o)return a.reduce((e,t)=>n(e,t),e);if("vector"===o){const[e,...t]=a;return t.reduce((e,t)=>e.map((e,r)=>n(e,t[r])),e)}{const[e,...t]=a;return t.reduce((e,t)=>e.map((e,r)=>e.map((e,o)=>n(e,t[r][o]))),e)}}}const je={inc:{evaluate:Pe(e=>e+1),arity:Z(1)},dec:{evaluate:Pe(e=>e-1),arity:Z(1)},"+":{evaluate:Ce(0,(e,n)=>e+n),arity:{}},"*":{evaluate:Ce(1,(e,n)=>e*n),arity:{}},"/":{evaluate:(e,n)=>{if(0===e.length)return 1;const[t,r]=Ae(e,n);if("number"===t){const[e,...n]=r;return 0===n.length?1/e:n.reduce((e,n)=>e/n,e)}if("vector"===t){const e=r[0];return r.slice(1).reduce((e,n)=>e.map((e,t)=>e/n[t]),e)}{const e=r[0];return r.slice(1).reduce((e,n)=>e.map((e,t)=>e.map((e,r)=>e/n[t][r])),e)}},arity:{}},"-":{evaluate:(e,n)=>{if(0===e.length)return 0;const[t,r]=Ae(e,n);if("number"===t){const[e,...n]=r;return 0===n.length?-e:n.reduce((e,n)=>e-n,e)}if("vector"===t){const e=r[0];return r.slice(1).reduce((e,n)=>e.map((e,t)=>e-n[t]),e)}{const e=r[0];return r.slice(1).reduce((e,n)=>e.map((e,t)=>e.map((e,r)=>e-n[t][r])),e)}},arity:{}},quot:{evaluate:$e((e,n)=>Math.trunc(e/n)),arity:Z(2)},mod:{evaluate:$e((e,n)=>e-n*Math.floor(e/n)),arity:Z(2)},"%":{evaluate:$e((e,n)=>e%n),arity:Z(2)},sqrt:{evaluate:Pe(e=>Math.sqrt(e)),arity:Z(1)},cbrt:{evaluate:Pe(e=>Math.cbrt(e)),arity:Z(1)},"^":{evaluate:$e((e,n)=>e**n),arity:Z(2)},round:{evaluate:([e,n],t)=>{const[r,o]=Ae([e],t);if("number"===r){if(void 0===n||0===n)return Math.round(o[0]);{H(n,t,{integer:!0,positive:!0});const e=10**n;return Math.round(o[0]*e)/e}}if("vector"===r){const e=o[0];if(void 0===n||0===n)return e.map(e=>Math.round(e));{H(n,t,{integer:!0,positive:!0});const r=10**n;return e.map(e=>Math.round(e*r)/r)}}{const e=o[0];if(void 0===n||0===n)return e.map(e=>e.map(e=>Math.round(e)));{H(n,t,{integer:!0,positive:!0});const r=10**n;return e.map(e=>e.map(e=>Math.round(e*r)/r))}}},arity:{min:1,max:2}},trunc:{evaluate:Pe(e=>Math.trunc(e)),arity:Z(1)},floor:{evaluate:Pe(e=>Math.floor(e)),arity:Z(1)},ceil:{evaluate:Pe(e=>Math.ceil(e)),arity:Z(1)},min:{evaluate:(e,n)=>{if(1===e.length&&ke(e[0])){const t=e[0];return Se(t,n),t.reduce((e,n)=>Math.min(e,n),1/0)}const[t,...r]=e;return H(t,n),r.reduce((e,t)=>(H(t,n),Math.min(e,t)),t)},arity:{min:1}},max:{evaluate:(e,n)=>{if(1===e.length&&ke(e[0])){const t=e[0];return Se(t,n),t.reduce((e,n)=>Math.max(e,n),-1/0)}const[t,...r]=e;return H(t,n),r.reduce((e,t)=>(H(t,n),Math.max(e,t)),t)},arity:{min:1}},abs:{evaluate:Pe(e=>Math.abs(e)),arity:Z(1)},sign:{evaluate:Pe(e=>Math.sign(e)),arity:Z(1)}};function Oe([e,...n],t){const r=A(e,t);for(const e of n)if(!te(r,A(e,t),t))return!1;return!0}const Me={"==":{evaluate:(e,n)=>Oe(e,n),arity:{min:1}},"!=":{evaluate:(e,n)=>!Oe(e,n),arity:{min:1}},"identical?":{evaluate:e=>function([e,...n]){for(const t of n)if(t!==e)return!1;return!0}(e),arity:{min:1}},">":{evaluate:([e,...n],t)=>{let r=W(e);for(const e of n){if(ne(r,W(e),t)<=0)return!1;r=W(e)}return!0},arity:{min:1}},"<":{evaluate:([e,...n],t)=>{let r=W(e);for(const e of n){if(ne(r,W(e),t)>=0)return!1;r=W(e)}return!0},arity:{min:1}},">=":{evaluate:([e,...n],t)=>{let r=W(e);for(const e of n){if(ne(r,W(e),t)<0)return!1;r=W(e)}return!0},arity:{min:1}},"<=":{evaluate:([e,...n],t)=>{let r=W(e);for(const e of n){if(ne(r,W(e),t)>0)return!1;r=W(e)}return!0},arity:{min:1}},not:{evaluate:([e])=>!e,arity:Z(1)},"epoch->iso-date":{evaluate:([e],n)=>(H(e,n),new Date(e).toISOString()),arity:Z(1)},"iso-date->epoch":{evaluate:([e],n)=>{L(e,n);const t=new Date(e).valueOf();return H(t,n,{finite:!0}),t},arity:Z(1)},boolean:{evaluate:([e])=>!!e,arity:Z(1)},compare:{evaluate:([e,n],t)=>(K(e,t),K(n,t),ne(e,n,t)),arity:Z(2)},"json-parse":{evaluate:([e],n)=>(L(e,n),JSON.parse(e)),arity:Z(1)},"json-stringify":{evaluate:([e,n],t)=>(P(e,t),void 0===n?JSON.stringify(e):(H(n,t),JSON.stringify(e,null,n))),arity:{min:1,max:2}},"effect-name":{evaluate:([e],n)=>function(e,n){return D(e,n),e}(e,n).name,arity:Z(1)},"effect-matcher":{evaluate:([e],n)=>{if("string"==typeof e)return{[f]:!0,sourceCodeInfo:n,functionType:"EffectMatcher",matchType:"string",pattern:e,flags:"",arity:Z(1)};if(U(e))return{[f]:!0,sourceCodeInfo:n,functionType:"EffectMatcher",matchType:"regexp",pattern:e.s,flags:e.f,arity:Z(1)};throw new r("effect-matcher expects a string or regexp pattern",n)},arity:Z(1)},"type-of":{evaluate:([e])=>null==e?"null":"boolean"==typeof e?"boolean":"number"==typeof e?"number":"string"==typeof e?"string":R(e)?"effect":U(e)?"regexp":k(e)?"function":Array.isArray(e)?"array":"object",arity:Z(1)}},Ve={keys:{evaluate:([e],n)=>(O(e,n),Object.keys(e)),arity:Z(1)},vals:{evaluate:([e],n)=>(O(e,n),Object.values(e)),arity:Z(1)},entries:{evaluate:([e],n)=>(O(e,n),Object.entries(e)),arity:Z(1)},find:{evaluate:([e,n],t)=>(O(e,t),L(n,t),ee(e,n)?[n,e[n]]:null),arity:Z(2)},dissoc:{evaluate:([e,n],t)=>{O(e,t),L(n,t);const r={...e};return delete r[n],r},arity:Z(2)},merge:{evaluate:(e,n)=>{if(0===e.length)return null;const[t,...r]=e;return O(t,n),r.reduce((e,t)=>(O(t,n),{...e,...t}),{...t})},arity:{min:0}},"merge-with":{evaluate:()=>{throw new Error("merge-with is implemented in Dvala")},arity:{min:2}},zipmap:{evaluate:([e,n],t)=>{ce(e,t),ue(n,t);const r=Math.min(e.length,n.length),o={};for(let a=0;a<r;a+=1){o[q(e[a],t)]=re(n[a])}return o},arity:Z(2)},"select-keys":{evaluate:([e,n],t)=>(ce(n,t),O(e,t),n.reduce((n,t)=>(ee(e,t)&&(n[t]=re(e[t])),n),{})),arity:Z(2)}},Ue={"function?":{evaluate:([e])=>k(e),arity:Z(1)},"string?":{evaluate:([e])=>"string"==typeof e,arity:Z(1)},"number?":{evaluate:([e])=>"number"==typeof e,arity:Z(1)},"integer?":{evaluate:([e])=>"number"==typeof e&&G(e,{integer:!0}),arity:Z(1)},"boolean?":{evaluate:([e])=>"boolean"==typeof e,arity:Z(1)},"null?":{evaluate:([e])=>null==e,arity:Z(1)},"zero?":{evaluate:([e],n)=>(H(e,n,{finite:!0}),Math.abs(e)<se),arity:Z(1)},"pos?":{evaluate:([e],n)=>(H(e,n,{finite:!0}),e>0),arity:Z(1)},"neg?":{evaluate:([e],n)=>(H(e,n,{finite:!0}),e<0),arity:Z(1)},"even?":{evaluate:([e],n)=>(H(e,n,{finite:!0}),e%2==0),arity:Z(1)},"odd?":{evaluate:([e],n)=>(H(e,n,{finite:!0}),G(e,{integer:!0})&&e%2!=0),arity:Z(1)},"array?":{evaluate:([e])=>Array.isArray(e),arity:Z(1)},"collection?":{evaluate:([e])=>M(e),arity:Z(1)},"sequence?":{evaluate:([e])=>$(e),arity:Z(1)},"object?":{evaluate:([e])=>j(e),arity:Z(1)},"regexp?":{evaluate:([e])=>U(e),arity:Z(1)},"effect?":{evaluate:([e])=>R(e),arity:Z(1)},"finite?":{evaluate:([e],n)=>(H(e,n),Number.isFinite(e)),arity:Z(1)},"positive-infinity?":{evaluate:([e],n)=>(H(e,n),e===Number.POSITIVE_INFINITY),arity:Z(1)},"negative-infinity?":{evaluate:([e],n)=>(H(e,n),e===Number.NEGATIVE_INFINITY),arity:Z(1)},"true?":{evaluate:([e])=>!0===e,arity:Z(1)},"false?":{evaluate:([e])=>!1===e,arity:Z(1)},"empty?":{evaluate:([e],n)=>null===e||(V(e,n),"string"==typeof e||Array.isArray(e)?0===e.length:0===Object.keys(e).length),arity:Z(1)},"not-empty?":{evaluate:([e],n)=>null!==e&&(V(e,n),"string"==typeof e||Array.isArray(e)?e.length>0:Object.keys(e).length>0),arity:Z(1)},"vector?":{evaluate:([e])=>ke(e),arity:Z(1)},"matrix?":{evaluate:([e])=>Ne(e),arity:Z(1)},"grid?":{evaluate:([e])=>Ie(e),arity:Z(1)}},Be={regexp:{evaluate:([e,n],t)=>{L(e,t);const o=e||"(?:)",a="string"==typeof n?n:"";try{new RegExp(o,a)}catch(e){throw new r(`Invalid regular expression: ${o} ${a}`,t)}return{[d]:!0,sourceCodeInfo:t,s:o,f:a}},arity:{min:1,max:2}},"re-match":{evaluate:([e,n],t)=>{if(function(e,n){if(!U(e))throw g("RegularExpression",e,n)}(n,t),!F(e))return null;const r=new RegExp(n.s,n.f).exec(e);return r?[...r]:null},arity:Z(2)},replace:{evaluate:([e,n,t],r)=>{L(e,r),B(n,r),L(t,r);const o=U(n)?new RegExp(n.s,`${n.f}`):n;return e.replace(o,t)},arity:Z(3)},"replace-all":{evaluate:([e,n,t],r)=>{L(e,r),B(n,r),L(t,r);const o=U(n)?new RegExp(n.s,`${n.f.includes("g")?n.f:`${n.f}g`}`):n;return e.replaceAll(o,t)},arity:Z(3)}},Re=/^\s*$/,De={str:{evaluate:e=>e.reduce((e,n)=>e+(null==n?"":j(n)||Array.isArray(n)?JSON.stringify(n):`${n}`),""),arity:{}},number:{evaluate:([e],n)=>{L(e,n);const t=Number(e);if(Number.isNaN(t))throw new r(`Could not convert '${e}' to a number.`,n);return t},arity:Z(1)},"lower-case":{evaluate:([e],n)=>(L(e,n),e.toLowerCase()),arity:Z(1)},"upper-case":{evaluate:([e],n)=>(L(e,n),e.toUpperCase()),arity:Z(1)},trim:{evaluate:([e],n)=>(L(e,n),e.trim()),arity:Z(1)},join:{evaluate:([e,n],t)=>(ue(e,t),e.forEach(e=>K(e,t)),L(n,t),e.join(n)),arity:Z(2)},split:{evaluate:([e,n,t],r)=>{L(e,r),B(n,r),void 0!==t&&H(t,r,{integer:!0,nonNegative:!0});const o="string"==typeof n?n:new RegExp(n.s,n.f);return e.split(o,t)},arity:{min:2,max:3}},"blank?":{evaluate:([e],n)=>null===e||(L(e,n),Re.test(e)),arity:Z(1)}},Te={"|>":{evaluate:()=>{throw new Error("|> is implemented in Dvala")},arity:Z(2)},apply:{evaluate:()=>{throw new Error("apply is implemented in Dvala")},arity:{min:2}},identity:{evaluate:([e])=>re(e),arity:Z(1)},comp:{evaluate:(e,n)=>{return e.forEach(e=>_(e,n)),{[f]:!0,sourceCodeInfo:n,functionType:"Comp",params:e,arity:e.length>0?(t=e.at(-1),"number"==typeof t||M(t)?Z(1):t.arity):{min:1,max:1}};var t},arity:{}},constantly:{evaluate:([e],n)=>({[f]:!0,sourceCodeInfo:n,functionType:"Constantly",value:re(e),arity:{}}),arity:Z(1)}};function _e(e){return ie(`\n ${e.title}\n\n ${e.description.replace(/`(.+?)`/g,"$1").replace(/\$(\w+)/g,"$1").replace(/\*\*\*(.+)\*\*\*/g,"$1").replace(/\*\*(.+)\*\*/g,"$1")}\n\n Signature:\n ${function(e){const{title:n,variants:t,args:r,returns:o}=e,a=!Fe(e)&&e._isOperator,s=t.map(t=>{if(Fe(e)){const e=t.argumentNames.length>0?`, ${t.argumentNames.map(e=>{let n="";return r[e].rest&&(n+="..."),n+=e,n}).join(", ")}`:"";return` perform(effect(${n})${e}) -> ${Le(o)}`}return`${` ${n}(${t.argumentNames.map(e=>{let n="";return r[e].rest&&(n+="..."),n+=e,n}).join(", ")})`} -> ${Le(o)}`}),i=a?["","Operator:",` a ${n} b -> ${Le(o)}`]:[];return[...s,...i]}(e).join("\n ")}\n\n Arguments:\n ${function(e){return Object.entries(e.args).map(([e,n])=>`${e}: ${Le(n)}`)}(e).join("\n ")}\n\n Examples:\n${e.examples.map(e=>ie(e,4)).join("\n\n")}`)}function Fe(e){return"effect"in e}function Le(e){const n=e.type,t=(Array.isArray(n)?n:[n]).join(" | ");return e.array||e.rest?`Array<${t}>`:t}const qe={sum:{evaluate:([e],n)=>(Ee(e,n),e.reduce((e,n)=>e+n,0)),arity:Z(1)},prod:{evaluate:([e],n)=>(Ee(e,n),e.reduce((e,n)=>e*n,1)),arity:Z(1)},mean:{evaluate:([e],n)=>(Se(e,n),e.reduce((e,n)=>e+n,0)/e.length),arity:Z(1)},median:{evaluate:([e],n)=>(Se(e,n),function(e){const n=[...e].sort((e,n)=>e-n),t=Math.floor(n.length/2);return n.length%2==0?(n[t-1]+n[t])/2:n[t]}(e)),arity:Z(1)}},ze={...Y,...Q,...fe,...de,...pe,...je,...function(e,n){return{doc:{evaluate:([t],r)=>{if(x(e),R(t)){const e=`-effect-${t.name}`,r=n[e];return r?_e(r):""}if(_(t,r),!k(t))return"";if("Builtin"===t.functionType){const n=e[t.name];return n?_e(n):""}return"UserDefined"===t.functionType?t.docString:""},arity:Z(1)},"with-doc":{evaluate:([e,n],t)=>{if(_(e,t),L(n,t),!k(e)||"UserDefined"!==e.functionType)throw new Error("with-doc can only be used with user-defined functions");return{...e,[f]:!0,docString:n}},arity:Z(2)},arity:{evaluate:([e],t)=>{if(R(e)){const t=`-effect-${e.name}`,r=n[t];if(!r)return{};const o=r.variants.map(e=>e.argumentNames.length);return{min:Math.min(...o),max:Math.max(...o)}}return _(e,t),k(e)?e.arity:Z(1)},arity:Z(1)}}}({},{}),...Me,...Ve,...Ue,...Be,...De,...Te,...qe};Object.entries(ze).forEach(([e,n])=>{n.name=e});const We={...ze},Ke={},Ye=[];Object.entries(We).forEach(([e,n],t)=>{Ke[e]=t,Ye.push(n)});const Ge={arity:{},evaluateAsNormalExpression:(e,n)=>{let t=!0;for(const r of e)if(t=A(r,n),!t)break;return t},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1],n,r,o)},He=11,Je=12,Xe=13,Ze=14,Qe=15,en=16;function nn(e,n){return e instanceof Promise?e.then(n):n(e)}async function tn(e,n,t,r,o){n.push(await e);for(let e=o+1;e<t.length;e++)n.push(await r(t[e],e));return n}function rn(e,n,t){let r=t;for(let t=0;t<e.length;t++){const o=n(r,e[t],t);if(o instanceof Promise)return on(o,e,n,t);r=o}return r}async function on(e,n,t,r){let o=await e;for(let e=r+1;e<n.length;e++)o=await t(o,n[e],e);return o}function an(e,n){for(let t=0;t<e.length;t++){const r=n(e[t],t);if(r instanceof Promise)return sn(r,e,n,t)}}async function sn(e,n,t,r){await e;for(let e=r+1;e<n.length;e++)await t(n[e],e)}function un(e,n){if(e[0]===Xe)Object.values(e[1][0]).forEach(e=>{e[1][1]&&n(e[1][1]),un(e,n)});else if(e[0]===Ze)for(let t=0;t<e[1][0].length;t+=1){const r=e[1][0][t]??null;null!==r&&(r[1][1]&&n(r[1][1]),un(r,n))}}function cn(e,n,t){const r=e[2],o={};return nn(ln(e,n,t,r,o),()=>o)}function ln(e,n,t,o,a){if(e[0]===Xe){!function(e,n){if(!w(e))throw new r(`Expected UnknownRecord, got ${m(e)}.`,v(e,n))}(n,o);const s=new Set;let i;return nn(an(Object.entries(e[1][0]),([e,r])=>{if(r[0]===Je)return void(i=r);s.add(e);const u=n[e];return nn(void 0!==u?u:r[1][1]?t(r[1][1]):null,e=>{const n=e??null;return P(n,o),ln(r,n,t,o,a)})}),()=>{if(i){const e=Object.entries(n).filter(([e])=>!s.has(e)).reduce((e,[n,t])=>(e[n]=A(t),e),{});a[i[1][0]]=e}})}if(e[0]===Ze){let r=null;ue(n,o);const s=[];for(let n=0;n<e[1][0].length;n+=1){const t=e[1][0][n]??null;if(null!==t){if(t[0]===Je){r=n;break}s.push({element:t,index:n})}}return nn(an(s,({element:e,index:r})=>{const s=n[r];return nn(void 0!==s?s:e[1][1]?t(e[1][1]):null,n=>{const r=n??null;return P(r,o),ln(e,r,t,o,a)})}),()=>{if(null!==r){const t=n.slice(r),o=e[1][0][r];a[o[1][0]]=t}})}e[0]===Je?a[e[1][0]]=A(n):a[e[1][0][1]]=A(n)}function fn(e){const n={};return dn(e,n),n}function dn(e,n){if(null!==e)if(e[0]===Ze)for(const t of e[1][0])dn(t,n);else if(e[0]===Xe)for(const t of Object.values(e[1][0]))dn(t,n);else if(e[0]===Je){if(n[e[1][0]])throw new r(`Duplicate binding name: ${e[1][0]}`,e[2]);n[e[1][0]]=!0}else if(e[0]===He){if(n[e[1][0][1]])throw new r(`Duplicate binding name: ${e[1][0]}`,e[2]);n[e[1][0][1]]=!0}}function pn(e,n,t){const r={};return nn(hn(e,n,t,r),e=>e?r:null)}function hn(e,n,t,r){if(e[0]===en)return!0;if(e[0]===Qe){const r=e[1][0];return nn(t(r),e=>te(n,e))}if(e[0]===He){const o=e[1][0],a=e[1][1];if(null==n){if(a)return nn(t(a),e=>(r[o[1]]=A(e),!0));r[o[1]]=n??null}else r[o[1]]=A(n);return!0}if(e[0]===Xe){if(!w(n))return!1;const o=new Set;let a;const s=Object.entries(e[1][0]);let i=!0;for(const[e,u]of s)i=nn(i,s=>{if(!s)return!1;if(u[0]===Je)return a=u,!0;o.add(e);const i=n[e];if(void 0===i&&u[0]===Qe)return nn(t(u[1][0]),e=>te(void 0,e));return nn(void 0!==i?i:u[1]&&u[1][1]?t(u[1][1]):null,e=>hn(u,e??null,t,r))});return nn(i,e=>{if(!e)return!1;if(a){const e=Object.entries(n).filter(([e])=>!o.has(e)).reduce((e,[n,t])=>(e[n]=A(t),e),{});r[a[1][0]]=e}return!0})}{const o=e;if(!Array.isArray(n))return!1;const a=o[1][0];let s=null;for(let e=0;e<a.length;e+=1){const n=a[e];if(null!==n&&n[0]===Je){s=e;break}}if(null===s&&n.length!==a.length)return!1;if(null!==s&&n.length<s)return!1;let i=!0;for(let e=0;e<a.length;e+=1){const o=a[e];if(null===o)continue;if(o[0]===Je){r[o[1][0]]=n.slice(e);break}const s=o;i=nn(i,o=>!!o&&hn(s,A(n[e]),t,r))}return i}}const yn={arity:{},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>{const a=new Set;t([e[1][1]],n,r,o).forEach(e=>a.add(e));for(const[s,i,u]of e[1][2]){const e={};Object.assign(e,fn(s));const c=n.create(e);u&&t([u],c,r,o).forEach(e=>a.add(e)),t([i],c,r,o).forEach(e=>a.add(e))}return a}},mn={arity:Z(1),getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t([e[1][1]],n,r,o)},vn={arity:{},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>{const a=t(e[1][1],n.create({}),r,o),s=e[1][2];if(!s||0===s.length)return a;let i=new Set;for(const[e,a]of s){i=oe(i,t([e],n,r,o),t([a],n,r,o))}return oe(a,i)}},gn={arity:{},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>function(e,n,t,r,o){const a=new Set,s={self:{value:null}};e[0].forEach(e=>{Object.assign(s,fn(e)),un(e,e=>{ae(a,t([e],n,r,o))})});const i=n.create(s),u=t(e[1],i,r,o);return ae(a,u),a}(e[1][1],n,t,r,o)};const bn={arity:Z(0),getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>{const a=e[1][1],s=a[1][0],i=a[1][1],u=t([i],n,r,o);return un(s,e=>{ae(u,t([e],n,r,o))}),n.addValues(fn(s),s[2]),u}},xn={arity:{},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>{const a=e[1][1],s=a.reduce((e,n)=>{const t=fn(n[1][0]);return Object.keys(t).forEach(n=>{e[n]={value:!0}}),e},{});return oe(t(a.map(e=>e[1][1]),n,r,o),t([e[1][2]],n.create(s),r,o))}};function wn(e,n,t,r,o){const a=new Set,s={},[,i,u]=e[1];return i.forEach(e=>{const[i,u,c,l]=e,[f,d]=i[1];t([d],n.create(s),r,o).forEach(e=>a.add(e)),Object.assign(s,fn(f)),u&&u.forEach(e=>{const[i,u]=e[1];t([u],n.create(s),r,o).forEach(e=>a.add(e)),Object.assign(s,fn(i))}),c&&t([c],n.create(s),r,o).forEach(e=>a.add(e)),l&&t([l],n.create(s),r,o).forEach(e=>a.add(e))}),t([u],n.create(s),r,o).forEach(e=>a.add(e)),a}const kn={arity:Z(1),getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>wn(e,n,t,r,o)},En={arity:Z(1),getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>wn(e,n,t,r,o)},Sn={arity:{},evaluateAsNormalExpression:(e,n)=>{let t=!1;for(const r of e)if(t=A(r,n),t)break;return t},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1],n,r,o)},In={arity:{min:1},evaluateAsNormalExpression:(e,n)=>{for(const t of e){const e=A(t,n);if(null!==e)return e}return null},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1],n,r,o)},Nn={arity:{},evaluateAsNormalExpression:e=>{throw new t(e)},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1],n,r,o)},An={arity:{},evaluateAsNormalExpression:(e,n)=>{const t=[];for(const r of e)t.push(A(r,n));return t},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1],n,r,o)},Pn={arity:{},getUndefinedSymbols:()=>new Set},$n={arity:{},evaluateAsNormalExpression:(e,n)=>{const t={};for(let r=0;r<e.length;r+=2){const o=e[r],a=e[r+1];L(o,n),t[o]=a??null}return t},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1],n,r,o)},Cn={arity:Z(1),getUndefinedSymbols:()=>new Set},jn={arity:{min:1},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>oe(...e[1][1].map(e=>t([e],n,r,o)))},On={arity:{min:1},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>{const[,a,s]=e[1];return oe(t([a],n,r,o),t(s,n,r,o))}},Mn={arity:{min:1},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>oe(...e[1][1].map(e=>t([e],n,r,o)))},Vn={"??":0,"&&":1,"||":2,array:3,cond:4,"defined?":5,block:6,doseq:7,"0_lambda":8,for:9,if:10,let:11,loop:12,object:13,recur:14,match:15,unless:16,import:17,effect:18,perform:19,parallel:20,race:21},Un=[In,Ge,Sn,An,{arity:{},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1].flat(),n,r,o)},mn,vn,En,gn,kn,{arity:{min:2,max:3},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1].filter(e=>!!e),n,r,o)},bn,xn,$n,Nn,yn,{arity:{},getUndefinedSymbols:(e,n,{getUndefinedSymbols:t,builtin:r,evaluateNode:o})=>t(e[1][1].filter(e=>!!e),n,r,o)},Cn,Pn,On,jn,Mn],Bn={normalExpressions:We,specialExpressions:Un,allNormalExpressions:Ye},Rn=Object.keys(We),Dn=Object.keys(Vn);function Tn(e){return"object"==typeof e&&null!==e&&"string"==typeof e.program&&Array.isArray(e.fileModules)}function _n(e){return i.UserDefinedSymbol===e[0]}function Fn(e,n){return function(e,n){if(!_n(e))throw g("UserDefinedSymbolNode",e,n)}(e,n),e}function Ln(e){return i.NormalBuiltinSymbol===e[0]}function qn(e){return i.SpecialBuiltinSymbol===e[0]}function zn(e){return!!function(e){return e[0]===i.NormalExpression}(e)&&function(e){const n=e[0];return i.UserDefinedSymbol===n||i.NormalBuiltinSymbol===n||i.SpecialBuiltinSymbol===n}(e[1][0])}function Wn(e){return e[0]===i.Spread}const Kn=(e,n,t,r)=>{const o=Array.isArray(e)?e:[[i.SpecialExpression,[Vn.block,e.body,void 0]]],a=new Set;for(const e of o)Yn(e,n,t,r)?.forEach(e=>a.add(e));return a};function Yn(e,n,t,o){const a=e[0];switch(a){case i.UserDefinedSymbol:{const t=e;return null===n.lookUp(t)?new Set([t[1]]):null}case i.NormalBuiltinSymbol:case i.SpecialBuiltinSymbol:case i.String:case i.Number:case i.ReservedSymbol:case i.Binding:return null;case i.NormalExpression:{const r=e,a=new Set;if(zn(r)){const[,[e]]=r;if(_n(e)){null===n.lookUp(e)&&a.add(e[1])}}else{const[,[e]]=r;Yn(e,n,t,o)?.forEach(e=>a.add(e))}for(const e of r[1][1])Yn(e,n,t,o)?.forEach(e=>a.add(e));return a}case i.SpecialExpression:{const r=e,a=r[1][0];return(0,t.specialExpressions[a].getUndefinedSymbols)(r,n,{getUndefinedSymbols:Kn,builtin:t,evaluateNode:o})}case i.Spread:return Yn(e[1],n,t,o);default:throw new r(`Unhandled node type: ${a}`,e[2])}}const Gn=["^","*","/","%","+","-","<<",">>",">>>","++","<","<=","≤",">",">=","≥","==","!=","!=","&","xor","|","&&","||","??","|>"],Hn=[...Gn,"?",":","->","...",".",",","=",":",";"],Jn=new Set(["comment","cond","defined?","block","doseq","if","let","loop","recur","unless","while"]);function Xn(e){return!Jn.has(e)}const Zn=new Set(Gn);function Qn(e){return Zn.has(e)}const et=new Set(Hn);function nt(e){return et.has(e)}function tt(e,n){return"Symbol"===e?.[0]&&(!n||e[1]===n)}function rt(e,n){return function(e,n){tt(e,n)||St("Symbol",void 0,e)}(e,n),e}function ot(e,n){return"ReservedSymbol"===e?.[0]&&(!n||e[1]===n)}function at(e,n){ot(e,n)||St("ReservedSymbol",n,e)}function st(e,n){return at(e,n),e}function it(e,n){return"Operator"===e?.[0]&&(!n||e[1]===n)}function ut(e,n){it(e,n)||St("Operator",n,e)}function ct(e){return"Number"===e?.[0]}function lt(e){return"BasePrefixedNumber"===e?.[0]}function ft(e){return"LParen"===e?.[0]}function dt(e){ft(e)||St("LParen",void 0,e)}function pt(e){return"RParen"===e?.[0]}function ht(e){pt(e)||St("RParen",void 0,e)}function yt(e){return"LBracket"===e?.[0]}function mt(e){return function(e){yt(e)||St("LBracket",void 0,e)}(e),e}function vt(e){return"RBracket"===e?.[0]}function gt(e){vt(e)||St("RBracket",void 0,e)}function bt(e){return"LBrace"===e?.[0]}function xt(e){return function(e){bt(e)||St("LBrace",void 0,e)}(e),e}function wt(e){return"RBrace"===e?.[0]}function kt(e){return"string"===e?.[0]}function Et(e){return"Operator"===e?.[0]&&Qn(e[1])}function St(e,n,t){const o=t?`${t[0]} '${t[1]}'`:"end of input";throw new r(`Unexpected token: ${o}, expected ${e}${n?` '${n}'`:""}`,t?.[2])}function It(e,n){return n&&(e[2]=n),e}function Nt(e,n){return void 0!==Vn[e]&&"fn"!==e&&"defn"!==e?It([i.SpecialBuiltinSymbol,Vn[e]],n):void 0!==Ke[e]?It([i.NormalBuiltinSymbol,Ke[e]],n):It([i.UserDefinedSymbol,e],n)}function At(e){return e.substring(1,e.length-1).replace(/(\\{2})|(\\')|\\(.)/g,(e,n,t,r)=>n?"\\":t?"'":`\\${r}`)}const Pt=Object.entries(Ke).reduce((e,[n,t])=>(e[t]=n,e),[]),$t=Object.entries(Vn).reduce((e,[n,t])=>(e[t]=n,e),[]);function Ct(e){return _n(e)?e[1]:Ln(e)?Pt[e[1]]:$t[e[1]]}function jt(e,n,t){const r=It([i.NormalExpression,[e,n]],t);return Ln(e)&&X(Ye[e[1]].arity,r[1][1].length,t),r}function Ot(e){if(e.isAtEnd())return!0;const n=e.tryPeek();return it(n)?[";",",",":"].includes(n[1]):!!ot(n)&&["else","when","while","case","let","then","end","do"].includes(n[1])}function Mt(e,n,t,o,a){const s=e[1];switch(s){case"^":case"*":case"/":case"%":case"+":case"-":case"<<":case">>":case">>>":case"++":case"<":case"<=":case"≤":case">":case">=":case"≥":case"==":case"!=":case"&":case"xor":case"|":case"|>":return jt(n,[t,o],a);case"&&":case"||":case"??":return It([i.SpecialExpression,[Vn[s],[t,o]]],a);default:throw new r(`Unknown binary operator: ${s}`,a)}}class Vt{tokens;position;storedPosition=0;parseExpression;constructor(e){this.tokens=e.tokens,this.position=0}advance(){this.position+=1}tryPeek(){return this.tokens[this.position]}peek(){const e=this.tokens[this.position];if(!e){const e=this.tokens.at(-1),n=e?e[2]:void 0;throw new r("Unexpected end of input",n)}return e}isAtEnd(){return this.position>=this.tokens.length}peekSourceCodeInfo(){const e=this.tryPeek();return e?e[2]:this.tokens.at(-1)?.[2]}storePosition(){return this.storedPosition=this.position}restorePosition(){this.position=this.storedPosition}peekAhead(e){return this.tokens[this.position+e]}getPosition(){return this.position}getTokenAt(e){return this.tokens[e]}}function Ut(e,n){switch(e){case"^":return 12;case"*":case"/":case"%":return 11;case"+":case"-":return 10;case"<<":case">>":case">>>":return 9;case"++":return 8;case"<":case"<=":case"≤":case">":case">=":case"≥":return 7;case"==":case"!=":return 6;case"&":case"xor":case"|":return 5;case"&&":case"||":case"??":return 4;case"|>":return 2;default:throw new r(`Unknown binary operator: ${e}`,n)}}function Bt(e,n){const t=[];for(;!e.isAtEnd()&&!Rt(e,n);)it(e.tryPeek(),";")?e.advance():t.push(e.parseExpression());if(function(e,n){if(!Rt(e,n))throw new r(`Expected ${n.map(e=>e[1]).join(" or ")}`,e.peekSourceCodeInfo())}(e,n),0===t.length)throw new r("Expected expression",e.peekSourceCodeInfo());return 1===t.length?t[0]:It([i.SpecialExpression,[Vn.block,t,void 0]],e.peekSourceCodeInfo())}function Rt(e,n){for(const t of n)if(ot(e.tryPeek(),t))return!0;return!1}function Dt(e){const n=st(e.tryPeek(),"do");e.advance();const t=[];for(;!e.isAtEnd()&&!ot(e.tryPeek(),"end")&&!ot(e.tryPeek(),"with");)if(t.push(e.parseExpression()),it(e.tryPeek(),";"))e.advance();else if(!ot(e.tryPeek(),"end")&&!ot(e.tryPeek(),"with"))throw new r("Expected end",e.peekSourceCodeInfo());let o;if(ot(e.tryPeek(),"with"))for(e.advance(),o=[];!e.isAtEnd()&&!ot(e.tryPeek(),"end");){at(e.tryPeek(),"case"),e.advance();const n=e.parseExpression();at(e.tryPeek(),"then"),e.advance();const t=Bt(e,["case","end"]);o.push([n,t])}return at(e.tryPeek(),"end"),e.advance(),It([i.SpecialExpression,[Vn.block,t,o]],n[2])}function Tt(e){const n=e.peek();if(e.advance(),!tt(n))throw new r(`Expected symbol token, got ${n[0]}`,n[2]);return"'"===n[1][0]?Nt(At(n[1]),n[2]):Nt(n[1],n[2])}function _t(e,n){e.advance();const t=n[1].substring(1,n[1].length-1).replace(/(\\{2})|(\\")|(\\n)|(\\t)|(\\r)|(\\b)|(\\f)|\\(.)/g,(e,n,t,r,o,a,s,i,u)=>n?"\\":r?"\n":o?"\t":a?"\r":s?"\b":i?"\f":t?'"':u);return It([i.String,t],n[2])}function Ft(e){const n=e.peek();e.advance();const t=n[1],r="-"===t[0],o=(r?t.substring(1):t).replace(/_/g,"");return It([i.Number,r?-Number(o):Number(o)],n[2])}function Lt(e,{requireDefaultValue:n,noRest:t,allowLiteralPatterns:o}={}){const a=e.tryPeek();if(o&&ot(a,"_"))return e.advance(),It([en,[]],a[2]);if(o&&zt(a)){if(ct(a)||lt(a)){const n=Ft(e);return It([Qe,[n]],a[2])}if(kt(a)){const n=_t(e,a);return It([Qe,[n]],a[2])}if(ot(a,"true")){e.advance();const n=It([i.ReservedSymbol,"true"],a[2]);return It([Qe,[n]],a[2])}if(ot(a,"false")){e.advance();const n=It([i.ReservedSymbol,"false"],a[2]);return It([Qe,[n]],a[2])}if(ot(a,"null")){e.advance();const n=It([i.ReservedSymbol,"null"],a[2]);return It([Qe,[n]],a[2])}}if(tt(a)){const t=Tt(e);if(!_n(t))throw new r("Expected user defined symbol",a[2]);const o=qt(e);if(n&&!o)throw new r("Expected assignment",e.peekSourceCodeInfo());return It([He,[t,o]],a[2])}if(it(a,"...")){if(t)throw new r("Rest element not allowed",a[2]);e.advance();const n=Fn(Tt(e));if(it(e.tryPeek(),"="))throw new r("Rest argument can not have default value",e.peekSourceCodeInfo());return It([Je,[n[1],void 0]],a[2])}if(yt(a)){e.advance();const t=[];let s=e.peek(),i=!1;for(;!vt(s);){if(i)throw new r("Rest argument must be last",s[2]);if(it(s,",")){t.push(null),e.advance(),s=e.peek();continue}const n=Lt(e,{allowLiteralPatterns:o});n[0]===Je&&(i=!0),t.push(n),s=e.peek(),vt(s)||(ut(s,","),e.advance()),s=e.peek()}e.advance();const u=qt(e);if(n&&!u)throw new r("Expected assignment",e.peekSourceCodeInfo());return It([Ze,[t,u]],a[2])}if(bt(a)){e.advance();const t={};let s=e.peek(),i=!1;for(;!wt(s);){if(i)throw new r("Rest argument must be last",s[2]);it(s,"...")&&(i=!0,e.advance());const n=Tt(e),u=Ct(n);if(s=e.peek(),ot(s,"as")){if(i)throw new r("Rest argument can not have alias",s[2]);e.advance();const n=Fn(Tt(e));if(t[n[1]])throw new r(`Duplicate binding name: ${n}`,s[2]);t[u]=It([He,[n,qt(e)]],a[2])}else if(wt(s)||it(s,",")||it(s,"=")){const o=Fn(n,n[2]);if(t[o[1]])throw new r(`Duplicate binding name: ${o}`,s[2]);if(i&&it(e.tryPeek(),"="))throw new r("Rest argument can not have default value",e.peekSourceCodeInfo());t[o[1]]=It(i?[Je,[o[1],qt(e)]]:[He,[o,qt(e)]],a[2])}else if(it(s,":")){if(e.advance(),s=e.peek(),o){if(!bt(s)&&!yt(s)&&!zt(s))throw new r("Expected literal, object or array pattern",s[2])}else if(!bt(s)&&!yt(s))throw new r("Expected object or array",s[2]);t[u]=Lt(e,{allowLiteralPatterns:o})}wt(e.peek())||(ut(e.peek(),","),e.advance()),s=e.peek()}e.advance(),s=e.peek();const u=qt(e);if(n&&!u)throw new r("Expected assignment",s[2]);return It([Xe,[t,u]],a[2])}throw new r("Expected symbol",e.peekSourceCodeInfo())}function qt(e){if(it(e.tryPeek(),"="))return e.advance(),e.parseExpression()}function zt(e){return ct(e)||lt(e)||kt(e)||ot(e,"true")||ot(e,"false")||ot(e,"null")}function Wt(e,n){e.advance();const t=Lt(e,{requireDefaultValue:!0,noRest:!0}),r=t[1][1];t[1][1]=void 0;const o=It([i.Binding,[t,r]],n[2]);return It([i.SpecialExpression,[Vn.let,o]],n[2])}function Kt(e){const n=function(e){const n=rt(e.tryPeek()),t=Fn(Tt(e));at(e.tryPeek(),"in"),e.advance();const r=e.parseExpression();return It([i.Binding,[It([He,[t,void 0]],n[2]),r]],n[2])}(e),t=[];let o=e.peek();Yt(o,["let","when","while"]);const a=[];if("let"===o[1])for(t.push("&let");tt(o,"let");){const n=Wt(e,o),t=a.flatMap(e=>Object.keys(fn(e[1][0])));if(Object.keys(fn(n[1][1][1][0])).some(e=>t.includes(e)))throw new r("Duplicate binding",n[1][1][2]);a.push(n[1][1]),o=e.peek(),Yt(o,["let","when","while"]),o=e.peek()}let s,u;for(;ot(o,"when")||ot(o,"while");){e.advance(),"when"===o[1]?(t.push("&when"),s=e.parseExpression()):(t.push("&while"),u=e.parseExpression()),o=e.peek();Yt(o,t.includes("&when")&&t.includes("&while")?[]:t.includes("&when")?["while"]:["when"]),o=e.peek()}return Yt(o,[]),[n,a,s,u]}function Yt(e,n){if(!function(e,n){if(it(e,",")||pt(e))return!0;for(const t of n){if("let"===t&&tt(e,"let"))return!0;if(["when","while"].includes(t)&&ot(e,t))return!0}return!1}(e,n)){const t=`${[...n,","].map(e=>`"${e}"`).join(", ")} or ")"`;throw new r(`Expected symbol ${t}`,e[2])}}const Gt=(1+Math.sqrt(5))/2,Ht={E:Math.E,"-E":-Math.E,"ε":Math.E,"-ε":-Math.E,PI:Math.PI,"-PI":-Math.PI,"π":Math.PI,"-π":-Math.PI,PHI:Gt,"-PHI":-Gt,"φ":Gt,"-φ":-Gt,POSITIVE_INFINITY:Number.POSITIVE_INFINITY,"∞":Number.POSITIVE_INFINITY,NEGATIVE_INFINITY:Number.NEGATIVE_INFINITY,"-∞":Number.NEGATIVE_INFINITY,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,MIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,MAX_VALUE:Number.MAX_VALUE,MIN_VALUE:Number.MIN_VALUE,NaN:Number.NaN},Jt={true:!0,false:!1,null:null,do:null,else:null,case:null,each:null,in:null,when:null,while:null,function:null,as:null,then:null,end:null,with:null,_:null,...Ht};function Xt(e){const n=st(e.tryPeek());e.advance();const t=n[1];return function(e){return e in Ht}(t)?It([i.Number,Ht[t]],n[2]):It([i.ReservedSymbol,n[1]],n[2])}const Zt=/^\$([1-9]\d?)?$/;function Qt(e){const n=e.peek();if(ft(n)&&tt(e.peekAhead(1))&&it(e.peekAhead(2),"->"))return null;try{const t=function(e){const n=e.peek();if(tt(n))return[It([He,[Tt(e),void 0]],n[2])];dt(n),e.advance();let t=!1,o=!1;const a=[];for(;!e.isAtEnd()&&!pt(e.peek())&&!tt(e.peek(),"let");){if(t)throw new r("Rest argument must be last",e.peekSourceCodeInfo());const n=Lt(e);if(void 0!==n[1][1]&&(o=!0),n[0]===Je&&(t=!0),o&&!n[1][1])throw new r("Default arguments must be last",e.peekSourceCodeInfo());if(a.push(n),!it(e.peek(),",")&&!pt(e.peek())&&!tt(e.peek(),"let"))throw new r("Expected comma or closing parenthesis",e.peekSourceCodeInfo());it(e.peek(),",")&&e.advance()}if(!pt(e.peek()))throw new r("Expected closing parenthesis",e.peekSourceCodeInfo());return e.advance(),a}(e);if(!it(e.peek(),"->"))return null;let o;if(e.advance(),ot(e.peek(),"do")){const n=Dt(e),t=n[1][2];o=t&&t.length>0?[n]:n[1][1]}else o=[e.parseExpression()];return It([i.SpecialExpression,[Vn["0_lambda"],[t,o]]],n[2])}catch{return null}}function er(e,n){if(e.advance(),qn(n)&&n[1]===Vn.effect)return function(e,n){const t=n[2],o=e.peek();if(!tt(o))throw new r("effect expects a dotted name identifier",o[2]);let a=o[1];e.advance();for(;it(e.tryPeek(),".");){e.advance();const n=e.peek();if(!tt(n))throw new r("Expected identifier after dot in effect name",n[2]);a+=`.${n[1]}`,e.advance()}if(!pt(e.tryPeek()))throw new r("Expected closing parenthesis after effect name",e.peekSourceCodeInfo());return e.advance(),It([i.SpecialExpression,[Vn.effect,a]],t)}(e,n);const t=[];for(;!e.isAtEnd()&&!pt(e.tryPeek());){it(e.tryPeek(),"...")?(e.advance(),t.push(It([i.Spread,e.parseExpression()],e.peekSourceCodeInfo()))):t.push(e.parseExpression());const n=e.tryPeek();if(!it(n,",")&&!pt(n))throw new r("Expected comma or closing parenthesis",e.tryPeek()?.[2]);it(n,",")&&e.advance()}if(!pt(e.tryPeek()))throw new r("Expected closing parenthesis",e.peekSourceCodeInfo());if(e.advance(),!qn(n))return Ln(n)||_n(n)?jt(n,t,n[2]):It([i.NormalExpression,[n,t]],n[2]);{const e=n[1];if(e===Vn.import){if(1!==t.length)throw new r(`import expects exactly 1 argument, got ${t.length}`,n[2]);const o=t[0];if(!_n(o))throw new r("import expects a module name (symbol), got a non-symbol argument",o[2]??n[2]);const a=o[1];return It([i.SpecialExpression,[e,a]],n[2])}const o=e;switch(X(Bn.specialExpressions[o].arity,t.length,n[2]),o){case Vn["||"]:case Vn["&&"]:case Vn.recur:case Vn.array:case Vn.object:case Vn["??"]:return It([i.SpecialExpression,[o,t]],n[2]);case Vn["defined?"]:{const[e]=t;return It([i.SpecialExpression,[o,e]],n[2])}case Vn.perform:{const[e,...r]=t;return It([i.SpecialExpression,[o,e,r]],n[2])}case Vn.parallel:case Vn.race:return It([i.SpecialExpression,[o,t]],n[2]);case Vn["0_lambda"]:throw new r(`${o} is not allowed`,n[2]);default:throw new r(`Unknown special expression: ${o}`,n[2])}}}function nr(e){const n=xt(e.tryPeek());e.advance();const t=[];for(;!e.isAtEnd()&&!wt(e.tryPeek());){if(it(e.tryPeek(),"..."))e.advance(),t.push(It([i.Spread,e.parseExpression()],e.peekSourceCodeInfo()));else{const n=e.tryPeek();if(kt(n)){const r=_t(e,n);t.push(It([i.String,r[1]],n[2]))}else if(tt(n)){const r=n[1].startsWith("'")?At(n[1]):n[1];t.push(It([i.String,r],n[2])),e.advance()}else{if(!yt(n))throw new r("Expected key to be a symbol or a string",e.peekSourceCodeInfo());e.advance(),t.push(e.parseExpression()),gt(e.tryPeek()),e.advance()}ut(e.tryPeek(),":"),e.advance(),t.push(e.parseExpression())}const n=e.tryPeek();if(!it(n,",")&&!wt(n))throw new r("Expected comma or closing brace",e.peekSourceCodeInfo());it(n,",")&&e.advance()}var o;return wt(o=e.tryPeek())||St("RBrace",void 0,o),e.advance(),It([i.SpecialExpression,[Vn.object,t]],n[2])}function tr(e){let n=function(e){const n=e.peek();if(ft(n)){e.storePosition();const n=Qt(e);if(n)return n;e.restorePosition(),e.advance();const t=e.parseExpression();if(!pt(e.peek()))throw new r("Expected closing parenthesis",e.peekSourceCodeInfo());return e.advance(),t}if(it(n)){const t=n[1];if(Qn(t))return e.advance(),It(void 0!==Vn[t]?[i.SpecialBuiltinSymbol,Vn[t]]:[i.NormalBuiltinSymbol,Ke[t]],n[2]);if("->"===t)return function(e){const n=e.peek();e.advance();const t=e.getPosition();let o;if(ot(e.peek(),"do")){const n=Dt(e),t=n[1][2];o=t&&t.length>0?[n]:n[1][1]}else o=[e.parseExpression()];const a=e.getPosition()-1;let s=0,u="NOT_SET";for(let o=t;o<=a;o+=1){const t=e.getTokenAt(o);if(tt(t)){const e=Zt.exec(t[1]);if(e){const t=e[1]??"1";if("1"===t){if(!e[1]&&"WITH_1"===u||e[1]&&"NAKED"===u)throw new r("Please make up your mind, either use $ or $1",n[2]);u=e[1]?"WITH_1":"NAKED"}if(s=Math.max(s,Number(t)),s>20)throw new r("Can't specify more than 20 arguments",n[2])}}}const c=[];for(let e=1;e<=s;e+=1)1===e&&"NAKED"===u?c.push(It([He,[[i.UserDefinedSymbol,"$"],void 0]],n[2])):c.push(It([He,[[i.UserDefinedSymbol,`$${e}`],void 0]],n[2]));return It([i.SpecialExpression,[Vn["0_lambda"],[c,o]]],n[2])}(e);throw new r(`Illegal operator: ${t}`,n[2])}if(bt(n))return nr(e);if(yt(n))return function(e){const n=mt(e.tryPeek());e.advance();const t=[];for(;!e.isAtEnd()&&!vt(e.tryPeek());){it(e.tryPeek(),"...")?(e.advance(),t.push(It([i.Spread,e.parseExpression()],e.peekSourceCodeInfo()))):t.push(e.parseExpression());const n=e.tryPeek();if(!it(n,",")&&!vt(n))throw new r("Expected comma or closing parenthesis",e.peekSourceCodeInfo());it(n,",")&&e.advance()}return gt(e.tryPeek()),e.advance(),It([i.SpecialExpression,[Vn.array,t]],n[2])}(e);const t=n[0];switch(t){case"Number":case"BasePrefixedNumber":return Ft(e);case"string":return _t(e,n);case"Symbol":{e.storePosition();const n=Qt(e);return n||(e.restorePosition(),Tt(e))}case"ReservedSymbol":return Xt(e);case"RegexpShorthand":return function(e){const n=e.peek();e.advance();const t=n[1].lastIndexOf('"'),r=n[1].substring(2,t),o=n[1].substring(t+1),a=It([i.String,r],n[2]),s=It([i.String,o],n[2]);return It([i.NormalExpression,[It([i.NormalBuiltinSymbol,Ke.regexp],n[2]),[a,s]]],n[2])}(e);default:throw new r(`Unknown token type: ${t}`,n[2])}}(e),t=e.tryPeek();for(;it(t,".")||yt(t)||ft(t);)if("."===t[1]){e.advance();const o=e.tryPeek();if(!tt(o))throw new r("Expected symbol",e.peekSourceCodeInfo());n=rr(n,It([i.String,o[1]],o[2]),t[2]),e.advance(),t=e.tryPeek()}else if(yt(t)){e.advance();const o=e.parseExpression();if(!vt(e.tryPeek()))throw new r("Expected closing bracket",e.peekSourceCodeInfo());n=rr(n,o,t[2]),e.advance(),t=e.tryPeek()}else ft(t)&&(n=er(e,n),t=e.tryPeek());return n}function rr(e,n,t){return It([i.NormalExpression,[[i.NormalBuiltinSymbol,Ke.get],[e,n]]],t)}function or(e,n=0){const t=e.tryPeek();let o;if(tt(t))switch(t[1]){case"let":return Wt(e,t);case"if":case"unless":o=function(e,n){const t="unless"===n[1];e.advance();const r=e.parseExpression();at(e.tryPeek(),"then"),e.advance();const o=Bt(e,["else","end"]);let a;return ot(e.tryPeek(),"else")&&(e.advance(),a=Bt(e,["end"])),e.advance(),It(t?[i.SpecialExpression,[Vn.unless,[r,o,a]]]:[i.SpecialExpression,[Vn.if,[r,o,a]]],n[2])}(e,t);break;case"cond":o=function(e,n){e.advance();const t=[];for(;!e.isAtEnd()&&!ot(e.tryPeek(),"end");){at(e.tryPeek(),"case"),e.advance();const n=e.parseExpression();at(e.tryPeek(),"then"),e.advance();const r=Bt(e,["case","end"]);if(t.push([n,r]),ot(e.tryPeek(),"end"))break}return at(e.tryPeek()),e.advance(),It([i.SpecialExpression,[Vn.cond,t]],n[2])}(e,t);break;case"match":o=function(e,n){e.advance();const t=e.parseExpression(),r=[];for(;!e.isAtEnd()&&!ot(e.tryPeek(),"end");){at(e.tryPeek(),"case"),e.advance();const n=Lt(e,{allowLiteralPatterns:!0});let t;ot(e.tryPeek(),"when")&&(e.advance(),t=e.parseExpression()),at(e.tryPeek(),"then"),e.advance();const o=Bt(e,["case","end"]);if(r.push([n,o,t]),ot(e.tryPeek(),"end"))break}return at(e.tryPeek(),"end"),e.advance(),It([i.SpecialExpression,[Vn.match,t,r]],n[2])}(e,t);break;case"for":case"doseq":o=function(e,n){const t="doseq"===n[1];e.advance(),dt(e.tryPeek()),e.advance();const o=[];for(;!e.isAtEnd()&&!pt(e.tryPeek());){const n=Kt(e),t=o.flatMap(e=>Object.keys(fn(e[0][1][0]))),a=fn(n[0][1][0]);if(Object.keys(a).some(e=>t.includes(e)))throw new r("Duplicate binding",n[0][2]);o.push(n),it(e.tryPeek(),",")&&e.advance()}ht(e.tryPeek()),e.advance(),ut(e.tryPeek(),"->"),e.advance();const a=e.parseExpression();return It(t?[i.SpecialExpression,[Vn.doseq,o,a]]:[i.SpecialExpression,[Vn.for,o,a]],n[2])}(e,t);break;case"loop":o=function(e,n){e.advance(),dt(e.tryPeek()),e.advance();const t=[];let o=e.tryPeek();for(;!e.isAtEnd()&&!pt(o);){const n=Lt(e,{requireDefaultValue:!0,noRest:!0}),r=n[1][1];n[1][1]=void 0,t.push(It([i.Binding,[n,r]],n[2])),it(e.tryPeek(),",")&&e.advance(),o=e.tryPeek()}if(0===t.length)throw new r("Expected binding",e.peekSourceCodeInfo());ht(o),e.advance(),ut(e.tryPeek(),"->"),e.advance();const a=e.parseExpression();return It([i.SpecialExpression,[Vn.loop,t,a]],n[2])}(e,t)}else ot(t,"do")&&(o=Dt(e));o||=tr(e);let a=e.tryPeek();for(;!Ot(e);){if(Et(a)){const t=a[1],r=Ut(t,a[2]);if(r<=n&&(12!==r||12!==n))break;const s=It(Vn[t]?[i.SpecialBuiltinSymbol,Vn[t]]:[i.NormalBuiltinSymbol,Ke[t]],a[2]);e.advance();o=Mt(a,s,o,or(e,r),a[2])}else if(tt(a)){if(!Xn(a[1]))break;const t=3;if(t<=n)break;const s=Tt(e),i=or(e,t);if(qn(s))throw new r("Special expressions are not allowed in binary functional operators",s[2]);o=jt(s,[o,i],a[2])}else{if("?"!==a?.[1])break;{if(1<=n)break;e.advance();const t=or(e);if(!it(e.tryPeek(),":"))throw new r("Expected :",e.peekSourceCodeInfo());e.advance();const a=or(e);o=It([i.SpecialExpression,[Vn.if,[o,t,a]]],o[2])}}a=e.tryPeek()}return o}function ar(e){e.tokens.forEach(e=>{if("Error"===e[0])throw new r(e[3],e[2])});const n=[],t=function(e){const n=new Vt(e);return n.parseExpression=(e=0)=>or(n,e),n}(e);for(;!t.isAtEnd();)if(n.push(or(t,0)),it(t.tryPeek(),";"))t.advance();else if(!t.isAtEnd())throw new r("Expected ;",t.peekSourceCodeInfo());return n}function sr(e,{removeWhiteSpace:n}){const t=e.tokens.filter(e=>!(function(e){return"SingleLineComment"===e?.[0]}(e)||function(e){return"MultiLineComment"===e?.[0]}(e)||function(e){return"Shebang"===e?.[0]}(e)||n&&function(e){return"Whitespace"===e?.[0]}(e)));return{...e,tokens:t}}const ir=["(",")","[","]","{","}","'",'"',"`",",",".",";"," ","\n","\r","\t"],ur=["0","1","2","3","4","5","6","7","8","9",...ir],cr=new Set(ir),lr=new Set(ur),fr=/\s/,dr=[0],pr=(e,n)=>{if('"'!==e[n])return dr;let t='"',r=1,o=e[n+r],a=!1;for(;o&&('"'!==o||a);)r+=1,a?(a=!1,t+=o):("\\"===o&&(a=!0),t+=o),o=e[n+r];return o?(t+='"',[r+1,["string",t]]):[r,["Error",t,void 0,`Unclosed string at position ${n}`]]};function hr(e,n,t,r){return n===t.slice(r,r+n.length)?[n.length,[e,n]]:dr}const yr=/\d/,mr=/[0-7]/,vr=/[0-9a-f]/i,gr=/[01]/,br=/[\s)\]}(,;]/,xr=(e,n)=>{let t=e[n];if("'"===t){let r=1,o=e[n+r],a=!1;for(;"'"!==o||a;){if(void 0===o)return[r,["Error",t,void 0,`Unclosed quoted symbol at position ${n}`]];r+=1,a?(a=!1,t+=o):("\\"===o&&(a=!0),t+=o),o=e[n+r]}return t+="'",[r+1,["Symbol",t]]}if(!lr.has(t)){const r=n;let o=e[n+=1];for(;o&&!cr.has(o);)t+=o,o=e[n+=1];return t.endsWith(":")?[n-r-1,["Symbol",t.slice(0,-1)]]:[n-r,["Symbol",t]]}return dr},wr=[(e,n)=>{let t=e[n];if(!t||!fr.test(t))return dr;let r=t;for(t=e[n+=1];t&&fr.test(t);)r+=t,t=e[n+=1];return[r.length,["Whitespace",r]]},(e,n)=>{if("/"===e[n]&&"*"===e[n+1]){let t=2,r="/*";for(;("*"!==e[n+t]||"/"!==e[n+t+1])&&n+t+1<e.length;)r+=e[n+t],t+=1;return n+t+1>=e.length?[t,["Error",r,void 0,`Unclosed multi-line comment at position ${n}`]]:(r+="*/",t+=2,[t,["MultiLineComment",r]])}return dr},(e,n)=>{if("/"===e[n]&&"/"===e[n+1]){let t=2,r="//";for(;"\n"!==e[n+t]&&n+t<e.length;)r+=e[n+t],t+=1;return[t,["SingleLineComment",r]]}return dr},(e,n)=>{const t=xr(e,n);if(0===t[0]||!t[1])return dr;let r=t[1][1];r=r.startsWith("'")?r.slice(1,r.length-1):r;return void 0===Jt[r]?dr:[t[0],["ReservedSymbol",r]]},(e,n)=>hr("LParen","(",e,n),(e,n)=>hr("RParen",")",e,n),(e,n)=>hr("LBracket","[",e,n),(e,n)=>hr("RBracket","]",e,n),(e,n)=>hr("LBrace","{",e,n),(e,n)=>hr("RBrace","}",e,n),pr,(e,n)=>{if("#"!==e[n])return dr;const[t,r]=pr(e,n+1);if(!r)return dr;if("Error"===r[0]){return[t+1,["Error",`#${r[1]}`,void 0,`Unclosed regexp at position ${n}`]]}n+=t+1;let o=t+1,a="";for(;"g"===e[n]||"i"===e[n];)if(a+=e[n],o+=1,n+=1,a.includes(e[n]))return[o,["Error",`#${r[1]}${a}`,void 0,`Duplicated regexp option "${e[n]}"`]];return[o,["RegexpShorthand",`#${r[1]}${a}`]]},(e,n)=>{if("0"!==e[n])return dr;const t=e[n+1],r="b"===t||"B"===t?"binary":"o"===t||"O"===t?"octal":"x"===t||"X"===t?"hex":null;if(null===r)return dr;let o;for(o=n+2;o<e.length;o+=1){const n=e[o];if("binary"===r&&!gr.test(n))break;if("octal"===r&&!mr.test(n))break;if("hex"===r&&!vr.test(n))break}const a=o-n;if(a<=2)return dr;const s=e[o];return s&&!br.test(s)?dr:[a,["BasePrefixedNumber",e.substring(n,o)]]},(e,n)=>{let t;const r="-"===e[n],o="+"===e[n],a=r||o?n+1:n;let s=!1,i=!1;for(t=a;t<e.length;t+=1){const r=e[t];if("_"===r){if(!yr.test(e[t-1])||!yr.test(e[t+1]))return t===a?dr:[t-n+1,["Error",e.substring(n,t+1),void 0,`Invalid number format at position ${t+1}`]]}else if("."===r){if(t===a)return dr;if(s||i)return[t-n+1,["Error",e.substring(n,t+1),void 0,`Invalid number format at position ${t+1}`]];s=!0}else if("e"===r||"E"===r){if(t===a)return dr;if(i)return[t-n+1,["Error",e.substring(n,t+1),void 0,`Invalid number format at position ${t+1}`]];if("."===e[t-1]||"+"===e[t-1]||"-"===e[t-1])return[t-n+1,["Error",e.substring(n,t+1),void 0,`Invalid number format at position ${t+1}`]];"+"!==e[t+1]&&"-"!==e[t+1]||(t+=1),i=!0}else if(!yr.test(r))break}if((r||o)&&t===a)return dr;const u=t-n;if(0===u)return dr;const c=e[t];return c&&":"!==c&&!br.test(c)?[t-n+1,["Error",e.substring(n,t+1),void 0,`Invalid number format at position ${t+1}`]]:[u,["Number",e.substring(n,t)]]},(e,n)=>{const t=e.slice(n,n+3);if(n+2<e.length&&nt(t))return[3,["Operator",t]];const r=e.slice(n,n+2);if(n+1<e.length&&nt(r))return[2,["Operator",r]];const o=e[n]??"";return nt(o)?[1,["Operator",o]]:dr},xr];function kr(e,n,t){let r=0;const o={tokens:[],filePath:t,hasDebugData:n};for(;r<e.length;){const a=n?Er(e,r,t):void 0,s=Sr(e,r),[i,u]=s;r+=i,u&&(a&&(u[2]=a),o.tokens.push(u))}return o}function Er(e,n,t){const r=e.substring(0,n+1).split(/\r\n|\r|\n/),o=r[r.length-1],a=function(e,n){return e.split(/\r\n|\r|\n/)[n]}(e,r.length-1);return{code:a,position:{line:r.length,column:o.length},filePath:t}}function Sr(e,n){const t=n;if(0===n){const[r,o]=((e,n)=>{if("#"===e[n]&&"!"===e[n+1]){let t=2,r="#!";for(;"\n"!==e[n+t]&&n+t<e.length;)r+=e[n+t],t+=1;return[t,["SingleLineComment",r]]}return dr})(e,n);if(n+=r,r>0)return[n-t,o]}for(const r of wr){const[o,a]=r(e,n);if(n+=o,0!==o)return[n-t,a]}return[1,["Error",e[t],void 0,"Unrecognized character"]]}function Ir(){return"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const n=16*Math.random()|0;return("x"===e?n:3&n|8).toString(16)})}function Nr(e,n){if("*"===n)return!0;if(n.endsWith(".*")){const t=n.slice(0,-2);return e===t||e.startsWith(`${t}.`)}return e===n}function Ar(e,n){if(!n)return[];const t=[];for(const[r,o]of Object.entries(n))Nr(e,r)&&t.push([r,o]);return t}class Pr{k;snapshots;nextSnapshotIndex;meta;effectName;effectArgs;_brand="SuspensionSignal";constructor(e,n,t,r,o,a){this.k=e,this.snapshots=n,this.nextSnapshotIndex=t,this.meta=r,this.effectName=o,this.effectArgs=a}}function $r(e){return e instanceof Pr}class Cr{continuation;value;trimToIndex;_brand="ResumeFromSignal";constructor(e,n,t){this.continuation=e,this.value=n,this.trimToIndex=t}}function jr(e){return e instanceof Cr}const Or=new Map;function Mr(e){let n=Or.get(e);return n||(n={[p]:!0,name:e},Or.set(e,n)),n}class Vr{_contexts;globalContext;values;modules;valueModules;pure;constructor({contexts:e,values:n,modules:t,valueModules:r,pure:o}){this.globalContext=b(e[0]),this._contexts=e,this.values=n,this.modules=t??new Map,this.valueModules=r??new Map,this.pure=o??!1}getContextsRaw(){return this._contexts}getHostValues(){return this.values}getModuleScopeBindings(){const e=this._contexts[0],n={};for(const[t,r]of Object.entries(e))n[t]=r.value;return n}getGlobalContextIndex(){return this._contexts.indexOf(this.globalContext)}static fromDeserialized(e){const n=new Vr({contexts:e.contexts,values:e.values,modules:e.modules,pure:e.pure});return e.globalContextIndex>=0&&e.globalContextIndex<e.contexts.length&&(n.globalContext=e.contexts[e.globalContextIndex]),n}setContextsFromDeserialized(e,n){this._contexts=e,n>=0&&n<e.length&&(this.globalContext=e[n])}getModule(e){return this.modules.get(e)}getValueModule(e){return this.valueModules.has(e)?{value:this.valueModules.get(e),found:!0}:{value:void 0,found:!1}}registerValueModule(e,n){this.valueModules.set(e,n)}create(e){const n=this.globalContext,t=new Vr({contexts:[e,...this._contexts],values:this.values,modules:this.modules,valueModules:this.valueModules,pure:this.pure});return t.globalContext=n,t}new(e){return new Vr({contexts:[{},e],modules:this.modules,valueModules:this.valueModules,pure:this.pure})}addValues(e,n){const t=this._contexts[0];for(const[o,a]of Object.entries(e)){if(t[o])throw new r(`Cannot redefine value "${o}"`,n);const e=Ur(o);if(e)throw new r(`Cannot shadow ${e}`,n);t[o]={value:re(a)}}}getValue(e){for(const n of this._contexts){const t=n[e];if(t)return t.value}return this.values?.[e]}lookUp(e){const n=e[1];for(const e of this._contexts){const t=e[n];if(t)return t}const t=this.values?.[n];return void 0!==t?{value:re(t)}:null}evaluateSymbol(e){if(qn(e)){const n=e[1];switch(n){case Vn["&&"]:case Vn["||"]:case Vn.array:case Vn.object:case Vn["defined?"]:case Vn.recur:case Vn["??"]:{const t=b(Bn.specialExpressions[n],e[2]);return{[f]:!0,functionType:"SpecialBuiltin",specialBuiltinSymbolType:n,sourceCodeInfo:e[2],arity:t.arity}}default:throw new r(`Unknown special builtin symbol type: ${n}`,e[2])}}if(Ln(e)){const n=e[1],t=Ye[n],r=t.name;return{[f]:!0,functionType:"Builtin",normalBuiltinSymbolType:n,sourceCodeInfo:e[2],arity:t.arity,name:r}}const n=this.lookUp(e);if(w(t=n)&&void 0!==t.value)return n.value;var t;throw new s(e[1],e[2])}}function Ur(e){return Dn.includes(e)?`special expression "${e}"`:Rn.includes(e)?`builtin function "${e}"`:"self"===e?`builtin value "${e}"`:null}function Br(e){const n=Ur(e);if(n)throw new r(`Cannot shadow ${n}`,void 0)}function Rr(e={},n,t){const o=e.globalContext??{},a=e.contexts?[o,...e.contexts]:[o];let s;if(e.bindings)for(const[n,t]of Object.entries(e.bindings)){if(n.includes("."))throw new r(`Dots are not allowed in binding keys: "${n}"`,void 0);Br(n),s||(s={}),s[n]=t}const i=new Vr({contexts:a,values:s,modules:n,pure:t});return e.globalModuleScope?i:i.create({})}function Dr(e,n){return Math.imul(e^255&n,16777619)}function Tr(e,n){return e=Dr(e,n),e=Dr(e,n>>>8),e=Dr(e,n>>>16),e=Dr(e,n>>>24)}function _r(e,n){for(let t=0;t<n.length;t++){const r=n.charCodeAt(t);e=Dr(e,r),e=Dr(e,r>>>8)}return e}function Fr(e){let n=2166136261;if(null===e)return n=Dr(n,0),n>>>0;if(void 0===e)return n=Dr(n,7),n>>>0;const t=typeof e;if("boolean"===t)return n=Dr(n,e?1:2),n>>>0;if("number"===t)return n=Dr(n,3),n=_r(n,Object.is(e,-0)?"-0":String(e)),n>>>0;if("string"===t)return n=Dr(n,4),n=_r(n,e),n>>>0;if(Array.isArray(e)){n=Dr(n,5),n=Tr(n,e.length);for(let t=0;t<e.length;t++)n=Tr(n,Fr(e[t]));return n>>>0}n=Dr(n,6);const r=Object.keys(e).sort();n=Tr(n,r.length);for(const t of r)n=_r(n,t),n=Tr(n,Fr(e[t]));return n>>>0}function Lr(e,n){if(e===n)return!0;if(null===e||null===n)return!1;if(typeof e!=typeof n)return!1;if(Array.isArray(e)){if(!Array.isArray(n))return!1;if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(!Lr(e[t],n[t]))return!1;return!0}if("object"!=typeof e)return!1;const t=e,r=n,o=Object.keys(t),a=Object.keys(r);if(o.length!==a.length)return!1;for(const e of o){if(!(e in r))return!1;if(!Lr(t[e],r[e]))return!1}return!0}function qr(e){if(null===e)return 4;if(void 0===e)return 9;const n=typeof e;if("boolean"===n)return e?4:5;if("number"===n)return String(e).length;if("string"===n)return e.length+2;if(Array.isArray(e)){let n=2;for(let t=0;t<e.length;t++)n+=qr(e[t])+1;return n}const t=e,r=Object.keys(t);let o=2;for(const e of r)o+=e.length+2+1+qr(t[e])+1;return o}function zr(e,n,t,r){if(null===e||"object"!=typeof e)return Fr(e);if(Array.isArray(e))for(let t=0;t<e.length;t++)zr(e[t],n,{parent:e,key:t});else{const t=e;for(const e of Object.keys(t))zr(t[e],n,{parent:t,key:e})}const o=Fr(e),a=qr(e);if(t&&a>=1){let r,s=n.get(o);s||(s=[],n.set(o,s));for(const n of s)if(Lr(n.value,e)){r=n;break}r?r.locations.push(t):s.push({hash:o,value:Kr(e),size:a,locations:[t]})}return o}function Wr(e,n){if(null===e||"object"!=typeof e)return e;if(function(e){return null!==e&&"object"==typeof e&&"__poolRef"in e&&"number"==typeof e.__poolRef&&1===Object.keys(e).length}(e)){const t=e.__poolRef;if(!(t in n))throw new Error(`Unknown pool ref: ${t}`);return Wr(n[t],n)}if(Array.isArray(e))return e.map(e=>Wr(e,n));const t=e,r={};for(const e of Object.keys(t))r[e]=Wr(t[e],n);return r}function Kr(e){if(null===e||"object"!=typeof e)return e;if(Array.isArray(e))return e.map(e=>Kr(e));const n=e,t={};for(const e of Object.keys(n))t[e]=Kr(n[e]);return t}function Yr(e,n){const t=new Map;let r=0;function o(e){if(e instanceof Vr){if(t.has(e))return;t.set(e,r++);for(const n of e.getContextsRaw())for(const e of Object.values(n))o(e.value)}else if(Array.isArray(e))for(const n of e)o(n);else if(null!==e&&"object"==typeof e)for(const n of Object.values(e))o(n)}function a(e,n){if(e instanceof Vr)return{__csRef:t.get(e)};if(Array.isArray(e))return e.map((e,n)=>a(e));if(null!==e&&"object"==typeof e){const n={};for(const[t,r]of Object.entries(e))n[t]=a(r);return n}return e}o(e),void 0!==n&&o(n);const s=Array.from(t.entries()).map(([e,n])=>({id:n,contexts:e.getContextsRaw().map((e,n)=>{const t={};for(const[n,r]of Object.entries(e))t[n]={value:a(r.value)};return t}),globalContextIndex:e.getGlobalContextIndex(),pure:e.pure})),i=a(e),u=void 0!==n?a(n):void 0;return{version:2,contextStacks:s,k:i,...void 0!==u?{meta:u}:{}}}function Gr(e,n,t,r){const o=Yr(e,r);n.length>0&&(o.snapshots=n),o.nextSnapshotIndex=t;const a=[o.contextStacks,o.k];if(void 0!==o.meta&&a.push(o.meta),o.snapshots)for(const e of o.snapshots)a.push(e);const{roots:s,pool:i}=function(e,n=200){const t=e.map(e=>Kr(e)),r=new Map;for(let e=0;e<t.length;e++)zr(t[e],r,null);const o={};let a=0;const s=Array.from(r.values()).flat().filter(e=>e.locations.length>1&&e.size>=n).sort((e,n)=>n.size-e.size),i=new Map;for(const e of s){if(i.has(e))continue;const n=a++;o[n]=e.value,i.set(e,n);for(const t of e.locations)Array.isArray(t.parent),t.parent[t.key]={__poolRef:n}}return{roots:t,pool:o}}(a,200);let u=0;if(o.contextStacks=s[u++],o.k=s[u++],void 0!==o.meta&&(o.meta=s[u++]),o.snapshots)for(let e=0;e<o.snapshots.length;e++)o.snapshots[e]=s[u++];return Object.keys(i).length>0&&(o.pool=i),o}function Hr(e,n){let t=e;if(2!==t.version)throw new r(`Unsupported suspension blob version: ${t.version} (expected 2)`,void 0);if(t.pool&&Object.keys(t.pool).length>0){const e=t.pool;t={...t,contextStacks:Wr(t.contextStacks,e),k:Wr(t.k,e),...void 0!==t.meta?{meta:Wr(t.meta,e)}:{},...t.snapshots?{snapshots:t.snapshots.map(n=>Wr(n,e))}:{}},delete t.pool}const o=new Map;for(const e of t.contextStacks){const t=e.contexts.map(()=>({})),r=Vr.fromDeserialized({contexts:t,globalContextIndex:e.globalContextIndex,values:n?.values,modules:n?.modules,pure:e.pure});o.set(e.id,r)}function a(e){if(function(e){return null!==e&&"object"==typeof e&&"__csRef"in e&&"number"==typeof e.__csRef}(e)){const n=o.get(e.__csRef);if(!n)throw new r(`Invalid suspension blob: unknown context stack ref ${e.__csRef}`,void 0);return n}if(Array.isArray(e))return e.map(a);if(null!==e&&"object"==typeof e){const n={};for(const[t,r]of Object.entries(e))n[t]=a(r);return n}return e}for(const e of t.contextStacks){const n=o.get(e.id),t=e.contexts.map(e=>{const n=e,t={};for(const[e,r]of Object.entries(n))t[e]={value:a(r.value)};return t});n.setContextsFromDeserialized(t,e.globalContextIndex)}return{k:a(t.k),meta:void 0!==t.meta?a(t.meta):void 0,snapshots:t.snapshots??[],nextSnapshotIndex:t.nextSnapshotIndex??0}}function Jr(){return"undefined"!=typeof process&&"function"==typeof process.stdout?.write}function Xr(e){return"string"==typeof e?e:null===e?"null":"number"==typeof e||"boolean"==typeof e?String(e):k(e)?"Builtin"===e.functionType?`<builtin function ${e.normalBuiltinSymbolType}>`:`<function ${e.n??"λ"}>`:R(e)?`<effect ${e.name}>`:U(e)?`/${e.s}/${e.f}`:"object"==typeof e&&e instanceof RegExp?`${e}`:JSON.stringify(Zr(e),null,2)}function Zr(e){if(e===Number.POSITIVE_INFINITY)return"∞";if(e===Number.NEGATIVE_INFINITY)return"-∞";if(k(e))return Xr(e);if(R(e))return Xr(e);if(U(e))return Xr(e);if(Array.isArray(e))return e.map(Zr);if("object"==typeof e&&null!==e){const n={};for(const[t,r]of Object.entries(e))n[t]=Zr(r);return n}return e}const Qr={"dvala.io.print":{handler:function(e,n){const t=e[0],r=Xr(t);return Jr()?process.stdout.write(r):console.log(r),{type:"Value",value:t,k:n}},arity:Z(1)},"dvala.io.println":{handler:function(e,n){const t=e[0],r=Xr(t);return Jr()?process.stdout.write(`${r}\n`):"function"==typeof globalThis.alert?globalThis.alert(r):console.log(r),{type:"Value",value:t,k:n}},arity:Z(1)},"dvala.io.error":{handler:(e,n)=>{const t=e[0],r=Xr(t);return Jr()?process.stderr.write(`${r}\n`):console.error(r),{type:"Value",value:t,k:n}},arity:Z(1)},"dvala.io.read-line":{handler:(e,n,t)=>{const o="string"==typeof e[0]?e[0]:"";if("function"==typeof globalThis.prompt){return{type:"Value",value:globalThis.prompt(o)??null,k:n}}throw new r('dvala.io.read-line is not supported in this environment. In Node.js, register a "dvala.io.read-line" host handler.',t)},arity:{min:0,max:1}},"dvala.io.read-stdin":{handler:(e,n,t)=>{if(!Jr()||!process.stdin)throw new r("dvala.io.read-stdin is not supported in this environment. Node.js is required.",t);return new Promise((e,t)=>{const r=[];process.stdin.setEncoding("utf-8"),process.stdin.on("data",e=>r.push(e)),process.stdin.on("end",()=>e({type:"Value",value:r.join(""),k:n})),process.stdin.on("error",e=>t(e)),process.stdin.resume()})},arity:Z(0)},"dvala.random":{handler:(e,n)=>({type:"Value",value:Math.random(),k:n}),arity:Z(0)},"dvala.random.uuid":{handler:(e,n)=>({type:"Value",value:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const n=16*Math.random()|0;return("x"===e?n:3&n|8).toString(16)}),k:n}),arity:Z(0)},"dvala.random.int":{handler:(e,n,t)=>{const o=e[0],a=e[1];if("number"!=typeof o||!Number.isInteger(o))throw new r(`dvala.random.int: min must be an integer, got ${"number"==typeof o?o:typeof o}`,t);if("number"!=typeof a||!Number.isInteger(a))throw new r(`dvala.random.int: max must be an integer, got ${"number"==typeof a?a:typeof a}`,t);if(a<=o)throw new r(`dvala.random.int: max (${a}) must be greater than min (${o})`,t);return{type:"Value",value:Math.floor(Math.random()*(a-o))+o,k:n}},arity:Z(2)},"dvala.random.item":{handler:(e,n,t)=>{const o=e[0];if(!Array.isArray(o))throw new r("dvala.random.item: argument must be an array, got "+typeof o,t);if(0===o.length)throw new r("dvala.random.item: cannot pick from an empty array",t);return{type:"Value",value:o[Math.floor(Math.random()*o.length)],k:n}},arity:Z(1)},"dvala.random.shuffle":{handler:(e,n,t)=>{const o=e[0];if(!Array.isArray(o))throw new r("dvala.random.shuffle: argument must be an array, got "+typeof o,t);const a=Array.from(o);for(let e=a.length-1;e>0;e--){const n=Math.floor(Math.random()*(e+1)),t=a[e];a[e]=a[n],a[n]=t}return{type:"Value",value:a,k:n}},arity:Z(1)},"dvala.time.now":{handler:(e,n)=>({type:"Value",value:Date.now(),k:n}),arity:Z(0)},"dvala.time.zone":{handler:(e,n)=>({type:"Value",value:Intl.DateTimeFormat().resolvedOptions().timeZone,k:n}),arity:Z(0)},"dvala.checkpoint":{handler:(e,n)=>({type:"Value",value:null,k:n}),arity:{min:0,max:1}},"dvala.sleep":{handler:(e,n,t)=>{const o=e[0];if("number"!=typeof o||o<0)throw new r(`dvala.sleep requires a non-negative number argument, got ${"number"==typeof o?o:typeof o}`,t);return new Promise(e=>{setTimeout(()=>e({type:"Value",value:null,k:n}),o)})},arity:Z(1)}};function eo(e){const n=Qr[e];if(n)return(e,t,r)=>(X(n.arity,e.length,r),n.handler(e,t,r))}function no(e,n){switch(e[0]){case i.Number:case i.String:return e[1];case i.NormalBuiltinSymbol:case i.SpecialBuiltinSymbol:case i.UserDefinedSymbol:return n.evaluateSymbol(e);case i.ReservedSymbol:return co(e);case i.NormalExpression:{const t=function(e,n){const t=e[2];return nn(function(e,n){const t=[],o=[],a=an(e,(e,a)=>Wn(e)?nn(no(e[1],n),n=>{if(!Array.isArray(n))throw new r(`Spread operator requires an array, got ${m(e)}`,e[2]);t.push(...n)}):e[0]!==i.ReservedSymbol||"_"!==e[1]?nn(no(e,n),e=>{t.push(e)}):void o.push(a));return nn(a,()=>({params:t,placeholders:o}))}(e[1][1],n),({params:o,placeholders:a})=>{if(zn(e)){const i=e[1][0];if(a.length>0){return nn(no(i,n),e=>({[f]:!0,function:T(e,t),functionType:"Partial",params:o,placeholders:a,sourceCodeInfo:t,arity:Z(a.length)}))}if(Ln(i)){const t=i[1],a=Bn.allNormalExpressions[t];if(n.pure&&!1===a.pure)throw new r(`Cannot call impure function '${a.name}' in pure mode`,e[2]);return a.dvalaImpl?oo(a.dvalaImpl,o,n,e[2]):a.evaluate(o,e[2],n,{executeFunction:to})}{const r=n.getValue(i[1]);if(void 0!==r)return to(T(r,t),o,n,t);throw new s(i[1],e[2])}}return nn(no(e[1][0],n),e=>{const r=T(e,t);if(a.length>0){return{[f]:!0,function:r,functionType:"Partial",params:o,placeholders:a,sourceCodeInfo:t,arity:Z(a.length)}}return to(r,o,n,t)})})}(e,n);return nn(t,n=>{if("number"==typeof n&&Number.isNaN(n))throw new r("Number is NaN",e[2]);return we(n)})}case i.SpecialExpression:{const t={type:"Eval",node:e,env:n,k:[]};try{return we(Vo(t))}catch(t){if(t instanceof r&&t.message.includes("Unexpected async operation")){return Uo({type:"Eval",node:e,env:n,k:[]}).then(e=>we(e))}throw t}}default:throw new r(`${c(e[0])}-node cannot be evaluated`,e[2])}}function to(e,n,t,o){if(k(e))return ro(e,n,t,o);if(Array.isArray(e))return so(e,n,o);if(j(e))return ao(e,n,o);if("string"==typeof e)return io(e,n,o);if(G(e))return uo(e,n,o);throw new r("Unexpected function type",o)}function ro(e,n,t,o){switch(e.functionType){case"UserDefined":return oo(e,n,t,o);case"Partial":return function(e,n,t,o){const a=[...e.params];if(n.length!==e.placeholders.length)throw new r(`(partial) expects ${e.placeholders.length} arguments, got ${n.length}.`,o);const s=[...n];for(const n of e.placeholders)a.splice(n,0,s.shift());return to(e.function,a,t,o)}(e,n,t,o);case"Comp":return function(e,n,t,o){const{params:a}=e;if(0===a.length){if(1!==n.length)throw new r(`(comp) expects one argument, got ${m(n.length)}.`,o);return A(n[0],o)}let s=n;for(let e=a.length-1;e>=0;e--){const n=a[e];s=nn(s,e=>nn(to(T(n,o),e,t,o),e=>[e]))}return nn(s,e=>A(e[0],o))}(e,n,t,o);case"Constantly":return e.value;case"Juxt":return function(e,n,t,r){return function(e,n){const t=[];for(let r=0;r<e.length;r++){const o=n(e[r],r);if(o instanceof Promise)return tn(o,t,e,n,r);t.push(o)}return t}(e.params,e=>to(T(e,r),n,t,r))}(e,n,t,o);case"Complement":return nn(to(e.function,n,t,o),e=>!e);case"EveryPred":return function(e,n,t,r){const o=[];for(const a of e.params)for(const e of n)o.push(()=>to(T(a,r),[e],t,r));return rn(o,(e,n)=>!!e&&nn(n(),e=>!!e),!0)}(e,n,t,o);case"SomePred":return function(e,n,t,r){const o=[];for(const a of e.params)for(const e of n)o.push(()=>to(T(a,r),[e],t,r));return rn(o,(e,n)=>!!e||nn(n(),e=>!!e),!1)}(e,n,t,o);case"Fnull":return function(e,n,t,r){const o=n.map((n,t)=>null===n?re(e.params[t]):n);return to(T(e.function,r),o,t,r)}(e,n,t,o);case"EffectMatcher":return function(e,n,t){X({min:1,max:1},n.length,e.sourceCodeInfo??t);const r=n[0];D(r,t);const o=r.name;if("string"===e.matchType)return Nr(o,e.pattern);const a=new RegExp(e.pattern,e.flags);return a.test(o)}(e,n,o);case"Builtin":{const a=Bn.allNormalExpressions[e.normalBuiltinSymbolType];return a.dvalaImpl?oo(a.dvalaImpl,n,t,o):function(e,n,t,o){const a=b(Bn.allNormalExpressions[e.normalBuiltinSymbolType],o);if(t.pure&&!1===a.pure)throw new r(`Cannot call impure function '${e.name}' in pure mode`,o);if(a.dvalaImpl)return oo(a.dvalaImpl,n,t,o);return a.evaluate(n,o,t,{executeFunction:to})}(e,n,t,o)}case"SpecialBuiltin":return function(e,n,t,o){const a=b(Bn.specialExpressions[e.specialBuiltinSymbolType],o);if(a.evaluateAsNormalExpression)return a.evaluateAsNormalExpression(n,o,t,{executeFunction:to});throw new r(`Special builtin function ${e.specialBuiltinSymbolType} is not supported as normal expression.`,o)}(e,n,t,o);case"Module":return function(e,n,t,o){const a=t.getModule(e.moduleName);if(!a)throw new r(`Module '${e.moduleName}' not found.`,o);const s=a.functions[e.functionName];if(!s)throw new r(`Function '${e.functionName}' not found in module '${e.moduleName}'.`,o);if(t.pure&&!1===s.pure)throw new r(`Cannot call impure function '${e.functionName}' in pure mode`,o);if(X(s.arity,n.length,o),s.dvalaImpl)return oo(s.dvalaImpl,n,t,o);return s.evaluate(n,o,t,{executeFunction:to})}(e,n,t,o)}}function oo(e,n,o,a){function s(n){if(!J(e.arity,n.length))throw new r(`Expected ${e.arity} arguments, got ${n.length}.`,a);const i=e.evaluatedfunction,u=i[0],c=u.filter(e=>e[0]!==Je).length,l=o.create(e.evaluatedfunction[2]),f={self:{value:e}},d=[];let p,h;for(let e=0;e<n.length;e+=1)if(e<c){const t=e;p=nn(p,()=>{const e=re(n[t]);return nn(cn(u[t],e,e=>no(e,l.create(f))),e=>{Object.entries(e).forEach(([e,n])=>{f[e]={value:n}})})})}else d.push(re(n[e]));for(let e=n.length;e<c;e++){const n=e;h=nn(h,()=>{const e=u[n];return nn(no(e[1][1],o.create(f)),n=>nn(cn(e,n,e=>no(e,o.create(f))),e=>{Object.entries(e).forEach(([e,n])=>{f[e]={value:n}})}))})}return nn(p,()=>nn(h,()=>{const e=u.find(e=>e[0]===Je),n=void 0!==e?nn(cn(e,d,e=>no(e,o.create(f))),e=>{Object.entries(e).forEach(([e,n])=>{f[e]={value:n}})}):void 0;return nn(n,()=>{const e=l.create(f),n=rn(i[1],(n,t)=>no(t,e),null);return n instanceof Promise?n.catch(e=>{if(e instanceof t)return s(e.params);throw e}):n})}))}for(;;)try{return s(n)}catch(e){if(e instanceof t){n=e.params;continue}throw e}}function ao(e,n,t){if(1!==n.length)throw new r("Object as function requires one string parameter.",t);const o=n[0];return L(o,t),re(e[o])}function so(e,n,t){if(1!==n.length)throw new r("Array as function requires one non negative integer parameter.",t);const o=n[0];return H(o,t,{integer:!0,nonNegative:!0}),re(e[o])}function io(e,n,t){if(1!==n.length)throw new r("String as function requires one Obj parameter.",t);const o=re(n[0]);if(j(o))return re(o[e]);if(G(o,{integer:!0}))return re(e[o]);throw new r(`string as function expects Obj or integer parameter, got ${m(o)}`,t)}function uo(e,n,t){if(H(e,void 0,{integer:!0}),1!==n.length)throw new r("Number as function requires one Arr parameter.",t);const o=n[0];return C(o,t),re(o[e])}function co(e){const n=e[1];if(!["true","false","null"].includes(n))throw new r(`Reserved symbol ${n} cannot be evaluated`,e[2]);return b(Jt[n],e[2])}function lo(e,n,t){switch(e[0]){case i.Number:case i.String:return{type:"Value",value:e[1],k:t};case i.NormalBuiltinSymbol:case i.SpecialBuiltinSymbol:case i.UserDefinedSymbol:return{type:"Value",value:n.evaluateSymbol(e),k:t};case i.ReservedSymbol:return{type:"Value",value:co(e),k:t};case i.NormalExpression:return function(e,n,t){const r=e[1][1],o=e[2],a={type:"NanCheck",sourceCodeInfo:o},s={type:"EvalArgs",node:e,index:0,params:[],placeholders:[],env:n,sourceCodeInfo:o};let u=0;for(;u<r.length;){const e=r[u];if(e[0]!==i.ReservedSymbol||"_"!==e[1])break;s.placeholders.push(s.params.length),u++}if(s.index=u,u>=r.length)return fo(s,[a,...t]);const c=r[u],l=[s,a,...t];if(Wn(c))return{type:"Eval",node:c[1],env:n,k:l};return{type:"Eval",node:c,env:n,k:l}}(e,n,t);case i.SpecialExpression:return function(e,n,t){const o=e[2],a=e[1][0];switch(a){case Vn.if:case Vn.unless:{const[r,s,i]=e[1][1];return{type:"Eval",node:r,env:n,k:[{type:"IfBranch",thenNode:s,elseNode:i,inverted:a===Vn.unless,env:n,sourceCodeInfo:o},...t]}}case Vn["&&"]:{const r=e[1][1];if(0===r.length)return{type:"Value",value:!0,k:t};const a={type:"And",nodes:r,index:1,env:n,sourceCodeInfo:o};return 1===r.length?{type:"Eval",node:r[0],env:n,k:t}:{type:"Eval",node:r[0],env:n,k:[a,...t]}}case Vn["||"]:{const r=e[1][1];if(0===r.length)return{type:"Value",value:!1,k:t};const a={type:"Or",nodes:r,index:1,env:n,sourceCodeInfo:o};return 1===r.length?{type:"Eval",node:r[0],env:n,k:t}:{type:"Eval",node:r[0],env:n,k:[a,...t]}}case Vn["??"]:{const r=e[1][1];if(0===r.length)return{type:"Value",value:null,k:t};const a=r[0];if(_n(a)&&null===n.lookUp(a)){if(1===r.length)return{type:"Value",value:null,k:t};const e={type:"Qq",nodes:r,index:2,env:n,sourceCodeInfo:o},a=r[1];return _n(a)&&null===n.lookUp(a)?function(e,n){return vo(e,n)}(e,t):2===r.length?{type:"Eval",node:a,env:n,k:t}:{type:"Eval",node:a,env:n,k:[e,...t]}}const s={type:"Qq",nodes:r,index:1,env:n,sourceCodeInfo:o};return 1===r.length?{type:"Eval",node:a,env:n,k:t}:{type:"Eval",node:a,env:n,k:[s,...t]}}case Vn.cond:{const r=e[1][1];if(0===r.length)return{type:"Value",value:null,k:t};const a={type:"Cond",phase:"test",cases:r,index:0,env:n,sourceCodeInfo:o};return{type:"Eval",node:r[0][0],env:n,k:[a,...t]}}case Vn.match:{const r=e[1][1],a=e[1][2];return{type:"Eval",node:r,env:n,k:[{type:"Match",phase:"matchValue",matchValue:null,cases:a,index:0,bindings:{},env:n,sourceCodeInfo:o},...t]}}case Vn.block:{const r=e[1][1],a=e[1][2],s={},i=n.create(s);let u=t;if(a&&a.length>0){u=[{type:"TryWith",handlers:a.map(([e,t])=>({effectRef:no(e,n),handlerNode:t})),env:n,sourceCodeInfo:o},...t]}if(0===r.length)return{type:"Value",value:null,k:u};if(1===r.length)return{type:"Eval",node:r[0],env:i,k:u};const c={type:"Sequence",nodes:r,index:1,env:i,sourceCodeInfo:o};return{type:"Eval",node:r[0],env:i,k:[c,...u]}}case Vn.let:{const r=e[1][1],a=r[1][0];return{type:"Eval",node:r[1][1],env:n,k:[{type:"LetBind",target:a,env:n,sourceCodeInfo:o},...t]}}case Vn.loop:{const r=e[1][1],a=e[1][2];if(0===r.length){const e={},s={type:"LoopIterate",bindingNodes:r,bindingContext:e,body:a,env:n.create(e),sourceCodeInfo:o};return{type:"Eval",node:a,env:n.create(e),k:[s,...t]}}const s={type:"LoopBind",phase:"value",bindingNodes:r,index:0,context:{},body:a,env:n,sourceCodeInfo:o};return{type:"Eval",node:r[0][1][1],env:n,k:[s,...t]}}case Vn.for:case Vn.doseq:{const r=e[1][1],s=e[1][2],i=a===Vn.for;if(0===r.length)return{type:"Value",value:i?[]:null,k:t};const u={},c=n.create(u),l={type:"ForLoop",returnResult:i,bindingNodes:r,body:s,result:[],phase:"evalCollection",bindingLevel:0,levelStates:[],context:u,env:c,sourceCodeInfo:o};return{type:"Eval",node:r[0][0][1][1],env:c,k:[l,...t]}}case Vn.recur:{const r=e[1][1];if(0===r.length)return So([],t,o);const a={type:"Recur",nodes:r,index:1,params:[],env:n,sourceCodeInfo:o};if(1===r.length){const e={...a,index:1};return{type:"Eval",node:r[0],env:n,k:[e,...t]}}return{type:"Eval",node:r[0],env:n,k:[a,...t]}}case Vn.array:{const r=e[1][1];if(0===r.length)return{type:"Value",value:[],k:t};const a=r[0],s=Wn(a),i={type:"ArrayBuild",nodes:r,index:0,result:[],isSpread:s,env:n,sourceCodeInfo:o};return{type:"Eval",node:s?a[1]:a,env:n,k:[i,...t]}}case Vn.object:{const r=e[1][1];if(0===r.length)return{type:"Value",value:{},k:t};const a=r[0],s=Wn(a),i={type:"ObjectBuild",nodes:r,index:0,result:{},currentKey:null,isSpread:s,env:n,sourceCodeInfo:o};return{type:"Eval",node:s?a[1]:a,env:n,k:[i,...t]}}case Vn["0_lambda"]:{const r=function(e,n){const t={},r=e[0].reduce((e,n)=>(Object.keys(fn(n)).forEach(n=>{e[n]={value:null}}),e),{});return Kn(e[1],n.new(r),Bn,no).forEach(e=>{const r=n.getValue(e);N(r)&&(t[e]={value:r})}),[e[0],e[1],t]}(e[1][1],n),o=r[0].filter(e=>e[0]!==Je&&void 0===e[1][1]).length,a={min:o>0?o:void 0,max:r[0].some(e=>e[0]===Je)?void 0:r[0].length};return{type:"Value",value:{[f]:!0,sourceCodeInfo:e[2],functionType:"UserDefined",name:void 0,evaluatedfunction:r,arity:a,docString:""},k:t}}case Vn["defined?"]:{const r=e[1][1];if(!_n(r))return{type:"Value",value:!0,k:t};return{type:"Value",value:null!==n.lookUp(r),k:t}}case Vn.import:{const a=e[1][1],s=n.getValueModule(a);if(s.found)return{type:"Value",value:s.value,k:t};const i=n.getModule(a);if(!i)throw new r(`Unknown module: '${a}'`,o);const u={};for(const[e,n]of Object.entries(i.functions))u[e]={[f]:!0,sourceCodeInfo:o,functionType:"Module",moduleName:a,functionName:e,arity:n.arity};if(i.source){const e=ar(sr(kr(i.source,!1,void 0),{removeWhiteSpace:!0})),r=n.create({}),s={type:"ImportMerge",tsFunctions:u,moduleName:a,module:i,env:n,sourceCodeInfo:o};if(1===e.length)return{type:"Eval",node:e[0],env:r,k:[s,...t]};const c={type:"Sequence",nodes:e,index:1,env:r};return{type:"Eval",node:e[0],env:r,k:[c,s,...t]}}return n.registerValueModule(a,u),{type:"Value",value:u,k:t}}case Vn.effect:return{type:"Value",value:Mr(e[1][1]),k:t};case Vn.perform:{const r=[e[1][1],...e[1][2]];if(1===r.length){const e={type:"PerformArgs",argNodes:r,index:1,params:[],env:n,sourceCodeInfo:o};return{type:"Eval",node:r[0],env:n,k:[e,...t]}}const a={type:"PerformArgs",argNodes:r,index:1,params:[],env:n,sourceCodeInfo:o};return{type:"Eval",node:r[0],env:n,k:[a,...t]}}case Vn.parallel:return{type:"Parallel",branches:e[1][1],env:n,k:t};case Vn.race:return{type:"Race",branches:e[1][1],env:n,k:t};default:throw new r(`Unknown special expression type: ${a}`,o)}}(e,n,t);default:throw new r(`${c(e[0])}-node cannot be evaluated`,e[2])}}function fo(e,n){const{node:t,params:o,placeholders:a,env:i,sourceCodeInfo:u}=e;if(zn(t)){const e=t[1][0];if(a.length>0){const t=i.evaluateSymbol(e);return{type:"Value",value:{[f]:!0,function:T(t,u),functionType:"Partial",params:o,placeholders:a,sourceCodeInfo:u,arity:Z(a.length)},k:n}}if(Ln(e)){const t=e[1],a=Bn.allNormalExpressions[t];if(i.pure&&!1===a.pure)throw new r(`Cannot call impure function '${a.name}' in pure mode`,u);if(a.dvalaImpl)return ho(a.dvalaImpl,o,i,u,n);return Oo(a.evaluate(o,u,i,{executeFunction:to}),n)}const c=i.getValue(e[1]);if(void 0!==c)return po(T(c,u),o,a,i,u,n);throw new s(e[1],u)}return{type:"Eval",node:t[1][0],env:i,k:[{type:"CallFn",params:o,placeholders:a,env:i,sourceCodeInfo:u},...n]}}function po(e,n,t,o,a,s){if(t.length>0){return{type:"Value",value:{[f]:!0,function:e,functionType:"Partial",params:n,placeholders:t,sourceCodeInfo:a,arity:Z(t.length)},k:s}}if(k(e))return function(e,n,t,r,o){switch(e.functionType){case"UserDefined":return ho(e,n,t,r,o);case"Partial":case"Comp":case"Constantly":case"Juxt":case"Complement":case"EveryPred":case"SomePred":case"Fnull":case"EffectMatcher":case"SpecialBuiltin":return Oo(ro(e,n,t,r),o);case"Module":{const a=t.getModule(e.moduleName),s=a?.functions[e.functionName];if(s?.dvalaImpl)return X(s.arity,n.length,r),ho(s.dvalaImpl,n,t,r,o);return Oo(ro(e,n,t,r),o)}case"Builtin":{const a=Bn.allNormalExpressions[e.normalBuiltinSymbolType];if(a.dvalaImpl)return ho(a.dvalaImpl,n,t,r,o);return Oo(ro(e,n,t,r),o)}}}(e,n,o,a,s);if(Array.isArray(e))return{type:"Value",value:so(e,n,a),k:s};if(j(e))return{type:"Value",value:ao(e,n,a),k:s};if("string"==typeof e)return{type:"Value",value:io(e,n,a),k:s};if(G(e))return{type:"Value",value:uo(e,n,a),k:s};throw new r("Unexpected function type",a)}function ho(e,n,t,o,a){if(!J(e.arity,n.length))throw new r(`Expected ${e.arity} arguments, got ${n.length}.`,o);const s=e.evaluatedfunction,i=s[0],u=i.filter(e=>e[0]!==Je).length,c=t.create(e.evaluatedfunction[2]),l={self:{value:e}},f=[];for(let r=0;r<n.length;r+=1)if(r<u){const s=re(n[r]),u=cn(i[r],s,e=>no(e,c.create(l)));if(u instanceof Promise){return Oo(oo(e,n,t,o),a)}Object.entries(u).forEach(([e,n])=>{l[e]={value:n}})}else f.push(re(n[r]));for(let r=n.length;r<u;r++){const s=i[r],u=no(s[1][1],c.create(l));if(u instanceof Promise){return Oo(oo(e,n,t,o),a)}const f=cn(s,u,e=>no(e,c.create(l)));if(f instanceof Promise){return Oo(oo(e,n,t,o),a)}Object.entries(f).forEach(([e,n])=>{l[e]={value:n}})}const d=i.find(e=>e[0]===Je);if(d){const r=cn(d,f,e=>no(e,c.create(l)));if(r instanceof Promise){return Oo(oo(e,n,t,o),a)}Object.entries(r).forEach(([e,n])=>{l[e]={value:n}})}const p=s[1],h=c.create(l);if(0===p.length)return{type:"Value",value:null,k:a};const y={type:"FnBody",fn:e,bodyIndex:1,env:h,outerEnv:t,sourceCodeInfo:o};return p.length,{type:"Eval",node:p[0],env:h,k:[y,...a]}}function yo(e,n,t){switch(e.type){case"Sequence":return function(e,n,t){const{nodes:r,index:o,env:a}=e;if(o>=r.length)return{type:"Value",value:n,k:t};const s={...e,index:o+1};if(o===r.length-1)return{type:"Eval",node:r[o],env:a,k:t};return{type:"Eval",node:r[o],env:a,k:[s,...t]}}(e,n,t);case"IfBranch":return function(e,n,t){const{thenNode:r,elseNode:o,inverted:a,env:s}=e,i=a?!n:n;if(i)return{type:"Eval",node:r,env:s,k:t};if(o)return{type:"Eval",node:o,env:s,k:t};return{type:"Value",value:null,k:t}}(e,n,t);case"Cond":return function(e,n,t){const{cases:r,index:o,env:a}=e;if("test"===e.phase){if(n)return{type:"Eval",node:r[o][1],env:a,k:t};const s=o+1;if(s>=r.length)return{type:"Value",value:null,k:t};const i={...e,index:s};return{type:"Eval",node:r[s][0],env:a,k:[i,...t]}}return{type:"Value",value:n,k:t}}(e,n,t);case"Match":return function(e,n,t){const{cases:r,env:o}=e;if("matchValue"===e.phase){const r=n;return mo({...e,matchValue:r,phase:"guard"},t)}if("guard"===e.phase){if(!n){return mo({...e,index:e.index+1,bindings:{}},t)}const a={};for(const[n,t]of Object.entries(e.bindings))a[n]={value:t};const s=o.create(a);return{type:"Eval",node:r[e.index][1],env:s,k:t}}return{type:"Value",value:n,k:t}}(e,n,t);case"And":return function(e,n,t){if(!n)return{type:"Value",value:n,k:t};const{nodes:r,index:o,env:a}=e;if(o>=r.length)return{type:"Value",value:n,k:t};if(o===r.length-1)return{type:"Eval",node:r[o],env:a,k:t};const s={...e,index:o+1};return{type:"Eval",node:r[o],env:a,k:[s,...t]}}(e,n,t);case"Or":return function(e,n,t){if(n)return{type:"Value",value:n,k:t};const{nodes:r,index:o,env:a}=e;if(o>=r.length)return{type:"Value",value:n,k:t};if(o===r.length-1)return{type:"Eval",node:r[o],env:a,k:t};const s={...e,index:o+1};return{type:"Eval",node:r[o],env:a,k:[s,...t]}}(e,n,t);case"Qq":return function(e,n,t){if(null!==n)return{type:"Value",value:n,k:t};return vo(e,t)}(e,n,t);case"ArrayBuild":return function(e,n,t){const{nodes:o,result:a,env:s,sourceCodeInfo:i}=e;if(e.isSpread){if(!Array.isArray(n))throw new r("Spread value is not an array",i);a.push(...n)}else a.push(n);const u=e.index+1;if(u>=o.length)return{type:"Value",value:a,k:t};const c=o[u],l=Wn(c),f={...e,index:u,isSpread:l};return{type:"Eval",node:l?c[1]:c,env:s,k:[f,...t]}}(e,n,t);case"ObjectBuild":return function(e,n,t){const{nodes:o,result:a,env:s,sourceCodeInfo:i}=e;if(e.isSpread){if(!w(n))throw new r("Spread value is not an object",i);Object.assign(a,n);const u=e.index+1;if(u>=o.length)return{type:"Value",value:a,k:t};const c=o[u],l=Wn(c),f={...e,index:u,currentKey:null,isSpread:l};return{type:"Eval",node:l?c[1]:c,env:s,k:[f,...t]}}if(null===e.currentKey){L(n,i);const a=o[e.index+1];if(void 0===a)throw new r("Missing value for key",i);return{type:"Eval",node:a,env:s,k:[{...e,currentKey:n},...t]}}{a[e.currentKey]=n;const r=e.index+2;if(r>=o.length)return{type:"Value",value:a,k:t};const i=o[r],u=Wn(i),c={...e,index:r,currentKey:null,isSpread:u};return{type:"Eval",node:u?i[1]:i,env:s,k:[c,...t]}}}(e,n,t);case"LetBind":return function(e,n,t){const{target:r,env:o,sourceCodeInfo:a}=e,s=cn(r,n,e=>no(e,o));return nn(s,e=>(o.addValues(e,a),{type:"Value",value:n,k:t}))}(e,n,t);case"LoopBind":return function(e,n,t){const{bindingNodes:r,index:o,context:a,body:s,env:i,sourceCodeInfo:u}=e,c=r[o],l=cn(c[1][0],n,e=>no(e,i.create(a)));return nn(l,n=>{Object.entries(n).forEach(([e,n])=>{a[e]={value:n}});const c=o+1;if(c>=r.length){const e=i.create(a);return{type:"Eval",node:s,env:e,k:[{type:"LoopIterate",bindingNodes:r,bindingContext:a,body:s,env:e,sourceCodeInfo:u},...t]}}const l={...e,index:c};return{type:"Eval",node:r[c][1][1],env:i.create(a),k:[l,...t]}})}(e,n,t);case"LoopIterate":return function(e,n,t){return{type:"Value",value:n,k:t}}(0,n,t);case"ForLoop":return function(e,n,t){const{returnResult:o,bindingNodes:a,result:s,env:i,sourceCodeInfo:u,context:c}=e,{asColl:l,isSeq:f}={asColl:(e,n)=>{if("string"==typeof e||Array.isArray(e)||j(e))return e;throw new r(`Expected collection, got ${m(e)}`,n)},isSeq:e=>"string"==typeof e||Array.isArray(e)};switch(e.phase){case"evalCollection":{const r=l(n,u),o=f(r)?r:Object.entries(r);if(0===o.length)return go(e,t);const s=[...e.levelStates];s[e.bindingLevel]={collection:o,index:0};const d=a[e.bindingLevel];return nn(cn(d[0][1][0],A(o[0],u),e=>no(e,i)),n=>{Object.entries(n).forEach(([e,n])=>{c[e]={value:n}});const r=d[1];return r.length>0?xo(e,s,r,0,t):wo(e,s,t)})}case"evalLet":throw new r("ForLoop evalLet should not reach applyFrame",u);case"evalWhen":{if(!n)return bo(e,t);const r=a[e.bindingLevel][3];if(r){const n={...e,phase:"evalWhile"};return{type:"Eval",node:r,env:i,k:[n,...t]}}return ko(e,t)}case"evalWhile":if(!n){const n=[...e.levelStates];return n[e.bindingLevel]={...n[e.bindingLevel],index:Number.POSITIVE_INFINITY},bo({...e,levelStates:n},t)}return ko(e,t);case"evalBody":return o&&s.push(n),bo(e,t);case"evalElement":throw new r(`Unexpected ForLoop phase: ${e.phase}`,u)}return{type:"Value",value:null,k:t}}(e,n,t);case"Recur":return function(e,n,t){const{nodes:r,index:o,params:a,env:s}=e;if(a.push(n),o>=r.length)return So(a,t,e.sourceCodeInfo);const i={...e,index:o+1};return{type:"Eval",node:r[o],env:s,k:[i,...t]}}(e,n,t);case"PerformArgs":return function(e,n,t){const{argNodes:r,index:o,params:a,env:s}=e;if(a.push(n),o>=r.length){const n=a[0];D(n,e.sourceCodeInfo);return{type:"Perform",effect:n,args:a.slice(1),k:t,sourceCodeInfo:e.sourceCodeInfo}}const i={...e,index:o+1};return{type:"Eval",node:r[o],env:s,k:[i,...t]}}(e,n,t);case"TryWith":return function(e,n){return{type:"Value",value:e,k:n}}(n,t);case"EffectResume":return function(e,n){return{type:"Value",value:n,k:e.resumeK}}(e,n);case"ParallelResume":return function(e,n,t){return{type:"ParallelResume",value:n,branchCount:e.branchCount,completedBranches:e.completedBranches,suspendedBranches:e.suspendedBranches,k:t}}(e,n,t);case"EvalArgs":return function(e,n,t){const{node:o,params:a,placeholders:s,env:u}=e,c=o[1][1],l=c[e.index];if(Wn(l)){if(!Array.isArray(n))throw new r(`Spread operator requires an array, got ${m(n)}`,l[2]);a.push(...n)}else a.push(n);let f=e.index+1;for(;f<c.length;){const e=c[f];if(e[0]!==i.ReservedSymbol||"_"!==e[1])break;s.push(a.length),f++}if(f>=c.length)return fo({...e,index:f},t);const d={...e,index:f},p=c[f];if(Wn(p))return{type:"Eval",node:p[1],env:u,k:[d,...t]};return{type:"Eval",node:p,env:u,k:[d,...t]}}(e,n,t);case"CallFn":return function(e,n,t){const r=T(n,e.sourceCodeInfo);return po(r,e.params,e.placeholders,e.env,e.sourceCodeInfo,t)}(e,n,t);case"FnBody":return function(e,n,t){const{fn:r,bodyIndex:o,env:a}=e,s=r.evaluatedfunction[1];if(o>=s.length)return{type:"Value",value:n,k:t};const i={...e,bodyIndex:o+1};return{type:"Eval",node:s[o],env:a,k:[i,...t]}}(e,n,t);case"BindingDefault":return function(e,n,t){const{target:o,record:a,env:s,sourceCodeInfo:i}=e,u=cn(o,n,e=>no(e,s));if(u instanceof Promise)throw new r("Async binding default evaluation not supported in trampoline yet",i);return Object.assign(a,u),{type:"Value",value:n,k:t}}(e,n,t);case"NanCheck":return function(e,n,t){if("number"==typeof n&&Number.isNaN(n))throw new r("Number is NaN",e.sourceCodeInfo);return{type:"Value",value:we(n),k:t}}(e,n,t);case"DebugStep":return function(e,n,t){if("awaitValue"===e.phase){const r={expression:e.sourceCodeInfo?.code??"",value:n,location:e.sourceCodeInfo?{line:e.sourceCodeInfo.position.line,column:e.sourceCodeInfo.position.column}:{line:0,column:0},env:jo(e.env)},o={type:"DebugStep",phase:"awaitPerform",sourceCodeInfo:e.sourceCodeInfo,env:e.env};return{type:"Perform",effect:Mr("dvala.debug.step"),args:[r],k:[o,...t]}}return{type:"Value",value:n,k:t}}(e,n,t);case"ImportMerge":{const r=j(n)?n:{};for(const[n,t]of Object.entries(r)){const r=e.module.functions[n];r&&S(t)&&(r.dvalaImpl=t)}const o={};for(const[n,t]of Object.entries(r))e.module.functions[n]||(o[n]=t);const a={...e.tsFunctions,...o};return e.env.registerValueModule(e.moduleName,a),{type:"Value",value:a,k:t}}default:throw new r(`Unhandled frame type: ${e.type}`,void 0)}}function mo(e,n){const{matchValue:t,cases:o,index:a,env:s,sourceCodeInfo:i}=e;for(let u=a;u<o.length;u++){const[a,c,l]=o[u],f=pn(a,t,e=>no(e,s));if(f instanceof Promise)throw new r("Async pattern matching not supported in trampoline yet",i);if(null===f)continue;if(l){const t={};for(const[e,n]of Object.entries(f))t[e]={value:n};return{type:"Eval",node:l,env:s.create(t),k:[{...e,phase:"guard",index:u,bindings:f},...n]}}const d={};for(const[e,n]of Object.entries(f))d[e]={value:n};return{type:"Eval",node:c,env:s.create(d),k:n}}return{type:"Value",value:null,k:n}}function vo(e,n){const{nodes:t,env:r}=e;let{index:o}=e;for(;o<t.length;){const e=t[o];if(!_n(e)||null!==r.lookUp(e))break;o++}if(o>=t.length)return{type:"Value",value:null,k:n};if(o===t.length-1)return{type:"Eval",node:t[o],env:r,k:n};const a={...e,index:o+1};return{type:"Eval",node:t[o],env:r,k:[a,...n]}}function go(e,n){return{type:"Value",value:e.returnResult?e.result:null,k:n}}function bo(e,n){const{bindingNodes:t,env:r,sourceCodeInfo:o,context:a}=e,s=[...e.levelStates],i=e.bindingLevel,u=s[i],c=u.index+1;if(c>=u.collection.length)return 0===i?go(e,n):bo({...e,bindingLevel:i-1},n);s[i]={...u,index:c};const l=t[i];return nn(cn(l[0][1][0],A(u.collection[c],o),e=>no(e,r)),t=>{Object.entries(t).forEach(([e,n])=>{a[e]={value:n}});const r=l[1];return r.length>0?xo({...e,levelStates:s,bindingLevel:i},s,r,0,n):wo({...e,levelStates:s,bindingLevel:i},s,n)})}function xo(e,n,t,r,o){const{env:a,context:s}=e;let i;for(let e=r;e<t.length;e++){const n=e;i=nn(i,()=>{const e=t[n],[r,o]=e[1];return nn(no(o,a),e=>nn(cn(r,e,e=>no(e,a)),e=>{Object.entries(e).forEach(([e,n])=>{s[e]={value:n}})}))})}return nn(i,()=>wo({...e,levelStates:n},n,o))}function wo(e,n,t){const{bindingNodes:r,env:o}=e,a=r[e.bindingLevel],s=a[2],i=a[3];if(s){return{type:"Eval",node:s,env:o,k:[{...e,levelStates:n,phase:"evalWhen"},...t]}}if(i){return{type:"Eval",node:i,env:o,k:[{...e,levelStates:n,phase:"evalWhile"},...t]}}return ko({...e,levelStates:n},t)}function ko(e,n){const{bindingNodes:t,body:r,env:o}=e,a=e.bindingLevel+1;if(a<t.length){return{type:"Eval",node:t[a][0][1][1],env:o,k:[{...e,phase:"evalCollection",bindingLevel:a},...n]}}const s={...e,phase:"evalBody"};return{type:"Eval",node:r,env:o.create(e.context),k:[s,...n]}}function Eo(e,n,t,r,o){const a=Mr("dvala.error"),s=[e.shortMessage];for(let t=0;t<n.length;t++){const r=n[t];if("TryWith"===r.type)for(const o of r.handlers)if(Io(o,a,r.env,e.sourceCodeInfo))return No(o,r,s,n,t,e.sourceCodeInfo)}const i=Ar("dvala.error",t);return i.length>0?Ao("dvala.error",i,s,n,r,e.sourceCodeInfo,o):null}function So(e,n,t){for(let o=0;o<n.length;o++){const a=n[o];if("LoopIterate"===a.type){const{bindingNodes:s,bindingContext:i,body:u,env:c}=a,l=n.slice(o+1);if(e.length!==s.length)throw new r(`recur expected ${s.length} parameters, got ${e.length}`,t);const f=an(s,(n,t)=>nn(cn(n[1][0],re(e[t]),e=>no(e,c)),e=>{Object.entries(e).forEach(([e,n])=>{i[e]={value:n}})}));return nn(f,()=>{const e=c.getContextsRaw()[0];if(e!==i)for(const[n,t]of Object.entries(i))e[n]=t;const n={type:"LoopIterate",bindingNodes:s,bindingContext:i,body:u,env:c,sourceCodeInfo:a.sourceCodeInfo};return{type:"Eval",node:u,env:c,k:[n,...l]}})}if("FnBody"===a.type){const{fn:t,outerEnv:r}=a,s=n.slice(o+1);return ho(t,e,r,a.sourceCodeInfo,s)}}throw new r("recur called outside of loop or function body",t)}function Io(e,n,t,o){if(R(e.effectRef))return e.effectRef.name===n.name;if(k(e.effectRef)){const a=to(e.effectRef,[n],t,o);if(a instanceof Promise)throw new r("Effect handler predicates must be synchronous",o);return!!a}return!1}function No(e,n,t,r,o,a){const s=[{type:"EffectResume",resumeK:r,sourceCodeInfo:a},...r.slice(o+1)];return po(T(no(e.handlerNode,n.env),n.sourceCodeInfo),[t],[],n.env,a,s)}function Ao(e,n,t,a,s,i,u){const c=s??(new AbortController).signal,l=Array.from(t);function f(e,n){switch(e.kind){case"step":return e.step;case"asyncResume":return e.promise.then(e=>({type:"Value",value:e,k:a}),e=>({type:"Error",error:e instanceof r?e:new r(e instanceof Error?e:`${e}`,i),k:a}));case"throw":throw e.error;case"next":return d(n)}}function d(s){if(s>=n.length){if("dvala.error"===e){const e="string"==typeof l[0]?l[0]:String(l[0]??"Unknown error");throw new o(e,i)}if("dvala.checkpoint"===e)return{type:"Value",value:null,k:a};throw new r(`Unhandled effect: '${e}'`,i)}const[d,p]=n[s];if("*"===d){const n=eo(e);if(n)return n(t,a,i)}let h,y=!1;function m(e){if(y)throw new r(`Effect handler called ${e}() after already calling another operation`,i);y=!0}const v=p({effectName:e,args:l,signal:c,resume:e=>{m("resume"),h=e instanceof Promise?{kind:"asyncResume",promise:e}:{kind:"step",step:{type:"Value",value:e,k:a}}},fail:n=>{m("fail");h={kind:"step",step:{type:"Error",error:new r(n??`Effect handler failed for '${e}'`,i),k:a}}},suspend:n=>{m("suspend"),h={kind:"throw",error:new Pr(a,u?u.snapshots:[],u?u.nextSnapshotIndex:0,n,e,l)}},next:()=>{m("next"),h={kind:"next"}},get snapshots(){return u?[...u.snapshots]:[]},checkpoint:e=>{if(!u)throw new r("checkpoint is not available outside effect-enabled execution",i);const n={continuation:Yr(a),timestamp:Date.now(),index:u.nextSnapshotIndex++,runId:u.runId,...void 0!==e?{meta:e}:{}};return u.snapshots.push(n),void 0!==u.maxSnapshots&&u.snapshots.length>u.maxSnapshots&&u.snapshots.shift(),n},resumeFrom:(e,n)=>{if(y)throw new r("Effect handler called resumeFrom() after already calling another operation",i);if(!u)throw new r("resumeFrom is not available outside effect-enabled execution",i);const t=u.snapshots.find(n=>n.index===e.index&&n.runId===e.runId);if(!t)throw new r(`Invalid snapshot: no snapshot with index ${e.index} found in current run`,i);y=!0,h={kind:"throw",error:new Cr(t.continuation,n,t.index)}}});if(!(v instanceof Promise)){if(!h)throw new r(`Effect handler for '${e}' did not call resume(), fail(), suspend(), or next()`,i);return f(h,s+1)}return h?(v.catch(()=>{}),f(h,s+1)):v.then(()=>{if(!h)throw new r(`Effect handler for '${e}' did not call resume(), fail(), suspend(), or next()`,i);return f(h,s+1)},e=>{if(h)return f(h,s+1);if($r(e)||jr(e))throw e;return{type:"Error",error:e instanceof r?e:new r(e instanceof Error?e:`${e}`,i),k:a}})}return c.aborted&&$o(a,void 0,e,l),d(0)}function Po(e,n){const t=new AbortController;return e.aborted||n.aborted?(t.abort(),t.signal):(e.addEventListener("abort",()=>t.abort(),{once:!0}),n.addEventListener("abort",()=>t.abort(),{once:!0}),t.signal)}function $o(e,n,t,r){throw new Pr(e,[],0,n,t,r)}async function Co(e,n,t,r){return _o({type:"Eval",node:e,env:n,k:[]},t,r)}function jo(e){const n={},t=e.getHostValues();if(t)for(const[e,r]of Object.entries(t))n[e]=r;const r=e.getContextsRaw();for(let e=r.length-1;e>=0;e--)for(const[t,o]of Object.entries(r[e]))n[t]=o.value;return n}function Oo(e,n){return e instanceof Promise?e.then(e=>({type:"Value",value:e,k:n}),e=>({type:"Error",error:e instanceof r?e:new r(`${e}`,void 0),k:n})):{type:"Value",value:e,k:n}}function Mo(e,n,t,a){try{switch(e.type){case"Value":{if(0===e.k.length)return e;const[n,...t]=e.k;return yo(n,e.value,t)}case"Eval":return lo(e.node,e.env,e.k);case"Apply":return yo(e.frame,e.value,e.k);case"Perform":return function(e,n,t,a,s,i,u){if("dvala.checkpoint"===e.name&&u){const e=n[0],r={continuation:Yr(t),timestamp:Date.now(),index:u.nextSnapshotIndex++,runId:u.runId,...void 0!==e?{meta:e}:{}};u.snapshots.push(r),void 0!==u.maxSnapshots&&u.snapshots.length>u.maxSnapshots&&u.snapshots.shift()}for(let r=0;r<t.length;r++){const o=t[r];if("TryWith"===o.type)for(const s of o.handlers)if(Io(s,e,o.env,a))return No(s,o,n,t,r,a)}const c=Ar(e.name,s);if(c.length>0)return Ao(e.name,c,n,t,i,a,u);const l=eo(e.name);if(l)return l(n,t,a);if("dvala.error"===e.name){const e="string"==typeof n[0]?n[0]:String(n[0]??"Unknown error");throw new o(e,a)}throw new r(`Unhandled effect: '${e.name}'`,a)}(e.effect,e.args,e.k,e.sourceCodeInfo,n,t,a);case"Parallel":return async function(e,n,t,o,a){const s=new AbortController,i=a?Po(a,s.signal):s.signal,u=e.map(async(e,t)=>{const r=await Co(e,n,o,i);return"suspended"===r.type&&s.abort(),{index:t,result:r}}),c=await Promise.allSettled(u),l=[],f=[],d=[];for(const e of c)if("rejected"===e.status)d.push(new r(`${e.reason}`,void 0));else{const{index:n,result:t}=e.value;switch(t.type){case"completed":l.push({index:n,value:t.value});break;case"suspended":f.push({index:n,snapshot:t.snapshot});break;case"error":d.push(t.error)}}if(d.length>0)throw d[0];if(f.length>0){const n=[{type:"ParallelResume",branchCount:e.length,completedBranches:l,suspendedBranches:f.slice(1)},...t],r=f[0];return $o(n,r.snapshot.meta,r.snapshot.effectName,r.snapshot.effectArgs)}const p=Array.from({length:e.length});for(const{index:e,value:n}of l)p[e]=n;return{type:"Value",value:p,k:t}}(e.branches,e.env,e.k,n,t);case"Race":return async function(e,n,t,o,a){const s=a??(new AbortController).signal,i=e.map(()=>new AbortController),u=()=>{for(const e of i)e.abort(s.reason)};s.addEventListener("abort",u,{once:!0});try{let a=-1,s=null;const u=e.map(async(e,t)=>{const r=i[t].signal,u=await Co(e,n,o,r);if("completed"===u.type&&a<0){a=t,s=u.value;for(let e=0;e<i.length;e++)e!==t&&i[e].abort("race: branch lost")}return u}),c=await Promise.allSettled(u);if(a>=0)return{type:"Value",value:s,k:t};const l=[],f=[];for(let e=0;e<c.length;e++){const n=c[e];if("rejected"===n.status)f.push(new r(`${n.reason}`,void 0));else{const e=n.value;switch(e.type){case"suspended":l.push(e.snapshot.meta??null);break;case"error":f.push(e.error)}}}l.length>0&&$o(t,{type:"race",branches:l});const d=f.map(e=>e.message).join("; ");throw new r(`race: all branches failed: ${d}`,void 0)}finally{s.removeEventListener("abort",u)}}(e.branches,e.env,e.k,n,t);case"ParallelResume":return function(e){const{value:n,branchCount:t,completedBranches:r,suspendedBranches:o,k:a}=e,s=new Set(r.map(e=>e.index)),i=new Set(o.map(e=>e.index));let u=-1;for(let e=0;e<t;e++)if(!s.has(e)&&!i.has(e)){u=e;break}const c=[...r,{index:u,value:n}];if(o.length>0){const e=o[0];return $o([{type:"ParallelResume",branchCount:t,completedBranches:c,suspendedBranches:o.slice(1)},...a],e.snapshot.meta,e.snapshot.effectName,e.snapshot.effectArgs)}const l=Array.from({length:t});for(const{index:e,value:n}of c)l[e]=n;return{type:"Value",value:l,k:a}}(e);case"Error":{const r=Eo(e.error,e.k,n,t,a);if(null!==r)return r;throw e.error}}}catch(o){if($r(o))throw o;if(o instanceof r){const r=Eo(o,"Value"===e.type?e.k.slice(1):e.k,n,t,a);if(null!==r)return r}throw o}}function Vo(e,n){let t=e;for(;;){if(t instanceof Promise)throw new r("Unexpected async operation in synchronous context. Use async.run() for async operations.",void 0);if("Value"===t.type&&0===t.k.length)return t.value;t=Mo(t,n)}}async function Uo(e){let n=e;for(;;){if(n instanceof Promise&&(n=await n),"Value"===n.type&&0===n.k.length)return n.value;n=Mo(n)}}function Bo(e,n){if(0===e.length)return{type:"Value",value:null,k:[]};if(1===e.length)return{type:"Eval",node:e[0],env:n,k:[]};const t={type:"Sequence",nodes:e,index:1,env:n};return{type:"Eval",node:e[0],env:n,k:[t]}}function Ro(e,n){const t=Bo(e.body,n);try{return Vo(t)}catch(t){if(t instanceof r&&t.message.includes("Unexpected async operation")){return Uo(Bo(e.body,n))}throw t}}function Do(e,n){const t={type:"Eval",node:e,env:n,k:[]};try{return Vo(t)}catch(t){if(t instanceof r&&t.message.includes("Unexpected async operation")){return Uo({type:"Eval",node:e,env:n,k:[]})}throw t}}async function To(e,n,t,o,a,s,i){const u=new AbortController,c=i?Po(i,u.signal):u.signal,l={snapshots:a?.snapshots??[],nextSnapshotIndex:a?.nextSnapshotIndex??0,runId:Ir(),maxSnapshots:a?.maxSnapshots};if(e.length>0&&"ParallelResume"===e[0].type)return async function(e,n,t,o,a,s,i,u){const{branchCount:c,completedBranches:l,suspendedBranches:f}=e,d=new Set(l.map(e=>e.index)),p=new Set(f.map(e=>e.index));let h=-1;for(let e=0;e<c;e++)if(!d.has(e)&&!p.has(e)){h=e;break}const y=new AbortController,m=Po(s,y.signal),v=Ar(t,a),g=(async()=>{let e;try{e=await Promise.resolve(Ao(t,v,o,[],m,void 0,i))}catch(e){if($r(e)){y.abort();const n={continuation:Gr(e.k,e.snapshots,e.nextSnapshotIndex,e.meta),timestamp:Date.now(),index:i.nextSnapshotIndex++,runId:i.runId,meta:e.meta,effectName:e.effectName,effectArgs:e.effectArgs};return{index:h,result:{type:"suspended",snapshot:n}}}const n=e instanceof r?e:new r(`${e}`,void 0);return{index:h,result:{type:"error",error:n}}}const n=await _o(e,a,m,i,void 0,u);return"suspended"===n.type&&y.abort(),{index:h,result:n}})(),b=f.map(async e=>{const{effectName:n,effectArgs:t}=e.snapshot;if(!n||!t)return{index:e.index,result:{type:"suspended",snapshot:e.snapshot}};const r=Hr(e.snapshot.continuation,u),o=await To(r.k,n,t,a,{snapshots:r.snapshots,nextSnapshotIndex:r.nextSnapshotIndex},u,m);return"suspended"===o.type&&y.abort(),{index:e.index,result:o}}),x=await Promise.allSettled([g,...b]),w=[...l],k=[],E=[];for(const e of x)if("rejected"===e.status)E.push(new r(`${e.reason}`,void 0));else{const{index:n,result:t}=e.value;"completed"===t.type?w.push({index:n,value:t.value}):"suspended"===t.type?k.push({index:n,snapshot:t.snapshot}):E.push(t.error)}if(E.length>0)return{type:"error",error:E[0]};if(k.length>0){const e=k[0];return{type:"suspended",snapshot:{continuation:Gr([{type:"ParallelResume",branchCount:c,completedBranches:w,suspendedBranches:k.slice(1)},...n],i.snapshots,i.nextSnapshotIndex,e.snapshot.meta),timestamp:Date.now(),index:i.nextSnapshotIndex++,runId:i.runId,meta:e.snapshot.meta,effectName:e.snapshot.effectName,effectArgs:e.snapshot.effectArgs}}}const S=Array.from({length:c});for(const{index:e,value:n}of w)S[e]=n;return _o({type:"Value",value:S,k:n},a,s,i,void 0,u)}(e[0],e.slice(1),n,t,o,c,l,s);const f=Ar(n,o);let d;try{d=await Promise.resolve(Ao(n,f,t,e,c,void 0,l))}catch(e){if($r(e)){return{type:"suspended",snapshot:{continuation:Gr(e.k,e.snapshots,e.nextSnapshotIndex,e.meta),timestamp:Date.now(),index:l.nextSnapshotIndex++,runId:l.runId,meta:e.meta,effectName:e.effectName,effectArgs:e.effectArgs}}}return e instanceof r?{type:"error",error:e}:{type:"error",error:new r(`${e}`,void 0)}}return _o(d,o,c,l,l.maxSnapshots,s)}async function _o(e,n,t,o,a,s){const u=null!=n&&"dvala.debug.step"in n,c={snapshots:o?o.snapshots:[],nextSnapshotIndex:o?o.nextSnapshotIndex:0,runId:Ir(),...void 0!==a?{maxSnapshots:a}:{}};let l=e;for(;;)try{for(;;){if(l instanceof Promise&&(l=await l),"Value"===l.type&&0===l.k.length)return{type:"completed",value:l.value};if(u&&"Eval"===l.type&&l.node[2]){const e=l.node[0];if(e===i.NormalExpression||e===i.SpecialExpression){const e={type:"DebugStep",phase:"awaitValue",sourceCodeInfo:l.node[2],env:l.env};l={...l,k:[e,...l.k]}}}l=Mo(l,n,t,c)}}catch(e){if(jr(e)){const{k:n}=Hr(e.continuation,s),t=c.snapshots.findIndex(n=>n.index>e.trimToIndex);-1!==t&&c.snapshots.splice(t),l={type:"Value",value:e.value,k:n};continue}if($r(e)){return{type:"suspended",snapshot:{continuation:Gr(e.k,e.snapshots,e.nextSnapshotIndex,e.meta),timestamp:Date.now(),index:c.nextSnapshotIndex++,runId:c.runId,meta:e.meta,effectName:e.effectName,effectArgs:e.effectArgs}}}return e instanceof r?{type:"error",error:e}:{type:"error",error:new r(`${e}`,void 0)}}}new Set(Object.keys(Qr));const Fo=new Set([...Rn,...Dn,...Object.keys(Jt)]);class Lo{originalProgram;originalPosition;prefixProgram="";suffixProgram="";searchString="";suggestions=[];suggestionIndex=null;constructor(e,n,t={}){this.originalProgram=e,this.originalPosition=n;const r=kr(this.originalProgram.slice(0,this.originalPosition),!1,void 0).tokens.at(-1);r&&"Error"!==r[0]&&(this.searchString=r[1],this.prefixProgram=this.originalProgram.slice(0,this.originalPosition-this.searchString.length),this.suffixProgram=this.originalProgram.slice(this.prefixProgram.length+this.searchString.length),this.originalProgram.slice(this.prefixProgram.length+this.searchString.length),this.suggestions=this.generateSuggestions(t))}getNextSuggestion(){return this.getAutoCompleteSuggestionResult(this.getNextSuggestionSymbol())}getPreviousSuggestion(){return this.getAutoCompleteSuggestionResult(this.getPreviousSuggestionSymbol())}getAutoCompleteSuggestionResult(e){return null===e?null:{program:this.prefixProgram+e+this.suffixProgram,position:this.prefixProgram.length+e.length}}getNextSuggestionSymbol(){return 0===this.suggestions.length?null:(null===this.suggestionIndex?this.suggestionIndex=0:(this.suggestionIndex+=1,this.suggestionIndex>=this.suggestions.length&&(this.suggestionIndex=0)),this.suggestions[this.suggestionIndex])}getPreviousSuggestionSymbol(){return 0===this.suggestions.length?null:(null===this.suggestionIndex?this.suggestionIndex=this.suggestions.length-1:(this.suggestionIndex-=1,this.suggestionIndex<0&&(this.suggestionIndex=this.suggestions.length-1)),this.suggestions[this.suggestionIndex])}getSuggestions(){return[...this.suggestions]}getSearchString(){return this.searchString}generateSuggestions(e){const n=new Set(["0_defn","0_lambda"]),t=this.generateWithPredicate(e,e=>!n.has(e)&&e.startsWith(this.searchString));t.forEach(e=>n.add(e));const r=this.generateWithPredicate(e,e=>!n.has(e)&&e.toLowerCase().startsWith(this.searchString.toLowerCase()));r.forEach(e=>n.add(e));const o=this.generateWithPredicate(e,e=>!n.has(e)&&e.includes(this.searchString));o.forEach(e=>n.add(e));const a=this.generateWithPredicate(e,e=>!n.has(e)&&e.includes(this.searchString.toLowerCase()));return a.forEach(e=>n.add(e)),[...t,...r,...o,...a]}generateWithPredicate(e,n){const t=new Set;return Fo.forEach(e=>{n(e)&&t.add(e)}),Object.keys(e.bindings??{}).filter(n).forEach(e=>t.add(e)),[...t].sort((e,n)=>e.localeCompare(n))}}const qo={collection:'{\n map: (first-coll, ...args) -> do\n let fn = last(args);\n let other-colls = slice(args, 0, count(args) - 1);\n let all-colls = [first-coll, ...other-colls];\n\n cond\n case object?(first-coll) then do\n let expected-keys = keys(first-coll) |> sort;\n doseq (obj in other-colls) -> do\n if not(object?(obj)) then\n perform(effect(dvala.error), "Expected object")\n end;\n let obj-keys = keys(obj) |> sort;\n if not(obj-keys == expected-keys) then\n perform(effect(dvala.error), ++(\n "All objects must have the same keys. Expected: ",\n join(expected-keys, ", "),\n ". Found: ",\n join(obj-keys, ", ")\n ))\n end\n end;\n reduce(keys(first-coll), (acc, k) -> do\n let a = for (coll in all-colls) -> coll(k);\n assoc(acc, k, apply(fn, a))\n end, {})\n end\n\n case string?(first-coll) then do\n doseq (s in other-colls) -> do\n if not(string?(s)) then\n perform(effect(dvala.error), "Expected string")\n end\n end;\n let len = reduce(other-colls, (m, s) -> min(m, count(s)), count(first-coll));\n let mapped = for (i in range(len)) -> do\n let a = for (coll in all-colls) -> nth(coll, i);\n apply(fn, a)\n end;\n reduce(mapped, (acc, ch) -> do\n if not(string?(ch)) then\n perform(effect(dvala.error), "Expected string")\n end;\n ++(acc, ch)\n end, "")\n end\n\n case true then do\n doseq (x in other-colls) -> do\n if not(array?(x)) then\n perform(effect(dvala.error), "Expected array")\n end\n end;\n let len = reduce(other-colls, (m, x) -> min(m, count(x)), count(first-coll));\n for (i in range(len)) -> do\n let a = for (coll in all-colls) -> nth(coll, i);\n apply(fn, a)\n end\n end\n end\n end,\n\n filter: (coll, fn) -> do\n cond\n case array?(coll) then\n reduce(coll, (acc, elem) -> if fn(elem) then [...acc, elem] else acc end, [])\n\n case string?(coll) then\n reduce(coll, (acc, ch) -> if fn(ch) then ++(acc, ch) else acc end, "")\n\n case object?(coll) then\n reduce(keys(coll), (acc, k) -> do\n if fn(coll(k)) then\n assoc(acc, k, coll(k))\n else\n acc\n end\n end, {})\n\n case true then\n perform(effect(dvala.error), "Expected collection")\n end\n end,\n\n reduce: (coll, fn, initial) -> do\n cond\n case string?(coll) then\n loop (acc = initial, i = 0) -> do\n if i >= count(coll) then\n acc\n else\n recur(fn(acc, nth(coll, i)), i + 1)\n end\n end\n\n case array?(coll) then\n loop (acc = initial, i = 0) -> do\n if i >= count(coll) then\n acc\n else\n recur(fn(acc, nth(coll, i)), i + 1)\n end\n end\n\n case object?(coll) then do\n let values = vals(coll);\n loop (acc = initial, i = 0) -> do\n if i >= count(values) then\n acc\n else\n recur(fn(acc, nth(values, i)), i + 1)\n end\n end\n end\n\n case true then\n perform(effect(dvala.error), "Expected collection")\n end\n end\n}',sequence:'{\n some: (seq, fn) -> do\n if null?(seq) then null\n else do\n loop (i = 0) -> do\n if i >= count(seq) then\n null\n else do\n let elem = nth(seq, i);\n if fn(elem) then elem\n else recur(i + 1)\n end\n end\n end\n end\n end\n end\n end,\n\n take-while: (seq, fn) -> do\n let is-str = string?(seq);\n let len = count(seq);\n let idx = loop (i = 0) -> do\n if i >= len then\n len\n else if fn(nth(seq, i)) then\n recur(i + 1)\n else\n i\n end\n end\n end;\n slice(seq, 0, idx)\n end,\n\n drop-while: (seq, fn) -> do\n let is-str = string?(seq);\n let len = count(seq);\n let idx = loop (i = 0) -> do\n if i >= len then\n len\n else if fn(nth(seq, i)) then\n recur(i + 1)\n else\n i\n end\n end\n end;\n slice(seq, idx)\n end,\n\n sort: (seq, ...args) -> do\n let cmp = if count(args) == 0 then compare else first(args) end;\n let is-str = string?(seq);\n let arr = if is-str then split(seq, "") else seq end;\n let len = count(arr);\n\n // merge two sorted arrays\n let merge-arrays = (left, right) -> do\n let left-len = count(left);\n let right-len = count(right);\n loop (result = [], li = 0, ri = 0) -> do\n if li >= left-len then\n ++(result, slice(right, ri))\n else if ri >= right-len then\n ++(result, slice(left, li))\n else do\n let l = nth(left, li);\n let r = nth(right, ri);\n if cmp(l, r) <= 0 then\n recur(push(result, l), li + 1, ri)\n else\n recur(push(result, r), li, ri + 1)\n end\n end\n end\n end\n end\n end;\n\n // recursive merge-sort\n let merge-sort = (a) -> do\n let n = count(a);\n if n <= 1 then a\n else do\n let mid = floor(n / 2);\n let left = merge-sort(slice(a, 0, mid));\n let right = merge-sort(slice(a, mid));\n merge-arrays(left, right)\n end\n end\n end;\n\n let sorted = merge-sort(arr);\n if is-str then join(sorted, "") else sorted end\n end\n}\n',array:'{\n mapcat: (arr, fn) -> do\n flatten(map(arr, fn), 1)\n end,\n\n moving-fn: (arr, window-size, fn) -> do\n if window-size > count(arr) then\n perform(effect(dvala.error), "Expected window-size <= array length")\n end;\n for (i in range(count(arr) - window-size + 1)) -> do\n fn(slice(arr, i, i + window-size))\n end\n end,\n\n running-fn: (arr, fn) -> do\n for (i in range(count(arr))) -> do\n fn(slice(arr, 0, i + 1))\n end\n end\n}\n',functional:'{\n "|>": (a, b) -> b(a),\n\n apply: (fn, ...args) -> do\n let arr = last(args);\n let leading = slice(args, 0, count(args) - 1);\n fn(...leading, ...arr)\n end\n}\n',object:'{\n merge-with: (...args) -> do\n let fn = last(args);\n let objs = slice(args, 0, count(args) - 1);\n if not(function?(fn)) then\n perform(effect(dvala.error), str("Expected function, got: ", type(fn)))\n end;\n if count(objs) == 0 then\n perform(effect(dvala.error), "Expected at least one object argument")\n end;\n reduce(rest(objs), (result, obj) -> do\n if not(object?(obj)) then\n perform(effect(dvala.error), str("Expected object, got: ", type(obj)))\n end;\n reduce(keys(obj), (res, key) -> do\n if contains?(res, key) then\n assoc(res, key, fn(get(res, key), get(obj, key)))\n else\n assoc(res, key, get(obj, key))\n end\n end, result)\n end, do\n let f = first(objs);\n if not(object?(f)) then\n perform(effect(dvala.error), str("Expected object, got: ", type(f)))\n end;\n f\n end)\n end\n}\n'};let zo=!1;class Wo{cache={};firstEntry=void 0;lastEntry=void 0;_size=0;maxSize;constructor(e){var n;if(this.maxSize=null===e?null:(n=e,Math.max(0,Math.ceil(n))),"number"==typeof this.maxSize&&this.maxSize<1)throw new Error(`1 is the minimum maxSize, got ${m(e)}`)}getContent(){return Object.entries(this.cache).reduce((e,[n,t])=>(e[n]=t.value,e),{})}get size(){return this._size}get(e){return this.cache[e]?.value}clear(){this.cache={},this.firstEntry=void 0,this.lastEntry=void 0,this._size=0}has(e){return!!this.cache[e]}set(e,n){if(this.has(e))throw new Error(`AstCache - key already present: ${e}`);const t={value:n,nextEntry:void 0,key:e};for(this.cache[e]=t,this._size+=1,this.lastEntry&&(this.lastEntry.nextEntry=t),this.lastEntry=t,this.firstEntry||(this.firstEntry=this.lastEntry);null!==this.maxSize&&this.size>this.maxSize;)this.dropFirstEntry()}dropFirstEntry(){const e=this.firstEntry;delete this.cache[e.key],this._size-=1,this.firstEntry=e.nextEntry}}function Ko(e,n){const t=n?.modules?new Map(n.modules.map(e=>[e.name,e])):void 0,r=Rr({bindings:n?.bindings},t),o={body:ar(sr(kr(e,!1,void 0),{removeWhiteSpace:!0})),hasDebugData:!1};return Kn(o,r,Bn,Do)}function Yo(e){if(e)for(const[n,t]of Object.entries(e))Go(t,`bindings["${n}"]`)}function Go(e,n){if(null!=e&&"boolean"!=typeof e&&"string"!=typeof e)if("number"!=typeof e){if("function"==typeof e)throw new TypeError(`${n} is not serializable (function)`);if("object"!=typeof e)throw new TypeError(`${n} is not serializable`);if(f in e||d in e||p in e)return;if(Array.isArray(e))return void e.forEach((e,t)=>Go(e,`${n}[${t}]`));if(Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`${n} is not serializable (not a plain object)`);for(const[t,r]of Object.entries(e))Go(r,`${n}.${t}`)}else if(!Number.isFinite(e))throw new TypeError(`${n} is not serializable (${e})`)}return e.asDvalaFunction=function(e,n){return E(e,n),e},e.asUserDefinedFunction=function(e,n){return I(e,n),e},e.assertDvalaFunction=E,e.assertUserDefinedFunction=I,e.createDvala=function(e){!function(){if(!zo){zo=!0;for(const[,e]of Object.entries(qo)){const n=Ro({body:ar(sr(kr(e,!1,void 0),{removeWhiteSpace:!0})),hasDebugData:!1},Rr());if(n instanceof Promise)throw new TypeError("Core dvala sources must be synchronous");if(!j(n))continue;const t=n;for(const[e,n]of Object.entries(t)){const t=We[e];t&&k(n)&&"UserDefined"===n.functionType&&(t.dvalaImpl=n)}}}}();const n=e?.modules?new Map(e.modules.map(e=>[e.name,e])):void 0,t=e?.bindings,o=e?.effectHandlers,a=e?.debug??!1,s=e?.cache?new Wo(e.cache):null;function i(e,n){if(!n&&s){const n=s.get(e);if(n)return n}const t={body:ar(sr(kr(e,a,n),{removeWhiteSpace:!0})),hasDebugData:a};return n||s?.set(e,t),t}function u(e){if(t||e)return{...t,...e}}function c(e){if(!o&&!e)return;const n={...e};if(o)for(const[e,t]of Object.entries(o))e in n||(n[e]=t);return n}function l(e,n){if(!e)return;if(n&&Object.keys(n).length>0)throw new TypeError("Cannot use pure mode with effect handlers")}return{run(e,t){Yo(t?.bindings);const o=u(t?.bindings),a=c(t?.effectHandlers),s=t?.pure??!1;l(s,a);const f=Rr({bindings:o},n,s);if(Tn(e)){const n=f.pure;f.pure=!0;for(const[n,t]of e.fileModules){const e=i(t),r=f.create({});f.registerValueModule(n,Ro(e,r))}f.pure=n;const t=Ro(i(e.program),f);if(t instanceof Promise)throw new TypeError("Unexpected async result in run(). Use runAsync() for async operations.");return t}const d=i(e,t?.filePath);if(a)return function(e,n,t){const o=Bo(e.body,n);try{return Vo(o,t)}catch(o){if(o instanceof r&&o.message.includes("Unexpected async operation"))return Vo(Bo(e.body,n),t);throw o}}(d,f,a);const p=Ro(d,f);if(p instanceof Promise)throw new TypeError("Unexpected async result in run(). Use runAsync() for async operations.");return p},async runAsync(e,t){Yo(t?.bindings);const o=u(t?.bindings),a=c(t?.effectHandlers),s=t?.pure??!1;l(s,a);try{const r=Rr({bindings:o},n,s);if(Tn(e)){const n=r.pure;r.pure=!0;for(const[n,t]of e.fileModules){const e=i(t),o=r.create({});r.registerValueModule(n,Ro(e,o))}r.pure=n}const u=i(Tn(e)?e.program:e),c=await async function(e,n,t,r,o){const a=(new AbortController).signal;return _o(Bo(e.body,n),t,a,void 0,r,o)}(u,r,a,t?.maxSnapshots,{values:o,modules:n});return"completed"===c.type?{...c,definedBindings:r.getModuleScopeBindings()}:c}catch(e){if(e instanceof r)return{type:"error",error:e};if(e instanceof TypeError)throw e;return{type:"error",error:new r(`${e}`,void 0)}}},getUndefinedSymbols(e){const r=n?[...n.values()]:void 0;return Ko(e,{bindings:t,modules:r})},getAutoCompleter:(e,n)=>new Lo(e,n,{bindings:t})}},e.getAutoCompleter=function(e,n,t={}){return new Lo(e,n,t)},e.getUndefinedSymbols=Ko,e.isBuiltinFunction=function(e){return w(e)&&"Builtin"===e.functionType},e.isDvalaBundle=Tn,e.isDvalaError=function(e){return e instanceof r},e.isDvalaFunction=k,e.isGrid=Ie,e.isMatrix=Ne,e.isUserDefinedFunction=S,e.isVector=ke,e.normalExpressionKeys=Rn,e.parseTokenStream=function(e){return{body:ar(sr(e,{removeWhiteSpace:!0})),hasDebugData:e.hasDebugData}},e.resume=async function(e,n,t){try{const r=t?.modules?new Map(t.modules.map(e=>[e.name,e])):void 0,o=Hr(e.continuation,{values:t?.bindings,modules:r}),a={values:t?.bindings,modules:r};return await async function(e,n,t,r,o){return _o({type:"Value",value:n,k:e},t,(new AbortController).signal,r,r?.maxSnapshots,o)}(o.k,n,t?.handlers,{snapshots:o.snapshots,nextSnapshotIndex:o.nextSnapshotIndex,maxSnapshots:t?.maxSnapshots},a)}catch(e){return e instanceof r?{type:"error",error:e}:{type:"error",error:new r(`${e}`,void 0)}}},e.retrigger=async function(e,n){if(!e.effectName||!e.effectArgs)return{type:"error",error:new r("Cannot retrigger: snapshot has no captured effect (suspended outside of an effect handler)",void 0)};try{const t=n?.modules?new Map(n.modules.map(e=>[e.name,e])):void 0,r={values:n?.bindings,modules:t},o=Hr(e.continuation,r);return await To(o.k,e.effectName,e.effectArgs,n?.handlers,{snapshots:o.snapshots,nextSnapshotIndex:o.nextSnapshotIndex,maxSnapshots:n?.maxSnapshots},r)}catch(e){return e instanceof r?{type:"error",error:e}:{type:"error",error:new r(`${e}`,void 0)}}},e.specialExpressionKeys=Dn,e.tokenizeSource=function(e,n=!1,t){return kr(e,n,t)},e.transformSymbols=function(e,n){return function(e,n){return{...e,tokens:e.tokens.map(e=>tt(e)?[e[0],n(e[1])]:e)}}(e,n)},e.untokenize=function(e){return e.tokens.reduce((e,n)=>`${e}${n[1]}`,"")},e}({});
|
|
2
2
|
//# sourceMappingURL=dvala.iife.js.map
|